11#Codec JPG
22cmake_minimum_required (VERSION 3.10 )
33
4- file (GLOB_RECURSE sourceFiles
5- "./Source/*.h"
6- "./Source/*.cpp"
4+ include (ExternalProject )
5+
6+ set (LibJpegTurboFolder ../../External/libjpeg-turbo)
7+ get_filename_component (LibJpegTurboFolder "${LibJpegTurboFolder} " ABSOLUTE )
8+ set (NASMPATH ${CMAKE_CURRENT_SOURCE_DIR} /../../External/bintools/nasm-2.15.05/nasm.exe)
9+ get_filename_component (NASMPATH "${NASMPATH} " ABSOLUTE )
10+ set (TurboJpegBinDir ${CMAKE_BINARY_DIR} /libjpeg-turbo)
11+
12+ set (LibJpegTurboArgs
13+ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
14+ -DENABLE_STATIC=FALSE
15+ -DWITH_FUZZ=FALSE
16+ -DCMAKE_INSTALL_PREFIX=${TurboJpegBinDir} /install
17+ -DWITH_JPEG=FALSE # Disable JPEG codec, we only need TurboJPEG
718)
819
9- set (TargetName CodecJPG)
10- add_library (${TargetName} ${sourceFiles} )
11-
12-
13- set (libjpeg-turboFolder ../../External/libjpeg-turbo)
1420#Enable ASM provided by NASM
15-
1621if (${CMAKE_SYSTEM_NAME} MATCHES "Windows" AND NOT ${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Linux" )
17- set (CMAKE_ASM_NASM_COMPILER ${CMAKE_CURRENT_SOURCE_DIR} /../../External/bintools/nasm-2.15.05/nasm.exe )
22+ list ( APPEND LibJpegTurboArgs -DCMAKE_ASM_NASM_COMPILER= ${NASMPATH} )
1823endif ()
19- #set(ENV{ASM_NASM} ${CMAKE_CURRENT_SOURCE_DIR}/../../External/bintools/nasm-2.15.05/nasm.exe)
20-
21- #set(CMAKE_ASM_COMPILE_OBJECT "-I<CMAKE_CURRENT_SOURCE_DIR>/../../External/libjpeg-turbo/simd/nasm
22- # -I<CMAKE_CURRENT_SOURCE_DIR>/../../External/libjpeg-turbo/simd/x86_64 <SOURCE>")
23-
2424
25+ ExternalProject_Add (libjpeg-turbo
26+ SOURCE_DIR ${LibJpegTurboFolder}
27+ BINARY_DIR ${TurboJpegBinDir}
28+ CMAKE_ARGS ${LibJpegTurboArgs}
29+ INSTALL_COMMAND "" # <--- disables 'ninja install'
30+ BUILD_COMMAND ${CMAKE_COMMAND} --build . --target turbojpeg
31+ BUILD_BYPRODUCTS ${TurboJpegBinDir} /turbojpeg.dll
32+ )
2533
26- option (ENABLE_STATIC "Build static libraries" FALSE )
27- set (WITH_FUZZ FALSE )
34+ file (GLOB_RECURSE sourceFiles
35+ "./Source/*.h"
36+ "./Source/*.cpp"
37+ )
2838
39+ set (TargetName CodecJPG)
40+ add_library (${TargetName} ${sourceFiles} )
2941
30- add_subdirectory (${libjpeg-turboFolder} ./external/libjpeg-turbo )
42+ add_dependencies (${TargetName} libjpeg-turbo )
43+ target_link_libraries (${TargetName} PRIVATE ${TurboJpegBinDir} /turbojpeg.lib ) # adjust to match built target name
3144
32- target_include_directories (${TargetName} PRIVATE ${libjpeg-turboFolder} )
45+ add_custom_command (TARGET libjpeg-turbo POST_BUILD
46+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${TurboJpegBinDir} /turbojpeg.dll ${CMAKE_BINARY_DIR} /${CMAKE_CFG_INTDIR}/bin/ )
47+ target_include_directories (${TargetName} PRIVATE ${LibJpegTurboFolder} /src )
3348
34- target_link_libraries (${TargetName} turbojpeg )
3549if (${CMAKE_SYSTEM_NAME} MATCHES "Windows" AND NOT MINGW)
36- target_link_options (${TargetName} PUBLIC "/DELAYLOAD:$< TARGET_FILE_BASE_NAME : turbojpeg > .dll" )
50+ target_link_options (${TargetName} PUBLIC "/DELAYLOAD:turbojpeg.dll" )
3751else ()
3852endif ()
0 commit comments