Squash project setup refactor
This commit is contained in:
committed by
Georg Hagen
parent
6a1a76f4d1
commit
071ced8cb0
0
cmake/functions/Activation.cmake
Normal file
0
cmake/functions/Activation.cmake
Normal file
29
cmake/functions/AppleHelper.cmake
Normal file
29
cmake/functions/AppleHelper.cmake
Normal file
@@ -0,0 +1,29 @@
|
||||
function(LinkAppleFrameworks TARGET)
|
||||
target_link_libraries(${TARGET}
|
||||
PUBLIC "-framework CoreFoundation"
|
||||
PUBLIC "-framework Foundation"
|
||||
PUBLIC "-framework CoreImage"
|
||||
PUBLIC "-framework CoreVideo"
|
||||
PUBLIC "-framework Metal"
|
||||
PUBLIC "-framework MetalPerformanceShaders"
|
||||
PUBLIC "-framework ARKit"
|
||||
PUBLIC "-lstdc++"
|
||||
PUBLIC c++
|
||||
PUBLIC c
|
||||
)
|
||||
|
||||
|
||||
# Locate system libraries on iOS
|
||||
find_library(UIKIT UIKit)
|
||||
find_library(FOUNDATION Foundation)
|
||||
find_library(MOBILECORESERVICES MobileCoreServices)
|
||||
find_library(CFNETWORK CFNetwork)
|
||||
find_library(SYSTEMCONFIGURATION SystemConfiguration)
|
||||
|
||||
# link the frameworks located above
|
||||
target_link_libraries(${TARGET} PUBLIC ${UIKIT})
|
||||
target_link_libraries(${TARGET} PUBLIC ${FOUNDATION})
|
||||
target_link_libraries(${TARGET} PUBLIC ${MOBILECORESERVICES})
|
||||
target_link_libraries(${TARGET} PUBLIC ${CFNETWORK})
|
||||
target_link_libraries(${TARGET} PUBLIC ${SYSTEMCONFIGURATION})
|
||||
endfunction()
|
||||
18
cmake/functions/Filter.cmake
Normal file
18
cmake/functions/Filter.cmake
Normal file
@@ -0,0 +1,18 @@
|
||||
function(FilterPlatformPaths sourcesVar)
|
||||
|
||||
if (IOS)
|
||||
list(FILTER ${sourcesVar} EXCLUDE REGEX ".*GLFW.*")
|
||||
else ()
|
||||
list(FILTER ${sourcesVar} EXCLUDE REGEX ".*[\\/]Host[\\/]iOS[\\/].*")
|
||||
endif ()
|
||||
if (NOT LINUX)
|
||||
list(FILTER ${sourcesVar} EXCLUDE REGEX ".*[\\/]Host[\\/]Linux[\\/].*")
|
||||
endif ()
|
||||
if (NOT WIN32)
|
||||
list(FILTER ${sourcesVar} EXCLUDE REGEX ".*[\\/]Host[\\/]Windows[\\/].*")
|
||||
endif ()
|
||||
|
||||
list(FILTER ${sourcesVar} EXCLUDE REGEX "main\.(m|mm|c|cpp)")
|
||||
|
||||
set(${sourcesVar} ${${sourcesVar}} PARENT_SCOPE)
|
||||
endfunction()
|
||||
33
cmake/functions/SetCompilerSettings.cmake
Normal file
33
cmake/functions/SetCompilerSettings.cmake
Normal file
@@ -0,0 +1,33 @@
|
||||
function(SetOptimisationSettings)
|
||||
|
||||
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
|
||||
|
||||
if (LINUX)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -mtune=native" PARENT_SCOPE)
|
||||
elseif (APPLE)
|
||||
add_compile_options("$<$<CONFIG:Release>:-O3>$<$<CONFIG:Debug>:-O0>$<$<CONFIG:MinSizeRel>:-Os>$<$<CONFIG:RelWithDebInfo>:-O2>")
|
||||
set(CMAKE_Swift_FLAGS_DEBUG "-Onone" PARENT_SCOPE)
|
||||
set(CMAKE_Swift_FLAGS_RELEASE "-O" PARENT_SCOPE)
|
||||
set(CMAKE_Swift_FLAGS_MINSIZEREL "-Osize" PARENT_SCOPE)
|
||||
endif ()
|
||||
endfunction()
|
||||
|
||||
function(SetWarningSettings TARGET)
|
||||
if (LINUX)
|
||||
target_compile_options(${TARGET} PRIVATE -Wall -Wno-unknown-pragmas)
|
||||
elseif (WIN32)
|
||||
if (MSVC)
|
||||
set_target_properties(${TARGET} PROPERTIES COMPILE_FLAGS "/wd4068")
|
||||
set_target_properties(${TARGET} PROPERTIES LINK_FLAGS "/ignore:4099")
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(SetOutputDirs BASE_DIR)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${BASE_DIR}" PARENT_SCOPE)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${BASE_DIR}/release" PARENT_SCOPE)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${BASE_DIR}/minsizerel" PARENT_SCOPE)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${BASE_DIR}/relwithdebinfo" PARENT_SCOPE)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${BASE_DIR}/debug" PARENT_SCOPE)
|
||||
set(CMAKE_DEBUG_POSTFIX "d" PARENT_SCOPE)
|
||||
endfunction()
|
||||
25
cmake/functions/SetShaderDependency.cmake
Normal file
25
cmake/functions/SetShaderDependency.cmake
Normal file
@@ -0,0 +1,25 @@
|
||||
function(SetShaderDependency TARGET SHADER_SRC_FOLDER SHADER_OUTPUT_FOLDER)
|
||||
if (NOT EXISTS ${SHADER_OUTPUT_FOLDER})
|
||||
file(MAKE_DIRECTORY ${SHADER_OUTPUT_FOLDER})
|
||||
endif ()
|
||||
|
||||
file(GLOB SHADER_SRC_FILES ${SHADER_SRC_FOLDER}/*)
|
||||
list(FILTER SHADER_SRC_FILES EXCLUDE REGEX ".*\\.(hpp|cpp)$")
|
||||
foreach(SHADER_FILE ${SHADER_SRC_FILES})
|
||||
get_filename_component(FILENAME ${SHADER_FILE} NAME_WLE)
|
||||
if (NOT ${FILENAME} IN_LIST PROCESSED_FILES)
|
||||
list(APPEND PROCESSED_FILES ${FILENAME})
|
||||
list(APPEND OUTPUT_HEADERS ${SHADER_OUTPUT_FOLDER}/${FILENAME}.h)
|
||||
list(APPEND OUTPUT_SOURCES ${SHADER_OUTPUT_FOLDER}/${FILENAME}.c)
|
||||
endif()
|
||||
endforeach()
|
||||
set(SHADER_EXPECTED_OUTPUT ${OUTPUT_HEADERS} ${OUTPUT_SOURCES})
|
||||
|
||||
add_custom_command(OUTPUT ${SHADER_EXPECTED_OUTPUT}
|
||||
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_BINARY_DIR}/TryCompileShaders.cmake
|
||||
DEPENDS ${SHADER_SRC_FILES}
|
||||
COMMENT "Recompiling shaders")
|
||||
add_custom_target(RecompileShaders ALL
|
||||
DEPENDS ${SHADER_EXPECTED_OUTPUT})
|
||||
add_dependencies(${TARGET} RecompileShaders)
|
||||
endfunction(SetShaderDependency)
|
||||
30
cmake/functions/SetupVulkan.cmake
Normal file
30
cmake/functions/SetupVulkan.cmake
Normal file
@@ -0,0 +1,30 @@
|
||||
function(SetupVulkan TARGET)
|
||||
if (APPLE)
|
||||
find_package(MoltenVK REQUIRED)
|
||||
target_link_libraries(${TARGET} PRIVATE ${MoltenVK_LIBRARIES})
|
||||
else ()
|
||||
find_package(Vulkan REQUIRED)
|
||||
target_link_libraries(${TARGET} PRIVATE Vulkan::Vulkan)
|
||||
if (NO_SHADERC)
|
||||
message("Disable shaderc linking")
|
||||
else()
|
||||
find_package(Vulkan OPTIONAL_COMPONENTS shaderc_combined)
|
||||
if (Vulkan_shaderc_combined_FOUND)
|
||||
target_link_libraries(${TARGET} PRIVATE Vulkan::shaderc_combined)
|
||||
target_compile_definitions(${TARGET} PRIVATE HAS_SHADERC)
|
||||
endif ()
|
||||
endif ()
|
||||
endif ()
|
||||
target_include_directories(${TARGET} PUBLIC ${Vulkan_INCLUDE_DIR})
|
||||
|
||||
if (ANDROID)
|
||||
add_definitions(-DVK_USE_PLATFORM_ANDROID_KHR)
|
||||
elseif (WIN32)
|
||||
add_definitions(-DVK_USE_PLATFORM_WIN32_KHR)
|
||||
elseif (LINUX)
|
||||
add_definitions(-DVK_USE_PLATFORM_XCB_KHR)
|
||||
find_package(XCB REQUIRED)
|
||||
target_link_libraries(${TARGET} PRIVATE ${XCB_LIBRARIES})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
10
cmake/functions/Utils.cmake
Normal file
10
cmake/functions/Utils.cmake
Normal file
@@ -0,0 +1,10 @@
|
||||
function(FindCmakeConfigDirs BASE_DIR OUTPUT_NAME)
|
||||
file(GLOB_RECURSE ALL_CONFIGS "${BASE_DIR}/*[Cc]onfig.cmake")
|
||||
set(PACKAGE_SUB_DIRS "")
|
||||
foreach(CONF ${ALL_CONFIGS})
|
||||
get_filename_component(DIR_NAME "${CONF}" DIRECTORY)
|
||||
list(APPEND PACKAGE_SUB_DIRS "${DIR_NAME}")
|
||||
endforeach()
|
||||
list(REMOVE_DUPLICATES PACKAGE_SUB_DIRS)
|
||||
set(${OUTPUT_NAME} ${PACKAGE_SUB_DIRS} PARENT_SCOPE)
|
||||
endfunction()
|
||||
15
cmake/functions/VarsFromFile.cmake
Normal file
15
cmake/functions/VarsFromFile.cmake
Normal file
@@ -0,0 +1,15 @@
|
||||
function(VarsFromFile filename)
|
||||
if (EXISTS ${filename})
|
||||
file(STRINGS ${filename} ConfigContents)
|
||||
foreach(NameAndValue ${ConfigContents})
|
||||
# Strip leading spaces
|
||||
string(REGEX REPLACE "^[ ]+" "" NameAndValue ${NameAndValue})
|
||||
# Find variable name
|
||||
string(REGEX MATCH "^[^=]+" Name ${NameAndValue})
|
||||
# Find the value
|
||||
string(REPLACE "${Name}=" "" Value ${NameAndValue})
|
||||
# Set the variable
|
||||
set(${Name} "${Value}" PARENT_SCOPE)
|
||||
endforeach()
|
||||
endif ()
|
||||
endfunction(VarsFromFile)
|
||||
Reference in New Issue
Block a user