diff --git a/.gitignore b/.gitignore index e1e7e7e..16925a7 100644 --- a/.gitignore +++ b/.gitignore @@ -362,4 +362,6 @@ MigrationBackup/ /buildsrc_* /tools -/cache \ No newline at end of file +/cache + +fat_tmp diff --git a/1k/config.h.in b/1k/config.h.in index d2b9f1d..c9a6a50 100644 --- a/1k/config.h.in +++ b/1k/config.h.in @@ -16,7 +16,11 @@ # include # 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@" diff --git a/1k/dist.sh b/1k/dist.sh index 3011fcd..964c1d3 100755 --- a/1k/dist.sh +++ b/1k/dist.sh @@ -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} @@ -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} @@ -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= @@ -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" @@ -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 diff --git a/1k/fetch.cmake b/1k/fetch.cmake index f648a24..27fd03b 100644 --- a/1k/fetch.cmake +++ b/1k/fetch.cmake @@ -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) diff --git a/src/cares/dist1.sh b/src/cares/dist1.sh index ed7f84d..c67093d 100644 --- a/src/cares/dist1.sh +++ b/src/cares/dist1.sh @@ -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/ diff --git a/src/curl/dist1.sh b/src/curl/dist1.sh index 7a9c538..36de33b 100644 --- a/src/curl/dist1.sh +++ b/src/curl/dist1.sh @@ -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 diff --git a/src/jpeg-turbo/dist1.sh b/src/jpeg-turbo/dist1.sh index 01b37b5..2fc879d 100644 --- a/src/jpeg-turbo/dist1.sh +++ b/src/jpeg-turbo/dist1.sh @@ -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 diff --git a/src/luajit/dist1.sh b/src/luajit/dist1.sh index 12d3d8d..f90fff4 100644 --- a/src/luajit/dist1.sh +++ b/src/luajit/dist1.sh @@ -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 diff --git a/src/openssl/build1.ps1 b/src/openssl/build1.ps1 index f9ef20f..eb54627 100644 --- a/src/openssl/build1.ps1 +++ b/src/openssl/build1.ps1 @@ -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 diff --git a/src/openssl/dist1.sh b/src/openssl/dist1.sh index d9b85d2..9b526a6 100644 --- a/src/openssl/dist1.sh +++ b/src/openssl/dist1.sh @@ -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 diff --git a/src/zlib/dist1.sh b/src/zlib/dist1.sh index d6bc603..2eab3a4 100644 --- a/src/zlib/dist1.sh +++ b/src/zlib/dist1.sh @@ -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/