Files

132 lines
3.8 KiB
CMake

# glm
set(BUILD_SHARED_LIBS OFF)
add_subdirectory(glm)
# stb
add_subdirectory(stb)
# SDL
if (NOT BUILD_SHARED_LIBS)
set(SDL_SHARED_ENABLED_BY_DEFAULT OFF CACHE BOOL "Don't build SDL as shared lib")
endif()
option(SDL_TEST "Build the SDL2_test library" OFF)
option(SDL_AUDIO_ENABLED_BY_DEFAULT "Enable the Audio subsystem" OFF)
add_subdirectory(sdl)
add_subdirectory(vk-bootstrap)
if (MSVC)
# target_compile_definitions(vk-bootstrap PRIVATE $<$<CONFIG:Debug>:_ITERATOR_DEBUG_LEVEL=1>)
endif()
if (BUILD_SHARED_LIBS)
set_target_properties(vk-bootstrap PROPERTIES
POSITION_INDEPENDENT_CODE ON
)
endif()
# vma
add_subdirectory(vma)
# volk
add_subdirectory(volk)
# FreeType
option(FT_DISABLE_ZLIB
"Disable use of system zlib and use internal zlib library instead." ON)
option(FT_DISABLE_BZIP2
"Disable support of bzip2 compressed fonts." ON)
option(FT_DISABLE_BROTLI
"Disable support of compressed WOFF2 fonts." ON)
option(FT_DISABLE_HARFBUZZ
"Disable HarfBuzz (used for improving auto-hinting of OpenType fonts)." ON)
option(FT_DISABLE_PNG
"Disable support of PNG compressed OpenType embedded bitmaps." ON)
option(SKIP_INSTALL_ALL "Skip install all" ON)
option(FT_ENABLE_ERROR_STRINGS
"Enable support for meaningful error descriptions." ON)
add_subdirectory(freetype)
add_library(freetype::freetype ALIAS freetype)
# nlohmann_json
option(JSON_MultipleHeaders "Use non-amalgamated version of the library." ON)
option(JSON_Install "Install CMake targets during install step." OFF)
add_subdirectory(json)
add_subdirectory(spdlog)
add_subdirectory(tinygltf)
add_subdirectory(tinyexr)
target_include_directories(tinyexr PUBLIC "${CMAKE_CURRENT_LIST_DIR}/tinyexr")
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
set(ASSIMP_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(ASSIMP_INJECT_DEBUG_POSTFIX OFF CACHE BOOL "" FORCE)
set(ASSIMP_INSTALL OFF CACHE BOOL "" FORCE)
set(ASSIMP_WARNINGS_AS_ERRORS OFF CACHE BOOL "" FORCE)
add_subdirectory(assimp)
set(IMGUI_DIR "${CMAKE_CURRENT_LIST_DIR}/imgui")
add_library(imgui STATIC
"${IMGUI_DIR}/imgui.cpp"
"${IMGUI_DIR}/imgui_draw.cpp"
"${IMGUI_DIR}/imgui_tables.cpp"
"${IMGUI_DIR}/imgui_widgets.cpp"
"${IMGUI_DIR}/imgui_demo.cpp"
# Backends you use:
"${IMGUI_DIR}/backends/imgui_impl_sdl2.cpp"
"${IMGUI_DIR}/backends/imgui_impl_vulkan.cpp"
)
target_include_directories(imgui PUBLIC
"${IMGUI_DIR}"
"${IMGUI_DIR}/backends"
)
# Because you use volk with Vulkan
target_compile_definitions(imgui PUBLIC
IMGUI_IMPL_VULKAN_USE_VOLK
)
target_link_libraries(imgui PUBLIC
SDL2::SDL2
volk
)
# Jolt Physics
set(DOUBLE_PRECISION OFF CACHE BOOL "" FORCE)
set(GENERATE_DEBUG_SYMBOLS ON CACHE BOOL "" FORCE)
set(OVERRIDE_CXX_FLAGS OFF CACHE BOOL "" FORCE)
set(CROSS_PLATFORM_DETERMINISTIC OFF CACHE BOOL "" FORCE)
set(INTERPROCEDURAL_OPTIMIZATION OFF CACHE BOOL "" FORCE)
set(FLOATING_POINT_EXCEPTIONS_ENABLED OFF CACHE BOOL "" FORCE)
set(CPP_EXCEPTIONS_ENABLED OFF CACHE BOOL "" FORCE)
set(CPP_RTTI_ENABLED OFF CACHE BOOL "" FORCE)
set(OBJECT_LAYER_BITS 16 CACHE STRING "" FORCE)
# Important for MSVC:
# OFF = use /MD or /MDd, matching your current project
# ON = use /MT or /MTd
set(USE_STATIC_MSVC_RUNTIME_LIBRARY OFF CACHE BOOL "" FORCE)
set(USE_SSE4_1 ON CACHE BOOL "" FORCE)
set(USE_SSE4_2 ON CACHE BOOL "" FORCE)
set(USE_AVX ON CACHE BOOL "" FORCE)
set(USE_AVX2 ON CACHE BOOL "" FORCE)
set(USE_AVX512 OFF CACHE BOOL "" FORCE)
set(USE_LZCNT ON CACHE BOOL "" FORCE)
set(USE_TZCNT ON CACHE BOOL "" FORCE)
set(USE_F16C ON CACHE BOOL "" FORCE)
set(USE_FMADD ON CACHE BOOL "" FORCE)
add_subdirectory(jolt/Build)
# 3rdparty/tracy is the Tracy repo
option(TRACY_ENABLE "" ON)
option(TRACY_ON_DEMAND "" ON)
add_subdirectory(tracy)