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