Revert use of Clang config files

This reverts commit 49db4a3a15,
9f1f0104f1,
4f95c14adf,
c34dc64028,
570fdcd251,
4bff0298c5 and
6939aee0c0.

When relying on Clang config files, two issues appeared:

- Running the compiler-rt tests fails, because the compiler-rt tests
  disable any default config files, breaking the compiler
  in this case:
  https://github.com/llvm/llvm-project/blob/llvmorg-19.1.1/compiler-rt/test/lit.common.cfg.py#L983

- Wine fails to build using llvm-mingw as cross compiler, because
  Wine adds the --no-default-config flag to Clang while compiling,
  if supported:
  https://gitlab.winehq.org/wine/wine/-/blob/wine-9.19/configure.ac?ref_type=tags#L866-868
  This causes llvm-mingw to omit the -rtlib=compiler-rt option
  (specified in a config file), making the compiler look for libgcc
  instead. Doing a check to see that linking succeeds doesn't necessarily
  help here - such a check already exists, but it tests linking with
  -nostdlib -nodefaultlibs:
  https://gitlab.winehq.org/wine/wine/-/blob/wine-9.19/aclocal.m4?ref_type=tags#L193-L206
This commit is contained in:
Martin Storsjö committed 2024-10-14 16:35:17 +03:00
1 parent 49db4a3a15
commit e0964ce24c
14 files changed
+119 -31

No files matched your search

+4 -4
View File
@@ -63,7 +63,7 @@ int _tmain(int argc, TCHAR *argv[]) {
if (sep)
*sep = '\0';
TCHAR *dash = _tcsrchr(cmd_exe, '-');
int has_target = 0;
const TCHAR *target = NULL;
if (dash) {
*dash = '\0';
const TCHAR *cmd_exe_suffix = dash + 1;
@@ -76,15 +76,14 @@ int _tmain(int argc, TCHAR *argv[]) {
!_tcscmp(cmd_exe_suffix, _T("cc")) ||
!_tcscmp(cmd_exe_suffix, _T("c99")) ||
!_tcscmp(cmd_exe_suffix, _T("c11"))) {
has_target = 1;
target = cmd_exe;
}
}
const TCHAR *target = NULL;
#ifdef _WIN32
// On Windows, we want to set our default target even if no target
// was found in cmd_exe, as we want to support running with a foreign
// clang-scan-deps-real.exe binary, that could have any default.
if (!has_target)
if (!target)
target = _T(DEFAULT_TARGET);
#endif
@@ -93,6 +92,7 @@ int _tmain(int argc, TCHAR *argv[]) {
// -target after cmd_exe.
exec_argv[arg++] = _T("-target");
exec_argv[arg++] = target;
exec_argv[arg++] = _T("-stdlib=libc++");
}
}