[libcxx-commits] [PATCH] D97294: [libcxx] [test] Add a MinGW target
Martin Storsjö via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Tue Feb 23 07:24:19 PST 2021
mstorsjo created this revision.
mstorsjo added reviewers: libc++, rnk.
Herald added a subscriber: arichardson.
mstorsjo requested review of this revision.
Herald added a project: libc++.
Herald added 1 blocking reviewer(s): libc++.
This can't easily be autodetected (unless `LIBCXX_TARGET_TRIPLE` is specified, or unless we query what the compiler's default target is, which only is supported by clang), but can be chosen manually via `LIBCXX_TARGET_INFO`.
This chooses mingw style lib naming, and uses `-nostdlibc++` instead of `-nodefaultlib -nostdlib` (as the latter requires specifying a lot of details manually - this is done in the cmake config though).
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D97294
Files:
libcxx/utils/libcxx/test/config.py
libcxx/utils/libcxx/test/target_info.py
Index: libcxx/utils/libcxx/test/target_info.py
===================================================================
--- libcxx/utils/libcxx/test/target_info.py
+++ libcxx/utils/libcxx/test/target_info.py
@@ -27,6 +27,9 @@
def is_windows(self):
return self.platform() == 'win32'
+ def is_mingw(self):
+ return False
+
def is_darwin(self):
return self.platform() == 'darwin'
@@ -184,6 +187,13 @@
def __init__(self, full_config):
super(WindowsLocalTI, self).__init__(full_config)
+class MingwLocalTI(WindowsLocalTI):
+ def __init__(self, full_config):
+ super(MingwLocalTI, self).__init__(full_config)
+
+ def is_mingw(self):
+ return True
+
def make_target_info(full_config):
default = "libcxx.test.target_info.LocalTI"
info_str = full_config.get_lit_conf('target_info', default)
Index: libcxx/utils/libcxx/test/config.py
===================================================================
--- libcxx/utils/libcxx/test/config.py
+++ libcxx/utils/libcxx/test/config.py
@@ -109,7 +109,7 @@
def make_static_lib_name(self, name):
"""Return the full filename for the specified library name"""
- if self.target_info.is_windows():
+ if self.target_info.is_windows() and not self.target_info.is_mingw():
assert name == 'c++' # Only allow libc++ to use this function for now.
return 'lib' + name + '.lib'
else:
@@ -382,9 +382,12 @@
# Configure libraries
if self.cxx_stdlib_under_test == 'libc++':
- self.cxx.link_flags += ['-nodefaultlibs']
+ if self.target_info.is_mingw():
+ self.cxx.link_flags += ['-nostdlib++']
+ else:
+ self.cxx.link_flags += ['-nodefaultlibs']
# FIXME: Handle MSVCRT as part of the ABI library handling.
- if self.target_info.is_windows():
+ if self.target_info.is_windows() and not self.target_info.is_mingw():
self.cxx.link_flags += ['-nostdlib']
self.configure_link_flags_cxx_library()
self.configure_link_flags_abi_library()
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D97294.325782.patch
Type: text/x-patch
Size: 2157 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20210223/0e89bd97/attachment.bin>
More information about the libcxx-commits
mailing list