From 75bee36d3ceb4eb65c98728048d920a42e574046 Mon Sep 17 00:00:00 2001 From: laamaa Date: Sat, 22 Jun 2024 20:57:20 +0300 Subject: [PATCH 1/2] try new things for macos packaging, separate yml files for jobs --- .github/workflows/build-macos.yml | 98 +++++++++++++++++++ .github/workflows/build-ubuntu.yml | 36 +++++++ .../{build.yml => build-windows.yml} | 62 +----------- CMakeLists.txt | 7 +- package/macos/m8c.app/Contents/Info.plist | 54 ---------- 5 files changed, 141 insertions(+), 116 deletions(-) create mode 100644 .github/workflows/build-macos.yml create mode 100644 .github/workflows/build-ubuntu.yml rename .github/workflows/{build.yml => build-windows.yml} (54%) delete mode 100644 package/macos/m8c.app/Contents/Info.plist diff --git a/.github/workflows/build-macos.yml b/.github/workflows/build-macos.yml new file mode 100644 index 0000000..05177e0 --- /dev/null +++ b/.github/workflows/build-macos.yml @@ -0,0 +1,98 @@ +name: m8c macos build + +on: + push: + pull_request: + workflow_dispatch: + +jobs: + + build-macos: + runs-on: macos-12 + env: + SDL_VERSION: 2.30.4 + + steps: + - name: 'Install dependencies' + run: brew install cmake pkg-config autoconf automake libtool + + - name: 'Cache x86_64 files' + id: cache-x86_64-files + uses: actions/cache@v4 + with: + path: '/Users/runner/x86_64' + key: mac-x86_64-files + + - name: 'Cache arm64 files' + id: cache-arm64-files + uses: actions/cache@v4 + with: + path: '/Users/runner/arm64' + key: mac-arm64-files + + - name: 'Download 10.9 SDK for x86_64' + if: steps.cache-x86_64-files.outputs.cache-hit != 'true' + run: | + mkdir -p "$HOME/x86_64" + pushd "$HOME/x86_64" + mkdir SDKs + cd SDKs + curl -L "https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX10.9.sdk.tar.xz" | tar -xvf - + popd + + - name: 'Download 11.0 SDK for arm64' + if: steps.cache-arm64-files.outputs.cache-hit != 'true' + run: | + mkdir -p "$HOME/arm64" + pushd "$HOME/arm64" + mkdir SDKs + cd SDKs + curl -L "https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX11.0.sdk.tar.xz" | tar -xvf - + popd + + - name: 'Checkout' + uses: actions/checkout@v4 + + - name: Set current date as env variable + run: echo "NOW=$(date +'%Y-%m-%d')" >> $GITHUB_ENV + + - name: 'Download SDL2 sources' + run: | + (curl https://www.libsdl.org/release/SDL2-$SDL_VERSION.tar.gz || curl -L https://github.com/libsdl-org/SDL/releases/download/release-$SDL_VERSION/SDL2-$SDL_VERSION.tar.gz) | tar xvf - + + - name: 'Build SDL2' + run: | + (export MACOSX_DEPLOYMENT_TARGET="10.9" && cd SDL2-$SDL_VERSION && mkdir build_x86_64 && cd build_x86_64 && ../configure CPPFLAGS="-mmacosx-version-min=10.7 -DMAC_OS_X_VERSION_MIN_REQUIRED=1070 -isysroot $HOME/x86_64/SDKs/MacOSX10.9.sdk" --prefix="$HOME/x86_64prefix" && make && make install) & + (export MACOSX_DEPLOYMENT_TARGET="11.0" && cd SDL2-$SDL_VERSION && mkdir build_arm64 && cd build_arm64 && ../configure CPPFLAGS="-mmacosx-version-min=11.0 -isysroot $HOME/arm64/SDKs/MacOSX11.0.sdk" CFLAGS="-arch arm64" LDFLAGS="-arch arm64" --host=aarch64-apple-darwin20 --prefix="$HOME/arm64prefix" && make && make install) & + wait + + - name: 'Download libserialport sources' + run: | + curl -L -O https://github.com/sigrokproject/libserialport/archive/refs/heads/master.zip && unzip master.zip && rm master.zip + + - name: 'Build libserialport' + run: | + pushd libserialport-master + autoreconf -I"$HOME/x86_64prefix/share/aclocal" -i + (export MACOSX_DEPLOYMENT_TARGET="10.9" && mkdir build_x86_64 && cd build_x86_64 && ../configure CFLAGS="-mmacosx-version-min=10.7 -DMAC_OS_X_VERSION_MIN_REQUIRED=1070 -isysroot $HOME/x86_64/SDKs/MacOSX10.9.sdk" --prefix="$HOME/x86_64prefix" && make && make install) & + (export MACOSX_DEPLOYMENT_TARGET="11.0" && mkdir build_arm64 && cd build_arm64 && ../configure CFLAGS="-mmacosx-version-min=11.0 -isysroot $HOME/arm64/SDKs/MacOSX11.0.sdk" CFLAGS="-arch arm64" LDFLAGS="-arch arm64" --host=aarch64-apple-darwin20 --prefix="$HOME/arm64prefix" && make && make install) & + wait + popd + + - name: 'Build m8c' + run: | + (export MACOSX_DEPLOYMENT_TARGET="10.9" && export PKG_CONFIG_PATH="$HOME/x86_64prefix/lib/pkgconfig" && export CFLAGS="-mmacosx-version-min=10.7 -DMAC_OS_X_VERSION_MIN_REQUIRED=1070 -isysroot $HOME/x86_64/SDKs/MacOSX10.9.sdk" && mkdir build_x86_64 && cd build_x86_64 && cmake .. && cpack -V) & + (export MACOSX_DEPLOYMENT_TARGET="11.0" && export PKG_CONFIG_PATH="$HOME/arm64prefix/lib/pkgconfig" && mkdir -p build_arm64 && cd build_arm64 && export CFLAGS="-mmacosx-version-min=11.0 -isysroot $HOME/arm64/SDKs/MacOSX11.0.sdk -arch arm64" LDFLAGS="-arch arm64" && cmake .. && cpack -V) & + wait + + - name: 'Build package' + run: | + mv build_arm64/m8c-0.1.1-Darwin.dmg m8c-${{ env.NOW }}-applesilicon.dmg + mv build_x86_64/m8c-0.1.1-Darwin.dmg m8c-${{ env.NOW }}-intel.dmg + - name: 'Upload artifact' + uses: actions/upload-artifact@v4 + with: + name: m8c-${{ env.NOW }}-macos + path: | + m8c-${{ env.NOW }}-applesilicon.dmg + m8c-${{ env.NOW }}-intel.dmg \ No newline at end of file diff --git a/.github/workflows/build-ubuntu.yml b/.github/workflows/build-ubuntu.yml new file mode 100644 index 0000000..a72cafe --- /dev/null +++ b/.github/workflows/build-ubuntu.yml @@ -0,0 +1,36 @@ +name: m8c linux x64 build + +on: + push: + pull_request: + workflow_dispatch: + +jobs: + + build-linux: + runs-on: ubuntu-latest + name: linux-x86_64 + steps: + - name: 'Install dependencies' + run: | + sudo apt-get update + sudo apt-get install --fix-missing build-essential libsdl2-dev libserialport-dev zip + - name: 'Checkout' + uses: actions/checkout@v4 + + - name: Set current date as env variable + run: echo "NOW=$(date +'%Y-%m-%d')" >> $GITHUB_ENV + + - name: 'Build package' + run: | + make + - name: 'Upload artifact' + uses: actions/upload-artifact@v4 + with: + name: m8c-${{ env.NOW }}-linux + path: | + LICENSE + README.md + AUDIOGUIDE.md + m8c + gamecontrollerdb.txt \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build-windows.yml similarity index 54% rename from .github/workflows/build.yml rename to .github/workflows/build-windows.yml index b9bbade..b46e953 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build-windows.yml @@ -1,4 +1,4 @@ -name: m8c build +name: m8c win32/win64 build on: push: @@ -83,62 +83,4 @@ jobs: gamecontrollerdb.txt LICENSE README.md - AUDIOGUIDE.md - - build-linux: - runs-on: ubuntu-latest - name: linux-x86_64 - steps: - - name: 'Install dependencies' - run: | - sudo apt-get update - sudo apt-get install --fix-missing build-essential libsdl2-dev libserialport-dev zip - - name: 'Checkout' - uses: actions/checkout@v4 - - - name: Set current date as env variable - run: echo "NOW=$(date +'%Y-%m-%d')" >> $GITHUB_ENV - - - name: 'Build package' - run: | - make - - name: 'Upload artifact' - uses: actions/upload-artifact@v4 - with: - name: m8c-${{ env.NOW }}-linux - path: | - LICENSE - README.md - AUDIOGUIDE.md - m8c - gamecontrollerdb.txt - - build-macos: - runs-on: macos-latest - - steps: - - name: 'Install dependencies' - run: brew install cmake sdl2 libserialport pkg-config - - - name: 'Checkout' - uses: actions/checkout@v4 - - - name: Set current date as env variable - run: echo "NOW=$(date +'%Y-%m-%d')" >> $GITHUB_ENV - - - name: 'Build package' - run: | - INSTALL_PREFIX=/tmp/ - mkdir build && cd build - cmake .. - cmake --build . - cmake --install . --prefix=$INSTALL_PREFIX - codesign --deep --force --verify --verbose --timestamp --sign - "$INSTALL_PREFIX/m8c.app" "$INSTALL_PREFIX/m8c.app/Contents/Frameworks/libSDL2-2.0.0.dylib" "$INSTALL_PREFIX/m8c.app/Contents/Frameworks/libserialport.0.dylib" - cd .. - cp -r /tmp/m8c.app . - zip -r m8c.zip m8c.app LICENSE README.md AUDIOGUIDE.md gamecontrollerdb.txt - - name: 'Upload artifact' - uses: actions/upload-artifact@v4 - with: - name: m8c-${{ env.NOW }}-macos - path: m8c.zip + AUDIOGUIDE.md \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index f7f5497..e31b5b4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,16 +44,19 @@ if (APPLE) ) set_target_properties(${APP_NAME} PROPERTIES + MACOSX_BUNDLE TRUE MACOSX_BUNDLE_BUNDLE_NAME "m8c" MACOSX_BUNDLE_BUNDLE_VERSION "1" - MACOSX_BUNDLE_GUI_IDENTIFIER "com.laamaa.m8c" - MACOSX_BUNDLE_SHORT_VERSION_STRING "1.0" MACOSX_BUNDLE_COPYRIGHT "Copyright © 2021 laamaa. All rights reserved." + MACOSX_BUNDLE_GUI_IDENTIFIER "fi.laamaa.m8c" + MACOSX_BUNDLE_SHORT_VERSION_STRING "1.7.3" MACOSX_BUNDLE_ICON_FILE "m8c.icns") set(APPS "\${CMAKE_INSTALL_PREFIX}/${APP_NAME}.app") install(CODE "include(BundleUtilities) fixup_bundle(\"${APPS}\" \"\" \"\")") + set(CPACK_GENERATOR "DragNDrop") + include(CPack) endif () diff --git a/package/macos/m8c.app/Contents/Info.plist b/package/macos/m8c.app/Contents/Info.plist deleted file mode 100644 index 0c68d6a..0000000 --- a/package/macos/m8c.app/Contents/Info.plist +++ /dev/null @@ -1,54 +0,0 @@ - - - - - BuildMachineOSBuild - 17G11023 - CFBundleDevelopmentRegion - en - CFBundleIconFile - m8c - CFBundleExecutable - m8c - CFBundleIdentifier - com.laamaa.m8c - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - m8c - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSupportedPlatforms - - MacOSX - - CFBundleVersion - 1 - DTCompiler - com.apple.compilers.llvm.clang.1_0 - DTPlatformBuild - 10B61 - DTPlatformVersion - GM - DTSDKBuild - 18B71 - DTSDKName - macosx10.14 - DTXcode - 1010 - DTXcodeBuild - 10B61 - LSApplicationCategoryType - public.app-category.utilities - LSMinimumSystemVersion - 10.13 - NSHumanReadableCopyright - Copyright © 2021 laamaa. All rights reserved. - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - - From e260ed45d273e754a53b2621d931633d789658b8 Mon Sep 17 00:00:00 2001 From: laamaa Date: Sat, 22 Jun 2024 21:05:35 +0300 Subject: [PATCH 2/2] add missing dir to libserialport build --- .github/workflows/build-macos.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-macos.yml b/.github/workflows/build-macos.yml index 05177e0..4dd00a9 100644 --- a/.github/workflows/build-macos.yml +++ b/.github/workflows/build-macos.yml @@ -73,6 +73,7 @@ jobs: - name: 'Build libserialport' run: | pushd libserialport-master + mkdir autostuff autoreconf -I"$HOME/x86_64prefix/share/aclocal" -i (export MACOSX_DEPLOYMENT_TARGET="10.9" && mkdir build_x86_64 && cd build_x86_64 && ../configure CFLAGS="-mmacosx-version-min=10.7 -DMAC_OS_X_VERSION_MIN_REQUIRED=1070 -isysroot $HOME/x86_64/SDKs/MacOSX10.9.sdk" --prefix="$HOME/x86_64prefix" && make && make install) & (export MACOSX_DEPLOYMENT_TARGET="11.0" && mkdir build_arm64 && cd build_arm64 && ../configure CFLAGS="-mmacosx-version-min=11.0 -isysroot $HOME/arm64/SDKs/MacOSX11.0.sdk" CFLAGS="-arch arm64" LDFLAGS="-arch arm64" --host=aarch64-apple-darwin20 --prefix="$HOME/arm64prefix" && make && make install) &