Files
Seele/cmake/SuperBuild.cmake
T

194 lines
6.0 KiB
CMake
Raw Normal View History

2020-02-05 20:58:58 +01:00
include (ExternalProject)
2022-11-22 22:11:37 +01:00
#--------------ZLIB------------------------------
2023-02-13 14:56:13 +01:00
add_subdirectory(${ZLIB_ROOT} ${ZLIB_ROOT})
2022-11-17 16:47:42 +01:00
2022-11-22 22:11:37 +01:00
#--------------FreeType------------------------------
2022-11-17 16:47:42 +01:00
add_subdirectory(${FREETYPE_ROOT})
2020-06-02 11:46:18 +02:00
#------------ASSIMP---------------
set(ASSIMP_BUILD_TESTS OFF CACHE INTERNAL "")
2021-03-31 12:18:16 +02:00
set(ASSIMP_BUILD_SAMPLES OFF CACHE INTERNAL "")
set(ASSIMP_BUILD_OVERALLS OFF CACHE INTERNAL "")
2022-11-29 16:34:42 +01:00
set(ASSIMP_BUILD_ASSIMP_TOOLS OFF CACHE INTERNAL "")
2022-04-30 20:35:25 +02:00
add_subdirectory(${ASSIMP_ROOT})
2020-06-02 11:46:18 +02:00
target_compile_definitions(assimp PRIVATE _SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING)
2021-10-13 15:20:30 +02:00
if(WIN32)
2023-02-24 22:09:07 +01:00
target_compile_options(assimp PRIVATE /WX- /MP14)
2021-10-13 15:20:30 +02:00
else()
2022-04-30 20:35:25 +02:00
target_compile_options(assimp PRIVATE -Wno-error -fPIC)
target_compile_options(IrrXML PRIVATE -fPIC)
2021-10-13 15:20:30 +02:00
endif()
2020-02-05 20:58:58 +01:00
2021-08-21 18:02:53 +02:00
#-----------------KTX----------------------------
2022-03-26 17:37:30 +01:00
set(KTX_FEATURE_TESTS off)
2022-11-29 16:34:42 +01:00
set(KTX_FEATURE_TOOLS off)
2021-09-23 10:10:39 +02:00
2023-10-09 15:12:07 +02:00
add_subdirectory(${KTX_ROOT})
2021-08-21 18:02:53 +02:00
2023-10-09 15:12:07 +02:00
if(MSVC)
target_compile_options(ktx PRIVATE /WX-)
else()
target_compile_options(ktx PRIVATE -Wno-error)
endif()
2023-08-26 15:19:12 +02:00
2020-05-05 01:51:13 +02:00
#--------------------JSON------------------
set(JSON_MultipleHeaders ON CACHE INTERNAL "")
set(JSON_BuildTests OFF CACHE INTERNAL "")
2022-11-22 22:11:37 +01:00
set(JSON_Install ON CACHE INTERNAL "")
2020-05-05 01:51:13 +02:00
2022-04-30 20:35:25 +02:00
add_subdirectory(${JSON_ROOT})
2020-02-05 20:58:58 +01:00
#--------------GLFW------------------------------
2020-06-02 11:46:18 +02:00
set(ENKITS_BUILD_EXAMPLES OFF CACHE BOOL "Build basic example applications" )
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "GLFW lib only" )
set(GLFW_BUILD_TESTS OFF CACHE BOOL "GLFW lib only" )
set(GLFW_BUILD_DOCS OFF CACHE BOOL "GLFW lib only" )
set(GLFW_BUILD_INSTALL OFF CACHE BOOL "GLFW lib only" )
2021-10-15 23:12:29 +02:00
set(GLFW_VULKAN_STATIC OFF CACHE BOOL "GLFW vulkan static")
2020-05-05 01:51:13 +02:00
2022-04-30 20:35:25 +02:00
add_subdirectory(${GLFW_ROOT})
2022-04-13 13:01:35 +02:00
2022-04-28 19:24:44 +02:00
#--------------EnTT------------------------------
2022-04-30 20:35:25 +02:00
add_subdirectory(${ENTT_ROOT})
2022-04-28 19:24:44 +02:00
#--------------thread-pool------------------------------
add_subdirectory(${THREADPOOL_ROOT})
2023-10-09 15:12:07 +02:00
if(MSVC)
target_compile_options(ThreadPool INTERFACE /W0)
endif()
2020-05-05 01:51:13 +02:00
2020-02-05 20:58:58 +01:00
#--------------SLang------------------------------
2023-10-09 15:12:07 +02:00
string(TOLOWER release_x64 SLANG_CONFIG)
2020-03-25 11:55:50 +01:00
if(WIN32)
2022-04-30 20:35:25 +02:00
string(TOLOWER ${SLANG_ROOT}/bin/windows-${CMAKE_PLATFORM}/release SLANG_BINARY_DIR)
ExternalProject_Add(slang-build
SOURCE_DIR ${SLANG_ROOT}
BINARY_DIR ${SLANG_ROOT}
2023-10-09 15:12:07 +02:00
CONFIGURE_COMMAND ${SLANG_ROOT}/premake.bat vs2019 --file=${SLANG_ROOT}/premake5.lua gmake --arch=x64 --deps=true
2023-02-13 14:56:13 +01:00
BUILD_COMMAND msbuild slang.sln -p:PlatformToolset=v143 -p:Configuration=Release -p:Platform=${CMAKE_PLATFORM}
2022-11-22 22:11:37 +01:00
INSTALL_COMMAND ""
)
2020-03-25 11:55:50 +01:00
elseif(UNIX)
2022-04-30 20:35:25 +02:00
ExternalProject_Add(slang-build
SOURCE_DIR ${SLANG_ROOT}
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}
2023-10-09 15:12:07 +02:00
CONFIGURE_COMMAND ${CMAKE_SOURCE_DIR}/premake5 --file=${CMAKE_SOURCE_DIR}/external/slang/premake5.lua gmake2 --arch=x64 --deps=true --build-location=build/linux
2022-04-30 20:35:25 +02:00
BUILD_COMMAND make -C ${CMAKE_SOURCE_DIR}/external/slang/build/linux config=${SLANG_CONFIG}
2022-11-22 22:11:37 +01:00
INSTALL_COMMAND ""
)
2020-03-17 02:41:33 +01:00
endif()
2023-02-13 14:56:13 +01:00
add_library(slang-llvm SHARED IMPORTED)
2022-11-29 16:34:42 +01:00
target_link_libraries(slang-llvm INTERFACE
$<BUILD_INTERFACE:${SLANG_BINARY_DIR}/slang.lib>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/lib/slang.lib>
)
set_target_properties(slang-llvm PROPERTIES IMPORTED_IMPLIB ${SLANG_BINARY_DIR}/slang.lib)
set_target_properties(slang-llvm PROPERTIES IMPORTED_LOCATION ${SLANG_BINARY_DIR}/slang-llvm.dll)
2023-02-13 14:56:13 +01:00
add_library(slang-glslang SHARED IMPORTED)
2022-11-29 16:34:42 +01:00
target_link_libraries(slang-glslang INTERFACE
$<BUILD_INTERFACE:${SLANG_BINARY_DIR}/slang.lib>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/lib/slang.lib>
)
set_target_properties(slang-glslang PROPERTIES IMPORTED_IMPLIB ${SLANG_BINARY_DIR}/slang.lib)
set_target_properties(slang-glslang PROPERTIES IMPORTED_LOCATION ${SLANG_BINARY_DIR}/slang-glslang.dll)
2023-02-13 14:56:13 +01:00
add_library(slang SHARED IMPORTED)
2020-10-03 11:00:10 +02:00
2022-11-22 22:11:37 +01:00
target_include_directories(slang INTERFACE
$<BUILD_INTERFACE:${SLANG_ROOT}/>
$<INSTALL_INTERFACE:include>
)
2022-11-29 16:34:42 +01:00
target_link_libraries(slang INTERFACE
$<BUILD_INTERFACE:${SLANG_BINARY_DIR}/slang.lib>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/lib/slang.lib>
)
target_link_libraries(slang INTERFACE slang-glslang)
target_link_libraries(slang INTERFACE slang-llvm)
set_target_properties(slang PROPERTIES IMPORTED_IMPLIB ${SLANG_BINARY_DIR}/slang.lib)
set_target_properties(slang PROPERTIES IMPORTED_LOCATION ${SLANG_BINARY_DIR}/slang.dll)
2022-11-17 16:47:42 +01:00
2022-11-22 22:11:37 +01:00
install(DIRECTORY
${SLANG_ROOT}
DESTINATION ${CMAKE_INSTALL_PREFIX}/include
FILES_MATCHING PATTERN "*.h"
)
2022-11-29 16:34:42 +01:00
install(FILES
$<TARGET_PROPERTY:slang,IMPORTED_IMPLIB>
$<TARGET_PROPERTY:slang-glslang,IMPORTED_IMPLIB>
$<TARGET_PROPERTY:slang-llvm,IMPORTED_IMPLIB>
DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
)
install(FILES
$<TARGET_PROPERTY:slang,IMPORTED_LOCATION>
$<TARGET_PROPERTY:slang-glslang,IMPORTED_LOCATION>
$<TARGET_PROPERTY:slang-llvm,IMPORTED_LOCATION>
DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
)
2022-11-22 22:11:37 +01:00
#--------------CRC++------------------------------
add_library(crcpp INTERFACE)
target_include_directories(crcpp INTERFACE
$<BUILD_INTERFACE:${CRCPP_ROOT}/inc>
$<INSTALL_INTERFACE:include>
)
install(FILES
${CRCPP_ROOT}/inc/CRC.h
DESTINATION ${CMAKE_INSTALL_PREFIX}/include
)
#--------------GLM------------------------------
add_library(glm INTERFACE)
target_include_directories(glm INTERFACE
$<BUILD_INTERFACE:${GLM_ROOT}>
$<INSTALL_INTERFACE:include/glm>
)
install(DIRECTORY
${GLM_ROOT}/glm
DESTINATION ${CMAKE_INSTALL_PREFIX}/include
FILES_MATCHING PATTERN "*.h*"
)
install(DIRECTORY
${GLM_ROOT}/glm
DESTINATION ${CMAKE_INSTALL_PREFIX}/include
FILES_MATCHING PATTERN "*.inl"
)
#--------------STB-----------------------------------
add_library(stb INTERFACE)
target_include_directories(stb INTERFACE
$<BUILD_INTERFACE:${STB_ROOT}>
$<INSTALL_INTERFACE:include>
)
install(DIRECTORY
2022-11-29 16:34:42 +01:00
${STB_ROOT}
2022-11-22 22:11:37 +01:00
DESTINATION ${CMAKE_INSTALL_PREFIX}/include
FILES_MATCHING PATTERN "*.h"
)
2022-11-29 16:34:42 +01:00
#--------------ODEINT-----------------------------------
add_library(odeint INTERFACE)
target_include_directories(odeint INTERFACE
$<BUILD_INTERFACE:${ODEINT_ROOT}>
$<INSTALL_INTERFACE:include>
)
install(DIRECTORY
${ODEINT_ROOT}
DESTINATION ${CMAKE_INSTALL_PREFIX}/include
FILES_MATCHING PATTERN "*.hpp"
)