Commit Graph

1773 Commits

Author SHA1 Message Date
Landon Fuller
daa97e0079 Adopt suggested 'GenericUnix' toolchain class name. 2015-12-04 17:30:42 -07:00
Landon Fuller
83b706df8a Merge branch 'master' into landonf/freebsd-patchset-1 2015-12-04 17:11:54 -07:00
Dmitri Gribenko
a3c92e1b0d Remove build options for conditionally enabling targets
* We don't have a use-case for this.

* Swift, like Clang, is fundamentally a cross-compiler, and there is no
  known reason to artificially limit it.
2015-12-04 16:04:35 -08:00
Landon Fuller
49ba19f8c3 Fix namespace/#endif tokens lost in merge. 2015-12-04 14:29:03 -07:00
Landon Fuller
0aeef6fec3 Merge branch 'master' into landonf/freebsd-patchset-1 2015-12-04 14:22:28 -07:00
Landon Fuller
d7721781bc Unify the identical Linux/FreeBSD definitions.
When these diverge, we can use the Unix toolchain as
a common baseclass for both.
2015-12-04 14:14:02 -07:00
Jordan Rose
5a54c7ef21 [Driver] Now that we set DYLD_LIBRARY_PATH, stop passing -L to the frontend.
...again, specifically for interpreter jobs. There's no point in the frontend
repeating work that the dynamic linker can do itself.
2015-12-04 12:18:48 -08:00
Jordan Rose
4f9367041f [Driver] Always use the runtime resource library path for DYLD_LIBRARY_PATH.
...when interpreting. Otherwise, the script may depend on library X, which
depends on library Y, where library Y is a standard Swift library, located
in lib/swift/$PLATFORM/.

Finishes rdar://problem/23588774
2015-12-04 12:18:48 -08:00
Jordan Rose
16a647249d [Driver] Actually set extra environment variables in single-command mode.
Implementing this for the general case either requires duplicating the
existing environment, or modifying TaskQueue to support "extra environment"
settings. Since we don't actually have any use cases for this yet, I'm
leaving it unimplemented for now.

Rest of rdar://problem/23588774
2015-12-04 12:18:47 -08:00
Jordan Rose
8021ed0873 [Driver] Set [DY]LD_LIBRARY_PATH when building an interpreter job.
That's DYLD_LIBRARY_PATH on OS X and LD_LIBRARY_PATH on Linux for -L,
and DYLD_FRAMEWORK_PATH on OS X for -F.

Note that this commit doesn't actually include the setenv calls yet, so an
end-to-end test is coming in the next commit.

Part of rdar://problem/23588774
2015-12-04 12:18:47 -08:00
Jordan Rose
528298c12b [Driver] Add the notion of "extra environment variables" to Jobs.
This is groundwork for setting [DY]LD_LIBRARY_PATH ahead of time when
invoking the interpreter, which is rdar://problem/23588774. The next
commit will set up the appropriate variable and use -driver-print-jobs
to test it; the following commit will apply the environment variable
when running a job.
2015-12-04 12:18:46 -08:00
Jordan Rose
13470ae19d [Driver] Replace a std::pair with a struct in Job construction.
No functionality change. Groundwork for setting [DY]LD_LIBRARY_PATH ahead
of time when invoking the interpreter, which is rdar://problem/23588774.
2015-12-04 12:18:46 -08:00
Jordan Rose
6d9b5cb8ed [Driver] Factor interpret-script mode out into a separate Action.
This makes it easier to make interpreter modes behave differently from
compilation modes. Obviously that's a trade-off, since the two modes also
share plenty, but given how few of the existing CompileJobAction checks had
to be modified for the new InterpretJobAction, I think this is the right
way to go.

Groundwork for setting [DY]LD_LIBRARY_PATH ahead of time when invoking the
interpreter, which is rdar://problem/23588774.
2015-12-04 12:18:45 -08:00
Landon Fuller
a7ec794287 Add basic build system and Driver support for FreeBSD targets/hosts. 2015-12-04 12:24:46 -07:00
Nadav Rotem
1a57bd7ad0 Merge pull request #119 from jonnyla/patch-1
Fix grammar and a typo mistakes
2015-12-04 06:58:07 -08:00
jonnyla
20f7d0947e Improved grammar
removed unnecessary 'so'
2015-12-03 21:58:19 -08:00
Brian Dunlay
f8fb44273c Fix Typos
Arguments for this pr are appropriately unnecessary.
2015-12-03 15:55:09 -08:00
Dmitri Gribenko
4324e7c903 Remove conditional compilation of tvOS 2015-12-01 14:43:45 -07:00
David Farler
7546d586b2 Revert "Add -linker-path frontend option to choose the linker"
This reverts commit 58cfa27eb5.

