From fde4a454efb5b6766b479fa5607945846ac714ef Mon Sep 17 00:00:00 2001 From: Kuba Mracek Date: Mon, 5 Dec 2016 05:21:44 +0000 Subject: [PATCH] Use Darwin libtool's -no_warning_for_no_symbols if available to silence the "has no symbols" link warning Building compiler-rt on Darwin produces dozens of meaningless warnings about object files having no symbols during static archive creation. This is very intentional as compiler-rt uses #ifdefs to conditionally compile platform-specific code, and we even have a .cpp source file that only contains static asserts to make sure the environment is configured right. On Linux, this situation is fine and no warning is produced. This patch adds a libtool version detection and if it's new enough, we'll use the -no_warning_for_no_symbols flag that suppresses this warning. Build logs should be much cleaner now! Differential Revision: https://reviews.llvm.org/D27119 llvm-svn: 288640 --- llvm/CMakeLists.txt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt index 82e0c5c..3d99626 100644 --- a/llvm/CMakeLists.txt +++ b/llvm/CMakeLists.txt @@ -73,9 +73,22 @@ if(CMAKE_HOST_APPLE AND APPLE) if(CMAKE_LIBTOOL) set(CMAKE_LIBTOOL ${CMAKE_LIBTOOL} CACHE PATH "libtool executable") message(STATUS "Found libtool - ${CMAKE_LIBTOOL}") + + execute_process(COMMAND ${CMAKE_LIBTOOL} -V + OUTPUT_VARIABLE LIBTOOL_V_OUTPUT + OUTPUT_STRIP_TRAILING_WHITESPACE) + if("${LIBTOOL_V_OUTPUT}" MATCHES ".*cctools-([0-9.]+).*") + string(REGEX REPLACE ".*cctools-([0-9.]+).*" "\\1" LIBTOOL_VERSION + ${LIBTOOL_V_OUTPUT}) + if(NOT LIBTOOL_VERSION VERSION_LESS "862") + set(LIBTOOL_NO_WARNING_FLAG "-no_warning_for_no_symbols") + endif() + endif() + foreach(lang ${languages}) set(CMAKE_${lang}_CREATE_STATIC_LIBRARY - "${CMAKE_LIBTOOL} -static -o ") + "${CMAKE_LIBTOOL} -static ${LIBTOOL_NO_WARNING_FLAG} -o \ + ") endforeach() endif() -- 2.7.4