cmake_minimum_required(VERSION 3.18) set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../deps/Dependencies/cmake-modules ${CMAKE_MODULE_PATH} ) include(Header) project(PlayUI LANGUAGES C Swift) set(USE_GSH_VULKAN OFF) find_package(Vulkan) if(Vulkan_FOUND) set(USE_GSH_VULKAN ON) message("Building with Vulkan support.") else() message("Building without Vulkan support. If you want to enable Vulkan, please make sure VULKAN_SDK is set and place its path inside CMAKE_PREFIX_PATH.") endif() if(NOT TARGET PlayCore) add_subdirectory( ${CMAKE_CURRENT_SOURCE_DIR}/../ ${CMAKE_CURRENT_BINARY_DIR}/Source ) endif() list(APPEND UI_IOS_PROJECT_LIBS PlayCore) if(NOT TARGET gsh_opengl) add_subdirectory( ${CMAKE_CURRENT_SOURCE_DIR}/../gs/GSH_OpenGL ${CMAKE_CURRENT_BINARY_DIR}/gs/GSH_OpenGL ) endif() list(INSERT UI_IOS_PROJECT_LIBS 0 gsh_opengl) if(USE_GSH_VULKAN) if(NOT TARGET gsh_vulkan) add_subdirectory( ${CMAKE_CURRENT_SOURCE_DIR}/../gs/GSH_Vulkan ${CMAKE_CURRENT_BINARY_DIR}/gs/GSH_Vulkan ) endif() list(INSERT UI_IOS_PROJECT_LIBS 0 gsh_vulkan) list(APPEND UI_IOS_DEFINITIONS_LIST HAS_GSH_VULKAN=1) endif() if(NOT TARGET sh_openal) add_subdirectory( ${CMAKE_CURRENT_SOURCE_DIR}/../sound/SH_OpenAL ${CMAKE_CURRENT_BINARY_DIR}/SH_OpenAL ) endif() list(APPEND UI_IOS_PROJECT_LIBS sh_openal) if(NOT TARGET iCade_Static) add_subdirectory( ${CMAKE_CURRENT_SOURCE_DIR}/../../deps/Dependencies/build_cmake/iCade-iOS ${CMAKE_CURRENT_BINARY_DIR}/iCade-iOS ) endif() list(APPEND UI_IOS_PROJECT_LIBS iCade_Static) if(NOT TARGET SDWebImage_Static) add_subdirectory( ${CMAKE_CURRENT_SOURCE_DIR}/../../deps/Dependencies/build_cmake/SDWebImage ${CMAKE_CURRENT_BINARY_DIR}/SDWebImage ) endif() list(APPEND UI_IOS_PROJECT_LIBS SDWebImage_Static) if(NOT TARGET ui_shared) add_subdirectory( ${CMAKE_CURRENT_SOURCE_DIR}/../ui_shared ${CMAKE_CURRENT_BINARY_DIR}/ui_shared ) endif() list(APPEND UI_IOS_PROJECT_LIBS ui_shared) if(NOT TARGET AltKit) add_subdirectory( ${CMAKE_CURRENT_SOURCE_DIR}/../../deps/AltKit ${CMAKE_CURRENT_BINARY_DIR}/AltKit ) endif() list(APPEND UI_IOS_PROJECT_LIBS AltKit) find_library(UIKIT_LIBRARY NAMES UIKit) find_library(COREGRAPHICS_LIBRARY NAMES CoreGraphics) find_library(GAMECONTROLLER_LIBRARY NAMES GameController) find_library(QUARTZCORE_LIBRARY NAMES QuartzCore) find_library(IMAGEIO_LIBRARY NAMES ImageIO) set(OSX_SOURCES AltServerJitService.mm AppDelegate.mm BackgroundLayer.m CoverViewCell.m CoverViewController.mm DebuggerSimulator.cpp EmulatorViewController.mm GSH_OpenGLiOS.cpp main.mm PreferenceDefs.h RenderView.mm SaveStateViewController.m SettingsListSelectorViewController.mm SettingsViewController.mm VirtualPadButton.mm VirtualPadItem.mm VirtualPadStick.mm VirtualPadView.mm ) set(OSX_HEADERS AltServerJitService.h AppDelegate.h BackgroundLayer.h CoverViewCell.h CoverViewController.h DebuggerSimulator.h EmulatorViewController.h GSH_OpenGLiOS.h RenderView.h SaveStateViewController.h SettingsListSelectorViewController.h SettingsViewController.h VirtualPadButton.h VirtualPadItem.h VirtualPadStick.h VirtualPadView.h ) set(OSX_RES ${CMAKE_CURRENT_SOURCE_DIR}/../../GameConfig.xml ${CMAKE_CURRENT_SOURCE_DIR}/Base.lproj/Main.storyboard ${CMAKE_CURRENT_SOURCE_DIR}/Resources/icon@2x.png ${CMAKE_CURRENT_SOURCE_DIR}/Resources/boxart.png ${CMAKE_CURRENT_SOURCE_DIR}/Resources/select.png ${CMAKE_CURRENT_SOURCE_DIR}/Resources/start.png ${CMAKE_CURRENT_SOURCE_DIR}/Resources/up.png ${CMAKE_CURRENT_SOURCE_DIR}/Resources/down.png ${CMAKE_CURRENT_SOURCE_DIR}/Resources/left.png ${CMAKE_CURRENT_SOURCE_DIR}/Resources/right.png ${CMAKE_CURRENT_SOURCE_DIR}/Resources/triangle.png ${CMAKE_CURRENT_SOURCE_DIR}/Resources/cross.png ${CMAKE_CURRENT_SOURCE_DIR}/Resources/circle.png ${CMAKE_CURRENT_SOURCE_DIR}/Resources/square.png ${CMAKE_CURRENT_SOURCE_DIR}/Resources/lr.png ${CMAKE_CURRENT_SOURCE_DIR}/Resources/analogstick.png ) if(USE_GSH_VULKAN) list(APPEND OSX_SOURCES GSH_VulkaniOS.cpp) list(APPEND OSX_HEADERS GSH_VulkaniOS.h) endif() # Add our Executable add_executable(Play MACOSX_BUNDLE ${OSX_SOURCES} ${OSX_HEADERS} ${OSX_RES}) target_compile_options(Play PRIVATE $<$>:-x objective-c++ -fobjc-arc>) # Probably a better way to set the framework link libraries. target_link_libraries(Play ${UIKIT_LIBRARY}) target_link_libraries(Play ${COREGRAPHICS_LIBRARY}) target_link_libraries(Play ${GAMECONTROLLER_LIBRARY}) target_link_libraries(Play ${QUARTZCORE_LIBRARY}) target_link_libraries(Play ${IMAGEIO_LIBRARY}) target_link_libraries(Play ${UI_IOS_PROJECT_LIBS} "-ObjC -lsqlite3 -framework OpenAL") target_compile_definitions(Play PRIVATE ${UI_IOS_DEFINITIONS_LIST}) # Set a custom plist file for the app bundle # NOTE: for these values to be used Info.plist has to be edited # NOTE: from cmake 3.7.0 you can use %b for month name abbreviations string(TIMESTAMP DATE "%Y-%m-%d") set_target_properties( Play PROPERTIES MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME}" MACOSX_BUNDLE_GUI_IDENTIFIER "com.virtualapplications.play" MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_NAME} Version ${PROJECT_Version}" MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME} MACOSX_BUNDLE_SHORT_VERSION_STRING "${PROJECT_Version}" MACOSX_BUNDLE_BUNDLE_VERSION ${DATE} MACOSX_BUNDLE_COPYRIGHT "© Virtual Applications, 2017" MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.in" XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2" RESOURCE "${OSX_RES}" ) if(USE_GSH_VULKAN) set_target_properties( Play PROPERTIES XCODE_EMBED_FRAMEWORKS "$ENV{VULKAN_SDK}/lib/MoltenVK.xcframework" XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY TRUE ) endif()