Skip to content

Commit b5dab26

Browse files
authored
Migrate to dylibs (#2202)
When I first submitted the patch to compile libsql for mobiles I didn't know what I was doing. A static library is the easiest way to make things work but takes too much disk space as all the necessary code is packaged. Migrating to dylibs is better for mobiles as a lot of the binary size is reduced. I've managed to get iOS working and the binary went from 35mbs to 9mbs. However, on Android I'm getting a compilation error (even on the main branch without my changes), maybe @levydsa can give some pointers on what's wrong with the build pipeline right now? Once this PR is merged I can update op-sqlite to use this new smaller version (OP-Engineering/op-sqlite#365) When I try to compile for Android (via `make android`) I get the following error ``` make android cargo ndk --target aarch64-linux-android --platform 31 build --release --color=always Building arm64-v8a (aarch64-linux-android) Compiling libsql-ffi v0.9.29 (/Users/osp/Developer/libsql/libsql-ffi) Compiling sql-experimental v0.0.0 (/Users/osp/Developer/libsql/bindings/c) error: failed to run custom build command for `libsql-ffi v0.9.29 (/Users/osp/Developer/libsql/libsql-ffi)` Caused by: process didn't exit successfully: `/Users/osp/Developer/libsql/target/release/build/libsql-ffi-da53f4f133127afb/build-script-build` (exit status: 101) --- stdout cargo:rerun-if-changed=bundled/src/sqlite3.c cargo:rerun-if-changed=bundled/SQLite3MultipleCiphers cargo:lib_dir=/Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out CMAKE_TOOLCHAIN_FILE_aarch64-linux-android = None CMAKE_TOOLCHAIN_FILE_aarch64_linux_android = None TARGET_CMAKE_TOOLCHAIN_FILE = None CMAKE_TOOLCHAIN_FILE = None CMAKE_GENERATOR_aarch64-linux-android = None CMAKE_GENERATOR_aarch64_linux_android = None TARGET_CMAKE_GENERATOR = None CMAKE_GENERATOR = None CMAKE_PREFIX_PATH_aarch64-linux-android = None CMAKE_PREFIX_PATH_aarch64_linux_android = None TARGET_CMAKE_PREFIX_PATH = None CMAKE_PREFIX_PATH = None CMAKE_aarch64-linux-android = None CMAKE_aarch64_linux_android = None TARGET_CMAKE = None CMAKE = None running: cd "/Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/build" && CMAKE_PREFIX_PATH="" "cmake" "/Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc" "-DSQLITE3MC_STATIC=ON" "-DCODEC_TYPE=AES256" "-DSQLITE3MC_BUILD_SHELL=OFF" "-DSQLITE_SHELL_IS_UTF8=OFF" "-DSQLITE_USER_AUTHENTICATION=OFF" "-DSQLITE_SECURE_DELETE=OFF" "-DSQLITE_ENABLE_COLUMN_METADATA=ON" "-DSQLITE_USE_URI=ON" "-DCMAKE_POSITION_INDEPENDENT_CODE=ON" "-DCMAKE_ANDROID_NDK=/Users/osp/Library/Android/sdk/ndk/26.1.10909125" "-DLIBSQL_ENCRYPTION=1" "-DANDROID_PLATFORM=31" "-DCMAKE_SYSTEM_NAME=Android" "-DCMAKE_SYSTEM_PROCESSOR=aarch64" "-DCMAKE_INSTALL_PREFIX=/Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out" "-DCMAKE_C_FLAGS= -DANDROID -ffunction-sections -fdata-sections -fPIC --target=aarch64-linux-android --target=aarch64-linux-android31" "-DCMAKE_C_COMPILER=/Users/osp/Library/Android/sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang" "-DCMAKE_CXX_FLAGS= -DANDROID -ffunction-sections -fdata-sections -fPIC --target=aarch64-linux-android --target=aarch64-linux-android31" "-DCMAKE_CXX_COMPILER=/Users/osp/Library/Android/sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++" "-DCMAKE_ASM_FLAGS= -DANDROID -ffunction-sections -fdata-sections -fPIC --target=aarch64-linux-android --target=aarch64-linux-android31" "-DCMAKE_ASM_COMPILER=/Users/osp/Library/Android/sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang" "-DCMAKE_BUILD_TYPE=Release" -- Configuring done (0.0s) -- Generating done (0.0s) -- Build files have been written to: /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/build running: cd "/Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/build" && "cmake" "--build" "/Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/build" "--target" "sqlite3mc_static" "--config" "Release" "--parallel" "11" [ 50%] Building C object CMakeFiles/sqlite3mc_static.dir/src/sqlite3mc.c.o --- stderr [libsql-ffi/build.rs:462:9] format!("{BUNDLED_DIR}/SQLite3MultipleCiphers") = "bundled/SQLite3MultipleCiphers" Will build sqlite3mc_static as STATIC In file included from /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/sqlite3mc.c:132: /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/sqlite3.c:212044:1: warning: non-void function does not return a value in all control paths [-Wreturn-type] } ^ In file included from /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/sqlite3mc.c:217: /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/cipher_wxaes256.c:168:23: warning: passing 'char *' to parameter of type 'unsigned char *' converts between pointers to integer types where one is of the unique plain 'char' type and the other is not [-Wpointer-sign] sha256(userPad, 32, digest); ^~~~~~ /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/sha2.c:337:76: note: passing argument to parameter 'digest' here void sha256(const unsigned char *message, unsigned int len, unsigned char *digest) ^ In file included from /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/sqlite3mc.c:217: /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/cipher_wxaes256.c:171:12: warning: passing 'char *' to parameter of type 'const unsigned char *' converts between pointers to integer types where one is of the unique plain 'char' type and the other is not [-Wpointer-sign] sha256(digest, KEYLENGTH_AES256, digest); ^~~~~~ /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/sha2.c:337:34: note: passing argument to parameter 'message' here void sha256(const unsigned char *message, unsigned int len, unsigned char *digest) ^ In file included from /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/sqlite3mc.c:217: /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/cipher_wxaes256.c:171:38: warning: passing 'char *' to parameter of type 'unsigned char *' converts between pointers to integer types where one is of the unique plain 'char' type and the other is not [-Wpointer-sign] sha256(digest, KEYLENGTH_AES256, digest); ^~~~~~ /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/sha2.c:337:76: note: passing argument to parameter 'digest' here void sha256(const unsigned char *message, unsigned int len, unsigned char *digest) ^ In file included from /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/sqlite3mc.c:212: In file included from /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/rijndael.c:85: /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/aes_hardware.c:513:14: error: always_inline function 'vaeseq_u8' requires target feature 'aes', but would be inlined into function 'aesGenKeyEncryptInternal' that is compiled without support for 'aes' v8 = vaeseq_u8(v8, vdupq_n_u8(0)); ^ /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/aes_hardware.c:576:26: error: always_inline function 'vaesimcq_u8' requires target feature 'aes', but would be inlined into function 'aesGenKeyDecrypt' that is compiled without support for 'aes' keySchedule[j] = vaesimcq_u8(tempKeySchedule[j]); ^ /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/aes_hardware.c:623:29: error: always_inline function 'vaeseq_u8' requires target feature 'aes', but would be inlined into function 'aesEncryptCBC' that is compiled without support for 'aes' feedback = vaesmcq_u8(vaeseq_u8(feedback, key[j])); ^ /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/aes_hardware.c:623:18: error: always_inline function 'vaesmcq_u8' requires target feature 'aes', but would be inlined into function 'aesEncryptCBC' that is compiled without support for 'aes' feedback = vaesmcq_u8(vaeseq_u8(feedback, key[j])); ^ /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/aes_hardware.c:625:16: error: always_inline function 'vaeseq_u8' requires target feature 'aes', but would be inlined into function 'aesEncryptCBC' that is compiled without support for 'aes' feedback = vaeseq_u8(feedback, key[numberOfRounds-1]); ^ /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/aes_hardware.c:647:29: error: always_inline function 'vaeseq_u8' requires target feature 'aes', but would be inlined into function 'aesEncryptCBC' that is compiled without support for 'aes' feedback = vaesmcq_u8(vaeseq_u8(feedback, key[j])); ^ /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/aes_hardware.c:647:18: error: always_inline function 'vaesmcq_u8' requires target feature 'aes', but would be inlined into function 'aesEncryptCBC' that is compiled without support for 'aes' feedback = vaesmcq_u8(vaeseq_u8(feedback, key[j])); ^ /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/aes_hardware.c:649:16: error: always_inline function 'vaeseq_u8' requires target feature 'aes', but would be inlined into function 'aesEncryptCBC' that is compiled without support for 'aes' feedback = vaeseq_u8(feedback, key[numberOfRounds-1]); ^ /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/aes_hardware.c:699:26: error: always_inline function 'vaesdq_u8' requires target feature 'aes', but would be inlined into function 'aesDecryptCBC' that is compiled without support for 'aes' data = vaesimcq_u8(vaesdq_u8(data, key[numberOfRounds-j])); ^ /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/aes_hardware.c:699:14: error: always_inline function 'vaesimcq_u8' requires target feature 'aes', but would be inlined into function 'aesDecryptCBC' that is compiled without support for 'aes' data = vaesimcq_u8(vaesdq_u8(data, key[numberOfRounds-j])); ^ /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/aes_hardware.c:701:12: error: always_inline function 'vaesdq_u8' requires target feature 'aes', but would be inlined into function 'aesDecryptCBC' that is compiled without support for 'aes' data = vaesdq_u8(data, key[1]); ^ /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/aes_hardware.c:716:26: error: always_inline function 'vaesdq_u8' requires target feature 'aes', but would be inlined into function 'aesDecryptCBC' that is compiled without support for 'aes' data = vaesimcq_u8(vaesdq_u8(data, key[numberOfRounds-j])); ^ /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/aes_hardware.c:716:14: error: always_inline function 'vaesimcq_u8' requires target feature 'aes', but would be inlined into function 'aesDecryptCBC' that is compiled without support for 'aes' data = vaesimcq_u8(vaesdq_u8(data, key[numberOfRounds-j])); ^ /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/aes_hardware.c:718:12: error: always_inline function 'vaesdq_u8' requires target feature 'aes', but would be inlined into function 'aesDecryptCBC' that is compiled without support for 'aes' data = vaesdq_u8(data, key[1]); ^ /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/aes_hardware.c:744:26: error: always_inline function 'vaesdq_u8' requires target feature 'aes', but would be inlined into function 'aesDecryptCBC' that is compiled without support for 'aes' data = vaesimcq_u8(vaesdq_u8(data, key[numberOfRounds-j])); ^ /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/aes_hardware.c:744:14: error: always_inline function 'vaesimcq_u8' requires target feature 'aes', but would be inlined into function 'aesDecryptCBC' that is compiled without support for 'aes' data = vaesimcq_u8(vaesdq_u8(data, key[numberOfRounds-j])); ^ /Users/osp/Developer/libsql/target/aarch64-linux-android/release/build/libsql-ffi-4d1cee77a8dff0d3/out/sqlite3mc/src/aes_hardware.c:746:12: error: always_inline function 'vaesdq_u8' requires target feature 'aes', but would be inlined into function 'aesDecryptCBC' that is compiled without support for 'aes' data = vaesdq_u8(data, key[1]); ^ 4 warnings and 17 errors generated. make[4]: *** [CMakeFiles/sqlite3mc_static.dir/src/sqlite3mc.c.o] Error 1 make[3]: *** [CMakeFiles/sqlite3mc_static.dir/all] Error 2 make[2]: *** [CMakeFiles/sqlite3mc_static.dir/rule] Error 2 make[1]: *** [sqlite3mc_static] Error 2 thread 'main' (533981) panicked at /Users/osp/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cmake-0.1.54/src/lib.rs:1119:5: command did not execute successfully, got: exit status: 2 build script failed, must exit now note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace note: If the build failed due to a missing target, you can run this command: note: note: rustup target install aarch64-linux-android make: *** [aarch64-linux-android] Error 101 ```
2 parents fa26ac4 + 4cca9b7 commit b5dab26

File tree

5 files changed

+153
-32
lines changed

5 files changed

+153
-32
lines changed

bindings/c/Makefile

Lines changed: 61 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,11 @@ CFLAGS := -Iinclude
33
LDFLAGS := -lm
44
ARCHS_IOS = aarch64-apple-ios aarch64-apple-ios-sim
55
ARCHS_ANDROID = aarch64-linux-android armv7-linux-androideabi x86_64-linux-android i686-linux-android
6-
LIB = libsql_experimental.a
6+
IOS_LIB_FILE = libsql_experimental.dylib
7+
IOS_FINAL_LIB_FILE = libsql_experimental
8+
LIB_FILE = libsql_experimental.so
9+
XCFRAMEWORK = libsql_experimental.xcframework
710
HEADER = libsql.h
8-
XCFRAMEWORK = libsql.xcframework
9-
10-
# Set LIBSQL_PATH to the default path if not provided
11-
LIBSQL_EXPERIMENTAL_PATH ?= ../../target/release/libsql_experimental.a
1211

1312
ifeq ($(OS),Darwin)
1413
CFLAGS += -framework Security -framework CoreServices
@@ -21,40 +20,71 @@ all: example
2120
example: example.c
2221
$(CC) -o $@ $(CFLAGS) $< $(LIBSQL_EXPERIMENTAL_PATH) $(LDFLAGS)
2322

23+
notify:
24+
osascript -e 'display notification "Build completed" with title "libsql"'
25+
echo "🟢 Build Completed!"
26+
27+
lint:
28+
cargo clippy --all-features --all-targets -- --no-deps -D warnings
29+
30+
fix:
31+
cargo clippy --all-targets --all-features --fix --allow-dirty --allow-staged
32+
cargo fmt --all
33+
34+
nuke:
35+
rm -rf ./target
36+
37+
ios: clean ios-build package-dylibs notify
38+
39+
clean:
40+
rm -rf generated/$(XCFRAMEWORK)
41+
42+
package-dylibs:
43+
mkdir -p generated
44+
# Delete old files
45+
rm -rf generated/libsql*.xcframework
46+
47+
# Reset the .xcframeworks from the templates
48+
cp -r templates/libsql*.xcframework generated
49+
50+
# Pack device dylibs
51+
cp ../../target/aarch64-apple-ios/release/$(IOS_LIB_FILE) generated/$(IOS_FINAL_LIB_FILE)
52+
53+
cp generated/$(IOS_FINAL_LIB_FILE) generated/libsql_experimental.xcframework/ios-arm64/libsql_experimental.framework/
54+
install_name_tool -id @rpath/libsql_experimental.framework/$(IOS_FINAL_LIB_FILE) generated/libsql_experimental.xcframework/ios-arm64/libsql_experimental.framework/$(IOS_FINAL_LIB_FILE)
55+
codesign -f -s - --identifier com.turso.libsql-experimental generated/libsql_experimental.xcframework/ios-arm64/libsql_experimental.framework/$(IOS_FINAL_LIB_FILE)
56+
57+
mkdir -p generated/libsql_experimental.xcframework/ios-arm64/libsql_experimental.framework/Headers
58+
cp include/$(HEADER) generated/libsql_experimental.xcframework/ios-arm64/libsql_experimental.framework/Headers/
59+
60+
# Pack simulator dylibs
61+
cp ../../target/aarch64-apple-ios-sim/release/$(IOS_LIB_FILE) generated/$(IOS_FINAL_LIB_FILE)
62+
63+
cp generated/$(IOS_FINAL_LIB_FILE) generated/libsql_experimental.xcframework/ios-arm64-simulator/libsql_experimental.framework/
64+
install_name_tool -id @rpath/libsql_experimental.framework/$(IOS_FINAL_LIB_FILE) generated/libsql_experimental.xcframework/ios-arm64-simulator/libsql_experimental.framework/$(IOS_FINAL_LIB_FILE)
65+
codesign -f -s - --identifier com.turso.libsql-experimental generated/libsql_experimental.xcframework/ios-arm64-simulator/libsql_experimental.framework/$(IOS_FINAL_LIB_FILE)
66+
67+
mkdir -p generated/libsql_experimental.xcframework/ios-arm64-simulator/libsql_experimental.framework/Headers
68+
cp include/$(HEADER) generated/libsql_experimental.xcframework/ios-arm64-simulator/libsql_experimental.framework/Headers/
69+
70+
ios-build:
71+
cargo build --release --target aarch64-apple-ios
72+
cargo build --release --target aarch64-apple-ios-sim
73+
2474
android: $(ARCHS_ANDROID)
2575
rm -rf generated
2676
mkdir -p generated/jniLibs
2777
mkdir -p generated/jniLibs/arm64-v8a
2878
mkdir -p generated/jniLibs/armeabi-v7a
2979
mkdir -p generated/jniLibs/x86_64
3080
mkdir -p generated/jniLibs/x86
81+
mkdir -p generated/jniLibs/include
3182

32-
cp ../../target/aarch64-linux-android/release/$(LIB) generated/jniLibs/arm64-v8a/$(LIB)
33-
cp ../../target/armv7-linux-androideabi/release/$(LIB) generated/jniLibs/armeabi-v7a/$(LIB)
34-
cp ../../target/x86_64-linux-android/release/$(LIB) generated/jniLibs/x86_64/$(LIB)
35-
cp ../../target/i686-linux-android/release/$(LIB) generated/jniLibs/x86/$(LIB)
83+
cp ../../target/aarch64-linux-android/release/$(LIB_FILE) generated/jniLibs/arm64-v8a/$(LIB_FILE)
84+
cp ../../target/armv7-linux-androideabi/release/$(LIB_FILE) generated/jniLibs/armeabi-v7a/$(LIB_FILE)
85+
cp ../../target/x86_64-linux-android/release/$(LIB_FILE) generated/jniLibs/x86_64/$(LIB_FILE)
86+
cp ../../target/i686-linux-android/release/$(LIB_FILE) generated/jniLibs/x86/$(LIB_FILE)
87+
cp include/$(HEADER) generated/jniLibs/include/
3688

3789
$(ARCHS_ANDROID): %:
3890
cargo ndk --target $@ --platform 31 build --release
39-
40-
ios: $(XCFRAMEWORK)
41-
42-
$(ARCHS_IOS): %:
43-
cargo build --release --target $@
44-
45-
x86_64-apple-ios:
46-
SDKROOT=$$(xcrun --sdk iphonesimulator --show-sdk-path) \
47-
CFLAGS_x86_64_apple_ios="-target x86_64-apple-ios-simulator" \
48-
CXXFLAGS_x86_64_apple_ios="-target x86_64-apple-ios-simulator" \
49-
CC_x86_64_apple_ios=$$(xcrun --sdk iphonesimulator --find clang) \
50-
CXX_x86_64_apple_ios=$$(xcrun --sdk iphonesimulator --find clang++) \
51-
CMAKE_SYSTEM_NAME=iOS \
52-
CMAKE_OSX_SYSROOT=$$(xcrun --sdk iphonesimulator --show-sdk-path) \
53-
cargo build --release --target x86_64-apple-ios
54-
55-
$(XCFRAMEWORK): $(ARCHS_IOS) x86_64-apple-ios
56-
rm -rf generated
57-
mkdir -p generated/simulator_fat
58-
rm -rf $@
59-
lipo -create $(wildcard ../../target/x86_64-apple-ios/release/$(LIB)) $(wildcard ../../target/aarch64-apple-ios-sim/release/$(LIB)) -output generated/simulator_fat/$(LIB)
60-
xcodebuild -create-xcframework -library $(wildcard ../../target/aarch64-apple-ios/release/$(LIB)) -headers include -library generated/simulator_fat/$(LIB) -headers include -output $@
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>AvailableLibraries</key>
6+
<array>
7+
<dict>
8+
<key>LibraryIdentifier</key>
9+
<string>ios-arm64</string>
10+
<key>LibraryPath</key>
11+
<string>libsql_experimental.framework</string>
12+
<key>SupportedArchitectures</key>
13+
<array>
14+
<string>arm64</string>
15+
</array>
16+
<key>SupportedPlatform</key>
17+
<string>ios</string>
18+
</dict>
19+
<dict>
20+
<key>LibraryIdentifier</key>
21+
<string>ios-arm64-simulator</string>
22+
<key>LibraryPath</key>
23+
<string>libsql_experimental.framework</string>
24+
<key>SupportedArchitectures</key>
25+
<array>
26+
<string>arm64</string>
27+
</array>
28+
<key>SupportedPlatform</key>
29+
<string>ios</string>
30+
<key>SupportedPlatformVariant</key>
31+
<string>simulator</string>
32+
</dict>
33+
</array>
34+
<key>CFBundlePackageType</key>
35+
<string>XFWK</string>
36+
<key>XCFrameworkFormatVersion</key>
37+
<string>1.0</string>
38+
<key>CFBundleVersion</key>
39+
<string>1.0.0</string>
40+
<key>CFBundleShortVersionString</key>
41+
<string>1.0.0</string>
42+
</dict>
43+
</plist>
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>CFBundleDevelopmentRegion</key>
6+
<string>en</string>
7+
<key>CFBundleExecutable</key>
8+
<string>libsql_experimental</string>
9+
<key>CFBundleIdentifier</key>
10+
<string>com.turso.libsql-experimental</string>
11+
<key>CFBundleInfoDictionaryVersion</key>
12+
<string>6.0</string>
13+
<key>CFBundlePackageType</key>
14+
<string>FMWK</string>
15+
<key>CFBundleSignature</key>
16+
<string>????</string>
17+
<key>CFBundleVersion</key>
18+
<string>1.0.0</string>
19+
<key>CFBundleShortVersionString</key>
20+
<string>1.0.0</string>
21+
<key>MinimumOSVersion</key>
22+
<string>13.0</string>
23+
</dict>
24+
</plist>
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>CFBundleDevelopmentRegion</key>
6+
<string>en</string>
7+
<key>CFBundleExecutable</key>
8+
<string>libsql_experimental</string>
9+
<key>CFBundleIdentifier</key>
10+
<string>com.turso.libsql-experimental</string>
11+
<key>CFBundleInfoDictionaryVersion</key>
12+
<string>6.0</string>
13+
<key>CFBundlePackageType</key>
14+
<string>FMWK</string>
15+
<key>CFBundleSignature</key>
16+
<string>????</string>
17+
<key>CFBundleVersion</key>
18+
<string>1.0.0</string>
19+
<key>CFBundleShortVersionString</key>
20+
<string>1.0.0</string>
21+
<key>MinimumOSVersion</key>
22+
<string>13.0</string>
23+
</dict>
24+
</plist>

libsql-ffi/build.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -504,7 +504,7 @@ fn build_multiple_ciphers(out_path: &Path) -> PathBuf {
504504
}
505505
let target = env::var("TARGET").unwrap();
506506

507-
if target.ends_with("apple-ios") {
507+
if target.ends_with("apple-ios") || target.contains("android") {
508508
config.define("SQLITE3MC_OMIT_AES_HARDWARE_SUPPORT", "ON");
509509
}
510510

0 commit comments

Comments
 (0)