Archived
1
Fork 0

Bring iOS CMake back up to snuff

This commit is contained in:
Joshua Goins 2022-02-12 19:58:51 -05:00
parent 31238c20ad
commit 2b5fd7201f
3 changed files with 73 additions and 90 deletions

View file

@ -34,7 +34,7 @@ endif()
if(${CMAKE_SYSTEM_NAME} STREQUAL "iOS") if(${CMAKE_SYSTEM_NAME} STREQUAL "iOS")
message("iOS build detected!") message("iOS build detected!")
set(ENABLE_METAL TRUE) set(ENABLE_VULKAN TRUE)
set(ENABLE_DARWIN TRUE) set(ENABLE_DARWIN TRUE)
set(ENABLE_IOS TRUE) set(ENABLE_IOS TRUE)
endif() endif()
@ -42,7 +42,7 @@ endif()
if(${CMAKE_SYSTEM_NAME} STREQUAL "tvOS") if(${CMAKE_SYSTEM_NAME} STREQUAL "tvOS")
message("tvOS build detected!") message("tvOS build detected!")
set(ENABLE_METAL TRUE) set(ENABLE_VULKAN TRUE)
set(ENABLE_DARWIN TRUE) set(ENABLE_DARWIN TRUE)
set(ENABLE_TVOS TRUE) set(ENABLE_TVOS TRUE)
endif() endif()

View file

@ -16,10 +16,6 @@ add_custom_target(GFXInterface SOURCES
public/gfx_sampler.hpp) public/gfx_sampler.hpp)
set_target_properties(GFXInterface PROPERTIES CMAKE_FOLDER "GFX") set_target_properties(GFXInterface PROPERTIES CMAKE_FOLDER "GFX")
if(ENABLE_METAL)
add_subdirectory(metal)
endif()
if(ENABLE_VULKAN) if(ENABLE_VULKAN)
add_subdirectory(vulkan) add_subdirectory(vulkan)
endif() endif()

View file

