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:
parent
22cf266773
commit
9c24c21227
|
@ -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
|
||||
|
||||
|
|
|
@ -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}")
|
||||
|
|
|
@ -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}")
|
|
@ -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;
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue