include(ExternalProject) add_subdirectory(glm) if (NOT ANDROID AND NOT IOS) add_subdirectory(glfw) add_subdirectory(ftxui) endif() add_subdirectory(assimp) add_subdirectory(fmt) add_subdirectory(spdlog) add_subdirectory(yaml-cpp) add_subdirectory(magic-enum) add_subdirectory(pugixml) add_subdirectory(stb) add_subdirectory(eigen) add_subdirectory(utfcpp) add_subdirectory(imgui) add_subdirectory(tracy) add_subdirectory(libstud-uuid) add_subdirectory(rapidyaml) #TODO move into a different file find_package(LibArchive QUIET) if (NOT LibArchive_FOUND) file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/deps) execute_process( COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} -DTOOLCHAIN_FILE=${TOOLCHAIN_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/libarchive WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/deps ) execute_process( COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR}/deps RESULT_VARIABLE build_result ) if (NOT ${build_result} EQUAL "0") message(FATAL_ERROR "Failed to build lib archive!") endif() list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/deps/INSTALL) else () message("Using system LibArchive") set(USING_SYSTEM_LIBARCHIVE ON PARENT_SCOPE) endif () function(LinkLibArchive TARGET) find_package(LibArchive REQUIRED) set(ZLIB_USE_STATIC_LIBS ON) find_package(ZLIB REQUIRED) find_package(LZ4 QUIET) find_package(zstd QUIET) find_package(BZip2 QUIET) find_package(LibLZMA QUIET) target_include_directories(${TARGET} PRIVATE ${LibArchive_INCLUDE_DIR}) target_link_libraries(${TARGET} PRIVATE ${LibArchive_LIBRARIES} ${ZLIB_LIBRARIES} ${zstd_LIBRARIES} ${LZ4_LIBRARIES}) if (BZIP2_LIBRARIES) target_link_libraries(${TARGET} PRIVATE ${BZIP2_LIBRARIES}) endif() if (LIBLZMA_LIBRARIES) target_link_libraries(${TARGET} PRIVATE ${LIBLZMA_LIBRARIES}) endif() endfunction()