Add libjpeg-turbo dependency

This commit is contained in:
Georg Hagen
2024-05-28 00:15:08 +02:00
parent 36307e0b5b
commit 28e48d155a
4 changed files with 54 additions and 9 deletions

View File

@@ -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

30
3rdParty/libjpeg-turbo/CMakeLists.txt vendored Normal file
View File

@@ -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()

View File

@@ -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
)

View File

@@ -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)