Skip to content

Commit aa0c419

Browse files
committed
Include jansi native
1 parent f252f0a commit aa0c419

40 files changed

+10532
-111
lines changed

jansi/Makefile

+121
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
2+
include Makefile.common
3+
4+
RESOURCE_DIR = src/main/resources
5+
6+
.phony: all package native native-all deploy
7+
8+
all: jni-header package
9+
10+
deploy:
11+
mvn package deploy -DperformRelease=true
12+
13+
MVN:=mvn
14+
SRC:=src/main/native
15+
JANSI_OUT:=$(TARGET)/native-$(OS_NAME)-$(OS_ARCH)
16+
17+
CCFLAGS:= -I$(JANSI_OUT) $(CCFLAGS)
18+
19+
$(JANSI_ARCHIVE):
20+
# @mkdir -p $(@D)
21+
# curl -L --max-redirs 0 -f -o$@ https://www.JANSI.org/2020/$(JANSI_AMAL_PREFIX).zip || \
22+
# curl -L --max-redirs 0 -f -o$@ https://www.JANSI.org/$(JANSI_AMAL_PREFIX).zip || \
23+
# curl -L --max-redirs 0 -f -o$@ https://www.JANSI.org/$(JANSI_OLD_AMAL_PREFIX).zip
24+
25+
$(JANSI_UNPACKED): $(JANSI_ARCHIVE)
26+
# unzip -qo $< -d $(TARGET)/tmp.$(version)
27+
# (mv $(TARGET)/tmp.$(version)/$(JANSI_AMAL_PREFIX) $(TARGET) && rmdir $(TARGET)/tmp.$(version)) || mv $(TARGET)/tmp.$(version)/ $(TARGET)/$(JANSI_AMAL_PREFIX)
28+
# touch $@
29+
30+
31+
test:
32+
mvn test
33+
34+
clean: clean-native clean-java clean-tests
35+
36+
jni-header:
37+
38+
$(JANSI_OUT)/%.o: $(SRC)/%.c
39+
@mkdir -p $(@D)
40+
$(info running: $(CC) $(CCFLAGS) -c $< -o $@)
41+
$(CC) $(CCFLAGS) -c $< -o $@
42+
43+
$(JANSI_OUT)/$(LIBNAME): $(JANSI_OUT)/hawtjni.o $(JANSI_OUT)/jansi.o $(JANSI_OUT)/jansi_isatty.o $(JANSI_OUT)/jansi_structs.o $(JANSI_OUT)/jansi_ttyname.o
44+
@mkdir -p $(@D)
45+
$(CC) $(CCFLAGS) -o $@ $(JANSI_OUT)/hawtjni.o $(JANSI_OUT)/jansi.o $(JANSI_OUT)/jansi_isatty.o $(JANSI_OUT)/jansi_structs.o $(JANSI_OUT)/jansi_ttyname.o $(LINKFLAGS)
46+
$(STRIP) $@
47+
48+
NATIVE_DIR=src/main/resources/org/fusesource/jansi/internal/native/$(OS_NAME)/$(OS_ARCH)
49+
NATIVE_TARGET_DIR:=$(TARGET)/classes/org/fusesource/jansi/internal/native/$(OS_NAME)/$(OS_ARCH)
50+
NATIVE_DLL:=$(NATIVE_DIR)/$(LIBNAME)
51+
52+
# For cross-compilation, install docker. See also https://github.com/dockcross/dockcross
53+
# Disabled linux-armv6 build because of this issue; https://github.com/dockcross/dockcross/issues/190
54+
native-all: linux-x86 linux-x86_64 linux-arm linux-armv7 \
55+
linux-arm64 linux-ppc64 win-x86 win-x86_64 mac-x86 mac-x86_64 freebsd-x86 freebsd-x86_64
56+
57+
native: $(NATIVE_DLL)
58+
59+
$(NATIVE_DLL): $(JANSI_OUT)/$(LIBNAME)
60+
@mkdir -p $(@D)
61+
cp $< $@
62+
@mkdir -p $(NATIVE_TARGET_DIR)
63+
cp $< $(NATIVE_TARGET_DIR)/$(LIBNAME)
64+
65+
DOCKER_RUN_OPTS=--rm
66+
67+
linux-x86: $(JANSI_UNPACKED) jni-header
68+
./docker/dockcross-linux-x86 bash -c 'make clean-native native OS_NAME=Linux OS_ARCH=x86'
69+
70+
linux-x86_64: $(JANSI_UNPACKED) jni-header
71+
docker run -it $(DOCKER_RUN_OPTS) -v $$PWD:/workdir -e CROSS_TRIPLE=x86_64-linux-gnu multiarch/crossbuild make clean-native native OS_NAME=Linux OS_ARCH=x86_64
72+
73+
linux-arm: $(JANSI_UNPACKED) jni-header
74+
docker run -it $(DOCKER_RUN_OPTS) -v $$PWD:/workdir -e CROSS_TRIPLE=arm-linux-gnueabi multiarch/crossbuild make clean-native native OS_NAME=Linux OS_ARCH=arm
75+
76+
linux-armv7: $(JANSI_UNPACKED) jni-header
77+
docker run -it $(DOCKER_RUN_OPTS) -v $$PWD:/workdir -e CROSS_TRIPLE=arm-linux-gnueabihf multiarch/crossbuild make clean-native native OS_NAME=Linux OS_ARCH=armv7
78+
79+
linux-arm64: $(JANSI_UNPACKED) jni-header
80+
docker run -it $(DOCKER_RUN_OPTS) -v $$PWD:/workdir -e CROSS_TRIPLE=aarch64-linux-gnu multiarch/crossbuild make clean-native native OS_NAME=Linux OS_ARCH=arm64
81+
82+
linux-ppc64: $(JANSI_UNPACKED) jni-header
83+
docker run -it $(DOCKER_RUN_OPTS) -v $$PWD:/workdir -e CROSS_TRIPLE=powerpc64le-linux-gnu multiarch/crossbuild make clean-native native OS_NAME=Linux OS_ARCH=ppc64
84+
85+
win-x86: $(JANSI_UNPACKED) jni-header
86+
./docker/dockcross-windows-static-x86 bash -c 'make clean-native native CROSS_PREFIX=i686-w64-mingw32.static- OS_NAME=Windows OS_ARCH=x86'
87+
88+
win-x86_64: $(JANSI_UNPACKED) jni-header
89+
./docker/dockcross-windows-static-x64 bash -c 'make clean-native native CROSS_PREFIX=x86_64-w64-mingw32.static- OS_NAME=Windows OS_ARCH=x86_64'
90+
91+
mac-x86: $(JANSI_UNPACKED) jni-header
92+
docker run -it $(DOCKER_RUN_OPTS) -v $$PWD:/workdir -e CROSS_TRIPLE=i386-apple-darwin multiarch/crossbuild make clean-native native OS_NAME=Mac OS_ARCH=x86
93+
94+
mac-x86_64: $(JANSI_UNPACKED) jni-header
95+
docker run -it $(DOCKER_RUN_OPTS) -v $$PWD:/workdir -e CROSS_TRIPLE=x86_64-apple-darwin multiarch/crossbuild make clean-native native OS_NAME=Mac OS_ARCH=x86_64
96+
97+
freebsd-x86: $(JANSI_UNPACKED) jni-header
98+
docker run -it $(DOCKER_RUN_OPTS) -v $$PWD:/build empterdose/freebsd-cross-build:9.3 make -C /build clean-native native CROSS_PREFIX=i386-freebsd9- OS_NAME=FreeBSD OS_ARCH=x86
99+
100+
freebsd-x86_64: $(JANSI_UNPACKED) jni-header
101+
docker run -it $(DOCKER_RUN_OPTS) -v $$PWD:/build empterdose/freebsd-cross-build:9.3 make -C /build clean-native native CROSS_PREFIX=x86_64-freebsd9- OS_NAME=FreeBSD OS_ARCH=x86_64
102+
103+
#sparcv9:
104+
# $(MAKE) native OS_NAME=SunOS OS_ARCH=sparcv9
105+
106+
107+
package: native-all
108+
rm -rf target/dependency-maven-plugin-markers
109+
$(MVN) package
110+
111+
clean-native:
112+
rm -rf $(JANSI_OUT)
113+
114+
clean-java:
115+
rm -rf $(TARGET)/*classes
116+
rm -rf $(TARGET)/common-lib/*
117+
rm -rf $(TARGET)/JANSI-jdbc-*jar
118+
119+
clean-tests:
120+
rm -rf $(TARGET)/{surefire*,testdb.jar*}
121+

jansi/Makefile.common

+199
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
ifndef JAVA_HOME
2+
$(warning Set JAVA_HOME environment variable)
3+
endif
4+
5+
JAVA := "$$JAVA_HOME/bin/java"
6+
JAVAC := "$$JAVA_HOME/bin/javac"
7+
JAVAH := "$$JAVA_HOME/bin/javah"
8+
9+
TARGET := target
10+
11+
# building OSInfo.java
12+
#$(info compiling OSInfo.java)
13+
#$(shell mkdir -p target/lib)
14+
#$(shell $(JAVAC) lib/OSInfo.java -d target/lib)
15+
16+
#ifndef OS_NAME
17+
#OS_NAME := $(shell $(JAVA) -cp target/lib org.fusesource.jansi.OSInfo --os)
18+
#endif
19+
#ifndef OS_ARCH
20+
#OS_ARCH := $(shell $(JAVA) -cp target/lib org.fusesource.jansi.OSInfo --arch)
21+
#endif
22+
23+
# Windows uses different path separators
24+
ifeq ($(OS_NAME),Windows)
25+
sep := ;
26+
else
27+
sep := :
28+
endif
29+
30+
jansi := jansi-native-$(version)
31+
32+
ifdef JAVA_HOME
33+
jni_h := $(shell find -L "$(JAVA_HOME)" -name jni.h)
34+
ifneq ($(jni_h),)
35+
jni_include := $(shell dirname "$(jni_h)")
36+
endif
37+
38+
jni_md := $(shell find -L "$(JAVA_HOME)" -name jni_md.h)
39+
ifneq ($(jni_md),)
40+
jni_md_include := $(shell dirname "$(jni_md)")
41+
endif
42+
endif
43+
44+
# os=Default is meant to be generic unix/linux
45+
46+
known_targets := Linux-x86 Linux-x86_64 Linux-arm Linux-armv6 Linux-armv7 Linux-android-arm Linux-ppc64 Mac-x86 Mac-x86_64 DragonFly-x86_64 FreeBSD-x86_64 OpenBSD-x86_64 Windows-x86 Windows-x86_64 SunOS-sparcv9 HPUX-ia64_32
47+
target := $(OS_NAME)-$(OS_ARCH)
48+
49+
ifeq (,$(findstring $(strip $(target)),$(known_targets)))
50+
target := Default
51+
endif
52+
53+
# cross-compilation toolchain prefix (e.g. "arm-linux-gnueabi-")
54+
CROSS_PREFIX :=
55+
56+
Default_CC := $(CROSS_PREFIX)gcc
57+
Default_STRIP := $(CROSS_PREFIX)strip
58+
Default_CCFLAGS := -I$(JAVA_HOME)/include -Isrc/main/lib/inc_linux -Os -fPIC -fvisibility=hidden
59+
Default_LINKFLAGS := -shared
60+
Default_LIBNAME := libjansi.so
61+
Default_JANSI_FLAGS :=
62+
63+
Linux-x86_CC := $(CROSS_PREFIX)gcc
64+
Linux-x86_STRIP := $(CROSS_PREFIX)strip
65+
Linux-x86_CCFLAGS := -I$(JAVA_HOME)/include -Isrc/main/lib/inc_linux -Os -fPIC -m32 -fvisibility=hidden
66+
Linux-x86_LINKFLAGS := -shared -static-libgcc
67+
Linux-x86_LIBNAME := libjansi.so
68+
Linux-x86_JANSI_FLAGS :=
69+
70+
Linux-x86_64_CC := $(CROSS_PREFIX)gcc
71+
Linux-x86_64_STRIP := $(CROSS_PREFIX)strip
72+
Linux-x86_64_CCFLAGS := -Isrc/main/lib/inc_linux -I$(JAVA_HOME)/include -Os -fPIC -m64 -fvisibility=hidden
73+
Linux-x86_64_LINKFLAGS := -shared -static-libgcc
74+
Linux-x86_64_LIBNAME := libjansi.so
75+
Linux-x86_64_JANSI_FLAGS :=
76+
77+
Linux-arm_CC := $(CROSS_PREFIX)gcc
78+
Linux-arm_STRIP := $(CROSS_PREFIX)strip
79+
Linux-arm_CCFLAGS := -I$(JAVA_HOME)/include -Isrc/main/lib/inc_linux -Os -fPIC -mfloat-abi=softfp -mfpu=vfp -fvisibility=hidden
80+
Linux-arm_LINKFLAGS := -shared -static-libgcc
81+
Linux-arm_LIBNAME := libjansi.so
82+
Linux-arm_JANSI_FLAGS :=
83+
84+
Linux-armv6_CC := $(CROSS_PREFIX)gcc
85+
Linux-armv6_STRIP := $(CROSS_PREFIX)strip
86+
Linux-armv6_CCFLAGS := -I$(JAVA_HOME)/include -Isrc/main/lib/inc_linux -Os -mfloat-abi=hard -mfpu=vfp -fPIC -fvisibility=hidden
87+
Linux-armv6_LINKFLAGS := -shared -static-libgcc
88+
Linux-armv6_LIBNAME := libjansi.so
89+
Linux-armv6_JANSI_FLAGS :=
90+
91+
Linux-armv7_CC := $(CROSS_PREFIX)gcc
92+
Linux-armv7_STRIP := $(CROSS_PREFIX)strip
93+
Linux-armv7_CCFLAGS := -I$(JAVA_HOME)/include -Isrc/main/lib/inc_linux -Os -mfloat-abi=hard -mfpu=vfp -fPIC -fvisibility=hidden
94+
Linux-armv7_LINKFLAGS := -shared -static-libgcc
95+
Linux-armv7_LIBNAME := libjansi.so
96+
Linux-armv7_JANSI_FLAGS :=
97+
98+
Linux-arm64_CC := $(CROSS_PREFIX)gcc
99+
Linux-arm64_STRIP := $(CROSS_PREFIX)strip
100+
Linux-arm64_CCFLAGS := -I$(JAVA_HOME)/include -Isrc/main/lib/inc_linux -Os -mfloat-abi=hard -mfpu=vfp -fPIC -fvisibility=hidden
101+
Linux-arm64_LINKFLAGS := -shared -static-libgcc
102+
Linux-arm64_LIBNAME := libjansi.so
103+
Linux-arm64_JANSI_FLAGS :=
104+
105+
Linux-ppc64_CC := $(CROSS_PREFIX)gcc
106+
Linux-ppc64_STRIP := $(CROSS_PREFIX)strip
107+
Linux-ppc64_CCFLAGS := -I$(JAVA_HOME)/include -Isrc/main/lib/inc_linux -Os -fPIC -fvisibility=hidden
108+
Linux-ppc64_LINKFLAGS := -shared -static-libgcc
109+
Linux-ppc64_LIBNAME := libjansi.so
110+
Linux-ppc64_JANSI_FLAGS :=
111+
112+
DragonFly-x86_64_CC := $(CROSS_PREFIX)cc
113+
DragonFly-x86_64_STRIP := $(CROSS_PREFIX)strip
114+
DragonFly-x86_64_CCFLAGS := -I$(JAVA_HOME)/include -Isrc/main/lib/inc_linux -O2 -fPIC -fvisibility=hidden
115+
DragonFly-x86_64_LINKFLAGS := -shared
116+
DragonFly-x86_64_LIBNAME := libjansi.so
117+
DragonFly-x86_64_JANSI_FLAGS :=
118+
119+
FreeBSD-x86_CC := $(CROSS_PREFIX)gcc
120+
FreeBSD-x86_STRIP := $(CROSS_PREFIX)strip
121+
FreeBSD-x86_CCFLAGS := -I$(JAVA_HOME)/include -Isrc/main/lib/inc_linux -Os -fPIC -fvisibility=hidden
122+
FreeBSD-x86_LINKFLAGS := -shared
123+
FreeBSD-x86_LIBNAME := libjansi.so
124+
FreeBSD-x86_JANSI_FLAGS :=
125+
126+
FreeBSD-x86_64_CC := $(CROSS_PREFIX)gcc
127+
FreeBSD-x86_64_STRIP := $(CROSS_PREFIX)strip
128+
FreeBSD-x86_64_CCFLAGS := -I$(JAVA_HOME)/include -Isrc/main/lib/inc_linux -Os -fPIC -fvisibility=hidden
129+
FreeBSD-x86_64_LINKFLAGS := -shared
130+
FreeBSD-x86_64_LIBNAME := libjansi.so
131+
FreeBSD-x86_64_JANSI_FLAGS :=
132+
133+
OpenBSD-x86_64_CC := $(CROSS_PREFIX)gcc
134+
OpenBSD-x86_64_STRIP := $(CROSS_PREFIX)strip
135+
OpenBSD-x86_64_CCFLAGS := -I$(JAVA_HOME)/include -Isrc/main/lib/inc_linux -Os -fPIC -fvisibility=hidden
136+
OpenBSD-x86_64_LINKFLAGS := -shared
137+
OpenBSD-x86_64_LIBNAME := libjansi.so
138+
OpenBSD-x86_64_JANSI_FLAGS :=
139+
140+
SunOS-sparcv9_CC := $(CROSS_PREFIX)gcc
141+
SunOS-sparcv9_STRIP := $(CROSS_PREFIX)strip
142+
SunOS-sparcv9_CCFLAGS := -I$(JAVA_HOME)/include -Isrc/main/lib/inc_linux -O2s-fPIC -m64 -fvisibility=hidden
143+
SunOS-sparcv9_LINKFLAGS := -shared -static-libgcc
144+
SunOS-sparcv9_LIBNAME := libjansi.so
145+
SunOS-sparcv9_JANSI_FLAGS :=
146+
147+
HPUX-ia64_32_CC := cc
148+
HPUX-ia64_32_STRIP := strip
149+
HPUX-ia64_32_CCFLAGS := -Isrc/main/lib/inc_linux +Osize +z -Bhidden
150+
HPUX-ia64_32_LINKFLAGS := -b
151+
HPUX-ia64_32_LIBNAME := libjansi.so
152+
HPUX-ia64_32_JANSI_FLAGS :=
153+
154+
Mac-x86_CC := gcc
155+
Mac-x86_STRIP := strip -x
156+
Mac-x86_CCFLAGS := -I$(JAVA_HOME)/include -Isrc/main/lib/inc_mac -Os -fPIC -mmacosx-version-min=10.4 -fvisibility=hidden
157+
Mac-x86_LINKFLAGS := -dynamiclib
158+
Mac-x86_LIBNAME := libjansi.jnilib
159+
Mac-x86_JANSI_FLAGS := -DJANSI_ENABLE_LOCKING_STYLE=0
160+
161+
Mac-x86_64_CC := gcc -arch $(OS_ARCH)
162+
Mac-x86_64_STRIP := strip -x
163+
MAC_SDK := /Developer/SDKs/MacOSX10.10.sdk
164+
ifeq ($(wildcard MAC_SDK),)
165+
MAC_SDK := /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk
166+
endif
167+
Mac-x86_64_CCFLAGS := -I$(MAC_SDK)/System/Library/Frameworks/JavaVM.framework/Headers -Isrc/main/lib/inc_mac -Os -fPIC -mmacosx-version-min=10.6 -fvisibility=hidden
168+
Mac-x86_64_LINKFLAGS := -dynamiclib
169+
Mac-x86_64_LIBNAME := libjansi.jnilib
170+
Mac-x86_64_JANSI_FLAGS :=
171+
172+
Windows-x86_CC := $(CROSS_PREFIX)gcc
173+
Windows-x86_STRIP := $(CROSS_PREFIX)strip
174+
Windows-x86_CCFLAGS := -D_JNI_IMPLEMENTATION_ -Isrc/main/lib/inc_win -Os
175+
Windows-x86_LINKFLAGS := -Wl,--kill-at -shared -static-libgcc
176+
Windows-x86_LIBNAME := jansi.dll
177+
Windows-x86_JANSI_FLAGS :=
178+
179+
Windows-x86_64_CC := $(CROSS_PREFIX)gcc
180+
Windows-x86_64_STRIP := $(CROSS_PREFIX)strip
181+
Windows-x86_64_CCFLAGS := -D_JNI_IMPLEMENTATION_ -Isrc/main/lib/inc_win -Os
182+
Windows-x86_64_LINKFLAGS := -Wl,--kill-at -shared -static-libgcc
183+
Windows-x86_64_LIBNAME := jansi.dll
184+
Windows-x86_64_JANSI_FLAGS :=
185+
186+
187+
CC := $($(target)_CC)
188+
STRIP := $($(target)_STRIP)
189+
CCFLAGS := $($(target)_CCFLAGS)
190+
LINKFLAGS := $($(target)_LINKFLAGS)
191+
LIBNAME := $($(target)_LIBNAME)
192+
CCFLAGS := $(CCFLAGS)
193+
ifneq ($(jni_include),)
194+
CCFLAGS := $(CCFLAGS) -I"$(jni_include)"
195+
endif
196+
ifneq ($(jni_md_include),)
197+
CCFLAGS := $(CCFLAGS) -I"$(jni_md_include)"
198+
endif
199+
$(info CCFLAGS=$(CCFLAGS))

0 commit comments

Comments
 (0)