@ -3,24 +3,23 @@ cmake_minimum_required (VERSION 3.7)
include(BundleUtilities) include(BundleUtilities)
set(APP_HEADER_FILES set(APP_HEADER_FILES
${PROJECT_SOURCE_DIR}/platforms/ios/AppDelegate.h ${CMAKE_CURRENT_SOURCE_DIR}/AppDelegate.h
) )
set(APP_SOURCE_FILES set(APP_SOURCE_FILES
${PROJECT_SOURCE_DIR}/platforms/ios/AppDelegate.m ${CMAKE_CURRENT_SOURCE_DIR}/AppDelegate.m
${PROJECT_SOURCE_DIR}/platforms/ios/main.m ${CMAKE_CURRENT_SOURCE_DIR}/main.m
) )
set(RESOURCES set(RESOURCES
${PROJECT_SOURCE_DIR}/platforms/ios/Main.storyboard ${CMAKE_CURRENT_SOURCE_DIR}/Main.storyboard
${PROJECT_SOURCE_DIR}/platforms/ios/LaunchScreen.storyboard ${CMAKE_CURRENT_SOURCE_DIR}/LaunchScreen.storyboard
${CMAKE_SOURCE_DIR}/data ${CMAKE_SOURCE_DIR}/data
${CMAKE_BINARY_DIR}/shaders ${CMAKE_BINARY_DIR}/shaders
) )
include(../../cmake/AddPlatformExecutable.cmake) include(../../cmake/AddPlatformExecutable.cmake)
# Locate system libraries on iOS
find_library(UIKIT UIKit) find_library(UIKIT UIKit)
find_library(FOUNDATION Foundation) find_library(FOUNDATION Foundation)
find_library(MOBILECORESERVICES MobileCoreServices) find_library(MOBILECORESERVICES MobileCoreServices)
@ -29,9 +28,6 @@ find_library(SYSTEMCONFIGURATION SystemConfiguration)
find_library(GAMECONTROLLER GameController) find_library(GAMECONTROLLER GameController)
find_library(QUARTZ QuartzCore) find_library(QUARTZ QuartzCore)
# link the frameworks located above
add_platform( add_platform(
MAIN_FILE MAIN_FILE
ViewController.mm.in ViewController.mm.in
@ -45,52 +41,45 @@ add_platform(
MACOSX_BUNDLE ON MACOSX_BUNDLE ON
LINK_LIBRARIES LINK_LIBRARIES
Core Core
GFXMetal ${UIKIT}
${UIKIT}
${FOUNDATION} ${FOUNDATION}
${MOBILECORESERVICES} ${MOBILECORESERVICES}
${CFNETWORK} ${CFNETWORK}
${SYSTEMCONFIGURATION} ${SYSTEMCONFIGURATION}
${GAMECONTROLLER} ${GAMECONTROLLER}
${QUARTZ} ${QUARTZ}
GFXMetal GFXVulkan
COMPILE_OPTIONS COMPILE_OPTIONS
) )
function(add_platform_commands APP_NAME) 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(DEPLOYMENT_TARGET 13.5)
set(DEVELOPMENT_TEAM_ID "JM5LKVKH48") # <== Set to your preferred code sign identity, to see list: set(DEVICE_FAMILY "1,2")
# /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(PRODUCT_NAME ${APP_NAME}) # plist values
set(EXECUTABLE_NAME ${APP_NAME}) set(PRODUCT_NAME ${APP_NAME})
set(MACOSX_BUNDLE_EXECUTABLE_NAME ${APP_NAME}) set(EXECUTABLE_NAME ${APP_NAME})
set(MACOSX_BUNDLE_INFO_STRING ${APP_BUNDLE_IDENTIFIER}) set(MACOSX_BUNDLE_EXECUTABLE_NAME ${APP_NAME})
set(MACOSX_BUNDLE_GUI_IDENTIFIER ${APP_BUNDLE_IDENTIFIER}) set(MACOSX_BUNDLE_INFO_STRING ${APP_BUNDLE_IDENTIFIER})
set(MACOSX_BUNDLE_BUNDLE_NAME ${APP_BUNDLE_IDENTIFIER}) set(MACOSX_BUNDLE_GUI_IDENTIFIER ${APP_BUNDLE_IDENTIFIER})
set(MACOSX_BUNDLE_ICON_FILE "") set(MACOSX_BUNDLE_BUNDLE_NAME ${APP_BUNDLE_IDENTIFIER})
set(MACOSX_BUNDLE_LONG_VERSION_STRING "1.0") set(MACOSX_BUNDLE_ICON_FILE "")
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "1.0") set(MACOSX_BUNDLE_LONG_VERSION_STRING "1.0")
set(MACOSX_BUNDLE_BUNDLE_VERSION "1.0") set(MACOSX_BUNDLE_SHORT_VERSION_STRING "1.0")
set(MACOSX_BUNDLE_COPYRIGHT "Copyright YOU") set(MACOSX_BUNDLE_BUNDLE_VERSION "1.0")
set(MACOSX_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET}) 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 set_target_properties(${APP_NAME} PROPERTIES
XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT "dwarf-with-dsym" XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT "dwarf-with-dsym"
RESOURCE "${RESOURCES}" RESOURCE "${RESOURCES}"
XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER "YES" XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER "YES"
@ -105,14 +94,12 @@ set_target_properties(${APP_NAME} PROPERTIES
XCODE_ATTRIBUTE_INSTALL_PATH "$(LOCAL_APPS_DIR)" XCODE_ATTRIBUTE_INSTALL_PATH "$(LOCAL_APPS_DIR)"
XCODE_ATTRIBUTE_ENABLE_TESTABILITY YES XCODE_ATTRIBUTE_ENABLE_TESTABILITY YES
XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN YES XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN YES
) )
# Set the app's linker search path to the default location on iOS set_target_properties(
set_target_properties(
${APP_NAME} ${APP_NAME}
PROPERTIES PROPERTIES
XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS
"@executable_path/Frameworks" "@executable_path/Frameworks"
) )
endfunction() endfunction()