2727# Pick up our include directories from the parent context
2828include_directories (${OPENSHOT_INCLUDE_DIRS} )
2929
30+ ####### Display summary of options/dependencies ######
31+ include (FeatureSummary)
32+ #set_property(GLOBAL APPEND PROPERTY FeatureSummary_PKG_TYPES BUILD)
33+ #find_package(FOO)
34+ #set_package_properties(FOO PROPERTIES TYPE BUILD)
35+
3036################ OPTIONS ##################
3137# Optional build settings for libopenshot
3238OPTION (USE_SYSTEM_JSONCPP "Use system installed JsonCpp" OFF )
@@ -82,33 +88,15 @@ ENDIF (ImageMagick_FOUND)
8288# Find FFmpeg libraries (used for video encoding / decoding)
8389FIND_PACKAGE (FFmpeg REQUIRED)
8490
85- IF (AVCODEC_FOUND)
86- include_directories (${AVCODEC_INCLUDE_DIRS} )
87- ENDIF (AVCODEC_FOUND)
88- IF (AVDEVICE_FOUND)
89- include_directories (${AVDEVICE_INCLUDE_DIRS} )
90- ENDIF (AVDEVICE_FOUND)
91- IF (AVFORMAT_FOUND)
92- include_directories (${AVFORMAT_INCLUDE_DIRS} )
93- ENDIF (AVFORMAT_FOUND)
94- IF (AVFILTER_FOUND)
95- include_directories (${AVFILTER_INCLUDE_DIRS} )
96- ENDIF (AVFILTER_FOUND)
97- IF (AVUTIL_FOUND)
98- include_directories (${AVUTIL_INCLUDE_DIRS} )
99- ENDIF (AVUTIL_FOUND)
100- IF (POSTPROC_FOUND)
101- include_directories (${POSTPROC_INCLUDE_DIRS} )
102- ENDIF (POSTPROC_FOUND)
103- IF (SWSCALE_FOUND)
104- include_directories (${SWSCALE_INCLUDE_DIRS} )
105- ENDIF (SWSCALE_FOUND)
106- IF (SWRESAMPLE_FOUND)
107- include_directories (${SWRESAMPLE_INCLUDE_DIRS} )
108- ENDIF (SWRESAMPLE_FOUND)
109- IF (AVRESAMPLE_FOUND)
110- include_directories (${AVRESAMPLE_INCLUDE_DIRS} )
111- ENDIF (AVRESAMPLE_FOUND)
91+ foreach (ffmpeg_comp AVCODEC AVDEVICE AVFORMAT AVFILTER AVUTIL POSTPROC SWSCALE SWRESAMPLE AVRESAMPLE)
92+ if (${ffmpeg_comp} _FOUND)
93+ list (APPEND FF_INCLUDES ${${ffmpeg_comp} _INCLUDE_DIRS})
94+ add_definitions (${${ffmpeg_comp} _DEFINITIONS})
95+ list (APPEND FF_LIBRARIES ${${ffmpeg_comp} _LIBRARIES})
96+ endif ()
97+ endforeach ()
98+ list (REMOVE_DUPLICATES FF_INCLUDES)
99+ include_directories (${FF_INCLUDES} )
112100
113101################# LIBOPENSHOT-AUDIO ###################
114102# Find JUCE-based openshot Audio libraries
@@ -119,38 +107,17 @@ include_directories(${LIBOPENSHOT_AUDIO_INCLUDE_DIRS})
119107
120108################# QT5 ###################
121109# Find QT5 libraries
122- find_package (Qt5Widgets REQUIRED)
123- find_package (Qt5Core REQUIRED)
124- find_package (Qt5Gui REQUIRED)
125- find_package (Qt5Multimedia REQUIRED)
126- find_package (Qt5MultimediaWidgets REQUIRED)
127-
128- # Include Qt headers (needed for compile)
129- include_directories (${Qt5Widgets_INCLUDE_DIRS} )
130- include_directories (${Qt5Core_INCLUDE_DIRS} )
131- include_directories (${Qt5Gui_INCLUDE_DIRS} )
132- include_directories (${Qt5Multimedia_INCLUDE_DIRS} )
133- include_directories (${Qt5MultimediaWidgets_INCLUDE_DIRS} )
134-
135- add_definitions (${Qt5Widgets_DEFINITIONS} )
136- add_definitions (${Qt5Core_DEFINITIONS} )
137- add_definitions (${Qt5Gui_DEFINITIONS} )
138- add_definitions (${Qt5Multimedia_DEFINITIONS} )
139- add_definitions (${Qt5MultimediaWidgets_DEFINITIONS} )
140-
141- SET (QT_LIBRARIES ${Qt5Widgets_LIBRARIES}
142- ${Qt5Core_LIBRARIES}
143- ${Qt5Gui_LIBRARIES}
144- ${Qt5Multimedia_LIBRARIES}
145- ${Qt5MultimediaWidgets_LIBRARIES} )
146-
147- # Set compiler flags for Qt
148- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS} " )
149- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Core_EXECUTABLE_COMPILE_FLAGS} " )
150- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Gui_EXECUTABLE_COMPILE_FLAGS} " )
151- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Multimedia_EXECUTABLE_COMPILE_FLAGS} " )
152- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5MultimediaWidgets_EXECUTABLE_COMPILE_FLAGS} " )
153- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -ggdb " )
110+ foreach (qt_lib Qt5Widgets Qt5Core Qt5Gui Qt5Multimedia Qt5MultimediaWidgets)
111+ find_package (${qt_lib} REQUIRED)
112+ # Header files
113+ include_directories (${${qt_lib} _INCLUDE_DIRS})
114+ # Compiler definitions
115+ add_definitions (${${qt_lib} _DEFINITIONS})
116+ # Other CFLAGS
117+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${${qt_lib} _EXECUTABLE_COMPILE_FLAGS}" )
118+ # For use when linking
119+ list (APPEND QT_LIBRARIES ${${qt_lib} _LIBRARIES})
120+ endforeach ()
154121
155122# Manually moc Qt files
156123qt5_wrap_cpp(MOC_FILES ${QT_HEADER_FILES} )
@@ -309,59 +276,32 @@ set_target_properties(openshot
309276############### LINK LIBRARY #################
310277SET ( REQUIRED_LIBRARIES
311278 ${LIBOPENSHOT_AUDIO_LIBRARIES}
279+ ${FF_LIBRARIES}
312280 ${QT_LIBRARIES}
313281 ${PROFILER}
314282 ${JSONCPP_LIBRARY}
315283 ${ZMQ_LIBRARIES}
316284 )
317285
318- IF (AVCODEC_FOUND)
319- SET ( REQUIRED_LIBRARIES ${REQUIRED_LIBRARIES} ${AVCODEC_LIBRARIES} )
320- ENDIF (AVCODEC_FOUND)
321- IF (AVDEVICE_FOUND)
322- SET ( REQUIRED_LIBRARIES ${REQUIRED_LIBRARIES} ${AVDEVICE_LIBRARIES} )
323- ENDIF (AVDEVICE_FOUND)
324- IF (AVFORMAT_FOUND)
325- SET ( REQUIRED_LIBRARIES ${REQUIRED_LIBRARIES} ${AVFORMAT_LIBRARIES} )
326- ENDIF (AVFORMAT_FOUND)
327- IF (AVFILTER_FOUND)
328- SET ( REQUIRED_LIBRARIES ${REQUIRED_LIBRARIES} ${AVFILTER_LIBRARIES} )
329- ENDIF (AVFILTER_FOUND)
330- IF (AVUTIL_FOUND)
331- SET ( REQUIRED_LIBRARIES ${REQUIRED_LIBRARIES} ${AVUTIL_LIBRARIES} )
332- ENDIF (AVUTIL_FOUND)
333- IF (POSTPROC_FOUND)
334- SET ( REQUIRED_LIBRARIES ${REQUIRED_LIBRARIES} ${POSTPROC_LIBRARIES} )
335- ENDIF (POSTPROC_FOUND)
336- IF (SWSCALE_FOUND)
337- SET ( REQUIRED_LIBRARIES ${REQUIRED_LIBRARIES} ${SWSCALE_LIBRARIES} )
338- ENDIF (SWSCALE_FOUND)
339- IF (SWRESAMPLE_FOUND)
340- SET ( REQUIRED_LIBRARIES ${REQUIRED_LIBRARIES} ${SWRESAMPLE_LIBRARIES} )
341- ENDIF (SWRESAMPLE_FOUND)
342- IF (AVRESAMPLE_FOUND)
343- SET ( REQUIRED_LIBRARIES ${REQUIRED_LIBRARIES} ${AVRESAMPLE_LIBRARIES} )
344- ENDIF (AVRESAMPLE_FOUND)
345-
346286IF (RESVG_FOUND)
347- SET ( REQUIRED_LIBRARIES ${REQUIRED_LIBRARIES} ${ RESVG_LIBRARIES} )
287+ list ( APPEND REQUIRED_LIBRARIES ${RESVG_LIBRARIES} )
348288ENDIF (RESVG_FOUND)
349289
350290IF (OPENMP_FOUND)
351- SET ( REQUIRED_LIBRARIES ${REQUIRED_LIBRARIES} ${ OpenMP_CXX_FLAGS} )
291+ list ( APPEND REQUIRED_LIBRARIES ${OpenMP_CXX_FLAGS} )
352292ENDIF (OPENMP_FOUND)
353293
354294IF (ImageMagick_FOUND)
355- SET ( REQUIRED_LIBRARIES ${REQUIRED_LIBRARIES} ${ ImageMagick_LIBRARIES} )
295+ list ( APPEND REQUIRED_LIBRARIES ${ImageMagick_LIBRARIES} )
356296ENDIF (ImageMagick_FOUND)
357297
358298IF (BLACKMAGIC_FOUND)
359- SET ( REQUIRED_LIBRARIES ${REQUIRED_LIBRARIES} ${ BLACKMAGIC_LIBRARY_DIR} )
299+ list ( APPEND REQUIRED_LIBRARIES ${BLACKMAGIC_LIBRARY_DIR} )
360300ENDIF (BLACKMAGIC_FOUND)
361301
362302IF (WIN32 )
363303 # Required for exception handling on Windows
364- SET ( REQUIRED_LIBRARIES ${REQUIRED_LIBRARIES} "imagehlp" "dbghelp" )
304+ list ( APPEND REQUIRED_LIBRARIES "imagehlp" "dbghelp" )
365305ENDIF (WIN32 )
366306
367307# Link all referenced libraries
@@ -395,12 +335,18 @@ ENDIF (BLACKMAGIC_FOUND)
395335############### INCLUDE SWIG BINDINGS ################
396336add_subdirectory (bindings)
397337
338+ ########### PRINT FEATURE SUMMARY ##############
339+ feature_summary(WHAT ALL
340+ INCLUDE_QUIET_PACKAGES
341+ DESCRIPTION "Build configuration:"
342+ VAR featuresText)
343+ message ("\n ${featuresText} " )
398344
399345############### INSTALL HEADERS & LIBRARY ################
400346set (LIB_INSTALL_DIR lib${LIB_SUFFIX} ) # determine correct lib folder
401347
402348# Install primary library
403- INSTALL ( TARGETS openshot
349+ INSTALL (TARGETS openshot
404350 ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
405351 LIBRARY DESTINATION ${LIB_INSTALL_DIR}
406352 RUNTIME DESTINATION ${LIB_INSTALL_DIR}
0 commit comments