CMakeLists.txt 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. # Defines the source code for the library
  2. set(OPENJPEG_SRCS
  3. ${CMAKE_CURRENT_SOURCE_DIR}/thread.c
  4. ${CMAKE_CURRENT_SOURCE_DIR}/bio.c
  5. ${CMAKE_CURRENT_SOURCE_DIR}/cio.c
  6. ${CMAKE_CURRENT_SOURCE_DIR}/dwt.c
  7. ${CMAKE_CURRENT_SOURCE_DIR}/event.c
  8. ${CMAKE_CURRENT_SOURCE_DIR}/ht_dec.c
  9. ${CMAKE_CURRENT_SOURCE_DIR}/image.c
  10. ${CMAKE_CURRENT_SOURCE_DIR}/invert.c
  11. ${CMAKE_CURRENT_SOURCE_DIR}/j2k.c
  12. ${CMAKE_CURRENT_SOURCE_DIR}/jp2.c
  13. ${CMAKE_CURRENT_SOURCE_DIR}/mct.c
  14. ${CMAKE_CURRENT_SOURCE_DIR}/mqc.c
  15. ${CMAKE_CURRENT_SOURCE_DIR}/openjpeg.c
  16. ${CMAKE_CURRENT_SOURCE_DIR}/opj_clock.c
  17. ${CMAKE_CURRENT_SOURCE_DIR}/pi.c
  18. ${CMAKE_CURRENT_SOURCE_DIR}/t1.c
  19. ${CMAKE_CURRENT_SOURCE_DIR}/t2.c
  20. ${CMAKE_CURRENT_SOURCE_DIR}/tcd.c
  21. ${CMAKE_CURRENT_SOURCE_DIR}/tgt.c
  22. ${CMAKE_CURRENT_SOURCE_DIR}/function_list.c
  23. ${CMAKE_CURRENT_SOURCE_DIR}/opj_malloc.c
  24. ${CMAKE_CURRENT_SOURCE_DIR}/sparse_array.c
  25. )
  26. option(OPJ_DISABLE_TPSOT_FIX "Disable TPsot==TNsot fix. See https://github.com/uclouvain/openjpeg/issues/254." OFF)
  27. if(OPJ_DISABLE_TPSOT_FIX)
  28. add_definitions(-DOPJ_DISABLE_TPSOT_FIX)
  29. endif()
  30. # Special case for old i586-mingw32msvc-gcc cross compiler
  31. # if(NOT WIN32 AND CMAKE_COMPILER_IS_GNUCC AND CMAKE_C_COMPILER MATCHES ".*mingw32msvc.*" )
  32. # set(WIN32 YES)
  33. # endif()
  34. ocv_warnings_disable(CMAKE_C_FLAGS
  35. -Wundef -Wstrict-prototypes -Wcast-function-type
  36. -Wshadow # v2.4.0: GCC
  37. -Wunused-function # v2.4.0: Clang
  38. )
  39. ocv_warnings_disable(CMAKE_C_FLAGS /wd4819) # vs2019 Win64
  40. add_library(${OPENJPEG_LIBRARY_NAME} STATIC ${OPENJPEG_SRCS})
  41. target_compile_definitions(${OPENJPEG_LIBRARY_NAME} PUBLIC OPJ_STATIC)
  42. ocv_include_directories("${CMAKE_CURRENT_LIST_DIR}" "${CMAKE_CURRENT_BINARY_DIR}")
  43. if(UNIX)
  44. target_link_libraries(${OPENJPEG_LIBRARY_NAME} PRIVATE m)
  45. endif()
  46. set_target_properties(${OPENJPEG_LIBRARY_NAME}
  47. PROPERTIES
  48. ${OPENJPEG_LIBRARY_PROPERTIES}
  49. )
  50. #################################################################################
  51. # threading configuration
  52. #################################################################################
  53. option(OPJ_USE_THREAD "Build with thread/mutex support " ON)
  54. if(NOT OPJ_USE_THREAD)
  55. add_definitions(-DMUTEX_stub)
  56. endif()
  57. find_package(Threads QUIET)
  58. if(OPJ_USE_THREAD AND WIN32 AND NOT Threads_FOUND )
  59. add_definitions(-DMUTEX_win32)
  60. set(Threads_FOUND YES)
  61. endif()
  62. if(OPJ_USE_THREAD AND Threads_FOUND AND CMAKE_USE_WIN32_THREADS_INIT)
  63. add_definitions(-DMUTEX_win32)
  64. endif()
  65. if(OPJ_USE_THREAD AND Threads_FOUND AND CMAKE_USE_PTHREADS_INIT )
  66. add_definitions(-DMUTEX_pthread)
  67. endif()
  68. if(OPJ_USE_THREAD AND NOT Threads_FOUND)
  69. message(STATUS "No thread library found and thread/mutex support is required by OPJ_USE_THREAD option")
  70. set(OCV_CAN_BUILD_OPENJPEG FALSE PARENT_SCOPE)
  71. endif()
  72. if(OPJ_USE_THREAD AND Threads_FOUND AND CMAKE_USE_PTHREADS_INIT)
  73. target_link_libraries(${OPENJPEG_LIBRARY_NAME} PRIVATE ${CMAKE_THREAD_LIBS_INIT})
  74. endif()
  75. if(NOT BUILD_SHARED_LIBS)
  76. ocv_install_target(${OPENJPEG_LIBRARY_NAME}
  77. EXPORT OpenCVModules
  78. ARCHIVE DESTINATION ${OPENCV_3P_LIB_INSTALL_PATH} COMPONENT dev
  79. )
  80. endif()