1
- #! /bin/bash
1
+ #! /opt/homebrew/ bin/bash
2
2
3
3
if [ ! -d " lmdb" ]; then
4
4
git clone https://git.openldap.org/openldap/openldap.git lmdb
5
5
fi
6
6
cd ./lmdb/libraries/liblmdb || exit
7
7
git checkout LMDB_0.9.33
8
- make clean
9
- # Start with the tagged version release.
10
- make CC=' xcrun --sdk iphoneos --toolchain iphoneos clang -arch armv7s' XCFLAGS=' -DNDEBUG'
11
- mv ./liblmdb.so ../../../../src/LightningDB/runtimes/ios-arm/native/liblmdb.dylib
12
- make clean
13
- make CC=' xcrun --sdk iphoneos --toolchain iphoneos clang -arch arm64' XCFLAGS=' -DNDEBUG'
14
- mv ./liblmdb.so ../../../../src/LightningDB/runtimes/ios-arm64/native/liblmdb.dylib
15
- make clean
16
- make CC=' xcrun --sdk iphonesimulator --toolchain iphoneos clang -arch arm64' XCFLAGS=' -DNDEBUG'
17
- mv ./liblmdb.so ../../../../src/LightningDB/runtimes/iossimulator-arm64/native/liblmdb.dylib
18
- make clean
19
- make CC=' xcrun --sdk iphonesimulator --toolchain iphoneos clang -arch x86_64' XCFLAGS=' -DNDEBUG'
20
- mv ./liblmdb.so ../../../../src/LightningDB/runtimes/iossimulator-x64/native/liblmdb.dylib
21
- make clean
22
- make XCFLAGS=' -DNDEBUG'
23
- mv ./liblmdb.so ../../../../src/LightningDB/runtimes/osx-arm64/native/lmdb.dylib
24
- make clean
25
- make CC=' clang -mmacosx-version-min=10.15 -arch x86_64' XCFLAGS=' -DNDEBUG'
26
- mv ./liblmdb.so ../../../../src/LightningDB/runtimes/osx/native/lmdb.dylib
27
- make clean
28
- podman run --mount type=bind,source=" $( pwd) " ,target=/lmdb --rm --platform=linux/arm/7 -w /lmdb gcc:latest make XCFLAGS=' -DNDEBUG'
29
- mv ./liblmdb.so ../../../../src/LightningDB/runtimes/linux-arm/native/liblmdb.so
30
- make clean
31
- podman run --mount type=bind,source=" $( pwd) " ,target=/lmdb --rm --platform=linux/arm64 -w /lmdb gcc:latest make XCFLAGS=' -DNDEBUG'
32
- mv ./liblmdb.so ../../../../src/LightningDB/runtimes/linux-arm64/native/liblmdb.so
33
- make clean
34
- podman run --mount type=bind,source=" $( pwd) " ,target=/lmdb --rm --platform=linux/amd64 -w /lmdb gcc:latest make XCFLAGS=' -DNDEBUG'
35
- mv ./liblmdb.so ../../../../src/LightningDB/runtimes/linux-x64/native/liblmdb.so
36
- make clean
37
- make CC=' x86_64-w64-mingw32-gcc' AR=' x86_64-w64-mingw32-gcc-ar' XCFLAGS=' -DNDEBUG'
38
- mv ./liblmdb.so ../../../../src/LightningDB/runtimes/win-x64/native/lmdb.dll
39
- make clean
40
- make CC=' i686-w64-mingw32-gcc' AR=' i686-w64-mingw32-gcc-ar' XCFLAGS=' -DNDEBUG'
41
- mv ./liblmdb.so ../../../../src/LightningDB/runtimes/win-x86/native/lmdb.dll
42
- make clean
43
- # Android NDK
44
- make CC=$NDK /toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android21-clang AR=$NDK /toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar XCFLAGS=' -UMDB_USE_ROBUST -DMDB_USE_POSIX_MUTEX -DANDROID -DNDEBUG'
45
- mv ./liblmdb.so ../../../../src/LightningDB/runtimes/android-arm64/native/liblmdb.so
46
- make clean
47
- make CC=$NDK /toolchains/llvm/prebuilt/darwin-x86_64/bin/armv7a-linux-androideabi21-clang AR=$NDK /toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar XCFLAGS=' -UMDB_USE_ROBUST -DMDB_USE_POSIX_MUTEX -DANDROID -DNDEBUG'
48
- mv ./liblmdb.so ../../../../src/LightningDB/runtimes/android-arm/native/liblmdb.so
49
- make clean
50
- make CC=$NDK /toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android21-clang AR=$NDK /toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar XCFLAGS=' -UMDB_USE_ROBUST -DMDB_USE_POSIX_MUTEX -DANDROID -DNDEBUG'
51
- mv ./liblmdb.so ../../../../src/LightningDB/runtimes/android-x86/native/liblmdb.so
52
- make clean
53
- make CC=$NDK /toolchains/llvm/prebuilt/darwin-x86_64/bin/x86_64-linux-android21-clang AR=$NDK /toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar XCFLAGS=' -UMDB_USE_ROBUST -DMDB_USE_POSIX_MUTEX -DANDROID -DNDEBUG'
54
- mv ./liblmdb.so ../../../../src/LightningDB/runtimes/android-x64/native/liblmdb.so
55
- make clean
56
- # Checkout release sha with FIXEDSIZE preprocessor directive to support auto-growing map size on Windows
57
- git checkout 48a7fed59a8aae623deff415dda27097198ca0c1
58
- make CC=' x86_64-w64-mingw32-gcc' AR=' x86_64-w64-mingw32-gcc-ar' XCFLAGS=' -UMDB_FIXEDSIZE -DNDEBUG'
59
- mv ./liblmdb.so ../../../../src/LightningDB/runtimes/win-x64/native/lmdbautoresize.dll
60
- make clean
61
- make CC=' i686-w64-mingw32-gcc' AR=' i686-w64-mingw32-gcc-ar' XCFLAGS=' -UMDB_FIXEDSIZE -DNDEBUG'
62
- mv ./liblmdb.so ../../../../src/LightningDB/runtimes/win-x86/native/lmdbautoresize.dll
63
- make clean
8
+
9
+ declare -A supported_targets=(
10
+ [ios-arm/native/liblmdb.dylib]=" make CC='xcrun --sdk iphoneos --toolchain iphoneos clang -arch armv7s' LDFLAGS='-s' XCFLAGS='-DNDEBUG'"
11
+ [ios-arm64/native/liblmdb.dylib]=" make CC='xcrun --sdk iphoneos --toolchain iphoneos clang -arch arm64' LDFLAGS='-s' XCFLAGS='-DNDEBUG'"
12
+ [iossimulator-arm64/native/liblmdb.dylib]=" make CC='xcrun --sdk iphonesimulator --toolchain iphoneos clang -arch arm64' LDFLAGS='-s' XCFLAGS='-DNDEBUG'"
13
+ [iossimulator-x64/native/liblmdb.dylib]=" make CC='xcrun --sdk iphonesimulator --toolchain iphoneos clang -arch x86_64' LDFLAGS='-s' XCFLAGS='-DNDEBUG'"
14
+ [osx-arm64/native/lmdb.dylib]=" make LDFLAGS='-s' XCFLAGS='-DNDEBUG'"
15
+ [osx/native/lmdb.dylib]=" make CC='clang -mmacosx-version-min=10.15 -arch x86_64' LDFLAGS='-s' XCFLAGS='-DNDEBUG'"
16
+ [linux-arm/native/liblmdb.so]=" docker run --mount type=bind,source=$( pwd) ,target=/lmdb --rm --platform=linux/arm/7 -w /lmdb gcc:latest make LDFLAGS='-s' XCFLAGS='-DNDEBUG'"
17
+ [linux-arm64/native/liblmdb.so]=" docker run --mount type=bind,source=$( pwd) ,target=/lmdb --rm --platform=linux/arm64 -w /lmdb gcc:latest make LDFLAGS='-s' XCFLAGS='-DNDEBUG'"
18
+ [linux-x64/native/liblmdb.so]=" docker run --mount type=bind,source=$( pwd) ,target=/lmdb --rm --platform=linux/amd64 -w /lmdb gcc:latest make LDFLAGS='-s' XCFLAGS='-DNDEBUG'"
19
+ [win-x64/native/lmdb.dll]=" make CC='x86_64-w64-mingw32-gcc' AR='x86_64-w64-mingw32-gcc-ar' LDFLAGS='-s' XCFLAGS='-DNDEBUG'"
20
+ [win-x86/native/lmdb.dll]=" make CC='i686-w64-mingw32-gcc' AR='i686-w64-mingw32-gcc-ar' LDFLAGS='-s' XCFLAGS='-DNDEBUG'"
21
+ [android-arm64/native/liblmdb.so]=" make CC=$NDK /toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android21-clang AR=$NDK /toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar LDFLAGS='-s' XCFLAGS='-UMDB_USE_ROBUST -DMDB_USE_POSIX_MUTEX -DANDROID -DNDEBUG'"
22
+ [android-arm/native/liblmdb.so]=" make CC=$NDK /toolchains/llvm/prebuilt/darwin-x86_64/bin/armv7a-linux-androideabi21-clang AR=$NDK /toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar LDFLAGS='-s' XCFLAGS='-UMDB_USE_ROBUST -DMDB_USE_POSIX_MUTEX -DANDROID -DNDEBUG'"
23
+ [android-x86/native/liblmdb.so]=" make CC=$NDK /toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android21-clang AR=$NDK /toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar LDFLAGS='-s' XCFLAGS='-UMDB_USE_ROBUST -DMDB_USE_POSIX_MUTEX -DANDROID -DNDEBUG'"
24
+ [android-x64/native/liblmdb.so]=" make CC=$NDK /toolchains/llvm/prebuilt/darwin-x86_64/bin/x86_64-linux-android21-clang AR=$NDK /toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar LDFLAGS='-s' XCFLAGS='-UMDB_USE_ROBUST -DMDB_USE_POSIX_MUTEX -DANDROID -DNDEBUG'"
25
+ )
26
+
27
+ function compile_lib() {
28
+ echo " Build starting for $2 "
29
+ make clean
30
+ if ! eval " $1 "
31
+ then
32
+ echo " Build failed for $2 "
33
+ exit 1
34
+ fi
35
+ echo " Build succeeded for $2 "
36
+ cp ./liblmdb.so ../../../../src/LightningDB/runtimes/" $2 "
37
+ sleep 10
38
+ # seems to be a stateful race condition on the docker run processes so this allows everything to succeed
39
+ }
40
+
41
+ for key in " ${! supported_targets[@]} " ; do
42
+ compile_lib " ${supported_targets[$key]} " $key
43
+ done
0 commit comments