Subversion Repositories Programming Utils

Rev

Rev 84 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 84 Rev 85
Line 79... Line 79...
79
        return ltrim(rtrim(s));
79
        return ltrim(rtrim(s));
80
}
80
}
81
81
82
Makefile::Makefile( const char* makefile, map<string,string>* inConfig ){
82
Makefile::Makefile( const char* makefile, map<string,string>* inConfig ){
83
        ifstream theFile( makefile );
83
        ifstream theFile( makefile );
84
        char* buffer;
-
 
85
        configuration = inConfig;
84
        configuration = inConfig;
86
85
-
 
86
        initializeMakefileVariables();
-
 
87
-
 
88
        char* buffer;
87
        buffer = (char*)malloc( 300 );
89
        buffer = (char*)malloc( 300 );
88
-
 
89
        initializeMakefileVariables();
-
 
90
90
91
        if( theFile.fail() ){
91
        if( theFile.fail() ){
92
                cerr << "ERROR: Couldn't open file " << makefile << endl;
92
                cerr << "ERROR: Couldn't open file " << makefile << endl;
93
                return;
93
                return;
94
        }
94
        }
95
95
96
        string* lastUsedVariable = NULL;
-
 
97
        set<string>* lastUsedList = NULL;
-
 
98
        bool append = false;
-
 
99
        char* equalsLocation;
-
 
-
 
96
        parseMakefileVariables( &theFile );
-
 
97
        theFile.seekg( 0 );
-
 
98
-
 
99
        char* equalsLocation = NULL;
-
 
100
        bool appendTarget = false;
-
 
101
        string* targetName = NULL;
100
        while( theFile.good() ){
102
        while( theFile.good() ){
101
                theFile.getline( buffer, 300 );
103
                theFile.getline( buffer, 300 );
102
104
103
                if( equalsLocation = strstr( buffer, "=" ) ){
-
 
-
 
105
                equalsLocation = strstr( buffer, "=" );
-
 
106
                if( equalsLocation != NULL && buffer[ 0 ] != '\t' ){
104
                        string beginning( buffer, equalsLocation );
107
                        string beginning( buffer, equalsLocation );
105
                        string end( equalsLocation + 1 );
108
                        string end( equalsLocation + 1 );
106
                        if( end[ end.size() ] == '\\' ){
109
                        if( end[ end.size() ] == '\\' ){
107
                                append = true;
-
 
108
                                end.resize( end.size() - 1 );
110
                                end.resize( end.size() - 1 );
109
                        }
111
                        }
110
                        beginning = trim( beginning );
112
                        beginning = trim( beginning );
111
                        end = trim( end );
113
                        end = trim( end );
112
                        if( standardVariables.find( beginning ) == standardVariables.end() ){
114
                        if( standardVariables.find( beginning ) == standardVariables.end() ){
113
                                //cout << "inserting |" << beginning << "| => |" << end << "|\n";
115
                                //cout << "inserting |" << beginning << "| => |" << end << "|\n";
114
                                makefileVariables.insert( pair<string,string>( beginning, end )  );
116
                                makefileVariables.insert( pair<string,string>( beginning, end )  );
115
                        }
117
                        }
116
                }
118
                }
117
119
118
                //if the append variable is set, we have not reached the end of our line
-
 
119
                if( append ){
-
 
120
                        if( lastUsedVariable != NULL ){
-
 
121
                                //append to our string variable
-
 
122
                                lastUsedVariable->append( parseList( buffer ) );
-
 
123
                        }else if( lastUsedList != NULL ){
-
 
124
                                //append to our set variable
-
 
125
                                parseFileList( buffer, lastUsedList );
-
 
126
                        }
-
 
127
-
 
128
                        //if we still haven't reached the end of our line, 
-
 
129
                        //loop again
-
 
130
                        if( theFile.gcount() >= 300 ){
-
 
-
 
120
                if( appendTarget ){
-
 
121
                        if( buffer[ 0 ] == '\t' ){
-
 
122
                                //this is still part of our target, so append it
-
 
123
                                string tmpLine( buffer );
-
 
124
                                if( targetName == NULL ){
-
 
125
                                        cerr << "ERROR: target is null!" << endl;
-
 
126
                                        continue;
-
 
127
                                }
-
 
128
                                makefileTargets[ *targetName ].push_back( tmpLine );
-
 
129
                        }else if( targetName == NULL ) {
-
 
130
                                targetName = new string( buffer );
131
                                continue;
131
                                continue;
-
 
132
                        }else{
-
 
133
                                //we must be finished; delete the target name and continue on
-
 
134
                                delete targetName;
-
 
135
                                appendTarget = false;
132
                        }
136
                        }
133
-
 
134
                        lastUsedVariable = NULL;
-
 
135
                        lastUsedList = NULL;
-
 
136
                        append = false;
-
 
137
                }
137
                }
138
138
139
-
 
140
                //if we have more than 300 characters, OR the last character on the line is a \,
-
 
141
                //we go onto the next line
-
 
142
                if( theFile.gcount() >= 300 || buffer[ theFile.gcount() ] == '\\' ){
-
 
143
                        append = true;
-
 
144
                }
-
 
145
-
 
146
                if( memcmp( buffer, "CPP_FILES", 9 ) == 0 ){
-
 
147
                        parseFileList( buffer, &cpp_files );
-
 
148
                        lastUsedList = &cpp_files;
-
 
149
                }
-
 
150
-
 
151
                if( memcmp( buffer, "H_FILES", 7 ) == 0 ){
-
 
152
                        parseFileList( buffer, &h_files );
-
 
153
                        lastUsedList = &h_files;
-
 
154
                }
-
 
155
-
 
156
                if( memcmp( buffer, "C_FILES", 7 ) == 0 ){
-
 
157
                        parseFileList( buffer, &c_files );
-
 
158
                        lastUsedList = &c_files;
-
 
159
                }
-
 
160
-
 
161
                if( memcmp( buffer, "PS_FILES", 8 ) == 0 ){
-
 
162
                        parseFileList( buffer, &ps_files );
-
 
163
                        lastUsedList = &ps_files;
-
 
164
                }
-
 
165
-
 
166
                if( memcmp( buffer, "S_FILES", 7 ) == 0 ){
-
 
167
                        parseFileList( buffer, &s_files );
-
 
168
                        lastUsedList = &s_files;
-
 
169
                }
-
 
170
-
 
171
                if( memcmp( buffer, "CPPFLAGS", 8 ) == 0 ){
-
 
172
                        cpp_flags = parseList( buffer );
-
 
173
                        lastUsedVariable = &cpp_flags;
-
 
174
                }
-
 
175
-
 
176
                if( memcmp( buffer, "CFLAGS", 6 ) == 0 ){
-
 
177
                        c_flags = parseList( buffer );
-
 
178
                        lastUsedVariable = &c_flags;
-
 
179
                }
-
 
180
-
 
181
                if( memcmp( buffer, "CXXFLAGS", 8 ) == 0 ){
-
 
182
                        cxx_flags = parseList( buffer );
-
 
183
                        lastUsedVariable = &cxx_flags;
-
 
184
                }
-
 
185
-
 
186
                if( memcmp( buffer, "CLIBFLAGS", 9 ) == 0 ){
-
 
187
                        clib_flags = parseList( buffer );
-
 
188
                        lastUsedVariable = &clib_flags;
-
 
189
                }
-
 
190
       
-
 
191
                if( memcmp( buffer, "CCLIBFLAGS", 10 ) == 0 ){
-
 
192
                        cxxlib_flags = parseList( buffer );
-
 
193
                        lastUsedVariable = &cxxlib_flags;
-
 
194
                }
-
 
195
-
 
196
                if( memcmp( buffer, "CPPFLAGS", 8 ) == 0 ){
-
 
197
                        cpp_flags = parseList( buffer );
-
 
198
                        lastUsedVariable = &cpp_flags;
-
 
-
 
139
                if( memcmp( buffer, "# makemake keep target", 22 ) == 0 ){
-
 
140
                        //keep this target for output
-
 
141
                        appendTarget = true;
199
                }
142
                }
200
               
-
 
201
                if( memcmp( buffer, "CC =", 4 ) == 0 ){
-
 
202
                        string parsed = parseList( buffer );
-
 
203
                        (*configuration)["c_compiler"] = trim( parsed );
-
 
204
                }
-
 
205
-
 
206
                if( memcmp( buffer, "CXX =", 5 ) == 0 ){
-
 
207
                        string parsed = parseList( buffer );
-
 
208
                        (*configuration)["cpp_compiler"] = trim( parsed );
-
 
209
                }
-
 
210
-
 
211
               
143
               
212
                /*
144
                /*
213
                printf("BUFFER IS |%s|\n", buffer );
145
                printf("BUFFER IS |%s|\n", buffer );
214
                fflush(stdout);
146
                fflush(stdout);
215
                */
147
                */
216
        }
148
        }
217
149
218
        free( buffer );
150
        free( buffer );
219
-
 
220
        //add in the variables that we parsed
-
 
221
        makefileVariables[ "CPPFLAGS" ] = cpp_flags;
-
 
222
        makefileVariables[ "CFLAGS" ] = c_flags;
-
 
223
        makefileVariables[ "CXXFLAGS" ] = cxx_flags;
-
 
224
        makefileVariables[ "CLIBFLAGS" ] = clib_flags;
-
 
225
        makefileVariables[ "CCLIBFLAGS" ] = cxxlib_flags;
-
 
226
151
227
        remove_old_files();
152
        remove_old_files();
228
}
153
}
229
154
230
Makefile::Makefile( std::map<string, string>* conf, DirList* dirList ){
155
Makefile::Makefile( std::map<string, string>* conf, DirList* dirList ){
Line 259... Line 184...
259
184
260
        write_header();
185
        write_header();
261
        write_variables();
186
        write_variables();
262
        write_lists();
187
        write_lists();
263
        write_main_targets();
188
        write_main_targets();
-
 
189
        writeCustomTargets();
264
        write_dependencies();
190
        write_dependencies();
265
        write_trailer( (*configuration)["c_compiler"] == "gcc" );
191
        write_trailer( (*configuration)["c_compiler"] == "gcc" );
266
}
192
}
267
193
268
/*Write::Write( DirList &dirlist, map<string, string> * conf ){
194
/*Write::Write( DirList &dirlist, map<string, string> * conf ){
Line 426... Line 352...
426
    copy(istreambuf_iterator<char>(in),
352
    copy(istreambuf_iterator<char>(in),
427
         istreambuf_iterator<char>(),
353
         istreambuf_iterator<char>(),
428
         ostreambuf_iterator<char>(cout));
354
         ostreambuf_iterator<char>(cout));
429
    cout << '\n'; // in case no end-of-line at end of file
355
    cout << '\n'; // in case no end-of-line at end of file
430
    cout << "########## End of flags from " << (*configuration)["header_file"] << "\n\n";
356
    cout << "########## End of flags from " << (*configuration)["header_file"] << "\n\n";
-
 
357
    ifstream headerMak( (*configuration)["header_file"].c_str() );
-
 
358
    parseMakefileVariables( &headerMak );
431
  } else {
359
  } else {
432
    cout << "########## Default flags (redefine these with a header.mak file if desired)\n";
360
    cout << "########## Default flags (redefine these with a header.mak file if desired)\n";
433
    cout << "CPPFLAGS = \t" << makefileVariables[ "CPPFLAGS" ] << "\n";
361
    cout << "CPPFLAGS = \t" << makefileVariables[ "CPPFLAGS" ] << "\n";
434
    cout << "CFLAGS = \t" << makefileVariables[ "CFLAGS" ] << "\n";
362
    cout << "CFLAGS = \t" << makefileVariables[ "CFLAGS" ] << "\n";
435
    cout << "CXXFLAGS = \t" << makefileVariables[ "CXXFLAGS" ] << "\n";
363
    cout << "CXXFLAGS = \t" << makefileVariables[ "CXXFLAGS" ] << "\n";
Line 633... Line 561...
633
         ++it ) {
561
         ++it ) {
634
      string basename( DirList::basename( *it) );
562
      string basename( DirList::basename( *it) );
635
563
636
      cout << basename << ":\t";
564
      cout << basename << ":\t";
637
      cout << basename << ".o $(OBJFILES)\n";
565
      cout << basename << ".o $(OBJFILES)\n";
638
      cout << "$(CC) -shared -Wl,-soname," << basename << ".so -o $(OBJFILES)\n";
-
 
-
 
566
      cout << "$(CC) -shared -Wl,-soname," << basename << ".so.$(MAJOR).$(MINOR) -o $(OBJFILES)\n";
639
    }
567
    }
640
  }
568
  }
641
569
642
}
570
}
643
571
Line 670... Line 598...
670
598
671
void Makefile::doFork(int fileds){
599
void Makefile::doFork(int fileds){
672
        //Child process
600
        //Child process
673
        dup2( fileds, STDOUT_FILENO ); //make output go to pipe instead of STDOUT
601
        dup2( fileds, STDOUT_FILENO ); //make output go to pipe instead of STDOUT
674
602
675
        set<string> allDefines;
-
 
-
 
603
        list<string> cppFlags;
-
 
604
-
 
605
printf("cppflags: %s\n", cpp_flags.c_str() );
676
606
677
        char* cstrCppFlags = (char*)malloc( cpp_flags.size() );
607
        char* cstrCppFlags = (char*)malloc( cpp_flags.size() );
678
        memcpy( cstrCppFlags, cpp_flags.c_str(), cpp_flags.size() + 1 );
608
        memcpy( cstrCppFlags, cpp_flags.c_str(), cpp_flags.size() + 1 );
679
        char* define = strtok( cstrCppFlags, " " );
-
 
680
        while( define != NULL && define < ( cstrCppFlags + cpp_flags.size() ) ){
-
 
681
                if( define[ 0 ] == '-' && define[ 1 ] == 'D' ){
-
 
682
                        //this is a define
-
 
683
                        allDefines.insert( string( define ) );
-
 
684
                }
-
 
685
                define = strtok( NULL, " " );
-
 
-
 
609
        char* flag = strtok( cstrCppFlags, " " );
-
 
610
        while( flag != NULL && flag < ( cstrCppFlags + cpp_flags.size() ) ){
-
 
611
                cppFlags.push_back( string( flag ) );
-
 
612
                flag = strtok( NULL, " " );
686
        }
613
        }
687
614
688
        int totalElements = cpp_files.size() + c_files.size() + allDefines.size() + 3; //all c/cpp files, plus three for "gcc" "-MM" [defines] [args] NULL
-
 
-
 
615
        int totalElements = cpp_files.size() + c_files.size() + cppFlags.size() + 3; //all c/cpp files, plus three for "gcc" "-MM" [defines] [args] NULL
689
        char** argArray = (char**)malloc( sizeof(char*) * totalElements );
616
        char** argArray = (char**)malloc( sizeof(char*) * totalElements );
690
        int currentArgSpot = 0;
617
        int currentArgSpot = 0;
691
618
692
        // put in the first parameters for the GCC exec call
619
        // put in the first parameters for the GCC exec call
693
        char* gcc = (char*)malloc(4);
620
        char* gcc = (char*)malloc(4);
Line 696... Line 623...
696
        memcpy( mm, "-MM", 4);
623
        memcpy( mm, "-MM", 4);
697
624
698
        argArray[currentArgSpot++] = gcc;
625
        argArray[currentArgSpot++] = gcc;
699
        argArray[currentArgSpot++] = mm;
626
        argArray[currentArgSpot++] = mm;
700
       
627
       
701
        //Now, let's add in each define statement
-
 
702
        for( set<string>::iterator it = allDefines.begin(); it != allDefines.end(); it++  ){
-
 
-
 
628
        //Now, let's add in each preprocessor flag
-
 
629
        for( list<string>::iterator it = cppFlags.begin(); it != cppFlags.end(); it++  ){
703
                char* thedefine = (char*)malloc( (*it).size() + 1 );
630
                char* thedefine = (char*)malloc( (*it).size() + 1 );
704
                memcpy( thedefine, (*it).c_str(), (*it).size() + 1 );
631
                memcpy( thedefine, (*it).c_str(), (*it).size() + 1 );
705
                argArray[currentArgSpot++] = thedefine;
632
                argArray[currentArgSpot++] = thedefine;
706
        }
633
        }
707
634
Line 717... Line 644...
717
                char* toAdd = (char*)malloc( (*it).size() + 1 );
644
                char* toAdd = (char*)malloc( (*it).size() + 1 );
718
                memcpy( toAdd, (*it).c_str(), (*it).size() + 1 );
645
                memcpy( toAdd, (*it).c_str(), (*it).size() + 1 );
719
                argArray[currentArgSpot++] = toAdd;
646
                argArray[currentArgSpot++] = toAdd;
720
        }
647
        }
721
        argArray[currentArgSpot] = NULL;
648
        argArray[currentArgSpot] = NULL;
-
 
649
-
 
650
        currentArgSpot = 0;
-
 
651
        while( argArray[ currentArgSpot ] != NULL ){
-
 
652
                printf( "%s\n", argArray[ currentArgSpot++ ] );
-
 
653
        }
722
654
723
        execvp( "gcc", argArray );
655
        execvp( "gcc", argArray );
724
656
725
        //should not get here
657
        //should not get here
726
        perror("execvp");
658
        perror("execvp");
Line 1011... Line 943...
1011
        standardVariables.insert( "H_FILES" );
943
        standardVariables.insert( "H_FILES" );
1012
        standardVariables.insert( "OBJFILES" );
944
        standardVariables.insert( "OBJFILES" );
1013
        standardVariables.insert( "PS_FILES" );
945
        standardVariables.insert( "PS_FILES" );
1014
        standardVariables.insert( "SOURCEFILES" );
946
        standardVariables.insert( "SOURCEFILES" );
1015
        standardVariables.insert( "S_FILES" );
947
        standardVariables.insert( "S_FILES" );
-
 
948
}
-
 
949
-
 
950
void Makefile::writeCustomTargets(){
-
 
951
        map<string,list<string> >::iterator iter;
-
 
952
        list<string>:: iterator lIter;
-
 
953
-
 
954
        for( iter = makefileTargets.begin(); iter != makefileTargets.end(); iter++ ){
-
 
955
                cout << "# makemake keep target" << endl;
-
 
956
                cout << iter->first << endl;
-
 
957
                for( lIter = iter->second.begin(); lIter != iter->second.end(); lIter++ ){
-
 
958
                        cout << *lIter << endl;
-
 
959
                }
-
 
960
        }
-
 
961
       
-
 
962
}
-
 
963
-
 
964
void Makefile::parseMakefileVariables( ifstream* theFile ){
-
 
965
        char* buffer;
-
 
966
        buffer = (char*)malloc( 300 );
-
 
967
-
 
968
        if( theFile->fail() ){
-
 
969
                cerr << "ERROR: Couldn't open file " << theFile << endl;
-
 
970
                return;
-
 
971
        }
-
 
972
-
 
973
        string* lastUsedVariable = NULL;
-
 
974
        set<string>* lastUsedList = NULL;
-
 
975
        bool append = false;
-
 
976
        char* equalsLocation;
-
 
977
        bool appendTarget = false;
-
 
978
        string* targetName = NULL;
-
 
979
        while( theFile->good() ){
-
 
980
                theFile->getline( buffer, 300 );
-
 
981
-
 
982
                equalsLocation = strstr( buffer, "=" );
-
 
983
                if( equalsLocation != NULL && buffer[ 0 ] != '\t' ){
-
 
984
                        string beginning( buffer, equalsLocation );
-
 
985
                        string end( equalsLocation + 1 );
-
 
986
                        if( end[ end.size() ] == '\\' ){
-
 
987
                                append = true;
-
 
988
                                end.resize( end.size() - 1 );
-
 
989
                        }
-
 
990
                        beginning = trim( beginning );
-
 
991
                        end = trim( end );
-
 
992
                        if( standardVariables.find( beginning ) == standardVariables.end() ){
-
 
993
                                //cout << "inserting |" << beginning << "| => |" << end << "|\n";
-
 
994
                                makefileVariables.insert( pair<string,string>( beginning, end )  );
-
 
995
                        }
-
 
996
                }
-
 
997
-
 
998
                //if the append variable is set, we have not reached the end of our line
-
 
999
                if( append ){
-
 
1000
                        if( lastUsedVariable != NULL ){
-
 
1001
                                //append to our string variable
-
 
1002
                                lastUsedVariable->append( parseList( buffer ) );
-
 
1003
                        }else if( lastUsedList != NULL ){
-
 
1004
                                //append to our set variable
-
 
1005
                                parseFileList( buffer, lastUsedList );
-
 
1006
                        }
-
 
1007
-
 
1008
                        //if we still haven't reached the end of our line, 
-
 
1009
                        //loop again
-
 
1010
                        if( theFile->gcount() >= 300 ){
-
 
1011
                                continue;
-
 
1012
                        }
-
 
1013
-
 
1014
                        lastUsedVariable = NULL;
-
 
1015
                        lastUsedList = NULL;
-
 
1016
                        append = false;
-
 
1017
                }
-
 
1018
-
 
1019
                if( appendTarget ){
-
 
1020
                        if( buffer[ 0 ] == '\t' ){
-
 
1021
                                //this is still part of our target, so append it
-
 
1022
                                string tmpLine( buffer );
-
 
1023
                                if( targetName == NULL ){
-
 
1024
                                        cerr << "ERROR: target is null!" << endl;
-
 
1025
                                        continue;
-
 
1026
                                }
-
 
1027
                                makefileTargets[ *targetName ].push_back( tmpLine );
-
 
1028
                        }else if( targetName == NULL ) {
-
 
1029
                                targetName = new string( buffer );
-
 
1030
                                continue;
-
 
1031
                        }else{
-
 
1032
                                //we must be finished; delete the target name and continue on
-
 
1033
                                delete targetName;
-
 
1034
                                appendTarget = false;
-
 
1035
                        }
-
 
1036
                }
-
 
1037
-
 
1038
                //if we have more than 300 characters, OR the last character on the line is a \,
-
 
1039
                //we go onto the next line
-
 
1040
                if( theFile->gcount() >= 300 || buffer[ theFile->gcount() ] == '\\' ){
-
 
1041
                        append = true;
-
 
1042
                }
-
 
1043
-
 
1044
                if( memcmp( buffer, "CPP_FILES", 9 ) == 0 ){
-
 
1045
                        parseFileList( buffer, &cpp_files );
-
 
1046
                        lastUsedList = &cpp_files;
-
 
1047
                }
-
 
1048
-
 
1049
                if( memcmp( buffer, "H_FILES", 7 ) == 0 ){
-
 
1050
                        parseFileList( buffer, &h_files );
-
 
1051
                        lastUsedList = &h_files;
-
 
1052
                }
-
 
1053
-
 
1054
                if( memcmp( buffer, "C_FILES", 7 ) == 0 ){
-
 
1055
                        parseFileList( buffer, &c_files );
-
 
1056
                        lastUsedList = &c_files;
-
 
1057
                }
-
 
1058
-
 
1059
                if( memcmp( buffer, "PS_FILES", 8 ) == 0 ){
-
 
1060
                        parseFileList( buffer, &ps_files );
-
 
1061
                        lastUsedList = &ps_files;
-
 
1062
                }
-
 
1063
-
 
1064
                if( memcmp( buffer, "S_FILES", 7 ) == 0 ){
-
 
1065
                        parseFileList( buffer, &s_files );
-
 
1066
                        lastUsedList = &s_files;
-
 
1067
                }
-
 
1068
-
 
1069
                if( memcmp( buffer, "CPPFLAGS", 8 ) == 0 ){
-
 
1070
                        cpp_flags = parseList( buffer );
-
 
1071
                        lastUsedVariable = &cpp_flags;
-
 
1072
                }
-
 
1073
-
 
1074
                if( memcmp( buffer, "CFLAGS", 6 ) == 0 ){
-
 
1075
                        c_flags = parseList( buffer );
-
 
1076
                        lastUsedVariable = &c_flags;
-
 
1077
                }
-
 
1078
-
 
1079
                if( memcmp( buffer, "CXXFLAGS", 8 ) == 0 ){
-
 
1080
                        cxx_flags = parseList( buffer );
-
 
1081
                        lastUsedVariable = &cxx_flags;
-
 
1082
                }
-
 
1083
-
 
1084
                if( memcmp( buffer, "CLIBFLAGS", 9 ) == 0 ){
-
 
1085
                        clib_flags = parseList( buffer );
-
 
1086
                        lastUsedVariable = &clib_flags;
-
 
1087
                }
-
 
1088
       
-
 
1089
                if( memcmp( buffer, "CCLIBFLAGS", 10 ) == 0 ){
-
 
1090
                        cxxlib_flags = parseList( buffer );
-
 
1091
                        lastUsedVariable = &cxxlib_flags;
-
 
1092
                }
-
 
1093
               
-
 
1094
                if( memcmp( buffer, "CC =", 4 ) == 0 ){
-
 
1095
                        string parsed = parseList( buffer );
-
 
1096
                        (*configuration)["c_compiler"] = trim( parsed );
-
 
1097
                }
-
 
1098
-
 
1099
                if( memcmp( buffer, "CXX =", 5 ) == 0 ){
-
 
1100
                        string parsed = parseList( buffer );
-
 
1101
                        (*configuration)["cpp_compiler"] = trim( parsed );
-
 
1102
                }
-
 
1103
-
 
1104
-
 
1105
                if( memcmp( buffer, "# makemake keep target", 22 ) == 0 ){
-
 
1106
                        //keep this target for output
-
 
1107
                        appendTarget = true;
-
 
1108
                }
-
 
1109
               
-
 
1110
                /*
-
 
1111
                printf("BUFFER IS |%s|\n", buffer );
-
 
1112
                fflush(stdout);
-
 
1113
                */
-
 
1114
        }
-
 
1115
-
 
1116
        free( buffer );
-
 
1117
-
 
1118
        //add in the variables that we parsed
-
 
1119
        makefileVariables[ "CPPFLAGS" ] = cpp_flags;
-
 
1120
        makefileVariables[ "CFLAGS" ] = c_flags;
-
 
1121
        makefileVariables[ "CXXFLAGS" ] = cxx_flags;
-
 
1122
        makefileVariables[ "CLIBFLAGS" ] = clib_flags;
-
 
1123
        makefileVariables[ "CCLIBFLAGS" ] = cxxlib_flags;
-
 
1124
-
 
1125
1016
}
1126
}