build: split the engine into liboakengine.so; worker drops the UI entirely
Physical split: app/{audio,cli,codec,common,config,node,pluginSupport,
render,task,timeline,undo,tool,shaders} plus coreengine, version and
ui/icons+colorcoding move to a new top-level engine/ tree, built as
liboakengine.so (shared). The render backends (oakgl/oakvulkan) move
with it and link the engine library instead of embedding a static
render-core subset (libolive-rendercore is gone).
- oak-render-worker now links liboakengine instead of the whole
libolive-editor object set: 336MB -> 2.9MB, no Qt Widgets UI
- the editor links liboakengine for the engine and keeps only UI
objects in libolive-editor
- install/packaging: GNUInstallDirs libdir on Linux, bundle copy on
macOS, oakengine.dll staged for NSIS, AppImage validation entry
- fix backend lookup for the new layout: DynamicRenderer searched
../app but backends now live in engine/; a stale pre-split liboakgl
in the build tree got dlopened instead, re-initialized and later
destroyed the interposed engine statics (full-suite segfault at
DialogSequenceParameterTab, found via gdb watchpoint)
This commit is contained in:
@@ -69,10 +69,12 @@ jobs:
|
||||
cp build/ffmpeg_bridge/bin/ffmpeg_bridge.dll app/packaging/windows/nsis/oak-editor/
|
||||
# Same for the liboakcore DLL
|
||||
cp build/core/oakcore.dll app/packaging/windows/nsis/oak-editor/
|
||||
# Same for the liboakengine DLL
|
||||
cp build/engine/oakengine.dll app/packaging/windows/nsis/oak-editor/
|
||||
windeployqt6 app/packaging/windows/nsis/oak-editor/oak-editor.exe
|
||||
# Copy all non-Qt MSYS2 DLLs recursively for every binary we ship
|
||||
cd app/packaging/windows/nsis/oak-editor
|
||||
for binary in oak-editor.exe oak-render-worker.exe oakgl.dll oakvulkan.dll ffmpeg_bridge.dll oakcore.dll; do
|
||||
for binary in oak-editor.exe oak-render-worker.exe oakgl.dll oakvulkan.dll ffmpeg_bridge.dll oakcore.dll oakengine.dll; do
|
||||
[ -f "$binary" ] || continue
|
||||
for l in $(ntldd -R "$binary" | grep -E 'mingw64|ucrt64|clang64' | sed 's/^[ \t]*//' | cut -d' ' -f3); do
|
||||
cp -v "$l" .
|
||||
@@ -372,10 +374,12 @@ jobs:
|
||||
ls AppDir/usr/lib/libvulkan.so* || (echo "Missing libvulkan" && exit 1)
|
||||
ls AppDir/usr/lib/libffmpeg_bridge.so || (echo "Missing libffmpeg_bridge.so" && exit 1)
|
||||
ls AppDir/usr/lib/liboakcore.so || (echo "Missing liboakcore.so" && exit 1)
|
||||
ls AppDir/usr/lib/liboakengine.so || (echo "Missing liboakengine.so" && exit 1)
|
||||
# Ensure every shipped binary resolves all of its dependencies
|
||||
! ldd AppDir/usr/bin/oak-editor | grep "not found"
|
||||
! ldd AppDir/usr/bin/oak-render-worker | grep "not found"
|
||||
! ldd AppDir/usr/lib/liboakcore.so | grep "not found"
|
||||
! ldd AppDir/usr/lib/liboakengine.so | grep "not found"
|
||||
! ldd AppDir/usr/lib/liboakgl.so | grep "not found"
|
||||
! ldd AppDir/usr/lib/liboakvulkan.so | grep "not found"
|
||||
|
||||
|
||||
@@ -308,6 +308,11 @@ set(KDDockWidgets_FRONTENDS "qtwidgets" CACHE INTERNAL "Only build the QtWidgets
|
||||
add_subdirectory(third_party/KDDockWidgets EXCLUDE_FROM_ALL)
|
||||
|
||||
add_subdirectory(third_party/openfx/HostSupport)
|
||||
add_subdirectory(engine)
|
||||
|
||||
# Everything above the engine library links against it
|
||||
list(APPEND OLIVE_LIBRARIES oakengine)
|
||||
|
||||
add_subdirectory(app)
|
||||
add_subdirectory(worker)
|
||||
|
||||
|
||||
+4
-162
@@ -19,29 +19,16 @@
|
||||
set(OLIVE_SOURCES
|
||||
core.h
|
||||
core.cpp
|
||||
coreengine.h
|
||||
coreengine.cpp
|
||||
)
|
||||
|
||||
#set(OLIVE_RESOURCES)
|
||||
|
||||
# Add subdirectories, which will populate the above variables
|
||||
add_subdirectory(audio)
|
||||
add_subdirectory(cli)
|
||||
add_subdirectory(codec)
|
||||
add_subdirectory(config)
|
||||
add_subdirectory(dialog)
|
||||
add_subdirectory(node)
|
||||
add_subdirectory(packaging)
|
||||
add_subdirectory(panel)
|
||||
add_subdirectory(render)
|
||||
add_subdirectory(shaders)
|
||||
add_subdirectory(task)
|
||||
add_subdirectory(timeline)
|
||||
add_subdirectory(ts)
|
||||
add_subdirectory(tool)
|
||||
add_subdirectory(ui)
|
||||
add_subdirectory(undo)
|
||||
add_subdirectory(widget)
|
||||
add_subdirectory(window)
|
||||
|
||||
@@ -58,30 +45,16 @@ configure_file(ts/translations.qrc.in ts/translations.qrc @ONLY)
|
||||
set(OLIVE_RESOURCES
|
||||
${OLIVE_RESOURCES}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/ts/translations.qrc
|
||||
render/job/pluginjob.cpp
|
||||
render/job/pluginjob.h
|
||||
widget/nodeparamview/nodeparambutton.cpp
|
||||
widget/nodeparamview/nodeparambutton.h
|
||||
)
|
||||
|
||||
# Add version object
|
||||
add_library(olive-version-obj
|
||||
OBJECT
|
||||
version.cpp
|
||||
version.h
|
||||
)
|
||||
target_link_libraries(olive-version-obj PRIVATE Qt${QT_VERSION_MAJOR}::Core)
|
||||
target_compile_options(olive-version-obj PRIVATE -DAPPVERSION="${PROJECT_VERSION}" -DAPPVERSIONLONG="${PROJECT_LONG_VERSION}")
|
||||
|
||||
# Add main library
|
||||
add_library(libolive-editor
|
||||
OBJECT
|
||||
${OLIVE_SOURCES}
|
||||
${OLIVE_RESOURCES}
|
||||
)
|
||||
add_subdirectory(common)
|
||||
add_subdirectory(pluginSupport)
|
||||
|
||||
|
||||
target_compile_features(libolive-editor PUBLIC cxx_std_23)
|
||||
include_directories(../third_party/openfx/include
|
||||
@@ -99,139 +72,6 @@ if (OAK_ENABLE_DYNAMIC_RENDER_BACKEND)
|
||||
set_target_properties(${target} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
endif ()
|
||||
endforeach ()
|
||||
|
||||
# Render core library: the minimal set of code required by the OpenGL/Vulkan backend
|
||||
# libraries. Keeping this separate from libolive-editor prevents the backends from
|
||||
# dragging in editor-wide state (project, task, cache, UI, etc.).
|
||||
add_library(libolive-rendercore STATIC
|
||||
common/avframeptr.h
|
||||
common/define.h
|
||||
common/filefunctions.cpp
|
||||
common/filefunctions.h
|
||||
common/qtutils.cpp
|
||||
common/qtutils.h
|
||||
common/xmlutils.cpp
|
||||
common/xmlutils.h
|
||||
node/param.cpp
|
||||
node/param.h
|
||||
node/splitvalue.h
|
||||
node/value.cpp
|
||||
node/value.h
|
||||
node/valuedatabase.cpp
|
||||
node/valuedatabase.h
|
||||
render/backend/dynamicrenderer.cpp
|
||||
render/backend/dynamicrenderer.h
|
||||
render/backend/renderbackend_c.h
|
||||
render/job/acceleratedjob.cpp
|
||||
render/job/acceleratedjob.h
|
||||
render/job/shaderjob.h
|
||||
render/renderer.cpp
|
||||
render/renderer.h
|
||||
render/shadercode.h
|
||||
render/texture.cpp
|
||||
render/texture.h
|
||||
render/videoparams.cpp
|
||||
render/videoparams.h
|
||||
)
|
||||
set_target_properties(libolive-rendercore PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
target_include_directories(libolive-rendercore PUBLIC
|
||||
${CMAKE_SOURCE_DIR}/app
|
||||
${CMAKE_SOURCE_DIR}/third_party/openfx/include
|
||||
${CMAKE_SOURCE_DIR}/third_party/openfx/HostSupport/include
|
||||
${OLIVE_INCLUDE_DIRS}
|
||||
)
|
||||
target_link_libraries(libolive-rendercore PUBLIC ${OLIVE_LIBRARIES} OfxHost)
|
||||
target_compile_definitions(libolive-rendercore PUBLIC ${OLIVE_DEFINITIONS})
|
||||
target_compile_options(libolive-rendercore PUBLIC ${OLIVE_COMPILE_OPTIONS})
|
||||
|
||||
add_library(oakgl SHARED
|
||||
render/opengl/openglbackend_c.cpp
|
||||
render/opengl/openglrenderer.cpp
|
||||
render/opengl/openglrenderer.h
|
||||
)
|
||||
target_link_libraries(oakgl PRIVATE libolive-rendercore)
|
||||
target_compile_definitions(oakgl PRIVATE OAK_RENDER_BACKEND_PLUGIN)
|
||||
set_target_properties(oakgl PROPERTIES
|
||||
OUTPUT_NAME oakgl
|
||||
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
if (WIN32)
|
||||
set_target_properties(oakgl PROPERTIES PREFIX "")
|
||||
endif ()
|
||||
install(TARGETS oakgl
|
||||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
)
|
||||
|
||||
if (Vulkan_FOUND)
|
||||
add_library(oakvulkan SHARED
|
||||
render/vulkan/vulkanbackend_c.cpp
|
||||
render/vulkan/vulkanrenderer.cpp
|
||||
render/vulkan/vulkanrenderer.h
|
||||
)
|
||||
target_link_libraries(oakvulkan PRIVATE libolive-rendercore)
|
||||
target_link_libraries(oakvulkan PRIVATE Vulkan::Vulkan)
|
||||
target_compile_definitions(oakvulkan PRIVATE OAK_HAS_VULKAN)
|
||||
if (SHADERC_FOUND)
|
||||
target_link_libraries(oakvulkan PRIVATE ${SHADERC_LIBRARIES})
|
||||
target_include_directories(oakvulkan PRIVATE ${SHADERC_INCLUDE_DIRS})
|
||||
target_compile_definitions(oakvulkan PRIVATE OAK_HAS_SHADERC)
|
||||
endif ()
|
||||
set_target_properties(oakvulkan PROPERTIES
|
||||
OUTPUT_NAME oakvulkan
|
||||
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
if (WIN32)
|
||||
set_target_properties(oakvulkan PROPERTIES PREFIX "")
|
||||
endif ()
|
||||
install(TARGETS oakvulkan
|
||||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
)
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
add_library(oakgl-cabi-check OBJECT
|
||||
render/opengl/openglbackend_c.cpp
|
||||
)
|
||||
target_include_directories(oakgl-cabi-check PRIVATE
|
||||
${CMAKE_SOURCE_DIR}/app
|
||||
${CMAKE_SOURCE_DIR}/third_party/openfx/include
|
||||
${CMAKE_SOURCE_DIR}/third_party/openfx/HostSupport/include
|
||||
${OLIVE_INCLUDE_DIRS}
|
||||
)
|
||||
target_link_libraries(oakgl-cabi-check PRIVATE ${OLIVE_LIBRARIES} OfxHost)
|
||||
target_compile_definitions(oakgl-cabi-check PRIVATE ${OLIVE_DEFINITIONS})
|
||||
target_compile_options(oakgl-cabi-check PRIVATE ${OLIVE_COMPILE_OPTIONS})
|
||||
|
||||
if (Vulkan_FOUND)
|
||||
add_library(oakvulkan-cabi-check OBJECT
|
||||
render/vulkan/vulkanbackend_c.cpp
|
||||
render/vulkan/vulkanrenderer.cpp
|
||||
render/vulkan/vulkanrenderer.h
|
||||
)
|
||||
target_include_directories(oakvulkan-cabi-check PRIVATE
|
||||
${CMAKE_SOURCE_DIR}/app
|
||||
${CMAKE_SOURCE_DIR}/third_party/openfx/include
|
||||
${CMAKE_SOURCE_DIR}/third_party/openfx/HostSupport/include
|
||||
${OLIVE_INCLUDE_DIRS}
|
||||
)
|
||||
target_link_libraries(oakvulkan-cabi-check PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets)
|
||||
target_link_libraries(oakvulkan-cabi-check PRIVATE Vulkan::Vulkan)
|
||||
target_compile_definitions(oakvulkan-cabi-check PRIVATE OAK_HAS_VULKAN)
|
||||
if (SHADERC_FOUND)
|
||||
target_link_libraries(oakvulkan-cabi-check PRIVATE ${SHADERC_LIBRARIES})
|
||||
target_include_directories(oakvulkan-cabi-check PRIVATE ${SHADERC_INCLUDE_DIRS})
|
||||
target_compile_definitions(oakvulkan-cabi-check PRIVATE OAK_HAS_SHADERC)
|
||||
endif ()
|
||||
target_compile_definitions(oakvulkan-cabi-check PRIVATE ${OLIVE_DEFINITIONS})
|
||||
target_compile_options(oakvulkan-cabi-check PRIVATE ${OLIVE_COMPILE_OPTIONS})
|
||||
endif ()
|
||||
|
||||
# Add application
|
||||
@@ -240,7 +80,7 @@ add_executable(olive-editor
|
||||
$<TARGET_OBJECTS:libolive-editor>
|
||||
$<TARGET_OBJECTS:olive-version-obj>
|
||||
)
|
||||
target_include_directories(olive-editor PUBLIC pluginSupport)
|
||||
|
||||
target_link_libraries(olive-editor PUBLIC OfxHost)
|
||||
add_dependencies(olive-editor oakgl-cabi-check)
|
||||
if (OAK_ENABLE_DYNAMIC_RENDER_BACKEND)
|
||||
@@ -298,7 +138,8 @@ elseif (APPLE)
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:oakgl> $<TARGET_BUNDLE_DIR:olive-editor>/Contents/MacOS/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:ffmpeg_bridge> $<TARGET_BUNDLE_DIR:olive-editor>/Contents/MacOS/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:olivecore> $<TARGET_BUNDLE_DIR:olive-editor>/Contents/MacOS/
|
||||
COMMENT "Copying oak-render-worker, render backends, ffmpeg_bridge and liboakcore into Oak.app"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:oakengine> $<TARGET_BUNDLE_DIR:olive-editor>/Contents/MacOS/
|
||||
COMMENT "Copying oak-render-worker, render backends, ffmpeg_bridge, liboakcore and liboakengine into Oak.app"
|
||||
)
|
||||
if (TARGET oakvulkan)
|
||||
add_custom_command(TARGET olive-editor POST_BUILD
|
||||
@@ -315,6 +156,7 @@ if (WIN32)
|
||||
add_custom_command(TARGET olive-editor POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:ffmpeg_bridge> $<TARGET_FILE_DIR:olive-editor>
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:olivecore> $<TARGET_FILE_DIR:olive-editor>
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:oakengine> $<TARGET_FILE_DIR:olive-editor>
|
||||
)
|
||||
endif ()
|
||||
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@
|
||||
* Use the navigation above to find documentation on classes or source files.
|
||||
*/
|
||||
|
||||
#include "olivehost.h"
|
||||
#include "pluginSupport/olivehost.h"
|
||||
|
||||
#include <csignal>
|
||||
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
add_subdirectory(cursors)
|
||||
add_subdirectory(graphics)
|
||||
add_subdirectory(icons)
|
||||
add_subdirectory(style)
|
||||
|
||||
set(OLIVE_RESOURCES
|
||||
@@ -26,8 +25,6 @@ set(OLIVE_RESOURCES
|
||||
|
||||
set(OLIVE_SOURCES
|
||||
${OLIVE_SOURCES}
|
||||
ui/colorcoding.cpp
|
||||
ui/colorcoding.h
|
||||
ui/humanstrings.cpp
|
||||
ui/humanstrings.h
|
||||
PARENT_SCOPE
|
||||
|
||||
@@ -0,0 +1,195 @@
|
||||
# Oak - Non-Linear Video Editor
|
||||
# Copyright (C) 2026 Oak 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 <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Add version object
|
||||
add_library(olive-version-obj
|
||||
OBJECT
|
||||
version.cpp
|
||||
version.h
|
||||
)
|
||||
target_link_libraries(olive-version-obj PRIVATE Qt${QT_VERSION_MAJOR}::Core)
|
||||
target_compile_options(olive-version-obj PRIVATE -DAPPVERSION="${PROJECT_VERSION}" -DAPPVERSIONLONG="${PROJECT_LONG_VERSION}")
|
||||
|
||||
# Engine library (liboakengine): the node graph, render pipeline, codecs,
|
||||
# timeline, task system and engine services, independent of the editor UI.
|
||||
# The editor (app/) and the render worker (worker/) both link against it.
|
||||
|
||||
set(OLIVE_SOURCES
|
||||
coreengine.h
|
||||
coreengine.cpp
|
||||
)
|
||||
|
||||
add_subdirectory(audio)
|
||||
add_subdirectory(cli)
|
||||
add_subdirectory(codec)
|
||||
add_subdirectory(config)
|
||||
add_subdirectory(node)
|
||||
add_subdirectory(render)
|
||||
add_subdirectory(shaders)
|
||||
add_subdirectory(task)
|
||||
add_subdirectory(timeline)
|
||||
add_subdirectory(tool)
|
||||
add_subdirectory(ui)
|
||||
add_subdirectory(undo)
|
||||
|
||||
add_library(oakengine SHARED
|
||||
${OLIVE_SOURCES}
|
||||
${OLIVE_RESOURCES}
|
||||
)
|
||||
|
||||
add_subdirectory(common)
|
||||
add_subdirectory(pluginSupport)
|
||||
|
||||
target_compile_features(oakengine PUBLIC cxx_std_23)
|
||||
set_target_properties(oakengine PROPERTIES
|
||||
OUTPUT_NAME oakengine
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
)
|
||||
|
||||
# Consumers resolve engine headers ("node/...", "render/...", "coreengine.h",
|
||||
# "ui/icons/icons.h", "tool/tool.h") from the engine root
|
||||
target_include_directories(oakengine
|
||||
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
PRIVATE ${CMAKE_SOURCE_DIR}/third_party/openfx/include
|
||||
${CMAKE_SOURCE_DIR}/third_party/openfx/HostSupport/include
|
||||
${OLIVE_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
target_link_libraries(oakengine PUBLIC ${OLIVE_LIBRARIES} OfxHost)
|
||||
target_compile_definitions(oakengine PRIVATE ${OLIVE_DEFINITIONS})
|
||||
target_compile_options(oakengine PRIVATE ${OLIVE_COMPILE_OPTIONS})
|
||||
|
||||
# Install into the platform's standard library directory (/usr/lib,
|
||||
# /usr/lib64 or the Debian multiarch path); Windows DLLs go next to the
|
||||
# executables in bin.
|
||||
include(GNUInstallDirs)
|
||||
if (WIN32)
|
||||
install(TARGETS oakengine
|
||||
RUNTIME DESTINATION bin
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
else ()
|
||||
install(TARGETS oakengine
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
endif ()
|
||||
|
||||
if (UNIX AND NOT APPLE)
|
||||
set_target_properties(oakengine PROPERTIES INSTALL_RPATH "$ORIGIN")
|
||||
endif ()
|
||||
|
||||
# Dynamic render backends (OpenGL/Vulkan) are engine plugins loaded via
|
||||
# dlopen; they share this engine library instead of embedding a static
|
||||
# render-core subset.
|
||||
if (OAK_ENABLE_DYNAMIC_RENDER_BACKEND)
|
||||
target_compile_definitions(oakengine PRIVATE OAK_ENABLE_DYNAMIC_RENDER_BACKEND)
|
||||
|
||||
foreach (target olivecore kddockwidgets)
|
||||
if (TARGET ${target})
|
||||
set_target_properties(${target} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
endif ()
|
||||
endforeach ()
|
||||
|
||||
add_library(oakgl SHARED
|
||||
render/opengl/openglbackend_c.cpp
|
||||
render/opengl/openglrenderer.cpp
|
||||
render/opengl/openglrenderer.h
|
||||
)
|
||||
target_link_libraries(oakgl PRIVATE oakengine)
|
||||
target_include_directories(oakgl PRIVATE ${OLIVE_INCLUDE_DIRS})
|
||||
target_compile_definitions(oakgl PRIVATE OAK_RENDER_BACKEND_PLUGIN)
|
||||
set_target_properties(oakgl PROPERTIES
|
||||
OUTPUT_NAME oakgl
|
||||
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
if (WIN32)
|
||||
set_target_properties(oakgl PROPERTIES PREFIX "")
|
||||
endif ()
|
||||
install(TARGETS oakgl
|
||||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
)
|
||||
|
||||
if (Vulkan_FOUND)
|
||||
add_library(oakvulkan SHARED
|
||||
render/vulkan/vulkanbackend_c.cpp
|
||||
render/vulkan/vulkanrenderer.cpp
|
||||
render/vulkan/vulkanrenderer.h
|
||||
)
|
||||
target_link_libraries(oakvulkan PRIVATE oakengine)
|
||||
target_include_directories(oakvulkan PRIVATE ${OLIVE_INCLUDE_DIRS})
|
||||
target_link_libraries(oakvulkan PRIVATE Vulkan::Vulkan)
|
||||
target_compile_definitions(oakvulkan PRIVATE OAK_HAS_VULKAN)
|
||||
if (SHADERC_FOUND)
|
||||
target_link_libraries(oakvulkan PRIVATE ${SHADERC_LIBRARIES})
|
||||
target_include_directories(oakvulkan PRIVATE ${SHADERC_INCLUDE_DIRS})
|
||||
target_compile_definitions(oakvulkan PRIVATE OAK_HAS_SHADERC)
|
||||
endif ()
|
||||
set_target_properties(oakvulkan PROPERTIES
|
||||
OUTPUT_NAME oakvulkan
|
||||
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
if (WIN32)
|
||||
set_target_properties(oakvulkan PROPERTIES PREFIX "")
|
||||
endif ()
|
||||
install(TARGETS oakvulkan
|
||||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
)
|
||||
endif ()
|
||||
|
||||
add_library(oakgl-cabi-check OBJECT
|
||||
render/opengl/openglbackend_c.cpp
|
||||
)
|
||||
target_include_directories(oakgl-cabi-check PRIVATE
|
||||
${CMAKE_SOURCE_DIR}/app
|
||||
${CMAKE_SOURCE_DIR}/third_party/openfx/include
|
||||
${CMAKE_SOURCE_DIR}/third_party/openfx/HostSupport/include
|
||||
${OLIVE_INCLUDE_DIRS}
|
||||
)
|
||||
target_link_libraries(oakgl-cabi-check PRIVATE ${OLIVE_LIBRARIES} OfxHost)
|
||||
target_compile_definitions(oakgl-cabi-check PRIVATE ${OLIVE_DEFINITIONS})
|
||||
target_compile_options(oakgl-cabi-check PRIVATE ${OLIVE_COMPILE_OPTIONS})
|
||||
|
||||
if (Vulkan_FOUND)
|
||||
add_library(oakvulkan-cabi-check OBJECT
|
||||
render/vulkan/vulkanbackend_c.cpp
|
||||
render/vulkan/vulkanrenderer.cpp
|
||||
render/vulkan/vulkanrenderer.h
|
||||
)
|
||||
target_include_directories(oakvulkan-cabi-check PRIVATE
|
||||
${CMAKE_SOURCE_DIR}/app
|
||||
${CMAKE_SOURCE_DIR}/third_party/openfx/include
|
||||
${CMAKE_SOURCE_DIR}/third_party/openfx/HostSupport/include
|
||||
${OLIVE_INCLUDE_DIRS}
|
||||
)
|
||||
target_link_libraries(oakvulkan-cabi-check PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets)
|
||||
target_link_libraries(oakvulkan-cabi-check PRIVATE Vulkan::Vulkan)
|
||||
target_compile_definitions(oakvulkan-cabi-check PRIVATE OAK_HAS_VULKAN)
|
||||
if (SHADERC_FOUND)
|
||||
target_link_libraries(oakvulkan-cabi-check PRIVATE ${SHADERC_LIBRARIES})
|
||||
target_include_directories(oakvulkan-cabi-check PRIVATE ${SHADERC_INCLUDE_DIRS})
|
||||
target_compile_definitions(oakvulkan-cabi-check PRIVATE OAK_HAS_SHADERC)
|
||||
endif ()
|
||||
target_compile_definitions(oakvulkan-cabi-check PRIVATE ${OLIVE_DEFINITIONS})
|
||||
target_compile_options(oakvulkan-cabi-check PRIVATE ${OLIVE_COMPILE_OPTIONS})
|
||||
endif ()
|
||||
endif ()
|
||||
@@ -15,7 +15,7 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
target_sources(libolive-editor PRIVATE
|
||||
target_sources(oakengine PRIVATE
|
||||
cancelableobject.h
|
||||
commandlineparser.cpp
|
||||
commandlineparser.h
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user