Commit Graph

1129 Commits

Author SHA1 Message Date
Connor Wakamo
3a1810336e [frontend] Implement support for emitting modules with the integrated frontend.
Added support for the -emit-module and -module-output-path options. -emit-module
and -module-output-path function similarly to -serialize-diagnostics and
-serialized-diagnostics-path: notably, -module-output-path implies -emit-module,
but -emit-module can be passed without -module-output-path and a default path
will be determined based on other inputs.

Added support for the -module-link-name option, which specifies the name of the
library to link against when importing the generated module.

Note that support for these options is only implemented in the integrated
frontend; driver-level support for these options is forthcoming.

Swift SVN r12301
2014-01-14 23:38:36 +00:00
Connor Wakamo
b0f27de6b8 [frontend] Move InputKind from CompilerInvocation to FrontendOptions, and move handling of -parse-as-library to ParseFrontendArgs().
Swift SVN r12174
2014-01-11 00:33:30 +00:00
Connor Wakamo
044be74855 [frontend] Move ParseStdlib from CompilerInvocation to FrontendOptions, and move handling of -parse-stdlib to ParseFrontendArgs().
Swift SVN r12173
2014-01-11 00:33:30 +00:00
Connor Wakamo
a35540be40 [frontend] Added CompilerInstance::getPrimarySourceFile().
During CompilerInstance::performParse(), set CompilerInstance::PrimarySourceFile if we create a SourceFile from a buffer whose ID matches the PrimaryBufferID.
This allows clients of CompilerInstance to get a SourceFile for the user-specified primary input.

Swift SVN r12156
2014-01-10 22:39:08 +00:00
Connor Wakamo
9f89b432b5 [frontend] Added CompilerInstance::PrimaryBufferID.
This maps a particular buffer ID to the PrimaryInput, which will (eventually) allow us to map a SourceFile to the PrimaryInput.

Swift SVN r12155
2014-01-10 22:39:07 +00:00
Connor Wakamo
6eb9a82465 [frontend] Switch CompilerInstance::MainBufferIndex to CompilerInstance::MainBufferID.
This matches how we will handle primary inputs.
This also fixes an issue where a file named main.swift may not be chosen as the main file if there were multiple inputs and it was replaced by an input buffer.

Swift SVN r12154
2014-01-10 22:39:07 +00:00
Connor Wakamo
c193138c33 [frontend] Added convenience accessors to determine if a SelectedInput is a filename or a buffer.
Swift SVN r12153
2014-01-10 22:39:06 +00:00
Connor Wakamo
18795f8293 [frontend] Switch from llvm::Optional to swift::Optional for FrontendOptions::PrimaryInput.
Swift SVN r12152
2014-01-10 22:39:06 +00:00
Connor Wakamo
8475eeaad3 [frontend] Make InputKind::Filename the default InputKind for a SelectedInput.
Nearly all uses of this will be to specify a filename, so make that the default.

Swift SVN r12149
2014-01-10 22:39:04 +00:00
Connor Wakamo
e9cc548765 [frontend] Added support in FrontendOptions for denoting the primary input.
When a primary input is specified, output will only be generated for that input. (If a primary input is not specified, output will be generated for the whole module.)
This commit only adds the storage for the primary input; the primary input is not yet honored by the frontend, nor is it possible to specify the primary input.

Swift SVN r12148
2014-01-10 22:39:04 +00:00
Connor Wakamo
d360c2d167 [frontend] Moved InputBuffers from CompilerInvocation to FrontendOptions.
Swift SVN r12147
2014-01-10 22:39:04 +00:00
Greg Parker
0e360cb26e Install stdlib into /usr/lib/swift/<OS name>/.
This reinstates r11411 with fixes for the autoconf+make build.


Swift SVN r11494
2013-12-20 01:01:35 +00:00
Connor Wakamo
39bb2bf2a2 [frontend] Added proper support for parsing -l and -framework.
Moved the responsibility for storing LinkLibraries from CompilerInvocation to the invocation’s IRGenOpts.
Moved the handling of -l and -framework into ParseIRGenArgs.

