CMakeLists.txt 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. project(${JPEG_LIBRARY} C)
  2. ocv_warnings_disable(CMAKE_C_FLAGS -Wunused-parameter -Wsign-compare -Wshorten-64-to-32 -Wimplicit-fallthrough)
  3. set(VERSION_MAJOR 2)
  4. set(VERSION_MINOR 1)
  5. set(VERSION_REVISION 2)
  6. set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION})
  7. set(LIBJPEG_TURBO_VERSION_NUMBER 2001002)
  8. string(TIMESTAMP BUILD "opencv-${OPENCV_VERSION}-libjpeg-turbo")
  9. if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  10. set(BUILD "${BUILD}-debug")
  11. endif()
  12. message(STATUS "libjpeg-turbo: VERSION = ${VERSION}, BUILD = ${BUILD}")
  13. option(WITH_ARITH_ENC "Include arithmetic encoding support when emulating the libjpeg v6b API/ABI" TRUE)
  14. option(WITH_ARITH_DEC "Include arithmetic decoding support when emulating the libjpeg v6b API/ABI" TRUE)
  15. include(CheckCSourceCompiles)
  16. include(CheckIncludeFiles)
  17. include(CheckTypeSize)
  18. check_type_size("size_t" SIZEOF_SIZE_T)
  19. check_type_size("unsigned long" SIZEOF_UNSIGNED_LONG)
  20. if(SIZEOF_SIZE_T EQUAL SIZEOF_UNSIGNED_LONG)
  21. check_c_source_compiles("int main(int argc, char **argv) { unsigned long a = argc; return __builtin_ctzl(a); }"
  22. HAVE_BUILTIN_CTZL)
  23. endif()
  24. if(MSVC)
  25. check_include_files("intrin.h" HAVE_INTRIN_H)
  26. endif()
  27. if(UNIX)
  28. # Check for headers
  29. check_include_files(locale.h HAVE_LOCALE_H)
  30. check_include_files(stddef.h HAVE_STDDEF_H)
  31. check_include_files(stdlib.h HAVE_STDLIB_H)
  32. check_include_files(sys/types.h NEED_SYS_TYPES_H)
  33. # Other predefines
  34. # undef NEED_BSD_STRINGS
  35. ocv_update(HAVE_UNSIGNED_CHAR 1)
  36. ocv_update(HAVE_UNSIGNED_SHORT 1)
  37. # undef INCOMPLETE_TYPES_BROKEN
  38. ocv_update(RIGHT_SHIFT_IS_UNSIGNED 0)
  39. endif()
  40. set(BITS_IN_JSAMPLE 8)
  41. if(WITH_ARITH_ENC)
  42. set(C_ARITH_CODING_SUPPORTED 1)
  43. endif()
  44. if(WITH_ARITH_DEC)
  45. set(D_ARITH_CODING_SUPPORTED 1)
  46. endif()
  47. set(JPEG_LIB_VERSION 62)
  48. # OpenCV
  49. set(JPEG_LIB_VERSION "${VERSION}-${JPEG_LIB_VERSION}" PARENT_SCOPE)
  50. set(THREAD_LOCAL "") # WITH_TURBOJPEG is not used
  51. if(MSVC)
  52. add_definitions(-W3 -wd4996 -wd4018)
  53. endif()
  54. if(WIN32)
  55. configure_file(jconfig.h.win.in jconfig.h)
  56. else()
  57. configure_file(jconfig.h.in jconfig.h)
  58. endif()
  59. configure_file(jconfigint.h.in jconfigint.h)
  60. include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/src)
  61. set(JPEG_SOURCES
  62. jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c jcicc.c
  63. jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c jcphuff.c
  64. jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c jdatadst.c jdatasrc.c
  65. jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c jdicc.c jdinput.c jdmainct.c jdmarker.c
  66. jdmaster.c jdmerge.c jdphuff.c jdpostct.c jdsample.c jdtrans.c jerror.c
  67. jfdctflt.c jfdctfst.c jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c
  68. jquant1.c jquant2.c jutils.c jmemmgr.c jmemnobs.c)
  69. if(WITH_ARITH_ENC OR WITH_ARITH_DEC)
  70. set(JPEG_SOURCES ${JPEG_SOURCES} jaricom.c)
  71. endif()
  72. if(WITH_ARITH_ENC)
  73. set(JPEG_SOURCES ${JPEG_SOURCES} jcarith.c)
  74. endif()
  75. if(WITH_ARITH_DEC)
  76. set(JPEG_SOURCES ${JPEG_SOURCES} jdarith.c)
  77. endif()
  78. # No SIMD
  79. set(JPEG_SOURCES ${JPEG_SOURCES} jsimd_none.c)
  80. ocv_list_add_prefix(JPEG_SOURCES src/)
  81. add_library(${JPEG_LIBRARY} STATIC ${OPENCV_3RDPARTY_EXCLUDE_FROM_ALL} ${JPEG_SOURCES} ${SIMD_OBJS})
  82. set_target_properties(${JPEG_LIBRARY}
  83. PROPERTIES OUTPUT_NAME ${JPEG_LIBRARY}
  84. DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}"
  85. COMPILE_PDB_NAME ${JPEG_LIBRARY}
  86. COMPILE_PDB_NAME_DEBUG "${JPEG_LIBRARY}${OPENCV_DEBUG_POSTFIX}"
  87. ARCHIVE_OUTPUT_DIRECTORY ${3P_LIBRARY_OUTPUT_PATH}
  88. )
  89. if(ENABLE_SOLUTION_FOLDERS)
  90. set_target_properties(${JPEG_LIBRARY} PROPERTIES FOLDER "3rdparty")
  91. endif()
  92. if(NOT BUILD_SHARED_LIBS)
  93. ocv_install_target(${JPEG_LIBRARY} EXPORT OpenCVModules ARCHIVE DESTINATION ${OPENCV_3P_LIB_INSTALL_PATH} COMPONENT dev OPTIONAL)
  94. endif()
  95. ocv_install_3rdparty_licenses(libjpeg-turbo README.md LICENSE.md README.ijg)