Skip to content

Commit 7acfaba

Browse files
authored
cmake: add cache variables for BUILD_SHARED_LIBS & VVENC_LIBRARY_ONLY (#442)
* cmake: add cache variables for BUILD_SHARED_LIBS & VVENC_LIBRARY_ONLY closes #433 * warn about not being able to run the test suite, when VVENC_LIBRARY_ONLY=ON
1 parent bdf6ae1 commit 7acfaba

File tree

7 files changed

+37
-12
lines changed

7 files changed

+37
-12
lines changed

CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,10 @@ endif()
103103
# enable install target
104104
set( VVENC_ENABLE_INSTALL ON CACHE BOOL "Enable or disable install target" )
105105

106+
set( VVENC_LIBRARY_ONLY OFF CACHE BOOL "Build libvvenc only (no vvencapp,vvencFFapp,vvenclibtest,vvencinterfacetest" )
107+
108+
set( BUILD_SHARED_LIBS OFF CACHE BOOL "Build libvvenc as a shared library" )
109+
106110
# enable postfix
107111
set( VVENC_ENABLE_BUILD_TYPE_POSTFIX OFF CACHE BOOL "Enable or disable build type postfix for apps and libs" )
108112

cmake/modules/vvencInstall.cmake

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,20 @@ set( RUNTIME_DEST ${CMAKE_INSTALL_BINDIR} )
55
set( LIBRARY_DEST ${CMAKE_INSTALL_LIBDIR} )
66
set( ARCHIVE_DEST ${CMAKE_INSTALL_LIBDIR} )
77

8+
if( VVENC_INSTALL_FULLFEATURE_APP AND VVENC_LIBRARY_ONLY )
9+
message( FATAL_ERROR "VVENC_INSTALL_FULLFEATURE_APP conflicts with VVENC_LIBRARY_ONLY" )
10+
endif()
11+
812
set( VVENC_INST_TARGETS vvenc )
913

14+
if( NOT VVENC_LIBRARY_ONLY )
15+
list( APPEND VVENC_INST_TARGETS vvencapp )
16+
17+
if( VVENC_INSTALL_FULLFEATURE_APP )
18+
list( APPEND VVENC_INST_TARGETS vvencFFapp )
19+
endif()
20+
endif()
21+
1022
# install targets
1123
macro( install_targets config_ )
1224
string( TOLOWER ${config_} config_lc_ )
@@ -16,15 +28,6 @@ macro( install_targets config_ )
1628
RUNTIME DESTINATION ${RUNTIME_DEST}
1729
LIBRARY DESTINATION ${LIBRARY_DEST}
1830
ARCHIVE DESTINATION ${ARCHIVE_DEST} )
19-
if( VVENC_INSTALL_FULLFEATURE_APP )
20-
install( TARGETS vvencapp vvencFFapp
21-
CONFIGURATIONS ${config_}
22-
RUNTIME DESTINATION ${RUNTIME_DEST} )
23-
else()
24-
install( TARGETS vvencapp
25-
CONFIGURATIONS ${config_}
26-
RUNTIME DESTINATION ${RUNTIME_DEST} )
27-
endif()
2831
endmacro( install_targets )
2932

3033
# install pdb file for static and shared libraries
@@ -68,9 +71,11 @@ install_targets( MinSizeRel )
6871

6972
# install pdb files
7073
install_lib_pdb( vvenc )
71-
install_exe_pdb( vvencapp )
72-
if( VVENC_INSTALL_FULLFEATURE_APP )
73-
install_exe_pdb( vvencFFapp )
74+
if( NOT VVENC_LIBRARY_ONLY )
75+
install_exe_pdb( vvencapp )
76+
if( VVENC_INSTALL_FULLFEATURE_APP )
77+
install_exe_pdb( vvencFFapp )
78+
endif()
7479
endif()
7580

7681
# configure version file

cmake/modules/vvencTests.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
# enable testing with ctest
22
enable_testing()
33

4+
if( VVENC_LIBRARY_ONLY )
5+
message( WARNING "The test suite will not be able to run, when building the vvenc library only (VVENC_LIBRARY_ONLY=ON)" )
6+
endif()
7+
48
set( TEST_YUV "${PROJECT_SOURCE_DIR}/test/data/RTn23_80x44p15_f15.yuv" )
59
set( TEST_CFG "${PROJECT_SOURCE_DIR}/test/data/RTn23.cfg" )
610
set( CFG_DIR "${PROJECT_SOURCE_DIR}/cfg" )

