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)