Skip to content

Commit 18ab906

Browse files
committed
DRYing up the native build and stripping debug symbols
1 parent 75a7097 commit 18ab906

File tree

1 file changed

+37
-57
lines changed

1 file changed

+37
-57
lines changed

lmdb/compile-lmdb-macos.sh

Lines changed: 37 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,43 @@
1-
#!/bin/bash
1+
#!/opt/homebrew/bin/bash
22

33
if [ ! -d "lmdb" ]; then
44
git clone https://git.openldap.org/openldap/openldap.git lmdb
55
fi
66
cd ./lmdb/libraries/liblmdb || exit
77
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

Comments
 (0)