Skip to content

Commit

Permalink
Add xcframework support (#23)
Browse files Browse the repository at this point in the history
  • Loading branch information
halx99 authored Apr 2, 2024
1 parent 40fd2c1 commit d1efa32
Show file tree
Hide file tree
Showing 11 changed files with 77 additions and 177 deletions.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -362,4 +362,6 @@ MigrationBackup/
/buildsrc_*

/tools
/cache
/cache

fat_tmp
6 changes: 5 additions & 1 deletion 1k/config.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,11 @@
# include <TargetConditionals.h>

# if TARGET_IPHONE_SIMULATOR == 1
# include "ios-x64/@INC_DIR@@CONF_HEADER@"
# if defined(__arm64__)
# include "ios-x64/@INC_DIR@@CONF_HEADER@"
# else
# include "ios-arm64-sim/@INC_DIR@@CONF_HEADER@"
# endif
# elif TARGET_OS_IPHONE == 1
# if defined(__arm64__)
# include "ios-arm64/@INC_DIR@@CONF_HEADER@"
Expand Down
51 changes: 39 additions & 12 deletions 1k/dist.sh
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,11 @@ function dist_lib {
mkdir -p ${DIST_DIR}/include/mac/${INC_DIR}
# mkdir -p ${DIST_DIR}/include/ios-arm/${INC_DIR}
mkdir -p ${DIST_DIR}/include/ios-arm64/${INC_DIR}
mkdir -p ${DIST_DIR}/include/ios-arm64-sim/${INC_DIR}
mkdir -p ${DIST_DIR}/include/ios-x64/${INC_DIR}
# Note: tvos can share ios configuration safety for openssl
mkdir -p ${DIST_DIR}/include/tvos-arm64/${INC_DIR}
mkdir -p ${DIST_DIR}/include/tvos-arm64-sim/${INC_DIR}
mkdir -p ${DIST_DIR}/include/tvos-x64/${INC_DIR}
mkdir -p ${DIST_DIR}/include/android-arm/${INC_DIR}
mkdir -p ${DIST_DIR}/include/android-arm64/${INC_DIR}
Expand Down Expand Up @@ -122,8 +125,10 @@ function dist_lib {
cp install_osx_x64/${LIB_NAME}/include/${INC_DIR}${CONF_HEADER} ${DIST_DIR}/include/mac/${INC_DIR}
# cp install_ios_armv7/${LIB_NAME}/include/${INC_DIR}${CONF_HEADER} ${DIST_DIR}/include/ios-arm/${INC_DIR}
cp install_ios_arm64/${LIB_NAME}/include/${INC_DIR}${CONF_HEADER} ${DIST_DIR}/include/ios-arm64/${INC_DIR}
cp install_ios_arm64_sim/${LIB_NAME}/include/${INC_DIR}${CONF_HEADER} ${DIST_DIR}/include/ios-arm64-sim/${INC_DIR}
cp install_ios_x64/${LIB_NAME}/include/${INC_DIR}${CONF_HEADER} ${DIST_DIR}/include/ios-x64/${INC_DIR}
cp install_tvos_arm64/${LIB_NAME}/include/${INC_DIR}${CONF_HEADER} ${DIST_DIR}/include/tvos-arm64/${INC_DIR}
cp install_tvos_arm64_sim/${LIB_NAME}/include/${INC_DIR}${CONF_HEADER} ${DIST_DIR}/include/tvos-arm64-sim/${INC_DIR}
cp install_tvos_x64/${LIB_NAME}/include/${INC_DIR}${CONF_HEADER} ${DIST_DIR}/include/tvos-x64/${INC_DIR}
cp install_android_armv7/${LIB_NAME}/include/${INC_DIR}${CONF_HEADER} ${DIST_DIR}/include/android-arm/${INC_DIR}
cp install_android_arm64/${LIB_NAME}/include/${INC_DIR}${CONF_HEADER} ${DIST_DIR}/include/android-arm64/${INC_DIR}
Expand Down Expand Up @@ -182,18 +187,6 @@ function dist_lib {
copy1k "install_wasm/${LIB_NAME}/lib/*.so" ${DIST_DIR}/lib/wasm/
fi

if [ $(($DIST_FLAGS & $DISTF_MAC)) != 0 ]; then
mkdir -p ${DIST_DIR}/lib/mac
fi

if [ $(($DIST_FLAGS & $DISTF_IOS)) != 0 ]; then
mkdir -p ${DIST_DIR}/lib/ios
fi

if [ $(($DIST_FLAGS & $DISTF_TVOS)) != 0 ]; then
mkdir -p ${DIST_DIR}/lib/tvos
fi

ver=
branch=
commits=
Expand Down Expand Up @@ -233,6 +226,39 @@ function dist_lib {
fi
}

function create_fat {
LIB_NAME=$1
LIB_FILE=$2
# create fat lib for ios-sim
mkdir -p fat_tmp/${LIB_NAME}/lib/ios_sim/
mkdir -p fat_tmp/${LIB_NAME}/lib/tvos_sim/
mkdir -p fat_tmp/${LIB_NAME}/lib/mac/
lipo -create install_ios_arm64_sim/${LIB_NAME}/lib/$LIB_FILE install_ios_x64/${LIB_NAME}/lib/$LIB_FILE -output fat_tmp/${LIB_NAME}/lib/ios_sim/$LIB_FILE
lipo -create install_tvos_arm64_sim/${LIB_NAME}/lib/$LIB_FILE install_tvos_x64/${LIB_NAME}/lib/$LIB_FILE -output fat_tmp/${LIB_NAME}/lib/tvos_sim/$LIB_FILE
lipo -create install_osx_arm64/${LIB_NAME}/lib/$LIB_FILE install_osx_x64/${LIB_NAME}/lib/$LIB_FILE -output fat_tmp/${LIB_NAME}/lib/mac/$LIB_FILE

lipo -info fat_tmp/${LIB_NAME}/lib/ios_sim/$LIB_FILE
lipo -info fat_tmp/${LIB_NAME}/lib/tvos_sim/$LIB_FILE
lipo -info fat_tmp/${LIB_NAME}/lib/mac/$LIB_FILE
}

function create_xcfraemwork {
NAME=$1
LIB_NAME=$2
LIB_FILE=$3

create_fat $LIB_NAME $LIB_FILE

# create xcframework
xcodebuild -create-xcframework \
-library install_ios_arm64/${LIB_NAME}/lib/$LIB_FILE \
-library fat_tmp/${LIB_NAME}/lib/ios_sim/$LIB_FILE \
-library install_tvos_arm64/${LIB_NAME}/lib/$LIB_FILE \
-library fat_tmp/${LIB_NAME}/lib/tvos_sim/$LIB_FILE \
-library fat_tmp/${LIB_NAME}/lib/mac/$LIB_FILE \
-output ${DIST_DIR}/lib/$NAME.xcframework
}

# dist libs
if [ "$DIST_LIBS" = "" ] ; then
DIST_LIBS="zlib,jpeg-turbo,openssl,cares,curl,luajit,angle"
Expand All @@ -248,6 +274,7 @@ echo "Dist $libs_count libs ..."
mkdir ./seprate
for (( i=0; i<${libs_count}; ++i )); do
lib_name=${libs_arr[$i]}
echo "dist $lib_name ..."
source src/$lib_name/dist1.sh $DIST_ROOT
cd ${DIST_NAME}
zip -q -r ../seprate/$lib_name.zip ./$lib_name
Expand Down
10 changes: 7 additions & 3 deletions 1k/fetch.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,13 @@ function(_1kfetch_dist package_name)
endif()

# set platform specific path, PLATFORM_NAME provided by user: win32,winrt,mac,ios,android,tvos,watchos,linux
set(_prebuilt_lib_dir "${_prebuilt_root}/lib/${PLATFORM_NAME}")
if(ANDROID OR WIN32)
set(_prebuilt_lib_dir "${_prebuilt_lib_dir}/${ARCH_ALIAS}")
if(APPLE) # since 1kiss_dist v80+, xcframework don't require platform spec sub folder
set(_prebuilt_lib_dir "${_prebuilt_root}/lib")
else()
set(_prebuilt_lib_dir "${_prebuilt_root}/lib/${PLATFORM_NAME}")
if(ANDROID OR WIN32)
set(_prebuilt_lib_dir "${_prebuilt_lib_dir}/${ARCH_ALIAS}")
endif()
endif()
set(${package_name}_INC_DIR ${_prebuilt_root}/include PARENT_SCOPE)
set(${package_name}_LIB_DIR ${_prebuilt_lib_dir} PARENT_SCOPE)
Expand Down
28 changes: 1 addition & 27 deletions src/cares/dist1.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,33 +4,7 @@ DIST_DIR="${DIST_ROOT}/${LIB_NAME}"

dist_lib ${LIB_NAME} ${DIST_DIR} $DISTF_NATIVES

# create flat lib for ios
if [ -f "install_ios_arm/${LIB_NAME}/lib/libcares.a" ] ; then
lipo -create install_ios_arm/${LIB_NAME}/lib/libcares.a install_ios_arm64/${LIB_NAME}/lib/libcares.a install_ios_x64/${LIB_NAME}/lib/libcares.a -output ${DIST_DIR}/lib/ios/libcares.a
else
lipo -create install_ios_arm64/${LIB_NAME}/lib/libcares.a install_ios_x64/${LIB_NAME}/lib/libcares.a -output ${DIST_DIR}/lib/ios/libcares.a
fi

# create flat lib for tvos
if [ -f "install_tvos_arm/${LIB_NAME}/lib/libcares.a" ] ; then
lipo -create install_tvos_arm/${LIB_NAME}/lib/libcares.a install_tvos_arm64/${LIB_NAME}/lib/libcares.a install_tvos_x64/${LIB_NAME}/lib/libcares.a -output ${DIST_DIR}/lib/tvos/libcares.a
else
lipo -create install_tvos_arm64/${LIB_NAME}/lib/libcares.a install_tvos_x64/${LIB_NAME}/lib/libcares.a -output ${DIST_DIR}/lib/tvos/libcares.a
fi

# check the flat lib
lipo -info ${DIST_DIR}/lib/ios/libcares.a

# check the flat lib
lipo -info ${DIST_DIR}/lib/tvos/libcares.a


# create fat lib for mac
lipo -create install_osx_arm64/${LIB_NAME}/lib/libcares.a install_osx_x64/${LIB_NAME}/lib/libcares.a -output ${DIST_DIR}/lib/mac/libcares.a


# check the fat lib
lipo -info ${DIST_DIR}/lib/mac/libcares.a
create_xcfraemwork cares ${LIB_NAME} libcares.a

# overrite ares_build.h with common header
cp -f src/cares/ares_build.h ${DIST_DIR}/include/
28 changes: 1 addition & 27 deletions src/curl/dist1.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,30 +4,4 @@ DIST_DIR="${DIST_ROOT}/${LIB_NAME}"

dist_lib ${LIB_NAME} ${DIST_DIR} $DISTF_NATIVES

# create flat lib for ios
if [ -f "install_ios_arm/${LIB_NAME}/lib/libcurl.a" ] ; then
lipo -create install_ios_arm/${LIB_NAME}/lib/libcurl.a install_ios_arm64/${LIB_NAME}/lib/libcurl.a install_ios_x64/${LIB_NAME}/lib/libcurl.a -output ${DIST_DIR}/lib/ios/libcurl.a
else
lipo -create install_ios_arm64/${LIB_NAME}/lib/libcurl.a install_ios_x64/${LIB_NAME}/lib/libcurl.a -output ${DIST_DIR}/lib/ios/libcurl.a
fi

# create flat lib for tvos
if [ -f "install_tvos_arm/${LIB_NAME}/lib/libcurl.a" ] ; then
lipo -create install_tvos_arm/${LIB_NAME}/lib/libcurl.a install_tvos_arm64/${LIB_NAME}/lib/libcurl.a install_tvos_x64/${LIB_NAME}/lib/libcurl.a -output ${DIST_DIR}/lib/tvos/libcurl.a
else
lipo -create install_tvos_arm64/${LIB_NAME}/lib/libcurl.a install_tvos_x64/${LIB_NAME}/lib/libcurl.a -output ${DIST_DIR}/lib/tvos/libcurl.a
fi

# check the flat lib
lipo -info ${DIST_DIR}/lib/ios/libcurl.a

# check the flat lib
lipo -info ${DIST_DIR}/lib/tvos/libcurl.a


# create fat lib for mac
lipo -create install_osx_arm64/${LIB_NAME}/lib/libcurl.a install_osx_x64/${LIB_NAME}/lib/libcurl.a -output ${DIST_DIR}/lib/mac/libcurl.a


# check the fat lib
lipo -info ${DIST_DIR}/lib/mac/libcurl.a
create_xcfraemwork curl ${LIB_NAME} libcurl.a
26 changes: 1 addition & 25 deletions src/jpeg-turbo/dist1.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,28 +4,4 @@ DIST_DIR="${DIST_ROOT}/${LIB_NAME}"

dist_lib ${LIB_NAME} ${DIST_DIR} $DISTF_NO_WINRT jconfig.h config_ab.h.in

# create flat lib for ios
if [ -f "install_ios_arm/${LIB_NAME}/lib/libjpeg.a" ] ; then
lipo -create install_ios_arm/${LIB_NAME}/lib/libjpeg.a install_ios_arm64/${LIB_NAME}/lib/libjpeg.a install_ios_x64/${LIB_NAME}/lib/libjpeg.a -output ${DIST_DIR}/lib/ios/libjpeg.a
else
lipo -create install_ios_arm64/${LIB_NAME}/lib/libjpeg.a install_ios_x64/${LIB_NAME}/lib/libjpeg.a -output ${DIST_DIR}/lib/ios/libjpeg.a
fi

# create flat lib for tvos
if [ -f "install_tvos_arm/${LIB_NAME}/lib/libjpeg.a" ] ; then
lipo -create install_tvos_arm/${LIB_NAME}/lib/libjpeg.a install_tvos_arm64/${LIB_NAME}/lib/libjpeg.a install_tvos_x64/${LIB_NAME}/lib/libjpeg.a -output ${DIST_DIR}/lib/tvos/libjpeg.a
else
lipo -create install_tvos_arm64/${LIB_NAME}/lib/libjpeg.a install_tvos_x64/${LIB_NAME}/lib/libjpeg.a -output ${DIST_DIR}/lib/tvos/libjpeg.a
fi

# check the flat lib
lipo -info ${DIST_DIR}/lib/ios/libjpeg.a

# check the flat lib
lipo -info ${DIST_DIR}/lib/tvos/libjpeg.a

# create fat lib for mac
lipo -create install_osx_arm64/${LIB_NAME}/lib/libjpeg.a install_osx_x64/${LIB_NAME}/lib/libjpeg.a -output ${DIST_DIR}/lib/mac/libjpeg.a

# check the fat lib
lipo -info ${DIST_DIR}/lib/mac/libjpeg.a
create_xcfraemwork jpeg ${LIB_NAME} libjpeg.a
25 changes: 1 addition & 24 deletions src/luajit/dist1.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,4 @@ DIST_DIR="${DIST_ROOT}/${LIB_NAME}"

dist_lib ${LIB_NAME} ${DIST_DIR} $DISTF_NO_WINRT

# create flat lib for ios
if [ -f "install_ios_arm/${LIB_NAME}/lib/libluajit.a" ] ; then
echo "Creating flat libluajit.a with armv7,arm64,x86_64"
lipo -create install_ios_arm/${LIB_NAME}/lib/libluajit.a install_ios_arm64/${LIB_NAME}/lib/libluajit.a install_ios_x64/${LIB_NAME}/lib/libluajit.a -output ${DIST_DIR}/lib/ios/libluajit.a
else
echo "Creating flat libluajit.a with arm64,x86_64"
lipo -create install_ios_arm64/${LIB_NAME}/lib/libluajit.a install_ios_x64/${LIB_NAME}/lib/libluajit.a -output ${DIST_DIR}/lib/ios/libluajit.a
fi

# create flat lib for tvos
if [ -f "install_tvos_arm/${LIB_NAME}/lib/libluajit.a" ] ; then
echo "Creating flat libluajit.a with armv7,arm64,x86_64"
lipo -create install_tvos_arm/${LIB_NAME}/lib/libluajit.a install_tvos_arm64/${LIB_NAME}/lib/libluajit.a install_tvos_x64/${LIB_NAME}/lib/libluajit.a -output ${DIST_DIR}/lib/tvos/libluajit.a
else
echo "Creating flat libluajit.a with arm64,x86_64"
lipo -create install_tvos_arm64/${LIB_NAME}/lib/libluajit.a install_tvos_x64/${LIB_NAME}/lib/libluajit.a -output ${DIST_DIR}/lib/tvos/libluajit.a
fi

# create fat lib for mac
lipo -create install_osx_arm64/${LIB_NAME}/lib/libluajit.a install_osx_x64/${LIB_NAME}/lib/libluajit.a -output ${DIST_DIR}/lib/mac/libluajit.a

# check the fat lib
lipo -info ${DIST_DIR}/lib/mac/libluajit.a

create_xcfraemwork luajit ${LIB_NAME} libluajit.a
4 changes: 3 additions & 1 deletion src/openssl/build1.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,9 @@ else {
# asume x64 as simulator
$ossl_target_os += 'sim-'
$ios_plat_suffix = 'Simulator'
$TARGET_OPTIONS += 'no-asm'
if ($target_cpu -eq 'arm64') {
$TARGET_OPTIONS += 'no-asm'
}
}
$ossl_target_os += "cross-$ossl_target_cpu"
$TARGET_OPTIONS += $ossl_target_os
Expand Down
46 changes: 15 additions & 31 deletions src/openssl/dist1.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,36 +4,20 @@ DIST_DIR="${DIST_ROOT}/${LIB_NAME}"

dist_lib ${LIB_NAME} ${DIST_DIR} $DISTF_ALL configuration.h config.h.in openssl/

# create flat lib for ios
if [ -f "install_ios_arm/${LIB_NAME}/lib/libssl.a" ] ; then
lipo -create install_ios_arm/${LIB_NAME}/lib/libssl.a install_ios_arm64/${LIB_NAME}/lib/libssl.a install_ios_x64/${LIB_NAME}/lib/libssl.a -output ${DIST_DIR}/lib/ios/libssl.a
lipo -create install_ios_arm/${LIB_NAME}/lib/libcrypto.a install_ios_arm64/${LIB_NAME}/lib/libcrypto.a install_ios_x64/${LIB_NAME}/lib/libcrypto.a -output ${DIST_DIR}/lib/ios/libcrypto.a
else
lipo -create install_ios_arm64/${LIB_NAME}/lib/libssl.a install_ios_x64/${LIB_NAME}/lib/libssl.a -output ${DIST_DIR}/lib/ios/libssl.a
lipo -create install_ios_arm64/${LIB_NAME}/lib/libcrypto.a install_ios_x64/${LIB_NAME}/lib/libcrypto.a -output ${DIST_DIR}/lib/ios/libcrypto.a
fi
function combine_openssl {
dir=$1
libtool -static -o $dir/${LIB_NAME}/lib/libopenssl.a \
$dir/${LIB_NAME}/lib/libcrypto.a \
$dir/${LIB_NAME}/lib/libssl.a
}

# create flat lib for tvos
if [ -f "install_tvos_arm/${LIB_NAME}/lib/libssl.a" ] ; then
lipo -create install_tvos_arm/${LIB_NAME}/lib/libssl.a install_tvos_arm64/${LIB_NAME}/lib/libssl.a install_tvos_x64/${LIB_NAME}/lib/libssl.a -output ${DIST_DIR}/lib/tvos/libssl.a
lipo -create install_tvos_arm/${LIB_NAME}/lib/libcrypto.a install_tvos_arm64/${LIB_NAME}/lib/libcrypto.a install_tvos_x64/${LIB_NAME}/lib/libcrypto.a -output ${DIST_DIR}/lib/tvos/libcrypto.a
else
lipo -create install_tvos_arm64/${LIB_NAME}/lib/libssl.a install_tvos_x64/${LIB_NAME}/lib/libssl.a -output ${DIST_DIR}/lib/tvos/libssl.a
lipo -create install_tvos_arm64/${LIB_NAME}/lib/libcrypto.a install_tvos_x64/${LIB_NAME}/lib/libcrypto.a -output ${DIST_DIR}/lib/tvos/libcrypto.a
fi
combine_openssl install_ios_arm64
combine_openssl install_ios_x64
combine_openssl install_ios_arm64_sim
combine_openssl install_tvos_arm64
combine_openssl install_tvos_x64
combine_openssl install_tvos_arm64_sim
combine_openssl install_osx_x64
combine_openssl install_osx_arm64

# check the flat lib
lipo -info ${DIST_DIR}/lib/ios/libssl.a
lipo -info ${DIST_DIR}/lib/ios/libcrypto.a

# check the flat lib
lipo -info ${DIST_DIR}/lib/tvos/libssl.a
lipo -info ${DIST_DIR}/lib/tvos/libcrypto.a

# create fat lib for mac
lipo -create install_osx_arm64/${LIB_NAME}/lib/libssl.a install_osx_x64/${LIB_NAME}/lib/libssl.a -output ${DIST_DIR}/lib/mac/libssl.a
lipo -create install_osx_arm64/${LIB_NAME}/lib/libcrypto.a install_osx_x64/${LIB_NAME}/lib/libcrypto.a -output ${DIST_DIR}/lib/mac/libcrypto.a

# check the fat lib
lipo -info ${DIST_DIR}/lib/mac/libssl.a
lipo -info ${DIST_DIR}/lib/mac/libcrypto.a
create_xcfraemwork openssl ${LIB_NAME} libopenssl.a
26 changes: 1 addition & 25 deletions src/zlib/dist1.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,31 +4,7 @@ DIST_DIR="${DIST_ROOT}/${LIB_NAME}"

dist_lib ${LIB_NAME} ${DIST_DIR} $DISTF_NATIVES

# create flat lib for ios
if [ -f "install_ios_arm/${LIB_NAME}/lib/libz.a" ] ; then
lipo -create install_ios_arm/${LIB_NAME}/lib/libz.a install_ios_arm64/${LIB_NAME}/lib/libz.a install_ios_x64/${LIB_NAME}/lib/libz.a -output ${DIST_DIR}/lib/ios/libz.a
else
lipo -create install_ios_arm64/${LIB_NAME}/lib/libz.a install_ios_x64/${LIB_NAME}/lib/libz.a -output ${DIST_DIR}/lib/ios/libz.a
fi

# create flat lib for tvos
if [ -f "install_tvos_arm/${LIB_NAME}/lib/libz.a" ] ; then
lipo -create install_tvos_arm/${LIB_NAME}/lib/libz.a install_tvos_arm64/${LIB_NAME}/lib/libz.a install_tvos_x64/${LIB_NAME}/lib/libz.a -output ${DIST_DIR}/lib/tvos/libz.a
else
lipo -create install_tvos_arm64/${LIB_NAME}/lib/libz.a install_tvos_x64/${LIB_NAME}/lib/libz.a -output ${DIST_DIR}/lib/tvos/libz.a
fi

# check the flat lib
lipo -info ${DIST_DIR}/lib/ios/libz.a

# check the flat lib
lipo -info ${DIST_DIR}/lib/tvos/libz.a

# create fat lib for mac
lipo -create install_osx_arm64/${LIB_NAME}/lib/libz.a install_osx_x64/${LIB_NAME}/lib/libz.a -output ${DIST_DIR}/lib/mac/libz.a

# check the fat lib
lipo -info ${DIST_DIR}/lib/ios/libz.a
create_xcfraemwork zlib ${LIB_NAME} libz.a

# overrite zconf.h with common header
cp -f src/zlib/zconf.h ${DIST_DIR}/include/

0 comments on commit d1efa32

Please sign in to comment.