From 2b5fd7201f7c8cb5a05f08048096c3fcd2d8b4c2 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Sat, 12 Feb 2022 19:58:51 -0500 Subject: [PATCH] Bring iOS CMake back up to snuff --- CMakeLists.txt | 4 +- engine/gfx/CMakeLists.txt | 4 - platforms/ios/CMakeLists.txt | 155 ++++++++++++++++------------------- 3 files changed, 73 insertions(+), 90 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2024d4d..4c24ca0 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,7 +34,7 @@ endif() if(${CMAKE_SYSTEM_NAME} STREQUAL "iOS") message("iOS build detected!") - set(ENABLE_METAL TRUE) + set(ENABLE_VULKAN TRUE) set(ENABLE_DARWIN TRUE) set(ENABLE_IOS TRUE) endif() @@ -42,7 +42,7 @@ endif() if(${CMAKE_SYSTEM_NAME} STREQUAL "tvOS") message("tvOS build detected!") - set(ENABLE_METAL TRUE) + set(ENABLE_VULKAN TRUE) set(ENABLE_DARWIN TRUE) set(ENABLE_TVOS TRUE) endif() diff --git a/engine/gfx/CMakeLists.txt b/engine/gfx/CMakeLists.txt index 2057604..d767f57 100755 --- a/engine/gfx/CMakeLists.txt +++ b/engine/gfx/CMakeLists.txt @@ -16,10 +16,6 @@ add_custom_target(GFXInterface SOURCES public/gfx_sampler.hpp) set_target_properties(GFXInterface PROPERTIES CMAKE_FOLDER "GFX") -if(ENABLE_METAL) - add_subdirectory(metal) -endif() - if(ENABLE_VULKAN) add_subdirectory(vulkan) endif() diff --git a/platforms/ios/CMakeLists.txt b/platforms/ios/CMakeLists.txt index fd1d44d..6b4f524 100644 --- a/platforms/ios/CMakeLists.txt +++ b/platforms/ios/CMakeLists.txt @@ -3,24 +3,23 @@ cmake_minimum_required (VERSION 3.7) include(BundleUtilities) set(APP_HEADER_FILES - ${PROJECT_SOURCE_DIR}/platforms/ios/AppDelegate.h + ${CMAKE_CURRENT_SOURCE_DIR}/AppDelegate.h ) set(APP_SOURCE_FILES - ${PROJECT_SOURCE_DIR}/platforms/ios/AppDelegate.m - ${PROJECT_SOURCE_DIR}/platforms/ios/main.m + ${CMAKE_CURRENT_SOURCE_DIR}/AppDelegate.m + ${CMAKE_CURRENT_SOURCE_DIR}/main.m ) set(RESOURCES - ${PROJECT_SOURCE_DIR}/platforms/ios/Main.storyboard - ${PROJECT_SOURCE_DIR}/platforms/ios/LaunchScreen.storyboard - ${CMAKE_SOURCE_DIR}/data - ${CMAKE_BINARY_DIR}/shaders + ${CMAKE_CURRENT_SOURCE_DIR}/Main.storyboard + ${CMAKE_CURRENT_SOURCE_DIR}/LaunchScreen.storyboard + ${CMAKE_SOURCE_DIR}/data + ${CMAKE_BINARY_DIR}/shaders ) include(../../cmake/AddPlatformExecutable.cmake) -# Locate system libraries on iOS find_library(UIKIT UIKit) find_library(FOUNDATION Foundation) find_library(MOBILECORESERVICES MobileCoreServices) @@ -29,90 +28,78 @@ find_library(SYSTEMCONFIGURATION SystemConfiguration) find_library(GAMECONTROLLER GameController) find_library(QUARTZ QuartzCore) -# link the frameworks located above - - add_platform( - MAIN_FILE - ViewController.mm.in - SRC - MACOSX_BUNDLE - ${APP_HEADER_FILES} - ${APP_SOURCE_FILES} - ${RESOURCES} - ${CMAKE_CURRENT_SOURCE_DIR}/file.mm - EXECUTABLE_PROPERTIES - MACOSX_BUNDLE ON - LINK_LIBRARIES - Core - GFXMetal -${UIKIT} - ${FOUNDATION} - ${MOBILECORESERVICES} -${CFNETWORK} - ${SYSTEMCONFIGURATION} -${GAMECONTROLLER} -${QUARTZ} - GFXMetal - COMPILE_OPTIONS + MAIN_FILE + ViewController.mm.in + SRC + MACOSX_BUNDLE + ${APP_HEADER_FILES} + ${APP_SOURCE_FILES} + ${RESOURCES} + ${CMAKE_CURRENT_SOURCE_DIR}/file.mm + EXECUTABLE_PROPERTIES + MACOSX_BUNDLE ON + LINK_LIBRARIES + Core + ${UIKIT} + ${FOUNDATION} + ${MOBILECORESERVICES} + ${CFNETWORK} + ${SYSTEMCONFIGURATION} + ${GAMECONTROLLER} + ${QUARTZ} + GFXVulkan + COMPILE_OPTIONS ) function(add_platform_commands APP_NAME) -set(APP_BUNDLE_IDENTIFIER "com.test.app.fantasy") # <== Set to your app's bundle identifier + # you should set these as cmake options as these reset on cmake reconfigure + #set(APP_BUNDLE_IDENTIFIER "your app bundle id here, such as com.redstrate.prismtest") + #set(CODE_SIGN_IDENTITY "iPhone Developer") + #set(DEVELOPMENT_TEAM_ID "your dev team id here") -set(CODE_SIGN_IDENTITY "iPhone Developer") # <== Set to your team ID from Apple -set(DEVELOPMENT_TEAM_ID "JM5LKVKH48") # <== Set to your preferred code sign identity, to see list: - # /usr/bin/env xcrun security find-identity -v -p codesigning -set(DEPLOYMENT_TARGET 13.5) # <== Set your deployment target version of iOS -set(DEVICE_FAMILY "1,2") - # <== Set to "1" to target iPhone, set to "2" to target iPad, set to "1,2" to target both -set(RESOURCES - ${PROJECT_SOURCE_DIR}/engine/platforms/ios/Main.storyboard - ${PROJECT_SOURCE_DIR}/engine/platforms/ios/LaunchScreen.storyboard - ${CMAKE_SOURCE_DIR}/data - ${CMAKE_BINARY_DIR}/shaders -) + set(DEPLOYMENT_TARGET 13.5) + set(DEVICE_FAMILY "1,2") -set(PRODUCT_NAME ${APP_NAME}) -set(EXECUTABLE_NAME ${APP_NAME}) -set(MACOSX_BUNDLE_EXECUTABLE_NAME ${APP_NAME}) -set(MACOSX_BUNDLE_INFO_STRING ${APP_BUNDLE_IDENTIFIER}) -set(MACOSX_BUNDLE_GUI_IDENTIFIER ${APP_BUNDLE_IDENTIFIER}) -set(MACOSX_BUNDLE_BUNDLE_NAME ${APP_BUNDLE_IDENTIFIER}) -set(MACOSX_BUNDLE_ICON_FILE "") -set(MACOSX_BUNDLE_LONG_VERSION_STRING "1.0") -set(MACOSX_BUNDLE_SHORT_VERSION_STRING "1.0") -set(MACOSX_BUNDLE_BUNDLE_VERSION "1.0") -set(MACOSX_BUNDLE_COPYRIGHT "Copyright YOU") -set(MACOSX_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET}) + # plist values + set(PRODUCT_NAME ${APP_NAME}) + set(EXECUTABLE_NAME ${APP_NAME}) + set(MACOSX_BUNDLE_EXECUTABLE_NAME ${APP_NAME}) + set(MACOSX_BUNDLE_INFO_STRING ${APP_BUNDLE_IDENTIFIER}) + set(MACOSX_BUNDLE_GUI_IDENTIFIER ${APP_BUNDLE_IDENTIFIER}) + set(MACOSX_BUNDLE_BUNDLE_NAME ${APP_BUNDLE_IDENTIFIER}) + set(MACOSX_BUNDLE_ICON_FILE "") + set(MACOSX_BUNDLE_LONG_VERSION_STRING "1.0") + set(MACOSX_BUNDLE_SHORT_VERSION_STRING "1.0") + set(MACOSX_BUNDLE_BUNDLE_VERSION "1.0") + set(MACOSX_BUNDLE_COPYRIGHT "Copyright lololol") + set(MACOSX_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET}) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fobjc-arc") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fobjc-arc") -configure_file(${PROJECT_SOURCE_DIR}/engine/platforms/ios/plist.in ${CMAKE_BINARY_DIR}/${add_platform_executable_TARGET}Info.plist) + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/plist.in ${CMAKE_BINARY_DIR}/${add_platform_executable_TARGET}Info.plist) -set_target_properties(${APP_NAME} PROPERTIES - XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT "dwarf-with-dsym" - RESOURCE "${RESOURCES}" - XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER "YES" - XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET} - XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${CODE_SIGN_IDENTITY} - XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID} - XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY ${DEVICE_FAMILY} - MACOSX_BUNDLE TRUE - MACOSX_BUNDLE_INFO_PLIST "${CMAKE_BINARY_DIR}/${APP_NAME}Info.plist" - XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES - XCODE_ATTRIBUTE_COMBINE_HIDPI_IMAGES NO - XCODE_ATTRIBUTE_INSTALL_PATH "$(LOCAL_APPS_DIR)" - XCODE_ATTRIBUTE_ENABLE_TESTABILITY YES - XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN YES -) - -# Set the app's linker search path to the default location on iOS -set_target_properties( - ${APP_NAME} - PROPERTIES - XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS - "@executable_path/Frameworks" -) + set_target_properties(${APP_NAME} PROPERTIES + XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT "dwarf-with-dsym" + RESOURCE "${RESOURCES}" + XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER "YES" + XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET} + XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${CODE_SIGN_IDENTITY} + XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID} + XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY ${DEVICE_FAMILY} + MACOSX_BUNDLE TRUE + MACOSX_BUNDLE_INFO_PLIST "${CMAKE_BINARY_DIR}/${APP_NAME}Info.plist" + XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES + XCODE_ATTRIBUTE_COMBINE_HIDPI_IMAGES NO + XCODE_ATTRIBUTE_INSTALL_PATH "$(LOCAL_APPS_DIR)" + XCODE_ATTRIBUTE_ENABLE_TESTABILITY YES + XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN YES + ) + set_target_properties( + ${APP_NAME} + PROPERTIES + XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS + "@executable_path/Frameworks" + ) endfunction()