[llvm] r266502 - Update and fix LLVM_ENABLE_MODULES:

Richard Smith via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 15 17:48:58 PDT 2016


Author: rsmith
Date: Fri Apr 15 19:48:58 2016
New Revision: 266502

URL: http://llvm.org/viewvc/llvm-project?rev=266502&view=rev
Log:
Update and fix LLVM_ENABLE_MODULES:

1) We need to add this flag prior to adding any other, in case the user has
specified a -fmodule-cache-path= flag in their custom CXXFLAGS. Such a flag
causes -Werror builds to fail, and thus all config checks fail, until we add
the corresponding -fmodules flag. The modules selfhost bot does this, for
instance.

2) Delete module maps that were putting .cpp files into modules.

3) Enable -fmodules-local-submodule-visibility, to get proper module
visibility rules applied across submodules of the same module. Disable
-fmodules for C builds, since that flag is not available there.

Removed:
    llvm/trunk/lib/AsmParser/module.modulemap
    llvm/trunk/lib/Bitcode/module.modulemap
    llvm/trunk/lib/CodeGen/module.modulemap
    llvm/trunk/lib/DebugInfo/DWARF/module.modulemap
    llvm/trunk/lib/IR/module.modulemap
    llvm/trunk/lib/TableGen/module.modulemap
    llvm/trunk/utils/TableGen/module.modulemap
Modified:
    llvm/trunk/cmake/modules/HandleLLVMOptions.cmake

Modified: llvm/trunk/cmake/modules/HandleLLVMOptions.cmake
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/HandleLLVMOptions.cmake?rev=266502&r1=266501&r2=266502&view=diff
==============================================================================
--- llvm/trunk/cmake/modules/HandleLLVMOptions.cmake (original)
+++ llvm/trunk/cmake/modules/HandleLLVMOptions.cmake Fri Apr 15 19:48:58 2016
@@ -139,6 +139,25 @@ function(add_flag_or_print_warning flag
   endif()
 endfunction()
 
+if (LLVM_ENABLE_MODULES)
+  set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
+  set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -fmodules -Xclang -fmodules-local-submodule-visibility")
+  # Check that we can build code with modules enabled, and that repeatedly
+  # including <cassert> still manages to respect NDEBUG properly.
+  CHECK_CXX_SOURCE_COMPILES("#undef NDEBUG
+                             #include <cassert>
+                             #define NDEBUG
+                             #include <cassert>
+                             int main() { assert(this code is not compiled); }"
+                             CXX_SUPPORTS_MODULES)
+  set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
+  if (CXX_SUPPORTS_MODULES)
+    append_if(CXX_SUPPORTS_MODULES "-fmodules -Xclang -fmodules-local-submodule-visibility" CMAKE_CXX_FLAGS)
+  else()
+    message(FATAL_ERROR "LLVM_ENABLE_MODULES is not supported by this compiler")
+  endif()
+endif(LLVM_ENABLE_MODULES)
+
 if( LLVM_ENABLE_PIC )
   if( XCODE )
     # Xcode has -mdynamic-no-pic on by default, which overrides -fPIC. I don't
@@ -471,25 +490,6 @@ elseif( LLVM_COMPILER_IS_GCC_COMPATIBLE
       message(FATAL_ERROR "LLVM requires C++11 support but the '-std=c++11' flag isn't supported.")
     endif()
   endif()
-  if (LLVM_ENABLE_MODULES)
-    set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
-    set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -fmodules")
-    # Check that we can build code with modules enabled, and that repeatedly
-    # including <cassert> still manages to respect NDEBUG properly.
-    CHECK_CXX_SOURCE_COMPILES("#undef NDEBUG
-                               #include <cassert>
-                               #define NDEBUG
-                               #include <cassert>
-                               int main() { assert(this code is not compiled); }"
-                               CXX_SUPPORTS_MODULES)
-    set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
-    if (CXX_SUPPORTS_MODULES)
-      append_if(CXX_SUPPORTS_MODULES "-fmodules" CMAKE_C_FLAGS)
-      append_if(CXX_SUPPORTS_MODULES "-fmodules -fcxx-modules" CMAKE_CXX_FLAGS)
-    else()
-      message(FATAL_ERROR "LLVM_ENABLE_MODULES is not supported by this compiler")
-    endif()
-  endif(LLVM_ENABLE_MODULES)
 endif( MSVC )
 
 macro(append_common_sanitizer_flags)

Removed: llvm/trunk/lib/AsmParser/module.modulemap
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/module.modulemap?rev=266501&view=auto
==============================================================================
--- llvm/trunk/lib/AsmParser/module.modulemap (original)
+++ llvm/trunk/lib/AsmParser/module.modulemap (removed)
@@ -1 +0,0 @@
-module AsmParser { requires cplusplus umbrella "." module * { export * } }

Removed: llvm/trunk/lib/Bitcode/module.modulemap
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/module.modulemap?rev=266501&view=auto
==============================================================================
--- llvm/trunk/lib/Bitcode/module.modulemap (original)
+++ llvm/trunk/lib/Bitcode/module.modulemap (removed)
@@ -1 +0,0 @@
-module Bitcode { requires cplusplus umbrella "." module * { export * } }

Removed: llvm/trunk/lib/CodeGen/module.modulemap
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/module.modulemap?rev=266501&view=auto
==============================================================================
--- llvm/trunk/lib/CodeGen/module.modulemap (original)
+++ llvm/trunk/lib/CodeGen/module.modulemap (removed)
@@ -1 +0,0 @@
-module CodeGen { requires cplusplus umbrella "." module * { export * } }

Removed: llvm/trunk/lib/DebugInfo/DWARF/module.modulemap
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARF/module.modulemap?rev=266501&view=auto
==============================================================================
--- llvm/trunk/lib/DebugInfo/DWARF/module.modulemap (original)
+++ llvm/trunk/lib/DebugInfo/DWARF/module.modulemap (removed)
@@ -1 +0,0 @@
-module DebugInfoDWARF { requires cplusplus umbrella "." module * { export * } }

Removed: llvm/trunk/lib/IR/module.modulemap
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/module.modulemap?rev=266501&view=auto
==============================================================================
--- llvm/trunk/lib/IR/module.modulemap (original)
+++ llvm/trunk/lib/IR/module.modulemap (removed)
@@ -1 +0,0 @@
-module IR { requires cplusplus umbrella "." module * { export * } }

Removed: llvm/trunk/lib/TableGen/module.modulemap
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/TableGen/module.modulemap?rev=266501&view=auto
==============================================================================
--- llvm/trunk/lib/TableGen/module.modulemap (original)
+++ llvm/trunk/lib/TableGen/module.modulemap (removed)
@@ -1 +0,0 @@
-module TableGen { requires cplusplus umbrella "." module * { export * } }

Removed: llvm/trunk/utils/TableGen/module.modulemap
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/module.modulemap?rev=266501&view=auto
==============================================================================
--- llvm/trunk/utils/TableGen/module.modulemap (original)
+++ llvm/trunk/utils/TableGen/module.modulemap (removed)
@@ -1,4 +0,0 @@
-module TableGen {
-  umbrella "."
-  module * { export * }
-}




More information about the llvm-commits mailing list