Skip to content

Commit 2e73860

Browse files
committed
Add Makefile for building SQLite 3 native library
1 parent 0d5b784 commit 2e73860

File tree

3 files changed

+131
-0
lines changed

3 files changed

+131
-0
lines changed

.editorconfig

+4
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,7 @@ indent_size = 4
1212
[*.config]
1313
indent_style = tab
1414
indent_size = 4
15+
16+
[Makefile]
17+
indent_style = tab
18+
indent_size = 8

Plugins/Makefile

+120
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
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

Plugins/Makefile.meta

+7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)