Compile macOS builds (32-bit) using osxcross (#924)

* Compile macOS release using osxcross

* Symlink system

* Remove modules bit

* Include YAML dir

* Conditionally build icns

* Merge yaml-cpp branches in cmakelists

* Move toolchain file
This commit is contained in:
Marijn van der Werf 2021-08-12 23:03:25 +02:00 committed by GitHub
parent 22cf266773
commit 9c24c21227
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 94 additions and 27 deletions

View File

@ -94,3 +94,34 @@ jobs:
mkdir build
cd build
cmake ../ ${OPENLOCO_CMAKE_OPTS} && ninja -k0
mac:
runs-on: ubuntu-latest
container: openloco/osxcross:latest
steps:
- uses: actions/checkout@v1
- run: |
ln -s /usr/osxcross/SDK/MacOSX10.13.sdk/System /System
- shell: bash
run: |
curl -L https://github.com/OpenLoco/Dependencies/releases/download/v1.3.0/openloco.dependencies.macos.1.3.0.zip -o dependencies.zip
unzip dependencies.zip -d vcpkg/
- shell: bash
env:
OSXCROSS_HOST: i386-apple-darwin17
TOOLCHAIN1: ${{ github.workspace }}/osxcross/tools/toolchain.cmake
TOOLCHAIN2: ${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake
MACOSX_DEPLOYMENT_TARGET: 10.13
run: |
/usr/osxcross/bin/i386-apple-darwin17-osxcross-conf
eval "$(/usr/osxcross/bin/i386-apple-darwin17-osxcross-conf)"
mkdir build && cd build
export LD_LIBRARY_PATH="/usr/osxcross/lib:$LD_LIBRARY_PATH"
cmake .. "-DCMAKE_TOOLCHAIN_FILE=../cmake/osxcross_toolchain.cmake" -DVCPKG_TARGET_TRIPLET=x86-osx
make -j2
zip -r openloco.zip openloco.app
- name: Archive production artifacts
uses: actions/upload-artifact@v2
with:
name: "OpenLoco-macOS"
path: build/openloco.zip

View File

@ -169,7 +169,7 @@ file(GLOB_RECURSE OLOCO_HEADERS "src/*.h" "src/*.hpp")
if (APPLE)
file(GLOB_RECURSE OLOCO_MM_SOURCES "src/*.mm")
set_source_files_properties(${OLOCO_MM_SOURCES} PROPERTIES COMPILE_FLAGS "-x objective-c++ -fmodules")
set_source_files_properties(${OLOCO_MM_SOURCES} PROPERTIES COMPILE_FLAGS "-x objective-c++")
endif ()
set(PIE_FLAG "-fno-pie")
@ -217,13 +217,8 @@ find_package(SDL2_mixer REQUIRED)
find_package(PNG REQUIRED)
# The hint provided here is targetting Arch Linux, a distro of choice for many contributors
if ("${CMAKE_SYSTEM_NAME}" MATCHES "(Free|Net|Open|DragonFly)BSD")
find_package(yaml-cpp REQUIRED)
include_directories(${YAML_CPP_INCLUDE_DIR})
else()
find_package(yaml-cpp REQUIRED HINTS /usr/lib32/cmake/yaml-cpp)
endif()
find_package(yaml-cpp REQUIRED HINTS /usr/lib32/cmake/yaml-cpp)
include_directories(${YAML_CPP_INCLUDE_DIR})
# Disable optimizations for interop.cpp for all compilers, to allow optimized
# builds without need for -fno-omit-frame-pointer
@ -280,26 +275,30 @@ if (APPLE)
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${OPENLOCO_VERSION_TAG} ${OPENLOCO_BRANCH}")
endif()
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/distribution/macos/AppIcon.iconset DESTINATION ${CMAKE_BINARY_DIR})
set(ICON_TARGET "${CMAKE_BINARY_DIR}/AppIcon.iconset")
set(ICON_OUTPUT "${CMAKE_BINARY_DIR}/AppIcon.icns")
set(SOURCE_ICON_DIR "${CMAKE_CURRENT_SOURCE_DIR}/resources/logo")
set(BUNDLE_RESOURCES "")
add_custom_command(OUTPUT ${ICON_OUTPUT}
COMMAND cp icon_x16.png ${ICON_TARGET}/icon_16x16.png
COMMAND cp icon_x32.png ${ICON_TARGET}/icon_16x16@2x.png
COMMAND cp icon_x32.png ${ICON_TARGET}/icon_32x32.png
COMMAND cp icon_x64.png ${ICON_TARGET}/icon_32x32@2x.png
COMMAND cp icon_x128.png ${ICON_TARGET}/icon_128x128.png
COMMAND cp icon_x256.png ${ICON_TARGET}/icon_128x128@2x.png
COMMAND cp icon_x256.png ${ICON_TARGET}/icon_256x256.png
COMMAND cp icon_x512.png ${ICON_TARGET}/icon_256x256@2x.png
COMMAND cp icon_x512.png ${ICON_TARGET}/icon_512x512.png
COMMAND cp icon_x1024.png ${ICON_TARGET}/icon_512x512@2x.png
COMMAND iconutil -c icns ${ICON_TARGET}
WORKING_DIRECTORY ${SOURCE_ICON_DIR})
find_program(ICONUTIL iconutil)
if (ICONUTIL)
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/distribution/macos/AppIcon.iconset DESTINATION ${CMAKE_BINARY_DIR})
set(ICON_TARGET "${CMAKE_BINARY_DIR}/AppIcon.iconset")
set(ICON_OUTPUT "${CMAKE_BINARY_DIR}/AppIcon.icns")
set(SOURCE_ICON_DIR "${CMAKE_CURRENT_SOURCE_DIR}/resources/logo")
add_custom_command(OUTPUT ${ICON_OUTPUT}
COMMAND cp icon_x16.png ${ICON_TARGET}/icon_16x16.png
COMMAND cp icon_x32.png ${ICON_TARGET}/icon_16x16@2x.png
COMMAND cp icon_x32.png ${ICON_TARGET}/icon_32x32.png
COMMAND cp icon_x64.png ${ICON_TARGET}/icon_32x32@2x.png
COMMAND cp icon_x128.png ${ICON_TARGET}/icon_128x128.png
COMMAND cp icon_x256.png ${ICON_TARGET}/icon_128x128@2x.png
COMMAND cp icon_x256.png ${ICON_TARGET}/icon_256x256.png
COMMAND cp icon_x512.png ${ICON_TARGET}/icon_256x256@2x.png
COMMAND cp icon_x512.png ${ICON_TARGET}/icon_512x512.png
COMMAND cp icon_x1024.png ${ICON_TARGET}/icon_512x512@2x.png
COMMAND ${ICONUTIL} --convert icns --output ${ICON_OUTPUT} ${ICON_TARGET}
WORKING_DIRECTORY ${SOURCE_ICON_DIR})
list(APPEND BUNDLE_RESOURCES ${ICON_OUTPUT})
endif ()
set(BUNDLE_RESOURCES ${ICON_OUTPUT})
list(APPEND BUNDLE_RESOURCES ${CMAKE_CURRENT_SOURCE_DIR}/CHANGELOG.md)
list(APPEND BUNDLE_RESOURCES ${CMAKE_CURRENT_SOURCE_DIR}/CONTRIBUTORS.MD)
set_target_properties(${PROJECT} PROPERTIES RESOURCE "${BUNDLE_RESOURCES}")

