22 Commits

Author SHA1 Message Date
Joseph Huber
f2a87b07e7
[OpenMP] Use loaded offloading toolchains to add libraries (#87108)
Summary:
We want to pass these GPU libraries by default if a certain offloading
toolchain is loaded for OpenMP. Previously I parsed this from the
arguments because it's only available in the compilation. This doesn't
really work for `native` and it's extra effort, so this patch just
passes in the `Compilation` as an extr argument and uses that. Tests
should be unaffected.
2024-04-01 17:26:20 -05:00
Brad Smith
81617f8500
[Driver][RISCV] Forward --no-relax option to linker for RISC-V on *BS… (#83216)
…D, Fuchsia and Haiku

Based on https://github.com/llvm/llvm-project/pull/76432
2024-03-04 19:44:15 -05:00
Brad Smith
d5f77e112e
[Driver] Remove duplicate -r flag usage when linking (#82715)
Bug #82010
2024-03-02 21:33:59 -05:00
Michael Klemm
17feb330aa
[flang][Driver] Let the linker fail on multiple definitions of main() (#73124)
The flang driver was silently ignoring the `main()` function in
`Fortran_main.a` for entry into the Fortran program unit if an external
`main()` as supplied (e.g., via cross-language linkage with Fortran and
C/C++). This PR fixes this by making sure that the linker always pulls
in the `main()` definition from `Fortran_main.a` and consequently fails
due to multiple definitions of the same symbol if another object file
also has a definition of `main()`.
2023-11-28 14:20:30 -06:00
David Truby
0bc7cd4d51
[flang] Add runtimes using --dependent-lib on MSVC targets (#72519)
This patch uses the added --dependent-lib support to add the relevant
runtimes on MSVC targets as `/DEFAULTLIB:` sections in the object file
rather than on the link line. This should help CMake support for flang
on Windows.

Fixes #63741 
Fixes #68017
2023-11-23 14:19:57 +00:00
Brad Smith
4d5a8ccf25
[Driver] Add LTO support for Haiku and OpenBSD (#72047) 2023-11-13 02:42:14 -05:00
David Truby
cf1e3420b0
[flang][windows] Add option to link against specific MSVC CRT (#70833)
Currently flang's runtime libraries are only built for the specific CRT
that LLVM itself was built against. This patch adds the cmake logic for
building a separate runtime for each CRT configuration and adds a flag
for selecting a CRT configuration to link against.
2023-11-10 16:13:49 +00:00
Brad Smith
760658c118
[Driver] Silence stdlib warning when linking C on *BSD / Solaris / Haiku (#70434)
Same as 12b87f6ef720080fab1e2d48ca2d8c5ba478ee5d and the addition to Gnu.
2023-11-01 04:28:55 -04:00
Brad Smith
a8e0acf660 [Driver][NFC] Fix a typo in the function name 2023-10-27 22:10:05 -04:00
Brad Smith
c149ff3d37
[Driver] Link Flang runtime on FreeBSD, NetBSD, OpenBSD, DragonFly and Haiku (#69817) 2023-10-27 04:43:19 -04:00
Brad Smith
3ea0022bef
[Driver][NFC] Make use of auto (#70400) 2023-10-26 22:30:14 -04:00
Fangrui Song
993e839480
[Driver] Don't pass -Z to ld for ELF platforms (#69120)
-Z is an Apple ld64 option. ELF linkers don't recognize -Z, except
OpenBSD which patched GNU ld to add -Z for zmagic (seems unused)

> -Z Produce 'Standard' executables, disables Writable XOR Executable
features in resulting binaries.

Some `ToolChain`s have -Z due to copy-and-paste mistakes.
2023-10-15 19:12:35 -07:00
Brad Smith
8da1e3dd24
[Driver] Have -rdynamic be a no-op on Haiku (#67872)
Do the same as the Haiku GCC patches.

46afdec057
2023-10-12 18:05:49 -04:00
Fangrui Song
4eecfda50a [Driver] Rename AddAllArgs (initialization list overload) to addAllArgs
Most ArgList member functions use the modern functionName style while some like
AddAllArgs use the legacy FunctionName style. These uses are mostly linker
options which have been modified recently to fix duplicate -e issues, so just
update these call sites.
2023-10-10 21:31:18 -07:00
Brad Smith
8ea7430200
[Driver] Implement ToolChain on Haiku (#66038)
Instead of passing everything off to GCC, add a ToolChain for Haiku to allow Clang to properly link things on its own.

Co-authored-by: X512 <danger_mail@list.ru>
Co-authored-by: David Karoly <david.karoly@outlook.com>
2023-09-22 18:17:44 -04:00
Brad Smith
a3ba9d697b [Driver] Fixes for header / library paths on Haiku
Some fixes for the header / library paths..

- Use concat macro for all paths
- Correct the C++ header paths
- Add library paths

Differential Revision: https://reviews.llvm.org/D159414
2023-09-08 21:34:31 -04:00
Brad Smith
aa2c701b5d [Driver] move Haiku header search path management to the driver
Also while here sync the header paths with the Haiku GCC configuration.

Added: /boot/system/develop/headers/gnu
Removed: /boot/system/develop/headers/os/arch

https://github.com/haikuports/haikuports/tree/master/sys-devel/gcc/patches

Reviewed By: nielx

Differential Revision: https://reviews.llvm.org/D157767
2023-08-15 19:58:40 -04:00
Fangrui Song
74933efeb6 [Driver] Detect Debian hack g++-multiarch-incdir.diff to simplify addLibStdCXXIncludePaths call sites 2021-03-21 17:33:31 -07:00
Chandler Carruth
2946cd7010 Update the file headers across all of the LLVM projects in the monorepo
to reflect the new license.

We understand that people may be surprised that we're moving the header
entirely to discuss the new license. We checked this carefully with the
Foundation's lawyer and we believe this is the correct approach.

Essentially, all code in the project is now made available by the LLVM
project under our new license, so you will see that the license headers
include that license only. Some of our contributors have contributed
code under our old license, and accordingly, we have retained a copy of
our old license notice in the top-level files in each project and
repository.

llvm-svn: 351636
2019-01-19 08:50:56 +00:00
Petr Hosek
8d612149db [Driver] Allow drivers to add multiple libc++ include paths
This allows toolchain drivers to add multiple libc++ include paths akin
to libstdc++. This is useful in multiarch setup when some headers might
be in target specific include directory. There should be no functional
change.

Differential Revision: https://reviews.llvm.org/D45422

llvm-svn: 329748
2018-04-10 19:55:55 +00:00
Konstantin Zhuravlyov
9661f40c93 Driver/ToolChains: Remove extra semicolons. NFC
llvm-svn: 297329
2017-03-09 00:14:57 +00:00
David L. Jones
f561abab56 [Driver] Consolidate tools and toolchains by target platform. (NFC)
Summary:
(This is a move-only refactoring patch. There are no functionality changes.)

This patch splits apart the Clang driver's tool and toolchain implementation
files. Each target platform toolchain is moved to its own file, along with the
closest-related tools. Each target platform toolchain has separate headers and
implementation files, so the hierarchy of classes is unchanged.

There are some remaining shared free functions, mostly from Tools.cpp. Several
of these move to their own architecture-specific files, similar to r296056. Some
of them are only used by a single target platform; since the tools and
toolchains are now together, some helpers now live in a platform-specific file.
The balance are helpers related to manipulating argument lists, so they are now
in a new file pair, CommonArgs.h and .cpp.

I've tried to cluster the code logically, which is fairly straightforward for
most of the target platforms and shared architectures. I think I've made
reasonable choices for these, as well as the various shared helpers; but of
course, I'm happy to hear feedback in the review.

There are some particular things I don't like about this patch, but haven't been
able to find a better overall solution. The first is the proliferation of files:
there are several files that are tiny because the toolchain is not very
different from its base (usually the Gnu tools/toolchain). I think this is
mostly a reflection of the true complexity, though, so it may not be "fixable"
in any reasonable sense. The second thing I don't like are the includes like
"../Something.h". I've avoided this largely by clustering into the current file
structure. However, a few of these includes remain, and in those cases it
doesn't make sense to me to sink an existing file any deeper.

Reviewers: rsmith, mehdi_amini, compnerd, rnk, javed.absar

Subscribers: emaste, jfb, danalbert, srhines, dschuff, jyknight, nemanjai, nhaehnle, mgorny, cfe-commits

Differential Revision: https://reviews.llvm.org/D30372

llvm-svn: 297250
2017-03-08 01:02:16 +00:00