Skip to content

Commit 2ea6c1c

Browse files
committed
MacOS build comaptibility added. Many improvements and fixes
1 parent ed52a07 commit 2ea6c1c

File tree

956 files changed

+47402
-30892
lines changed

Some content is hidden

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

956 files changed

+47402
-30892
lines changed

.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
.gitignore
55
.vscode/
66
__*__
7-
build*/
87
ignore/
98
python/src/xstudio.egg-info/
109
python/test/xstudio.log
1110
docs/conf.py
1211
python/src/xstudio/version.py
13-
.vs/
12+
.vs/
13+
.DS_Store

.gitmodules

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +0,0 @@
1-
[submodule "extern/otio/OpenTimelineIO"]
2-
path = extern/otio/OpenTimelineIO
3-
url = https://github.com/AcademySoftwareFoundation/OpenTimelineIO

CMakeLists.txt

Lines changed: 87 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,35 @@
11
cmake_minimum_required(VERSION 3.26 FATAL_ERROR)
2+
cmake_policy(VERSION 3.26)
23

3-
option(USE_VCPKG "Use Vcpkg for package management" OFF)
4-
if(WIN32)
5-
set(USE_VCPKG ON)
6-
endif()
7-
8-
if (USE_VCPKG)
9-
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/vcpkg.cmake)
10-
endif()
11-
12-
set(XSTUDIO_GLOBAL_VERSION "2.4.0" CACHE STRING "Version string")
4+
set(XSTUDIO_GLOBAL_VERSION "2.5.0" CACHE STRING "Version string")
135
set(XSTUDIO_GLOBAL_NAME xStudio)
146

15-
project(${XSTUDIO_GLOBAL_NAME} VERSION ${XSTUDIO_GLOBAL_VERSION} LANGUAGES CXX)
16-
17-
set(CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION OFF)
7+
set(CMAKE_OSX_DEPLOYMENT_TARGET "14.5" CACHE STRING "Minimum OS X deployment version" FORCE)
188

19-
cmake_policy(VERSION 3.26)
9+
project(${XSTUDIO_GLOBAL_NAME} VERSION ${XSTUDIO_GLOBAL_VERSION} LANGUAGES CXX)
2010

2111
option(BUILD_TESTING "Build tests" OFF)
2212
option(INSTALL_PYTHON_MODULE "Install python module" ON)
2313
option(INSTALL_XSTUDIO "Install xstudio" ON)
24-
option(BUILD_DOCS "Build xStudio documentation" OFF)
14+
option(BUILD_DOCS "Build xStudio documentation" ON)
2515
option(ENABLE_CLANG_TIDY "Enable clang-tidy, ninja clang-tidy." OFF)
2616
option(ENABLE_CLANG_FORMAT "Enable clang format, ninja clangformat." OFF)
2717
option(FORCE_COLORED_OUTPUT "Always produce ANSI-colored output (GNU/Clang only)." TRUE)
2818
option(OPTIMIZE_FOR_NATIVE "Build with -march=native" OFF)
2919
option(BUILD_RESKIN "Build xstudio reskin binary" ON)
3020
option(OTIO_SUBMODULE "Automatically build OpenTimelineIO as a submodule" OFF)
21+
option(USE_VCPKG "Use Vcpkg for package management" OFF)
22+
option(BUILD_PYSIDE_WIDGETS "Build xstudio player as PySide widget" OFF)
3123

3224
if(WIN32)
33-
set(CMAKE_CXX_FLAGS_DEBUG "/Zi /Ob0 /Od /Oy-")
34-
set(OTIO_SUBMODULE ON)
25+
set(USE_VCPKG ON)
26+
#include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/vcpkg.cmake)
27+
set(CMAKE_CXX_FLAGS_DEBUG "/Zi /Ob0 /Od /Oy-")
3528
add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/MP>)
36-
# enable UUID System Generator
29+
# enable UUID System Generator
3730
add_definitions(-DUUID_SYSTEM_GENERATOR=ON)
3831
endif()
3932

40-
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
41-
4233
set(STUDIO_PLUGINS "" CACHE STRING "Enable compilation of SITE plugins")
4334

