- Timestamp:
- Sep 20, 2001, 4:34:01 PM (24 years ago)
- File:
-
- 1 edited
-
branches/stage2/tools/database/occ/driver.cpp (modified) (19 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/stage2/tools/database/occ/driver.cpp
r6770 r6775 55 55 56 56 static char copyingNote[] 57 = "Copyright (c) 1997-2001 Shigeru Chiba. All Rights Reserved.\n"58 "Copyright (c) 1995, 1996 Xerox Corporation. All Rights Reserved.";57 = "Copyright (c) 1997-2001 Shigeru Chiba. All Rights Reserved.\n" 58 "Copyright (c) 1995, 1996 Xerox Corporation. All Rights Reserved."; 59 59 60 60 const char opencxxErrorMessage[] = " Error(s). OpenC++ stops.\n"; … … 76 76 const char* cppArgv[NARGS]; 77 77 const char* ccArgv[NARGS]; 78 static const char* cc2Argv[NARGS]; // arguments following a source file78 static const char* cc2Argv[NARGS]; // arguments following a source file 79 79 int cppArgc = 0; 80 80 int ccArgc = 0; … … 116 116 char* src = ParseOptions(argc, argv); 117 117 if(src != nil) 118 ReadFile(src);118 ReadFile(src); 119 119 else 120 if(numOfObjectFiles == 0) 121 ReadStdin(); 122 else 123 RunLinker(); 120 if(numOfObjectFiles == 0) 121 ReadStdin(); 122 else 123 RunLinker(); 124 #ifdef ODD 125 /* 126 * Post processing goes here. 127 */ 128 129 #endif 124 130 } 125 131 … … 132 138 133 139 if(!showProgram) 134 if(nerrors == 0)135 prog.Write(cout, "stdout");136 else{137 cerr << nerrors << opencxxErrorMessage;138 exit(1);139 }140 if(nerrors == 0) 141 prog.Write(cout, "stdout"); 142 else{ 143 cerr << nerrors << opencxxErrorMessage; 144 exit(1); 145 } 140 146 } 141 147 … … 146 152 if(doPreprocess){ 147 153 char* cppfile = RunPreprocessor(src); 148 occfile = RunOpencxx(cppfile);149 //unlink(cppfile);150 delete cppfile;154 occfile = RunOpencxx(cppfile); 155 //unlink(cppfile); 156 delete cppfile; 151 157 } 152 158 else 153 occfile = RunOpencxx(src);159 occfile = RunOpencxx(src); 154 160 155 161 if(doCompile){ … … 168 174 if(!src_stream){ 169 175 perror(src); 170 exit(1);176 exit(1); 171 177 } 172 178 173 179 ProgramFile src_prog(src_stream); 174 180 if(verboseMode){ 175 if(doTranslate)176 cerr << "[Translate... " << src177 << " into: " << dest << "]\n";178 else179 cerr << "[Parse... " << src << "]\n";181 if(doTranslate) 182 cerr << "[Translate... " << src 183 << " into: " << dest << "]\n"; 184 else 185 cerr << "[Parse... " << src << "]\n"; 180 186 } 181 187 … … 183 189 184 190 if(nerrors != 0){ 185 cerr << nerrors << opencxxErrorMessage;186 exit(1);191 cerr << nerrors << opencxxErrorMessage; 192 exit(1); 187 193 } 188 194 189 195 if(doTranslate){ 190 ofstream dest_stream(dest, (ios::out | ios::trunc));191 if(!dest_stream){192 perror(dest);193 exit(1);194 }195 196 src_prog.Write(dest_stream, dest);196 ofstream dest_stream(dest, (ios::out | ios::trunc)); 197 if(!dest_stream){ 198 perror(dest); 199 exit(1); 200 } 201 202 src_prog.Write(dest_stream, dest); 197 203 } 198 204 … … 209 215 210 216 while(parse.rProgram(def)){ 211 if(showProgram)212 def->Display2(cout);213 214 if(doTranslate){215 Ptree* def2 = w.Translate(def);216 Ptree* before = w.GetInsertedPtree();217 Ptree* after = w.GetAppendedPtree();218 219 prog->Insert(def, before, after);220 if(def != def2)221 prog->MinimumSubst(def2, def);222 }217 if(showProgram) 218 def->Display2(cout); 219 220 if(doTranslate){ 221 Ptree* def2 = w.Translate(def); 222 Ptree* before = w.GetInsertedPtree(); 223 Ptree* after = w.GetAppendedPtree(); 224 225 prog->Insert(def, before, after); 226 if(def != def2) 227 prog->MinimumSubst(def2, def); 228 } 223 229 } 224 230 … … 252 258 int i; 253 259 for(i = from; i < argc; ++i) 254 if(strcmp("--", argv[i]) == 0)255 break;256 else if(strcmp("-E", argv[i]) == 0)257 doCompile = FALSE;258 else if(strcmp("-g", argv[i]) == 0)259 AddCcOption(argv[i]);260 else if (strcmp("-n", argv[i]) == 0)261 doPreprocess = FALSE;262 else if(*argv[i] == '-' && argv[i][1] == 'm'){263 makeSharedLibrary = TRUE;264 sharedLibraryName = &argv[i][2];265 }266 else if (strcmp("-P", argv[i]) == 0)267 preprocessTwice = TRUE;260 if(strcmp("--", argv[i]) == 0) 261 break; 262 else if(strcmp("-E", argv[i]) == 0) 263 doCompile = FALSE; 264 else if(strcmp("-g", argv[i]) == 0) 265 AddCcOption(argv[i]); 266 else if (strcmp("-n", argv[i]) == 0) 267 doPreprocess = FALSE; 268 else if(*argv[i] == '-' && argv[i][1] == 'm'){ 269 makeSharedLibrary = TRUE; 270 sharedLibraryName = &argv[i][2]; 271 } 272 else if (strcmp("-P", argv[i]) == 0) 273 preprocessTwice = TRUE; 268 274 else if (strcmp("-p", argv[i]) == 0) 269 doTranslate = FALSE;270 else if (strcmp("-C", argv[i]) == 0) {271 AddCppOption("-C");272 preprocessTwice = TRUE;273 }274 else if(strcmp("-c", argv[i]) == 0)275 makeExecutable = FALSE;276 else if(strcmp("-l", argv[i]) == 0){277 cout << "[Loaded metaclasses...]\n";278 opcxx_ListOfMetaclass::PrintAllMetaclasses();279 exit(0);280 }281 else if(*argv[i] == '-' && argv[i][1] == 'S')282 LoadMetaclass(&argv[i][2]);283 else if(strcmp("-s", argv[i]) == 0)284 showProgram = TRUE;285 else if(strcmp("-v", argv[i]) == 0)286 verboseMode = TRUE;287 else if(strcmp("-V", argv[i]) == 0){288 ShowVersion();289 exit(1);290 }291 else if (strcmp("--regular-c++", argv[i]) == 0)292 regularCpp = TRUE;293 else if(*argv[i] == '-'294 && (argv[i][1] == 'D' || argv[i][1] == 'I'))295 AddCppOption(argv[i]);296 else if(*argv[i] == '-' && argv[i][1] == 'd' && argv[i][2] != '\0')297 AddCppOption(&argv[i][2]);298 else if(*argv[i] == '-' && argv[i][1] == 'M')299 RecordCmdOption(&argv[i][2]);300 else if(*argv[i] == '-'){301 ShowVersion();302 ShowHelp(argv);303 exit(1);304 }305 else if(!ParseTargetSpecificOptions(argv[i], source_file))306 ParseCcOptions(argv[i], source_file);275 doTranslate = FALSE; 276 else if (strcmp("-C", argv[i]) == 0) { 277 AddCppOption("-C"); 278 preprocessTwice = TRUE; 279 } 280 else if(strcmp("-c", argv[i]) == 0) 281 makeExecutable = FALSE; 282 else if(strcmp("-l", argv[i]) == 0){ 283 cout << "[Loaded metaclasses...]\n"; 284 opcxx_ListOfMetaclass::PrintAllMetaclasses(); 285 exit(0); 286 } 287 else if(*argv[i] == '-' && argv[i][1] == 'S') 288 LoadMetaclass(&argv[i][2]); 289 else if(strcmp("-s", argv[i]) == 0) 290 showProgram = TRUE; 291 else if(strcmp("-v", argv[i]) == 0) 292 verboseMode = TRUE; 293 else if(strcmp("-V", argv[i]) == 0){ 294 ShowVersion(); 295 exit(1); 296 } 297 else if (strcmp("--regular-c++", argv[i]) == 0) 298 regularCpp = TRUE; 299 else if(*argv[i] == '-' 300 && (argv[i][1] == 'D' || argv[i][1] == 'I')) 301 AddCppOption(argv[i]); 302 else if(*argv[i] == '-' && argv[i][1] == 'd' && argv[i][2] != '\0') 303 AddCppOption(&argv[i][2]); 304 else if(*argv[i] == '-' && argv[i][1] == 'M') 305 RecordCmdOption(&argv[i][2]); 306 else if(*argv[i] == '-'){ 307 ShowVersion(); 308 ShowHelp(argv); 309 exit(1); 310 } 311 else if(!ParseTargetSpecificOptions(argv[i], source_file)) 312 ParseCcOptions(argv[i], source_file); 307 313 308 314 while(++i < argc) 309 if(!ParseTargetSpecificOptions(argv[i], source_file))310 ParseCcOptions(argv[i], source_file);315 if(!ParseTargetSpecificOptions(argv[i], source_file)) 316 ParseCcOptions(argv[i], source_file); 311 317 312 318 if(!doTranslate) 313 doCompile = FALSE;319 doCompile = FALSE; 314 320 } 315 321 … … 322 328 { 323 329 cerr << "Usage: " 324 << argv[0]325 << " [-l][-s][-V][-v][-E][-m[<file name>]][-c][-n][-p][--regular-c++]\n"326 << "\t\t[-I<directory>][-D<macro>[=<def>]][-M<option>[=<value>]]\n"327 << "\t\t[-g][-d<option>][-S<metaclass>]\n"328 << "\t\t[-- <compiler options>] <source file>\n"329 << "\n"330 << " -g Produce debugging information\n"331 << " -M Specify an <option> with <value> passed to metaobjects\n"332 << " -l List metaclasses\n"333 << " -S Load a metaclass\n"334 << " -s Show program tree on stdout\n"335 << " -V Show version\n"336 << " -v Verbose mode\n"337 << "\n"338 << " Building stages options\n"339 << " -n Don't preprocess\n"340 << " -p Don't translate (stop after parsing)\n"341 << " -E Don't compile (stop after translation)\n"342 << " -c Don't make executable (stop after compilation)\n"330 << argv[0] 331 << " [-l][-s][-V][-v][-E][-m[<file name>]][-c][-n][-p][--regular-c++]\n" 332 << "\t\t[-I<directory>][-D<macro>[=<def>]][-M<option>[=<value>]]\n" 333 << "\t\t[-g][-d<option>][-S<metaclass>]\n" 334 << "\t\t[-- <compiler options>] <source file>\n" 335 << "\n" 336 << " -g Produce debugging information\n" 337 << " -M Specify an <option> with <value> passed to metaobjects\n" 338 << " -l List metaclasses\n" 339 << " -S Load a metaclass\n" 340 << " -s Show program tree on stdout\n" 341 << " -V Show version\n" 342 << " -v Verbose mode\n" 343 << "\n" 344 << " Building stages options\n" 345 << " -n Don't preprocess\n" 346 << " -p Don't translate (stop after parsing)\n" 347 << " -E Don't compile (stop after translation)\n" 348 << " -c Don't make executable (stop after compilation)\n" 343 349 #if !defined(IRIX_CC) && !defined (_MSC_VER) 344 << " -P Preprocess again after translation\n"350 << " -P Preprocess again after translation\n" 345 351 #endif 346 << " -m Compile a metaclass (make a shared library)\n"347 << "\n"348 << " Preprocessor options\n"349 << " -I<directory> Add <directory> to the #include path\n"350 << " -D<name>=<def> Define a macro <name> as <def>\n"351 << " -d<option> Specify a preprocessor option\n"352 << " -m Compile a metaclass (make a shared library)\n" 353 << "\n" 354 << " Preprocessor options\n" 355 << " -I<directory> Add <directory> to the #include path\n" 356 << " -D<name>=<def> Define a macro <name> as <def>\n" 357 << " -d<option> Specify a preprocessor option\n" 352 358 #if !defined(IRIX_CC) && !defined (_MSC_VER) 353 << " -C Don't discard comments\n"359 << " -C Don't discard comments\n" 354 360 #endif 355 << "\n"356 << " Other options\n"357 << " --regular-c++ Inhibit the extended syntax\n";361 << "\n" 362 << " Other options\n" 363 << " --regular-c++ Inhibit the extended syntax\n"; 358 364 } 359 365 … … 361 367 { 362 368 if(cppArgc < NARGS) 363 cppArgv[cppArgc++] = arg;369 cppArgv[cppArgc++] = arg; 364 370 else{ 365 cerr << "OpenC++: too many arguments\n";366 exit(1);371 cerr << "OpenC++: too many arguments\n"; 372 exit(1); 367 373 } 368 374 } … … 371 377 { 372 378 if(ccArgc < NARGS) 373 ccArgv[ccArgc++] = arg;379 ccArgv[ccArgc++] = arg; 374 380 else{ 375 cerr << "OpenC++: too many arguments\n";376 exit(1);381 cerr << "OpenC++: too many arguments\n"; 382 exit(1); 377 383 } 378 384 } … … 381 387 { 382 388 for(int i = 0; i < cc2Argc; ++i) 383 AddCcOption(cc2Argv[i]);389 AddCcOption(cc2Argv[i]); 384 390 385 391 AddCcOption((char*)0); … … 389 395 { 390 396 if(cc2Argc < NARGS) 391 cc2Argv[cc2Argc++] = arg;397 cc2Argv[cc2Argc++] = arg; 392 398 else{ 393 cerr << "OpenC++: too many arguments\n";394 exit(1);399 cerr << "OpenC++: too many arguments\n"; 400 exit(1); 395 401 } 396 402 } … … 399 405 { 400 406 if(option == nil || *option == '\0') 401 return;407 return; 402 408 403 409 char* value = strchr(option, '='); 404 410 if(value != nil) 405 *value++ = '\0';411 *value++ = '\0'; 406 412 407 413 if(!Class::RecordCmdLineOption(option, value)){ 408 cerr << "OpenC++: Too many -M options.\n";409 exit(1);414 cerr << "OpenC++: Too many -M options.\n"; 415 exit(1); 410 416 } 411 417 } … … 414 420 { 415 421 static char* errmsg 416 = "OpenC++: only a single source file is accepted at a time.\n";422 = "OpenC++: only a single source file is accepted at a time.\n"; 417 423 418 424 if(arg != nil && arg[0] != '-'){ 419 if(IsCxxSource(arg))420 if(source_file == nil){421 source_file = arg;422 return;423 }424 else{425 cerr << errmsg;426 exit(1);427 }425 if(IsCxxSource(arg)) 426 if(source_file == nil){ 427 source_file = arg; 428 return; 429 } 430 else{ 431 cerr << errmsg; 432 exit(1); 433 } 428 434 } 429 435 430 436 ++numOfObjectFiles; 431 if(source_file == nil) // source file is already given432 AddCcOption(arg);437 if(source_file == nil) // source file is already given 438 AddCcOption(arg); 433 439 else 434 AddCc2Option(arg);440 AddCc2Option(arg); 435 441 436 442 return; … … 448 454 char* ext = strrchr(fname, '.'); 449 455 if(ext == nil) 450 return FALSE;456 return FALSE; 451 457 452 458 if(strcmp(ext, ".cc") == 0 … … 459 465 || strcmp(ext, ".i") == 0 460 466 || strcmp(ext, ".occ") == 0) 461 return TRUE;467 return TRUE; 462 468 463 469 return FALSE; … … 467 473 { 468 474 while(*args != nil) 469 cerr << ' ' << *args++;470 } 475 cerr << ' ' << *args++; 476 }
Note:
See TracChangeset
for help on using the changeset viewer.