Swift SVN r11450
2013-12-18 23:42:51 +00:00
Connor Wakamo
41b0a59644 [frontend] Add an IRGenOptions to CompilerInvocation.
Swift SVN r11447
2013-12-18 23:42:47 +00:00
Chris Lattner
073974dca4 revert r11411, which completely broke the makefile build.
Swift SVN r11414
2013-12-18 04:33:58 +00:00
Greg Parker
9032632299 Install stdlib into /usr/lib/swift/<OS name>/.
Swift SVN r11411
2013-12-18 02:19:29 +00:00
Connor Wakamo
9861019cc5 [frontend] Add a member function to FrontendOptions which returns whether or not the RequestedAction has output.
Swift SVN r11393
2013-12-17 21:34:24 +00:00
Connor Wakamo
3705f018ac [frontend] Make -dump-parse explicitly set ParseOnly to true.
Also updated the comments in FrontendOptions::ActionType to indicate that only -dump-parse skips type-checking. (Previously, the comments implied that -parse also skipped type-checking, which is not the desired behavior.)

Swift SVN r11374
2013-12-17 02:43:39 +00:00
Connor Wakamo
2216a31de6 [frontend] Moved ParseOnly from CompilerInvocation to FrontendOptions.
Swift SVN r11373
2013-12-17 02:43:39 +00:00
Connor Wakamo
20e0d1c64e [frontend] Add support for parsing the action which the integrated frontend should perform.
Added an ActionType enum to FrontendOptions with the various actions that the integrated frontend will support, as well as a new RequestedAction member.
Added support for determining the user’s requested action in ParseFrontendArgs. (The integrated frontend does not yet honor this request; support for that is forthcoming.)

Swift SVN r11372
2013-12-17 02:43:27 +00:00
Connor Wakamo
40dfbc0bc8 [frontend] Add support for parsing ImmediateArgv.
These are not yet used, since the integrated frontend doesn’t yet support immediate mode, but they are ready for use once immediate mode is supported.

Swift SVN r11326
2013-12-15 00:58:28 +00:00
Connor Wakamo
0d3369be03 [frontend] Add support for -help and --help-hidden.
Added PrintHelp and PrintHelpHidden to FrontendOptions.
Marked both -help and --help-hidden with the FrontendOption flag.
Updated ParseFrontendArgs to parse -help and --help-hidden.
Updated frontend_main() so that it prints the help for the frontend options.

Swift SVN r11320
2013-12-14 23:52:15 +00:00
Connor Wakamo
a1266393cd [frontend] Implemented support for verifying diagnostics with the integrated frontend.
Added a new DiagnosticOptions class to swiftBasic, and added a DiagnosticOptions member to CompilerInvocation.
Added a static ParseDiagnosticArgs function to parse diagnostic-related arguments.
Added -verify to FrontendOptions.td, and added support for parsing -verify in ParseDiagnosticArgs.
Updated frontend_main() to enable and trigger the DiagnosticVerifier when -verify is passed.

Swift SVN r11318
2013-12-14 22:08:08 +00:00
Connor Wakamo
f203e1fd96 [frontend] Moved ModuleSourceListPath from CompilerInvocation to FrontendOptions.
Also moved the handling of -module-source-list from the loop to ParseFrontendArgs.

Swift SVN r11290
2013-12-14 01:44:12 +00:00
Connor Wakamo
8f465324cf [frontend] Split target-related options out from ComplierInvocation into a new TargetOptions class.
Removed CompilerInvocation::TargetTriple and replaced it with CompilerInvocation::TargetOpts, a TargetOptions object.
Added a static ParseTargetArgs function to set up TargetOptions, and moved handling of -target into that function.

