Changeset 6775 for branches


Ignore:
Timestamp:
Sep 20, 2001, 4:34:01 PM (24 years ago)
Author:
bird
Message:

Next phase..

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/stage2/tools/database/occ/driver.cpp

    r6770 r6775  
    5555
    5656static 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.";
    5959
    6060const char opencxxErrorMessage[] = " Error(s).  OpenC++ stops.\n";
     
    7676const char* cppArgv[NARGS];
    7777const char* ccArgv[NARGS];
    78 static const char* cc2Argv[NARGS];      // arguments following a source file
     78static const char* cc2Argv[NARGS];      // arguments following a source file
    7979int cppArgc = 0;
    8080int ccArgc = 0;
     
    116116    char* src = ParseOptions(argc, argv);
    117117    if(src != nil)
    118         ReadFile(src);
     118        ReadFile(src);
    119119    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
    124130}
    125131
     
    132138
    133139    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        }
    140146}
    141147
     
    146152    if(doPreprocess){
    147153        char* cppfile = RunPreprocessor(src);
    148         occfile = RunOpencxx(cppfile);
    149         //unlink(cppfile);
    150         delete cppfile;
     154        occfile = RunOpencxx(cppfile);
     155        //unlink(cppfile);
     156        delete cppfile;
    151157    }
    152158    else
    153         occfile = RunOpencxx(src);
     159        occfile = RunOpencxx(src);
    154160
    155161    if(doCompile){
     
    168174    if(!src_stream){
    169175        perror(src);
    170         exit(1);
     176        exit(1);
    171177    }
    172178
    173179    ProgramFile src_prog(src_stream);
    174180    if(verboseMode){
    175         if(doTranslate)
    176             cerr << "[Translate... " << src
    177                 << " into: " << dest << "]\n";
    178         else
    179             cerr << "[Parse... " << src << "]\n";
     181        if(doTranslate)
     182            cerr << "[Translate... " << src
     183                << " into: " << dest << "]\n";
     184        else
     185            cerr << "[Parse... " << src << "]\n";
    180186    }
    181187
     
    183189
    184190    if(nerrors != 0){
    185         cerr << nerrors << opencxxErrorMessage;
    186         exit(1);
     191        cerr << nerrors << opencxxErrorMessage;
     192        exit(1);
    187193    }
    188194
    189195    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);
    197203    }
    198204
     
    209215
    210216    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        }
    223229    }
    224230
     
    252258    int i;
    253259    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;
    268274        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);
    307313
    308314    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);
    311317
    312318    if(!doTranslate)
    313         doCompile = FALSE;
     319        doCompile = FALSE;
    314320}
    315321
     
    322328{
    323329    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"
    343349#if !defined(IRIX_CC) && !defined (_MSC_VER)
    344         << "    -P             Preprocess again after translation\n"
     350        << "    -P             Preprocess again after translation\n"
    345351#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"
    352358#if !defined(IRIX_CC) && !defined (_MSC_VER)
    353         << "    -C             Don't discard comments\n"
     359        << "    -C             Don't discard comments\n"
    354360#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";
    358364}
    359365
     
    361367{
    362368    if(cppArgc < NARGS)
    363         cppArgv[cppArgc++] = arg;
     369        cppArgv[cppArgc++] = arg;
    364370    else{
    365         cerr << "OpenC++: too many arguments\n";
    366         exit(1);
     371        cerr << "OpenC++: too many arguments\n";
     372        exit(1);
    367373    }
    368374}
     
    371377{
    372378    if(ccArgc < NARGS)
    373         ccArgv[ccArgc++] = arg;
     379        ccArgv[ccArgc++] = arg;
    374380    else{
    375         cerr << "OpenC++: too many arguments\n";
    376         exit(1);
     381        cerr << "OpenC++: too many arguments\n";
     382        exit(1);
    377383    }
    378384}
     
    381387{
    382388    for(int i = 0; i < cc2Argc; ++i)
    383         AddCcOption(cc2Argv[i]);
     389        AddCcOption(cc2Argv[i]);
    384390
    385391    AddCcOption((char*)0);
     
    389395{
    390396    if(cc2Argc < NARGS)
    391         cc2Argv[cc2Argc++] = arg;
     397        cc2Argv[cc2Argc++] = arg;
    392398    else{
    393         cerr << "OpenC++: too many arguments\n";
    394         exit(1);
     399        cerr << "OpenC++: too many arguments\n";
     400        exit(1);
    395401    }
    396402}
     
    399405{
    400406    if(option == nil || *option == '\0')
    401         return;
     407        return;
    402408
    403409    char* value = strchr(option, '=');
    404410    if(value != nil)
    405         *value++ = '\0';
     411        *value++ = '\0';
    406412
    407413    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);
    410416    }
    411417}
     
    414420{
    415421    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";
    417423
    418424    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            }
    428434    }
    429435
    430436    ++numOfObjectFiles;
    431     if(source_file == nil)      // source file is already given
    432         AddCcOption(arg);
     437    if(source_file == nil)      // source file is already given
     438        AddCcOption(arg);
    433439    else
    434         AddCc2Option(arg);
     440        AddCc2Option(arg);
    435441
    436442    return;
     
    448454    char* ext = strrchr(fname, '.');
    449455    if(ext == nil)
    450         return FALSE;
     456        return FALSE;
    451457
    452458    if(strcmp(ext,    ".cc") == 0
     
    459465       || strcmp(ext, ".i") == 0
    460466       || strcmp(ext, ".occ") == 0)
    461         return TRUE;
     467        return TRUE;
    462468
    463469    return FALSE;
     
    467473{
    468474    while(*args != nil)
    469         cerr << ' ' << *args++;
    470 }
     475        cerr << ' ' << *args++;
     476}
Note: See TracChangeset for help on using the changeset viewer.