Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/driver/cfa.cc

    r6bfe5cc r157d094  
    1010// Created On       : Tue Aug 20 13:44:49 2002
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Feb  5 22:05:28 2018
    13 // Update Count     : 166
     12// Last Modified On : Mon May 14 14:16:33 2018
     13// Update Count     : 244
    1414//
    1515
     
    1919#include <unistd.h>                                                                             // execvp
    2020#include <string>                                                                               // STL version
    21 
     21#include <string.h>                                                                             // strcmp
     22
     23#include "Common/SemanticError.h"
    2224#include "config.h"                                                                             // configure info
    2325
     
    156158                                args[nargs] = argv[i];                                  // pass the argument along
    157159                                nargs += 1;
    158                         } else if ( prefix( arg, "-std=" ) ) {
     160                        } else if ( prefix( arg, "-std=" ) || prefix( arg, "--std=" ) ) {
    159161                                std_flag = true;                                                // -std=XX provided
    160162                                args[nargs] = argv[i];                                  // pass the argument along
    161163                                nargs += 1;
     164                        } else if ( arg == "-x" ) {                                     // lost so force along
     165                                args[nargs] = argv[i];                                  // pass the argument along
     166                                nargs += 1;
     167                                i += 1;                                                                 // advance to argument
     168                                args[nargs] = argv[i];                                  // pass the argument along
     169                                nargs += 1;
     170                                args[nargs] = ( *new string( string("-D__GCC_X__=") + argv[i] ) ).c_str(); // add the argument for -x
     171                                nargs += 1;
     172                        } else if ( prefix( arg, "-x" ) ) {                     // lost so force along
     173                                args[nargs] = argv[i];                                  // pass the argument along
     174                                nargs += 1;
     175                                args[nargs] = ( *new string( string("-D__GCC_X__=") + arg.substr(2) ) ).c_str(); // add the argument for -x
     176                                nargs += 1;
     177                        } else if ( arg == "-w" ) {
     178                                args[nargs] = argv[i];                                  // pass the argument along
     179                                nargs += 1;
     180                                args[nargs] = ( *new string( string("-D__CFA_FLAG__=") + arg ) ).c_str(); // add the argument for cfa-cpp
     181                                nargs += 1;
     182                        } else if ( prefix( arg, "-W" ) ) {                     // check before next tests
     183                                if ( arg == "-Werror" || arg == "-Wall" ) {
     184                                        args[nargs] = argv[i];                          // pass the argument along
     185                                        nargs += 1;
     186                                        args[nargs] = ( *new string( string("-D__CFA_FLAG__=") + arg ) ).c_str(); // add the argument for cfa-cpp
     187                                        nargs += 1;
     188                                } else {
     189                                        unsigned int adv = prefix( arg, "-Wno-" ) ? 5 : 2;
     190                                        args[nargs] = argv[i];                          // conditionally pass the argument along
     191                                        const char * warning = argv[i] + adv;     // extract warning
     192                                        if ( SemanticWarning_Exist( warning ) ) { // replace the argument for cfa-cpp
     193                                                args[nargs] = ( *new string( string("-D__CFA_FLAG__=") + arg ) ).c_str();
     194                                        } // if
     195                                        nargs += 1;
     196                                } // if
    162197                        } else if ( prefix( arg, "-B" ) ) {
    163198                                Bprefix = arg.substr(2);                                // strip the -B flag
     
    218253        } // for
    219254
     255#ifdef __x86_64__
     256        args[nargs] = "-mcx16";                                                         // allow double-wide CAA
     257        nargs += 1;
     258#endif // __x86_64__
     259
    220260#ifdef __DEBUG_H__
    221261        cerr << "args:";
     
    246286        if ( link ) {
    247287                #if ! defined(HAVE_LIBCFA_RELEASE)
    248                         if( !debug ) {
    249                                 cerr << "error: Option -nodebug is not available, libcfa was not installed." << endl;
     288                        if ( ! debug ) {
     289                                cerr << "error: Option -nodebug is unavailable, libcfa was not installed." << endl;
    250290                                exit( EXIT_FAILURE );
    251                                 }
     291                        } // if
    252292                #endif
    253293                #if ! defined(HAVE_LIBCFA_DEBUG)
    254                         if( debug ) {
    255                                 cerr << "error: Option -debug is not available, libcfa-d was not installed." << endl;
     294                        if ( debug ) {
     295                                cerr << "error: Option -debug is unavailable, libcfa-d was not installed." << endl;
    256296                                exit( EXIT_FAILURE );
    257                                 }
     297                        } // if
    258298                #endif
    259299
     
    270310                args[nargs] = "-L" CFA_LIBDIR;
    271311                nargs += 1;
    272                 if( debug ) {
     312                if ( debug ) {
    273313                        args[nargs] = "-lcfa-d";
    274314                } else {
    275315                        args[nargs] = "-lcfa";
    276                 }
     316                } // if
    277317                nargs += 1;
    278318                args[nargs] = "-lpthread";
     
    355395                args[nargs] = "-Wno-deprecated";
    356396                nargs += 1;
    357                 if ( ! std_flag ) {                                                             // default c99, if none specified
    358                         args[nargs] = "-std=gnu99";
     397                if ( ! std_flag ) {                                                             // default c11, if none specified
     398                        args[nargs] = "-std=gnu11";
    359399                        nargs += 1;
    360400                } // if
Note: See TracChangeset for help on using the changeset viewer.