Changes in src/main.cc [37fe352:05e6eb5]
- File:
-
- 1 edited
-
src/main.cc (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/main.cc
r37fe352 r05e6eb5 28 28 #include <string> // for char_traits, operator<< 29 29 30 #include "CompilationState.h" 30 31 #include "../config.h" // for CFA_LIBDIR 31 32 #include "CodeGen/FixMain.h" // for FixMain … … 72 73 DeclarationNode * parseTree = nullptr; // program parse tree 73 74 74 extern int yydebug; // set for -g flag (Grammar)75 bool76 astp = false,77 bresolvep = false,78 bboxp = false,79 bcodegenp = false,80 ctorinitp = false,81 declstatsp = false,82 exprp = false,83 expraltp = false,84 genericsp = false,85 libcfap = false,86 nopreludep = false,87 noprotop = false,88 nomainp = false,89 parsep = false,90 resolvep = false, // used in AlternativeFinder91 symtabp = false,92 treep = false,93 tuplep = false,94 validp = false,95 errorp = false,96 codegenp = false,97 prettycodegenp = false,98 linemarks = false;99 100 std::string PreludeDirector = "";101 102 75 static void parse_cmdline( int argc, char *argv[], const char *& filename ); 103 76 static void parse( FILE * input, LinkageSpec::Spec linkage, bool shouldExit = false ); … … 209 182 // -l is for initial build ONLY and builtins.cf is not in the lib directory so access it here. 210 183 211 assertf( !PreludeDirector.empty(), "Can't find prelude without option --prelude-dir must be used." );212 213 184 // Read to gcc builtins, if not generating the cfa library 214 FILE * gcc_builtins = fopen( (PreludeDirector + "/gcc-builtins.cf").c_str(), "r" );185 FILE * gcc_builtins = fopen( buildingLibrary() ? "../prelude/gcc-builtins.cf" : CFA_LIBDIR "/gcc-builtins.cf", "r" ); 215 186 assertf( gcc_builtins, "cannot open gcc-builtins.cf\n" ); 216 187 parse( gcc_builtins, LinkageSpec::Compiler ); 217 188 218 189 // read the extra prelude in, if not generating the cfa library 219 FILE * extras = fopen( (PreludeDirector + "/extras.cf").c_str(), "r" );190 FILE * extras = fopen( buildingLibrary() ? "../prelude/extras.cf" : CFA_LIBDIR "/extras.cf", "r" ); 220 191 assertf( extras, "cannot open extras.cf\n" ); 221 192 parse( extras, LinkageSpec::BuiltinC ); … … 223 194 if ( ! libcfap ) { 224 195 // read the prelude in, if not generating the cfa library 225 FILE * prelude = fopen( (PreludeDirector + "/prelude.cf").c_str(), "r" );196 FILE * prelude = fopen( buildingLibrary() ? "../prelude/prelude.cf" : CFA_LIBDIR "/prelude.cf", "r" ); 226 197 assertf( prelude, "cannot open prelude.cf\n" ); 227 198 parse( prelude, LinkageSpec::Intrinsic ); 228 199 229 200 // Read to cfa builtins, if not generating the cfa library 230 FILE * builtins = fopen( (PreludeDirector + "/builtins.cf").c_str(), "r" );201 FILE * builtins = fopen( buildingLibrary() ? "../prelude/builtins.cf" : CFA_LIBDIR "/builtins.cf", "r" ); 231 202 assertf( builtins, "cannot open builtins.cf\n" ); 232 203 parse( builtins, LinkageSpec::BuiltinCFA ); … … 303 274 304 275 // fix ObjectDecl - replaces ConstructorInit nodes 305 PASS( "fixInit", InitTweak::fix( translationUnit, filename, libcfap || treep) );276 PASS( "fixInit", InitTweak::fix( translationUnit, buildingLibrary() ) ); 306 277 if ( ctorinitp ) { 307 278 dump ( translationUnit ); … … 352 323 PASS( "codegen", CodeGen::generate( translationUnit, *output, ! noprotop, prettycodegenp, true, linemarks ) ); 353 324 354 CodeGen::FixMain::fix( *output, (PreludeDirector + "/bootloader.c").c_str());325 CodeGen::FixMain::fix( *output, treep ? "../prelude/bootloader.c" : CFA_LIBDIR "/bootloader.c" ); 355 326 if ( output != &cout ) { 356 327 delete output; … … 401 372 402 373 void parse_cmdline( int argc, char * argv[], const char *& filename ) { 403 enum { Ast, Bbox, Bresolver, CtorInitFix, DeclStats, Expr, ExprAlt, Grammar, LibCFA, Linemarks, Nolinemarks, Nopreamble, Parse, Pr eludeDir, Prototypes, Resolver, Symbol, Tree, TupleExpansion, Validate, };374 enum { Ast, Bbox, Bresolver, CtorInitFix, DeclStats, Expr, ExprAlt, Grammar, LibCFA, Linemarks, Nolinemarks, Nopreamble, Parse, Prototypes, Resolver, Symbol, Tree, TupleExpansion, Validate, }; 404 375 405 376 static struct option long_opts[] = { … … 417 388 { "no-preamble", no_argument, 0, Nopreamble }, 418 389 { "parse", no_argument, 0, Parse }, 419 { "prelude-dir", required_argument, 0, PreludeDir },420 390 { "no-prototypes", no_argument, 0, Prototypes }, 421 391 { "resolver", no_argument, 0, Resolver }, … … 490 460 case 'p': // generate prototypes for preamble functions 491 461 noprotop = true; 492 break;493 case PreludeDir:494 PreludeDirector = optarg;495 462 break; 496 463 case 'm': // don't replace the main
Note:
See TracChangeset
for help on using the changeset viewer.