mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-07 19:36:06 +03:00
Add new cmdline option -mixin=<filename>
This commit is contained in:
parent
26c27c664d
commit
389977d084
5 changed files with 22 additions and 1 deletions
|
@ -1541,6 +1541,8 @@ private void setTargetCPU(ref Param params)
|
||||||
params.cpu = CPU.x87; // cannot support other instruction sets
|
params.cpu = CPU.x87; // cannot support other instruction sets
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // !IN_LLVM
|
||||||
|
|
||||||
/**************************************
|
/**************************************
|
||||||
* we want to write the mixin expansion file also on error, but there
|
* 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)),
|
* are too many ways to terminate dmd (e.g. fatal() which calls exit(EXIT_FAILURE)),
|
||||||
|
@ -1559,6 +1561,9 @@ extern(C) void flushMixins()
|
||||||
f.write();
|
f.write();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
version (IN_LLVM) {} else
|
||||||
|
{
|
||||||
|
|
||||||
/****************************************************
|
/****************************************************
|
||||||
* Parse command line arguments.
|
* Parse command line arguments.
|
||||||
*
|
*
|
||||||
|
|
|
@ -220,6 +220,10 @@ cl::opt<bool>
|
||||||
hdrKeepAllBodies("Hkeep-all-bodies", cl::ZeroOrMore,
|
hdrKeepAllBodies("Hkeep-all-bodies", cl::ZeroOrMore,
|
||||||
cl::desc("Keep all function bodies in .di files"));
|
cl::desc("Keep all function bodies in .di files"));
|
||||||
|
|
||||||
|
cl::opt<std::string> mixinFile("mixin", cl::ZeroOrMore,
|
||||||
|
cl::desc("Expand and save mixins to <filename>"),
|
||||||
|
cl::value_desc("filename"));
|
||||||
|
|
||||||
static cl::opt<bool, true> unittest("unittest", cl::ZeroOrMore,
|
static cl::opt<bool, true> unittest("unittest", cl::ZeroOrMore,
|
||||||
cl::desc("Compile in unit tests"),
|
cl::desc("Compile in unit tests"),
|
||||||
cl::location(global.params.useUnitTests));
|
cl::location(global.params.useUnitTests));
|
||||||
|
|
|
@ -62,6 +62,7 @@ extern cl::list<std::string> jsonFields;
|
||||||
extern cl::opt<std::string> hdrDir;
|
extern cl::opt<std::string> hdrDir;
|
||||||
extern cl::opt<std::string> hdrFile;
|
extern cl::opt<std::string> hdrFile;
|
||||||
extern cl::opt<bool> hdrKeepAllBodies;
|
extern cl::opt<bool> hdrKeepAllBodies;
|
||||||
|
extern cl::opt<std::string> mixinFile;
|
||||||
extern cl::list<std::string> versions;
|
extern cl::list<std::string> versions;
|
||||||
extern cl::list<std::string> transitions;
|
extern cl::list<std::string> transitions;
|
||||||
extern cl::opt<std::string> moduleDeps;
|
extern cl::opt<std::string> moduleDeps;
|
||||||
|
|
|
@ -208,6 +208,7 @@ Where:\n\
|
||||||
#endif
|
#endif
|
||||||
" -mcpu=<id> generate instructions for architecture identified by 'id'\n\
|
" -mcpu=<id> generate instructions for architecture identified by 'id'\n\
|
||||||
-mcpu=? list all architecture options\n\
|
-mcpu=? list all architecture options\n\
|
||||||
|
-mixin=<filename> expand and save mixins to file specified by <filename>\n\
|
||||||
-mscrtlib=<name> MS C runtime library to reference from main/WinMain/DllMain\n\
|
-mscrtlib=<name> MS C runtime library to reference from main/WinMain/DllMain\n\
|
||||||
-mv=<package.module>=<filespec> use <filespec> as source file for <package.module>\n\
|
-mv=<package.module>=<filespec> use <filespec> as source file for <package.module>\n\
|
||||||
-noboundscheck no array bounds checking (deprecated, use -boundscheck=off)\n\
|
-noboundscheck no array bounds checking (deprecated, use -boundscheck=off)\n\
|
||||||
|
@ -423,7 +424,8 @@ void translateArgs(size_t originalArgc, char **originalArgv,
|
||||||
else if (strcmp(p + 1, "m32mscoff") == 0) {
|
else if (strcmp(p + 1, "m32mscoff") == 0) {
|
||||||
ldcArgs.push_back("-m32");
|
ldcArgs.push_back("-m32");
|
||||||
}
|
}
|
||||||
/* -mscrtlib
|
/* -mixin
|
||||||
|
* -mscrtlib
|
||||||
*/
|
*/
|
||||||
else if (strncmp(p + 1, "profile", 7) == 0) {
|
else if (strncmp(p + 1, "profile", 7) == 0) {
|
||||||
if (p[8] == 0) {
|
if (p[8] == 0) {
|
||||||
|
|
|
@ -85,6 +85,7 @@ void gendocfile(Module *m);
|
||||||
|
|
||||||
// In dmd/mars.d
|
// In dmd/mars.d
|
||||||
void generateJson(Modules *modules);
|
void generateJson(Modules *modules);
|
||||||
|
extern "C" void flushMixins();
|
||||||
|
|
||||||
using namespace opts;
|
using namespace opts;
|
||||||
|
|
||||||
|
@ -386,6 +387,14 @@ void parseCommandLine(int argc, char **argv, Strings &sourceFiles,
|
||||||
global.params.doHdrGeneration |=
|
global.params.doHdrGeneration |=
|
||||||
global.params.hdrdir || global.params.hdrname;
|
global.params.hdrdir || global.params.hdrname;
|
||||||
|
|
||||||
|
opts::initFromPathString(global.params.mixinFile, mixinFile);
|
||||||
|
if (global.params.mixinFile) {
|
||||||
|
global.params.mixinOut = new OutBuffer;
|
||||||
|
// DMD uses atexit() too, so that the file is written when exiting via
|
||||||
|
// fatal() etc. too.
|
||||||
|
atexit(&flushMixins);
|
||||||
|
}
|
||||||
|
|
||||||
if (moduleDeps.getNumOccurrences() != 0) {
|
if (moduleDeps.getNumOccurrences() != 0) {
|
||||||
global.params.moduleDeps = new OutBuffer;
|
global.params.moduleDeps = new OutBuffer;
|
||||||
if (!moduleDeps.empty())
|
if (!moduleDeps.empty())
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue