-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
122 lines (84 loc) · 3.17 KB
/
Makefile
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
# use JDK1.5 to build native libraries
include Makefile.common
RESOURCE_DIR = src/main/resources
.phony: all package win mac linux native deploy
all: package
deploy:
mvn deploy
MVN:=mvn
SRC:=src/main/java
SQLITE_OUT:=$(TARGET)/$(sqlite)-$(OS_NAME)-$(OS_ARCH)
SQLITE_ARCHIVE:=$(TARGET)/$(sqlite)-amal.zip
SQLITE_UNPACKED:=$(TARGET)/sqlite-unpack.log
SQLITE_AMAL_DIR=$(TARGET)/$(SQLITE_AMAL_PREFIX)
CFLAGS:= -I$(SQLITE_OUT) -I$(SQLITE_AMAL_DIR) $(CFLAGS)
$(SQLITE_ARCHIVE):
@mkdir -p $(@D)
curl -o$@ http://www.sqlite.org/$(SQLITE_AMAL_PREFIX).zip
$(SQLITE_UNPACKED): $(SQLITE_ARCHIVE)
unzip -qo $< -d $(TARGET)
touch $@
$(SQLITE_OUT)/org/sqlite/%.class: src/main/java/org/sqlite/%.java
@mkdir -p $(@D)
$(JAVAC) -source 1.5 -target 1.5 -sourcepath $(SRC) -d $(SQLITE_OUT) $<
jni-header: $(SRC)/org/sqlite/NativeDB.h
$(SQLITE_OUT)/NativeDB.h: $(SQLITE_OUT)/org/sqlite/NativeDB.class
$(JAVAH) -classpath $(SQLITE_OUT) -jni -o $@ org.sqlite.NativeDB
test:
mvn test
clean:
rm -rf $(WORK)
$(SQLITE_OUT)/sqlite3.o : $(SQLITE_UNPACKED)
@mkdir -p $(@D)
perl -p -e "s/sqlite3_api;/sqlite3_api = 0;/g" \
$(SQLITE_AMAL_DIR)/sqlite3ext.h > $(SQLITE_OUT)/sqlite3ext.h
# insert a code for loading extension functions
perl -p -e "s/^opendb_out:/ if(!db->mallocFailed && rc==SQLITE_OK){ rc = RegisterExtensionFunctions(db); }\nopendb_out:/;" \
$(SQLITE_AMAL_DIR)/sqlite3.c > $(SQLITE_OUT)/sqlite3.c
cat src/main/ext/*.c >> $(SQLITE_OUT)/sqlite3.c
$(CC) -o $@ -c $(CFLAGS) \
-DSQLITE_ENABLE_LOAD_EXTENSION=1 \
-DSQLITE_ENABLE_UPDATE_DELETE_LIMIT \
-DSQLITE_ENABLE_COLUMN_METADATA \
-DSQLITE_CORE \
-DSQLITE_ENABLE_FTS3 \
-DSQLITE_ENABLE_FTS3_PARENTHESIS \
-DSQLITE_ENABLE_RTREE \
-DSQLITE_ENABLE_STAT2 \
$(SQLITE_FLAGS) \
$(SQLITE_OUT)/sqlite3.c
$(SQLITE_OUT)/$(LIBNAME): $(SQLITE_OUT)/sqlite3.o $(SRC)/org/sqlite/NativeDB.c $(SQLITE_OUT)/NativeDB.h
@mkdir -p $(@D)
$(CC) $(CFLAGS) -c -o $(SQLITE_OUT)/NativeDB.o $(SRC)/org/sqlite/NativeDB.c
$(CC) $(CFLAGS) -o $@ $(SQLITE_OUT)/*.o $(LINKFLAGS)
$(STRIP) $@
NATIVE_DIR=src/main/resources/org/sqlite/native/$(OS_NAME)/$(OS_ARCH)
NATIVE_TARGET_DIR:=$(TARGET)/classes/org/sqlite/native/$(OS_NAME)/$(OS_ARCH)
NATIVE_DLL:=$(NATIVE_DIR)/$(LIBNAME)
native: $(SQLITE_UNPACKED) $(NATIVE_DLL)
$(NATIVE_DLL): $(SQLITE_OUT)/$(LIBNAME)
@mkdir -p $(@D)
cp $< $@
@mkdir -p $(NATIVE_TARGET_DIR)
cp $< $(NATIVE_TARGET_DIR)/$(LIBNAME)
win32:
$(MAKE) native CC=mingw32-gcc OS_NAME=Windows OS_ARCH=x86
linux32:
$(MAKE) native OS_NAME=Linux OS_ARCH=i386
sparcv9:
$(MAKE) native OS_NAME=SunOS OS_ARCH=sparcv9
mac32:
$(MAKE) native OS_NAME=Mac OS_ARCH=i386
package: native
rm -rf target/dependency-maven-plugin-markers
$(MVN) package
clean-native:
rm -rf $(SQLITE_OUT)
# targets for building pure-java library
purejava: $(SQLITE_BUILD_DIR)/org/sqlite/SQLite.class
mkdir -p $(RESOURCE_DIR)/org/sqlite
cp $< $(RESOURCE_DIR)/org/sqlite/SQLite.class
$(TARGET)/classes/org/sqlite/SQLite.class:
make -f Makefile.purejava
test-purejava:
mvn -DargLine="-Dsqlite.purejava=true" test