cmake_minimum_required(VERSION 3.1...3.5) # extract version out of configure.ac file(READ "configure.ac" CONFIGURE_AC) string(REGEX MATCH "AC_INIT\\(\\[libjpeg\\], \\[([0-9.]+)\\]\\)" ver_found "${CONFIGURE_AC}") if(NOT ver_found) message(FATAL_ERROR "Could not extract version from configure.ac") endif() set(LIBJPEG_VERSION "${CMAKE_MATCH_1}") project(jpeg LANGUAGES C VERSION ${LIBJPEG_VERSION}) include(GNUInstallDirs) add_library(jpeg jaricom.c jcapimin.c jcapistd.c jcarith.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c jdarith.c jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c jdinput.c jdmainct.c jdmarker.c jdmaster.c jdmerge.c jdpostct.c jdsample.c jdtrans.c jerror.c jfdctflt.c jfdctfst.c jfdctint.c jidctflt.c jquant1.c jquant2.c jutils.c jmemmgr.c ) add_library(JPEG::JPEG ALIAS jpeg) set_property(TARGET jpeg PROPERTY DEFINE_SYMBOL JPEG_SHARED) set(jpeg_headers jconfig.h jerror.h jmorecfg.h jpeglib.h ) if (ANDROID) target_sources(jpeg PRIVATE jmem-android.c) else() target_sources(jpeg PRIVATE jmemansi.c) endif() target_sources(jpeg PRIVATE jidctint.c jidctfst.c) # FIXME : include asm for ARM # target_sources(jpeg PRIVATE jidctint.c jidctfst.S) target_compile_definitions(jpeg PRIVATE AVOID_TABLES) target_include_directories(jpeg PUBLIC $ $ ) set_target_properties(jpeg PROPERTIES SOVERSION "${PROJECT_VERSION_MAJOR}" VERSION "${PROJECT_VERSION}" # create libjpeg-9.dll on Windows RUNTIME_OUTPUT_NAME "jpeg-${PROJECT_VERSION_MAJOR}" PREFIX lib ) if(MINGW AND BUILD_SHARED_LIBS) set_target_properties(jpeg PROPERTIES PREFIX lib ) endif() install(TARGETS jpeg ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" ) install(FILES ${jpeg_headers} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" )