[PATCH] D16653: [CMake] Support platform building builtins without a full toolchain

Alexey Samsonov via llvm-commits llvm-commits at lists.llvm.org
Fri Feb 5 14:00:26 PST 2016


samsonov added a comment.

Thanks for doing this! Overall, I'm fine with the direction of this patch and it all makes sense.
I agree we have to introduce alternative and simple way to build "builtins" library for cross-compilation use cases w/o relying on valid working toolchain that is necessary for sanitizers.
Please do break this into a series of smaller patches: as I understand, many of them will just involve moving code around, splitting common configuration routines into separate files, etc.

Some issues/nits/suggestions that caught my eye as I skimmed through the patch.


================
Comment at: CMakeLists.txt:270
@@ -321,1 +269,3 @@
+  # Building the tests requires LLVM's CMake modules for lit support
+  include(AddLLVM)
   add_subdirectory(unittests)
----------------
Sink this include to the files which actually use smth. from AddLLVM? (test/CMakeLists.txt and unittest/CMakeLists.txt)?

================
Comment at: cmake/Modules/BuiltinTests.cmake:2
@@ +1,3 @@
+
+# This function takes an OS and a list of architectures and identifies the
+# subset of the architectures list that the installed toolchain can target.
----------------
This comment is wrong.

================
Comment at: cmake/Modules/CompilerRTDarwinUtils.cmake:115
@@ +114,3 @@
+    set(arch_linker_flags "-arch ${arch} ${os_linker_flags}")
+    try_compile_only(CAN_TARGET_${os}_${arch} -v -arch ${arch} ${DARWIN_${os}_CFLAGS})
+    if(CAN_TARGET_${os}_${arch})
----------------
Why can't use the same TEST_COMPILE_ONLY variable as in test_target_arch, and merge this into darwin_test_archs instead? 

================
Comment at: cmake/base-config-ix.cmake:1
@@ +1,2 @@
+# The CompilerRT build system requires CMake version 2.8.8 or higher in order
+# to use its support for building convenience "libraries" as a collection of
----------------
The comment is now irrelevant here: we actually set CMake version in a different place.

================
Comment at: cmake/base-config-ix.cmake:26
@@ +25,3 @@
+  if(NOT MSVC)
+    set(COMPILER_RT_TEST_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang)
+  else()
----------------
IIRC there were changes in these files recently: we've add COMPILER_RT_TEST_CXX_COMPILER, you might need to rebase.

================
Comment at: cmake/base-config-ix.cmake:74
@@ +73,3 @@
+# If successful, saves target flags for this architecture.
+macro(test_target_arch arch def)
+  set(TARGET_${arch}_CFLAGS ${ARGN})
----------------
Hm... do you think it's worth moving these architecture support checking to a yet another .cmake module?

================
Comment at: cmake/base-config-ix.cmake:84
@@ +83,3 @@
+  elseif(TEST_COMPILE_ONLY)
+    set(argstring "${CMAKE_EXE_LINKER_FLAGS} ${argstring}")
+    try_compile_only(CAN_TARGET_${arch} ${TARGET_${arch}_CFLAGS})
----------------
Wait, are you using argstring at all in this branch?

================
Comment at: cmake/config-ix.cmake:102
@@ -112,3 +101,3 @@
 # If successful, saves target flags for this architecture.
 macro(test_target_arch arch def)
   set(TARGET_${arch}_CFLAGS ${ARGN})
----------------
Looks like you've moved this macro to a different location, should it be deleted here now?


http://reviews.llvm.org/D16653





More information about the llvm-commits mailing list