Home | History | Annotate | Download | only in openexr
      1 # ----------------------------------------------------------------------------
      2 #  CMake file for openexr
      3 #
      4 # ----------------------------------------------------------------------------
      5 
      6 project(openexr CXX)
      7 
      8 if(UNIX)
      9   set(HAVE_PTHREAD 1)
     10   include(CheckIncludeFile)
     11   check_include_file(semaphore.h HAVE_POSIX_SEMAPHORES)
     12 endif()
     13 
     14 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/IlmBaseConfig.h.cmakein"
     15                "${CMAKE_CURRENT_BINARY_DIR}/IlmBaseConfig.h" @ONLY)
     16 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenEXRConfig.h.cmakein"
     17                "${CMAKE_CURRENT_BINARY_DIR}/OpenEXRConfig.h" @ONLY)
     18 
     19 set(OPENEXR_INCLUDE_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/Half"
     20                           "${CMAKE_CURRENT_SOURCE_DIR}/Iex"
     21                           "${CMAKE_CURRENT_SOURCE_DIR}/IlmThread"
     22                           "${CMAKE_CURRENT_SOURCE_DIR}/Imath"
     23                           "${CMAKE_CURRENT_SOURCE_DIR}/IlmImf")
     24 
     25 ocv_include_directories("${CMAKE_CURRENT_BINARY_DIR}" ${ZLIB_INCLUDE_DIRS} ${OPENEXR_INCLUDE_PATHS})
     26 
     27 file(GLOB lib_srcs Half/half.cpp Iex/*.cpp IlmThread/*.cpp Imath/*.cpp IlmImf/*.cpp)
     28 file(GLOB lib_hdrs Half/*.h Iex/Iex*.h IlmThread/IlmThread*.h Imath/Imath*.h IlmImf/*.h)
     29 list(APPEND lib_hdrs "${CMAKE_CURRENT_BINARY_DIR}/IlmBaseConfig.h" "${CMAKE_CURRENT_BINARY_DIR}/OpenEXRConfig.h")
     30 
     31 ocv_list_filterout(lib_srcs IlmImf/b44ExpLogTable.cpp)
     32 
     33 if(WIN32)
     34   ocv_list_filterout(lib_srcs Posix.*cpp)
     35 else()
     36   ocv_list_filterout(lib_srcs Win32.cpp)
     37 endif()
     38 
     39 source_group("Include" FILES ${lib_hdrs} )
     40 source_group("Src" FILES ${lib_srcs})
     41 
     42 ocv_warnings_disable(CMAKE_CXX_FLAGS -Wshadow -Wunused -Wsign-compare -Wundef -Wmissing-declarations -Wuninitialized -Wswitch -Wparentheses -Warray-bounds -Wextra)
     43 ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4018 /wd4099 /wd4100 /wd4101 /wd4127 /wd4189 /wd4245 /wd4305 /wd4389 /wd4512 /wd4701 /wd4702 /wd4706 /wd4800) # vs2005
     44 ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4334) # vs2005 Win64
     45 ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4244) # vs2008
     46 ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4267) # vs2008 Win64
     47 
     48 if(UNIX AND (CMAKE_COMPILER_IS_GNUCXX OR CV_ICC))
     49   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
     50 endif()
     51 
     52 add_library(IlmImf STATIC ${lib_hdrs} ${lib_srcs})
     53 target_link_libraries(IlmImf ${ZLIB_LIBRARIES})
     54 
     55 set_target_properties(IlmImf
     56     PROPERTIES
     57     OUTPUT_NAME "IlmImf"
     58     DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}"
     59     ARCHIVE_OUTPUT_DIRECTORY ${3P_LIBRARY_OUTPUT_PATH}
     60     )
     61 
     62 if(ENABLE_SOLUTION_FOLDERS)
     63   set_target_properties(IlmImf PROPERTIES FOLDER "3rdparty")
     64 endif()
     65 
     66 if(NOT BUILD_SHARED_LIBS)
     67   ocv_install_target(IlmImf EXPORT OpenCVModules ARCHIVE DESTINATION ${OPENCV_3P_LIB_INSTALL_PATH} COMPONENT dev)
     68 endif()
     69 
     70 set(OPENEXR_INCLUDE_PATHS ${OPENEXR_INCLUDE_PATHS} PARENT_SCOPE)
     71 set(OPENEXR_VERSION "1.7.1" PARENT_SCOPE)
     72