[libcxx-commits] [libcxx] Commit mostly working single wrapped module map (PR #87402)

via libcxx-commits libcxx-commits at lists.llvm.org
Fri Apr 5 10:13:21 PDT 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-libcxx

Author: Eric (EricWF)

<details>
<summary>Changes</summary>

This patch is what I use to use modules on Linux when building LLVM.

Without it there are race conditions around the building of each individual module.
I have not validated this on Mac, or with the various submodule visibilitys

This patch also removes two module declarations for modules which don't exist


---

Patch is 237.03 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/87402.diff


1 Files Affected:

- (modified) libcxx/include/module.modulemap (+2052-2050) 


``````````diff
diff --git a/libcxx/include/module.modulemap b/libcxx/include/module.modulemap
index 22c380327f1579..f7eac09703eaf5 100644
--- a/libcxx/include/module.modulemap
+++ b/libcxx/include/module.modulemap
@@ -1,2101 +1,2103 @@
 // Main C++ standard library interfaces
-module std_algorithm [system] {
-  header "algorithm"
-  export *
-}
-module std_any [system] {
-  header "any"
-  export *
-}
-module std_array [system] {
-  header "array"
-  export *
-}
-module std_atomic [system] {
-  header "atomic"
-  export *
-}
-module std_barrier [system] {
-  header "barrier"
-  export *
-}
-module std_bit [system] {
-  header "bit"
-  export *
-}
-module std_bitset [system] {
-  header "bitset"
-  export *
-}
-module std_charconv [system] {
-  header "charconv"
-  export *
-}
-module std_chrono [system] {
-  header "chrono"
-  export *
-}
-module std_codecvt [system] {
-  header "codecvt"
-  export *
-}
-module std_compare [system] {
-  header "compare"
-  export *
-}
-module std_complex [system] {
-  header "complex"
-  export *
-}
-module std_concepts [system] {
-  header "concepts"
-  export *
-}
-module std_condition_variable [system] {
-  header "condition_variable"
-  export *
-}
-module std_coroutine [system] {
-  header "coroutine"
-  export *
-}
-module std_deque [system] {
-  header "deque"
-  export *
-}
-module std_exception [system] {
-  header "exception"
-  export *
-}
-module std_execution [system] {
-  header "execution"
-  export *
-}
-module std_expected [system] {
-  header "expected"
-  export *
-}
-module std_filesystem [system] {
-  header "filesystem"
-  export *
-}
-module std_format [system] {
-  header "format"
-  export *
-}
-module std_forward_list [system] {
-  header "forward_list"
-  export *
-}
-module std_fstream [system] {
-  header "fstream"
-  export *
-}
-module std_functional [system] {
-  header "functional"
-  export *
-}
-module std_future [system] {
-  header "future"
-  export *
-}
-module std_initializer_list [system] {
-  header "initializer_list"
-  export *
-}
-module std_iomanip [system] {
-  header "iomanip"
-  export *
-}
-module std_ios [system] {
-  header "ios"
-  export *
-}
-module std_iosfwd [system] {
-  header "iosfwd"
-  export *
-}
-module std_iostream [system] {
-  header "iostream"
-  export *
-}
-module std_istream [system] {
-  header "istream"
-  export *
-}
-module std_iterator [system] {
-  header "iterator"
-  export *
-}
-module std_latch [system] {
-  header "latch"
-  export *
-}
-module std_limits [system] {
-  header "limits"
-  export *
-}
-module std_list [system] {
-  header "list"
-  export *
-}
-module std_locale [system] {
-  header "locale"
-  export *
-}
-module std_map [system] {
-  header "map"
-  export *
-}
-module std_mdspan [system] {
-  header "mdspan"
-  export *
-}
-module std_memory [system] {
-  header "memory"
-  export *
-}
-module std_memory_resource [system] {
-  header "memory_resource"
-  export *
-}
-module std_mutex [system] {
-  header "mutex"
-  export *
-}
-module std_new [system] {
-  header "new"
-  export *
-}
-module std_numbers [system] {
-  header "numbers"
-  export *
-}
-module std_numeric [system] {
-  header "numeric"
-  export *
-}
-module std_optional [system] {
-  header "optional"
-  export *
-}
-module std_ostream [system] {
-  header "ostream"
-  export *
-}
-module std_print [system] {
-  header "print"
-  export *
-}
-module std_queue [system] {
-  header "queue"
-  export *
-}
-module std_random [system] {
-  header "random"
-  export *
-}
-module std_ranges [system] {
-  header "ranges"
-  export *
-}
-module std_ratio [system] {
-  header "ratio"
-  export *
-}
-module std_regex [system] {
-  header "regex"
-  export *
-}
-module std_scoped_allocator [system] {
-  header "scoped_allocator"
-  export *
-}
-module std_semaphore [system] {
-  header "semaphore"
-  export *
-}
-module std_set [system] {
-  header "set"
-  export *
-}
-module std_shared_mutex [system] {
-  header "shared_mutex"
-  export std_version
-}
-module std_source_location [system] {
-  header "source_location"
-  export *
-}
-module std_span [system] {
-  header "span"
-  export std_private_ranges_enable_borrowed_range
-  export std_version
-  export std_private_span_span_fwd
-}
-module std_sstream [system] {
-  header "sstream"
-  export *
-}
-module std_stack [system] {
-  header "stack"
-  export *
-}
-module std_stdexcept [system] {
-  header "stdexcept"
-  export *
-}
-module std_stop_token {
-  header "stop_token"
-  export *
-}
-module std_streambuf [system] {
-  header "streambuf"
-  export *
-}
-module std_string [system] {
-  header "string"
-  export *
-}
-module std_string_view [system] {
-  header "string_view"
-  export *
-}
-module std_strstream [system] {
-  header "strstream"
-  export *
-}
-module std_syncstream [system] {
-  header "syncstream"
-  export *
-}
-module std_system_error [system] {
-  header "system_error"
-  export *
-}
-module std_thread [system] {
-  header "thread"
-  export *
-}
-module std_tuple [system] {
-  header "tuple"
-  export *
-}
-module std_type_traits [system] {
-  header "type_traits"
-  export *
-}
-module std_typeindex [system] {
-  header "typeindex"
-  export *
-}
-module std_typeinfo [system] {
-  header "typeinfo"
-  export *
-}
-module std_unordered_map [system] {
-  header "unordered_map"
-  export *
-}
-module std_unordered_set [system] {
-  header "unordered_set"
-  export *
-}
-module std_utility [system] {
-  header "utility"
-  export *
-}
-module std_valarray [system] {
-  header "valarray"
-  export *
-}
-module std_variant [system] {
-  header "variant"
-  export *
-}
-module std_vector [system] {
-  header "vector"
-  export *
-}
-module std_version [system] {
-  header "version"
-  export *
+module std_config [system] [extern_c] {
+    header "__config"
 }
 
-// C standard library interface wrappers
-module std_cassert [system] {
-  // <cassert>'s use of NDEBUG requires textual inclusion.
-  textual header "cassert"
-}
-module std_ccomplex [system] {
-  header "ccomplex"
-  export *
-}
-module std_cctype [system] {
-  header "cctype"
-  export *
-}
-module std_cerrno [system] {
-  header "cerrno"
-  export *
-}
-module std_cfenv [system] {
-  header "cfenv"
-  export *
-}
-module std_cfloat [system] {
-  header "cfloat"
-  export *
-}
-module std_cinttypes [system] {
-  header "cinttypes"
-  export *
-}
-module std_ciso646 [system] {
-  header "ciso646"
-  export *
-}
-module std_climits [system] {
-  header "climits"
-  export *
-}
-module std_clocale [system] {
-  header "clocale"
-  export *
-}
-module std_cmath [system] {
-  header "cmath"
-  export *
-}
-module std_csetjmp [system] {
-  header "csetjmp"
-  export *
-}
-module std_csignal [system] {
-  header "csignal"
-  export *
-}
-// FIXME: <cstdalign> is missing.
-module std_cstdarg [system] {
-  header "cstdarg"
-  export *
-}
-module std_cstdbool [system] {
-  header "cstdbool"
-  export *
-}
-module std_cstddef [system] {
-  header "cstddef"
-  export *
-}
-module std_cstdint [system] {
-  header "cstdint"
-  export *
-}
-module std_cstdio [system] {
-  header "cstdio"
-  export *
-}
-module std_cstdlib [system] {
-  header "cstdlib"
-  export *
-}
-module std_cstring [system] {
-  header "cstring"
-  export *
-}
-module std_ctgmath [system] {
-  header "ctgmath"
-  export *
-}
-module std_ctime [system] {
-  header "ctime"
-  export *
-}
-module std_cuchar [system] {
-  header "cuchar"
-  export *
-}
-module std_cwchar [system] {
-  header "cwchar"
-  export *
-}
-module std_cwctype [system] {
-  header "cwctype"
-  export *
-}
+module std [system] {
+    module std_algorithm [system] {
+      header "algorithm"
+      export *
+    }
+    module std_any [system] {
+      header "any"
+      export *
+    }
+    module std_array [system] {
+      header "array"
+      export *
+    }
+    module std_atomic [system] {
+      header "atomic"
+      export *
+    }
+    module std_barrier [system] {
+      header "barrier"
+      export *
+    }
+    module std_bit [system] {
+      header "bit"
+      export *
+    }
+    module std_bitset [system] {
+      header "bitset"
+      export *
+    }
+    module std_charconv [system] {
+      header "charconv"
+      export *
+    }
+    module std_chrono [system] {
+      header "chrono"
+      export *
+    }
+    module std_codecvt [system] {
+      header "codecvt"
+      export *
+    }
+    module std_compare [system] {
+      header "compare"
+      export *
+    }
+    module std_complex [system] {
+      header "complex"
+      export *
+    }
+    module std_concepts [system] {
+      header "concepts"
+      export *
+    }
+    module std_condition_variable [system] {
+      header "condition_variable"
+      export *
+    }
+    module std_coroutine [system] {
+      header "coroutine"
+      export *
+    }
+    module std_deque [system] {
+      header "deque"
+      export *
+    }
+    module std_exception [system] {
+      header "exception"
+      export *
+    }
+    module std_execution [system] {
+      header "execution"
+      export *
+    }
+    module std_expected [system] {
+      header "expected"
+      export *
+    }
+    module std_filesystem [system] {
+      header "filesystem"
+      export *
+    }
+    module std_format [system] {
+      header "format"
+      export *
+    }
+    module std_forward_list [system] {
+      header "forward_list"
+      export *
+    }
+    module std_fstream [system] {
+      header "fstream"
+      export *
+    }
+    module std_functional [system] {
+      header "functional"
+      export *
+    }
+    module std_future [system] {
+      header "future"
+      export *
+    }
+    module std_initializer_list [system] {
+      header "initializer_list"
+      export *
+    }
+    module std_iomanip [system] {
+      header "iomanip"
+      export *
+    }
+    module std_ios [system] {
+      header "ios"
+      export *
+    }
+    module std_iosfwd [system] {
+      header "iosfwd"
+      export *
+    }
+    module std_iostream [system] {
+      header "iostream"
+      export *
+    }
+    module std_istream [system] {
+      header "istream"
+      export *
+    }
+    module std_iterator [system] {
+      header "iterator"
+      export *
+    }
+    module std_latch [system] {
+      header "latch"
+      export *
+    }
+    module std_limits [system] {
+      header "limits"
+      export *
+    }
+    module std_list [system] {
+      header "list"
+      export *
+    }
+    module std_locale [system] {
+      header "locale"
+      export *
+    }
+    module std_map [system] {
+      header "map"
+      export *
+    }
+    module std_mdspan [system] {
+      header "mdspan"
+      export *
+    }
+    module std_memory [system] {
+      header "memory"
+      export *
+    }
+    module std_memory_resource [system] {
+      header "memory_resource"
+      export *
+    }
+    module std_mutex [system] {
+      header "mutex"
+      export *
+    }
+    module std_new [system] {
+      header "new"
+      export *
+    }
+    module std_numbers [system] {
+      header "numbers"
+      export *
+    }
+    module std_numeric [system] {
+      header "numeric"
+      export *
+    }
+    module std_optional [system] {
+      header "optional"
+      export *
+    }
+    module std_ostream [system] {
+      header "ostream"
+      export *
+    }
+    module std_print [system] {
+      header "print"
+      export *
+    }
+    module std_queue [system] {
+      header "queue"
+      export *
+    }
+    module std_random [system] {
+      header "random"
+      export *
+    }
+    module std_ranges [system] {
+      header "ranges"
+      export *
+    }
+    module std_ratio [system] {
+      header "ratio"
+      export *
+    }
+    module std_regex [system] {
+      header "regex"
+      export *
+    }
+    module std_scoped_allocator [system] {
+      header "scoped_allocator"
+      export *
+    }
+    module std_semaphore [system] {
+      header "semaphore"
+      export *
+    }
+    module std_set [system] {
+      header "set"
+      export *
+    }
+    module std_shared_mutex [system] {
+      header "shared_mutex"
+      export std_version
+    }
+    module std_source_location [system] {
+      header "source_location"
+      export *
+    }
+    module std_span [system] {
+      header "span"
+      export std_private_ranges_enable_borrowed_range
+      export std_version
+      export std_private_span_span_fwd
+    }
+    module std_sstream [system] {
+      header "sstream"
+      export *
+    }
+    module std_stack [system] {
+      header "stack"
+      export *
+    }
+    module std_stdexcept [system] {
+      header "stdexcept"
+      export *
+    }
+    module std_stop_token {
+      header "stop_token"
+      export *
+    }
+    module std_streambuf [system] {
+      header "streambuf"
+      export *
+    }
+    module std_string [system] {
+      header "string"
+      export *
+    }
+    module std_string_view [system] {
+      header "string_view"
+      export *
+    }
+    module std_strstream [system] {
+      header "strstream"
+      export *
+    }
+    module std_syncstream [system] {
+      header "syncstream"
+      export *
+    }
+    module std_system_error [system] {
+      header "system_error"
+      export *
+    }
+    module std_thread [system] {
+      header "thread"
+      export *
+    }
+    module std_tuple [system] {
+      header "tuple"
+      export *
+    }
+    module std_type_traits [system] {
+      header "type_traits"
+      export *
+    }
+    module std_typeindex [system] {
+      header "typeindex"
+      export *
+    }
+    module std_typeinfo [system] {
+      header "typeinfo"
+      export *
+    }
+    module std_unordered_map [system] {
+      header "unordered_map"
+      export *
+    }
+    module std_unordered_set [system] {
+      header "unordered_set"
+      export *
+    }
+    module std_utility [system] {
+      header "utility"
+      export *
+    }
+    module std_valarray [system] {
+      header "valarray"
+      export *
+    }
+    module std_variant [system] {
+      header "variant"
+      export *
+    }
+    module std_vector [system] {
+      header "vector"
+      export *
+    }
+    module std_version [system] {
+      header "version"
+      export *
+    }
 
-// C standard library interfaces augmented/replaced in C++
-// <assert.h> provided by C library.
-module std_complex_h [system] {
-  header "complex.h"
-  export *
-}
-module std_ctype_h [system] {
-  header "ctype.h"
-  export *
-}
-module std_errno_h [system] {
-  header "errno.h"
-  export *
-}
-module std_fenv_h [system] {
-  header "fenv.h"
-  export *
-}
-module std_float_h [system] {
-  header "float.h"
-  export *
-}
-module std_inttypes_h [system] {
-  header "inttypes.h"
-  export *
-}
-// <iso646.h> provided by compiler.
-module std_locale_h [system] {
-  header "locale.h"
-  export *
-}
-module std_math_h [system] {
-  header "math.h"
-  export *
-}
-// <setjmp.h> provided by C library.
-// <signal.h> provided by C library.
-// FIXME: <stdalign.h> is missing.
-// <stdarg.h> provided by compiler.
-module std_stdatomic_h [system] {
-  header "stdatomic.h"
-  export *
-}
-module std_stdbool_h [system] {
-  // <stdbool.h>'s __bool_true_false_are_defined macro requires textual inclusion.
-  textual header "stdbool.h"
-  export *
-}
-module std_stddef_h [system] {
-  // <stddef.h>'s __need_* macros require textual inclusion.
-  textual header "stddef.h"
-  export *
-}
-module std_stdint_h [system] {
-  header "stdint.h"
-  export *
-}
-module std_stdio_h [system] {
-  // <stdio.h>'s __need_* macros require textual inclusion.
-  textual header "stdio.h"
-  export *
-}
-module std_stdlib_h [system] {
-  // <stdlib.h>'s __need_* macros require textual inclusion.
-  textual header "stdlib.h"
-  export *
-}
-module std_string_h [system] {
-  header "string.h"
-  export *
-}
-module std_tgmath_h [system] {
-  header "tgmath.h"
-  export *
-}
-module std_uchar_h [system] {
-  header "uchar.h"
-  export *
-}
-// <time.h> provided by C library.
-module std_wchar_h [system] {
-  // <wchar.h>'s __need_* macros require textual inclusion.
-  textual header "wchar.h"
-  export *
-}
-module std_wctype_h [system] {
-  header "wctype.h"
-  export *
-}
+    // C standard library interface wrappers
+    module std_cassert [system] {
+      // <cassert>'s use of NDEBUG requires textual inclusion.
+      textual header "cassert"
+    }
+    module std_ccomplex [system] {
+      header "ccomplex"
+      export *
+    }
+    module std_cctype [system] {
+      header "cctype"
+      export *
+    }
+    module std_cerrno [system] {
+      header "cerrno"
+      export *
+    }
+    module std_cfenv [system] {
+      header "cfenv"
+      export *
+    }
+    module std_cfloat [system] {
+      header "cfloat"
+      export *
+    }
+    module std_cinttypes [system] {
+      header "cinttypes"
+      export *
+    }
+    module std_ciso646 [system] {
+      header "ciso646"
+      export *
+    }
+    module std_climits [system] {
+      header "climits"
+      export *
+    }
+    module std_clocale [system] {
+      header "clocale"
+      export *
+    }
+    module std_cmath [system] {
+      header "cmath"
+      export *
+    }
+    module std_csetjmp [system] {
+      header "csetjmp"
+      export *
+    }
+    module std_csignal [system] {
+      header "csignal"
+      export *
+    }
+    // FIXME: <cstdalign> is missing.
+    module std_cstdarg [system] {
+      header "cstdarg"
+      export *
+    }
+    module std_cstdbool [system] {
+      header "cstdbool"
+      export *
+    }
+    module std_cstddef [system] {
+      header "cstddef"
+      export *
+    }
+    module std_cstdint [system] {
+      header "cstdint"
+      export *
+    }
+    module std_cstdio [system] {
+      header "cstdio"
+      export *
+    }
+    module std_cstdlib [system] {
+      header "cstdlib"
+      export *
+    }
+    module std_cstring [system] {
+      header "cstring"
+      export *
+    }
+    module std_ctgmath [system] {
+      header "ctgmath"
+      export *
+    }
+    module std_ctime [system] {
+      header "ctime"
+      export *
+    }
+    module std_cuchar [system] {
+      header "cuchar"
+      export *
+    }
+    module std_cwchar [system] {
+      header "cwchar"
+      export *
+    }
+    module std_cwctype [system] {
+      header "cwctype"
+      export *
+    }
 
-// Experimental C++ standard library interfaces
-module std_experimental [system] {
-  module iterator {
-    header "experimental/iterator"
-    export *
-  }
-  module memory {
-    header "experimental/memory"
-    export *
-  }
-  module propagate_const {
-    header "experimental/propagate_const"
-    export *
-  }
-  module simd {
-    module aligned_tag          { private header "experimental/__simd/aligned_tag.h" }
-    module declaration          { private header "experimental/__simd/declaration.h" }
-    module reference            { private header "experimental/__simd/reference.h" }
-    module scalar               { private header "experimental/__simd/scalar.h" }
-    module simd                 { private header "experimental/__simd/simd.h" }
-    module simd_mask            { private header "experimental/__simd/simd_mask.h" }
-    module traits               { private header "experimental/__simd/traits.h" }
-    module utility              { private header "experimental/__simd/utility.h" }
-    module vec_ext              { private header "experimental/__simd/vec_ext.h" }
+    // C standard library interfaces augmented/replaced in C++
+    // <assert.h> provided by C library.
+    module std_complex_h [system] {
+      header "complex.h"
+      export std_ccomplex
+      export *
+    }
+    module std_ctype_h [system] {
+      header "ctype.h"
+      export *
+    }
+    module std_errno_h [system] {
+      header "errno.h"
+      export *
+    }
+    module std_fenv_h [system] {
+      header "fenv.h"
+      export *
+    }
+    module std_float_h [system] {
+      header "float.h"
+      export *
+    }
+    module std_inttypes_h [system] {
+      header "inttypes.h"
+      export *
+    }
+    // <iso646.h> provided by compiler.
+    module std_locale_h [system] {
+      header "locale.h"
+      export *
+    }
+    module std_math_h [system] {
+      header "math.h"
+      export *
+    }
+    // <s...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/87402


More information about the libcxx-commits mailing list