From 7caf6797c8d044ef30049788e589e5c91f7b59e9 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Fri, 18 Sep 2020 12:18:05 +1000 Subject: [PATCH] cmake: link with opentimelineio --- CMakeLists.txt | 2 + app/CMakeLists.txt | 2 + cmake/FindOpenTimelineIO.cmake | 133 +++++++++++++++++++++++++++++++++ 3 files changed, 137 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3c0f423c5..2f8ab7419 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -67,6 +67,8 @@ find_package(FFMPEG 3.0 REQUIRED swresample ) +find_package(OpenTimelineIO REQUIRED) + find_package(GoogleCrashpad) if (NOT GoogleCrashpad_FOUND) diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 714a5e01d..a313bb3a2 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -123,6 +123,7 @@ target_include_directories( ${FFMPEG_INCLUDE_DIRS} ${OCIO_INCLUDE_DIRS} ${OIIO_INCLUDE_DIRS} + ${OTIO_INCLUDE_DIRS} ${OPENEXR_INCLUDES} # HACK: Brew on macOS separates OpenEXR and IlmBase into two folders even though they seem to @@ -151,6 +152,7 @@ target_link_libraries( FFMPEG::swresample ${OCIO_LIBRARIES} ${OIIO_LIBRARIES} + ${OTIO_LIBRARIES} ${OPENEXR_LIBRARIES} ) diff --git a/cmake/FindOpenTimelineIO.cmake b/cmake/FindOpenTimelineIO.cmake index e69de29bb..741776195 100644 --- a/cmake/FindOpenTimelineIO.cmake +++ b/cmake/FindOpenTimelineIO.cmake @@ -0,0 +1,133 @@ +# Olive - Non-Linear Video Editor +# Copyright (C) 2019 Olive Team +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +if(UNIX) + find_path(OTIO_BASE_DIR + include/opentimelineio/timeline.h + HINTS + "${OTIO_LOCATION}" + "$ENV{OTIO_LOCATION}" + "/opt/otio" + ) + find_path(OTIO_LIBRARY_DIR + libOpenTimelineIO.so + HINTS + "${OTIO_LOCATION}" + "$ENV{OTIO_LOCATION}" + "${OTIO_BASE_DIR}" + PATH_SUFFIXES + lib/ + DOC + "OpenTimelineIO library path" + ) +elseif(WIN32) + find_path(OTIO_BASE_DIR + include/opentimelineio/timeline.h + HINTS + "${OTIO_LOCATION}" + "$ENV{OTIO_LOCATION}" + ) + find_path(OTIO_LIBRARY_DIR + OpenTimelineIO.lib + HINTS + "${OTIO_LOCATION}" + "$ENV{OTIO_LOCATION}" + "${OTIO_BASE_DIR}" + PATH_SUFFIXES + lib/ + DOC + "OpenTimelineIO library path" + ) +endif() + +find_path(OTIO_INCLUDE_DIR + OpenTimelineIO/timeline.h + HINTS + "${OTIO_LOCATION}" + "$ENV{OTIO_LOCATION}" + "${OTIO_BASE_DIR}" + PATH_SUFFIXES + include/ + DOC + "OpenTimelineIO headers path" +) + +list(APPEND OTIO_INCLUDE_DIRS ${OTIO_INCLUDE_DIR}) + +find_path(OTIO_DEPS_INCLUDE_DIR + any/any.hpp + HINTS + "${OTIO_LOCATION}" + "$ENV{OTIO_LOCATION}" + "${OTIO_BASE_DIR}" + PATH_SUFFIXES + include/opentimelineio/deps/ + DOC + "OpenTimelineIO headers path" +) + +list(APPEND OTIO_INCLUDE_DIRS ${OTIO_DEPS_INCLUDE_DIR}) + +find_path(OT_INCLUDE_DIR + OpenTime/rationalTime.h + HINTS + "${OTIO_LOCATION}" + "$ENV{OTIO_LOCATION}" + "${OTIO_BASE_DIR}" + PATH_SUFFIXES + include/ + DOC + "OpenTime headers path" +) + +list(APPEND OTIO_INCLUDE_DIRS ${OT_INCLUDE_DIR}) + +find_library(OTIO_LIBRARY + OpenTimelineIO + HINTS + "${OTIO_LOCATION}" + "$ENV{OTIO_LOCATION}" + "${OTIO_BASE_DIR}" + PATH_SUFFIXES + lib/ + DOC + "OTIO's ${OTIO_LIB} library path" +) + +list(APPEND OTIO_LIBRARIES ${OTIO_LIBRARY}) + +find_library(OT_LIBRARY + OpenTime + HINTS + "${OTIO_LOCATION}" + "$ENV{OTIO_LOCATION}" + "${OTIO_BASE_DIR}" + PATH_SUFFIXES + lib/ + DOC + "OpenTime's ${OTIO_LIB} library path" +) + +list(APPEND OTIO_LIBRARIES ${OT_LIBRARY}) + +include(FindPackageHandleStandardArgs) + +find_package_handle_standard_args(OpenTimelineIO + REQUIRED_VARS + OTIO_LIBRARIES + OTIO_INCLUDE_DIRS + OTIO_DEPS_INCLUDE_DIR +)