Skip to content

Commit 2520996

Browse files
authored
Merge pull request #510 from ferdnyc/store-qt-version
Add version/feature #defines to OpenShotVersion.h
2 parents 687a9cc + 8af624f commit 2520996

File tree

5 files changed

+77
-53
lines changed

5 files changed

+77
-53
lines changed

.gitlab-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ linux-builder:
1616
- unzip artifacts.zip
1717
- export LIBOPENSHOT_AUDIO_DIR=$CI_PROJECT_DIR/build/install-x64
1818
- mkdir -p build; cd build;
19-
- cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -D"CMAKE_INSTALL_PREFIX:PATH=$CI_PROJECT_DIR/build/install-x64" -D"PYTHON_MODULE_PATH=python" -D"RUBY_MODULE_PATH=ruby" -DCMAKE_BUILD_TYPE:STRING=Release -DUSE_SYSTEM_JSONCPP=0 ../
19+
- cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -D"CMAKE_INSTALL_PREFIX:PATH=$CI_PROJECT_DIR/build/install-x64" -D"PYTHON_MODULE_PATH=python" -D"RUBY_MODULE_PATH=ruby" -DCMAKE_BUILD_TYPE:STRING=Release -DAPPIMAGE_BUILD=1 -DUSE_SYSTEM_JSONCPP=0 ../
2020
- make
2121
- make install
2222
- make doc

CMakeLists.txt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ option(DISABLE_BUNDLED_JSONCPP "Don't fall back to bundled JsonCpp" OFF)
7676
option(ENABLE_IWYU "Enable 'Include What You Use' scanner (CMake 3.3+)" OFF)
7777
option(ENABLE_TESTS "Build unit tests (requires UnitTest++)" ON)
7878
option(ENABLE_DOCS "Build API documentation (requires Doxygen)" ON)
79+
option(APPIMAGE_BUILD "Build to install in an AppImage (Linux only)" OFF)
7980

8081
# Legacy commandline override
8182
if (DISABLE_TESTS)
@@ -91,12 +92,6 @@ if(DEFINED ENABLE_TESTS)
9192
set(ENABLE_TESTS ${ENABLE_TESTS} CACHE BOOL "Build unit tests (requires UnitTest++)" FORCE)
9293
endif()
9394

