diff options
author | qinxialei <xialeiqin@gmail.com> | 2021-04-22 11:20:15 +0800 |
---|---|---|
committer | qinxialei <xialeiqin@gmail.com> | 2021-04-22 11:20:15 +0800 |
commit | 2381d803c76105f44717d75f089ec37f51e5cfe4 (patch) | |
tree | 33f40fb4dfd1039ac262d5f1c1065d298578ddc1 /cmake | |
parent | e8d277081293b6fb2a5d469616baaa7a06f52496 (diff) | |
download | libgav1-2381d803c76105f44717d75f089ec37f51e5cfe4.tar.gz libgav1-2381d803c76105f44717d75f089ec37f51e5cfe4.tar.bz2 libgav1-2381d803c76105f44717d75f089ec37f51e5cfe4.zip |
New upstream version 0.16.3
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/libgav1_build_definitions.cmake | 23 | ||||
-rw-r--r-- | cmake/libgav1_flags.cmake | 14 | ||||
-rw-r--r-- | cmake/libgav1_helpers.cmake | 14 | ||||
-rw-r--r-- | cmake/libgav1_sanitizer.cmake | 4 | ||||
-rw-r--r-- | cmake/libgav1_targets.cmake | 38 |
5 files changed, 75 insertions, 18 deletions
diff --git a/cmake/libgav1_build_definitions.cmake b/cmake/libgav1_build_definitions.cmake index b170e7e..fc83490 100644 --- a/cmake/libgav1_build_definitions.cmake +++ b/cmake/libgav1_build_definitions.cmake @@ -21,7 +21,24 @@ macro(libgav1_set_build_definitions) string(TOLOWER "${CMAKE_BUILD_TYPE}" build_type_lowercase) libgav1_load_version_info() - set(LIBGAV1_SOVERSION 0) + + # Library version info. See the libtool docs for updating the values: + # https://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info + # + # c=<current>, r=<revision>, a=<age> + # + # libtool generates a .so file as .so.[c-a].a.r, while -version-info c:r:a is + # passed to libtool. + # + # We set LIBGAV1_SOVERSION = [c-a].a.r + set(LT_CURRENT 0) + set(LT_REVISION 0) + set(LT_AGE 0) + math(EXPR LIBGAV1_SOVERSION_MAJOR "${LT_CURRENT} - ${LT_AGE}") + set(LIBGAV1_SOVERSION "${LIBGAV1_SOVERSION_MAJOR}.${LT_AGE}.${LT_REVISION}") + unset(LT_CURRENT) + unset(LT_REVISION) + unset(LT_AGE) list(APPEND libgav1_include_paths "${libgav1_root}" "${libgav1_root}/src" "${libgav1_build}" "${libgav1_root}/third_party/abseil-cpp") @@ -89,9 +106,7 @@ macro(libgav1_set_build_definitions) endif() if(build_type_lowercase MATCHES "rel") - # TODO(tomfinegan): this value is only a concern for the core library and - # can be made smaller if the test targets are avoided. - list(APPEND libgav1_base_cxx_flags "-Wstack-usage=196608") + list(APPEND libgav1_base_cxx_flags "-Wframe-larger-than=196608") endif() list(APPEND libgav1_msvc_cxx_flags diff --git a/cmake/libgav1_flags.cmake b/cmake/libgav1_flags.cmake index 2d8d9a6..a5408e2 100644 --- a/cmake/libgav1_flags.cmake +++ b/cmake/libgav1_flags.cmake @@ -205,7 +205,7 @@ macro(libgav1_test_exe_linker_flag) # Restore cached global exe linker flags. if(cached_CMAKE_EXE_LINKER_FLAGS) - set(CMAKE_EXE_LINKER_FLAGS cached_CMAKE_EXE_LINKER_FLAGS) + set(CMAKE_EXE_LINKER_FLAGS ${cached_CMAKE_EXE_LINKER_FLAGS}) else() unset(CMAKE_EXE_LINKER_FLAGS) endif() @@ -249,3 +249,15 @@ macro(libgav1_set_cxx_flags) libgav1_test_cxx_flag(FLAG_LIST_VAR_NAMES ${cxx_flag_lists}) endmacro() + +# Sets LIBGAV1_TEST_C_FLAGS and LIBGAV1_TEST_CXX_FLAGS. +# +# Note: libgav1_set_cxx_flags() must be called before this macro. Furthermore, +# the call to this macro should be made after all additions to LIBGAV1_CXX_FLAGS +# are complete. +macro(libgav1_set_test_flags) + if(LIBGAV1_ENABLE_TESTS) + set(LIBGAV1_TEST_CXX_FLAGS ${LIBGAV1_CXX_FLAGS}) + list(FILTER LIBGAV1_TEST_CXX_FLAGS EXCLUDE REGEX "-Wframe-larger-than") + endif() +endmacro() diff --git a/cmake/libgav1_helpers.cmake b/cmake/libgav1_helpers.cmake index 76d8d67..ac16257 100644 --- a/cmake/libgav1_helpers.cmake +++ b/cmake/libgav1_helpers.cmake @@ -20,7 +20,13 @@ set(LIBGAV1_CMAKE_LIBGAV1_HELPERS_CMAKE_ 1) # Kills build generation using message(FATAL_ERROR) and outputs all data passed # to the console via use of $ARGN. macro(libgav1_die) - message(FATAL_ERROR ${ARGN}) + # macro parameters are not variables so a temporary is needed to work with + # list(). + set(msg ${ARGN}) + # message(${ARGN}) will merge all list elements with no separator while + # "${ARGN}" will output the list as a ';' delimited string. + list(JOIN msg " " msg) + message(FATAL_ERROR "${msg}") endmacro() # Converts semi-colon delimited list variable(s) to string. Output is written to @@ -94,10 +100,10 @@ macro(libgav1_create_dummy_source_file) "${dummy_source_dir}/libgav1_${cdsf_TARGET}_${cdsf_BASENAME}.cc") set(dummy_source_code "// Generated file. DO NOT EDIT!\n" - "// C++ source file created for target ${cdsf_TARGET}. \n" - "void libgav1_${cdsf_TARGET}_${cdsf_BASENAME}_dummy_function(void);\n" + "// C++ source file created for target ${cdsf_TARGET}.\n" + "void libgav1_${cdsf_TARGET}_${cdsf_BASENAME}_dummy_function(void)\;\n" "void libgav1_${cdsf_TARGET}_${cdsf_BASENAME}_dummy_function(void) {}\n") - file(WRITE "${dummy_source_file}" "${dummy_source_code}") + file(WRITE "${dummy_source_file}" ${dummy_source_code}) target_sources(${cdsf_TARGET} PRIVATE ${dummy_source_file}) diff --git a/cmake/libgav1_sanitizer.cmake b/cmake/libgav1_sanitizer.cmake index 4bb2263..2f9ee07 100644 --- a/cmake/libgav1_sanitizer.cmake +++ b/cmake/libgav1_sanitizer.cmake @@ -39,7 +39,9 @@ macro(libgav1_configure_sanitizer) list(APPEND LIBGAV1_CXX_FLAGS "-fno-omit-frame-pointer" "-fno-optimize-sibling-calls") - libgav1_test_cxx_flag(FLAG_LIST_VAR_NAMES LIBGAV1_CXX_FLAGS FLAG_REQUIRED) + # Check the linker flags first as they may be required in the compile check + # to avoid undefined symbols related to the sanitizer. libgav1_test_exe_linker_flag(FLAG_LIST_VAR_NAME LIBGAV1_EXE_LINKER_FLAGS) + libgav1_test_cxx_flag(FLAG_LIST_VAR_NAMES LIBGAV1_CXX_FLAGS FLAG_REQUIRED) endif() endmacro() diff --git a/cmake/libgav1_targets.cmake b/cmake/libgav1_targets.cmake index 78b4865..997f8bd 100644 --- a/cmake/libgav1_targets.cmake +++ b/cmake/libgav1_targets.cmake @@ -29,7 +29,7 @@ endmacro() # Creates an executable target. The target name is passed as a parameter to the # NAME argument, and the sources passed as a parameter to the SOURCES argument: -# libgav1_add_test(NAME <name> SOURCES <sources> [optional args]) +# libgav1_add_executable(NAME <name> SOURCES <sources> [optional args]) # # Optional args: # cmake-format: off @@ -115,15 +115,35 @@ macro(libgav1_add_executable) target_include_directories(${exe_NAME} PRIVATE ${exe_INCLUDES}) endif() - if(exe_COMPILE_FLAGS OR LIBGAV1_CXX_FLAGS) + unset(exe_LIBGAV1_COMPILE_FLAGS) + if(exe_TEST) + list(FILTER exe_SOURCES INCLUDE REGEX "\\.c$") + list(LENGTH exe_SOURCES exe_SOURCES_length) + if(exe_SOURCES_length EQUAL 0) + set(exe_LIBGAV1_COMPILE_FLAGS ${LIBGAV1_TEST_CXX_FLAGS}) + else() + set(exe_LIBGAV1_COMPILE_FLAGS ${LIBGAV1_TEST_C_FLAGS}) + endif() + else() + set(exe_LIBGAV1_COMPILE_FLAGS ${LIBGAV1_CXX_FLAGS}) + endif() + + if(exe_COMPILE_FLAGS OR exe_LIBGAV1_COMPILE_FLAGS) target_compile_options(${exe_NAME} - PRIVATE ${exe_COMPILE_FLAGS} ${LIBGAV1_CXX_FLAGS}) + PRIVATE ${exe_COMPILE_FLAGS} + ${exe_LIBGAV1_COMPILE_FLAGS}) endif() if(exe_LINK_FLAGS OR LIBGAV1_EXE_LINKER_FLAGS) - set_target_properties(${exe_NAME} - PROPERTIES LINK_FLAGS ${exe_LINK_FLAGS} - ${LIBGAV1_EXE_LINKER_FLAGS}) + list(APPEND exe_LINK_FLAGS "${LIBGAV1_EXE_LINKER_FLAGS}") + if(${CMAKE_VERSION} VERSION_LESS "3.13") + # LINK_FLAGS is managed as a string. + libgav1_set_and_stringify(SOURCE "${exe_LINK_FLAGS}" DEST exe_LINK_FLAGS) + set_target_properties(${exe_NAME} + PROPERTIES LINK_FLAGS "${exe_LINK_FLAGS}") + else() + target_link_options(${exe_NAME} PRIVATE ${exe_LINK_FLAGS}) + endif() endif() if(exe_OBJLIB_DEPS) @@ -137,7 +157,7 @@ macro(libgav1_add_executable) endif() if(BUILD_SHARED_LIBS AND (MSVC OR WIN32)) - target_compile_definitions(${lib_NAME} PRIVATE "LIBGAV1_BUILDING_DLL=0") + target_compile_definitions(${exe_NAME} PRIVATE "LIBGAV1_BUILDING_DLL=0") endif() if(exe_LIB_DEPS) @@ -321,7 +341,9 @@ macro(libgav1_add_library) endif() if(lib_TYPE STREQUAL SHARED AND NOT MSVC) - set_target_properties(${lib_NAME} PROPERTIES SOVERSION ${LIBGAV1_SOVERSION}) + set_target_properties(${lib_NAME} + PROPERTIES VERSION ${LIBGAV1_SOVERSION} SOVERSION + ${LIBGAV1_SOVERSION_MAJOR}) endif() if(BUILD_SHARED_LIBS AND (MSVC OR WIN32)) |