Changeset 6d44da1 for driver/cfa.cc


Ignore:
Timestamp:
Sep 25, 2018, 11:35:34 AM (4 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
aaron-thesis, arm-eh, cleanup-dtors, deferred_resn, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, no_list, persistent-indexer, pthread-emulation, qualifiedEnum
Children:
c6bbcdb
Parents:
341bb80 (diff), 7428ad9 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' into shared_library

File:
1 edited

Legend:

Unmodified
Added
Removed
  • driver/cfa.cc

    r341bb80 r6d44da1  
    1010// Created On       : Tue Aug 20 13:44:49 2002
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Aug 10 18:17:58 2018
    13 // Update Count     : 259
     12// Last Modified On : Mon Sep  3 16:47:59 2018
     13// Update Count     : 275
    1414//
    1515
     
    4343const string suffixes[NumSuffixes] = { "cfa", "hfa", };
    4444
    45 bool suffix( string arg ) {
     45bool suffix( string arg, const char * args[], int & nargs ) {
    4646        //std::cerr << arg << std::endl;
    4747        size_t dot = arg.find_last_of( "." );
     
    5050        string sx = arg.substr( dot + 1 );
    5151        for ( int i = 0; i < NumSuffixes; i += 1 ) {
    52                 if ( sx == suffixes[i] ) return true;
     52                if ( sx == suffixes[i] ) {
     53                        args[nargs] = "-x";
     54                        nargs += 1;
     55                        args[nargs] = "c";
     56                        nargs += 1;
     57                        return true;
     58                } // if
    5359        } // for
    5460        return false;
     
    8692        string Major( str( CFA_VERSION_MAJOR ) ), Minor( str( CFA_VERSION_MINOR ) ), Patch( str( CFA_VERSION_PATCH ) );
    8793
    88         string installincdir( CFA_INCDIR );                         // fixed location of include files
    89         string installlibdir( CFA_LIBDIR );                         // fixed location of cc1 and cfa-cpp commands when installed
    90         string srcdriverdir ( TOP_BUILDDIR "driver");                // fixed location of cc1 and cfa-cpp commands when in tree
     94        string installincdir( CFA_INCDIR );                                     // fixed location of include files
     95        string installlibdir( CFA_LIBDIR );                                     // fixed location of cc1 and cfa-cpp commands when installed
     96        string srcdriverdir ( TOP_BUILDDIR "driver");           // fixed location of cc1 and cfa-cpp commands when in tree
    9197
    9298        string heading;                                                                         // banner printed at start of cfa compilation
     
    123129        #ifdef __DEBUG_H__
    124130        cerr << "CFA:" << endl;
     131        for ( int i = 1; i < argc; i += 1 ) {
     132            cerr << "argv[" << i << "]:\"" << argv[i] << "\"" << endl;
     133        } // for
    125134        #endif // __DEBUG_H__
    126135
     
    128137
    129138        for ( int i = 1; i < argc; i += 1 ) {
    130                 #ifdef __DEBUG_H__
    131                 cerr << "argv[" << i << "]:\"" << argv[i] << "\"" << endl;
    132                 #endif // __DEBUG_H__
    133139                arg = argv[i];                                                                  // convert to string value
    134                 #ifdef __DEBUG_H__
    135                 cerr << "arg:\"" << arg << "\"" << endl;
    136                 #endif // __DEBUG_H__
    137140                if ( prefix( arg, "-" ) ) {
    138141                        // pass through arguments
     
    178181                                if ( i == argc ) continue;                              // next argument available ?
    179182                                compiler_path = argv[i];
    180                                 if ( putenv( (char *)( *new string( string( "__U_COMPILER__=" ) + argv[i]) ).c_str() ) != 0 ) {
     183                                if ( putenv( (char *)( *new string( string( "__CFA_COMPILER__=" ) + argv[i]) ).c_str() ) != 0 ) {
    181184                                        cerr << argv[0] << " error, cannot set environment variable." << endl;
    182185                                        exit( EXIT_FAILURE );
     
    197200                                args[nargs] = argv[i];                                  // pass the argument along
    198201                                nargs += 1;
    199                         } else if ( arg == "-x" ) {
    200                                 xflag = true;
    201                                 args[nargs] = argv[i];                                  // pass the argument along
    202                                 nargs += 1;
    203                                 i += 1;                                                                 // advance to argument
    204                                 args[nargs] = argv[i];                                  // pass the argument along
    205                                 nargs += 1;
    206                                 // args[nargs] = ( *new string( string("-D__GCC_X__=") + argv[i] ) ).c_str(); // add the argument for -x
    207                                 // nargs += 1;
    208                         } else if ( prefix( arg, "-x" ) ) {
    209                                 xflag = true;
    210                                 args[nargs] = argv[i];                                  // pass the argument along
    211                                 nargs += 1;
    212                                 // args[nargs] = ( *new string( string("-D__GCC_X__=") + arg.substr(2) ) ).c_str(); // add the argument for -x
    213                                 // nargs += 1;
    214202                        } else if ( arg == "-w" ) {
    215203                                args[nargs] = argv[i];                                  // pass the argument along
     
    293281                        } // if
    294282                } else {
    295                         bool opt = false;
    296                         if ( ! xflag && suffix( arg ) ) {
     283                        bool cfa = suffix( arg, args, nargs );          // check suffix
     284                        args[nargs] = argv[i];                                          // concatenate file
     285                        nargs += 1;
     286                        if ( cfa ) {
    297287                                args[nargs] = "-x";
    298288                                nargs += 1;
    299                                 args[nargs] = "c";
    300                                 nargs += 1;
    301                                 // args[nargs] = ( *new string( string("-D__GCC_X__=c") ) ).c_str(); // add the argument for -x
    302                                 // nargs += 1;
    303                                 opt = true;
    304                         } // if
    305                         // concatenate other arguments
    306                         args[nargs] = argv[i];
    307                         nargs += 1;
    308                         if ( opt ) {
    309                                 args[nargs] = "-x";
    310                                 nargs += 1;
    311289                                args[nargs] = "none";
    312290                                nargs += 1;
    313                                 // args[nargs] = ( *new string( string("-D__GCC_X__=none") ) ).c_str(); // add the argument for -x
    314                                 // nargs += 1;
    315291                        } // if
    316292                        nonoptarg = true;
     
    319295        } // for
    320296
     297    args[nargs] = "-x";                                 // turn off language
     298    nargs += 1;
     299    args[nargs] = "none";
     300    nargs += 1;
     301
    321302        #ifdef __x86_64__
    322303        args[nargs] = "-mcx16";                                                         // allow double-wide CAA
     
    341322                args[nargs] = "-I" CFA_INCDIR;
    342323                nargs += 1;
    343                 if ( ! noincstd_flag ) {                                                        // do not use during build
    344                         args[nargs] = "-I" CFA_INCDIR "/stdhdr";
     324                if ( ! noincstd_flag ) {                                                // do not use during build
     325                        args[nargs] = "-I" CFA_INCDIR "stdhdr";
    345326                        nargs += 1;
    346327                } // if
    347                 args[nargs] = "-I" CFA_INCDIR "/concurrency";
    348                 nargs += 1;
    349                 args[nargs] = "-I" CFA_INCDIR "/containers";
     328                args[nargs] = "-I" CFA_INCDIR "concurrency";
     329                nargs += 1;
     330                args[nargs] = "-I" CFA_INCDIR "containers";
    350331                nargs += 1;
    351332        } else {
    352333                args[nargs] = "-I" TOP_SRCDIR "libcfa/src";
    353334                nargs += 1;
    354                 if ( ! noincstd_flag ) {                                                        // do not use during build
     335                if ( ! noincstd_flag ) {                                                // do not use during build
    355336                        args[nargs] = "-I" TOP_SRCDIR "libcfa/src" "/stdhdr";
    356337                        nargs += 1;
     
    377358        }
    378359
    379         const char * const arch = m32 ? CFA_32_CPU : (m64 ? CFA_64_CPU : CFA_DEFAULT_CPU);
     360        string arch = m32 ? CFA_32_CPU : (m64 ? CFA_64_CPU : CFA_DEFAULT_CPU);
     361        if ( ! m32 && ! m64 ) {
     362                if ( arch == "x86" ) {
     363                        args[nargs] = "-m32";
     364                        nargs += 1;
     365                } else if ( arch == "x64" ) {
     366                        args[nargs] = "-m64";
     367                        nargs += 1;
     368                }  // if
     369        } // if
    380370        const char * config = debug ? "debug": "nodebug";
    381371        string libdir = libbase + arch + "-" + config;
    382         if( !dirExists(libdir) ) {
     372
     373        if ( ! dirExists( libdir ) ) {
    383374                cerr << argv[0] << " internal error, configuration " << config << " not installed." << endl;
    384375                cerr << "Was looking for " << libdir << endl;
    385376                libdir = libbase + arch + "-" + "nolib";
    386         }
    387 
    388         if( !dirExists(libdir) ) {
     377        } // if
     378
     379        if ( ! dirExists( libdir ) ) {
    389380                cerr << argv[0] << " internal error, cannot find prelude directory." << endl;
    390381                cerr << "Was looking for " << libdir << endl;
    391382                exit( EXIT_FAILURE );
    392         }
     383        } // if
    393384
    394385        args[nargs] = ( *new string( string("-D__CFA_FLAG__=--prelude-dir=" ) + libdir + (intree ? "/prelude" : "")) ).c_str();
     
    472463
    473464        if ( Bprefix.length() == 0 ) {
    474                 Bprefix = !intree ? installlibdir : srcdriverdir;
     465                Bprefix = ! intree ? installlibdir : srcdriverdir;
     466                if ( Bprefix[Bprefix.length() - 1] != '/' ) Bprefix += '/';
    475467                args[nargs] = ( *new string( string("-D__GCC_BPREFIX__=") + Bprefix ) ).c_str();
    476468                nargs += 1;
     
    506498                args[nargs] = "-D__int8_t_defined";                             // prevent gcc type-size attributes
    507499                nargs += 1;
    508                 args[nargs] = ( *new string( string("-B") + Bprefix + "/" ) ).c_str();
     500                args[nargs] = ( *new string( string("-B") + Bprefix ) ).c_str();
    509501                nargs += 1;
    510502                args[nargs] = "-lm";
Note: See TracChangeset for help on using the changeset viewer.