| 1 | |
|---|
| 2 | |
|---|
| 3 | include VERSION |
|---|
| 4 | sqlite := sqlite-$(sqlite_version) |
|---|
| 5 | |
|---|
| 6 | |
|---|
| 7 | RESOURCE_DIR = src/main/resources |
|---|
| 8 | |
|---|
| 9 | ifeq ($(findstring CYGWIN,$(shell uname)),CYGWIN) |
|---|
| 10 | OS := Win |
|---|
| 11 | endif |
|---|
| 12 | ifeq ($(findstring MINGW,$(shell uname)),MINGW) |
|---|
| 13 | OS := Win |
|---|
| 14 | endif |
|---|
| 15 | ifeq ($(shell uname),Darwin) |
|---|
| 16 | OS := Darwin |
|---|
| 17 | endif |
|---|
| 18 | |
|---|
| 19 | ifeq ($(OS),) |
|---|
| 20 | OS := Default |
|---|
| 21 | endif |
|---|
| 22 | |
|---|
| 23 | |
|---|
| 24 | ifeq ($(arch),) |
|---|
| 25 | arch := $(shell uname -m) |
|---|
| 26 | endif |
|---|
| 27 | |
|---|
| 28 | target = $(OS)-$(arch) |
|---|
| 29 | |
|---|
| 30 | Default_LIBNAME := libsqlitejdbc.so |
|---|
| 31 | Darwin_LIBNAME := libsqlitejdbc.jnilib |
|---|
| 32 | Win_LIBNAME := sqlitejdbc.dll |
|---|
| 33 | LIBNAME := $($(OS)_LIBNAME) |
|---|
| 34 | |
|---|
| 35 | |
|---|
| 36 | .phony: all package win mac linux native deploy |
|---|
| 37 | |
|---|
| 38 | all: package |
|---|
| 39 | |
|---|
| 40 | deploy: |
|---|
| 41 | mvn deploy |
|---|
| 42 | |
|---|
| 43 | |
|---|
| 44 | OSInfoClass=org/sqlite/OSInfo |
|---|
| 45 | OSINFO_PROG=target/sqlitejdbc/$(OSInfoClass).class |
|---|
| 46 | SQLITE_DLL=sqlitejdbc/build/$(target)/$(LIBNAME) |
|---|
| 47 | SQLITE_BUILD_DIR=sqlitejdbc/build/$(sqlite)-$(target) |
|---|
| 48 | |
|---|
| 49 | LIB_FOLDER = $(shell java -cp target/sqlitejdbc $(OSInfoClass)) |
|---|
| 50 | WORK_DIR=target/dll/$(sqlite)/native |
|---|
| 51 | UPDATE_FLAG=target/dll/$(sqlite)/UPDATE |
|---|
| 52 | |
|---|
| 53 | $(OSINFO_PROG): src/main/java/$(OSInfoClass).java |
|---|
| 54 | mkdir -p target/sqlitejdbc |
|---|
| 55 | javac $< -d target/sqlitejdbc |
|---|
| 56 | |
|---|
| 57 | $(SQLITE_DLL): $(SQLITE_BUILD_DIR) |
|---|
| 58 | |
|---|
| 59 | $(SQLITE_BUILD_DIR): Makefile sqlitejdbc/Makefile |
|---|
| 60 | cd sqlitejdbc && make native |
|---|
| 61 | |
|---|
| 62 | #$(NATIVE_DLL): $(OSINFO_PROG) $(SQLITE_DLL) |
|---|
| 63 | |
|---|
| 64 | |
|---|
| 65 | |
|---|
| 66 | #native: sqlitejdbc/build/$(target)/$(LIBNAME) target/sqlitejdbc/$(OSInfoClass).class |
|---|
| 67 | |
|---|
| 68 | $(UPDATE_FLAG): $(OSINFO_PROG) $(SQLITE_DLL) |
|---|
| 69 | mkdir -p $(WORK_DIR)/$(LIB_FOLDER) |
|---|
| 70 | cp $(SQLITE_DLL) $(WORK_DIR)/$(LIB_FOLDER) |
|---|
| 71 | mkdir -p $(RESOURCE_DIR)/native/$(LIB_FOLDER) |
|---|
| 72 | cp $(NATIVE_DLL) $(RESOURCE_DIR)/native/$(LIB_FOLDER) |
|---|
| 73 | touch $(UPDATE_FLAG) |
|---|
| 74 | |
|---|
| 75 | native: $(UPDATE_FLAG) |
|---|
| 76 | |
|---|
| 77 | NATIVE_DLL=$(WORK_DIR)/$(LIB_FOLDER)/$(LIBNAME) |
|---|
| 78 | |
|---|
| 79 | package: $(UPDATE_FLAG) |
|---|
| 80 | mkdir -p $(RESOURCE_DIR)/native/$(LIB_FOLDER) |
|---|
| 81 | cp $(NATIVE_DLL) $(RESOURCE_DIR)/native/$(LIB_FOLDER) |
|---|
| 82 | rm -rf target/dependency-maven-plugin-markers |
|---|
| 83 | mvn package |
|---|
| 84 | |
|---|
| 85 | clean-native: |
|---|
| 86 | rm -rf sqlitejdbc/build/$(sqlite)-$(target) |
|---|
| 87 | |
|---|
| 88 | purejava: |
|---|
| 89 | cd sqlitejdbc && make -f Makefile.nested |
|---|
| 90 | mkdir -p $(RESOURCE_DIR)/org/sqlite |
|---|
| 91 | cp sqlitejdbc/build/org/sqlite/SQLite.class $(RESOURCE_DIR)/org/sqlite/ |
|---|
| 92 | |
|---|
| 93 | test-purejava: |
|---|
| 94 | mvn -DargLine="-Dsqlite.purejava=true" test |
|---|
| 95 | |
|---|
| 96 | clean: |
|---|
| 97 | cd sqlitejdbc && make clean |
|---|
| 98 | rm -rf sqlitejdbc/dl |
|---|
| 99 | mvn clean |
|---|
| 100 | |
|---|