From bfd726ae7b8c51b431ae5678d4661c9d98893999 Mon Sep 17 00:00:00 2001 From: Danila Artyukhov Date: Tue, 4 Jun 2024 14:23:49 +0300 Subject: [PATCH] MacOs app build workflow --- .github/workflows/macos.yml | 62 +++++++++++++++++++++++++++++++++++++ CMakeLists.txt | 12 +++++++ 2 files changed, 74 insertions(+) create mode 100644 .github/workflows/macos.yml diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml new file mode 100644 index 00000000..89968a25 --- /dev/null +++ b/.github/workflows/macos.yml @@ -0,0 +1,62 @@ +name: MacOs DMG + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + build-dmg: + runs-on: macos-latest + + steps: + - uses: actions/checkout@v2 + with: + submodules: 'true' + + - name: Install dependencies from brew + run: | + brew install glfw3 glew libpng openal-soft luajit libvorbis + + - name: Install specific version of GLM + run: | + curl -O https://raw.githubusercontent.com/Homebrew/homebrew-core/5c7655a866646aa4b857c002b8ae5465b9d26f65/Formula/g/glm.rb + brew install --formula glm.rb + + - name: Configure + run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DVOXELENGINE_BUILD_APPDIR=1 + + - name: Build + run: cmake --build build -t install + + - name: Create macOS app structure + run: | + mkdir -p VoxelEngine.app/Contents/MacOS + mkdir -p VoxelEngine.app/Contents/Resources + cp build/VoxelEngine VoxelEngine.app/Contents/MacOS/ + cp -r res VoxelEngine.app/Contents/Resources/ + echo "" > VoxelEngine.app/Contents/Info.plist + echo "" >> VoxelEngine.app/Contents/Info.plist + echo "" >> VoxelEngine.app/Contents/Info.plist + echo "" >> VoxelEngine.app/Contents/Info.plist + echo " CFBundleExecutable" >> VoxelEngine.app/Contents/Info.plist + echo " VoxelEngine" >> VoxelEngine.app/Contents/Info.plist + echo " CFBundleIdentifier" >> VoxelEngine.app/Contents/Info.plist + echo " com.yourcompany.VoxelEngine" >> VoxelEngine.app/Contents/Info.plist + echo " CFBundleName" >> VoxelEngine.app/Contents/Info.plist + echo " VoxelEngine" >> VoxelEngine.app/Contents/Info.plist + echo " CFBundleVersion" >> VoxelEngine.app/Contents/Info.plist + echo " 1.0" >> VoxelEngine.app/Contents/Info.plist + echo "" >> VoxelEngine.app/Contents/Info.plist + echo "" >> VoxelEngine.app/Contents/Info.plist + + - name: Create DMG + run: | + hdiutil create VoxelEngine.dmg -volname "VoxelEngine" -srcfolder VoxelEngine.app -ov -format UDZO + + - name: Upload DMG + uses: actions/upload-artifact@v2 + with: + name: VoxelEngineMacOs + path: VoxelEngine.dmg diff --git a/CMakeLists.txt b/CMakeLists.txt index 8340b928..2ec2faab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -101,6 +101,18 @@ if (WIN32) set(VORBISLIB vorbis vorbisfile) # not tested add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libs/glfw) endif() +elseif(APPLE) + find_package(PkgConfig) + pkg_check_modules(LUAJIT REQUIRED luajit) + pkg_check_modules(VORBIS REQUIRED vorbis vorbisfile) + set(LUA_INCLUDE_DIR "/opt/homebrew/include/luajit-2.1") + set(LUA_LIBRARIES "/opt/homebrew/lib/libluajit-5.1.a") + message(STATUS "LUA Libraries: ${LUA_LIBRARIES}") + message(STATUS "LUA Include Dir: ${LUA_INCLUDE_DIR}") + find_package(PNG REQUIRED) + set(PNGLIB PNG::PNG) + set(VORBISLIB ${VORBIS_LDFLAGS}) + message(STATUS "Vorbis Lib: ${VORBIS_LDFLAGS}") else() find_package(PkgConfig) pkg_check_modules(LUAJIT REQUIRED luajit)