source/App/vvencFFapp/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ set_target_properties( ${EXE_NAME} PROPERTIES RELEASE_POSTFIX "${CMAKE_RE
2828
set_target_properties( ${EXE_NAME} PROPERTIES DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}" )
2929
set_target_properties( ${EXE_NAME} PROPERTIES RELWITHDEBINFO_POSTFIX "${CMAKE_RELWITHDEBINFO_POSTFIX}" )
3030
set_target_properties( ${EXE_NAME} PROPERTIES MINSIZEREL_POSTFIX "${CMAKE_MINSIZEREL_POSTFIX}" )
31+
if( VVENC_LIBRARY_ONLY )
32+
set_target_properties( ${EXE_NAME} PROPERTIES EXCLUDE_FROM_ALL TRUE )
33+
endif()
3134

3235
target_compile_options( ${EXE_NAME} PRIVATE $<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:-Wall>
3336
$<$<CXX_COMPILER_ID:GNU>:-Wall -fdiagnostics-show-option>

source/App/vvencapp/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ set_target_properties( ${EXE_NAME} PROPERTIES RELEASE_POSTFIX "${CMAKE_RE
2525
set_target_properties( ${EXE_NAME} PROPERTIES DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}" )
2626
set_target_properties( ${EXE_NAME} PROPERTIES RELWITHDEBINFO_POSTFIX "${CMAKE_RELWITHDEBINFO_POSTFIX}" )
2727
set_target_properties( ${EXE_NAME} PROPERTIES MINSIZEREL_POSTFIX "${CMAKE_MINSIZEREL_POSTFIX}" )
28+
if( VVENC_LIBRARY_ONLY )
29+
set_target_properties( ${EXE_NAME} PROPERTIES EXCLUDE_FROM_ALL TRUE )
30+
endif()
2831

2932
target_compile_options( ${EXE_NAME} PRIVATE $<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:-Wall>
3033
$<$<CXX_COMPILER_ID:GNU>:-Wall -fdiagnostics-show-option>

test/vvencinterfacetest/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ set_target_properties( ${EXE_NAME} PROPERTIES RELEASE_POSTFIX "${CMAKE_RE
1818
set_target_properties( ${EXE_NAME} PROPERTIES DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}" )
1919
set_target_properties( ${EXE_NAME} PROPERTIES RELWITHDEBINFO_POSTFIX "${CMAKE_RELWITHDEBINFO_POSTFIX}" )
2020
set_target_properties( ${EXE_NAME} PROPERTIES MINSIZEREL_POSTFIX "${CMAKE_MINSIZEREL_POSTFIX}" )
21+
if( VVENC_LIBRARY_ONLY )
22+
set_target_properties( ${EXE_NAME} PROPERTIES EXCLUDE_FROM_ALL TRUE )
23+
endif()
2124

2225
target_compile_options( ${EXE_NAME} PRIVATE $<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:-Wall>
2326
$<$<CXX_COMPILER_ID:GNU>:-Wall -fdiagnostics-show-option>

test/vvenclibtest/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ set_target_properties( ${EXE_NAME} PROPERTIES RELEASE_POSTFIX "${CMAKE_RE
1818
set_target_properties( ${EXE_NAME} PROPERTIES DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}" )
1919
set_target_properties( ${EXE_NAME} PROPERTIES RELWITHDEBINFO_POSTFIX "${CMAKE_RELWITHDEBINFO_POSTFIX}" )
2020
set_target_properties( ${EXE_NAME} PROPERTIES MINSIZEREL_POSTFIX "${CMAKE_MINSIZEREL_POSTFIX}" )
21+
if( VVENC_LIBRARY_ONLY )
22+
set_target_properties( ${EXE_NAME} PROPERTIES EXCLUDE_FROM_ALL TRUE )
23+
endif()
2124

2225
target_compile_options( ${EXE_NAME} PRIVATE $<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:-Wall>
2326
$<$<CXX_COMPILER_ID:GNU>:-Wall -fdiagnostics-show-option>

0 commit comments

Comments
 (0)