View File

@ -0,0 +1,37 @@
message("HELLO FROM TOOLCHAIN")
message("TOOLCHAIN2: $ENV{TOOLCHAIN2}")
macro(osxcross_getconf VAR)
if(NOT ${VAR})
set(${VAR} "$ENV{${VAR}}")
if(${VAR})
set(${VAR} "${${VAR}}" CACHE STRING "${VAR}")
message(STATUS "Found ${VAR}: ${${VAR}}")
else()
message(FATAL_ERROR "Cannot determine \"${VAR}\"")
endif()
endif()
endmacro()
osxcross_getconf(OSXCROSS_HOST)
osxcross_getconf(OSXCROSS_TARGET_DIR)
osxcross_getconf(OSXCROSS_TARGET)
osxcross_getconf(OSXCROSS_SDK)
set(CMAKE_SYSTEM_NAME "Darwin")
string(REGEX REPLACE "-.*" "" CMAKE_SYSTEM_PROCESSOR "${OSXCROSS_HOST}")
# specify the cross compiler
set(CMAKE_C_COMPILER "${OSXCROSS_TARGET_DIR}/bin/${OSXCROSS_HOST}-clang")
set(CMAKE_CXX_COMPILER "${OSXCROSS_TARGET_DIR}/bin/${OSXCROSS_HOST}-clang++")
set(CMAKE_AR "${OSXCROSS_TARGET_DIR}/bin/${OSXCROSS_HOST}-ar" CACHE FILEPATH "ar")
set(CMAKE_RANLIB "${OSXCROSS_TARGET_DIR}/bin/${OSXCROSS_HOST}-ranlib" CACHE FILEPATH "ranlib")
set(CMAKE_INSTALL_NAME_TOOL "${OSXCROSS_TARGET_DIR}/bin/${OSXCROSS_HOST}-install_name_tool" CACHE FILEPATH "install_name_tool")
set(ENV{PKG_CONFIG_LIBDIR} "${OSXCROSS_TARGET_DIR}/macports/pkgs/opt/local/lib/pkgconfig")
set(ENV{PKG_CONFIG_SYSROOT_DIR} "${OSXCROSS_TARGET_DIR}/macports/pkgs")
set(TOOLCHAIN2 "$ENV{TOOLCHAIN2}")
include("${TOOLCHAIN2}")
message("CMAKE_FIND_ROOT_PATH: ${CMAKE_FIND_ROOT_PATH}")

View File

@ -687,7 +687,7 @@ namespace OpenLoco::S5
registerHook(
0x00441FA7,
[](registers& regs) FORCE_ALIGN_ARG_POINTER -> uint8_t {
auto path = fs::u8path(std::string_view(_savePath));
auto path = fs::u8path(std::string(_savePath));
return load(path, regs.eax) ? X86_FLAG_CARRY : 0;
});
}