Mercurial > hg > aboriginal
changeset 528:71f438cde285
Make compiler wrapper parse -M options correctly, so uClibc make utils works.
author | Rob Landley <rob@landley.net> |
---|---|
date | Mon, 08 Dec 2008 20:59:20 -0600 |
parents | 9e692a87a763 |
children | 71690bef8287 |
files | sources/toys/gcc-uClibc.c |
diffstat | 1 files changed, 11 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/sources/toys/gcc-uClibc.c Mon Dec 08 00:14:37 2008 -0600 +++ b/sources/toys/gcc-uClibc.c Mon Dec 08 20:59:20 2008 -0600 @@ -99,7 +99,7 @@ int linking = 1, use_static_linking = 0; int use_stdinc = 1, use_start = 1, use_stdlib = 1, use_pic = 0; int source_count = 0, verbose = 0; - int i, argcnt, liblen, lplen, sawM = 0, sawdotoa = 0, sawcES = 0; + int i, argcnt, liblen, lplen; char **gcc_argv, **libraries, **libpath; char *dlstr, *incstr, *devprefix, *libstr; char *cc, *rpath_link, *rpath; @@ -201,13 +201,20 @@ for ( i = 1 ; i < argc ; i++ ) { if (argv[i][0] == '-' && argv[i][1]) { /* option */ switch (argv[i][1]) { + case 'M': /* generate dependencies */ + { + char *p = argv[i]; + + // -M and -MM imply -E and thus no linking + // Other -MX options _don't_, including -MMD. + if (p[2] && (p[2]!='M' || p[3])) break; + } + // fall through + case 'c': /* compile or assemble */ case 'S': /* generate assembler code */ case 'E': /* preprocess only */ - case 'M': /* generate dependencies */ linking = 0; - if (argv[i][1] == 'M') sawM = 1; - else sawcES = 1; break; case 'L': /* library path */ @@ -364,16 +371,10 @@ break; } } else { /* assume it is an existing source file */ - char *p = argv[i] + strlen(argv[i]) - 2; - if (p > argv[i] && sawM && (!strcmp(p, ".o") || !strcmp(p, ".a"))) - sawdotoa = 1; ++source_count; } } - if (sawdotoa && sawM && !sawcES) - linking = 1; - argcnt = 0; if (ctor_dtor) { asprintf(crtbegin_path, "%s/gcc/lib/crtbegin.o", devprefix);