From 2db6f2e508126d237435a4d43af8076bf74f641d Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Sat, 16 Apr 2016 00:48:58 +0000 Subject: [PATCH] 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. llvm-svn: 266502 --- llvm/cmake/modules/HandleLLVMOptions.cmake | 38 +++++++++++++++--------------- llvm/lib/AsmParser/module.modulemap | 1 - llvm/lib/Bitcode/module.modulemap | 1 - llvm/lib/CodeGen/module.modulemap | 1 - llvm/lib/DebugInfo/DWARF/module.modulemap | 1 - llvm/lib/IR/module.modulemap | 1 - llvm/lib/TableGen/module.modulemap | 1 - llvm/utils/TableGen/module.modulemap | 4 ---- 8 files changed, 19 insertions(+), 29 deletions(-) delete mode 100644 llvm/lib/AsmParser/module.modulemap delete mode 100644 llvm/lib/Bitcode/module.modulemap delete mode 100644 llvm/lib/CodeGen/module.modulemap delete mode 100644 llvm/lib/DebugInfo/DWARF/module.modulemap delete mode 100644 llvm/lib/IR/module.modulemap delete mode 100644 llvm/lib/TableGen/module.modulemap delete mode 100644 llvm/utils/TableGen/module.modulemap diff --git a/llvm/cmake/modules/HandleLLVMOptions.cmake b/llvm/cmake/modules/HandleLLVMOptions.cmake index f66e3ae..9b9e4bf 100644 --- a/llvm/cmake/modules/HandleLLVMOptions.cmake +++ b/llvm/cmake/modules/HandleLLVMOptions.cmake @@ -139,6 +139,25 @@ function(add_flag_or_print_warning flag name) 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 still manages to respect NDEBUG properly. + CHECK_CXX_SOURCE_COMPILES("#undef NDEBUG + #include + #define NDEBUG + #include + 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 still manages to respect NDEBUG properly. - CHECK_CXX_SOURCE_COMPILES("#undef NDEBUG - #include - #define NDEBUG - #include - 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) diff --git a/llvm/lib/AsmParser/module.modulemap b/llvm/lib/AsmParser/module.modulemap deleted file mode 100644 index cc300060..0000000 --- a/llvm/lib/AsmParser/module.modulemap +++ /dev/null @@ -1 +0,0 @@ -module AsmParser { requires cplusplus umbrella "." module * { export * } } diff --git a/llvm/lib/Bitcode/module.modulemap b/llvm/lib/Bitcode/module.modulemap deleted file mode 100644 index 7df1a0a..0000000 --- a/llvm/lib/Bitcode/module.modulemap +++ /dev/null @@ -1 +0,0 @@ -module Bitcode { requires cplusplus umbrella "." module * { export * } } diff --git a/llvm/lib/CodeGen/module.modulemap b/llvm/lib/CodeGen/module.modulemap deleted file mode 100644 index d4f68bcc6..0000000 --- a/llvm/lib/CodeGen/module.modulemap +++ /dev/null @@ -1 +0,0 @@ -module CodeGen { requires cplusplus umbrella "." module * { export * } } diff --git a/llvm/lib/DebugInfo/DWARF/module.modulemap b/llvm/lib/DebugInfo/DWARF/module.modulemap deleted file mode 100644 index c2f624fd..0000000 --- a/llvm/lib/DebugInfo/DWARF/module.modulemap +++ /dev/null @@ -1 +0,0 @@ -module DebugInfoDWARF { requires cplusplus umbrella "." module * { export * } } diff --git a/llvm/lib/IR/module.modulemap b/llvm/lib/IR/module.modulemap deleted file mode 100644 index 9698e91..0000000 --- a/llvm/lib/IR/module.modulemap +++ /dev/null @@ -1 +0,0 @@ -module IR { requires cplusplus umbrella "." module * { export * } } diff --git a/llvm/lib/TableGen/module.modulemap b/llvm/lib/TableGen/module.modulemap deleted file mode 100644 index 8dac0a2..0000000 --- a/llvm/lib/TableGen/module.modulemap +++ /dev/null @@ -1 +0,0 @@ -module TableGen { requires cplusplus umbrella "." module * { export * } } diff --git a/llvm/utils/TableGen/module.modulemap b/llvm/utils/TableGen/module.modulemap deleted file mode 100644 index 8871bbf..0000000 --- a/llvm/utils/TableGen/module.modulemap +++ /dev/null @@ -1,4 +0,0 @@ -module TableGen { - umbrella "." - module * { export * } -} -- 2.7.4