Browse Source

build: add iOS simulator build variant

osy 4 years ago
parent
commit
1719710cf2
4 changed files with 37 additions and 32 deletions
  1. 6 1
      .github/workflows/build.yml
  2. 6 4
      UTM.xcodeproj/project.pbxproj
  3. 18 13
      scripts/build_dependencies.sh
  4. 7 14
      scripts/build_utm.sh

+ 6 - 1
.github/workflows/build.yml

@@ -20,7 +20,12 @@ jobs:
     strategy:
       matrix:
         arch: [arm64, x86_64]
-        platform: [ios, ios-tci, macos]
+        platform: [ios, ios_simulator, ios-tci, macos]
+        exclude:
+          - arch: x86_64
+            platform: ios
+          - arch: x86_64
+            platform: ios-tci
     steps:
       - name: Checkout
         uses: actions/checkout@v2

+ 6 - 4
UTM.xcodeproj/project.pbxproj

@@ -4383,7 +4383,6 @@
 					"$(PROJECT_DIR)/$(QUOTED_SYSROOT_DIR)/include/spice-1",
 					"$(PROJECT_DIR)/$(QUOTED_SYSROOT_DIR)/include/libusb-1.0",
 				);
-				QUOTED_SYSROOT_DIR = "\"$(SYSROOT_DIR)\"";
 				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
 				LIBRARY_SEARCH_PATHS = (
 					"$(PROJECT_DIR)/$(QUOTED_SYSROOT_DIR)/lib",
@@ -4394,8 +4393,9 @@
 				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
 				MTL_FAST_MATH = YES;
 				ONLY_ACTIVE_ARCH = YES;
+				QUOTED_SYSROOT_DIR = "\"$(SYSROOT_DIR)\"";
 				SDKROOT = iphoneos;
-				SYSROOT_DIR = "sysroot-$(PLATFORM_DISPLAY_NAME)-$(ARCHS:identifier)";
+				SYSROOT_DIR = "sysroot-$(PLATFORM_DISPLAY_NAME:identifier)$(PLATFORM_SUFFIX)-$(ARCHS:identifier)";
 			};
 			name = Debug;
 		};
@@ -4455,7 +4455,6 @@
 					"$(PROJECT_DIR)/$(QUOTED_SYSROOT_DIR)/include/spice-1",
 					"$(PROJECT_DIR)/$(QUOTED_SYSROOT_DIR)/include/libusb-1.0",
 				);
-				QUOTED_SYSROOT_DIR = "\"$(SYSROOT_DIR)\"";
 				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
 				LIBRARY_SEARCH_PATHS = (
 					"$(PROJECT_DIR)/$(QUOTED_SYSROOT_DIR)/lib",
@@ -4465,8 +4464,9 @@
 				MACOSX_DEPLOYMENT_TARGET = 11.0;
 				MTL_ENABLE_DEBUG_INFO = NO;
 				MTL_FAST_MATH = YES;
+				QUOTED_SYSROOT_DIR = "\"$(SYSROOT_DIR)\"";
 				SDKROOT = iphoneos;
-				SYSROOT_DIR = "sysroot-$(PLATFORM_DISPLAY_NAME)-$(ARCHS:identifier)";
+				SYSROOT_DIR = "sysroot-$(PLATFORM_DISPLAY_NAME:identifier)$(PLATFORM_SUFFIX)-$(ARCHS:identifier)";
 				VALIDATE_PRODUCT = YES;
 			};
 			name = Release;
@@ -4576,6 +4576,7 @@
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
+				PLATFORM_SUFFIX = "-TCI";
 				PRODUCT_BUNDLE_IDENTIFIER = "$(PRODUCT_BUNDLE_PREFIX:default=com.utmapp).UTM-SE";
 				PRODUCT_MODULE_NAME = UTM;
 				PRODUCT_NAME = "UTM SE";
@@ -4606,6 +4607,7 @@
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
+				PLATFORM_SUFFIX = "-TCI";
 				PRODUCT_BUNDLE_IDENTIFIER = "$(PRODUCT_BUNDLE_PREFIX:default=com.utmapp).UTM-SE";
 				PRODUCT_MODULE_NAME = UTM;
 				PRODUCT_NAME = "UTM SE";

+ 18 - 13
scripts/build_dependencies.sh

