Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 61 additions & 31 deletions bindings/c/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,11 @@ CFLAGS := -Iinclude
LDFLAGS := -lm
ARCHS_IOS = aarch64-apple-ios aarch64-apple-ios-sim
ARCHS_ANDROID = aarch64-linux-android armv7-linux-androideabi x86_64-linux-android i686-linux-android
LIB = libsql_experimental.a
IOS_LIB_FILE = libsql_experimental.dylib
IOS_FINAL_LIB_FILE = libsql_experimental
LIB_FILE = libsql_experimental.so
XCFRAMEWORK = libsql_experimental.xcframework
HEADER = libsql.h
XCFRAMEWORK = libsql.xcframework

# Set LIBSQL_PATH to the default path if not provided
LIBSQL_EXPERIMENTAL_PATH ?= ../../target/release/libsql_experimental.a

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

notify:
osascript -e 'display notification "Build completed" with title "libsql"'
echo "🟢 Build Completed!"

lint:
cargo clippy --all-features --all-targets -- --no-deps -D warnings

fix:
cargo clippy --all-targets --all-features --fix --allow-dirty --allow-staged
cargo fmt --all

nuke:
rm -rf ./target

ios: clean ios-build package-dylibs notify

clean:
rm -rf generated/$(XCFRAMEWORK)

package-dylibs:
mkdir -p generated
# Delete old files
rm -rf generated/libsql*.xcframework

# Reset the .xcframeworks from the templates
cp -r templates/libsql*.xcframework generated

# Pack device dylibs
cp ../../target/aarch64-apple-ios/release/$(IOS_LIB_FILE) generated/$(IOS_FINAL_LIB_FILE)

cp generated/$(IOS_FINAL_LIB_FILE) generated/libsql_experimental.xcframework/ios-arm64/libsql_experimental.framework/
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)
codesign -f -s - --identifier com.turso.libsql-experimental generated/libsql_experimental.xcframework/ios-arm64/libsql_experimental.framework/$(IOS_FINAL_LIB_FILE)

mkdir -p generated/libsql_experimental.xcframework/ios-arm64/libsql_experimental.framework/Headers
cp include/$(HEADER) generated/libsql_experimental.xcframework/ios-arm64/libsql_experimental.framework/Headers/

# Pack simulator dylibs
cp ../../target/aarch64-apple-ios-sim/release/$(IOS_LIB_FILE) generated/$(IOS_FINAL_LIB_FILE)

cp generated/$(IOS_FINAL_LIB_FILE) generated/libsql_experimental.xcframework/ios-arm64-simulator/libsql_experimental.framework/
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)
codesign -f -s - --identifier com.turso.libsql-experimental generated/libsql_experimental.xcframework/ios-arm64-simulator/libsql_experimental.framework/$(IOS_FINAL_LIB_FILE)

mkdir -p generated/libsql_experimental.xcframework/ios-arm64-simulator/libsql_experimental.framework/Headers
cp include/$(HEADER) generated/libsql_experimental.xcframework/ios-arm64-simulator/libsql_experimental.framework/Headers/

ios-build:
cargo build --release --target aarch64-apple-ios
cargo build --release --target aarch64-apple-ios-sim

android: $(ARCHS_ANDROID)
rm -rf generated
mkdir -p generated/jniLibs
mkdir -p generated/jniLibs/arm64-v8a
mkdir -p generated/jniLibs/armeabi-v7a
mkdir -p generated/jniLibs/x86_64
mkdir -p generated/jniLibs/x86
mkdir -p generated/jniLibs/include

cp ../../target/aarch64-linux-android/release/$(LIB) generated/jniLibs/arm64-v8a/$(LIB)
cp ../../target/armv7-linux-androideabi/release/$(LIB) generated/jniLibs/armeabi-v7a/$(LIB)
cp ../../target/x86_64-linux-android/release/$(LIB) generated/jniLibs/x86_64/$(LIB)
cp ../../target/i686-linux-android/release/$(LIB) generated/jniLibs/x86/$(LIB)
cp ../../target/aarch64-linux-android/release/$(LIB_FILE) generated/jniLibs/arm64-v8a/$(LIB_FILE)
cp ../../target/armv7-linux-androideabi/release/$(LIB_FILE) generated/jniLibs/armeabi-v7a/$(LIB_FILE)
cp ../../target/x86_64-linux-android/release/$(LIB_FILE) generated/jniLibs/x86_64/$(LIB_FILE)
cp ../../target/i686-linux-android/release/$(LIB_FILE) generated/jniLibs/x86/$(LIB_FILE)
cp include/$(HEADER) generated/jniLibs/include/

$(ARCHS_ANDROID): %:
cargo ndk --target $@ --platform 31 build --release

ios: $(XCFRAMEWORK)

$(ARCHS_IOS): %:
cargo build --release --target $@

x86_64-apple-ios:
SDKROOT=$$(xcrun --sdk iphonesimulator --show-sdk-path) \
CFLAGS_x86_64_apple_ios="-target x86_64-apple-ios-simulator" \
CXXFLAGS_x86_64_apple_ios="-target x86_64-apple-ios-simulator" \
CC_x86_64_apple_ios=$$(xcrun --sdk iphonesimulator --find clang) \
CXX_x86_64_apple_ios=$$(xcrun --sdk iphonesimulator --find clang++) \
CMAKE_SYSTEM_NAME=iOS \
CMAKE_OSX_SYSROOT=$$(xcrun --sdk iphonesimulator --show-sdk-path) \
cargo build --release --target x86_64-apple-ios

$(XCFRAMEWORK): $(ARCHS_IOS) x86_64-apple-ios
rm -rf generated
mkdir -p generated/simulator_fat
rm -rf $@
lipo -create $(wildcard ../../target/x86_64-apple-ios/release/$(LIB)) $(wildcard ../../target/aarch64-apple-ios-sim/release/$(LIB)) -output generated/simulator_fat/$(LIB)
xcodebuild -create-xcframework -library $(wildcard ../../target/aarch64-apple-ios/release/$(LIB)) -headers include -library generated/simulator_fat/$(LIB) -headers include -output $@
43 changes: 43 additions & 0 deletions bindings/c/templates/libsql_experimental.xcframework/Info.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AvailableLibraries</key>
<array>
<dict>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>libsql_experimental.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
<dict>
<key>LibraryIdentifier</key>
<string>ios-arm64-simulator</string>
<key>LibraryPath</key>
<string>libsql_experimental.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>
<key>XCFrameworkFormatVersion</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1.0.0</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
</dict>
</plist>
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>libsql_experimental</string>
<key>CFBundleIdentifier</key>
<string>com.turso.libsql-experimental</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0.0</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>MinimumOSVersion</key>
<string>13.0</string>
</dict>
</plist>
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>libsql_experimental</string>
<key>CFBundleIdentifier</key>
<string>com.turso.libsql-experimental</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0.0</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>MinimumOSVersion</key>
<string>13.0</string>
</dict>
</plist>
2 changes: 1 addition & 1 deletion libsql-ffi/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -504,7 +504,7 @@ fn build_multiple_ciphers(out_path: &Path) -> PathBuf {
}
let target = env::var("TARGET").unwrap();

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

Expand Down
Loading