aboutsummaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorqinxialei <xialeiqin@gmail.com>2021-04-22 11:20:15 +0800
committerqinxialei <xialeiqin@gmail.com>2021-04-22 11:20:15 +0800
commit2381d803c76105f44717d75f089ec37f51e5cfe4 (patch)
tree33f40fb4dfd1039ac262d5f1c1065d298578ddc1 /cmake
parente8d277081293b6fb2a5d469616baaa7a06f52496 (diff)
downloadlibgav1-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.cmake23
-rw-r--r--cmake/libgav1_flags.cmake14
-rw-r--r--cmake/libgav1_helpers.cmake14
-rw-r--r--cmake/libgav1_sanitizer.cmake4
-rw-r--r--cmake/libgav1_targets.cmake38
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))