find_package(JPEG ${SAIL_CODEC_JPEG_REQUIRED_OPTION}) if (NOT JPEG_FOUND) return() endif() # This will add the following CMake rules to the CMake config for static builds so a client # application links against the required dependencies: # # find_dependency(JPEG REQUIRED) # set_property(TARGET SAIL::sail-codecs APPEND PROPERTY INTERFACE_LINK_LIBRARIES JPEG::JPEG) # set(SAIL_CODECS_FIND_DEPENDENCIES ${SAIL_CODECS_FIND_DEPENDENCIES} "find_dependency,JPEG,JPEG::JPEG" PARENT_SCOPE) # Check for JPEG ICC functions that were added in libjpeg-turbo-1.5.90 # cmake_push_check_state(RESET) set(CMAKE_REQUIRED_INCLUDES ${JPEG_INCLUDE_DIR}) set(CMAKE_REQUIRED_LIBRARIES ${JPEG_LIBRARIES}) check_c_source_compiles( " #include #include int main(int argc, char *argv[]) { jpeg_read_icc_profile(NULL, NULL, NULL); jpeg_write_icc_profile(NULL, NULL, 0); return 0; } " HAVE_JPEG_ICCP ) cmake_pop_check_state() # Used in .codec.info # if (HAVE_JPEG_ICCP) set(JPEG_CODEC_INFO_FEATURE_ICCP ";ICCP") endif() # Check for libjpeg-turbo # cmake_push_check_state(RESET) set(CMAKE_REQUIRED_INCLUDES ${JPEG_INCLUDE_DIR}) set(CMAKE_REQUIRED_LIBRARIES ${JPEG_LIBRARIES}) check_c_source_compiles( " #include #include int main(int argc, char *argv[]) { J_COLOR_SPACE ext = JCS_EXT_RGB; return 0; } " HAVE_JPEG_JCS_EXT ) cmake_pop_check_state() # Used in .codec.info # if (HAVE_JPEG_JCS_EXT) set(JPEG_CODEC_INFO_WRITE_EXT "BPP24-RGB;") endif() # Common codec configuration # sail_codec(NAME jpeg SOURCES helpers.h helpers.c io_dest.h io_dest.c io_src.h io_src.c jpeg.c ICON jpeg.png DEPENDENCY_INCLUDE_DIRS ${JPEG_INCLUDE_DIR} DEPENDENCY_LIBS ${JPEG_LIBRARIES}) # Add compile options to the target based on our findings # if (HAVE_JPEG_ICCP) target_compile_definitions(${SAIL_CODEC_TARGET} PRIVATE SAIL_HAVE_JPEG_ICCP) endif() if (HAVE_JPEG_JCS_EXT) target_compile_definitions(${SAIL_CODEC_TARGET} PRIVATE SAIL_HAVE_JPEG_JCS_EXT) endif()