Introduce PSEMEK_PLATFORM and PSEMEK_PLATFORM_XXX variables
All checks were successful
Run tests / Run tests (push) Successful in 7m38s
All checks were successful
Run tests / Run tests (push) Successful in 7m38s
This commit is contained in:
parent
dd07244a40
commit
155ced8410
2 changed files with 43 additions and 27 deletions
|
|
@ -8,6 +8,36 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
|
|||
|
||||
string(TOUPPER "${CMAKE_BUILD_TYPE}" PSEMEK_BUILD_TYPE)
|
||||
|
||||
set(_PSEMEK_ALL_PLATFORMS linux windows mac android web)
|
||||
|
||||
if(WIN32)
|
||||
set(_PSEMEK_PLATFORM windows)
|
||||
elseif(APPLE)
|
||||
set(_PSEMEK_PLATFORM mac)
|
||||
elseif(ANDROID)
|
||||
set(_PSEMEK_PLATFORM android)
|
||||
elseif(UNIX)
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL Emscripten)
|
||||
set(_PSEMEK_PLATFORM web)
|
||||
else()
|
||||
set(_PSEMEK_PLATFORM linux)
|
||||
endif()
|
||||
else()
|
||||
message(WARNING "Failed to detect platform")
|
||||
set(_PSEMEK_PLATFORM unknown)
|
||||
endif()
|
||||
|
||||
set(PSEMEK_PLATFORM "${_PSEMEK_PLATFORM}" CACHE INTERNAL "Build platform (auto-detected)")
|
||||
|
||||
foreach(_PLATFORM IN LISTS _PSEMEK_ALL_PLATFORMS)
|
||||
string(TOUPPER "${_PLATFORM}" _PLATFORM_UPPER)
|
||||
set(_PLATFORM_ON OFF)
|
||||
if("${_PLATFORM}" STREQUAL "${_PSEMEK_PLATFORM}")
|
||||
set(_PLATFORM_ON ON)
|
||||
endif()
|
||||
set(PSEMEK_PLATFORM_${_PLATFORM_UPPER} "${_PLATFORM_ON}" CACHE INTERNAL "Build platform is ${_PLATFORM}")
|
||||
endforeach()
|
||||
|
||||
set(PSEMEK_DEFINITIONS)
|
||||
if(PSEMEK_BUILD_TYPE STREQUAL "DEBUG")
|
||||
list(APPEND PSEMEK_DEFINITIONS "-DPSEMEK_DEBUG=1")
|
||||
|
|
|
|||
|
|
@ -3,26 +3,11 @@ set(PSEMEK_PACKAGE_OUTPUT_PATH "" CACHE STRING "Packaging output path")
|
|||
set(PSEMEK_PACKAGE_VERSION_SUFFIX "" CACHE STRING "Packaging version suffix")
|
||||
|
||||
if(PSEMEK_PACKAGE_MODE)
|
||||
if(WIN32)
|
||||
set(PSEMEK_PACKAGE_SUFFIX_RAW windows)
|
||||
elseif(APPLE)
|
||||
set(PSEMEK_PACKAGE_SUFFIX_RAW mac)
|
||||
elseif(ANDROID)
|
||||
set(PSEMEK_PACKAGE_SUFFIX_RAW android)
|
||||
elseif(UNIX)
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL Emscripten)
|
||||
set(PSEMEK_PACKAGE_SUFFIX_RAW web)
|
||||
else()
|
||||
set(PSEMEK_PACKAGE_SUFFIX_RAW linux)
|
||||
endif()
|
||||
else()
|
||||
message(FATAL "Uknown system for packaging")
|
||||
endif()
|
||||
set(PSEMEK_PACKAGE_SUFFIX ${PSEMEK_PACKAGE_SUFFIX_RAW} CACHE INTERNAL "Packaging suffix" FORCE)
|
||||
set(PSEMEK_PACKAGE_SUFFIX ${PSEMEK_PLATFORM} CACHE INTERNAL "Packaging suffix" FORCE)
|
||||
|
||||
set(PSEMEK_PACKAGE_LINK_FLAGS_RAW)
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL Emscripten)
|
||||
if(PSEMEK_PLATFORM_WEB)
|
||||
list(APPEND PSEMEK_PACKAGE_LINK_FLAGS_RAW "-sMIN_WEBGL_VERSION=2" "-sNO_DISABLE_EXCEPTION_CATCHING" "-sFULL_ES3")
|
||||
list(APPEND PSEMEK_PACKAGE_LINK_FLAGS_RAW "-sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE='$autoResumeAudioContext','$dynCall'")
|
||||
if(CMAKE_BUILD_TYPE STREQUAL Debug)
|
||||
|
|
@ -41,7 +26,7 @@ function(psemek_package_output_path target outvar)
|
|||
message(FATAL "psemek_package_output_path must only be called during packaging")
|
||||
endif()
|
||||
|
||||
if(ANDROID)
|
||||
if(PSEMEK_PLATFORM_ANDROID)
|
||||
set(_PACKAGE_EXTENSION apk)
|
||||
else()
|
||||
set(_PACKAGE_EXTENSION zip)
|
||||
|
|
@ -60,7 +45,7 @@ function(psemek_add_executable_impl target is_application)
|
|||
|
||||
target_link_libraries(${target} PUBLIC psemek)
|
||||
if(${is_application})
|
||||
if(ANDROID)
|
||||
if(PSEMEK_PLATFORM_ANDROID)
|
||||
target_link_libraries(${target} PUBLIC
|
||||
"-Wl,--whole-archive $<TARGET_FILE:${PSEMEK_BACKEND_LIBRARY}> -Wl,--no-whole-archive"
|
||||
${PSEMEK_BACKEND_LIBRARY})
|
||||
|
|
@ -68,7 +53,7 @@ function(psemek_add_executable_impl target is_application)
|
|||
target_link_libraries(${target} PUBLIC ${PSEMEK_BACKEND_LIBRARY})
|
||||
endif()
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL Emscripten)
|
||||
if(PSEMEK_PLATFORM_WEB)
|
||||
target_link_options(${target} PRIVATE
|
||||
"--shell-file=${CMAKE_CURRENT_FUNCTION_LIST_DIR}/web/template.html"
|
||||
)
|
||||
|
|
@ -83,13 +68,13 @@ function(psemek_add_executable_impl target is_application)
|
|||
|
||||
target_compile_definitions(${target} PUBLIC "-DPSEMEK_PACKAGE_MODE")
|
||||
|
||||
if(UNIX AND (NOT APPLE))
|
||||
if(PSEMEK_PLATFORM_LINUX)
|
||||
set_target_properties(${target} PROPERTIES
|
||||
BUILD_RPATH "."
|
||||
)
|
||||
endif()
|
||||
|
||||
if(UNIX AND (NOT APPLE) AND (NOT ANDROID) AND (NOT (CMAKE_SYSTEM_NAME STREQUAL Emscripten)))
|
||||
if(PSEMEK_PLATFORM_LINUX)
|
||||
add_custom_command(TARGET ${target} POST_BUILD
|
||||
COMMAND chrpath -r . $<TARGET_FILE:${target}>
|
||||
)
|
||||
|
|
@ -97,13 +82,13 @@ function(psemek_add_executable_impl target is_application)
|
|||
|
||||
psemek_package_output_path(${target} _OUTPUT_PATH)
|
||||
|
||||
if(NOT ANDROID)
|
||||
if(NOT PSEMEK_PLATFORM_ANDROID)
|
||||
get_filename_component(_OUTPUT_DIRECTORY "${_OUTPUT_PATH}" DIRECTORY)
|
||||
|
||||
set(_TARGET_FILE $<TARGET_FILE:${target}>)
|
||||
|
||||
set(_TARGET_RUNTIME)
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL Emscripten)
|
||||
if(PSEMEK_PLATFORM_WEB)
|
||||
set(_TARGET_PARENT $<PATH:GET_PARENT_PATH,${_TARGET_FILE}>)
|
||||
set(_TARGET_STEM $<PATH:GET_STEM,${_TARGET_FILE}>)
|
||||
set(_TARGET_NOEXT "${_TARGET_PARENT}/${_TARGET_STEM}")
|
||||
|
|
@ -126,6 +111,7 @@ function(psemek_add_executable_impl target is_application)
|
|||
add_custom_command(TARGET ${target} POST_BUILD
|
||||
COMMAND echo Packaging target ${target} into ${_OUTPUT_PATH}
|
||||
COMMAND mkdir -pv "${_OUTPUT_DIRECTORY}"
|
||||
COMMAND rm -f "${_OUTPUT_PATH}"
|
||||
COMMAND zip -v "${_OUTPUT_PATH}" -j ${_COPY_FILES}
|
||||
COMMAND echo Packaged target ${target} into ${_OUTPUT_PATH}
|
||||
)
|
||||
|
|
@ -204,7 +190,7 @@ function(psemek_add_library target)
|
|||
endfunction()
|
||||
|
||||
function(psemek_add_winrc target path)
|
||||
if(WIN32 AND (TARGET ${target}))
|
||||
if(PSEMEK_PLATFORM_WINDOWS AND (TARGET ${target}))
|
||||
get_target_property(OUT_DIR ${target} BINARY_DIR)
|
||||
|
||||
set(_IN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/${path}")
|
||||
|
|
@ -224,12 +210,12 @@ endfunction()
|
|||
function(psemek_package_files target)
|
||||
if(PSEMEK_PACKAGE_MODE)
|
||||
if(PSEMEK_PACKAGE_TARGET)
|
||||
if(ANDROID)
|
||||
if(PSEMEK_PLATFORM_ANDROID)
|
||||
add_custom_command(TARGET ${target} POST_BUILD
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
||||
COMMAND ${PSEMEK_COPY_FILES} ${ARGN}
|
||||
)
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL Emscripten)
|
||||
elseif(PSEMEK_PLATFORM_WEB)
|
||||
foreach(_FILE IN LISTS ARGN)
|
||||
target_link_options(${target} PRIVATE
|
||||
"--preload-file=${CMAKE_CURRENT_LIST_DIR}/${_FILE}@/${_FILE}"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue