Replace libplist with plist_ffi crate

This commit is contained in:
Jackson Coxson
2025-07-30 14:39:32 -06:00
parent 4abaca9cb8
commit 6c7906b026
9 changed files with 329 additions and 625 deletions

147
justfile
View File

@@ -66,150 +66,3 @@ apple-build: # requires a Mac
cargo build --release --target aarch64-apple-darwin
cargo build --release --target x86_64-apple-darwin
lib_name := "plist"
src_dir := "ffi/libplist"
ios_out := "build/ios"
sim_out := "build/sim"
x86_64_sim_out := "build/x86_64_sim"
mac_out := "build/mac"
x86_64_mac_out := "build/x86_64_mac"
plist_xcframework: plist_clean build_plist_ios build_plist_sim build_plist_x86_64_sim build_plist_mac build_plist_x86_64_mac plist_merge_archs
rm -rf {{lib_name}}.xcframework
xcodebuild -create-xcframework \
-framework {{ios_out}}/plist.framework \
-framework build/universal-sim/plist.framework \
-framework build/universal-mac/plist.framework \
-output swift/{{lib_name}}.xcframework
plist_clean:
rm -rf build
rm -rf swift/plist.xcframework
plist_merge_archs:
# Merge simulator dylibs (arm64 + x86_64)
mkdir -p build/universal-sim
lipo -create \
{{sim_out}}/lib/libplist-2.0.4.dylib \
{{x86_64_sim_out}}/lib/libplist-2.0.4.dylib \
-output build/universal-sim/libplist-2.0.4.dylib
mkdir -p build/universal-sim/plist.framework/Headers
mkdir -p build/universal-sim/plist.framework/Modules
cp build/universal-sim/libplist-2.0.4.dylib build/universal-sim/plist.framework/plist
cp {{sim_out}}/include/plist/*.h build/universal-sim/plist.framework/Headers
cp swift/Info.plist build/universal-sim/plist.framework/Info.plist
cp swift/plistinclude/module.modulemap build/universal-sim/plist.framework/Modules/module.modulemap
# Merge macOS dylibs (arm64 + x86_64)
mkdir -p build/universal-mac
lipo -create \
{{mac_out}}/lib/libplist-2.0.4.dylib \
{{x86_64_mac_out}}/lib/libplist-2.0.4.dylib \
-output build/universal-mac/libplist-2.0.4.dylib
mkdir -p build/universal-mac/plist.framework/Headers
mkdir -p build/universal-mac/plist.framework/Modules
cp build/universal-mac/libplist-2.0.4.dylib build/universal-mac/plist.framework/plist
cp {{mac_out}}/include/plist/*.h build/universal-mac/plist.framework/Headers
cp swift/Info.plist build/universal-mac/plist.framework/Info.plist
cp swift/plistinclude/module.modulemap build/universal-mac/plist.framework/Modules/module.modulemap
build_plist_ios:
rm -rf {{ios_out}} build/build-ios
rm -rf build/ios
mkdir -p {{ios_out}}
mkdir -p build/build-ios && cd build/build-ios && \
../../ffi/libplist/autogen.sh \
--host=arm-apple-darwin \
--prefix="$(pwd)/../../{{ios_out}}" \
--without-cython \
--without-tools \
CC="$(xcrun --sdk iphoneos --find clang)" \
CFLAGS="-arch arm64 -isysroot $(xcrun --sdk iphoneos --show-sdk-path) -mios-version-min=12.0" \
CXX="$(xcrun --sdk iphoneos --find clang++)" \
CXXFLAGS="-arch arm64 -isysroot $(xcrun --sdk iphoneos --show-sdk-path) -mios-version-min=12.0" \
LDFLAGS="-arch arm64 -isysroot $(xcrun --sdk iphoneos --show-sdk-path) -mios-version-min=12.0" && \
make clean && make -j$(sysctl -n hw.ncpu) && make install
install_name_tool -id @rpath/plist.framework/plist {{ios_out}}/lib/libplist-2.0.4.dylib
mkdir -p {{ios_out}}/plist.framework/Headers
mkdir -p {{ios_out}}/plist.framework/Modules
cp {{ios_out}}/lib/libplist-2.0.4.dylib {{ios_out}}/plist.framework/plist
cp {{ios_out}}/include/plist/*.h {{ios_out}}/plist.framework/Headers
cp swift/Info.plist {{ios_out}}/plist.framework/Info.plist
cp swift/plistinclude/module.modulemap {{ios_out}}/plist.framework/Modules/module.modulemap
build_plist_sim:
rm -rf {{sim_out}} build/build-sim
mkdir -p {{sim_out}}
mkdir -p build/build-sim && cd build/build-sim && \
../../ffi/libplist/autogen.sh \
--host=arm-apple-darwin \
--prefix="$(pwd)/../../{{sim_out}}" \
--without-cython \
--without-tools \
CC="$(xcrun --sdk iphonesimulator --find clang)" \
CFLAGS="-arch arm64 -isysroot $(xcrun --sdk iphonesimulator --show-sdk-path) -mios-simulator-version-min=12.0" \
CXX="$(xcrun --sdk iphonesimulator --find clang++)" \
CXXFLAGS="-arch arm64 -isysroot $(xcrun --sdk iphonesimulator --show-sdk-path) -mios-simulator-version-min=12.0" \
LDFLAGS="-arch arm64 -isysroot $(xcrun --sdk iphonesimulator --show-sdk-path) -mios-simulator-version-min=12.0" && \
make clean && make -j$(sysctl -n hw.ncpu) && make install
install_name_tool -id @rpath/plist.framework/plist {{sim_out}}/lib/libplist-2.0.4.dylib
build_plist_x86_64_sim:
rm -rf {{x86_64_sim_out}} build/build-sim
mkdir -p {{x86_64_sim_out}}
mkdir -p build/build-sim && cd build/build-sim && \
../../ffi/libplist/autogen.sh \
--host=x86_64-apple-darwin \
--prefix="$(pwd)/../../{{x86_64_sim_out}}" \
--without-cython \
--without-tools \
CC="$(xcrun --sdk iphonesimulator --find clang)" \
CFLAGS="-arch x86_64 -isysroot $(xcrun --sdk iphonesimulator --show-sdk-path) -mios-simulator-version-min=12.0" \
CXX="$(xcrun --sdk iphonesimulator --find clang++)" \
CXXFLAGS="-arch x86_64 -isysroot $(xcrun --sdk iphonesimulator --show-sdk-path) -mios-simulator-version-min=12.0" \
LDFLAGS="-arch x86_64 -isysroot $(xcrun --sdk iphonesimulator --show-sdk-path) -mios-simulator-version-min=12.0" && \
make clean && make -j$(sysctl -n hw.ncpu) && make install
install_name_tool -id @rpath/plist.framework/plist {{x86_64_sim_out}}/lib/libplist-2.0.4.dylib
build_plist_mac:
rm -rf {{mac_out}} build/build-mac
mkdir -p {{mac_out}}
mkdir -p build/build-mac && cd build/build-mac && \
../../ffi/libplist/autogen.sh \
--host=aarch64-apple-darwin \
--prefix="$(pwd)/../../{{mac_out}}" \
--without-cython \
--without-tools \
CC="$(xcrun --sdk macosx --find clang)" \
CFLAGS="-arch arm64 -isysroot $(xcrun --sdk macosx --show-sdk-path) -mmacosx-version-min=11.0" \
CXX="$(xcrun --sdk macosx --find clang++)" \
CXXFLAGS="-arch arm64 -isysroot $(xcrun --sdk macosx --show-sdk-path) -mmacosx-version-min=11.0" \
LDFLAGS="-arch arm64 -isysroot $(xcrun --sdk macosx --show-sdk-path) -mmacosx-version-min=11.0" && \
make clean && make -j$(sysctl -n hw.ncpu) && make install
install_name_tool -id @rpath/plist.framework/plist {{mac_out}}/lib/libplist-2.0.4.dylib
build_plist_x86_64_mac:
rm -rf {{x86_64_mac_out}} build/build-mac
mkdir -p {{x86_64_mac_out}}
mkdir -p build/build-mac && cd build/build-mac && \
../../ffi/libplist/autogen.sh \
--host=x86_64-apple-darwin \
--prefix="$(pwd)/../../{{x86_64_mac_out}}" \
--without-cython \
--without-tools \
CC="$(xcrun --sdk macosx --find clang)" \
CFLAGS="-arch x86_64 -isysroot $(xcrun --sdk macosx --show-sdk-path) -mmacosx-version-min=11.0" \
CXX="$(xcrun --sdk macosx --find clang++)" \
CXXFLAGS="-arch x86_64 -isysroot $(xcrun --sdk macosx --show-sdk-path) -mmacosx-version-min=11.0" \
LDFLAGS="-arch x86_64 -isysroot $(xcrun --sdk macosx --show-sdk-path) -mmacosx-version-min=11.0" && \
make clean && make -j$(sysctl -n hw.ncpu) && make install
install_name_tool -id @rpath/plist.framework/plist {{x86_64_mac_out}}/lib/libplist-2.0.4.dylib