4435
if (("${CMAKE_GENERATOR}" MATCHES "Makefiles" OR ("${CMAKE_GENERATOR}" MATCHES "Ninja" AND NOT WIN32)) AND NOT __CHECKED_CXX_FLAGS)
@@ -51,7 +42,12 @@ if (("${CMAKE_GENERATOR}" MATCHES "Makefiles" OR ("${CMAKE_GENERATOR}" MATCHES "
5142
endif()
5243

5344
set(CXXOPTS_BUILD_TESTS OFF CACHE BOOL "Enable or disable cxxopts' tests")
54-
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
45+
46+
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
47+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpic -fdiagnostics-color=always")
48+
endif()
49+
50+
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
5551
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpic -fmax-errors=5 -fdiagnostics-color=always")
5652
endif()
5753

@@ -167,12 +163,10 @@ if(WIN32)
167163
# https://github.com/nlohmann/json/issues/3868#issuecomment-1563726354
168164
add_definitions(-DJSON_HAS_THREE_WAY_COMPARISON=OFF)
169165

170-
add_subdirectory("extern/otio")
171-
172166
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
173167

174168
# When moving to Qt6 or greater, we might be able to use qt_generate_deploy_app_script
175-
#set(deploy_script "${Qt5_DIR}/../../../windeployqt.exe )
169+
#set(deploy_script "${Qt6_DIR}/../../../windeployqt.exe )
176170
endif()
177171

178172
if(MSVC)
@@ -181,33 +175,46 @@ if(MSVC)
181175

182176
endif()
183177

184-
# Add the necessary libraries from Vcpkg if Vcpkg integration is enabled
185-
if(USE_VCPKG)
178+
if (USE_VCPKG)
179+
180+
# When building with VCPKG, we will use OTIO submodule
181+
set(OTIO_SUBMODULE true)
182+
add_subdirectory("extern/otio")
186183

187184
set(VCPKG_INTEGRATION ON)
188-
# Set Python in VCPKG
189-
set(Python_EXECUTABLE "${VCPKG_DIRECTORY}/../vcpkg_installed/x64-windows/tools/python3/python.exe")
185+
190186
# Install pip and sphinx
187+
find_package(Python COMPONENTS Interpreter Development)
188+
189+
message("Python_RUNTIME_LIBRARY_DIRS ${Python_RUNTIME_LIBRARY_DIRS}")
190+
191191
execute_process(
192-
COMMAND "${CMAKE_COMMAND}" -E env "PATH=${VCPKG_DIRECTORY}/../vcpkg_installed/x64-windows/tools/python3" python.exe -m ensurepip --upgrade
192+
COMMAND "${Python_EXECUTABLE}" -m ensurepip --upgrade
193193
RESULT_VARIABLE ENSUREPIP_RESULT
194194
)
195+
195196
if(ENSUREPIP_RESULT)
196197
message(FATAL_ERROR "Failed to ensurepip.")
197198
else()
198199
execute_process(
199-
COMMAND "${CMAKE_COMMAND}" -E env "PATH=${VCPKG_DIRECTORY}/../vcpkg_installed/x64-windows/tools/python3" python.exe -m pip install setuptools sphinx breathe sphinx-rtd-theme OpenTimelineIO importlib_metadata zipp
200+
COMMAND "${Python_EXECUTABLE}" -m pip install setuptools sphinx breathe sphinx-rtd-theme OpenTimelineIO importlib_metadata zipp
200201
RESULT_VARIABLE PIP_RESULT
201202
)
202203
if(PIP_RESULT)
203204
message(FATAL_ERROR "Failed to install Sphinx using pip.")
204205
endif()
205206
endif()
206-
# append vcpkg packages
207-
list(APPEND CMAKE_PREFIX_PATH "${VCPKG_DIRECTORY}/../vcpkg_installed/x64-windows")
208-
207+
208+
else()
209+
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
210+
if(${OTIO_SUBMODULE})
211+
add_subdirectory("extern/otio")
212+
endif()
213+
find_package(PkgConfig REQUIRED)
209214
endif()
210215

216+
# Add the necessary libraries from Vcpkg if Vcpkg integration is enabled
217+
211218
find_package(nlohmann_json CONFIG REQUIRED)
212219
include(CTest)
213220

@@ -231,7 +238,7 @@ if(INSTALL_XSTUDIO)
231238

232239
# build quickpromise
233240
add_subdirectory(extern/quickpromise)
234-
add_subdirectory(extern/quickfuture)
241+
add_subdirectory(extern/quickfuture)
235242

236243
install(DIRECTORY include/xstudio
237244
DESTINATION include)
@@ -243,33 +250,41 @@ if(INSTALL_XSTUDIO)
243250
add_subdirectory(share/fonts)
244251

245252
if(BUILD_DOCS)
246-
#add_subdirectory(docs)
253+
add_subdirectory(docs)
247254
else()
248-
install(DIRECTORY share/docs/ DESTINATION share/xstudio/docs)
255+
if (APPLE)
256+
install(DIRECTORY share/docs/ DESTINATION ${CMAKE_BINARY_DIR}/xSTUDIO.app/Contents/Resources/docs)
257+
else()
258+
install(DIRECTORY share/docs/ DESTINATION share/xstudio/docs)
259+
endif()
249260
endif ()
250261

251-
include(CMakePackageConfigHelpers)
262+
if (NOT APPLE)
252263

253-
configure_package_config_file(xStudioConfig.cmake.in
254-
${CMAKE_CURRENT_BINARY_DIR}/xStudioConfig.cmake
255-
INSTALL_DESTINATION lib/cmake/${PROJECT_NAME}
256-
)
257-
write_basic_package_version_file("xStudioConfigVersion.cmake"
258-
VERSION ${PROJECT_VERSION}
259-
COMPATIBILITY SameMajorVersion
260-
)
264+
include(CMakePackageConfigHelpers)
261265

262-
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/xStudioConfig.cmake
263-
${CMAKE_CURRENT_BINARY_DIR}/xStudioConfigVersion.cmake
264-
DESTINATION lib/cmake/${PROJECT_NAME}
265-
)
266+
configure_package_config_file(xStudioConfig.cmake.in
267+
${CMAKE_CURRENT_BINARY_DIR}/xStudioConfig.cmake
268+
INSTALL_DESTINATION lib/cmake/${PROJECT_NAME}
269+
)
270+
write_basic_package_version_file("xStudioConfigVersion.cmake"
271+
VERSION ${PROJECT_VERSION}
272+
COMPATIBILITY SameMajorVersion
273+
)
266274

267-
install(EXPORT xstudio
268-
DESTINATION lib/cmake/${PROJECT_NAME}
269-
FILE ${PROJECT_NAME}Targets.cmake
270-
NAMESPACE xstudio::
271-
EXPORT_LINK_INTERFACE_LIBRARIES
272-
)
275+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/xStudioConfig.cmake
276+
${CMAKE_CURRENT_BINARY_DIR}/xStudioConfigVersion.cmake
277+
DESTINATION lib/cmake/${PROJECT_NAME}
278+
)
279+
280+
install(EXPORT xstudio
281+
DESTINATION lib/cmake/${PROJECT_NAME}
282+
FILE ${PROJECT_NAME}Targets.cmake
283+
NAMESPACE xstudio::
284+
EXPORT_LINK_INTERFACE_LIBRARIES
285+
)
286+
287+
endif()
273288

274289
endif ()
275290

@@ -280,9 +295,12 @@ if(USE_VCPKG)
280295
endif()
281296

282297
if (WIN32)
283-
set(CPACK_PACKAGE_VERSION "2.4.0")
298+
299+
include(InstallRequiredSystemLibraries)
300+
301+
set(CPACK_PACKAGE_VERSION "2.5.0")
284302
set(CPACK_PACKAGE_VERSION_MAJOR "2")
285-
set(CPACK_PACKAGE_VERSION_MINOR "4")
303+
set(CPACK_PACKAGE_VERSION_MINOR "5")
286304
set(CPACK_PACKAGE_VERSION_PATCH "0")
287305
set(CPACK_PACKAGE_VENDOR "DNEG / Academy Software Foundation")
288306
set (CPACK_NSIS_MUI_ICON
@@ -298,9 +316,17 @@ if (WIN32)
298316
"share/docs/index.html"
299317
"xSTUDIO Help")
300318

301-
set(CPACK_NSIS_CREATE_ICONS_EXTRA
302-
"CreateShortCut '$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\xSTUDIO.lnk' '$INSTDIR\\\\bin\\\\xstudio.exe' '--allow-qt-warnings'"
303-
)
319+
if("${STUDIO_PLUGINS}" STREQUAL "dneg")
320+
# for dneg deployment, we add some CLI args to pick up our customised facility preferences thus:
321+
set(CPACK_NSIS_CREATE_ICONS_EXTRA
322+
"CreateShortCut '$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\xSTUDIO.lnk' '$INSTDIR\\\\bin\\\\xstudio.exe' '--pref N:\\\\SITE\\\\data\\\\xStudio\\\\dneg_defaults.json --pref N:\\\\SITE\\\\data\\\\xStudio\\\\windows_extra_config\\\\dneg_windows_defaults.json'"
323+
)
324+
else()
325+
set(CPACK_NSIS_CREATE_ICONS_EXTRA
326+
"CreateShortCut '$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\xSTUDIO.lnk' '$INSTDIR\\\\bin\\\\xstudio.exe'"
327+
)
328+
endif()
329+
304330
#set (CPACK_PACKAGE_EXECUTABLES "xstudio" "xSTUDIO" )
305331

306332
set (CPACK_NSIS_EXTRA_INSTALL_COMMANDS "
@@ -325,4 +351,4 @@ if (WIN32)
325351
")
326352
327353
include(CPack)
328-
endif()
354+
endif()

0 commit comments

Comments
 (0)