We require at least clang-3.6 for C++14 build support but
Ubuntu 14.04's clang-3.6 package does not lay down the symlink
/usr/bin/clang++ -> /usr/bin/clang++-3.6. We will require a
clang++ alternatives entry or symlink when building for these
systems (see README.md).
2015-11-16 17:10:40 -08:00
David Farler
58cfa27eb5 Add -linker-path frontend option to choose the linker
In most Linux distributions, installing a clang package other than the
default unversioned one will not install a symlink from /usr/bin/clang++
-> /usr/bin/clang++-N-M, which can break builds with a not so great
diagnostic (a separate problem).

"ld" and "clang++" are hard-coded in the link job actions, so provide a
frontend flag, -linker-path, as a customization point for these.

rdar://problem/23537079
2015-11-13 14:22:55 -08:00
Jordan Rose
877b51dfbd [Driver] If lib/arc/ isn't present next to Swift, look next to Xcode's Clang.
Deploying to older OSs requires linking in a compatibility library called
"arclite", but this library isn't open source and won't be distributed with
our open source downloads. Fall back to the version in Xcode.

The next step is to remove the local symlink used in builds, but I wanted to
handle that separately.

rdar://problem/23421436
2015-11-06 18:46:34 -08:00
Jordan Rose
c403aedbb1 [Driver] Use Swift's shim for std::is_trivially_copyable.
Our libstdc++ doesn't have it yet.

