Skip to content

Commit a264c77

Browse files
committed
test
1 parent 356dee3 commit a264c77

File tree

1 file changed

+64
-56
lines changed

1 file changed

+64
-56
lines changed

Codecs/CodecJPG/CMakeLists.txt

Lines changed: 64 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -9,93 +9,101 @@ set(NASMPATH ${CMAKE_CURRENT_SOURCE_DIR}/../../External/bintools/nasm-2.15.05/na
99
get_filename_component(NASMPATH "${NASMPATH}" ABSOLUTE)
1010

1111

12-
if(CMAKE_GENERATOR STREQUAL "Ninja")
13-
set(TurboJpegBinDir ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/libjpeg-turbo)
14-
get_filename_component(TurboJpegBinDir "${TurboJpegBinDir}" ABSOLUTE)
15-
16-
set(LibJpegTurboArgs
17-
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
18-
-DENABLE_STATIC=FALSE
19-
-DWITH_FUZZ=FALSE
20-
-DCMAKE_INSTALL_PREFIX=${TurboJpegBinDir}/install
21-
-DWITH_JPEG=FALSE # Disable JPEG codec, we only need TurboJPEG
22-
)
12+
# =========================
13+
# =========================
2314

24-
#Enable ASM provided by NASM
25-
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows" AND NOT ${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Linux")
26-
list(APPEND LibJpegTurboArgs -DCMAKE_ASM_NASM_COMPILER=${NASMPATH})
15+
# ======== Detect Multi-config vs Single-config ========
16+
if(CMAKE_CONFIGURATION_TYPES)
17+
set(IS_MULTI_CONFIG TRUE)
18+
else()
19+
set(IS_MULTI_CONFIG FALSE)
2720
endif()
2821

22+
# ======== Platform-specific file extensions ========
2923
if(WIN32)
30-
set(TURBOJPEG_RUNTIME "${TurboJpegBinDir}/turbojpeg.dll")
31-
set(TURBOJPEG_IMPLIB "${TurboJpegBinDir}/turbojpeg.lib")
24+
set(LIB_EXT ".dll")
25+
set(IMPLIB_EXT ".lib")
3226
elseif(APPLE)
33-
set(TURBOJPEG_RUNTIME "${TurboJpegBinDir}/turbojpeg.dylib")
27+
set(LIB_EXT ".dylib")
28+
set(IMPLIB_EXT "") # No import libs on macOS
3429
else()
35-
set(TURBOJPEG_RUNTIME "${TurboJpegBinDir}/turbojpeg.so")
30+
set(LIB_EXT ".so")
31+
set(IMPLIB_EXT "") # No import libs on Linux
3632
endif()
3733

34+
# ======== External build directory ========
35+
set(TurboJpegBinBaseDir "${CMAKE_BINARY_DIR}/libjpeg-turbo")
3836

39-
ExternalProject_Add(libjpeg-turbo
40-
SOURCE_DIR ${LibJpegTurboFolder}
41-
BINARY_DIR ${TurboJpegBinDir}
42-
CMAKE_ARGS ${LibJpegTurboArgs}
43-
INSTALL_COMMAND "" # <--- disables 'ninja install'
44-
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG> --target turbojpeg
45-
BUILD_BYPRODUCTS ${TURBOJPEG_RUNTIME}
46-
)
47-
48-
add_library(libjpeg-turbo::libjpeg-turbo SHARED IMPORTED GLOBAL)
49-
50-
51-
set_target_properties(libjpeg-turbo::libjpeg-turbo PROPERTIES
52-
INTERFACE_INCLUDE_DIRECTORIES "${LibJpegTurboFolder}/src"
53-
IMPORTED_LOCATION "${TURBOJPEG_RUNTIME}"
54-
IMPORTED_IMPLIB "${TURBOJPEG_IMPLIB}" # Will be empty on non-Windows
55-
)
56-
else()
57-
# MSVC / Xcode (multi-config)
58-
set(TurboJpegBinDir_DEBUG ${CMAKE_BINARY_DIR}/libjpeg-turbo/Debug)
59-
get_filename_component(TurboJpegBinDir_DEBUG "${TurboJpegBinDir_DEBUG}" ABSOLUTE)
60-
set(TurboJpegBinDir_RELEASE ${CMAKE_BINARY_DIR}/libjpeg-turbo/Release)
61-
get_filename_component(TurboJpegBinDir_RELEASE "${TurboJpegBinDir_RELEASE}" ABSOLUTE)
62-
37+
# ======== CMake arguments for libjpeg-turbo ========
6338
set(LibJpegTurboArgs
6439
-DENABLE_STATIC=FALSE
6540
-DWITH_FUZZ=FALSE
66-
-DWITH_JPEG=FALSE # Disable JPEG codec, we only need TurboJPEG
67-
-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/libjpeg-turbo/install
41+
-DWITH_JPEG=FALSE
42+
-DCMAKE_INSTALL_PREFIX=${TurboJpegBinBaseDir}/install
6843
)
6944

