set(jpeg16_original_sources src/jcapistd.c src/jccolor.c src/jcdiffct.c src/jclossls.c src/jcmainct.c src/jcprepct.c src/jcsample.c src/jdapistd.c src/jdcolor.c src/jddiffct.c src/jdlossls.c src/jdmainct.c src/jdpostct.c src/jdsample.c src/jutils.c) set(jpeg12_original_sources ${jpeg16_original_sources} src/jccoefct.c src/jcdctmgr.c src/jdcoefct.c src/jddctmgr.c src/jdmerge.c src/jfdctfst.c src/jfdctint.c src/jidctflt.c src/jidctfst.c src/jidctint.c src/jidctred.c src/jquant1.c src/jquant2.c) set(jpeg_original_sources ${jpeg12_original_sources} src/jaricom.c src/jcapimin.c src/jcarith.c src/jchuff.c src/jcicc.c src/jcinit.c src/jclhuff.c src/jcmarker.c src/jcmaster.c src/jcomapi.c src/jcparam.c src/jcphuff.c src/jctrans.c src/jdapimin.c src/jdarith.c src/jdatadst.c src/jdatasrc.c src/jdhuff.c src/jdicc.c src/jdinput.c src/jdlhuff.c src/jdmarker.c src/jdmaster.c src/jdphuff.c src/jdtrans.c src/jerror.c src/jfdctflt.c src/jmemmgr.c src/jmemnobs.c src/jpeg_nbits.c) # Make copies of the source files for the different bit counts, so that all the object file names # are unique in the static archive. This avoids duplicate warnings for certain linkers and debug # info extractors (like Apple's ld and dsymutil). function(qt_internal_copy_jpeg_sources in_sources infix out_var) set(jpeg_sources "") foreach(src_file ${in_sources}) get_filename_component(src_file_name "${src_file}" NAME_WLE) get_filename_component(src_file_extension "${src_file}" LAST_EXT) set(dest_path "${CMAKE_CURRENT_BINARY_DIR}/${src_file_name}${infix}${src_file_extension}") configure_file(${src_file} "${dest_path}" COPYONLY) message(DEBUG "Copying jpeg source file ${src_file} to ${dest_path}.") list(APPEND jpeg_sources "${dest_path}") endforeach() set(${out_var} "${jpeg_sources}" PARENT_SCOPE) endfunction() qt_internal_copy_jpeg_sources("${jpeg16_original_sources}" "_16" jpeg16_sources) qt_internal_copy_jpeg_sources("${jpeg12_original_sources}" "_12" jpeg12_sources) qt_internal_copy_jpeg_sources("${jpeg_original_sources}" "" jpeg_sources) qt_internal_add_3rdparty_library(BundledLibjpeg16bits STATIC SKIP_AUTOMOC SOURCES ${jpeg16_sources} DEFINES BITS_IN_JSAMPLE=16 INCLUDE_DIRECTORIES src PUBLIC_INCLUDE_DIRECTORIES $ ) qt_internal_add_3rdparty_library(BundledLibjpeg12bits STATIC SKIP_AUTOMOC SOURCES ${jpeg12_sources} DEFINES BITS_IN_JSAMPLE=12 INCLUDE_DIRECTORIES src PUBLIC_INCLUDE_DIRECTORIES $ ) qt_internal_add_3rdparty_library(BundledLibjpeg QMAKE_LIB_NAME libjpeg STATIC SKIP_AUTOMOC INSTALL SOURCES ${jpeg_sources} $ $ INCLUDE_DIRECTORIES src PUBLIC_INCLUDE_DIRECTORIES $ ) qt_internal_add_3rdparty_header_module(JpegPrivate EXTERNAL_HEADERS src/jpeglib.h src/jerror.h src/jconfig.h src/jmorecfg.h ) qt_disable_warnings(BundledLibjpeg) qt_disable_warnings(BundledLibjpeg12bits) qt_disable_warnings(BundledLibjpeg16bits) qt_set_symbol_visibility_hidden(BundledLibjpeg) qt_set_symbol_visibility_hidden(BundledLibjpeg12bits) qt_set_symbol_visibility_hidden(BundledLibjpeg16bits) qt_internal_extend_target(BundledLibjpeg CONDITION MSVC DEFINES _CRT_SECURE_NO_WARNINGS ) if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang") target_compile_options(BundledLibjpeg PRIVATE "-Wno-unused-parameter") endif()