Archived
1
Fork 0
This repository has been archived on 2025-04-12. You can view files and clone it, but cannot push or open issues or pull requests.
prism/cmake/AddPlatformExecutable.cmake

72 lines
2.7 KiB
CMake
Executable file

function(set_output_dir target)
set_target_properties(${target} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
XCODE_GENERATE_SCHEME ON)
endfunction()
function(add_platform_executable)
cmake_parse_arguments(add_platform_executable
""
"TARGET;APP_CLASS;APP_INCLUDE;APP_NAME;SKIP_DATA"
"SRC"
${ARGN})
set(APP_CLASS ${add_platform_executable_APP_CLASS} CACHE INTERNAL "")
set(GAME_SRC ${add_platform_executable_SRC} CACHE INTERNAL "")
set(APP_INCLUDE ${add_platform_executable_APP_INCLUDE} CACHE INTERNAL "")
set(APP_NAME ${add_platform_executable_APP_NAME} CACHE INTERNAL "")
string(REGEX MATCH "^(.*)\\.[^.]*$" dummy ${PLATFORM_MAIN_FILE_NAME})
set(MYFILE_WITHOUT_EXT ${CMAKE_MATCH_1})
configure_file(${PLATFORM_MAIN_FILE_PATH} ${CMAKE_BINARY_DIR}/${add_platform_executable_TARGET}${MYFILE_WITHOUT_EXT})
if(COMMAND setup_target)
setup_target(${add_platform_executable_TARGET})
endif()
add_executable(${add_platform_executable_TARGET}
${PLATFORM_SOURCES}
${add_platform_executable_SRC}
${CMAKE_BINARY_DIR}/${add_platform_executable_TARGET}${MYFILE_WITHOUT_EXT})
set_engine_properties(${add_platform_executable_TARGET})
if("${PLATFORM_EXECUTABLE_PROPERTIES}" STREQUAL "")
else()
set_target_properties(${add_platform_executable_TARGET}
PROPERTIES
${PLATFORM_EXECUTABLE_PROPERTIES}
)
endif()
target_link_libraries(${add_platform_executable_TARGET}
PRIVATE
${PLATFORM_LINK_LIBRARIES}
)
if("${add_platform_executable_APP_NAME}")
set_target_properties(${add_platform_executable_TARGET} PROPERTIES XCODE_ATTRIBUTE_EXECUTABLE_NAME ${add_platform_executable_APP_NAME})
set_target_properties(${add_platform_executable_TARGET} PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME ${add_platform_executable_APP_NAME})
endif()
if(COMMAND add_platform_commands)
add_platform_commands(${add_platform_executable_TARGET})
endif()
set_output_dir(${add_platform_executable_TARGET})
endfunction()
function(add_platform)
cmake_parse_arguments(add_platform
"$"
"MAIN_FILE;DISPLAY_NAME"
"EXECUTABLE_PROPERTIES;LINK_LIBRARIES;COMPILE_OPTIONS;SRC"
${ARGN})
set(PLATFORM_MAIN_FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/${add_platform_MAIN_FILE} CACHE INTERNAL "")
set(PLATFORM_MAIN_FILE_NAME ${add_platform_MAIN_FILE} CACHE INTERNAL "")
set(PLATFORM_LINK_LIBRARIES ${add_platform_LINK_LIBRARIES} CACHE INTERNAL "")
set(PLATFORM_EXECUTABLE_PROPERTIES ${add_platform_EXECUTABLE_PROPERTIES} CACHE INTERNAL "")
set(PLATFORM_SOURCES ${add_platform_SRC} CACHE INTERNAL "")
endfunction()