Swift SVN r11288
2013-12-14 01:28:13 +00:00
Connor Wakamo
20ce2ba390 [frontend] Moved SDKPath from CompilerInvocation to SearchPathOptions.
Swift SVN r11237
2013-12-13 04:52:58 +00:00
Connor Wakamo
9a1c706be7 [frontend] Moved FrameworkSearchPaths from CompilerInvocation to SearchPathOptions.
Swift SVN r11216
2013-12-12 22:36:42 +00:00
Connor Wakamo
1ecc5cc3e6 [frontend] Moved ImportSearchPaths out of CompilerInvocation/ASTContext and into SearchPathOptions.
Also updated findModule() in SourceLoader.cpp and SerializedModuleLoader.cpp to get the ImportSearchPaths from the ASTContext’s SearchPathOpts, instead of directly from the ASTContext.

Swift SVN r11214
2013-12-12 22:15:58 +00:00
Connor Wakamo
86b4a3b049 [frontend] Begin moving search path-related options into SearchPathOptions.
Added a new SearchPathOptions class to swiftAST, which will contain options like import search paths and the SDK path.
Moved the RuntimeIncludePath from CompilerInvocation into SearchPathOptions. For now, at least, the RuntimeIncludePath is handled separately from other ImportSearchPaths, since we can’t yet guarantee that RuntimeIncludePath is set up before we parse the ImportSearchPaths.
Added a SearchPathOptions member to ASTContext.
Updated findModule() in SourceLoader.cpp and SerializedModuleLoader.cpp to check RuntimeIncludePath after everything else if no module was found. (This matches existing behavior, which had RuntimeIncludedPath at the end of ImportSearchPaths.)

Swift SVN r11213
2013-12-12 21:38:11 +00:00
Connor Wakamo
e6b0f16ad0 [frontend] Add support for -print-stats.
Swift SVN r11190
2013-12-12 17:44:51 +00:00
Connor Wakamo
23a60d60d8 [frontend] Added support for -delayed-function-body-parsing.
Swift SVN r11188
2013-12-12 17:32:02 +00:00
Connor Wakamo
8661d230b4 [frontend] Added an accessor to CompilerInvocation to get the invocation's ClangImporterOptions.
Swift SVN r11181
2013-12-12 03:59:58 +00:00
Connor Wakamo
04bdf73b91 [frontend] Move options for controlling the behavior of the Clang importer into a new ClangImporterOptions class.
Added a new ClangImporterOptions class which wraps the ModuleCachePath and ExtraArgs for the Clang importer.
Added a new ParseClangImporterArgs static function which fills in the passed-in ClangImporterOptions.
Updated CompilerInvocation and CompilerInvocation::parseArgs() to use ClangImporterOptions and ParseClangImporterArgs, respectively.

Swift SVN r11180
2013-12-12 03:53:20 +00:00
Connor Wakamo
d14959b586 [frontend] Switch from providing a constructor for FrontendOptions to providing default values for its members.
Swift SVN r11173
2013-12-12 03:17:43 +00:00
Connor Wakamo
4ede1d0c23 [frontend] Added support for parsing the “-emit-verbose-sil” frontend argument.
This is not yet hooked up anywhere (beyond FrontendOptions), since the integrated frontend does not yet know how to emit SIL.

Swift SVN r11161
2013-12-12 00:48:13 +00:00
Connor Wakamo
a5a67f90ab [frontend] Added an accessor to CompilerInvocation to get the invocation’s FrontendOptions.
Swift SVN r11160
2013-12-12 00:48:12 +00:00
Connor Wakamo
84f9c6fa1b [frontend] Add comments to FrontendOptions.
Swift SVN r11159
2013-12-12 00:48:12 +00:00
Connor Wakamo
59c07ab012 [frontend] Began splitting options in CompilerInvocation into separate classes.
Added a new FrontendOptions class, which will eventually contain the options for controlling the behavior of the frontend. (This is similar to Clang’s FrontendOptions class.)
Moved InputFilenames, OutputFilename, ModuleName, and SerializedDiagnosticsPath from CompilerInvocation into FrontendOptions.
Split out argument parsing for options in FrontendOptions into a separate ParseFrontendArgs static function.

