decaf-emu/libraries/CMakeLists.txt
2022-05-07 13:37:35 +01:00

117 lines
4.3 KiB
CMake

# addrlib
add_library(addrlib STATIC
"addrlib/src/addrinterface.cpp"
"addrlib/src/core/addrelemlib.cpp"
"addrlib/src/core/addrlib.cpp"
"addrlib/src/core/addrobject.cpp"
"addrlib/src/r600/r600addrlib.cpp")
set_target_properties(addrlib PROPERTIES FOLDER libraries)
target_include_directories(addrlib
PRIVATE "addrlib/src"
PUBLIC "addrlib/include")
# libbinrec
set(BINREC_ENABLE_RTL_DEBUG_OPTIMIZE FALSE CACHE BOOL "Enable debug output from optimization passes")
set(BINREC_ENABLE_ASSERT FALSE CACHE BOOL "Enable basic assertion checks")
add_subdirectory(libbinrec)
set_target_properties(binrec PROPERTIES FOLDER libraries)
# catch
add_library(catch2 INTERFACE IMPORTED GLOBAL)
set_target_properties(catch2 PROPERTIES
INTERFACE_COMPILE_DEFINITIONS "CATCH_CONFIG_ENABLE_BENCHMARKING"
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/catch/single_include/catch2")
# cereal
add_library(cereal INTERFACE IMPORTED GLOBAL)
set_target_properties(cereal PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/cereal/include")
# cnl
add_library(cnl INTERFACE IMPORTED GLOBAL)
set_target_properties(cnl PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/cnl/include")
# excmd
add_library(excmd INTERFACE IMPORTED GLOBAL)
set_target_properties(excmd PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/excmd/src")
# fmt
add_subdirectory(fmt)
set_target_properties(fmt PROPERTIES FOLDER libraries)
# glslang
if(DECAF_VULKAN OR DECAF_BUILD_TOOLS)
set(BUILD_SHARED_LIBS OFF CACHE BOOL "glslang: BUILD_SHARED_LIBS" FORCE)
set(BUILD_TESTING OFF CACHE BOOL "glslang: BUILD_TESTING" FORCE)
set(ENABLE_HLSL OFF CACHE BOOL "glslang: ENABLE_HLSL" FORCE)
set(ENABLE_GLSLANG_BINARIES OFF CACHE BOOL "glslang: ENABLE_GLSLANG_BINARIES" FORCE)
set(ENABLE_OPT ON CACHE BOOL "glslang: ENABLE_OPT" FORCE)
set(ENABLE_SPVREMAPPER OFF CACHE BOOL "glslang: ENABLE_SPVREMAPPER" FORCE)
set(SKIP_GLSLANG_INSTALL ON CACHE BOOL "glslang: SKIP_GLSLANG_INSTALL" FORCE)
add_subdirectory(glslang)
macro(remove_flag_from_target _target _flag)
get_target_property(_target_cxx_flags ${_target} COMPILE_OPTIONS)
if(_target_cxx_flags)
list(REMOVE_ITEM _target_cxx_flags ${_flag})
set_target_properties(${_target} PROPERTIES COMPILE_OPTIONS "${_target_cxx_flags}")
endif()
endmacro()
# As we inherit spv::Builder in libgpu, we must remove -fno-rtti
remove_flag_from_target(SPIRV -fno-rtti)
endif()
# gsl
add_library(gsl INTERFACE IMPORTED GLOBAL)
set_target_properties(gsl PROPERTIES
INTERFACE_COMPILE_DEFINITIONS "GSL_THROWS_FOR_TESTING"
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/gsl-lite/include")
# imgui
add_library(imgui STATIC
"imgui/imgui.cpp"
"imgui/imgui_draw.cpp")
set_target_properties(imgui PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/imgui"
FOLDER libraries)
# ovsocket
add_library(ovsocket INTERFACE IMPORTED GLOBAL)
set_target_properties(ovsocket PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/ovsocket/ovsocket")
# peglib
add_library(peglib INTERFACE IMPORTED GLOBAL)
set_target_properties(peglib PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/cpp-peglib")
# pugixml
add_library(pugixml STATIC
"pugixml/src/pugixml.cpp")
set_target_properties(pugixml PROPERTIES
FOLDER libraries
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/pugixml/src")
# spdlog
set(SPDLOG_FMT_EXTERNAL ON CACHE BOOL "Use external fmt library instead of bundled" FORCE)
add_subdirectory(spdlog)
set_target_properties(spdlog PROPERTIES FOLDER libraries)
# tomlplusplus
add_library(tomlplusplus INTERFACE IMPORTED GLOBAL)
set_target_properties(tomlplusplus PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/tomlplusplus/include")
# Qt Advanced Docking System
if(DECAF_QT)
set(BUILD_STATIC TRUE CACHE BOOL "ADS: Build the static library")
set(BUILD_EXAMPLES FALSE CACHE BOOL "ADS: Build the examples")
set(ADS_VERSION "3.8.1" CACHE STRING "ADS: Version")
add_subdirectory(qtads EXCLUDE_FROM_ALL)
set_target_properties(qtadvanceddocking PROPERTIES
INTERFACE_COMPILE_DEFINITIONS "ADS_STATIC"
FOLDER libraries)
endif()