ci: link render backend plugins against oakengine-obj on Windows; switch runners
- liboakengine.dll does not export engine-internal C++ symbols (olive::Renderer, FileFunctions, VideoParams, Texture), so oakgl.dll failed to link on Windows. Embed oakengine-obj instead (same pattern as the engine tests); MinGW's name-based RTTI keeps cross-DLL casts working. - ci.yml: move to warp runners
This commit is contained in:
@@ -13,7 +13,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-24.04, macos-15, windows-latest]
|
os: [warp-ubuntu-latest-x64-16x, warp-macos-15-arm64-12x, warp-windows-latest-x64-32x]
|
||||||
env:
|
env:
|
||||||
CMAKE_BUILD_TYPE: Release
|
CMAKE_BUILD_TYPE: Release
|
||||||
CCACHE_DIR: ${{ github.workspace }}/.ccache
|
CCACHE_DIR: ${{ github.workspace }}/.ccache
|
||||||
|
|||||||
+15
-2
@@ -170,7 +170,15 @@ if (OAK_ENABLE_DYNAMIC_RENDER_BACKEND)
|
|||||||
render/opengl/openglrenderer.cpp
|
render/opengl/openglrenderer.cpp
|
||||||
render/opengl/openglrenderer.h
|
render/opengl/openglrenderer.h
|
||||||
)
|
)
|
||||||
target_link_libraries(oakgl PRIVATE oakengine)
|
if (WIN32)
|
||||||
|
# Engine-internal C++ symbols (olive::Renderer, FileFunctions, ...) are
|
||||||
|
# not exported from liboakengine.dll; embed the object library like the
|
||||||
|
# engine tests do. MinGW compares type_info by name, so cross-DLL RTTI
|
||||||
|
# with the shared engine still works.
|
||||||
|
target_link_libraries(oakgl PRIVATE oakengine-obj)
|
||||||
|
else ()
|
||||||
|
target_link_libraries(oakgl PRIVATE oakengine)
|
||||||
|
endif ()
|
||||||
if (COMMAND oak_copy_otio_runtime)
|
if (COMMAND oak_copy_otio_runtime)
|
||||||
oak_copy_otio_runtime(oakgl)
|
oak_copy_otio_runtime(oakgl)
|
||||||
endif()
|
endif()
|
||||||
@@ -197,7 +205,12 @@ if (OAK_ENABLE_DYNAMIC_RENDER_BACKEND)
|
|||||||
render/vulkan/vulkanrenderer.cpp
|
render/vulkan/vulkanrenderer.cpp
|
||||||
render/vulkan/vulkanrenderer.h
|
render/vulkan/vulkanrenderer.h
|
||||||
)
|
)
|
||||||
target_link_libraries(oakvulkan PRIVATE oakengine)
|
if (WIN32)
|
||||||
|
# Same as oakgl: embed the engine objects on Windows (see above).
|
||||||
|
target_link_libraries(oakvulkan PRIVATE oakengine-obj)
|
||||||
|
else ()
|
||||||
|
target_link_libraries(oakvulkan PRIVATE oakengine)
|
||||||
|
endif ()
|
||||||
if (COMMAND oak_copy_otio_runtime)
|
if (COMMAND oak_copy_otio_runtime)
|
||||||
oak_copy_otio_runtime(oakvulkan)
|
oak_copy_otio_runtime(oakvulkan)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
Reference in New Issue
Block a user