Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 2 additions & 4 deletions .clang-tidy
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
Checks: '-*,modernize-*,-modernize-use-trailing-return-type,-modernize-use-using,clang-diagnostic-gnu-include-next,readability-identifier-naming*'
Checks: '-*,modernize-*,-modernize-use-trailing-return-type,-modernize-use-using,clang-diagnostic-gnu-include-next,-clang-diagnostic-unused-command-line-argument'
WarningsAsErrors: ''
HeaderFilterRegex: '/xstudio/include/.*'
AnalyzeTemporaryDtors: false
ExcludeHeaderFilterRegex: '/opt/.*'
FormatStyle: none
User: al
CheckOptions:
Expand Down Expand Up @@ -34,5 +34,3 @@ CheckOptions:
value: "_"

...


4 changes: 4 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
* text=auto

*.patch text eol=lf
*.diff text eol=lf
7 changes: 4 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,17 @@ __*__
ignore/
*.egg-info/
python/test/xstudio.log
docs/Doxyfile
docs/conf.py
python/src/xstudio/version.py
.vs/
.DS_Store
/build/
xstudio_install/
**/qml/*_qml_export.h
<<<<<<< HEAD
CMakeUserPresets.json
=======
__build
__build_debug
>>>>>>> c808bb352 (WIP)
build_rel/
build_dbg/
aqtinstall.log
3 changes: 0 additions & 3 deletions .gitmodules

This file was deleted.

46 changes: 28 additions & 18 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,26 @@
cmake_minimum_required(VERSION 3.28 FATAL_ERROR)
cmake_policy(VERSION 3.28)
cmake_minimum_required(VERSION 3.26 FATAL_ERROR)
cmake_policy(VERSION 3.26)
#cmake_minimum_required(VERSION 3.28 FATAL_ERROR)
#cmake_policy(VERSION 3.28)

set(XSTUDIO_GLOBAL_VERSION "1.2.0" CACHE STRING "Version string")
set(XSTUDIO_GLOBAL_VERSION "1.3.0" CACHE STRING "Version string")
set(XSTUDIO_GLOBAL_NAME xStudio)

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

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

# Work around Qt bug: FindWrapOpenGL.cmake links -framework AGL, which was
# removed from the macOS SDK in 10.14. Fixed upstream in Qt 6.9+ but not
# backported to 6.5/6.8 LTS (see https://codereview.qt-project.org/c/qt/qtbase/+/652022).
# Pre-create the target so Qt's FindWrapOpenGL early-returns and never hits the
# broken AGL block. Can be removed once the minimum supported Qt is >= 6.9.
if(APPLE AND NOT TARGET WrapOpenGL::WrapOpenGL)
find_package(OpenGL REQUIRED)
add_library(WrapOpenGL::WrapOpenGL INTERFACE IMPORTED)
target_link_libraries(WrapOpenGL::WrapOpenGL INTERFACE OpenGL::GL)
endif()

option(BUILD_TESTING "Build tests" OFF)
option(INSTALL_PYTHON_MODULE "Install python module" ON)
option(INSTALL_XSTUDIO "Install xstudio" ON)
Expand All @@ -16,7 +29,6 @@ option(ENABLE_CLANG_TIDY "Enable clang-tidy, ninja clang-tidy." OFF)
option(ENABLE_CLANG_FORMAT "Enable clang format, ninja clangformat." OFF)
option(FORCE_COLORED_OUTPUT "Always produce ANSI-colored output (GNU/Clang only)." TRUE)
option(OPTIMIZE_FOR_NATIVE "Build with -march=native" OFF)
option(OTIO_SUBMODULE "Automatically build OpenTimelineIO as a submodule" OFF)
option(USE_VCPKG "Use Vcpkg for package management" OFF)
option(BUILD_PYSIDE_WIDGETS "Build xstudio player as PySide widget" OFF)
option(OPENIMAGEIO_PLUGIN "Include the OpenImageIO PLugin" ON)
Expand Down Expand Up @@ -158,7 +170,7 @@ if(ENABLE_CLANG_TIDY)
set(CMAKE_EXPORT_COMPILE_COMMANDS "ON")
add_custom_target(
clang-tidy
COMMAND ${CLANG_TIDY_COMMAND} -quiet -extra-arg=-I${CLANG_PATH}/lib/clang/11.1.0/include
COMMAND ${CLANG_TIDY_COMMAND} -use-color -quiet -extra-arg="-std=c++17 -I${CLANG_PATH}/lib/clang/20/include"
USES_TERMINAL
)
endif()
Expand Down Expand Up @@ -188,10 +200,6 @@ endif()

if (USE_VCPKG)

# When building with VCPKG, we will use OTIO submodule
set(OTIO_SUBMODULE true)
add_subdirectory("extern/otio")

set(VCPKG_INTEGRATION ON)

# Install pip and sphinx
Expand All @@ -208,24 +216,22 @@ if (USE_VCPKG)
message(FATAL_ERROR "Failed to ensurepip.")
else()
execute_process(
COMMAND "${Python_EXECUTABLE}" -m pip install setuptools sphinx breathe sphinx-rtd-theme OpenTimelineIO-Plugins importlib_metadata zipp numpy
COMMAND "${Python_EXECUTABLE}" -m pip install setuptools sphinx breathe sphinx-rtd-theme OpenTimelineIO-Plugins importlib_metadata zipp numpy pyyaml fileseq
RESULT_VARIABLE PIP_RESULT
)
if(PIP_RESULT)
message(FATAL_ERROR "Failed to install Sphinx using pip.")
message(FATAL_ERROR "Failed to install python dependencies using pip.")
endif()
endif()

else()
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
if(${OTIO_SUBMODULE})
add_subdirectory("extern/otio")
endif()
find_package(PkgConfig REQUIRED)
endif()

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

find_package(OpenTimelineIO CONFIG REQUIRED)
find_package(nlohmann_json CONFIG REQUIRED)
include(CTest)

Expand Down Expand Up @@ -310,10 +316,14 @@ if (WIN32)

include(InstallRequiredSystemLibraries)

set(CPACK_PACKAGE_VERSION "1.2.0")
set(CPACK_PACKAGE_VERSION_MAJOR "2")
set(CPACK_PACKAGE_VERSION_MINOR "1")
set(CPACK_PACKAGE_VERSION_PATCH "0")
set(CPACK_PACKAGE_VERSION ${XSTUDIO_GLOBAL_VERSION})

string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)" VERSION_MATCH ${XSTUDIO_GLOBAL_VERSION})

set(CPACK_PACKAGE_VERSION_MAJOR ${CMAKE_MATCH_1})
set(CPACK_PACKAGE_VERSION_MINOR ${CMAKE_MATCH_2})
set(CPACK_PACKAGE_VERSION_PATCH ${CMAKE_MATCH_3})

set(CPACK_PACKAGE_VENDOR "DNEG / Academy Software Foundation")
set (CPACK_NSIS_MUI_ICON
"${CMAKE_CURRENT_SOURCE_DIR}/ui/icons\\\\xstudio_app.ico")
Expand Down
92 changes: 88 additions & 4 deletions CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"CMAKE_TOOLCHAIN_FILE": "${sourceDir}/../vcpkg/scripts/buildsystems/vcpkg.cmake",
"Qt6_DIR": "/Users/tedwaine/Qt6/6.5.3/macos/lib/cmake/Qt6",
"CMAKE_INSTALL_PREFIX": "xstudio_install",
"X_VCPKG_APPLOCAL_DEPS_INSTALL": "ON",
"BUILD_DOCS": "OFF",
"USE_VCPKG": "ON",
"STUDIO_PLUGINS": "",
"BMD_DECKLINK_PLUGIN": "OFF"
"BMD_DECKLINK_PLUGIN": "OFF",
"VCPKG_OVERLAY_PORTS": "${sourceDir}/cmake/vcpkg_overlay_ports"
}
},
{
Expand Down Expand Up @@ -44,7 +44,6 @@
},
{
"name": "WinDebug",
"hidden": true,
"inherits": ["windows-base"],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
Expand Down Expand Up @@ -151,10 +150,67 @@
"USE_SANITIZER": "address"
}
},
{
{
"name": "macos-ninja-base-arm",
"inherits": "macos-base-arm",
"generator": "Ninja"
},
{
"name": "macos-ninja-base-intel",
"inherits": "macos-base-intel",
"generator": "Ninja"
},
{
"name": "MacOSNinjaRelease",
"inherits": ["macos-ninja-base-arm"],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
},
{
"name": "MacOSNinjaRelWithDebInfo",
"inherits": ["macos-ninja-base-arm"],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
"USE_SANITIZER": "address"
}
},
{
"name": "MacOSNinjaDebug",
"inherits": ["macos-ninja-base-arm"],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"USE_SANITIZER": "address"
}
},
{
"name": "MacOSIntelNinjaRelease",
"inherits": ["macos-ninja-base-intel"],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
},
{
"name": "MacOSIntelNinjaRelWithDebInfo",
"inherits": ["macos-ninja-base-intel"],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
"USE_SANITIZER": "address"
}
},
{
"name": "MacOSIntelNinjaDebug",
"inherits": ["macos-ninja-base-intel"],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"USE_SANITIZER": "address"
}
},
{
"name": "linux-base",
"inherits": "default",
"cacheVariables": {
"VCPKG_OVERLAY_TRIPLETS": "${sourceDir}/cmake/vcpkg_triplets",
"VCPKG_TARGET_TRIPLET": "x64-xstudio-linux"
}
},
Expand All @@ -180,6 +236,34 @@
"CMAKE_BUILD_TYPE": "Debug",
"USE_SANITIZER": "address"
}
},
{
"name": "linux-ninja-base",
"inherits": "linux-base",
"generator": "Ninja"
},
{
"name": "LinuxNinjaRelease",
"inherits": ["linux-ninja-base"],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
},
{
"name": "LinuxNinjaRelWithDebInfo",
"inherits": ["linux-ninja-base"],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
"USE_SANITIZER": "address"
}
},
{
"name": "LinuxNinjaDebug",
"inherits": ["linux-ninja-base"],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"USE_SANITIZER": "address"
}
}
]
}
6 changes: 5 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,8 @@ There are two contribution agreement types, one for individuals contributing ind

## Coding Conventions

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.
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.

## Git Workflow

Please only submit pull requests on the 'develop' branch. The 'main' branch is reserved for updates from the 'develop' branch only.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Welcome to xSTUDIO - v1.2.0
# Welcome to xSTUDIO - v1.3.0

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.

This codebase will build version 1.2.0 of xSTUDIO.
This codebase will build version 1.3.0 of xSTUDIO.

## Building xSTUDIO

Expand Down
26 changes: 11 additions & 15 deletions cmake/macros.cmake
Original file line number Diff line number Diff line change
@@ -1,26 +1,20 @@
macro(default_compile_options name)
target_compile_options(${name}
# PRIVATE -fvisibility=hidden
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Linux>>:-Wextra>
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Linux>>:-Wno-unused-function>
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Linux>>:-Wpedantic>
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Windows>>:/wd4100>
PRIVATE $<$<AND:$<CONFIG:RelWithDebInfo>,$<PLATFORM_ID:Linux>>:-fno-omit-frame-pointer>
PRIVATE $<$<AND:$<CONFIG:RelWithDebInfo>,$<PLATFORM_ID:Windows>>:/Oy>
PRIVATE $<$<PLATFORM_ID:Darwin>:-Wno-deprecated>
PRIVATE $<$<PLATFORM_ID:Linux>:-Wno-deprecated>
# PRIVATE $<$<PLATFORM_ID:Linux>:-Wno-deprecated-declarations>
# PRIVATE $<$<CONFIG:Debug>:-Wno-unused-variable>
# PRIVATE $<$<CONFIG:Debug>:-Wno-unused-but-set-variable>
# PRIVATE $<$<CONFIG:Debug>:-Wno-unused-parameter>
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Linux>>:-Wno-unused-function>
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Linux>>:-Wextra>
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Linux>>:-Wextra>
PRIVATE $<$<PLATFORM_ID:Linux>:-Wextra>
PRIVATE $<$<PLATFORM_ID:Linux>:-Wall>
PRIVATE $<$<PLATFORM_ID:Linux>:-Wno-unused-parameter>
PRIVATE $<$<PLATFORM_ID:Linux>:-Werror>
PRIVATE $<$<PLATFORM_ID:Linux>:-Wfatal-errors> # Stop after first error
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Linux>>:-Wpedantic>
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Windows>>:/wd4100>
PRIVATE $<$<PLATFORM_ID:Linux>:-Wno-deprecated>
PRIVATE $<$<PLATFORM_ID:Windows>:/bigobj>
# PRIVATE $<$<CONFIG:Debug>:-Wall>
# PRIVATE $<$<CONFIG:Debug>:-Werror>
# PRIVATE $<$<CONFIG:Debug>:-Wextra>
# PRIVATE $<$<CONFIG:Debug>:-Wpedantic>
# PRIVATE ${GTEST_CFLAGS}
)

target_compile_features(${name}
Expand Down Expand Up @@ -308,6 +302,7 @@ macro(default_options_qt name)
set_target_properties(${name}
PROPERTIES
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
install(TARGETS ${name} EXPORT xstudio
LIBRARY DESTINATION share/xstudio/lib)
Expand Down Expand Up @@ -581,6 +576,7 @@ macro(create_test PATH DEPS)
default_options_gtest(${NAME})
target_link_libraries(${NAME}
PRIVATE
xstudio::global
"${DEPS}"
${GTEST_LDFLAGS}
)
Expand Down
14 changes: 0 additions & 14 deletions cmake/otio_patch.diff

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -245,7 +245,7 @@
endif()

# set up the internally hosted dependencies
-add_subdirectory(src/deps)
+# add_subdirectory(src/deps)

set (OTIO_IMATH_TARGETS
# For OpenEXR/Imath 3.x:
Loading
Loading