Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • driver/cfa.cc

    rdfb7c96 ra5121bf  
    1010// Created On       : Tue Aug 20 13:44:49 2002
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug 23 15:41:55 2018
    13 // Update Count     : 270
     12// Last Modified On : Fri Jul 13 17:40:12 2018
     13// Update Count     : 258
    1414//
    1515
     
    4343const string suffixes[NumSuffixes] = { "cfa", "hfa", };
    4444
    45 void suffix( string arg, const char * args[], int & nargs ) {
     45bool suffix( string arg ) {
    4646        //std::cerr << arg << std::endl;
    4747        size_t dot = arg.find_last_of( "." );
    4848        //std::cerr << dot << " " << (dot != string::npos ? arg.substr( dot + 1 ) : "fred" ) << std::endl;
    49         if ( dot == string::npos ) return;
     49        if ( dot == string::npos ) return false;
    5050        string sx = arg.substr( dot + 1 );
    5151        for ( int i = 0; i < NumSuffixes; i += 1 ) {
    52                 if ( sx == suffixes[i] ) {
    53                         args[nargs] = "-x";
    54                         nargs += 1;
    55                         args[nargs] = "c";
    56                         nargs += 1;
    57                         return;
    58                 } // if
     52                if ( sx == suffixes[i] ) return true;
    5953        } // for
     54        return false;
    6055} // suffix
    6156
     
    9186        string Major( str( CFA_VERSION_MAJOR ) ), Minor( str( CFA_VERSION_MINOR ) ), Patch( str( CFA_VERSION_PATCH ) );
    9287
    93         string installincdir( CFA_INCDIR );                                     // fixed location of include files
    94         string installlibdir( CFA_LIBDIR );                                     // fixed location of cc1 and cfa-cpp commands when installed
    95         string srcdriverdir ( TOP_BUILDDIR "driver");           // fixed location of cc1 and cfa-cpp commands when in tree
     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
    9691
    9792        string heading;                                                                         // banner printed at start of cfa compilation
     
    183178                                if ( i == argc ) continue;                              // next argument available ?
    184179                                compiler_path = argv[i];
    185                                 if ( putenv( (char *)( *new string( string( "__CFA_COMPILER__=" ) + argv[i]) ).c_str() ) != 0 ) {
     180                                if ( putenv( (char *)( *new string( string( "__U_COMPILER__=" ) + argv[i]) ).c_str() ) != 0 ) {
    186181                                        cerr << argv[0] << " error, cannot set environment variable." << endl;
    187182                                        exit( EXIT_FAILURE );
     
    299294                } else {
    300295                        bool opt = false;
    301                         if ( ! xflag ) {
    302                                 suffix( arg, args, nargs );                             // check suffix
     296                        if ( ! xflag && suffix( arg ) ) {
     297                                args[nargs] = "-x";
     298                                nargs += 1;
     299                                args[nargs] = "c";
     300                                nargs += 1;
    303301                                // args[nargs] = ( *new string( string("-D__GCC_X__=c") ) ).c_str(); // add the argument for -x
    304302                                // nargs += 1;
     
    343341                args[nargs] = "-I" CFA_INCDIR;
    344342                nargs += 1;
    345                 if ( ! noincstd_flag ) {                                                // do not use during build
    346                         args[nargs] = "-I" CFA_INCDIR "stdhdr";
     343                if ( ! noincstd_flag ) {                                                        // do not use during build
     344                        args[nargs] = "-I" CFA_INCDIR "/stdhdr";
    347345                        nargs += 1;
    348346                } // if
    349                 args[nargs] = "-I" CFA_INCDIR "concurrency";
    350                 nargs += 1;
    351                 args[nargs] = "-I" CFA_INCDIR "containers";
     347                args[nargs] = "-I" CFA_INCDIR "/concurrency";
     348                nargs += 1;
     349                args[nargs] = "-I" CFA_INCDIR "/containers";
    352350                nargs += 1;
    353351        } else {
    354352                args[nargs] = "-I" TOP_SRCDIR "libcfa/src";
    355353                nargs += 1;
    356                 if ( ! noincstd_flag ) {                                                // do not use during build
     354                if ( ! noincstd_flag ) {                                                        // do not use during build
    357355                        args[nargs] = "-I" TOP_SRCDIR "libcfa/src" "/stdhdr";
    358356                        nargs += 1;
     
    363361                nargs += 1;
    364362        }
    365 
    366         // add stdbool to get defines for bool/true/false
    367         args[nargs] = "-imacros";
    368         nargs += 1;
    369         args[nargs] = "stdbool.h";
    370         nargs += 1;
    371363
    372364        string libbase;
     
    379371        }
    380372
    381         string arch = m32 ? CFA_32_CPU : (m64 ? CFA_64_CPU : CFA_DEFAULT_CPU);
    382         if ( ! m32 && ! m64 && arch == "x86" ) {                        // no override and 32-bit architecture
    383                 args[nargs] = "-m32";
    384                 nargs += 1;
    385         } // if
     373        const char * const arch = m32 ? CFA_32_CPU : (m64 ? CFA_64_CPU : CFA_DEFAULT_CPU);
    386374        const char * config = debug ? "debug": "nodebug";
    387375        string libdir = libbase + arch + "-" + config;
    388 
    389         if ( ! dirExists( libdir ) ) {
     376        if( !dirExists(libdir) ) {
    390377                cerr << argv[0] << " internal error, configuration " << config << " not installed." << endl;
    391378                cerr << "Was looking for " << libdir << endl;
    392379                libdir = libbase + arch + "-" + "nolib";
    393         } // if
    394 
    395         if ( ! dirExists( libdir ) ) {
     380        }
     381
     382        if( !dirExists(libdir) ) {
    396383                cerr << argv[0] << " internal error, cannot find prelude directory." << endl;
    397384                cerr << "Was looking for " << libdir << endl;
    398385                exit( EXIT_FAILURE );
    399         } // if
     386        }
    400387
    401388        args[nargs] = ( *new string( string("-D__CFA_FLAG__=--prelude-dir=" ) + libdir + (intree ? "/prelude" : "")) ).c_str();
     
    414401                nargs += 1;
    415402                args[nargs] = "--undefined=__cfaabi_appready_startup";
    416                 nargs += 1;
    417                 args[nargs] = "-Xlinker";
    418                 nargs += 1;
    419                 args[nargs] = "--undefined=__cfaabi_dbg_record";
    420403                nargs += 1;
    421404
     
    477460
    478461        if ( Bprefix.length() == 0 ) {
    479                 Bprefix = ! intree ? installlibdir : srcdriverdir;
    480                 if ( Bprefix[Bprefix.length() - 1] != '/' ) Bprefix += '/';
     462                Bprefix = !intree ? installlibdir : srcdriverdir;
    481463                args[nargs] = ( *new string( string("-D__GCC_BPREFIX__=") + Bprefix ) ).c_str();
    482464                nargs += 1;
     
    512494                args[nargs] = "-D__int8_t_defined";                             // prevent gcc type-size attributes
    513495                nargs += 1;
    514                 args[nargs] = ( *new string( string("-B") + Bprefix ) ).c_str();
     496                args[nargs] = ( *new string( string("-B") + Bprefix + "/" ) ).c_str();
    515497                nargs += 1;
    516498                args[nargs] = "-lm";
Note: See TracChangeset for help on using the changeset viewer.