70-
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows" AND NOT ${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Linux")
45+
# Enable NASM on Windows if needed
46+
if(WIN32 AND NOT ${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Linux")
7147
list(APPEND LibJpegTurboArgs -DCMAKE_ASM_NASM_COMPILER=${NASMPATH})
7248
endif()
7349

50+
# ======== Add ExternalProject ========
7451
ExternalProject_Add(libjpeg-turbo
7552
SOURCE_DIR ${LibJpegTurboFolder}
76-
BINARY_DIR ${CMAKE_BINARY_DIR}/libjpeg-turbo
53+
BINARY_DIR ${TurboJpegBinBaseDir}
7754
CMAKE_ARGS ${LibJpegTurboArgs}
7855
INSTALL_COMMAND ""
79-
BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config ${CMAKE_CFG_INTDIR} --target turbojpeg
80-
BUILD_BYPRODUCTS
81-
${TurboJpegBinDir_DEBUG}/turbojpeg.dll
82-
${TurboJpegBinDir_RELEASE}/turbojpeg.dll
56+
BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG> --target turbojpeg
8357
)
8458

59+
# ======== Declare Imported Library ========
8560
add_library(libjpeg-turbo::libjpeg-turbo SHARED IMPORTED GLOBAL)
8661

62+
if(IS_MULTI_CONFIG)
63+
# Multi-config: set per-config imported locations
64+
foreach(cfg ${CMAKE_CONFIGURATION_TYPES})
65+
string(TOUPPER "${cfg}" cfg_upper)
66+
set(cfg_bin_dir "${TurboJpegBinBaseDir}/${cfg}")
67+
68+
# Set runtime library
69+
set_target_properties(libjpeg-turbo::libjpeg-turbo PROPERTIES
70+
"IMPORTED_LOCATION_${cfg_upper}" "${cfg_bin_dir}/turbojpeg${LIB_EXT}"
71+
)
72+
73+
# Set import library on Windows
74+
if(WIN32)
75+
set_target_properties(libjpeg-turbo::libjpeg-turbo PROPERTIES
76+
"IMPORTED_IMPLIB_${cfg_upper}" "${cfg_bin_dir}/turbojpeg${IMPLIB_EXT}"
77+
)
78+
endif()
79+
endforeach()
80+
else()
81+
# Single-config: flat directory
82+
set(cfg_bin_dir "${TurboJpegBinBaseDir}")
83+
set_target_properties(libjpeg-turbo::libjpeg-turbo PROPERTIES
84+
IMPORTED_LOCATION "${cfg_bin_dir}/turbojpeg${LIB_EXT}"
85+
)
86+
87+
# Set import library on Windows
88+
if(WIN32)
89+
set_target_properties(libjpeg-turbo::libjpeg-turbo PROPERTIES
90+
IMPORTED_IMPLIB "${cfg_bin_dir}/turbojpeg${IMPLIB_EXT}"
91+
)
92+
endif()
93+
endif()
94+
95+
# ======== Include directories ========
8796
set_target_properties(libjpeg-turbo::libjpeg-turbo PROPERTIES
8897
INTERFACE_INCLUDE_DIRECTORIES "${LibJpegTurboFolder}/src"
89-
IMPORTED_LOCATION_DEBUG "${TurboJpegBinDir_DEBUG}/turbojpeg.dll"
90-
IMPORTED_LOCATION_RELEASE "${TurboJpegBinDir_RELEASE}/turbojpeg.dll"
91-
IMPORTED_IMPLIB_DEBUG "${TurboJpegBinDir_DEBUG}/turbojpeg.lib"
92-
IMPORTED_IMPLIB_RELEASE "${TurboJpegBinDir_RELEASE}/turbojpeg.lib"
9398
)
9499

95-
endif()
100+
# ======== Depend on ExternalProject ========
101+
add_dependencies(libjpeg-turbo::libjpeg-turbo libjpeg-turbo)
96102

97103

98-
add_dependencies(libjpeg-turbo::libjpeg-turbo libjpeg-turbo)
104+
105+
# =========================
106+
# =========================
99107

100108
file(GLOB_RECURSE sourceFiles
101109
"./Source/*.h"

0 commit comments

Comments
 (0)