Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add xcframework support #23

Merged
merged 9 commits into from
Apr 2, 2024
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
49 changes: 48 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,30 @@ jobs:
with:
path: ./${{ env.install_path }}/**
name: ${{ env.install_path }}
ios-arm64-sim:
# The type of runner that the job will run on
runs-on: macos-12
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v4
- name: Setup Xcode version
uses: maxim-lobanov/setup-xcode@v1
id: setup-xcode
with:
xcode-version: '${{ env.GH_XCODE_VER }}'
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Build
shell: pwsh
run: ./build.ps1 -p ios -a arm64 -sdk simulator
- name: Upload
uses: actions/upload-artifact@v4
with:
path: ./${{ env.install_path }}/**
name: ${{ env.install_path }}

tvos:
# The type of runner that the job will run on
Expand Down Expand Up @@ -167,7 +191,30 @@ jobs:
with:
path: ./${{ env.install_path }}/**
name: ${{ env.install_path }}

tvos-arm64-sim:
# The type of runner that the job will run on
runs-on: macos-12
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v4
- name: Setup Xcode version
uses: maxim-lobanov/setup-xcode@v1
id: setup-xcode
with:
xcode-version: '${{ env.GH_XCODE_VER }}'
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Build
shell: pwsh
run: ./build.ps1 -p tvos -a arm64 -sdk simulator
- name: Upload
uses: actions/upload-artifact@v4
with:
path: ./${{ env.install_path }}/**
name: ${{ env.install_path }}
android:
# The type of runner that the job will run on
runs-on: ubuntu-latest
Expand Down
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
5 changes: 2 additions & 3 deletions 1k/build.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -230,8 +230,7 @@ $options = @{
xc = @()
xb = @()
j = -1
sdk = $null
env = ''
sdk = ''
dll = $false
}

Expand Down Expand Up @@ -1765,7 +1764,7 @@ if (!$setupOnly) {
}
elseif ($Global:is_ios) {
$gn_buildargs_overrides += 'target_os=\"ios\"'
if ($TARGET_CPU -eq 'x64' -or $Global:is_ios_sim) {
if ($Global:is_ios_sim) {
$gn_buildargs_overrides += 'target_environment=\"simulator\"'
}
}
Expand Down
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
14 changes: 9 additions & 5 deletions 1k/fetch.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ function(_1kfetch_init)
string(REPLACE "#" ";" _1kdist_url ${_1kdist_url})
list(GET _1kdist_url 0 _1kdist_base_url)
list(GET _1kdist_url 1 _1kdist_ver)
set(_1kdist_base_url "${_1kdist_base_url}/v${_1kdist_ver}" PARENT_SCOPE)
set(_1kdist_base_url "${_1kdist_base_url}/${_1kdist_ver}" PARENT_SCOPE)
set(_1kdist_ver ${_1kdist_ver} PARENT_SCOPE)
endfunction()

Expand All @@ -36,7 +36,7 @@ endfunction()
function(_1kfetch_dist package_name)
set(_prebuilt_root ${CMAKE_CURRENT_LIST_DIR}/_x)
if(NOT IS_DIRECTORY ${_prebuilt_root})
set (package_store "${_1kfetch_cache_dir}/1kdist/v${_1kdist_ver}/${package_name}.zip")
set (package_store "${_1kfetch_cache_dir}/1kdist/${_1kdist_ver}/${package_name}.zip")
if (NOT EXISTS ${package_store})
set (package_url "${_1kdist_base_url}/${package_name}.zip")
message(AUTHOR_WARNING "Downloading ${package_url}")
Expand All @@ -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
7 changes: 3 additions & 4 deletions 1k/fetch.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ function fetch_repo($url, $name, $dest, $ext) {
}
}
catch {
Remove-Item $out -Force
Remove-Item $out -Force
throw "fetch.ps1: extract $out failed, try again"
}

Expand Down Expand Up @@ -175,8 +175,8 @@ if (!$revision) {
}
if ($is_git_repo) {
$old_rev_hash = $(git -C $lib_src rev-parse HEAD)

$cur_rev_hash = $(git -C $lib_src rev-parse --verify --quiet "$revision^{}")

if (!$cur_rev_hash) {
git -C $lib_src fetch
$cur_rev_hash = $(git -C $lib_src rev-parse --verify --quiet "$revision^{}")
Expand Down Expand Up @@ -224,8 +224,7 @@ if (Test-Path (Join-Path $lib_src '.gn') -PathType Leaf) {
# the repo use google gn build system manage deps and build
Push-Location $lib_src
# angle (A GLES native implementation by google)
if (Test-Path 'scripts/bootstrap.py' -PathType Leaf)
{
if (Test-Path 'scripts/bootstrap.py' -PathType Leaf) {
python scripts/bootstrap.py
}
# darwin (A WebGPU native implementation by google)
Expand Down
2 changes: 1 addition & 1 deletion 1k/ios.cmake
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#
# The minimal ios toolchain file: https://github.com/yasio/yasio/blob/dev/cmake/ios.cmake
# The minimal ios toolchain file: https://github.com/simdsoft/1kiss/blob/dev/1k/ios.cmake
# version: 4.1.3
#
# The supported params:
Expand Down
2 changes: 1 addition & 1 deletion build.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ $install_path = "install_${target_os}"
if ($target_cpu -ne '*') {
$install_path = "${install_path}_$target_cpu"
}
if($target_environment.StartsWith('sim')) { $install_path += '_sim' }
if($sdk.StartsWith('sim')) { $install_path += '_sim' }
$install_root = Join-Path $_1k_root $install_path

# Create buildsrc tmp dir for build libs
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
2 changes: 1 addition & 1 deletion src/luajit/build.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
repo: https://github.com/LuaJIT/LuaJIT.git
repo: https://github.com/luajit/luajit.git
ver: 2.1
tag_prefix: v
tag_dot2ul: false
Expand Down
Loading
Loading