1
+ EMCC ?= emcc
2
+ ANDROID_NDK_ROOT ?=
3
+
4
+ ifeq ($(DEBUG ) ,1)
5
+ CFLAGS += -O0 -g -DDEBUG
6
+ else
7
+ CFLAGS += -O3 -DNDEBUG
8
+ endif
9
+
10
+ # SQLite recommended defines + USE_URI. Reference: https://www.sqlite.org/compile.html
11
+ CFLAGS += \
12
+ -DSQLITE_DQS=0 \
13
+ -DSQLITE_THREADSAFE=0 \
14
+ -DSQLITE_DEFAULT_MEMSTATUS=0 \
15
+ -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 \
16
+ -DSQLITE_LIKE_DOESNT_MATCH_BLOBS \
17
+ -DSQLITE_MAX_EXPR_DEPTH=0 \
18
+ -DSQLITE_OMIT_DECLTYPE \
19
+ -DSQLITE_OMIT_DEPRECATED \
20
+ -DSQLITE_OMIT_PROGRESS_CALLBACK \
21
+ -DSQLITE_OMIT_SHARED_CACHE \
22
+ -DSQLITE_USE_ALLOCA \
23
+ -DSQLITE_OMIT_AUTOINIT \
24
+ -DSQLITE_USE_URI
25
+
26
+ BUILD_DIRS = \
27
+ build/windows/x86_64 build/windows/x86 \
28
+ build/linux/x86_64 build/linux/x86 \
29
+ build/macos build/ios build/tvos build/visionos \
30
+ build/android/arm64 build/android/arm32 build/android/x86 build/android/x86_64 \
31
+ build/webgl
32
+
33
+ SQLITE_SRC = sqlite-amalgamation-3440200~/sqlite3.c
34
+
35
+ $(BUILD_DIRS ) :
36
+ mkdir -p $@
37
+
38
+ # Windows
39
+ build/windows/% /sqlite3.dll : LINKFLAGS += -shared
40
+ build/windows/% /sqlite3.dll : $(SQLITE_SRC ) | build/windows/%
41
+ $(CC ) -o $@ $< $(CFLAGS ) $(LINKFLAGS )
42
+
43
+ # Linux
44
+ build/linux/% /libsqlite3.so : CFLAGS += -fPIC
45
+ build/linux/% /libsqlite3.so : LINKFLAGS += -shared
46
+ build/linux/% /libsqlite3.so : $(SQLITE_SRC ) | build/linux/%
47
+ $(CC ) -o $@ $< $(CFLAGS ) $(LINKFLAGS )
48
+
49
+ # macOS
50
+ build/macos/libsqlite3.dylib : CFLAGS += -arch arm64 -arch x86_64 -isysroot $(shell xcrun --show-sdk-path --sdk macosx)
51
+ build/macos/libsqlite3.dylib : LINKFLAGS += -shared
52
+ build/macos/libsqlite3.dylib : $(SQLITE_SRC ) | build/macos
53
+ $(CC ) -o $@ $< $(CFLAGS ) $(LINKFLAGS )
54
+
55
+ # iOS
56
+ build/ios/libsqlite3.dylib : CFLAGS += -arch arm64 -isysroot $(shell xcrun --show-sdk-path --sdk iphoneos)
57
+ build/ios/libsqlite3.dylib : LINKFLAGS += -shared
58
+ build/ios/libsqlite3.dylib : $(SQLITE_SRC ) | build/ios
59
+ $(CC ) -o $@ $< $(CFLAGS ) $(LINKFLAGS )
60
+
61
+ # tvOS
62
+ build/tvos/libsqlite3.dylib : CFLAGS += -arch arm64 -isysroot $(shell xcrun --show-sdk-path --sdk appletvos)
63
+ build/tvos/libsqlite3.dylib : LINKFLAGS += -shared
64
+ build/tvos/libsqlite3.dylib : $(SQLITE_SRC ) | build/tvos
65
+ $(CC ) -o $@ $< $(CFLAGS ) $(LINKFLAGS )
66
+
67
+ # visionOS
68
+ build/visionos/libsqlite3.dylib : CFLAGS += -arch arm64 -isysroot $(shell xcrun --show-sdk-path --sdk xros)
69
+ build/visionos/libsqlite3.dylib : LINKFLAGS += -shared
70
+ build/visionos/libsqlite3.dylib : $(SQLITE_SRC ) | build/visionos
71
+ $(CC ) -o $@ $< $(CFLAGS ) $(LINKFLAGS )
72
+
73
+
74
+ # Android
75
+ build/android/% /libsqlite3.so : CFLAGS += -fPIC
76
+ build/android/% /libsqlite3.so : LINKFLAGS += -shared
77
+ build/android/% /libsqlite3.so : $(SQLITE_SRC ) | build/android/%
78
+ $(CC ) -o $@ $< $(CFLAGS ) $(LINKFLAGS )
79
+
80
+ build/android/arm64/libsqlite3.so : CC = $(wildcard $(ANDROID_NDK_ROOT ) /toolchains/llvm/prebuilt/* /bin/aarch64-linux-android21-clang)
81
+ build/android/arm32/libsqlite3.so : CC = $(wildcard $(ANDROID_NDK_ROOT ) /toolchains/llvm/prebuilt/* /bin/armv7a-linux-androideabi19-clang)
82
+ build/android/x86_64/libsqlite3.so : CC = $(wildcard $(ANDROID_NDK_ROOT ) /toolchains/llvm/prebuilt/* /bin/x86_64-linux-android21-clang)
83
+ build/android/x86/libsqlite3.so : CC = $(wildcard $(ANDROID_NDK_ROOT ) /toolchains/llvm/prebuilt/* /bin/i686-linux-android19-clang)
84
+
85
+ # WebGL
86
+ build/webgl/libsqlite3.bc : $(SQLITE_SRC ) src~/sqlite3.c | build/webgl
87
+ $(EMCC ) -o $@ $< $(CFLAGS ) -c -emit-llvm
88
+
89
+ # Targets
90
+ windows-x86_64 : build/windows/x86_64/sqlite3.dll
91
+ windows-x86 : build/windows/x86/sqlite3.dll
92
+
93
+ windows-mingw-x86_64 : CC = x86_64-w64-mingw32-gcc
94
+ windows-mingw-x86_64 : LINKFLAGS += -static-libgcc
95
+ windows-mingw-x86_64 : build/windows/x86_64/sqlite3.dll
96
+
97
+ windows-mingw-x86 : CC = i686-w64-mingw32-gcc
98
+ windows-mingw-x86 : LINKFLAGS += -static-libgcc
99
+ windows-mingw-x86 : build/windows/x86/sqlite3.dll
100
+
101
+ linux-x86_64 : build/linux/x86_64/libsqlite3
102
+
103
+ macos-universal : build/macos/libsqlite3.dylib
104
+ ios-universal : build/ios/libsqlite3.dylib
105
+ tvos-universal : build/tvos/libsqlite3.dylib
106
+ visionos-universal : build/visionos/libsqlite3.dylib
107
+
108
+ android-arm64 : build/android/arm64/libsqlite3.so
109
+ android-arm32 : build/android/arm32/libsqlite3.so
110
+ android-x86_64 : build/android/x86_64/libsqlite3.so
111
+ android-x86 : build/android/x86/libsqlite3.so
112
+
113
+ webgl : build/webgl/libsqlite3.bc
114
+
115
+ all-android : android-arm64 android-arm32 android-x86_64 android-x86
116
+ all-apple : macos-universal ios-universal tvos-universal visionos-universal
117
+ all-linux : linux-x86_64
118
+ all-webgl : webgl
119
+ all-windows : windows-x86_64 windows-x86
120
+ all-windows-mingw : windows-mingw-x86_64 windows-mingw-x86
0 commit comments