@@ -38,7 +38,7 @@ command -v realpath >/dev/null 2>&1 || realpath() {
 usage () {
     echo "Usage: [VARIABLE...] $(basename $0) [-p platform] [-a architecture] [-q qemu_path] [-d] [-r]"
     echo ""
-    echo "  -p platform      Target platform. Default ios. [ios|ios-tci|macos]"
+    echo "  -p platform      Target platform. Default ios. [ios|ios_simulator|ios-tci|ios_simulator-tci|macos]"
     echo "  -a architecture  Target architecture. Default arm64. [armv7|armv7s|arm64|i386|x86_64]"
     echo "  -q qemu_path     Do not download QEMU, use qemu_path instead."
     echo "  -d, --download   Force re-download of source even if already downloaded."
@@ -441,32 +441,37 @@ CHOST=$CPU-apple-darwin
 export CHOST
 
 case $PLATFORM in
-ios | ios-tci )
+ios* )
     if [ -z "$SDKMINVER" ]; then
         SDKMINVER="$IOS_SDKMINVER"
     fi
-    case $ARCH in
-    arm* )
-        SDK=iphoneos
-        CFLAGS_MINVER="-miphoneos-version-min=$SDKMINVER"
-        ;;
-    i386 | x86_64 )
+    case $PLATFORM in
+    *simulator* )
         SDK=iphonesimulator
         CFLAGS_MINVER="-mios-simulator-version-min=$SDKMINVER"
+        PLATFORM_FAMILY_PREFIX="iOS_Simulator"
+        ;;
+    * )
+        SDK=iphoneos
+        CFLAGS_MINVER="-miphoneos-version-min=$SDKMINVER"
+        PLATFORM_FAMILY_PREFIX="iOS"
         ;;
     esac
     CFLAGS_TARGET=
-    if [ "$PLATFORM" == "ios-tci" ]; then
+    case $PLATFORM in
+    *-tci )
         if [ "$ARCH" == "arm64" ]; then
             TCI_BUILD_FLAGS="--enable-tcg-tcti --target-list=aarch64-softmmu,arm-softmmu,i386-softmmu,ppc-softmmu,ppc64-softmmu,riscv32-softmmu,riscv64-softmmu,x86_64-softmmu"
         else
             TCI_BUILD_FLAGS="--enable-tcg-interpreter"
         fi
-        PLATFORM_FAMILY_NAME="iOS-TCI"
+        PLATFORM_FAMILY_NAME="$PLATFORM_FAMILY_PREFIX-TCI"
         SKIP_USB_BUILD=1
-    else
-        PLATFORM_FAMILY_NAME="iOS"
-    fi
+        ;;
+    * )
+        PLATFORM_FAMILY_NAME="$PLATFORM_FAMILY_PREFIX"
+        ;;
+    esac
     QEMU_PLATFORM_BUILD_FLAGS="--disable-debug-info --enable-shared-lib --disable-hvf --disable-cocoa --disable-curl --disable-slirp-smbd --with-coroutine=libucontext $TCI_BUILD_FLAGS"
     ;;
 macos )

+ 7 - 14
scripts/build_utm.sh

@@ -9,7 +9,7 @@ BASEDIR="$(dirname "$(realpath $0)")"
 usage () {
     echo "Usage: $(basename $0) [-p platform] [-a architecture] [-t targetversion] [-o output]"
     echo ""
-    echo "  -p platform      Target platform. Default ios. [ios|ios-tci|macos]"
+    echo "  -p platform      Target platform. Default ios. [ios|ios_simulator|ios-tci|ios_simulator-tci|macos]"
     echo "  -a architecture  Target architecture. Default arm64. [armv7|armv7s|arm64|i386|x86_64]"
     echo "  -o output        Output archive path. Default is current directory."
     echo ""
@@ -44,10 +44,10 @@ while [ "x$1" != "x" ]; do
 done
 
 case $PLATFORM in
-ios )
+ios | ios_simulator )
     SCHEME="iOS"
     ;;
-ios-tci )
+*-tci )
     SCHEME="iOS-TCI"
     ;;
 macos )
@@ -60,17 +60,10 @@ esac
 
 case $PLATFORM in
 ios | ios-tci )
-    case $ARCH in
-    arm* )
-        SDK=iphoneos
-        ;;
-    i386 | x86_64 )
-        SDK=iphonesimulator
-        ;;
-    * )
-        usage
-        ;;
-    esac
+    SDK=iphoneos
+    ;;
+*simulator* )
+    SDK=iphonesimulator
     ;;
 macos )
     SDK=macosx