From d89d1e6d9897838c7e7bde989605b214f9709486 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jefferson=20Gonz=C3=A1lez?= Date: Sun, 30 Oct 2022 11:48:20 -0400 Subject: [PATCH] ci release: add macos arm64 support (#1179) --- .github/workflows/release.yml | 13 ++++++++----- resources/macos/Info.plist.in | 4 ++-- resources/macos/macos_arm64.conf | 24 ++++++++++++++++++++++++ scripts/build.sh | 8 +++++++- scripts/common.sh | 2 ++ 5 files changed, 43 insertions(+), 8 deletions(-) create mode 100644 resources/macos/macos_arm64.conf diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 90762939..5e572b17 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -96,6 +96,9 @@ jobs: name: macOS (x86_64) needs: release runs-on: macos-11 + strategy: + matrix: + arch: [x86_64, arm64] env: CC: clang CXX: clang++ @@ -110,8 +113,8 @@ jobs: run: | echo "$HOME/.local/bin" >> "$GITHUB_PATH" echo "INSTALL_REF=${{ needs.release.outputs.version }}" >> "$GITHUB_ENV" - echo "INSTALL_NAME=lite-xl-${{ needs.release.outputs.version }}-macos-$(uname -m)" >> "$GITHUB_ENV" - echo "INSTALL_NAME_ADDONS=lite-xl-${{ needs.release.outputs.version }}-addons-macos-$(uname -m)" >> "$GITHUB_ENV" + echo "INSTALL_NAME=lite-xl-${{ needs.release.outputs.version }}-macos-${{ matrix.arch }}" >> "$GITHUB_ENV" + echo "INSTALL_NAME_ADDONS=lite-xl-${{ needs.release.outputs.version }}-addons-macos-${{ matrix.arch }}" >> "$GITHUB_ENV" - uses: actions/checkout@v2 - name: Python Setup uses: actions/setup-python@v2 @@ -122,11 +125,11 @@ jobs: - name: Build run: | bash --version - bash scripts/build.sh --bundle --debug --forcefallback --release + CROSS_ARCH=${{ matrix.arch }} bash scripts/build.sh --bundle --debug --forcefallback --release - name: Create DMG Image run: | - bash scripts/package.sh --version ${INSTALL_REF} --debug --dmg --release - bash scripts/package.sh --version ${INSTALL_REF} --debug --addons --dmg --release + CROSS_ARCH=${{ matrix.arch }} bash scripts/package.sh --version ${INSTALL_REF} --debug --dmg --release + CROSS_ARCH=${{ matrix.arch }} bash scripts/package.sh --version ${INSTALL_REF} --debug --addons --dmg --release - name: Upload Files uses: softprops/action-gh-release@v1 with: diff --git a/resources/macos/Info.plist.in b/resources/macos/Info.plist.in index 2cb6208e..6fe6b751 100644 --- a/resources/macos/Info.plist.in +++ b/resources/macos/Info.plist.in @@ -27,7 +27,7 @@ CFBundleShortVersionString @PROJECT_VERSION@ NSHumanReadableCopyright - © 2019-2021 Francesco Abbate + © 2019-2022 Lite XL Team - + diff --git a/resources/macos/macos_arm64.conf b/resources/macos/macos_arm64.conf new file mode 100644 index 00000000..b1371b3b --- /dev/null +++ b/resources/macos/macos_arm64.conf @@ -0,0 +1,24 @@ +[host_machine] +system = 'darwin' +cpu_family = 'aarch64' +cpu = 'arm64' +endian = 'little' + +[binaries] +c = ['clang'] +cpp = ['clang++'] +objc = ['clang'] +objcpp = ['clang++'] +ar = ['ar'] +strip = ['strip'] +pkgconfig = ['pkg-config'] + +[built-in options] +c_args = ['-arch', 'arm64'] +cpp_args = ['-stdlib=libc++', '-arch', 'arm64'] +objc_args = ['-arch', 'arm64'] +objcpp_args = ['-stdlib=libc++', '-arch', 'arm64'] +c_link_args = ['-arch', 'arm64'] +cpp_link_args = ['-arch', 'arm64'] +objc_link_args = ['-arch', 'arm64'] +objcpp_link_args = ['-arch', 'arm64'] diff --git a/scripts/build.sh b/scripts/build.sh index 9f8e6567..0acf45ac 100644 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -31,6 +31,7 @@ show_help() { main() { local platform="$(get_platform_name)" + local arch="$(get_platform_arch)" local build_dir="$(get_default_build_dir)" local build_type="debug" local prefix=/ @@ -106,11 +107,16 @@ main() { portable="" fi + if [[ $platform == "macos" && $arch == "arm64" ]]; then + cross_file="--cross-file resources/macos/macos_arm64.conf" + fi + rm -rf "${build_dir}" CFLAGS=$CFLAGS LDFLAGS=$LDFLAGS meson setup \ --buildtype=$build_type \ --prefix "$prefix" \ + $cross_file \ $force_fallback \ $bundle \ $portable \ @@ -124,7 +130,7 @@ main() { meson compile -C "${build_dir}" - if [ ! -z ${pgo+x} ]; then + if [[ $pgo != "" ]]; then cp -r data "${build_dir}/src" "${build_dir}/src/lite-xl" meson configure -Db_pgo=use "${build_dir}" diff --git a/scripts/common.sh b/scripts/common.sh index f598e45c..dab1acfa 100644 --- a/scripts/common.sh +++ b/scripts/common.sh @@ -81,6 +81,8 @@ get_platform_arch() { else arch=i686 fi + elif [[ $CROSS_ARCH != "" ]]; then + arch=$CROSS_ARCH fi echo "$arch" }