191 lines
6.7 KiB
CMake
191 lines
6.7 KiB
CMake
##-*****************************************************************************
|
|
##
|
|
## Copyright (c) 2009-2016,
|
|
## Sony Pictures Imageworks Inc. and
|
|
## Industrial Light & Magic, a division of Lucasfilm Entertainment Company Ltd.
|
|
##
|
|
## All rights reserved.
|
|
##
|
|
## Redistribution and use in source and binary forms, with or without
|
|
## modification, are permitted provided that the following conditions are
|
|
## met:
|
|
## * Redistributions of source code must retain the above copyright
|
|
## notice, this list of conditions and the following disclaimer.
|
|
## * Redistributions in binary form must reproduce the above
|
|
## copyright notice, this list of conditions and the following disclaimer
|
|
## in the documentation and/or other materials provided with the
|
|
## distribution.
|
|
## * Neither the name of Industrial Light & Magic nor the names of
|
|
## its contributors may be used to endorse or promote products derived
|
|
## from this software without specific prior written permission.
|
|
##
|
|
## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
##
|
|
##-*****************************************************************************
|
|
|
|
#-******************************************************************************
|
|
#-******************************************************************************
|
|
# FIRST, ILMBASE STUFF
|
|
#-******************************************************************************
|
|
#-******************************************************************************
|
|
|
|
# If ILMBASE_ROOT was defined in the environment, use it.
|
|
IF(NOT ILMBASE_ROOT AND NOT $ENV{ILMBASE_ROOT} STREQUAL "")
|
|
SET(ILMBASE_ROOT $ENV{ILMBASE_ROOT})
|
|
ENDIF()
|
|
|
|
IF(NOT DEFINED ILMBASE_ROOT)
|
|
MESSAGE(STATUS "ILMBASE_ROOT is undefined" )
|
|
IF ( ${CMAKE_HOST_UNIX} )
|
|
IF( ${DARWIN} )
|
|
# TODO: set to default install path when shipping out
|
|
SET( ALEMBIC_ILMBASE_ROOT NOTFOUND )
|
|
ELSE()
|
|
# TODO: set to default install path when shipping out
|
|
SET( ALEMBIC_ILMBASE_ROOT "/usr/local/ilmbase-1.0.1/" )
|
|
ENDIF()
|
|
ELSE()
|
|
IF ( ${WINDOWS} )
|
|
# TODO: set to 32-bit or 64-bit path
|
|
SET( ALEMBIC_ILMBASE_ROOT "C:/Program Files (x86)/ilmbase-1.0.1/" )
|
|
ELSE()
|
|
SET( ALEMBIC_ILMBASE_ROOT NOTFOUND )
|
|
ENDIF()
|
|
ENDIF()
|
|
ELSE()
|
|
SET( ALEMBIC_ILMBASE_ROOT ${ILMBASE_ROOT} )
|
|
ENDIF()
|
|
|
|
SET(_ilmbase_FIND_COMPONENTS
|
|
Half
|
|
Iex
|
|
IexMath
|
|
IlmThread
|
|
Imath
|
|
)
|
|
|
|
SET(_ilmbase_SEARCH_DIRS
|
|
${ALEMBIC_ILMBASE_ROOT}
|
|
~/Library/Frameworks
|
|
/Library/Frameworks
|
|
/usr/local
|
|
/usr
|
|
/sw
|
|
/opt/local
|
|
/opt/csw
|
|
/opt
|
|
/usr/freeware
|
|
)
|
|
|
|
FIND_PATH(ILMBASE_INCLUDE_DIR
|
|
NAMES
|
|
IlmBaseConfig.h
|
|
HINTS
|
|
${_ilmbase_SEARCH_DIRS}
|
|
PATH_SUFFIXES
|
|
include
|
|
include/OpenEXR
|
|
)
|
|
|
|
# If the headers were found, get the version from config file, if not already set.
|
|
IF(ILMBASE_INCLUDE_DIR)
|
|
SET(ALEMBIC_ILMBASE_INCLUDE_DIRECTORY ${ILMBASE_INCLUDE_DIR})
|
|
IF(NOT ILMBASE_VERSION)
|
|
|
|
FIND_FILE(_ilmbase_CONFIG
|
|
NAMES
|
|
IlmBaseConfig.h
|
|
PATHS
|
|
"${ILMBASE_INCLUDE_DIR}"
|
|
"${ILMBASE_INCLUDE_DIR}/OpenEXR"
|
|
)
|
|
|
|
IF(_ilmbase_CONFIG)
|
|
FILE(STRINGS "${_ilmbase_CONFIG}" ILMBASE_BUILD_SPECIFICATION
|
|
REGEX "^[ \t]*#define[ \t]+(ILMBASE_VERSION_STRING|VERSION)[ \t]+\"[.0-9]+\".*$")
|
|
ELSE()
|
|
MESSAGE(WARNING "Could not find \"IlmBaseConfig.h\" in \"${ILMBASE_INCLUDE_DIR}\"")
|
|
ENDIF()
|
|
|
|
IF(ILMBASE_BUILD_SPECIFICATION)
|
|
STRING(REGEX REPLACE ".*#define[ \t]+(ILMBASE_VERSION_STRING|VERSION)[ \t]+\"([.0-9]+)\".*"
|
|
"\\2" _ilmbase_libs_ver_init ${ILMBASE_BUILD_SPECIFICATION})
|
|
ELSE()
|
|
MESSAGE(WARNING "Could not determine ILMBase library version, assuming ${_ilmbase_libs_ver_init}.")
|
|
ENDIF()
|
|
|
|
UNSET(_ilmbase_CONFIG CACHE)
|
|
|
|
ENDIF()
|
|
|
|
SET("ILMBASE_VERSION" ${_ilmbase_libs_ver_init} CACHE STRING "Version of OpenEXR lib")
|
|
UNSET(_ilmbase_libs_ver_init)
|
|
|
|
STRING(REGEX REPLACE "([0-9]+)[.]([0-9]+).*" "\\1_\\2" _ilmbase_libs_ver ${ILMBASE_VERSION})
|
|
ENDIF()
|
|
|
|
|
|
SET(_ilmbase_LIBRARIES)
|
|
FOREACH(COMPONENT ${_ilmbase_FIND_COMPONENTS})
|
|
STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT)
|
|
|
|
FIND_LIBRARY(ALEMBIC_ILMBASE_${UPPERCOMPONENT}_LIB
|
|
NAMES
|
|
${COMPONENT}-${_ilmbase_libs_ver} ${COMPONENT}
|
|
HINTS
|
|
${_ilmbase_SEARCH_DIRS}
|
|
PATH_SUFFIXES
|
|
lib64 lib
|
|
)
|
|
LIST(APPEND _ilmbase_LIBRARIES "${ILMBASE_${UPPERCOMPONENT}_LIBRARY}")
|
|
ENDFOREACH()
|
|
|
|
UNSET(_ilmbase_libs_ver)
|
|
|
|
IF ( ${ALEMBIC_ILMBASE_HALF_LIB} STREQUAL "ALEMBIC_ILMBASE_HALF_LIB-NOTFOUND" )
|
|
MESSAGE( FATAL_ERROR "ilmbase libraries (Half, Iex, IlmThread, Imath) not found, required" )
|
|
ENDIF()
|
|
|
|
IF ( ${ALEMBIC_ILMBASE_IEX_LIB} STREQUAL "ALEMBIC_ILMBASE_IEX_LIB-NOTFOUND" )
|
|
MESSAGE( FATAL_ERROR "ilmbase libraries (Half, Iex, IlmThread, Imath) not found, required" )
|
|
ENDIF()
|
|
|
|
IF ( DEFINED USE_IEXMATH AND USE_IEXMATH )
|
|
IF ( ${ALEMBIC_ILMBASE_IEXMATH_LIB} STREQUAL
|
|
"ALEMBIC_ILMBASE_IEXMATH_LIB-NOTFOUND" )
|
|
MESSAGE( FATAL_ERROR "ilmbase libraries (Half, Iex, IexMath, IlmThread, Imath) not found, required" )
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
IF ( ${ALEMBIC_ILMBASE_ILMTHREAD_LIB} STREQUAL "ALEMBIC_ILMBASE_ILMTHREAD_LIB-NOTFOUND" )
|
|
MESSAGE( FATAL_ERROR "ilmbase libraries (Half, Iex, IlmThread, Imath) not found, required" )
|
|
ENDIF()
|
|
|
|
IF ( ${ALEMBIC_ILMBASE_IMATH_LIB} STREQUAL "ALEMBIC_ILMBASE_IMATH_LIB-NOTFOUND" )
|
|
MESSAGE( FATAL_ERROR "ilmbase libraries (Half, Iex, IlmThread, Imath) not found, required" )
|
|
ENDIF()
|
|
|
|
IF ( ${ALEMBIC_ILMBASE_INCLUDE_DIRECTORY} STREQUAL "ALEMBIC_ILMBASE_INCLUDE_DIRECTORY-NOTFOUND" )
|
|
MESSAGE( FATAL_ERROR "ilmbase header files not found, required: ALEMBIC_ILMBASE_ROOT: ${ALEMBIC_ILMBASE_ROOT}" )
|
|
ENDIF()
|
|
|
|
|
|
MESSAGE( STATUS "ILMBASE INCLUDE PATH: ${ALEMBIC_ILMBASE_INCLUDE_DIRECTORY}" )
|
|
MESSAGE( STATUS "HALF LIB: ${ALEMBIC_ILMBASE_HALF_LIB}" )
|
|
MESSAGE( STATUS "IEX LIB: ${ALEMBIC_ILMBASE_IEX_LIB}" )
|
|
MESSAGE( STATUS "IEXMATH LIB: ${ALEMBIC_ILMBASE_IEXMATH_LIB}" )
|
|
MESSAGE( STATUS "ILMTHREAD LIB: ${ALEMBIC_ILMBASE_ILMTHREAD_LIB}" )
|
|
MESSAGE( STATUS "IMATH LIB: ${ALEMBIC_ILMBASE_IMATH_LIB}" )
|
|
|
|
SET( ILMBASE_FOUND TRUE )
|