From 163df7ff43ec114a2ab5c7e0326670a18a11edc0 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Mon, 16 Dec 2013 21:00:35 +0100 Subject: Better handling of new libnames of OpenEXR 2.1 (same solution as one used in OIIO/OSL source). --- build_files/cmake/Modules/FindOpenEXR.cmake | 56 ++++++++++++++++++----------- 1 file changed, 36 insertions(+), 20 deletions(-) (limited to 'build_files/cmake/Modules/FindOpenEXR.cmake') diff --git a/build_files/cmake/Modules/FindOpenEXR.cmake b/build_files/cmake/Modules/FindOpenEXR.cmake index 8fc2d572b62..dad96bccc9c 100644 --- a/build_files/cmake/Modules/FindOpenEXR.cmake +++ b/build_files/cmake/Modules/FindOpenEXR.cmake @@ -34,9 +34,42 @@ IF(NOT OPENEXR_ROOT_DIR AND NOT $ENV{OPENEXR_ROOT_DIR} STREQUAL "") SET(OPENEXR_ROOT_DIR $ENV{OPENEXR_ROOT_DIR}) ENDIF() -if (NOT OPENEXR_VERSION) - SET(OPENEXR_VERSION "2.0.1") -endif() +SET(_openexr_SEARCH_DIRS + ${OPENEXR_ROOT_DIR} + /usr/local + /sw # Fink + /opt/local # DarwinPorts + /opt/csw # Blastwave +) + +FIND_PATH(OPENEXR_INCLUDE_DIR + NAMES + OpenEXR/ImfXdr.h + HINTS + ${_openexr_SEARCH_DIRS} + PATH_SUFFIXES + include +) + +# If the headers were found, get the version from config file, if not already set. +if (OPENEXR_INCLUDE_DIR) + if (NOT OPENEXR_VERSION) + FILE(STRINGS "${OPENEXR_INCLUDE_DIR}/OpenEXR/OpenEXRConfig.h" OPENEXR_BUILD_SPECIFICATION + REGEX "^[ \t]*#define[ \t]+OPENEXR_VERSION_STRING[ \t]+\"[.0-9]+\".*$") + + if(OPENEXR_BUILD_SPECIFICATION) + message(STATUS "${OPENEXR_BUILD_SPECIFICATION}") + string(REGEX REPLACE ".*#define[ \t]+OPENEXR_VERSION_STRING[ \t]+\"([.0-9]+)\".*" + "\\1" XYZ ${OPENEXR_BUILD_SPECIFICATION}) + set("OPENEXR_VERSION" ${XYZ} CACHE STRING "Version of OpenEXR lib") + else() + # Old versions (before 2.0?) do not have any version string, just assuming 2.0 should be fine though. + message(WARNING "Could not determine ILMBase library version, assuming 2.0.") + set("OPENEXR_VERSION" "2.0" CACHE STRING "Version of OpenEXR lib") + endif() + endif() +endif () + if (${OPENEXR_VERSION} VERSION_LESS "2.1") SET(_openexr_FIND_COMPONENTS Half @@ -56,23 +89,6 @@ else () ) endif () -SET(_openexr_SEARCH_DIRS - ${OPENEXR_ROOT_DIR} - /usr/local - /sw # Fink - /opt/local # DarwinPorts - /opt/csw # Blastwave -) - -FIND_PATH(OPENEXR_INCLUDE_DIR - NAMES - OpenEXR/ImfXdr.h - HINTS - ${_openexr_SEARCH_DIRS} - PATH_SUFFIXES - include -) - SET(_openexr_LIBRARIES) FOREACH(COMPONENT ${_openexr_FIND_COMPONENTS}) STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT) -- cgit v1.2.3