Skip to content

Commit 0cfd8ee

Browse files
authored
Merge pull request #285 from AcademySoftwareFoundation/develop
Merge develop into main for v1.3.0
2 parents 45aba58 + e0c88d1 commit 0cfd8ee

848 files changed

Lines changed: 48312 additions & 42974 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.clang-tidy

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
---
2-
Checks: '-*,modernize-*,-modernize-use-trailing-return-type,-modernize-use-using,clang-diagnostic-gnu-include-next,readability-identifier-naming*'
2+
Checks: '-*,modernize-*,-modernize-use-trailing-return-type,-modernize-use-using,clang-diagnostic-gnu-include-next,-clang-diagnostic-unused-command-line-argument'
33
WarningsAsErrors: ''
44
HeaderFilterRegex: '/xstudio/include/.*'
5-
AnalyzeTemporaryDtors: false
5+
ExcludeHeaderFilterRegex: '/opt/.*'
66
FormatStyle: none
77
User: al
88
CheckOptions:
@@ -34,5 +34,3 @@ CheckOptions:
3434
value: "_"
3535

3636
...
37-
38-

.gitattributes

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
* text=auto
2+
3+
*.patch text eol=lf
4+
*.diff text eol=lf

.gitignore

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,17 @@ __*__
77
ignore/
88
*.egg-info/
99
python/test/xstudio.log
10+
docs/Doxyfile
1011
docs/conf.py
1112
python/src/xstudio/version.py
1213
.vs/
1314
.DS_Store
1415
/build/
1516
xstudio_install/
1617
**/qml/*_qml_export.h
17-
<<<<<<< HEAD
1818
CMakeUserPresets.json
19-
=======
2019
__build
2120
__build_debug
22-
>>>>>>> c808bb352 (WIP)
21+
build_rel/
22+
build_dbg/
23+
aqtinstall.log

.gitmodules

Lines changed: 0 additions & 3 deletions
This file was deleted.

CMakeLists.txt

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,26 @@
1-
cmake_minimum_required(VERSION 3.28 FATAL_ERROR)
2-
cmake_policy(VERSION 3.28)
1+
cmake_minimum_required(VERSION 3.26 FATAL_ERROR)
2+
cmake_policy(VERSION 3.26)
3+
#cmake_minimum_required(VERSION 3.28 FATAL_ERROR)
4+
#cmake_policy(VERSION 3.28)
35

4-
set(XSTUDIO_GLOBAL_VERSION "1.2.0" CACHE STRING "Version string")
6+
set(XSTUDIO_GLOBAL_VERSION "1.3.0" CACHE STRING "Version string")
57
set(XSTUDIO_GLOBAL_NAME xStudio)
68

79
# set(CMAKE_OSX_DEPLOYMENT_TARGET "14.5" CACHE STRING "Minimum OS X deployment version" FORCE)
810

911
project(${XSTUDIO_GLOBAL_NAME} VERSION ${XSTUDIO_GLOBAL_VERSION} LANGUAGES CXX)
1012

13+
# Work around Qt bug: FindWrapOpenGL.cmake links -framework AGL, which was
14+
# removed from the macOS SDK in 10.14. Fixed upstream in Qt 6.9+ but not
15+
# backported to 6.5/6.8 LTS (see https://codereview.qt-project.org/c/qt/qtbase/+/652022).
16+
# Pre-create the target so Qt's FindWrapOpenGL early-returns and never hits the
17+
# broken AGL block. Can be removed once the minimum supported Qt is >= 6.9.
18+
if(APPLE AND NOT TARGET WrapOpenGL::WrapOpenGL)
19+
find_package(OpenGL REQUIRED)
20+
add_library(WrapOpenGL::WrapOpenGL INTERFACE IMPORTED)
21+
target_link_libraries(WrapOpenGL::WrapOpenGL INTERFACE OpenGL::GL)
22+
endif()
23+
1124
option(BUILD_TESTING "Build tests" OFF)
1225
option(INSTALL_PYTHON_MODULE "Install python module" ON)
1326
option(INSTALL_XSTUDIO "Install xstudio" ON)
@@ -16,7 +29,6 @@ option(ENABLE_CLANG_TIDY "Enable clang-tidy, ninja clang-tidy." OFF)
1629
option(ENABLE_CLANG_FORMAT "Enable clang format, ninja clangformat." OFF)
1730
option(FORCE_COLORED_OUTPUT "Always produce ANSI-colored output (GNU/Clang only)." TRUE)
1831
option(OPTIMIZE_FOR_NATIVE "Build with -march=native" OFF)
19-
option(OTIO_SUBMODULE "Automatically build OpenTimelineIO as a submodule" OFF)
2032
option(USE_VCPKG "Use Vcpkg for package management" OFF)
2133
option(BUILD_PYSIDE_WIDGETS "Build xstudio player as PySide widget" OFF)
2234
option(OPENIMAGEIO_PLUGIN "Include the OpenImageIO PLugin" ON)
@@ -158,7 +170,7 @@ if(ENABLE_CLANG_TIDY)
158170
set(CMAKE_EXPORT_COMPILE_COMMANDS "ON")
159171
add_custom_target(
160172
clang-tidy
161-
COMMAND ${CLANG_TIDY_COMMAND} -quiet -extra-arg=-I${CLANG_PATH}/lib/clang/11.1.0/include
173+
COMMAND ${CLANG_TIDY_COMMAND} -use-color -quiet -extra-arg="-std=c++17 -I${CLANG_PATH}/lib/clang/20/include"
162174
USES_TERMINAL
163175
)
164176
endif()
@@ -188,10 +200,6 @@ endif()
188200

189201
if (USE_VCPKG)
190202

191-
# When building with VCPKG, we will use OTIO submodule
192-
set(OTIO_SUBMODULE true)
193-
add_subdirectory("extern/otio")
194-
195203
set(VCPKG_INTEGRATION ON)
196204

197205
# Install pip and sphinx
@@ -208,24 +216,22 @@ if (USE_VCPKG)
208216
message(FATAL_ERROR "Failed to ensurepip.")
209217
else()
210218
execute_process(
211-
COMMAND "${Python_EXECUTABLE}" -m pip install setuptools sphinx breathe sphinx-rtd-theme OpenTimelineIO-Plugins importlib_metadata zipp numpy
219+
COMMAND "${Python_EXECUTABLE}" -m pip install setuptools sphinx breathe sphinx-rtd-theme OpenTimelineIO-Plugins importlib_metadata zipp numpy pyyaml fileseq
212220
RESULT_VARIABLE PIP_RESULT
213221
)
214222
if(PIP_RESULT)
215-
message(FATAL_ERROR "Failed to install Sphinx using pip.")
223+
message(FATAL_ERROR "Failed to install python dependencies using pip.")
216224
endif()
217225
endif()
218226

219227
else()
220228
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
221-
if(${OTIO_SUBMODULE})
222-
add_subdirectory("extern/otio")
223-
endif()
224229
find_package(PkgConfig REQUIRED)
225230
endif()
226231

227232
# Add the necessary libraries from Vcpkg if Vcpkg integration is enabled
228233

234+
find_package(OpenTimelineIO CONFIG REQUIRED)
229235
find_package(nlohmann_json CONFIG REQUIRED)
230236
include(CTest)
231237

@@ -310,10 +316,14 @@ if (WIN32)
310316

311317
include(InstallRequiredSystemLibraries)
312318

313-
set(CPACK_PACKAGE_VERSION "1.2.0")
314-
set(CPACK_PACKAGE_VERSION_MAJOR "2")
315-
set(CPACK_PACKAGE_VERSION_MINOR "1")
316-
set(CPACK_PACKAGE_VERSION_PATCH "0")
319+
set(CPACK_PACKAGE_VERSION ${XSTUDIO_GLOBAL_VERSION})
320+
321+
string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)" VERSION_MATCH ${XSTUDIO_GLOBAL_VERSION})
322+
323+
set(CPACK_PACKAGE_VERSION_MAJOR ${CMAKE_MATCH_1})
324+
set(CPACK_PACKAGE_VERSION_MINOR ${CMAKE_MATCH_2})
325+
set(CPACK_PACKAGE_VERSION_PATCH ${CMAKE_MATCH_3})
326+
317327
set(CPACK_PACKAGE_VENDOR "DNEG / Academy Software Foundation")
318328
set (CPACK_NSIS_MUI_ICON
319329
"${CMAKE_CURRENT_SOURCE_DIR}/ui/icons\\\\xstudio_app.ico")

CMakePresets.json

Lines changed: 88 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77
"binaryDir": "${sourceDir}/build",
88
"cacheVariables": {
99
"CMAKE_TOOLCHAIN_FILE": "${sourceDir}/../vcpkg/scripts/buildsystems/vcpkg.cmake",
10-
"Qt6_DIR": "/Users/tedwaine/Qt6/6.5.3/macos/lib/cmake/Qt6",
1110
"CMAKE_INSTALL_PREFIX": "xstudio_install",
1211
"X_VCPKG_APPLOCAL_DEPS_INSTALL": "ON",
1312
"BUILD_DOCS": "OFF",
1413
"USE_VCPKG": "ON",
1514
"STUDIO_PLUGINS": "",
16-
"BMD_DECKLINK_PLUGIN": "OFF"
15+
"BMD_DECKLINK_PLUGIN": "OFF",
16+
"VCPKG_OVERLAY_PORTS": "${sourceDir}/cmake/vcpkg_overlay_ports"
1717
}
1818
},
1919
{
@@ -44,7 +44,6 @@
4444
},
4545
{
4646
"name": "WinDebug",
47-
"hidden": true,
4847
"inherits": ["windows-base"],
4948
"cacheVariables": {
5049
"CMAKE_BUILD_TYPE": "Debug",
@@ -151,10 +150,67 @@
151150
"USE_SANITIZER": "address"
152151
}
153152
},
154-
{
153+
{
154+
"name": "macos-ninja-base-arm",
155+
"inherits": "macos-base-arm",
156+
"generator": "Ninja"
157+
},
158+
{
159+
"name": "macos-ninja-base-intel",
160+
"inherits": "macos-base-intel",
161+
"generator": "Ninja"
162+
},
163+
{
164+
"name": "MacOSNinjaRelease",
165+
"inherits": ["macos-ninja-base-arm"],
166+
"cacheVariables": {
167+
"CMAKE_BUILD_TYPE": "Release"
168+
}
169+
},
170+
{
171+
"name": "MacOSNinjaRelWithDebInfo",
172+
"inherits": ["macos-ninja-base-arm"],
173+
"cacheVariables": {
174+
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
175+
"USE_SANITIZER": "address"
176+
}
177+
},
178+
{
179+
"name": "MacOSNinjaDebug",
180+
"inherits": ["macos-ninja-base-arm"],
181+
"cacheVariables": {
182+
"CMAKE_BUILD_TYPE": "Debug",
183+
"USE_SANITIZER": "address"
184+
}
185+
},
186+
{
187+
"name": "MacOSIntelNinjaRelease",
188+
"inherits": ["macos-ninja-base-intel"],
189+
"cacheVariables": {
190+
"CMAKE_BUILD_TYPE": "Release"
191+
}
192+
},
193+
{
194+
"name": "MacOSIntelNinjaRelWithDebInfo",
195+
"inherits": ["macos-ninja-base-intel"],
196+
"cacheVariables": {
197+
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
198+
"USE_SANITIZER": "address"
199+
}
200+
},
201+
{
202+
"name": "MacOSIntelNinjaDebug",
203+
"inherits": ["macos-ninja-base-intel"],
204+
"cacheVariables": {
205+
"CMAKE_BUILD_TYPE": "Debug",
206+
"USE_SANITIZER": "address"
207+
}
208+
},
209+
{
155210
"name": "linux-base",
156211
"inherits": "default",
157212
"cacheVariables": {
213+
"VCPKG_OVERLAY_TRIPLETS": "${sourceDir}/cmake/vcpkg_triplets",
158214
"VCPKG_TARGET_TRIPLET": "x64-xstudio-linux"
159215
}
160216
},
@@ -180,6 +236,34 @@
180236
"CMAKE_BUILD_TYPE": "Debug",
181237
"USE_SANITIZER": "address"
182238
}
239+
},
240+
{
241+
"name": "linux-ninja-base",
242+
"inherits": "linux-base",
243+
"generator": "Ninja"
244+
},
245+
{
246+
"name": "LinuxNinjaRelease",
247+
"inherits": ["linux-ninja-base"],
248+
"cacheVariables": {
249+
"CMAKE_BUILD_TYPE": "Release"
250+
}
251+
},
252+
{
253+
"name": "LinuxNinjaRelWithDebInfo",
254+
"inherits": ["linux-ninja-base"],
255+
"cacheVariables": {
256+
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
257+
"USE_SANITIZER": "address"
258+
}
259+
},
260+
{
261+
"name": "LinuxNinjaDebug",
262+
"inherits": ["linux-ninja-base"],
263+
"cacheVariables": {
264+
"CMAKE_BUILD_TYPE": "Debug",
265+
"USE_SANITIZER": "address"
266+
}
183267
}
184268
]
185269
}

CONTRIBUTING.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,8 @@ There are two contribution agreement types, one for individuals contributing ind
2424

2525
## Coding Conventions
2626

27-
Please follow the coding style accross the various file types in the project as best you can. While we have strived to maintain a consistent formatting to the code you may find there are differing styles thanks to the various authors and their natural preferences. We suggest you do your best to follow what's already there but we will not impose a strict style on new code in PRs. We do periodically run clang auto formatting across the C++ components of the codebase. Clang formatting rules are defined in the .clang-tidy and .clang-format files in the root.
27+
Please follow the coding style accross the various file types in the project as best you can. While we have strived to maintain a consistent formatting to the code you may find there are differing styles thanks to the various authors and their natural preferences. We suggest you do your best to follow what's already there but we will not impose a strict style on new code in PRs. We do periodically run clang auto formatting across the C++ components of the codebase. Clang formatting rules are defined in the .clang-tidy and .clang-format files in the root.
28+
29+
## Git Workflow
30+
31+
Please only submit pull requests on the 'develop' branch. The 'main' branch is reserved for updates from the 'develop' branch only.

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
# Welcome to xSTUDIO - v1.2.0
1+
# Welcome to xSTUDIO - v1.3.0
22

33
xSTUDIO is a media playback and review application designed for professionals working in the film and TV post production industries, particularly the Visual Effects and Feature Animation sectors. xSTUDIO is focused on providing an intuitive, easy to use interface with a high performance playback engine at its core and C++ and Python APIs for pipeline integration and customisation for total flexibility.
44

5-
This codebase will build version 1.2.0 of xSTUDIO.
5+
This codebase will build version 1.3.0 of xSTUDIO.
66

77
## Building xSTUDIO
88

cmake/macros.cmake

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,20 @@
11
macro(default_compile_options name)
22
target_compile_options(${name}
33
# PRIVATE -fvisibility=hidden
4+
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Linux>>:-Wextra>
5+
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Linux>>:-Wno-unused-function>
6+
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Linux>>:-Wpedantic>
7+
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Windows>>:/wd4100>
48
PRIVATE $<$<AND:$<CONFIG:RelWithDebInfo>,$<PLATFORM_ID:Linux>>:-fno-omit-frame-pointer>
59
PRIVATE $<$<AND:$<CONFIG:RelWithDebInfo>,$<PLATFORM_ID:Windows>>:/Oy>
610
PRIVATE $<$<PLATFORM_ID:Darwin>:-Wno-deprecated>
7-
PRIVATE $<$<PLATFORM_ID:Linux>:-Wno-deprecated>
8-
# PRIVATE $<$<PLATFORM_ID:Linux>:-Wno-deprecated-declarations>
9-
# PRIVATE $<$<CONFIG:Debug>:-Wno-unused-variable>
10-
# PRIVATE $<$<CONFIG:Debug>:-Wno-unused-but-set-variable>
11-
# PRIVATE $<$<CONFIG:Debug>:-Wno-unused-parameter>
12-
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Linux>>:-Wno-unused-function>
13-
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Linux>>:-Wextra>
14-
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Linux>>:-Wextra>
11+
PRIVATE $<$<PLATFORM_ID:Linux>:-Wextra>
12+
PRIVATE $<$<PLATFORM_ID:Linux>:-Wall>
13+
PRIVATE $<$<PLATFORM_ID:Linux>:-Wno-unused-parameter>
14+
PRIVATE $<$<PLATFORM_ID:Linux>:-Werror>
1515
PRIVATE $<$<PLATFORM_ID:Linux>:-Wfatal-errors> # Stop after first error
16-
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Linux>>:-Wpedantic>
17-
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Windows>>:/wd4100>
16+
PRIVATE $<$<PLATFORM_ID:Linux>:-Wno-deprecated>
1817
PRIVATE $<$<PLATFORM_ID:Windows>:/bigobj>
19-
# PRIVATE $<$<CONFIG:Debug>:-Wall>
20-
# PRIVATE $<$<CONFIG:Debug>:-Werror>
21-
# PRIVATE $<$<CONFIG:Debug>:-Wextra>
22-
# PRIVATE $<$<CONFIG:Debug>:-Wpedantic>
23-
# PRIVATE ${GTEST_CFLAGS}
2418
)
2519

2620
target_compile_features(${name}
@@ -213,6 +207,7 @@ macro(default_plugin_options name)
213207
add_custom_command(
214208
TARGET ${PROJECT_NAME}
215209
POST_BUILD
210+
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/share/xstudio/plugin"
216211
COMMAND ${CMAKE_COMMAND} -E copy "$<TARGET_FILE:${PROJECT_NAME}>" "${CMAKE_BINARY_DIR}/share/xstudio/plugin"
217212
)
218213
endif()
@@ -308,6 +303,7 @@ macro(default_options_qt name)
308303
set_target_properties(${name}
309304
PROPERTIES
310305
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/lib"
306+
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
311307
)
312308
install(TARGETS ${name} EXPORT xstudio
313309
LIBRARY DESTINATION share/xstudio/lib)
@@ -520,15 +516,9 @@ macro(add_preference name path target)
520516
521517
else()
522518
523-
if (WIN32)
524-
add_custom_command(TARGET ${target} POST_BUILD
525-
COMMAND ${CMAKE_COMMAND} -E copy ${path}/${name}
526-
${CMAKE_BINARY_DIR}/share/xstudio/preference/${name})
527-
else()
528-
add_custom_command(TARGET ${target} POST_BUILD
519+
add_custom_command(TARGET ${target} POST_BUILD
529520
COMMAND ${CMAKE_COMMAND} -E copy ${path}/${name}
530521
${CMAKE_BINARY_DIR}/bin/preference/${name})
531-
endif()
532522
533523
if(INSTALL_XSTUDIO)
534524
install(FILES
@@ -581,6 +571,7 @@ macro(create_test PATH DEPS)
581571
default_options_gtest(${NAME})
582572
target_link_libraries(${NAME}
583573
PRIVATE
574+
xstudio::global
584575
"${DEPS}"
585576
${GTEST_LDFLAGS}
586577
)

cmake/otio_patch.diff

Lines changed: 0 additions & 14 deletions
This file was deleted.

0 commit comments

Comments
 (0)