1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
Description: patching the Makefiles for a Debian build
- Indicating the paths of jni.h and jni_md.h in JAVA_HOME subdirs.
- Linking against libsqlite3.so instead of getting sqlite3.c in the source
archive downloaded from the Internet.
- PAtching out the build of the OSInfo class as we don't need it.
Author: Pierre Gruet <pgt@debian.org>
Forwarded: not-needed
Last-Update: 2022-08-15
--- a/Makefile
+++ b/Makefile
@@ -54,9 +54,9 @@
jni-header: $(TARGET)/common-lib/NativeDB.h
-$(TARGET)/common-lib/NativeDB.h: src/main/java/org/sqlite/core/NativeDB.java $(JAVA_CLASSPATH)
+$(TARGET)/common-lib/NativeDB.h: src/main/java/org/sqlite/core/NativeDB.java
@mkdir -p $(TARGET)/common-lib
- $(JAVAC) -cp $(JAVA_CLASSPATH) -d $(TARGET)/common-lib -sourcepath $(SRC) -h $(TARGET)/common-lib src/main/java/org/sqlite/core/NativeDB.java
+ $(JAVAC) -cp /usr/share/java/slf4j-api.jar -d $(TARGET)/common-lib -sourcepath $(SRC) -h $(TARGET)/common-lib src/main/java/org/sqlite/core/NativeDB.java
mv target/common-lib/org_sqlite_core_NativeDB.h target/common-lib/NativeDB.h
test:
@@ -107,14 +107,18 @@
$(SQLITE_SOURCE)/sqlite3.h: $(SQLITE_UNPACKED)
-$(SQLITE_OUT)/$(LIBNAME): $(SQLITE_HEADER) $(SQLITE_OBJ) $(SRC)/org/sqlite/core/NativeDB.c $(TARGET)/common-lib/NativeDB.h
+#$(SQLITE_OUT)/$(LIBNAME): $(SQLITE_HEADER) $(SQLITE_OBJ) $(SRC)/org/sqlite/core/NativeDB.c $(TARGET)/common-lib/NativeDB.h
+$(SQLITE_OUT)/$(LIBNAME): /usr/include/sqlite3.h /usr/lib/$(DEB_HOST_MULTIARCH)/libsqlite3.so $(SRC)/org/sqlite/core/NativeDB.c $(TARGET)/common-lib/NativeDB.h
@mkdir -p $(@D)
- $(CC) $(CCFLAGS) -I $(TARGET)/common-lib -c -o $(SQLITE_OUT)/NativeDB.o $(SRC)/org/sqlite/core/NativeDB.c
- $(CC) $(CCFLAGS) -o $@ $(SQLITE_OUT)/NativeDB.o $(SQLITE_OBJ) $(LINKFLAGS)
+ #$(CC) $(CCFLAGS) -I $(TARGET)/common-lib -c -o $(SQLITE_OUT)/NativeDB.o $(SRC)/org/sqlite/core/NativeDB.c
+ $(CC) $(CCFLAGS) -I $(TARGET)/common-lib $(CPPFLAGS) -c -g -o $(SQLITE_OUT)/NativeDB.o $(SRC)/org/sqlite/core/NativeDB.c
+ #$(CC) $(CCFLAGS) -o $@ $(SQLITE_OUT)/NativeDB.o $(SQLITE_OBJ) $(LINKFLAGS)
+ $(CC) $(CCFLAGS) $(LDFLAGS) -o $@ $(SQLITE_OUT)/NativeDB.o $(LINKFLAGS) -lsqlite3
+# We don't need to strip the binary at this stage.
# Workaround for strip Protocol error when using VirtualBox on Mac
- cp $@ /tmp/$(@F)
- $(STRIP) /tmp/$(@F)
- cp /tmp/$(@F) $@
+ #cp $@ /tmp/$(@F)
+ #$(STRIP) /tmp/$(@F)
+ #cp /tmp/$(@F) $@
NATIVE_DIR=src/main/resources/org/sqlite/native/$(OS_NAME)/$(OS_ARCH)
NATIVE_TARGET_DIR:=$(TARGET)/classes/org/sqlite/native/$(OS_NAME)/$(OS_ARCH)
@@ -126,10 +130,11 @@
native: $(NATIVE_DLL)
$(NATIVE_DLL): $(SQLITE_OUT)/$(LIBNAME)
- @mkdir -p $(@D)
- cp $< $@
- @mkdir -p $(NATIVE_TARGET_DIR)
- cp $< $(NATIVE_TARGET_DIR)/$(LIBNAME)
+ # Do nothing more. The .so will be put into /usr/lib/jni, not into the jar.
+ #@mkdir -p $(@D)
+ #cp $< $@
+ #@mkdir -p $(NATIVE_TARGET_DIR)
+ #cp $< $(NATIVE_TARGET_DIR)/$(LIBNAME)
win32: $(SQLITE_UNPACKED) jni-header
./docker/dockcross-windows-x86 -a $(DOCKER_RUN_OPTS) bash -c 'make clean-native native CROSS_PREFIX=i686-w64-mingw32.static- OS_NAME=Windows OS_ARCH=x86'
@@ -216,9 +221,12 @@
mac-arm64-signed: mac-arm64
$(CODESIGN) src/main/resources/org/sqlite/native/Mac/aarch64/libsqlitejdbc.dylib
-package: native-all
+# No need to cross-build here.
+#package: native-all
+package: native
rm -rf target/dependency-maven-plugin-markers
- $(MVN) package
+ # We shall handle the Java build through dh_auto_build, with maven-debian-helper.
+ #$(MVN) package
clean-native:
rm -rf $(SQLITE_OUT)
--- a/Makefile.common
+++ b/Makefile.common
@@ -10,23 +10,25 @@
TARGET := target
SRC:=src/main/java
-OSINFO_CLASS := org.sqlite.util.OSInfo
-OSINFO_PROG := lib/org/sqlite/util/OSInfo.class
+#OSINFO_CLASS := org.sqlite.util.OSInfo
+#OSINFO_PROG := lib/org/sqlite/util/OSInfo.class
JAVA_CLASSPATH:=$(TARGET)/classpath/slf4j-api.jar
## building OSInfo.java
-ifeq ("$(wildcard $(OSINFO_PROG))","")
-$(info Building OSInfo tool)
-$(shell mkdir -p $(TARGET)/classpath)
-$(shell curl -L -f -o$(JAVA_CLASSPATH) https://search.maven.org/remotecontent?filepath=org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar)
-$(shell $(JAVAC) -cp $(JAVA_CLASSPATH) -sourcepath $(SRC) -d lib src/main/java/org/sqlite/util/OSInfo.java)
-endif
+#ifeq ("$(wildcard $(OSINFO_PROG))","")
+#$(info Building OSInfo tool)
+#$(shell mkdir -p $(TARGET)/classpath)
+#$(shell curl -L -f -o$(JAVA_CLASSPATH) https://search.maven.org/remotecontent?filepath=org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar)
+#$(shell $(JAVAC) -cp $(JAVA_CLASSPATH) -sourcepath $(SRC) -d lib src/main/java/org/sqlite/util/OSInfo.java)
+#endif
ifndef OS_NAME
-OS_NAME := $(shell $(JAVA) -cp lib:$(JAVA_CLASSPATH) $(OSINFO_CLASS) --os)
+#OS_NAME := $(shell $(JAVA) -cp lib:$(JAVA_CLASSPATH) $(OSINFO_CLASS) --os)
+OS_NAME := $(shell uname -s)
endif
ifndef OS_ARCH
-OS_ARCH := $(shell $(JAVA) -cp lib:$(JAVA_CLASSPATH) $(OSINFO_CLASS) --arch)
+#OS_ARCH := $(shell $(JAVA) -cp lib:$(JAVA_CLASSPATH) $(OSINFO_CLASS) --arch)
+OS_ARCH := $(shell uname -m)
endif
# Windows uses different path separators
@@ -39,12 +41,12 @@
sqlite := sqlite-$(version)
ifdef JAVA_HOME
-jni_h := $(shell find -L "$(JAVA_HOME)" -name jni.h)
+jni_h := "$(JAVA_HOME)/include/jni.h"
ifneq ($(jni_h),)
jni_include := $(shell dirname "$(jni_h)")
endif
-jni_md := $(shell find -L "$(JAVA_HOME)" -name jni_md.h)
+jni_md := "$(JAVA_HOME)/include/linux/jni_md.h"
ifneq ($(jni_md),)
jni_md_include := $(shell dirname "$(jni_md)")
endif
|