Swift SVN r11155
2013-12-11 23:58:55 +00:00
Jordan Rose
b4e4b551bd Rename CompilerInstance::doIt to performParse.
'doIt' is semantically meaningless, and doesn't mention the fact that nothing
has actually been compiled yet (to SIL, to IR, or to machine code).
'performParse' matches the compiler flag -parse, which stops after
type-checking.

No functionality change.

Swift SVN r10951
2013-12-07 00:13:58 +00:00
Jordan Rose
417b5d3982 Merge TranslationUnit into Module, and eliminate the term "translation unit".
This completes the FileUnit refactoring. A module consists of multiple
FileUnits, which provide decls from various file-like sources. I say
"file-like" because the Builtin module is implemented with a single
BuiltinUnit, and imported Clang modules are just a single FileUnit source
within a module.

Most modules, therefore, contain a single file unit; only the main module
will contain multiple source files (and eventually partial AST files).

The term "translation unit" has been scrubbed from the project. To refer
to the context of declarations outside of any other declarations, use
"top-level" or "module scope". To refer to a .swift file or its DeclContext,
use "source file". To refer to a single unit of compilation, use "module",
since the model is that an entire module will be compiled with a single
driver call. (It will still be possible to compile a single source file
through the direct-to-frontend interface, but only in the context of the
whole module.)

Swift SVN r10837
2013-12-05 01:51:15 +00:00
Argyrios Kyrtzidis
de6cb0bcfe [Frontend] Handle '-module-source-list' in CompilerInvocation::parseArgs.
Swift SVN r10327
2013-11-10 23:49:35 +00:00
Argyrios Kyrtzidis
5a673d2e77 [Frontend] Handle '-serialize-diagnostics' in CompilerInvocation::parseArgs.
Swift SVN r10326
2013-11-10 23:49:34 +00:00
Chris Lattner
3d7208c724 comment typo
Swift SVN r10054
2013-11-08 21:59:41 +00:00
Connor Wakamo
2b3a922aa5 Move SerializedDiagnosticConsumer into swiftFrontend.
This matches where Clang implements its equivalent, and this makes it available to both swift and the new driver.

Swift SVN r10047
2013-11-08 19:26:13 +00:00
Argyrios Kyrtzidis
ac8d86d2d6 [Frontend] In CompilerInvocation::parseArgs() parse the output filename argument.
Swift SVN r10043
2013-11-08 18:29:39 +00:00
Jordan Rose
aeb22194a0 [driver] Treat "main.swift" as the main source file if given multiple inputs.
New rules for the driver (first match):
1. -repl: no input files allowed
2. -parse-sil: one input file allowed
3. -parse-as-library: any number of input files, all treated as Library
4. one input, extension is .sil: treated as SIL
5. one input: treated as Main
6. many inputs: treated as Library by default; "main.swift" is treated as Main

If we want more control here we can also add a -main-file option to explicitly
call out the main source file, but this at least unblocks building an entire
app target (like ListMaker) with a single Swift invocation.

Swift SVN r9890
2013-11-02 01:08:40 +00:00
Jordan Rose
40c7f25c55 [driver] Pull code generation out into its own function.
No functionality change.  Paves the way for generating separate .o
files for each input file.

Swift SVN r9827
2013-10-30 23:44:56 +00:00
Jordan Rose
f7f253320a Re-add -l flag to Swift interim driver.
This is useful in -i and REPL modes, which do not have a separate linking
step. This version of the -l flag doesn't rely on TranslationUnit. I also
cleaned up the library-loading diagnostics.

Swift SVN r9488
2013-10-18 18:52:10 +00:00
Jordan Rose
ad75aa5021 Remove -l flag from Swift interim driver.
Being able to pass -l to the driver isn't so interesting, and it's an
extra field that lives on TranslationUnit for no reason. Just remove it.

This doesn't interfere with autolinking, i.e. inferring -l flags based on
imported modules.

Swift SVN r9241
2013-10-12 00:08:06 +00:00
Argyrios Kyrtzidis
de05f4570a [Frontend] Add a const version of CompilerInvocation::getLangOptions.
Swift SVN r9135
2013-10-10 14:51:36 +00:00