[Bf-blender-cvs] [163df7f] master: Better handling of new libnames of OpenEXR 2.1 (same solution as one used in OIIO/OSL source).

Bastien Montagne noreply at git.blender.org
Mon Dec 16 21:15:31 CET 2013


Commit: 163df7ff43ec114a2ab5c7e0326670a18a11edc0
Author: Bastien Montagne
Date:   Mon Dec 16 21:00:35 2013 +0100
http://developer.blender.org/rB163df7ff43ec114a2ab5c7e0326670a18a11edc0

Better handling of new libnames of OpenEXR 2.1 (same solution as one used in OIIO/OSL source).

===================================================================

M	build_files/build_environment/install_deps.sh
M	build_files/cmake/Modules/FindOpenEXR.cmake

===================================================================

diff --git a/build_files/build_environment/install_deps.sh b/build_files/build_environment/install_deps.sh
index e68c09f..bf8362f 100755
--- a/build_files/build_environment/install_deps.sh
+++ b/build_files/build_environment/install_deps.sh
@@ -2879,10 +2879,8 @@ print_info() {
 
   if [ -d $INST/openexr ]; then
     _1="-D OPENEXR_ROOT_DIR=$INST/openexr"
-    _2="-D OPENEXR_VERSION=$OPENEXR_VERSION"
     PRINT "  $_1"
-    PRINT "  $_2"
-    _buildargs="$_buildargs $_1 $_2"
+    _buildargs="$_buildargs $_1"
   fi
 
   _1="-D WITH_CYCLES_OSL=ON"
diff --git a/build_files/cmake/Modules/FindOpenEXR.cmake b/build_files/cmake/Modules/FindOpenEXR.cmake
index 8fc2d57..dad96bc 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)




More information about the Bf-blender-cvs mailing list