rdar://problem/23387657
2015-11-03 19:38:41 -08:00
Jordan Rose
9b55933e02 Check to see if any source files were modified during the build.
For now, just error out at the end of the build if something was modified,
forcing a rebuild. The incremental logic should get that rebuild right.
We could automatically restart the rebuild, but that could lead to infinite
compilation if the user continues to edit an important file.
2015-11-03 17:53:32 -08:00
Jordan Rose
35e109140d [Driver] Rebuild a file if its primary output is missing.
(But don't bother to rebuild any of its dependents.)

rdar://problem/23040999

Swift SVN r32933
2015-10-28 01:13:50 +00:00
Michael Gottesman
c03adef030 Fix "Adjust to InputArgList being a move-only type"
DerivedArgList has a pointer to the InputArgList it came from, so we can't
just std::move it around. Put most of the driver back the way it was, with
small changes to clarify ownership.

Swift SVN r31811
2015-09-09 04:37:29 +00:00
Michael Gottesman
d6cdce1013 Adjust to InputArgList being a move-only type
Swift SVN r31800
2015-09-09 04:37:17 +00:00
Argyrios Kyrtzidis
1d5e9e0acd [FixCode] Introduce '-fixit-all' option that, when -fixit-code is enabled, applies all fixits from diagnostics without any filtering.
Swift SVN r31772
2015-09-08 18:30:49 +00:00
Adrian Prantl
ee13581192 Unconditionally use SWIFT_EXECUTABLE_NAME for ModuleWrap invocations.
Swift SVN r31675
2015-09-03 23:27:32 +00:00
Adrian Prantl
0de0d43773 Introduce a -modulewrap driver action that wraps a (merged) .swiftmodule
inside a swift ast section in an object file so it can be passed to the
linker. The driver automatically wraps merged swiftmodules iff the target
is ELF.

rdar://problem/22407666

Swift SVN r31641
2015-09-02 21:56:25 +00:00
Jordan Rose
4f87158d86 [Driver] Fix string comparison that was accidentally a pointer comparison.
Caught by the ASan bot! And also a compiler warning that I missed. Oops.

Swift SVN r31570
2015-08-29 01:38:48 +00:00
Jordan Rose
213716f540 [Driver] Make relative path search cheaper on non-Darwin.
...and fix the test to not test toolchain-based search on non-Darwin.

Swift SVN r31565
2015-08-29 00:13:05 +00:00
Jordan Rose
ff07c90af0 [Driver] Fix comments. NFC.
Swift SVN r31564
2015-08-28 23:19:08 +00:00
Jordan Rose
de2ecbb80e [Driver] Remove the notion of Tools, turn ToolChain into an Action visitor.
The "Tool" abstraction wasn't buying us enough to deserve the added
complexity. Now a ToolChain turns Actions into Jobs, and every helper
tool is searched for relative to Swift first. Much simpler.

Swift SVN r31563
2015-08-28 23:12:33 +00:00
Jordan Rose
68048a2b05 [Driver] Linux: if you /do/ use -sdk, make sure it's used for linking too.
Swift SVN r31554
2015-08-28 15:35:18 +00:00
Jordan Rose
7c5d0f7a89 Revert "On Linux, "/" is a perfectly reasonable default SDK."
This reverts r31534 and r31541. Apparently this already worked fine,
so just leave things the way they were.

Swift SVN r31547
2015-08-27 22:04:20 +00:00
Jordan Rose
2b325a1091 [Driver] Remove some essentially-unused helpers from ToolChain. NFC.
Swift SVN r31546
2015-08-27 22:04:16 +00:00
Jordan Rose
c1ab32e7f2 On Linux, "/" is a perfectly reasonable default SDK.
Swift SVN r31534
2015-08-27 18:47:24 +00:00
Jordan Rose
59ddbef71d [Driver] Don't pass swiftmodule files directly through to the linker.
...beacuse if we don't think we need a module, we'll just drop the files
on the floor. Better to error about them being unused.

Swift SVN r31377
2015-08-21 02:31:02 +00:00
Jordan Rose
208f647bd5 [Driver] Be more explicit about the inputs to the merge-module action.
Previously we treated this the same as the inputs to the linker, but this
was problematic for a few reasons:
- Backend jobs don't produce
- .o inputs never produce .swiftmodule files (obviously).

So now we:
- explicitly track what can produce a swiftmodule
- don't run module merging if there's nothing to merge
- allow linking without a swiftmodule even under -g

Which gets us closer to being able to run the entire test suite with -g.

rdar://problem/22332569

Swift SVN r31376
2015-08-21 02:30:52 +00:00
Jordan Rose
298124a272 [Driver] Emit valid YAML. Use spaces instead of tabs.
rdar://problem/21753365

Swift SVN r31238
2015-08-14 01:32:56 +00:00
Jordan Rose
f5b1efb354 Move client-affecting configuration options into a generated Config.h.
This way they can be used from other projects, like LLDB. The downside
is we now have to make sure the header is included consistently in all
the places we care about, but I think in practice that won't be a problem,
especially not with tests.

rdar://problem/22240127

Swift SVN r31173
2015-08-12 17:50:13 +00:00
Jordan Rose
1473828eac [Driver] Don't crash on a bad swiftdeps file.
Normally we don't get here because the build record will be out of date,
but if we don't actually rebuild all the files we'll crash on the /next/
build.

Swift SVN r30889
2015-07-31 23:21:34 +00:00
Jordan Rose
963c442b44 [Driver] Add support for interface-hash.
Dependents of modified files are no longer rebuilt by default, only if it turns
out that file's interface has changed. There is a flag
-driver-always-rebuild-dependents to override this, but we expect it to only be
used for testing. (Most of the existing dependency tests pick up this option;
the two new tests have "interface-hash" in the name.)

This is the second half of ChrisW's work on interface hashing.

rdar://problem/15352929

Swift SVN r30478
2015-07-22 00:14:01 +00:00
Jordan Rose
fbb8d3f9a8 Add "interface hash" for improved incremental builds.
Compute the hash of all interface tokens when parsing; write the
interface hash to the swiftdeps file, or if the -dump-interface-hash
option is passed to the frontend. This hash will be used in incremental
mode to determine whether a file's interface has changed, and therefore
whether dependent files need to be rebuilt in response to the change.

Committed on ChrisW's behalf while he gets his setup unborked.

rdar://problem/15352929

Swift SVN r30477
2015-07-22 00:13:54 +00:00
Devin Coughlin
ea18bc0c0b Rename -dump-trc option to -dump-type-refinement-contexts
As Jordan notes, 'TRC' is not a commonly-known acronym for most Swift compiler developers.

Swift SVN r30414
2015-07-20 21:47:49 +00:00
Devin Coughlin
b427975c39 Add a -dump-trc frontend option to print the type refinement context hierarchy
This is useful for debugging and testing.

Swift SVN r30383
2015-07-19 05:53:27 +00:00
Jordan Rose
2ad0ffd6e4 Dependencies: teach the Driver about the new member-based dependencies.
If file A extends a common type (say, Dictionary), but only adds new members,
other files using Dictionary don't need to be recompiled if they definitively
don't use those members. That should be working now.

Swift SVN r30286
2015-07-16 23:36:33 +00:00
Jordan Rose
c79952389c Dependencies: rename entries in the .swiftdeps file to something sensible.
- (depends|provides)-top-level for top-level names.
- (depends|provides)-nominal for access into nominal types.
- (depends|provides)-dynamic-lookup for @objc members available on AnyObject.
- depends-external for cross-module file-based dependencies.

No functionality change.

Swift SVN r30283
2015-07-16 23:36:26 +00:00
Jordan Rose
96c19e5473 [Driver] Don't crash when the .swiftdeps file formats change.
The parsing code should really be more forgiving anyway, but there's no reason
to even try to read the swiftdeps files if we're rebuilding everything anyway.

Swift SVN r30281
2015-07-16 23:36:13 +00:00
Slava Pestov
d072199251 Driver: getToolChain()'s DarwinArchName parameter was never set, remove it together with some associated dead code, NFC
Swift SVN r30255
2015-07-16 07:08:39 +00:00