Browse Source

Patch from Alexander Pevzner <pzz@pzz.msk.ru> to fixup things when invoked as
the C++ compiler to to automagically add include/g++ into the include search
path, and automagically add -lstdc++ and -lm into the set of automatically
linked libraries.

Eric Andersen 23 years ago
parent
commit
38ff147a36
1 changed files with 11 additions and 1 deletions
  1. 11 1
      extra/gcc-uClibc/gcc-uClibc.c

+ 11 - 1
extra/gcc-uClibc/gcc-uClibc.c

@@ -303,7 +303,7 @@ int main(int argc, char **argv)
 		}
 	}
 
-	gcc_argv = __builtin_alloca(sizeof(char*) * (argc + 20));
+	gcc_argv = __builtin_alloca(sizeof(char*) * (argc + 64));
 	gcc_argument = __builtin_alloca(sizeof(char*) * (argc + 20));
 
 	i = 0; k = 0;
@@ -354,6 +354,12 @@ int main(int argc, char **argv)
 	}
 	if (use_stdinc && source_count) {
 	    gcc_argv[i++] = nostdinc;
+	    if (cplusplus) {
+		char *cppinc;
+		xstrcat(&cppinc, uClibc_inc[use_build_dir], "g++/", NULL);
+		gcc_argv[i++] = "-isystem";
+		gcc_argv[i++] = cppinc;
+	    }
 	    gcc_argv[i++] = "-isystem";
 	    gcc_argv[i++] = uClibc_inc[use_build_dir];
 	    gcc_argv[i++] = "-iwithprefix";
@@ -379,6 +385,10 @@ int main(int argc, char **argv)
 		for ( l = 0 ; l < m ; l++ ) {
 		    if (libraries[l]) gcc_argv[i++] = libraries[l];
 		}
+		if (cplusplus) {
+		    gcc_argv[ i++ ] = "-lstdc++";
+		    gcc_argv[ i++ ] = "-lm";
+		}
 		gcc_argv[i++] = "-lc";
 		gcc_argv[i++] = "-lgcc";
 		//gcc_argv[i++] = "-Wl,--end-group";