From 3efae5bff73be9dfc75c3bcd5c98ea26408f1b97 Mon Sep 17 00:00:00 2001 From: adam-bloom Date: Sun, 12 Sep 2021 17:33:01 -0600 Subject: [PATCH] minor changes and point at alpha dependencies --- CMakeLists.txt | 56 +++++++++++++++++++++++++--------- src/openrct2-ui/CMakeLists.txt | 14 +++++++-- 2 files changed, 53 insertions(+), 17 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 90b62508cc..ee40b371fc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,12 +20,27 @@ if (CCache_FOUND) endif (CCache_FOUND) if (APPLE) - set(CMAKE_OSX_ARCHITECTURES "x86_64") - set(CMAKE_OSX_DEPLOYMENT_TARGET "10.14") -endif () + execute_process(COMMAND /usr/bin/uname -m OUTPUT_VARIABLE SYSTEM_MACOS_ARCH OUTPUT_STRIP_TRAILING_WHITESPACE) + if (NOT DEFINED ARCH) + set(ARCH "${SYSTEM_MACOS_ARCH}") + endif () + set(CMAKE_OSX_ARCHITECTURES "${ARCH}" CACHE STRING "") + + if("${ARCH}" MATCHES "^x86_64") + set(CMAKE_OSX_DEPLOYMENT_TARGET "10.14" CACHE STRING "") + elseif("${ARCH}" MATCHES "^arm64") + set(CMAKE_OSX_DEPLOYMENT_TARGET "11.0" CACHE STRING "") + else() + message("Unknown macOS architecture: ${ARCH}. Behavior may be unexpected.") + endif() +endif () project(openrct2 CXX) +if (APPLE) + set(CMAKE_SYSTEM_PROCESSOR "${CMAKE_OSX_ARCHITECTURES}" CACHE STRING "") +endif () + include(cmake/platform.cmake) include(CMakeDependentOption) @@ -110,11 +125,16 @@ if (MACOS_USE_DEPENDENCIES) # if we're building on macOS, then we need the dependencies include(cmake/download.cmake) - set(MACOS_DYLIBS_VERSION "28") - set(MACOS_DYLIBS_ZIPFILE "openrct2-libs-v${MACOS_DYLIBS_VERSION}-x64-macos-dylibs.zip") - set(MACOS_DYLIBS_SHA1 "29e5480376cf4ac5943f114387e32685204c8b78") + # TODO - change back before merging + # set(MACOS_DYLIBS_VERSION "28") + # set(MACOS_DYLIBS_ZIPFILE "openrct2-libs-v${MACOS_DYLIBS_VERSION}-x64-macos-dylibs.zip") + # set(MACOS_DYLIBS_SHA1 "29e5480376cf4ac5943f114387e32685204c8b78") + set(MACOS_DYLIBS_VERSION "29-alpha2") + set(MACOS_DYLIBS_ZIPFILE "openrct2-libs-v${MACOS_DYLIBS_VERSION}-universal-macos-dylibs.zip") + set(MACOS_DYLIBS_SHA1 "bb8899c4120f1add232af7f9ac774ea622e01ad3") set(MACOS_DYLIBS_DIR "${ROOT_DIR}/lib/macos") - set(MACOS_DYLIBS_URL "https://github.com/OpenRCT2/Dependencies/releases/download/v${MACOS_DYLIBS_VERSION}/${MACOS_DYLIBS_ZIPFILE}") + # set(MACOS_DYLIBS_URL "https://github.com/OpenRCT2/Dependencies/releases/download/v${MACOS_DYLIBS_VERSION}/${MACOS_DYLIBS_ZIPFILE}") + set(MACOS_DYLIBS_URL "https://github.com/adam-bloom/Dependencies/releases/download/v${MACOS_DYLIBS_VERSION}/${MACOS_DYLIBS_ZIPFILE}") download_openrct2_zip( ZIP_VERSION ${MACOS_DYLIBS_VERSION} @@ -209,6 +229,10 @@ if (NOT DISABLE_DISCORD_RPC) endif() endif() +# ensure X86 and X86_64 are always initialized +# may be overwritten below +set(X86 0) +set(X86_64 0) # Copied from https://github.com/opencv/opencv/blob/dcdd6af5a856826fe62c95322145731e702e54c5/cmake/OpenCVDetectCXXCompiler.cmake#L63-L70 if(MSVC64 OR MINGW64) set(X86_64 1) @@ -368,14 +392,16 @@ endif () # g2 -add_custom_command( - OUTPUT g2.dat - COMMAND ./openrct2-cli sprite build \"${CMAKE_BINARY_DIR}/g2.dat\" \"${ROOT_DIR}/resources/g2/sprites.json\" - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} -) -add_custom_target(g2 DEPENDS ${PROJECT_NAME} g2.dat) - -project(openrct2 CXX) +if (NOT (MACOS_BUNDLE AND (NOT CMAKE_OSX_ARCHITECTURES MATCHES "${SYSTEM_MACOS_ARCH}"))) + add_custom_command( + OUTPUT g2.dat + COMMAND ./openrct2-cli sprite build \"${CMAKE_BINARY_DIR}/g2.dat\" \"${ROOT_DIR}/resources/g2/sprites.json\" + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + ) + add_custom_target(g2 DEPENDS ${PROJECT_NAME} g2.dat) +else () + message("Skipping g2.dat generation in macOS cross-compile") +endif () # Include tests if (WITH_TESTS) diff --git a/src/openrct2-ui/CMakeLists.txt b/src/openrct2-ui/CMakeLists.txt index ce14758338..953652bb98 100644 --- a/src/openrct2-ui/CMakeLists.txt +++ b/src/openrct2-ui/CMakeLists.txt @@ -35,6 +35,11 @@ file(GLOB_RECURSE OPENRCT2_UI_HEADERS if (APPLE) file(GLOB_RECURSE OPENRCT2_UI_MM_SOURCES "${CMAKE_CURRENT_LIST_DIR}/*.mm") set_source_files_properties(${OPENRCT2_UI_MM_SOURCES} PROPERTIES COMPILE_FLAGS "-x objective-c++ -fmodules") + if ("${CMAKE_OSX_ARCHITECTURES}" MATCHES "arm64") + # cross-compilation workaround for SDL2 + set(SDL_DISABLE_IMMINTRIN_H "-DSDL_DISABLE_IMMINTRIN_H") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SDL_DISABLE_IMMINTRIN_H}") + endif () endif () # Outputs @@ -141,7 +146,6 @@ if(MACOS_BUNDLE) target_sources(${PROJECT_NAME} PUBLIC ${ROOT_DIR}/distribution/readme.txt PUBLIC ${ROOT_DIR}/distribution/changelog.txt - PUBLIC ${CMAKE_BINARY_DIR}/g2.dat PUBLIC ${ROOT_DIR}/resources/mac/openrct2.icns ) @@ -149,10 +153,16 @@ if(MACOS_BUNDLE) set(BUNDLE_RESOURCES ${ROOT_DIR}/distribution/readme.txt ${ROOT_DIR}/distribution/changelog.txt - ${CMAKE_BINARY_DIR}/g2.dat ${ROOT_DIR}/resources/mac/openrct2.icns ) + if (CMAKE_OSX_ARCHITECTURES MATCHES "${SYSTEM_MACOS_ARCH}") + target_sources(${PROJECT_NAME} + PUBLIC ${CMAKE_BINARY_DIR}/g2.dat + ) + list(APPEND BUNDLE_RESOURCES ${CMAKE_BINARY_DIR}/g2.dat) + endif() + if(${OPENRCT2_BRANCH} EQUAL master) set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${OPENRCT2_VERSION_TAG}")