94-
########## Configure Version.h header ##############
95-
configure_file(include/OpenShotVersion.h.in include/OpenShotVersion.h @ONLY)
96-
# We'll want that installed later
97-
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/include/OpenShotVersion.h
98-
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libopenshot)
99-
10095
#### Work around a GCC < 9 bug with handling of _Pragma() in macros
10196
#### See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55578
10297
if ((${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") AND
@@ -142,6 +137,12 @@ endif()
142137
############## PROCESS src/ DIRECTORIES ##############
143138
add_subdirectory(src)
144139

140+
########## Configure Version.h header ##############
141+
configure_file(include/OpenShotVersion.h.in include/OpenShotVersion.h @ONLY)
142+
# We'll want that installed later
143+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/include/OpenShotVersion.h
144+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libopenshot)
145+
145146
################### DOCUMENTATION ###################
146147
# Find Doxygen (used for documentation)
147148
set(DOCS_ENABLED FALSE) # Only set true if Doxygen is found and configured

include/OpenShotVersion.h.in

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,15 @@
4242

4343
#define OPENSHOT_VERSION_SO @PROJECT_SO_VERSION@ /// Shared object version number. This increments any time the API and ABI changes (so old apps will no longer link)
4444

45+
// Useful dependency versioning / feature availability
46+
#cmakedefine QT_VERSION_STR "@QT_VERSION_STR@"
47+
#cmakedefine AVCODEC_VERSION_STR "@AVCODEC_VERSION_STR@"
48+
#cmakedefine AVFORMAT_VERSION_STR "@AVFORMAT_VERSION_STR@"
49+
#cmakedefine AVUTIL_VERSION_STR "@AVUTIL_VERSION_STR@"
50+
#cmakedefine01 HAVE_IMAGEMAGICK
51+
#cmakedefine01 HAVE_RESVG
52+
#cmakedefine01 APPIMAGE_BUILD
53+
4554
#include <sstream>
4655

4756
namespace openshot
@@ -67,4 +76,4 @@ namespace openshot
6776
openshot::OpenShotVersion GetVersion();
6877
}
6978

70-
#endif // OPENSHOT_VERSION_H
79+
#endif // OPENSHOT_VERSION_H

src/CMakeLists.txt

Lines changed: 59 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ include(GNUInstallDirs)
3333
# Set some compiler options for Windows
3434
# required for libopenshot-audio headers
3535
if (WIN32)
36-
add_definitions( -DIGNORE_JUCE_HYPOT=1 )
37-
set(CMAKE_CXX_FLAGS " ${CMAKE_CXX_FLAGS} -include cmath")
36+
add_definitions( -DIGNORE_JUCE_HYPOT=1 )
37+
set(CMAKE_CXX_FLAGS " ${CMAKE_CXX_FLAGS} -include cmath")
3838
endif()
3939

4040
if (APPLE)
@@ -52,31 +52,28 @@ endif()
5252
################ IMAGE MAGICK ##################
5353
# Set the Quantum Depth that ImageMagick was built with (default to 16 bits)
5454
IF (MAGICKCORE_QUANTUM_DEPTH)
55-
add_definitions( -DMAGICKCORE_QUANTUM_DEPTH=${MAGICKCORE_QUANTUM_DEPTH} )
55+
add_definitions( -DMAGICKCORE_QUANTUM_DEPTH=${MAGICKCORE_QUANTUM_DEPTH} )
5656
ELSE (MAGICKCORE_QUANTUM_DEPTH)
57-
add_definitions( -DMAGICKCORE_QUANTUM_DEPTH=16 )
57+
add_definitions( -DMAGICKCORE_QUANTUM_DEPTH=16 )
5858
ENDIF (MAGICKCORE_QUANTUM_DEPTH)
5959
IF (MAGICKCORE_HDRI_ENABLE)
60-
add_definitions( -DMAGICKCORE_HDRI_ENABLE=${MAGICKCORE_HDRI_ENABLE} )
60+
add_definitions( -DMAGICKCORE_HDRI_ENABLE=${MAGICKCORE_HDRI_ENABLE} )
6161
ELSE (MAGICKCORE_HDRI_ENABLE)
62-
add_definitions( -DMAGICKCORE_HDRI_ENABLE=0 )
62+
add_definitions( -DMAGICKCORE_HDRI_ENABLE=0 )
6363
ENDIF (MAGICKCORE_HDRI_ENABLE)
64-
IF (OPENSHOT_IMAGEMAGICK_COMPATIBILITY)
65-
add_definitions( -DOPENSHOT_IMAGEMAGICK_COMPATIBILITY=${OPENSHOT_IMAGEMAGICK_COMPATIBILITY} )
66-
ELSE (OPENSHOT_IMAGEMAGICK_COMPATIBILITY)
67-
add_definitions( -DOPENSHOT_IMAGEMAGICK_COMPATIBILITY=0 )
68-
ENDIF (OPENSHOT_IMAGEMAGICK_COMPATIBILITY)
6964

7065
# Find the ImageMagick++ library
7166
find_package(ImageMagick COMPONENTS Magick++ MagickWand MagickCore)
7267
if (ImageMagick_FOUND)
73-
# Include ImageMagick++ headers (needed for compile)
74-
include_directories(${ImageMagick_INCLUDE_DIRS})
68+
# Include ImageMagick++ headers (needed for compile)
69+
include_directories(${ImageMagick_INCLUDE_DIRS})
7570

76-
# define a global var (used in the C++)
77-
add_definitions( -DUSE_IMAGEMAGICK=1 )
78-
set(CMAKE_SWIG_FLAGS "-DUSE_IMAGEMAGICK=1")
71+
# define a global var (used in the C++)
72+
add_definitions( -DUSE_IMAGEMAGICK=1 )
73+
list(APPEND CMAKE_SWIG_FLAGS "-DUSE_IMAGEMAGICK=1")
7974

75+
set(HAVE_IMAGEMAGICK TRUE CACHE BOOL "Building with ImageMagick support" FORCE)
76+
mark_as_advanced(HAVE_IMAGEMAGICK)
8077
endif()
8178

8279
################# LIBOPENSHOT-AUDIO ###################
@@ -90,15 +87,15 @@ include_directories(${LIBOPENSHOT_AUDIO_INCLUDE_DIRS})
9087
# Find BlackMagic DeckLinkAPI libraries
9188
if (ENABLE_BLACKMAGIC)
9289

93-
find_package(BlackMagic)
90+
find_package(BlackMagic)
9491

95-
if (BLACKMAGIC_FOUND)
96-
# Include Blackmagic headers (needed for compile)
97-
include_directories(${BLACKMAGIC_INCLUDE_DIR})
92+
if (BLACKMAGIC_FOUND)
93+
# Include Blackmagic headers (needed for compile)
94+
include_directories(${BLACKMAGIC_INCLUDE_DIR})
9895

99-
# define a global var (used in the C++)
100-
add_definitions( -DUSE_BLACKMAGIC=1 )
101-
set(CMAKE_SWIG_FLAGS "-DUSE_BLACKMAGIC=1")
96+
# define a global var (used in the C++)
97+
add_definitions( -DUSE_BLACKMAGIC=1 )
98+
list(APPEND CMAKE_SWIG_FLAGS "-DUSE_BLACKMAGIC=1")
10299
endif()
103100

104101
endif()
@@ -153,7 +150,7 @@ set(OPENSHOT_SOURCES
153150
Fraction.cpp
154151
Frame.cpp
155152
FrameMapper.cpp
156-
Json.cpp
153+
Json.cpp
157154
KeyFrame.cpp
158155
OpenShotVersion.cpp
159156
ZmqLogger.cpp
@@ -221,7 +218,7 @@ set_target_properties(openshot PROPERTIES
221218

222219
# Add optional ImageMagic-dependent sources
223220
if(ImageMagick_FOUND)
224-
target_sources(openshot PRIVATE
221+
target_sources(openshot PRIVATE
225222
ImageReader.cpp
226223
ImageWriter.cpp
227224
TextReader.cpp)
@@ -250,7 +247,7 @@ target_include_directories(openshot
250247
################### JSONCPP #####################
251248
# Include jsoncpp headers (needed for JSON parsing)
252249
if (USE_SYSTEM_JSONCPP)
253-
message(STATUS "Looking for system jsoncpp")
250+
message(STATUS "Looking for system jsoncpp")
254251
# Either an installed config or our find module will
255252
# create the IMPORTED target jsoncpp_lib if successful
256253
find_package(jsoncpp)
@@ -291,14 +288,28 @@ foreach(_qt_comp IN LISTS _qt_components)
291288
endif()
292289
endforeach()
293290

291+
# Keep track of Qt version, to embed in our version header
292+
set(QT_VERSION_STR ${Qt5Core_VERSION_STRING} CACHE STRING "Qt version linked with" FORCE)
293+
mark_as_advanced(QT_VERSION_STR)
294+
294295
################### FFMPEG #####################
295296
# Find FFmpeg libraries (used for video encoding / decoding)
296297
find_package(FFmpeg REQUIRED COMPONENTS avcodec avdevice avformat avutil swscale)
297298

298-
foreach(ff_comp avcodec avdevice avformat avfilter avutil postproc swscale swresample avresample)
299+
set(all_comps avcodec avdevice avformat avfilter avutil postproc swscale swresample avresample)
300+
set(version_comps avcodec avformat avutil)
301+
302+
foreach(ff_comp IN LISTS all_comps)
299303
if(TARGET FFmpeg::${ff_comp})
300-
target_link_libraries(openshot PUBLIC FFmpeg::${ff_comp})
304+
target_link_libraries(openshot PUBLIC FFmpeg::${ff_comp})
305+
# Keep track of some FFmpeg lib versions, to embed in our version header
306+
if(${ff_comp} IN_LIST version_comps)
307+
string(TOUPPER ${ff_comp} v_name)
308+
set(${v_name}_VERSION_STR ${${ff_comp}_VERSION} CACHE STRING "${ff_comp} version used" FORCE)
309+
mark_as_advanced(${v_name}_VERSION_STR)
310+
endif()
301311
endif()
312+
302313
endforeach()
303314

304315
################### Threads ####################
@@ -332,7 +343,7 @@ find_package(cppzmq QUIET) # Creates cppzmq target
332343

333344
# Link ZeroMQ library
334345
if (TARGET libzmq)
335-
target_link_libraries(openshot PUBLIC libzmq)
346+
target_link_libraries(openshot PUBLIC libzmq)
336347
endif()
337348
# Include cppzmq headers, if not bundled into libzmq
338349
if (TARGET cppzmq)
@@ -349,21 +360,25 @@ if(DEFINED ENV{RESVGDIR} AND NOT DEFINED RESVG_ROOT)
349360
endif()
350361

351362
# Find resvg library (used for rendering svg files)
352-
FIND_PACKAGE(RESVG)
363+
find_package(RESVG)
353364

354365
# Include resvg headers (optional SVG library)
355366
if (TARGET RESVG::resvg)
356367
#include_directories(${RESVG_INCLUDE_DIRS})
357368
target_link_libraries(openshot PUBLIC RESVG::resvg)
358369

359370
target_compile_definitions(openshot PUBLIC "-DUSE_RESVG=1")
360-
set(CMAKE_SWIG_FLAGS "-DUSE_RESVG=1")
371+
list(APPEND CMAKE_SWIG_FLAGS "-DUSE_RESVG=1")
372+
373+
set(HAVE_RESVG TRUE CACHE BOOL "Building with Resvg support" FORCE)
374+
mark_as_advanced(HAVE_RESVG)
375+
361376
endif()
362377

363378
############### LINK LIBRARY #################
364379
# Link remaining dependency libraries
365380
target_link_libraries(openshot PUBLIC
366-
${LIBOPENSHOT_AUDIO_LIBRARIES}
381+
${LIBOPENSHOT_AUDIO_LIBRARIES}
367382
${PROFILER})
368383

369384
if(ImageMagick_FOUND)
@@ -375,8 +390,8 @@ if(BLACKMAGIC_FOUND)
375390
endif()
376391

377392
if(WIN32)
378-
# Required for exception handling on Windows
379-
target_link_libraries(openshot PUBLIC "imagehlp" "dbghelp" )
393+
# Required for exception handling on Windows
394+
target_link_libraries(openshot PUBLIC "imagehlp" "dbghelp" )
380395
endif()
381396

382397

@@ -385,9 +400,9 @@ endif()
385400
add_executable(openshot-example examples/Example.cpp)
386401

387402
# Define path to test input files
388-
SET(TEST_MEDIA_PATH "${PROJECT_SOURCE_DIR}/src/examples/")
403+
set(TEST_MEDIA_PATH "${PROJECT_SOURCE_DIR}/src/examples/")
389404
if (WIN32)
390-
STRING(REPLACE "/" "\\\\" TEST_MEDIA_PATH TEST_MEDIA_PATH)
405+
string(REPLACE "/" "\\\\" TEST_MEDIA_PATH TEST_MEDIA_PATH)
391406
endif()
392407
target_compile_definitions(openshot-example PRIVATE
393408
-DTEST_MEDIA_PATH="${TEST_MEDIA_PATH}" )
@@ -407,12 +422,12 @@ target_link_libraries(openshot-player openshot)
407422

408423
############### TEST BLACKMAGIC CAPTURE APP ################
409424
if (BLACKMAGIC_FOUND)
410-
# Create test executable
411-
add_executable(openshot-blackmagic
412-
examples/ExampleBlackmagic.cpp)
425+
# Create test executable
426+
add_executable(openshot-blackmagic
427+
examples/ExampleBlackmagic.cpp)
413428

414-
# Link test executable to the new library
415-
target_link_libraries(openshot-blackmagic openshot)
429+
# Link test executable to the new library
430+
target_link_libraries(openshot-blackmagic openshot)
416431
endif()
417432

418433
############### INCLUDE SWIG BINDINGS ################
@@ -432,13 +447,13 @@ install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/
432447

433448
############### CPACK PACKAGING ##############
434449
if(MINGW)
435-
set(CPACK_GENERATOR "NSIS")
450+
set(CPACK_GENERATOR "NSIS")
436451
endif()
437452
if(UNIX AND NOT APPLE)
438-
set(CPACK_GENERATOR "DEB")
453+
set(CPACK_GENERATOR "DEB")
439454
endif()
440455
#if(UNIX AND APPLE)
441-
# set(CPACK_GENERATOR "DragNDrop")
456+
# set(CPACK_GENERATOR "DragNDrop")
442457
#endif()
443458
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Jonathan Thomas") #required
444459

tests/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ if(ImageMagick_FOUND)
8585

8686
# define a global var (used in the C++)
8787
add_definitions( -DUSE_IMAGEMAGICK=1 )
88-
set(CMAKE_SWIG_FLAGS "-DUSE_IMAGEMAGICK=1")
8988
endif()
9089

9190
################# LIBOPENSHOT-AUDIO ###################

0 commit comments

Comments
 (0)