This redoes the default mode that ccc runs in w.r.t. using clang. Now
ccc defaults to always using clang for any task clang can
handle. However, the following options exist to tweak this behavior:
-ccc-no-clang: Don't use clang at all for compilation (still used for
static analysis).
-ccc-no-clang-cxx: Don't use clang for C++ and Objective-C++ inputs.
-ccc-no-clang-cpp: Don't use clang as a preprocessor.
-ccc-clang-archs <archs>: If present, only use clang for the given
comma separated list of architectures. This only works on Darwin for
now.
Note that all -ccc options must be first on the command line.
llvm-svn: 63346
- However, these last ones do not actually work; the issue is that
they translate to batches of options and need to be reparsed. For
now we just give an unsupported error on them.
llvm-svn: 62872
--assert, --classpath).
- Requires providing some option parameters to over-ride rendering in
order to match gcc. There may be a cleaner way to do this (probably
by introducing a new option type for long JoinedOrSeparate forms).
llvm-svn: 62825
- Unlike groups (which gather distinct but related options), aliases
are for options like '--all-warnings' which are effectively treated
like some other option ('-Wall') both in the driver logic and when
passing to tools.
llvm-svn: 62820
- Toolchain is responsible for providing list of prefixes to search.
- Implement -print-file-name=xxx and -print-prog-name=xxx driver options.
llvm-svn: 62659
- For now forces generation of plist files, need to think about the
right interface.
- Changed -fsyntax-only mode to be its own phase (more consistent).
- Add -WA, for passing options verbatim to analyzer.
llvm-svn: 62649
- This is a hack to allow the Darwin linker to get -final_output when
doing universal builds; the mechanism should be generalized.
- Handle multiple redundant -arch arguments correctly.
- Forward -arch_multiple and -final_output to gcc when necessary.
- Simplified implementation of derived gcc tools.
llvm-svn: 62618
- Add Darwin_X86_CC1Tool which is shared by Darwin/x86/Compile and
Darwin/x86/Preprocess tools.
- Minor bug fixes (CmpDriver exit code, -x cpp-output handling, some
linker argument translation).
llvm-svn: 62551
- This doesn't follow normal installation procedure of python
code, but no sense trying too hard since ccc will be moved to
C++.
- Entry point is now tools/ccc.
llvm-svn: 62517
translation.
- As is my general strategy, this is initially pedantically
compatible with gcc and can be cleaned up later. So, for example,
we still pass -static to collect2 4 times if you say '-mkernel
-fapple-kext'. ;)
llvm-svn: 62353
This requires some hackery, as gcc's PCH mechanism changes behavior,
whereas while PTH is simply a cache. Notably:
- Automatically cause clang to load a .pth file if we find one that
matches a command line -include argument (similar to how gcc
looks for .gch files).
- When generating precompiled headers, translate the suffix from .gch
to .pth (so we do not conflict with actual gcc PCH files).
- When generating precompiled headers, copy the input header to the
same location as the output PTH file. This is necessary because gcc
supports -include xxx.h even if xxx.h doesn't exist, but for clang
we need to actually have the contents of this file available.
llvm-svn: 62246
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
- 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
- --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
- 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
- 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
- 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
- Also, fix bug in MultipleValuesOption which was accepting joined
arguments.
- Add ArgList::getArgs, provides iterator over all arg instances for a
given option.
- Option definition is very much in need of cleaning...
llvm-svn: 62054
perform them.
- A ToolChain is a coherent set of tools use in a compilation
process. The idea is that a ToolChain holds roughly the information
(specs, search paths, etc.) that is in a single gcc binary.
- The default ToolChain is selected by the host and will generally
correspond to what the default system compiler would do. However,
this can be over-riden for a variety of purposes, for example the
by the driver driver or for testing.
llvm-svn: 62021
- For use by the driver in places where the host alters driver
behavior (for example, running as a driver driver on darwin).
- Allow user override for testing purposes.
llvm-svn: 61967
"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
- 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
of the details of HTML rendering of form parameters, and also us with the
ability to delegate other actions (such as in the filling in of default values)
to specific parameter objects.
llvm-svn: 56851
Give more meaningful error messages / fail gracefully on bad form
input or SMTP errors.
Use button for Report Bug link (where available).
llvm-svn: 56420
- Update for scan-build table change.
- Add --auto-reload option (for development, avoids need to restart
server).
- Always send Last-Modified, with a reasonable value for dynamic content.
llvm-svn: 56409