diff --git a/3rdParty/CMakeLists.txt b/3rdParty/CMakeLists.txt index e819116..44b0cef 100644 --- a/3rdParty/CMakeLists.txt +++ b/3rdParty/CMakeLists.txt @@ -18,6 +18,7 @@ add_subdirectory(imgui) add_subdirectory(tracy) add_subdirectory(libstud-uuid) add_subdirectory(rapidyaml) +add_subdirectory(libjpeg-turbo) #TODO move into a different file diff --git a/3rdParty/libjpeg-turbo/CMakeLists.txt b/3rdParty/libjpeg-turbo/CMakeLists.txt new file mode 100644 index 0000000..f88af99 --- /dev/null +++ b/3rdParty/libjpeg-turbo/CMakeLists.txt @@ -0,0 +1,30 @@ +include(FetchContent) + +Find_Package(libjpeg-turbo QUIET) +if (libjpeg-turbo_FOUND) + message("Using system libjpeg-turbo") +else () + file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/deps_ljt) + execute_process( + COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} -DTOOLCHAIN_FILE=${TOOLCHAIN_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/ext + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/deps_ljt + ) + execute_process( + COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR}/deps_ljt + RESULT_VARIABLE build_result + ) + if (NOT ${build_result} EQUAL "0") + message(FATAL_ERROR "Failed to build libjpeg-turbo!") + endif() + + set(libjpeg-turbo_BUILT "built libjpeg-turbo" CACHE INTERNAL ON) +endif () + + +function(LinkLibJpegTurbo TARGET) + if (libjpeg-turbo_BUILT) + list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/deps_ljt/INSTALL/lib/cmake) + endif() + find_package(libjpeg-turbo REQUIRED) + target_link_libraries(${TARGET} PUBLIC libjpeg-turbo::turbojpeg-static) +endfunction() \ No newline at end of file diff --git a/3rdParty/libjpeg-turbo/ext/CMakeLists.txt b/3rdParty/libjpeg-turbo/ext/CMakeLists.txt new file mode 100644 index 0000000..8e97fab --- /dev/null +++ b/3rdParty/libjpeg-turbo/ext/CMakeLists.txt @@ -0,0 +1,22 @@ +cmake_minimum_required(VERSION 3.16) +project(build_libjpeg-turbo) +include(ExternalProject) + +if(NOT DEFINED LIBJPEGTURBO_REPO) + set(LIBJPEGTURBO_REPO https://github.com/libjpeg-turbo/libjpeg-turbo.git) +endif () + +ExternalProject_Add(libjpegturbo + GIT_REPOSITORY ${LIBJPEGTURBO_REPO} + GIT_TAG 3.0.3 + GIT_SHALLOW TRUE + SOURCE_DIR libjpegturbo + BINARY_DIR libjpegturbo-build + CMAKE_GENERATOR ${CMAKE_GENERATOR} + CMAKE_ARGS + -DBUILD_SHARED_LIBS:BOOL=OFF + -DENABLE_SHARED:BOOL=OFF + -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE} + -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL + -DCMAKE_BUILD_TYPE:STRING=Release + ) \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 4418861..45da8cb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,19 +58,11 @@ endif () SetupVulkan(openVulkanoCpp) if (NOT ANDROID AND NOT IOS) - Find_Package(libjpeg-turbo) target_link_libraries(openVulkanoCpp PRIVATE glfw pugixml) - if (libjpeg-turbo_FOUND) - target_link_libraries(openVulkanoCpp PRIVATE libjpeg-turbo::turbojpeg) - endif() target_link_libraries(openVulkanoCpp PRIVATE ftxui::screen ftxui::dom ftxui::component) endif() list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/deps/INSTALL) -if (IOS) - target_link_libraries(openVulkanoCpp PRIVATE "/opt/libjpeg-turbo-ios/lib/libturbojpeg.a") - target_include_directories(openVulkanoCpp PRIVATE "/opt/libjpeg-turbo-ios/include") -endif () target_link_libraries(openVulkanoCpp PRIVATE magic_enum yaml-cpp fmt spdlog glm pugixml stb eigen utf8cpp imgui_internal TracyClient stud-uuid) @@ -85,6 +77,6 @@ SetGlmDefines(openVulkanoCpp) LinkAssimp(openVulkanoCpp) LinkLibArchive(openVulkanoCpp) - +LinkLibJpegTurbo(openVulkanoCpp) set(VS_STARTUP_PROJECT openVulkanoCpp)