diff --git a/cmake/modules/FindOpenEXR.cmake b/cmake/modules/FindOpenEXR.cmake new file mode 100644 index 0000000000..693113217e --- /dev/null +++ b/cmake/modules/FindOpenEXR.cmake @@ -0,0 +1,90 @@ +# Filename: FindOpenEXR.cmake +# Authors: CFSworks (5 Nov, 2018) +# +# Usage: +# find_package(OpenEXR [REQUIRED] [QUIET]) +# +# Once done this will define: +# OPENEXR_FOUND - system has OpenEXR +# OPENEXR_INCLUDE_DIR - the include directory containing OpenEXR header files +# OPENEXR_LIBRARIES - the path to the OpenEXR libraries +# + +if(NOT OPENEXR_INCLUDE_DIR) + find_path(OPENEXR_INCLUDE_DIR + "ImfVersion.h" + PATH_SUFFIXES "OpenEXR") + + mark_as_advanced(OPENEXR_INCLUDE_DIR) +endif() + +find_library(OPENEXR_imf_LIBRARY + NAMES "IlmImf") + +if(OPENEXR_imf_LIBRARY) + get_filename_component(_imf_dir "${OPENEXR_imf_LIBRARY}" DIRECTORY) + find_library(OPENEXR_imfutil_LIBRARY + NAMES "IlmImfUtil" + PATHS "${_imf_dir}" + NO_DEFAULT_PATH) + + find_library(OPENEXR_ilmthread_LIBRARY + NAMES "IlmThread" + PATHS "${_imf_dir}" + NO_DEFAULT_PATH) + + find_library(OPENEXR_iex_LIBRARY + NAMES "Iex" + PATHS "${_imf_dir}" + NO_DEFAULT_PATH) + + find_library(OPENEXR_iexmath_LIBRARY + NAMES "IexMath" + PATHS "${_imf_dir}" + NO_DEFAULT_PATH) + + find_library(OPENEXR_imath_LIBRARY + NAMES "Imath" + PATHS "${_imf_dir}" + NO_DEFAULT_PATH) + + find_library(OPENEXR_half_LIBRARY + NAMES "Half" + PATHS "${_imf_dir}" + NO_DEFAULT_PATH) + + unset(_imf_dir) +endif() + +mark_as_advanced( + OPENEXR_imf_LIBRARY + OPENEXR_imfutil_LIBRARY + OPENEXR_ilmthread_LIBRARY + OPENEXR_iex_LIBRARY + OPENEXR_iexmath_LIBRARY + OPENEXR_imath_LIBRARY + OPENEXR_half_LIBRARY +) + +set(OPENEXR_LIBRARIES + ${OPENEXR_imf_LIBRARY} + ${OPENEXR_imfutil_LIBRARY} + ${OPENEXR_ilmthread_LIBRARY} + ${OPENEXR_iex_LIBRARY} + ${OPENEXR_iexmath_LIBRARY} + ${OPENEXR_imath_LIBRARY} + ${OPENEXR_half_LIBRARY} +) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(OpenEXR DEFAULT_MSG + OPENEXR_INCLUDE_DIR OPENEXR_LIBRARIES + + OPENEXR_imf_LIBRARY + OPENEXR_imfutil_LIBRARY + OPENEXR_ilmthread_LIBRARY + OPENEXR_iex_LIBRARY + OPENEXR_iexmath_LIBRARY + OPENEXR_imath_LIBRARY + OPENEXR_half_LIBRARY +) diff --git a/dtool/Package.cmake b/dtool/Package.cmake index b1a432f6e1..8395579abb 100644 --- a/dtool/Package.cmake +++ b/dtool/Package.cmake @@ -149,6 +149,11 @@ find_package(TIFF QUIET) package_option(TIFF "Enable support for loading .tif images.") config_package(TIFF "libtiff") +# OpenEXR: +find_package(OpenEXR QUIET) +package_option(OPENEXR "Enable support for loading .exr images.") +config_package(OPENEXR "OpenEXR") + # # ------------ LIBTAR ------------ # diff --git a/dtool/dtool_config.h.in b/dtool/dtool_config.h.in index 27d264dabb..5a20f9666c 100644 --- a/dtool/dtool_config.h.in +++ b/dtool/dtool_config.h.in @@ -67,6 +67,9 @@ /* Define if we have libtiff installed. */ #cmakedefine HAVE_TIFF +/* Define if we have OpenEXR installed. */ +#cmakedefine HAVE_OPENEXR + /* Define if we want to build these other image file formats. */ #cmakedefine HAVE_SGI_RGB #cmakedefine HAVE_TGA diff --git a/panda/src/pnmimagetypes/CMakeLists.txt b/panda/src/pnmimagetypes/CMakeLists.txt index 8fcac02573..c29e7ae1a3 100644 --- a/panda/src/pnmimagetypes/CMakeLists.txt +++ b/panda/src/pnmimagetypes/CMakeLists.txt @@ -33,7 +33,8 @@ set(P3PNMIMAGETYPES_SOURCES composite_sources(p3pnmimagetypes P3PNMIMAGETYPES_SOURCES) add_component_library(p3pnmimagetypes SYMBOL BUILDING_PANDA_PNMIMAGETYPES ${P3PNMIMAGETYPES_HEADERS} ${P3PNMIMAGETYPES_SOURCES}) -target_link_libraries(p3pnmimagetypes p3pnmimage PKG::JPEG PKG::TIFF PKG::PNG) +target_link_libraries(p3pnmimagetypes p3pnmimage + PKG::JPEG PKG::TIFF PKG::PNG PKG::OPENEXR) set_target_properties(p3pnmimagetypes PROPERTIES CXX_EXCEPTIONS ON) if(NOT BUILD_METALIBS)