dmd.mars
Entry point for DMD.
Discussion
This modules defines the entry point (main) for DMD, as well as related utilities needed for arguments parsing, path manipulation, etc... This file is not shared with other compilers which use the DMD front-end.
License
Source: mars.d
Documentation: https://dlang.org/phobos/dmd_mars.html
-
Declaration
void
printInternalFailure
(FILE*stream
);Print DMD's logo with more debug information and error-reporting pointers.
Parameters
FILE*
stream
output
stream
to print the information on -
Declaration
int
main
(intargc
, char**argv
);DMD's entry point, C
main
.Discussion
Without
-lowmem
, we need to switch to the bump-pointer allocation scheme right from the start, before any module ctors are run, so we need this hook before druntime is initialized and_Dmain
is called.Return Value
Return code of the application
-
Declaration
int
_Dmain
(char[][]);Manual D main (for druntime initialization), which forwards to
tryMain
.Return Value
Return code of the application
-
Declaration
void
getenv_setargv
(const(char)*envvalue
, Strings*args
);Parses an environment variable containing command-line flags and append them to
.args
Discussion
This function is used to read the content of DFLAGS. Flags are separated based on spaces and tabs.
Parameters
const(char)*
envvalue
The content of an environment variable
Strings*
args
Array to append the flags to, if any.
-
Declaration
const(char)[]
parse_arch_arg
(Strings*args
, const(char)[]arch
);Parse command line arguments for the last instance of -m32, -m64 or -m32mscoff to detect the desired architecture.
Parameters
Strings*
args
Command line arguments
const(char)[]
arch
Default value to use for architecture. Should be "32" or "64"
Return Value
"32", "64" or "32mscoff" if the "-m32", "-m64", "-m32mscoff" flags were passed, respectively. If they weren't, return
.arch
-
Declaration
const(char)[]
parse_conf_arg
(Strings*args
);Parse command line arguments for the last instance of -conf=path.
Parameters
Strings*
args
Command line arguments
Return Value
The 'path' in -conf=path, which is the path to the config file to use
-
Declaration
void
setTarget
(ref Paramparams
);Set the
is
target fields of
according to the TARGET value.params
Parameters
Param
params
where the
is
fields are -
Declaration
void
addDefaultVersionIdentifiers
(ref const Paramparams
);Add default
version
identifier for dmd, and set the target platform in
. https://dlang.org/spec/version.html#predefined-versionsparams
Discussion
Needs to be run after all arguments parsing (command line, DFLAGS environment variable and config file) in order to add final flags (such as
X86_64
or theCRuntime
used).Parameters
Param
params
which target to compile for (set by
setTarget()
) -
Declaration
void
flushMixins
();we want to write the mixin expansion file also on error, but there are too many ways to terminate dmd (e.g. fatal() which calls exit(EXIT_FAILURE)), so we can't rely on scope(exit) ... in tryMain() actually being executed so we add atexit(&
flushMixins
); for those fatal exits (with the GC still valid) -
Declaration
bool
parseCommandLine
(ref const Stringsarguments
, const size_targc
, ref Paramparams
, ref Stringsfiles
);Parse command line
arguments
.Discussion
Prints message(s) if there are errors.
Parameters
Strings
arguments
command line
arguments
size_t
argc
argument count
Param
params
set to result of parsing
arguments
Strings
files
set to
files
pulled fromarguments
Return Value
true
if errors in command line -
Declaration
Module
createModule
(const(char)*file
, ref Stringslibmodules
);Creates the module based on the
file
providedDiscussion
The
file
is dispatched in one of the various arrays (global.params.{ddocfiles,dllfiles,jsonfiles,etc...}) according to its extension. If it is a binaryfile
, it is added tolibmodules
.Parameters
const(char)*
file
File name to dispatch
Strings
libmodules
Array to which binaries (shared/static libs and object files) will be appended
Return Value
A D module
-
Declaration
Modules
createModules
(ref Stringsfiles
, ref Stringslibmodules
);Creates the list of modules based on the
files
providedDiscussion
Files are dispatched in the various arrays (global.params.{ddocfiles,dllfiles,jsonfiles,etc...}) according to their extension. Binary
files
are added tolibmodules
.Parameters
Strings
files
File names to dispatch
Strings
libmodules
Array to which binaries (shared/static libs and object
files
) will be appendedReturn Value
An array of path to D modules