Commit Graph

27 Commits

Author SHA1 Message Date
Daniel Dunbar e725ff1263 ccc: Darwin/Compile: Define __private_extern__ when building c++.
llvm-svn: 62200
2009-01-14 00:06:14 +00:00
Daniel Dunbar 3ff18a5119 ccc: Darwin: Implement some important general argument translations
for the Darwin tool chain.
 - Ideally we would localize these to tool specific argument
   processing but for now this matches gcc closely.

llvm-svn: 62181
2009-01-13 21:07:43 +00:00
Daniel Dunbar 28cffd3dbc ccc: Allow internal tool chain specific argument translation.
- Pulled -Xarch processing into this.

 - Get rid of manual creation of forwarding arg array.

 - Use Darwin/CC1 instead of generic GCC cc1 on X86.

llvm-svn: 62172
2009-01-13 18:51:26 +00:00
Daniel Dunbar eb83389b30 ccc: Darwin/Link also runs dsymutil in one very particular situation.
llvm-svn: 62154
2009-01-13 06:44:28 +00:00
Daniel Dunbar fc8d8effb6 ccc: Bug fix and gcc compatibility tweak.
- --gstabs only goes to Darwin/Assembler when dealing with an
     assembly file from the command line.

 - Relative placement of -o option for cc1 moves depending on
   -fsyntax-only/-S, how quaint.

llvm-svn: 62152
2009-01-13 06:25:31 +00:00
Daniel Dunbar 34bafa4a40 ccc: Add option groups.
- Simple mechanism for group together sets of options so the driver
   can efficiently deal with them as a group (i.e., for forwarding -i*
   to cc1).

 - Use to finish off the major missing pieces of Darwin/CC1 support.

llvm-svn: 62149
2009-01-13 05:54:38 +00:00
Daniel Dunbar fab583b7c6 ccc: Darwin/CC1: Hardcode (for now) some -m options to match gcc.
llvm-svn: 62146
2009-01-13 04:51:51 +00:00
Daniel Dunbar 260c84657f ccc: Darwin/CC1: Be bug compatible with gcc in a corner case.
llvm-svn: 62131
2009-01-13 01:04:40 +00:00
Daniel Dunbar dd0efa8aad ccc: Bug fix, output can be NULL.
llvm-svn: 62108
2009-01-12 22:19:59 +00:00
Daniel Dunbar f538cfa254 ccc: Even more Darwin/cc1 argument translation support.
llvm-svn: 62105
2009-01-12 21:44:10 +00:00
Daniel Dunbar b1a40a6a58 ccc: (Darwin) More argument translation for Darwin/Compile tool.
llvm-svn: 62093
2009-01-12 18:51:02 +00:00
Daniel Dunbar d0b0eca12a ccc: (Darwin) More argument translation for Darwin/Compile tool.
llvm-svn: 62089
2009-01-12 17:53:19 +00:00
Daniel Dunbar 999c85542a ccc: (Darwin) Start implementing argument translation for
Darwin/Compile tool.

llvm-svn: 62085
2009-01-12 09:23:15 +00:00
Daniel Dunbar e42e520a57 ccc: (Darwin) Move path resolution into ToolChain.
llvm-svn: 62082
2009-01-12 07:45:49 +00:00
Daniel Dunbar 17bbcfd5a0 ccc: Implement the rest of Darwin/Assembler argument translation.
llvm-svn: 62081
2009-01-12 07:40:25 +00:00
Daniel Dunbar c11d8d4a09 ccc: Implement macosx-version-min conditions (including a bug fix).
llvm-svn: 62079
2009-01-12 05:02:38 +00:00
Daniel Dunbar e84d6ed8f8 ccc: Generalize Darwin/Link tool based on Darwin version.
llvm-svn: 62078
2009-01-12 04:21:12 +00:00
Daniel Dunbar 02cd7e4070 ccc: Support arguments which behave like linker inputs.
- Support comma joined options which magically turn into multiple
   value arguments (e.g., -Wl,)

 - Split out separate Arg::render routine for when an argument is
   being rendered as an input (as opposed to in its original form).

 - Add option flag for options which should be rendered without the
   option when they are used as an input (e.g., -Xlinker or -o).

 - Support -weak-l..., -weak_framework, and -weak_library.

llvm-svn: 62075
2009-01-12 03:33:58 +00:00
Daniel Dunbar 027c5fbb6d ccc: (Darwin) Pass -ObjC to linker if -ObjC, -ObjC++ or -fobjc is
present.

llvm-svn: 62070
2009-01-12 02:24:21 +00:00
Daniel Dunbar fd22768b08 ccc: Add fairly complete argument translation for Darwin link step.
- Some things are still hardcoded, and macosx-version-min comparison
   isn't implemented, but otherwise this very closely matches gcc.

 - The one exception is that arguments (like -framework or -Wl,) which are
   treated as linker inputs instead of options are not being
   forwarded yet.

llvm-svn: 62059
2009-01-11 23:13:15 +00:00
Daniel Dunbar eacf5b174d ccc: Add generic assembler & linker tools which effectively shell out
to gcc.

llvm-svn: 62020
2009-01-10 02:00:04 +00:00
Daniel Dunbar 61f97e290a ccc: Get host information via Driver methods.
llvm-svn: 62011
2009-01-09 22:21:24 +00:00
Daniel Dunbar f8b5992b80 ccc: Make proper synthetic arguments in places we have to construct
"fake" options, allowing Tools to be oblivious to whether an argument
is real or synthetic. This kills off DerivedArg & a number of FIXMEs.

llvm-svn: 61871
2009-01-07 18:54:26 +00:00
Daniel Dunbar 7792e90f83 ccc: Change Command to take list of strings for argv instead of Arg
instances; this just complicated things and doesn't seem to provide
any benefit.

llvm-svn: 61869
2009-01-07 18:40:45 +00:00
Daniel Dunbar d315a274aa ccc: Refactor so that all accesses to actual input strings go through
the ArgList.

llvm-svn: 61844
2009-01-07 01:29:28 +00:00
Daniel Dunbar 85a868f8cc ccc: Track last actual argument instance for each option & change
driver to lookup this way instead of manually scanning arguments in
multiple places.

llvm-svn: 61793
2009-01-06 06:12:13 +00:00
Daniel Dunbar 6e01600398 Add prototype ccc rewrite.
- Entry point is tools/ccc/xcc until we are a functional replacement
   for ccc.

This is highly experimental (FIXME/LOC ratio of 3.4%), quite crufty,
and barely usable (and then only on my specific Darwin). However, many
of the right ideas are present, and it already fixes a number of
things gcc gets wrong.

The major missing component is argument translation for tools
(translating driver arguments into cc1/ld/as/etc. arguments). This is
a large part of the driver functionality and will probably double the
LOC, but my hope is that the current architecture is relatively
stable.

Documentation & motivation to follow soon...

llvm-svn: 61739
2009-01-05 19:53:30 +00:00