Skip to content

Commit

Permalink
SKIA: Add iOS simulator build
Browse files Browse the repository at this point in the history
  • Loading branch information
olilarkin committed Nov 10, 2024
1 parent 69197cd commit fe7c49f
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 23 deletions.
81 changes: 59 additions & 22 deletions Dependencies/IGraphics/build-skia-ios.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,14 @@ DEPOT_TOOLS_PATH="$BASE_DIR/tmp/depot_tools"
SKIA_SRC_DIR="$BASE_DIR/src/skia"
TMP_DIR="$BASE_DIR/tmp/skia"
IOS_LIB_DIR="$BASE_DIR/ios/lib"
IOS_SIM_LIB_DIR="$BASE_DIR/ios_sim/lib"
MIN_IOS_VERSION="14"

ERROR_MSG="Error: Please provide either 'arm64' or 'x86_64' as a single argument."
ERROR_MSG="Usage: $0 [-simulator] <arm64|x86_64>
Options:
-simulator Build for iOS simulator
Arguments:
Architecture: arm64 or x86_64"

LIBS=(
"libskia.a"
Expand Down Expand Up @@ -41,8 +47,17 @@ sync_deps() {
generate_build_files() {
local arch=$1
local cpu_type=$2
local is_simulator=$3
local output_dir="$TMP_DIR/$arch"

local simulator_arg=""
local min_version_flag="-miphoneos-version-min=$MIN_IOS_VERSION"

if [ "$is_simulator" = true ]; then
simulator_arg="ios_use_simulator = true"
min_version_flag="-mios-simulator-version-min=$MIN_IOS_VERSION"
fi

./bin/gn gen "$output_dir" --args="
is_official_build = true
skia_use_system_libjpeg_turbo = false
Expand All @@ -68,9 +83,10 @@ generate_build_files() {
cxx = \"clang++\"
target_os = \"ios\"
target_cpu = \"$cpu_type\"
extra_cflags = [\"-miphoneos-version-min=13\", \"-I../../../src/skia/third_party/externals/expat/lib\"]
extra_cflags = [\"$min_version_flag\", \"-I../../../src/skia/third_party/externals/expat/lib\"]
extra_cflags_c = [\"-Wno-error\"]
extra_asmflags = [\"-fembed-bitcode\"]
$simulator_arg
"
}

Expand All @@ -88,8 +104,15 @@ build_skia() {

move_libs() {
local arch=$1
local is_simulator=$2
local src_dir="$TMP_DIR/$arch"
local dest_dir="$IOS_LIB_DIR/$arch"
local dest_dir

if [ "$is_simulator" = true ]; then
dest_dir="$IOS_SIM_LIB_DIR/$arch"
else
dest_dir="$IOS_LIB_DIR/$arch"
fi

mkdir -p "$dest_dir"

Expand All @@ -104,33 +127,47 @@ move_libs() {
}

main() {
if [ "$#" -ne 1 ]; then
local is_simulator=false

# Parse command line options
while [[ $# -gt 0 ]]; do
case "$1" in
-simulator)
is_simulator=true
shift
;;
arm64|x86_64)
ARCH="$1"
case "$1" in
"x86_64") CPU_TYPE="x64" ;;
"arm64") CPU_TYPE="arm64" ;;
esac
shift
;;
*)
echo "$ERROR_MSG"
exit 1
;;
esac
done

# Verify we got an architecture
if [ -z "$ARCH" ]; then
echo "$ERROR_MSG"
exit 1
fi

case "$1" in
"x86_64")
ARCH="x86_64"
CPU_TYPE="x64"
;;
"arm64")
ARCH="arm64"
CPU_TYPE="arm64"
;;
*)
echo "$ERROR_MSG"
exit 1
;;
esac

setup_depot_tools
sync_deps
generate_build_files "$ARCH" "$CPU_TYPE"
generate_build_files "$ARCH" "$CPU_TYPE" "$is_simulator"
build_skia "$ARCH"
move_libs "$ARCH"
move_libs "$ARCH" "$is_simulator"

echo "Build completed successfully for $ARCH"
if [ "$is_simulator" = true ]; then
echo "Build completed successfully for $ARCH (iOS Simulator)"
else
echo "Build completed successfully for $ARCH (iOS Device)"
fi
}

main "$@"
10 changes: 10 additions & 0 deletions Scripts/ci/build_deps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,16 @@ jobs:
./build-skia-ios.sh arm64
displayName: Build Skia (arm64)
- bash: |
cd ./Dependencies/IGraphics
./build-skia-ios.sh x86_64 -simulator
displayName: Build Skia (x86_64 simulator)
- bash: |
cd ./Dependencies/IGraphics
./build-skia-ios.sh arm64 -simulator
displayName: Build Skia (arm64 simulator)
- bash: |
cd ./Dependencies/Build
./../IGraphics/package-deps-src.sh
Expand Down
5 changes: 4 additions & 1 deletion common-ios.xcconfig
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,10 @@ JSON_INC_PATH = $(DEPS_PATH)/Extras/nlohmann
// this build setting is included at the xcode project level, since we need all these include paths
IPLUG_INC_PATHS = $(PROJECT_ROOT) $(WDL_PATH) $(IPLUG_PATH) $(EXTRAS_INC_PATHS) $(AUv3_PATH) $(JSON_INC_PATH)

BUILT_LIBS_PATH = $(DEPS_PATH)/Build/ios
BUILT_LIBS_PATH_iphoneos = $(DEPS_PATH)/Build/ios
BUILT_LIBS_PATH_iphonesimulator = $(DEPS_PATH)/Build/ios_sim
BUILT_LIBS_PATH = $(BUILT_LIBS_PATH_$(PLATFORM_NAME))

BUILT_LIBS_INC_PATH = $(BUILT_LIBS_PATH)/include
BUILT_LIBS_LIB_PATH = $(BUILT_LIBS_PATH)/lib/$CURRENT_ARCH

Expand Down

0 comments on commit fe7c49f

Please sign in to comment.