comparison dmd/module.c @ 986:a8cb25d478c4

Use LLVM-style command line (instead of DMD-style) Note: For a backward compatible interface, use the new bin/ldmd script. It supports all old options while passing on anything it doesn't recognize. Some changes caused by this: * -debug and -version are now -d-debug and -d-version due to a conflict with standard LLVM options. * All "flag" options now allow an optional =true/=1/=false/=0 suffix. * Some "hidden debug switches" starting with "--" were renamed because LLVM doesn't care about the number of dashes, so they were conflicting with other options (such as -c). The new versions start with "-hidden-debug-" instead of "--" * --help works, but has a non-zero exit code. This breaks some Tango scripts which use it to test for compiler existence. See tango.patch. Some changes not (directly) caused by this; * (-enable/-disable)-FOO options are now available for pre- and postconditions. * -march is used instead of -m (like other LLVM programs), but -m is an alias for it. * -defaultlib, -debuglib, -d-debug and -d-version allow comma-separated values. The effect should be identical to specifying the same option multiple times. I decided against allowing these for some other options because paths might contain commas on some systems. * -fPIC is removed in favor of the standard LLVM option -relocation-model=pic Bug: * If -run is specified as the last argument in DFLAGS, no error is generated. (Not very serious IMHO)
author Frits van Bommel <fvbommel wxs.nl>
date Wed, 25 Feb 2009 17:34:51 +0100
parents 31bbc7f3b817
children b30fe7e1dbb9
comparison
equal deleted inserted replaced
985:bce024c60adc 986:a8cb25d478c4
41 #include "html.h" 41 #include "html.h"
42 42
43 #ifdef IN_GCC 43 #ifdef IN_GCC
44 #include "d-dmd-gcc.h" 44 #include "d-dmd-gcc.h"
45 #endif 45 #endif
46
47
48 #include "llvm/Support/CommandLine.h"
49
50 static llvm::cl::opt<bool> preservePaths("op",
51 llvm::cl::desc("Do not strip paths from source file"),
52 llvm::cl::ZeroOrMore);
53
54 static llvm::cl::opt<bool> fqnNames("oq",
55 llvm::cl::desc("Write object files with fully qualified names"),
56 llvm::cl::ZeroOrMore);
57
58
46 59
47 ClassDeclaration *Module::moduleinfo; 60 ClassDeclaration *Module::moduleinfo;
48 61
49 Module *Module::rootModule; 62 Module *Module::rootModule;
50 DsymbolTable *Module::modules; 63 DsymbolTable *Module::modules;
137 char *argobj; 150 char *argobj;
138 if (forcename) 151 if (forcename)
139 argobj = forcename; 152 argobj = forcename;
140 else 153 else
141 { 154 {
142 if (global.params.preservePaths) 155 if (preservePaths)
143 argobj = (char*)this->arg; 156 argobj = (char*)this->arg;
144 else 157 else
145 argobj = FileName::name((char*)this->arg); 158 argobj = FileName::name((char*)this->arg);
146 159
147 if (global.params.fqnNames) 160 if (fqnNames)
148 { 161 {
149 if(md) 162 if(md)
150 argobj = FileName::replaceName(argobj, md->toChars()); 163 argobj = FileName::replaceName(argobj, md->toChars());
151 else 164 else
152 argobj = FileName::replaceName(argobj, toChars()); 165 argobj = FileName::replaceName(argobj, toChars());