diff --git a/CMakeLists.txt b/CMakeLists.txt index f23b8eed6..d93aaaa9d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,6 +41,8 @@ find_package(OpenGL REQUIRED) find_package(OpenColorIO REQUIRED) +find_package(OpenImageIO REQUIRED) + find_package(Qt5 5.6 REQUIRED COMPONENTS Core diff --git a/cmake/FindOpenImageIO.cmake b/cmake/FindOpenImageIO.cmake new file mode 100644 index 000000000..9df47ff23 --- /dev/null +++ b/cmake/FindOpenImageIO.cmake @@ -0,0 +1,154 @@ +# +# Copyright 2016 Pixar +# +# Licensed under the Apache License, Version 2.0 (the "Apache License") +# with the following modification; you may not use this file except in +# compliance with the Apache License and the following modification to it: +# Section 6. Trademarks. is deleted and replaced with: +# +# 6. Trademarks. This License does not grant permission to use the trade +# names, trademarks, service marks, or product names of the Licensor +# and its affiliates, except as required to comply with Section 4(c) of +# the License and to reproduce the content of the NOTICE file. +# +# You may obtain a copy of the Apache License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the Apache License with the above modification is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the Apache License for the specific +# language governing permissions and limitations under the Apache License. +# + +if(UNIX) + find_path(OIIO_BASE_DIR + include/OpenImageIO/oiioversion.h + HINTS + "${OIIO_LOCATION}" + "$ENV{OIIO_LOCATION}" + "/opt/oiio" + ) + find_path(OIIO_LIBRARY_DIR + libOpenImageIO.so + HINTS + "${OIIO_LOCATION}" + "$ENV{OIIO_LOCATION}" + "${OIIO_BASE_DIR}" + PATH_SUFFIXES + lib/ + DOC + "OpenImageIO library path" + ) +elseif(WIN32) + find_path(OIIO_BASE_DIR + include/OpenImageIO/oiioversion.h + HINTS + "${OIIO_LOCATION}" + "$ENV{OIIO_LOCATION}" + ) + find_path(OIIO_LIBRARY_DIR + OpenImageIO.lib + HINTS + "${OIIO_LOCATION}" + "$ENV{OIIO_LOCATION}" + "${OIIO_BASE_DIR}" + PATH_SUFFIXES + lib/ + DOC + "OpenImageIO library path" + ) +endif() + +find_path(OIIO_INCLUDE_DIR + OpenImageIO/oiioversion.h + HINTS + "${OIIO_LOCATION}" + "$ENV{OIIO_LOCATION}" + "${OIIO_BASE_DIR}" + PATH_SUFFIXES + include/ + DOC + "OpenImageIO headers path" +) + +list(APPEND OIIO_INCLUDE_DIRS ${OIIO_INCLUDE_DIR}) + +foreach(OIIO_LIB + OpenImageIO + OpenImageIO_Util + ) + + find_library(OIIO_${OIIO_LIB}_LIBRARY + ${OIIO_LIB} + HINTS + "${OIIO_LOCATION}" + "$ENV{OIIO_LOCATION}" + "${OIIO_BASE_DIR}" + PATH_SUFFIXES + lib/ + DOC + "OIIO's ${OIIO_LIB} library path" + ) + + if(OIIO_${OIIO_LIB}_LIBRARY) + list(APPEND OIIO_LIBRARIES ${OIIO_${OIIO_LIB}_LIBRARY}) + endif() +endforeach(OIIO_LIB) + +foreach(OIIO_BIN + iconvert + idiff + igrep + iinfo + iv + maketx + oiiotool) + + find_program(OIIO_${OIIO_BIN}_BINARY + ${OIIO_BIN} + HINTS + "${OIIO_LOCATION}" + "$ENV{OIIO_LOCATION}" + "${OIIO_BASE_DIR}" + PATH_SUFFIXES + bin/ + DOC + "OIIO's ${OIIO_BIN} binary" + ) + if(OIIO_${OIIO_BIN}_BINARY) + list(APPEND OIIO_BINARIES ${OIIO_${OIIO_BIN}_BINARY}) + endif() +endforeach(OIIO_BIN) + +if(OIIO_INCLUDE_DIRS AND EXISTS "${OIIO_INCLUDE_DIR}/OpenImageIO/oiioversion.h") + file(STRINGS ${OIIO_INCLUDE_DIR}/OpenImageIO/oiioversion.h + MAJOR + REGEX + "#define OIIO_VERSION_MAJOR.*$") + file(STRINGS ${OIIO_INCLUDE_DIR}/OpenImageIO/oiioversion.h + MINOR + REGEX + "#define OIIO_VERSION_MINOR.*$") + file(STRINGS ${OIIO_INCLUDE_DIR}/OpenImageIO/oiioversion.h + PATCH + REGEX + "#define OIIO_VERSION_PATCH.*$") + string(REGEX MATCHALL "[0-9]+" MAJOR ${MAJOR}) + string(REGEX MATCHALL "[0-9]+" MINOR ${MINOR}) + string(REGEX MATCHALL "[0-9]+" PATCH ${PATCH}) + set(OIIO_VERSION "${MAJOR}.${MINOR}.${PATCH}") +endif() + +# handle the QUIETLY and REQUIRED arguments and set OIIO_FOUND to TRUE if +# all listed variables are TRUE +include(FindPackageHandleStandardArgs) + +find_package_handle_standard_args(OpenImageIO + REQUIRED_VARS + OIIO_LIBRARIES + OIIO_INCLUDE_DIRS + VERSION_VAR + OIIO_VERSION +)