CMakeLists.txt 2.9 KB

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