Mercurial > projects > ldc
comparison dmd/mars.c @ 580:7824c21a58e3
Restructure path handling a bit. Fixes #66.
author | Christian Kamm <kamm incasoftware de> |
---|---|
date | Sat, 06 Sep 2008 12:27:27 +0200 |
parents | 91d436eaedee |
children | 12bda38ea366 |
comparison
equal
deleted
inserted
replaced
579:20c065c46b38 | 580:7824c21a58e3 |
---|---|
453 if (p[3]) | 453 if (p[3]) |
454 goto Lerror; | 454 goto Lerror; |
455 global.params.preservePaths = 1; | 455 global.params.preservePaths = 1; |
456 break; | 456 break; |
457 | 457 |
458 case 'q': | 458 case 'q': |
459 if (p[3]) | 459 if (p[3]) |
460 goto Lerror; | 460 goto Lerror; |
461 global.params.fqnPaths = 1; | 461 global.params.fqnNames = 1; |
462 break; | 462 break; |
463 | 463 |
464 case 0: | 464 case 0: |
465 error("-o no longer supported, use -of or -od"); | 465 error("-o no longer supported, use -of or -od"); |
466 break; | 466 break; |
467 | 467 |
980 } | 980 } |
981 | 981 |
982 id = new Identifier(name, 0); | 982 id = new Identifier(name, 0); |
983 m = new Module((char *) files.data[i], id, global.params.doDocComments, global.params.doHdrGeneration); | 983 m = new Module((char *) files.data[i], id, global.params.doDocComments, global.params.doHdrGeneration); |
984 modules.push(m); | 984 modules.push(m); |
985 | |
986 global.params.objfiles->push(m->objfile->name->str); | |
987 } | 985 } |
988 | 986 |
989 // Read files, parse them | 987 // Read files, parse them |
990 for (i = 0; i < modules.dim; i++) | 988 for (i = 0; i < modules.dim; i++) |
991 { | 989 { |
993 if (global.params.verbose) | 991 if (global.params.verbose) |
994 printf("parse %s\n", m->toChars()); | 992 printf("parse %s\n", m->toChars()); |
995 if (!Module::rootModule) | 993 if (!Module::rootModule) |
996 Module::rootModule = m; | 994 Module::rootModule = m; |
997 m->importedFrom = m; | 995 m->importedFrom = m; |
998 m->deleteObjFile(); | |
999 m->read(0); | 996 m->read(0); |
1000 m->parse(); | 997 m->parse(); |
998 m->buildTargetFiles(); | |
999 m->deleteObjFile(); | |
1001 if (m->isDocFile) | 1000 if (m->isDocFile) |
1002 { | 1001 { |
1003 m->gendocfile(); | 1002 m->gendocfile(); |
1004 | 1003 |
1005 // Remove m from list of modules | 1004 // Remove m from list of modules |
1006 modules.remove(i); | 1005 modules.remove(i); |
1007 i--; | 1006 i--; |
1008 | |
1009 // Remove m's object file from list of object files | |
1010 for (int j = 0; j < global.params.objfiles->dim; j++) | |
1011 { | |
1012 if (m->objfile->name->str == global.params.objfiles->data[j]) | |
1013 { | |
1014 global.params.objfiles->remove(j); | |
1015 break; | |
1016 } | |
1017 } | |
1018 | |
1019 if (global.params.objfiles->dim == 0) | |
1020 global.params.link = 0; | |
1021 } | 1007 } |
1022 } | 1008 } |
1023 if (global.errors) | 1009 if (global.errors) |
1024 fatal(); | 1010 fatal(); |
1025 #ifdef _DH | 1011 #ifdef _DH |
1118 { | 1104 { |
1119 m = (Module *)modules.data[i]; | 1105 m = (Module *)modules.data[i]; |
1120 if (global.params.verbose) | 1106 if (global.params.verbose) |
1121 printf("code %s\n", m->toChars()); | 1107 printf("code %s\n", m->toChars()); |
1122 if (global.params.obj) | 1108 if (global.params.obj) |
1109 { | |
1123 m->genobjfile(0); | 1110 m->genobjfile(0); |
1111 global.params.objfiles->push(m->objfile->name->str); | |
1112 } | |
1124 if (global.errors) | 1113 if (global.errors) |
1125 m->deleteObjFile(); | 1114 m->deleteObjFile(); |
1126 else | 1115 else |
1127 { | 1116 { |
1128 if (global.params.doDocComments) | 1117 if (global.params.doDocComments) |