summaryrefslogtreecommitdiffstats
path: root/llvm/cmake/modules
diff options
context:
space:
mode:
authorChris Bieneman <beanz@apple.com>2016-05-05 19:57:03 +0000
committerChris Bieneman <beanz@apple.com>2016-05-05 19:57:03 +0000
commit62de33c2dbf0ff10e9eaf24c921509c2e8d836f4 (patch)
tree54ed67f6a7e46c56f7b2608ac5f24455a785d0d3 /llvm/cmake/modules
parentdaa902a4b988912a96ea7646cac8da77898f5ef2 (diff)
downloadbcm5719-llvm-62de33c2dbf0ff10e9eaf24c921509c2e8d836f4.tar.gz
bcm5719-llvm-62de33c2dbf0ff10e9eaf24c921509c2e8d836f4.zip
Remove LLVM_ENABLE_TIMESTAMPS
Summary: As per the discussion on LLVM-dev this patch proposes removing LLVM_ENABLE_TIMESTAMPS. The only complicated bit of this patch is the Windows support. On windows we used to log an error if /INCREMENTAL was passed to the linker when timestamps were disabled. With this change since timestamps in code are always disabled we will always compile on windows with /Brepro unless /INCREMENTAL is specified, and we will log a warning when /INCREMENTAL is specified to notify the user that the build will be non-deterministic. See: http://lists.llvm.org/pipermail/llvm-dev/2016-May/098990.html Reviewers: bogner, silvas, rnk Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D19892 llvm-svn: 268670
Diffstat (limited to 'llvm/cmake/modules')
-rw-r--r--llvm/cmake/modules/HandleLLVMOptions.cmake25
1 files changed, 10 insertions, 15 deletions
diff --git a/llvm/cmake/modules/HandleLLVMOptions.cmake b/llvm/cmake/modules/HandleLLVMOptions.cmake
index c41a0bb4228..ed2a6e9bb76 100644
--- a/llvm/cmake/modules/HandleLLVMOptions.cmake
+++ b/llvm/cmake/modules/HandleLLVMOptions.cmake
@@ -365,17 +365,15 @@ if( MSVC )
CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
endif()
- if (NOT LLVM_ENABLE_TIMESTAMPS AND CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
# clang-cl and cl by default produce non-deterministic binaries because
# link.exe /incremental requires a timestamp in the .obj file. clang-cl
- # has the flag /Brepro to force deterministic binaries, so pass that when
- # LLVM_ENABLE_TIMESTAMPS is turned off.
+ # has the flag /Brepro to force deterministic binaries. We want to pass that
+ # whenever you're building with clang unless you're passing /incremental.
# This checks CMAKE_CXX_COMPILER_ID in addition to check_cxx_compiler_flag()
# because cl.exe does not emit an error on flags it doesn't understand,
# letting check_cxx_compiler_flag() claim it understands all flags.
check_cxx_compiler_flag("/Brepro" SUPPORTS_BREPRO)
- append_if(SUPPORTS_BREPRO "/Brepro" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
-
if (SUPPORTS_BREPRO)
# Check if /INCREMENTAL is passed to the linker and complain that it
# won't work with /Brepro.
@@ -383,14 +381,13 @@ if( MSVC )
string(TOUPPER "${CMAKE_MODULE_LINKER_FLAGS}" upper_module_flags)
string(TOUPPER "${CMAKE_SHARED_LINKER_FLAGS}" upper_shared_flags)
- string(FIND "${upper_exe_flags}" "/INCREMENTAL" exe_index)
- string(FIND "${upper_module_flags}" "/INCREMENTAL" module_index)
- string(FIND "${upper_shared_flags}" "/INCREMENTAL" shared_index)
+ string(FIND "${upper_exe_flags} ${upper_module_flags} ${upper_shared_flags}"
+ "/INCREMENTAL" linker_flag_idx)
- if (${exe_index} GREATER -1 OR
- ${module_index} GREATER -1 OR
- ${shared_index} GREATER -1)
- message(FATAL_ERROR "LLVM_ENABLE_TIMESTAMPS not compatible with /INCREMENTAL linking")
+ if (${linker_flag_idx} GREATER -1)
+ message(WARNING "/Brepro not compatible with /INCREMENTAL linking - builds will be non-deterministic")
+ else()
+ append("/Brepro" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
endif()
endif()
endif()
@@ -456,9 +453,7 @@ elseif( LLVM_COMPILER_IS_GCC_COMPATIBLE )
endif()
endif (LLVM_ENABLE_WARNINGS)
append_if(LLVM_ENABLE_WERROR "-Werror" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
- if (NOT LLVM_ENABLE_TIMESTAMPS)
- add_flag_if_supported("-Werror=date-time" WERROR_DATE_TIME)
- endif ()
+ add_flag_if_supported("-Werror=date-time" WERROR_DATE_TIME)
if (LLVM_ENABLE_CXX1Y)
check_cxx_compiler_flag("-std=c++1y" CXX_SUPPORTS_CXX1Y)
append_if(CXX_SUPPORTS_CXX1Y "-std=c++1y" CMAKE_CXX_FLAGS)
OpenPOWER on IntegriCloud