Enable build for Apple Silicon Macs (#356)
This commit is contained in:
Родитель
1676faec93
Коммит
3d74f1a68f
|
@ -206,6 +206,12 @@ We also produce msix-jni.jar which acts as a helper to get the languages from th
|
||||||
The default level for the SDK level is 24 because we use the [Configuration class](https://developer.android.com/reference/android/content/res/Configuration) and, depending on the version of the device, we either use the locale attribute (deprecated as of API level 24) or getLocales.
|
The default level for the SDK level is 24 because we use the [Configuration class](https://developer.android.com/reference/android/content/res/Configuration) and, depending on the version of the device, we either use the locale attribute (deprecated as of API level 24) or getLocales.
|
||||||
We recommend using the [makeaosp](makeaosp) script to build for Android on non-Windows devices.
|
We recommend using the [makeaosp](makeaosp) script to build for Android on non-Windows devices.
|
||||||
|
|
||||||
|
## Apple Silicon
|
||||||
|
To enable building the MSIX SDK to run on Apple Silicon do the following:
|
||||||
|
1. Install Xcode beta 12 build 12A8161k (https://developer.apple.com/download/)
|
||||||
|
2. Change active developer directory `sudo xcode-select -switch /Applications/Xcode-beta.app/Contents/Developer`
|
||||||
|
3. Build using makemac.sh `./makemac.sh -arch arm64 --skip-tests`
|
||||||
|
|
||||||
## Testing
|
## Testing
|
||||||
msixtest uses Catch2 as testing framework. msixtest is either an executable or a shared library, depending on the platform. It has a single entrypoint msixtest_main that takes argc and argv, as main, plus the path were the test packages are located. The shared library is used for our mobile test apps, while non-mobile just forwards the arguments to msixtest_main. It requires msix.dll to be build with "Release" or "RelWithDebInfo" CMake switch.
|
msixtest uses Catch2 as testing framework. msixtest is either an executable or a shared library, depending on the platform. It has a single entrypoint msixtest_main that takes argc and argv, as main, plus the path were the test packages are located. The shared library is used for our mobile test apps, while non-mobile just forwards the arguments to msixtest_main. It requires msix.dll to be build with "Release" or "RelWithDebInfo" CMake switch.
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
# This is a check to fail arm64 build if the Xcode version is not adequate.
|
||||||
|
|
||||||
|
# Get xcode version and build.
|
||||||
|
execute_process(COMMAND xcodebuild -version OUTPUT_VARIABLE XCODE_OUTPUT ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
string(REGEX MATCH "Xcode [0-9\\.]+" XCODE_VERSION "${XCODE_OUTPUT}")
|
||||||
|
string(REGEX REPLACE "Xcode ([0-9\\.]+)" "\\1" XCODE_VERSION "${XCODE_VERSION}")
|
||||||
|
string(REGEX MATCH "Build version [a-zA-Z0-9]+" XCODE_BUILD "${XCODE_OUTPUT}")
|
||||||
|
string(REGEX REPLACE "Build version ([a-zA-Z0-9]+)" "\\1" XCODE_BUILD "${XCODE_BUILD}")
|
||||||
|
message(STATUS "Using Xcode version: ${XCODE_VERSION}")
|
||||||
|
message(STATUS "Using Xcode build: ${XCODE_BUILD}")
|
||||||
|
|
||||||
|
if (CMAKE_OSX_ARCHITECTURES MATCHES "arm64")
|
||||||
|
# arm64 is only supported for version xcode 12 and higher
|
||||||
|
if (XCODE_VERSION LESS 12.0)
|
||||||
|
# If you see this and you have Xcode-beta 12 do:
|
||||||
|
# sudo xcode-select -switch /Applications/Xcode-beta.app/Contents/Developer
|
||||||
|
message(FATAL_ERROR "arm64 is only supported on Xcode 12 12A8161k at this time. Found version ${XCODE_VERSION}. To enable arm64 builds please download Xcode beta 12 build 12A8161k and run `sudo xcode-select -switch /Applications/Xcode-beta.app/Contents/Developer`")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# WARNING, this will be false once Xcode 12 is release. Currently there are two
|
||||||
|
# Xcode-beta 12, build 12A8161k and build 12A6163b. The latter does NOT support arm64
|
||||||
|
if (NOT XCODE_BUILD MATCHES "12A8161k")
|
||||||
|
message(FATAL_ERROR "arm64 is only supported on Xcode 12 12A8161k at this time. Found build ${XCODE_BUILD}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
endif()
|
|
@ -9,6 +9,7 @@ validationParser=off
|
||||||
pack=off
|
pack=off
|
||||||
samples=on
|
samples=on
|
||||||
tests=on
|
tests=on
|
||||||
|
arch=x86_64
|
||||||
|
|
||||||
usage()
|
usage()
|
||||||
{
|
{
|
||||||
|
@ -22,6 +23,7 @@ usage()
|
||||||
echo $'\t' "--pack Include packaging features. Uses MSIX SDK Zlib and Xerces with validation parser on."
|
echo $'\t' "--pack Include packaging features. Uses MSIX SDK Zlib and Xerces with validation parser on."
|
||||||
echo $'\t' "--skip-samples Skip building samples."
|
echo $'\t' "--skip-samples Skip building samples."
|
||||||
echo $'\t' "--skip-tests Skip building tests."
|
echo $'\t' "--skip-tests Skip building tests."
|
||||||
|
echo $'\t' "-arch arch Architecture. Default x86_64"
|
||||||
}
|
}
|
||||||
|
|
||||||
printsetup()
|
printsetup()
|
||||||
|
@ -68,6 +70,9 @@ while [ "$1" != "" ]; do
|
||||||
-h ) usage
|
-h ) usage
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
|
-arch ) shift
|
||||||
|
arch=$1
|
||||||
|
;;
|
||||||
* ) usage
|
* ) usage
|
||||||
exit 1
|
exit 1
|
||||||
esac
|
esac
|
||||||
|
@ -83,7 +88,7 @@ find . -name *msix* -d | xargs rm -r
|
||||||
|
|
||||||
echo "cmake -DCMAKE_BUILD_TYPE="$build $zlib "-DSKIP_BUNDLES="$bundle
|
echo "cmake -DCMAKE_BUILD_TYPE="$build $zlib "-DSKIP_BUNDLES="$bundle
|
||||||
echo "-DXML_PARSER="$xmlparser "-DASAN="$addressSanitizer "-DUSE_VALIDATION_PARSER="$validationParser
|
echo "-DXML_PARSER="$xmlparser "-DASAN="$addressSanitizer "-DUSE_VALIDATION_PARSER="$validationParser
|
||||||
echo "-DMSIX_PACK="$pack "-DMSIX_SAMPLES="$samples "-DMSIX_TESTS="$tests "-DMACOS=on .."
|
echo "-DMSIX_PACK="$pack "-DMSIX_SAMPLES="$samples "-DMSIX_TESTS="$tests "-DCMAKE_OSX_ARCHITECTURES="$arch "-DMACOS=on .."
|
||||||
cmake -DCMAKE_BUILD_TYPE=$build \
|
cmake -DCMAKE_BUILD_TYPE=$build \
|
||||||
-DXML_PARSER=$xmlparser \
|
-DXML_PARSER=$xmlparser \
|
||||||
-DSKIP_BUNDLES=$bundle \
|
-DSKIP_BUNDLES=$bundle \
|
||||||
|
@ -92,5 +97,7 @@ cmake -DCMAKE_BUILD_TYPE=$build \
|
||||||
-DMSIX_PACK=$pack \
|
-DMSIX_PACK=$pack \
|
||||||
-DMSIX_SAMPLES=$samples \
|
-DMSIX_SAMPLES=$samples \
|
||||||
-DMSIX_TESTS=$tests \
|
-DMSIX_TESTS=$tests \
|
||||||
|
-DCMAKE_OSX_ARCHITECTURES=$arch \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=../cmake/macos.cmake \
|
||||||
$zlib -DMACOS=on ..
|
$zlib -DMACOS=on ..
|
||||||
make
|
make
|
||||||
|
|
Загрузка…
Ссылка в новой задаче