-
Notifications
You must be signed in to change notification settings - Fork 15.1k
[libcxx] fix includes for explicit Clang module build #126474
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
@llvm/pr-subscribers-libcxx Author: Takuto Ikuta (atetubou) ChangesThis fixes many build errors due to missing includes when I use Full diff: https://github.com/llvm/llvm-project/pull/126474.diff 18 Files Affected:
diff --git a/libcxx/include/__filesystem/path.h b/libcxx/include/__filesystem/path.h
index 0a751ba32954fd6..698ae209ae1f8ac 100644
--- a/libcxx/include/__filesystem/path.h
+++ b/libcxx/include/__filesystem/path.h
@@ -18,6 +18,7 @@
#include <__iterator/back_insert_iterator.h>
#include <__iterator/iterator_traits.h>
#include <__type_traits/decay.h>
+#include <__type_traits/enable_if.h>
#include <__type_traits/is_pointer.h>
#include <__type_traits/remove_const.h>
#include <__type_traits/remove_pointer.h>
diff --git a/libcxx/include/__vector/vector_bool.h b/libcxx/include/__vector/vector_bool.h
index 35f0f745e201c3a..714c86ae2bb96a0 100644
--- a/libcxx/include/__vector/vector_bool.h
+++ b/libcxx/include/__vector/vector_bool.h
@@ -18,6 +18,7 @@
#include <__bit_reference>
#include <__config>
#include <__functional/unary_function.h>
+#include <__fwd/bit_reference.h>
#include <__fwd/functional.h>
#include <__fwd/vector.h>
#include <__iterator/distance.h>
diff --git a/libcxx/src/condition_variable.cpp b/libcxx/src/condition_variable.cpp
index db60571cf5f5601..42385782e7a2f2d 100644
--- a/libcxx/src/condition_variable.cpp
+++ b/libcxx/src/condition_variable.cpp
@@ -6,7 +6,11 @@
//
//===----------------------------------------------------------------------===//
+#include <chrono>
#include <condition_variable>
+#include <limits>
+#include <ratio>
+#include <system_error>
#include <thread>
#if defined(__ELF__) && defined(_LIBCPP_LINK_PTHREAD_LIB)
diff --git a/libcxx/src/experimental/time_zone.cpp b/libcxx/src/experimental/time_zone.cpp
index 289164ab1203642..28fd7a365a7b0bc 100644
--- a/libcxx/src/experimental/time_zone.cpp
+++ b/libcxx/src/experimental/time_zone.cpp
@@ -33,8 +33,11 @@
#include <cctype>
#include <chrono>
#include <expected>
+#include <format>
+#include <functional>
#include <map>
#include <numeric>
+#include <optional>
#include <ranges>
#include "include/tzdb/time_zone_private.h"
diff --git a/libcxx/src/filesystem/directory_iterator.cpp b/libcxx/src/filesystem/directory_iterator.cpp
index 7e8e40d17f7a0de..a3ceedac102b970 100644
--- a/libcxx/src/filesystem/directory_iterator.cpp
+++ b/libcxx/src/filesystem/directory_iterator.cpp
@@ -10,6 +10,7 @@
#include <__config>
#include <errno.h>
#include <filesystem>
+#include <memory>
#include <stack>
#include <utility>
diff --git a/libcxx/src/filesystem/error.h b/libcxx/src/filesystem/error.h
index c0213910b3780a5..7b3f56bdcd1c6e3 100644
--- a/libcxx/src/filesystem/error.h
+++ b/libcxx/src/filesystem/error.h
@@ -11,7 +11,9 @@
#include <__assert>
#include <__config>
+#include <algorithm>
#include <cerrno>
+#include <chrono>
#include <cstdarg>
#include <cstddef>
#include <cstdint>
diff --git a/libcxx/src/filesystem/filesystem_clock.cpp b/libcxx/src/filesystem/filesystem_clock.cpp
index e1f887072201876..2335d048b3139ee 100644
--- a/libcxx/src/filesystem/filesystem_clock.cpp
+++ b/libcxx/src/filesystem/filesystem_clock.cpp
@@ -10,6 +10,8 @@
#include <__system_error/throw_system_error.h>
#include <chrono>
#include <filesystem>
+#include <ratio>
+#include <errno.h>
#include <time.h>
#if defined(_LIBCPP_WIN32API)
diff --git a/libcxx/src/filesystem/filesystem_error.cpp b/libcxx/src/filesystem/filesystem_error.cpp
index 456b902c331541c..4edd2a477057535 100644
--- a/libcxx/src/filesystem/filesystem_error.cpp
+++ b/libcxx/src/filesystem/filesystem_error.cpp
@@ -9,6 +9,7 @@
#include <__config>
#include <__utility/unreachable.h>
#include <filesystem>
+#include <memory>
#include <system_error>
#include "format_string.h"
diff --git a/libcxx/src/include/ryu/common.h b/libcxx/src/include/ryu/common.h
index d5168d8710bf269..591ec414f850d06 100644
--- a/libcxx/src/include/ryu/common.h
+++ b/libcxx/src/include/ryu/common.h
@@ -44,6 +44,7 @@
#include <__assert>
#include <__config>
+#include <cstdint>
#include <cstring>
_LIBCPP_BEGIN_NAMESPACE_STD
diff --git a/libcxx/src/memory.cpp b/libcxx/src/memory.cpp
index 16190c242c1487e..68df61f96c9bec5 100644
--- a/libcxx/src/memory.cpp
+++ b/libcxx/src/memory.cpp
@@ -11,7 +11,9 @@
# define _LIBCPP_SHARED_PTR_DEFINE_LEGACY_INLINE_FUNCTIONS
#endif
+#include <functional>
#include <memory>
+#include <typeinfo>
#if _LIBCPP_HAS_THREADS
# include <mutex>
diff --git a/libcxx/src/memory_resource.cpp b/libcxx/src/memory_resource.cpp
index ec9565f731bfac6..2c7d9aef6dc3f43 100644
--- a/libcxx/src/memory_resource.cpp
+++ b/libcxx/src/memory_resource.cpp
@@ -7,6 +7,7 @@
//===----------------------------------------------------------------------===//
#include <cstddef>
+#include <cstdint>
#include <memory>
#include <memory_resource>
diff --git a/libcxx/src/mutex.cpp b/libcxx/src/mutex.cpp
index 2f8504d602dc9f4..54da662b7a4cc53 100644
--- a/libcxx/src/mutex.cpp
+++ b/libcxx/src/mutex.cpp
@@ -11,6 +11,7 @@
#include <__utility/exception_guard.h>
#include <limits>
#include <mutex>
+#include <system_error>
#include "include/atomic_support.h"
diff --git a/libcxx/src/random.cpp b/libcxx/src/random.cpp
index 3830e3918d2ee47..dddad84f027ef8c 100644
--- a/libcxx/src/random.cpp
+++ b/libcxx/src/random.cpp
@@ -16,6 +16,7 @@
#include <__system_error/throw_system_error.h>
#include <limits>
#include <random>
+#include <string>
#include <errno.h>
#include <stdio.h>
diff --git a/libcxx/src/ryu/d2fixed.cpp b/libcxx/src/ryu/d2fixed.cpp
index 4cfc39535988e29..abfa340830b1bbd 100644
--- a/libcxx/src/ryu/d2fixed.cpp
+++ b/libcxx/src/ryu/d2fixed.cpp
@@ -42,6 +42,7 @@
#include <__assert>
#include <__config>
#include <charconv>
+#include <cstddef>
#include <cstring>
#include "include/ryu/common.h"
diff --git a/libcxx/src/ryu/d2s.cpp b/libcxx/src/ryu/d2s.cpp
index 5b80ed8a709d8e6..c0d11107f880b1d 100644
--- a/libcxx/src/ryu/d2s.cpp
+++ b/libcxx/src/ryu/d2s.cpp
@@ -42,6 +42,7 @@
#include <__assert>
#include <__config>
#include <charconv>
+#include <cstddef>
#include "include/ryu/common.h"
#include "include/ryu/d2fixed.h"
diff --git a/libcxx/src/ryu/f2s.cpp b/libcxx/src/ryu/f2s.cpp
index f42fbd68c91d2d4..116294e44841c6e 100644
--- a/libcxx/src/ryu/f2s.cpp
+++ b/libcxx/src/ryu/f2s.cpp
@@ -42,6 +42,7 @@
#include <__assert>
#include <__config>
#include <charconv>
+#include <cstddef>
#include "include/ryu/common.h"
#include "include/ryu/d2fixed.h"
diff --git a/libcxx/src/thread.cpp b/libcxx/src/thread.cpp
index 73f22f12d8ccd29..d9e229f834e630d 100644
--- a/libcxx/src/thread.cpp
+++ b/libcxx/src/thread.cpp
@@ -6,12 +6,14 @@
//
//===----------------------------------------------------------------------===//
+#include <__system_error/throw_system_error.h>
#include <__thread/poll_with_backoff.h>
#include <__thread/timed_backoff_policy.h>
#include <exception>
#include <future>
#include <limits>
#include <thread>
+#include <utility>
#include <vector>
#if __has_include(<unistd.h>)
diff --git a/libcxx/src/vector.cpp b/libcxx/src/vector.cpp
index 3f3a906d6421f0a..60bf6fbe8d691f8 100644
--- a/libcxx/src/vector.cpp
+++ b/libcxx/src/vector.cpp
@@ -6,6 +6,7 @@
//
//===----------------------------------------------------------------------===//
+#include <stdexcept>
#include <vector>
_LIBCPP_BEGIN_NAMESPACE_STD
|
|
✅ With the latest revision this PR passed the C/C++ code formatter. |
47c3f3d3f522e60bc494b70ffd7ea7a2046e8238 git squash commit for fix_modules_build. 5e565c1b781f1200f2ca5489c7a8fd2b176b15ed fix include fb8ee3631b5269f3c5001514ea678b0900bd3c47 memory dad1a4c4ea904c0f6cff31574788c0957bc4c74a fix module build 33d9547f63167a6f7e2f6e78fd6d7a7ef83c8bc2 hoge f7d1acf79b29663c52c351319eb977ec08ca6b11 hoge
1ffa955 to
701a1a7
Compare
philnik777
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't understand what you're trying to do here. src/ can't be built with modules AFAIK. How do you work around the ODR violations?
|
Hmm, I should take a look at why this doesn't cause ODR violation. By the way, libc++ currently doesn't have a plan to build itself with Clang modules? |
No. Since we have ODR violations to keep ABI stability in a few cases I don't think it's feasible. It's also not like we'd gain that much, since the libc++ |
|
Although we might not be able to build libc++ with Clang modules, this patch in itself is simply adding missing includes to our |
This fixes many build errors due to missing includes when I use
libcxx_enable_explicit_moduleswhich will be introduced in #126017.