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
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake ../ ${OPENLOCO_CMAKE_OPTS} && ninja -k0
|
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)
|
if (APPLE)
|
||||||
file(GLOB_RECURSE OLOCO_MM_SOURCES "src/*.mm")
|
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 ()
|
endif ()
|
||||||
|
|
||||||
set(PIE_FLAG "-fno-pie")
|
set(PIE_FLAG "-fno-pie")
|
||||||
|
@ -217,13 +217,8 @@ find_package(SDL2_mixer REQUIRED)
|
||||||
|
|
||||||
find_package(PNG REQUIRED)
|
find_package(PNG REQUIRED)
|
||||||
|
|
||||||
# The hint provided here is targetting Arch Linux, a distro of choice for many contributors
|
find_package(yaml-cpp REQUIRED HINTS /usr/lib32/cmake/yaml-cpp)
|
||||||
if ("${CMAKE_SYSTEM_NAME}" MATCHES "(Free|Net|Open|DragonFly)BSD")
|
include_directories(${YAML_CPP_INCLUDE_DIR})
|
||||||
find_package(yaml-cpp REQUIRED)
|
|
||||||
include_directories(${YAML_CPP_INCLUDE_DIR})
|
|
||||||
else()
|
|
||||||
find_package(yaml-cpp REQUIRED HINTS /usr/lib32/cmake/yaml-cpp)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Disable optimizations for interop.cpp for all compilers, to allow optimized
|
# Disable optimizations for interop.cpp for all compilers, to allow optimized
|
||||||
# builds without need for -fno-omit-frame-pointer
|
# 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}")
|
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${OPENLOCO_VERSION_TAG} ${OPENLOCO_BRANCH}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/distribution/macos/AppIcon.iconset DESTINATION ${CMAKE_BINARY_DIR})
|
set(BUNDLE_RESOURCES "")
|
||||||
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}
|
find_program(ICONUTIL iconutil)
|
||||||
COMMAND cp icon_x16.png ${ICON_TARGET}/icon_16x16.png
|
if (ICONUTIL)
|
||||||
COMMAND cp icon_x32.png ${ICON_TARGET}/icon_16x16@2x.png
|
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/distribution/macos/AppIcon.iconset DESTINATION ${CMAKE_BINARY_DIR})
|
||||||
COMMAND cp icon_x32.png ${ICON_TARGET}/icon_32x32.png
|
set(ICON_TARGET "${CMAKE_BINARY_DIR}/AppIcon.iconset")
|
||||||
COMMAND cp icon_x64.png ${ICON_TARGET}/icon_32x32@2x.png
|
set(ICON_OUTPUT "${CMAKE_BINARY_DIR}/AppIcon.icns")
|
||||||
COMMAND cp icon_x128.png ${ICON_TARGET}/icon_128x128.png
|
set(SOURCE_ICON_DIR "${CMAKE_CURRENT_SOURCE_DIR}/resources/logo")
|
||||||
COMMAND cp icon_x256.png ${ICON_TARGET}/icon_128x128@2x.png
|
add_custom_command(OUTPUT ${ICON_OUTPUT}
|
||||||
COMMAND cp icon_x256.png ${ICON_TARGET}/icon_256x256.png
|
COMMAND cp icon_x16.png ${ICON_TARGET}/icon_16x16.png
|
||||||
COMMAND cp icon_x512.png ${ICON_TARGET}/icon_256x256@2x.png
|
COMMAND cp icon_x32.png ${ICON_TARGET}/icon_16x16@2x.png
|
||||||
COMMAND cp icon_x512.png ${ICON_TARGET}/icon_512x512.png
|
COMMAND cp icon_x32.png ${ICON_TARGET}/icon_32x32.png
|
||||||
COMMAND cp icon_x1024.png ${ICON_TARGET}/icon_512x512@2x.png
|
COMMAND cp icon_x64.png ${ICON_TARGET}/icon_32x32@2x.png
|
||||||
COMMAND iconutil -c icns ${ICON_TARGET}
|
COMMAND cp icon_x128.png ${ICON_TARGET}/icon_128x128.png
|
||||||
WORKING_DIRECTORY ${SOURCE_ICON_DIR})
|
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}/CHANGELOG.md)
|
||||||
list(APPEND BUNDLE_RESOURCES ${CMAKE_CURRENT_SOURCE_DIR}/CONTRIBUTORS.MD)
|
list(APPEND BUNDLE_RESOURCES ${CMAKE_CURRENT_SOURCE_DIR}/CONTRIBUTORS.MD)
|
||||||
set_target_properties(${PROJECT} PROPERTIES RESOURCE "${BUNDLE_RESOURCES}")
|
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(
|
registerHook(
|
||||||
0x00441FA7,
|
0x00441FA7,
|
||||||
[](registers& regs) FORCE_ALIGN_ARG_POINTER -> uint8_t {
|
[](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;
|
return load(path, regs.eax) ? X86_FLAG_CARRY : 0;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue