Mercurial > hg > aboriginal
annotate sources/toys/gcc-uClibc.c @ 74:752ca43084d7
Added tag 0.0.1 for changeset 8b75dee28f40
author | Rob Landley <rob@landley.net> |
---|---|
date | Fri, 29 Dec 2006 20:00:27 -0500 |
parents | 79295919b775 |
children | 5703436a408e |
rev | line source |
---|---|
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
1 /* vi: set ts=4 :*/ |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
2 /* |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
3 * Copyright (C) 2000 Manuel Novoa III |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
4 * Copyright (C) 2002-2003 Erik Andersen |
22
775c1fdc1730
Minor cleanup on the wrapper script (much more cleanup needed before it's
Rob Landley <rob@landley.net>
parents:
20
diff
changeset
|
5 * Copyright (C) 2006 Rob Landley <rob@landley.net> |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
6 * |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
7 * Wrapper to use uClibc with gcc, and make gcc relocatable. |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
8 */ |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
9 |
16
7946bc54424b
Some more work on the wrapper. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents:
14
diff
changeset
|
10 #define _GNU_SOURCE |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
11 #include <stdio.h> |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
12 #include <stdlib.h> |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
13 #include <stdarg.h> |
57
f393a630a5b3
Weird ordering dependency. I think it's a uClibc bug?
Rob Landley <rob@landley.net>
parents:
56
diff
changeset
|
14 #include <strings.h> |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
15 #include <string.h> |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
16 #include <unistd.h> |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
17 #include <errno.h> |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
18 #include <sys/stat.h> |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
19 #include <sys/wait.h> |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
20 |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
21 static char *topdir; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
22 static char static_linking[] = "-static"; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
23 static char nostdinc[] = "-nostdinc"; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
24 static char nostartfiles[] = "-nostartfiles"; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
25 static char nodefaultlibs[] = "-nodefaultlibs"; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
26 static char nostdlib[] = "-nostdlib"; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
27 |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
28 // For C++ |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
29 static char nostdinc_plus[] = "-nostdinc++"; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
30 |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
31 |
14
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
32 // Confirm that a regular file exists, and (optionally) has the executable bit. |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
33 int is_file(char *filename, int has_exe) |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
34 { |
14
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
35 // Confirm it has the executable bit set, if necessary. |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
36 if (!has_exe || !access(filename, X_OK)) { |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
37 struct stat st; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
38 |
14
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
39 // Confirm it exists and is not a directory. |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
40 if (!stat(filename, &st) && S_ISREG(st.st_mode)) return 1; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
41 } |
14
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
42 return 0; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
43 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
44 |
14
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
45 // Find an executable in a colon-separated path |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
46 |
14
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
47 char *find_in_path(char *path, char *filename, int has_exe) |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
48 { |
14
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
49 char *cwd = getcwd(NULL, 0); |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
50 |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
51 if (index(filename, '/') && is_file(filename, has_exe)) |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
52 return strdup(filename); |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
53 |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
54 for (;;) { |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
55 char *str, *next = path ? index(path, ':') : NULL; |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
56 int len = next ? next-path : strlen(path); |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
57 |
64
51b8220c37e7
Make wrapper script work when /bin is a symlink to /usr/bin and the wrapper
Rob Landley <rob@landley.net>
parents:
63
diff
changeset
|
58 // The +3 is a corner case: if strlen(filename) is 1, make sure we |
51b8220c37e7
Make wrapper script work when /bin is a symlink to /usr/bin and the wrapper
Rob Landley <rob@landley.net>
parents:
63
diff
changeset
|
59 // have enough space to append ".." to make topdir. |
51b8220c37e7
Make wrapper script work when /bin is a symlink to /usr/bin and the wrapper
Rob Landley <rob@landley.net>
parents:
63
diff
changeset
|
60 str = malloc(strlen(filename) + (len ? len : strlen(cwd)) + 3); |
14
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
61 if (!len) sprintf(str, "%s/%s", cwd, filename); |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
62 else { |
16
7946bc54424b
Some more work on the wrapper. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents:
14
diff
changeset
|
63 char *str2 = str; |
7946bc54424b
Some more work on the wrapper. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents:
14
diff
changeset
|
64 |
14
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
65 strncpy(str, path, len); |
16
7946bc54424b
Some more work on the wrapper. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents:
14
diff
changeset
|
66 str2 = str+len; |
7946bc54424b
Some more work on the wrapper. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents:
14
diff
changeset
|
67 *(str2++) = '/'; |
7946bc54424b
Some more work on the wrapper. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents:
14
diff
changeset
|
68 strcpy(str2, filename); |
14
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
69 } |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
70 |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
71 // If it's not a directory, return it. |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
72 if (is_file(str, has_exe)) return str; |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
73 else free(str); |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
74 |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
75 if (!next) break; |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
76 path += len; |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
77 path++; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
78 } |
14
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
79 free(cwd); |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
80 |
14
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
81 return NULL; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
82 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
83 |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
84 int main(int argc, char **argv) |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
85 { |
20
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
86 int use_build_dir = 0, linking = 1, use_static_linking = 0; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
87 int use_stdinc = 1, use_start = 1, use_stdlib = 1, use_pic = 0; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
88 int source_count = 0, use_rpath = 0, verbose = 0; |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
89 int i, argcnt, liblen, n, sawM = 0, sawdotoa = 0, sawcES = 0; |
16
7946bc54424b
Some more work on the wrapper. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents:
14
diff
changeset
|
90 char **gcc_argv, **libraries, **libpath; |
14
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
91 char *dlstr, *incstr, *devprefix, *libstr, *build_dlstr = 0; |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
92 char *cc, *ep, *rpath_link[2], *rpath[2], *uClibc_inc[2], *our_lib_path[2]; |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
93 char *crt0_path[2], *crtbegin_path[2], *crtend_path[2]; |
42
7b0f34fbc35a
Fix inappropriate activation of profiling support, and add environment variable
Rob Landley <rob@landley.net>
parents:
30
diff
changeset
|
94 char *debug_wrapper=getenv("DEBUG_WRAPPER"); |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
95 |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
96 // For C++ |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
97 |
14
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
98 char *crti_path[2], *crtn_path[2], *cpp = NULL; |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
99 int len, ctor_dtor = 1, cplusplus = 0, use_nostdinc_plus = 0; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
100 |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
101 // For profiling |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
102 int profile = 0; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
103 char *gcrt1_path[2]; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
104 |
42
7b0f34fbc35a
Fix inappropriate activation of profiling support, and add environment variable
Rob Landley <rob@landley.net>
parents:
30
diff
changeset
|
105 if(debug_wrapper) { |
7b0f34fbc35a
Fix inappropriate activation of profiling support, and add environment variable
Rob Landley <rob@landley.net>
parents:
30
diff
changeset
|
106 dprintf(2,"incoming: "); |
7b0f34fbc35a
Fix inappropriate activation of profiling support, and add environment variable
Rob Landley <rob@landley.net>
parents:
30
diff
changeset
|
107 for(gcc_argv=argv;*gcc_argv;gcc_argv++) dprintf(2,"%s ",*gcc_argv); |
7b0f34fbc35a
Fix inappropriate activation of profiling support, and add environment variable
Rob Landley <rob@landley.net>
parents:
30
diff
changeset
|
108 dprintf(2,"\n\n"); |
7b0f34fbc35a
Fix inappropriate activation of profiling support, and add environment variable
Rob Landley <rob@landley.net>
parents:
30
diff
changeset
|
109 } |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
110 |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
111 // Allocate space for new command line |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
112 gcc_argv = __builtin_alloca(sizeof(char*) * (argc + 128)); |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
113 |
14
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
114 // What directory is the wrapper script in? |
16
7946bc54424b
Some more work on the wrapper. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents:
14
diff
changeset
|
115 if(!(topdir = find_in_path(getenv("PATH"), argv[0], 1))) { |
14
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
116 fprintf(stderr, "can't find %s in $PATH\n", argv[0]); |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
117 exit(1); |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
118 } else { |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
119 char *path = getenv("PATH"), *temp; |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
120 |
64
51b8220c37e7
Make wrapper script work when /bin is a symlink to /usr/bin and the wrapper
Rob Landley <rob@landley.net>
parents:
63
diff
changeset
|
121 // Add that directory to the start of $PATH. (Better safe than sorry.) |
16
7946bc54424b
Some more work on the wrapper. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents:
14
diff
changeset
|
122 *rindex(topdir,'/') = 0; |
7946bc54424b
Some more work on the wrapper. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents:
14
diff
changeset
|
123 temp = malloc(strlen(topdir)+strlen(path)+7); |
7946bc54424b
Some more work on the wrapper. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents:
14
diff
changeset
|
124 sprintf(temp,"PATH=%s:%s",topdir,path); |
14
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
125 putenv(temp); |
16
7946bc54424b
Some more work on the wrapper. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents:
14
diff
changeset
|
126 |
64
51b8220c37e7
Make wrapper script work when /bin is a symlink to /usr/bin and the wrapper
Rob Landley <rob@landley.net>
parents:
63
diff
changeset
|
127 // The directory above the wrapper script should have include, gcc, |
65
79295919b775
Ok, when appending .. instead of truncating at /, remember the "stop truncating"
Rob Landley <rob@landley.net>
parents:
64
diff
changeset
|
128 // and lib directories. However, the script could have a symlink |
79295919b775
Ok, when appending .. instead of truncating at /, remember the "stop truncating"
Rob Landley <rob@landley.net>
parents:
64
diff
changeset
|
129 // pointing to its directory (ala /bin -> /usr/bin), so append ".." |
79295919b775
Ok, when appending .. instead of truncating at /, remember the "stop truncating"
Rob Landley <rob@landley.net>
parents:
64
diff
changeset
|
130 // instead of trucating the path. |
79295919b775
Ok, when appending .. instead of truncating at /, remember the "stop truncating"
Rob Landley <rob@landley.net>
parents:
64
diff
changeset
|
131 strcat(topdir,"/.."); |
14
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
132 } |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
133 |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
134 // What's the name of the C compiler we're wrapping? (It may have a |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
135 // cross-prefix.) |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
136 cc = getenv("UCLIBC_CC"); |
18
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
137 if (!cc) cc = "gcc-unwrapped"; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
138 |
16
7946bc54424b
Some more work on the wrapper. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents:
14
diff
changeset
|
139 |
14
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
140 // Check end of name, since there could be a cross-prefix on the thing |
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
141 len = strlen(argv[0]); |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
142 if (!strcmp(argv[0]+len-2, "ld")) { |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
143 // We're wrapping the linker. |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
144 // Wrapping the c++ compiler? |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
145 } else if (!strcmp(argv[0]+len-3, "g++") || !strcmp(argv[0]+len-3, "c++")) { |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
146 len = strlen(cc); |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
147 if (strcmp(cc+len-3, "gcc")==0) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
148 cpp = strdup(cc); |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
149 cpp[len-1]='+'; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
150 cpp[len-2]='+'; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
151 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
152 cplusplus = 1; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
153 use_nostdinc_plus = 1; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
154 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
155 |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
156 devprefix = getenv("UCLIBC_DEVEL_PREFIX"); |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
157 if (!devprefix) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
158 devprefix = topdir; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
159 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
160 |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
161 incstr = getenv("UCLIBC_GCC_INC"); |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
162 libstr = getenv("UCLIBC_GCC_LIB"); |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
163 |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
164 ep = getenv("UCLIBC_ENV"); |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
165 if (!ep) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
166 ep = ""; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
167 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
168 |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
169 if (strstr(ep,"build") != 0) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
170 use_build_dir = 1; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
171 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
172 |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
173 if (strstr(ep,"rpath") != 0) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
174 use_rpath = 1; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
175 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
176 |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
177 |
18
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
178 asprintf(rpath_link,"-Wl,-rpath-link,%s/lib", devprefix); |
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
179 asprintf(rpath, "-Wl,-rpath,%s/lib", devprefix); |
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
180 asprintf(uClibc_inc, "%s/include/", devprefix); |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
181 |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
182 //#ifdef CTOR_DTOR |
18
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
183 asprintf(crt0_path, "%s/lib/crt1.o", devprefix); |
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
184 asprintf(crti_path, "%s/lib/crti.o", devprefix); |
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
185 asprintf(crtn_path, "%s/lib/crtn.o", devprefix); |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
186 //#else |
18
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
187 // *crt0_path = asprintf("%s/lib/crt0.o", devprefix); |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
188 //#endif |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
189 |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
190 // profiling |
18
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
191 asprintf(gcrt1_path, "%s/lib/gcrt1.o", devprefix, "/lib/gcrt1.o"); |
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
192 asprintf(our_lib_path, "-L%s/lib", devprefix); |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
193 |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
194 // Figure out where the dynamic linker is. |
63
89cf9497824e
Teach the native build about ld-uClibc.so.0 can living in /tools.
Rob Landley <rob@landley.net>
parents:
57
diff
changeset
|
195 dlstr = getenv("UCLIBC_DYNAMIC_LINKER"); |
89cf9497824e
Teach the native build about ld-uClibc.so.0 can living in /tools.
Rob Landley <rob@landley.net>
parents:
57
diff
changeset
|
196 if (!dlstr) dlstr = "/lib/ld-uClibc.so.0"; |
89cf9497824e
Teach the native build about ld-uClibc.so.0 can living in /tools.
Rob Landley <rob@landley.net>
parents:
57
diff
changeset
|
197 asprintf(&dlstr, "-Wl,--dynamic-linker,%s", dlstr); |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
198 |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
199 liblen = 0; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
200 libraries = __builtin_alloca(sizeof(char*) * (argc)); |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
201 libraries[liblen] = '\0'; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
202 |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
203 n = 0; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
204 libpath = __builtin_alloca(sizeof(char*) * (argc)); |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
205 libpath[n] = '\0'; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
206 |
18
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
207 // Parse the incoming gcc arguments. |
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
208 |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
209 for ( i = 1 ; i < argc ; i++ ) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
210 if (argv[i][0] == '-' && argv[i][1]) { /* option */ |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
211 switch (argv[i][1]) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
212 case 'c': /* compile or assemble */ |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
213 case 'S': /* generate assembler code */ |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
214 case 'E': /* preprocess only */ |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
215 case 'M': /* generate dependencies */ |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
216 linking = 0; |
18
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
217 if (argv[i][1] == 'M') sawM = 1; |
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
218 else sawcES = 1; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
219 break; |
18
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
220 |
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
221 case 'L': /* library path */ |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
222 libpath[n++] = argv[i]; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
223 libpath[n] = '\0'; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
224 if (argv[i][2] == 0) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
225 argv[i] = '\0'; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
226 libpath[n++] = argv[++i]; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
227 libpath[n] = '\0'; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
228 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
229 argv[i] = '\0'; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
230 break; |
18
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
231 |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
232 case 'l': /* library */ |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
233 libraries[liblen++] = argv[i]; |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
234 libraries[liblen] = '\0'; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
235 argv[i] = '\0'; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
236 break; |
18
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
237 |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
238 case 'v': /* verbose */ |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
239 if (argv[i][2] == 0) verbose = 1; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
240 printf("Invoked as %s\n", argv[0]); |
16
7946bc54424b
Some more work on the wrapper. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents:
14
diff
changeset
|
241 printf("Reference path: %s\n", topdir); |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
242 break; |
18
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
243 |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
244 case 'n': |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
245 if (strcmp(nostdinc,argv[i]) == 0) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
246 use_stdinc = 0; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
247 } else if (strcmp(nostartfiles,argv[i]) == 0) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
248 ctor_dtor = 0; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
249 use_start = 0; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
250 } else if (strcmp(nodefaultlibs,argv[i]) == 0) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
251 use_stdlib = 0; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
252 argv[i] = '\0'; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
253 } else if (strcmp(nostdlib,argv[i]) == 0) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
254 ctor_dtor = 0; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
255 use_start = 0; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
256 use_stdlib = 0; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
257 } else if (strcmp(nostdinc_plus,argv[i]) == 0) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
258 if (cplusplus==1) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
259 use_nostdinc_plus = 0; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
260 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
261 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
262 break; |
18
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
263 |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
264 case 's': |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
265 if (strstr(argv[i],static_linking) != NULL) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
266 use_static_linking = 1; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
267 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
268 if (strcmp("-shared",argv[i]) == 0) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
269 use_start = 0; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
270 use_pic = 1; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
271 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
272 break; |
18
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
273 |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
274 case 'W': /* -static could be passed directly to ld */ |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
275 if (strncmp("-Wl,",argv[i],4) == 0) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
276 if (strstr(argv[i],static_linking) != 0) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
277 use_static_linking = 1; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
278 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
279 if (strstr(argv[i],"--dynamic-linker") != 0) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
280 dlstr = 0; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
281 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
282 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
283 break; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
284 |
20
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
285 case 'p': |
29
db08bdb5e9de
The poor design of the gcc command line never ceases to amaze. Notice how
Rob Landley <rob@landley.net>
parents:
28
diff
changeset
|
286 wow_this_sucks: |
20
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
287 if (!strncmp("-print-",argv[i],7)) { |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
288 char *temp, *temp2; |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
289 int itemp, showall = 0; |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
290 |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
291 temp = argv[i]+7; |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
292 if (!strcmp(temp, "search-dirs")) { |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
293 printf("install: %s/\n",devprefix); |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
294 printf("programs: %s\n",getenv("PATH")); |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
295 printf("libraries: "); |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
296 temp2 = ""; |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
297 showall = 1; |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
298 } else if (!strncmp(temp, "file-name=", 10)) |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
299 temp2 = temp+10; |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
300 else if (!strcmp(temp, "libgcc-file-name")) |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
301 temp2="libgcc.a"; |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
302 else break; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
303 |
20
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
304 // Find this entry in the library path. |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
305 for(itemp=0;;itemp++) { |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
306 if (itemp == n) { |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
307 asprintf(&temp, "%s/gcc/lib/%s", devprefix, temp2); |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
308 } else if (itemp == n+1) { |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
309 // This is so "include" finds the gcc internal |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
310 // include dir. The uClibc build needs this. |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
311 asprintf(&temp, "%s/gcc/%s", devprefix, temp2); |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
312 } else if (itemp == n+2) { |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
313 temp = temp2; |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
314 break; |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
315 } else { |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
316 asprintf(&temp, "%s/%s", libpath[itemp], |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
317 temp2); |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
318 } |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
319 if (showall) printf(":%s"+(itemp?0:1), temp); |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
320 else if (!access(temp, F_OK)) break; |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
321 } |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
322 |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
323 printf("%s\n"+(showall ? 2 : 0), temp); |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
324 exit(0); |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
325 |
44067ab61cd2
Switch linking back on as the default, add support for -print-search-dirs,
Rob Landley <rob@landley.net>
parents:
19
diff
changeset
|
326 // Profiling. |
42
7b0f34fbc35a
Fix inappropriate activation of profiling support, and add environment variable
Rob Landley <rob@landley.net>
parents:
30
diff
changeset
|
327 } else if (!strcmp("-pg",argv[i])) profile = 1; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
328 break; |
18
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
329 |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
330 case 'f': |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
331 /* Check if we are doing PIC */ |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
332 if (strcmp("-fPIC",argv[i]) == 0) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
333 use_pic = 1; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
334 } else if (strcmp("-fpic",argv[i]) == 0) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
335 use_pic = 1; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
336 |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
337 // profiling |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
338 } else if (strcmp("-fprofile-arcs",argv[i]) == 0) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
339 profile = 1; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
340 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
341 break; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
342 |
19
b5ffd82d9ae5
Two problems: 1) Needed to parse -print-file-name= to make the uClibc build
Rob Landley <rob@landley.net>
parents:
18
diff
changeset
|
343 // --longopts |
b5ffd82d9ae5
Two problems: 1) Needed to parse -print-file-name= to make the uClibc build
Rob Landley <rob@landley.net>
parents:
18
diff
changeset
|
344 |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
345 case '-': |
29
db08bdb5e9de
The poor design of the gcc command line never ceases to amaze. Notice how
Rob Landley <rob@landley.net>
parents:
28
diff
changeset
|
346 if (!strncmp(argv[i],"--print-",8)) { |
db08bdb5e9de
The poor design of the gcc command line never ceases to amaze. Notice how
Rob Landley <rob@landley.net>
parents:
28
diff
changeset
|
347 argv[i]++; |
db08bdb5e9de
The poor design of the gcc command line never ceases to amaze. Notice how
Rob Landley <rob@landley.net>
parents:
28
diff
changeset
|
348 goto wow_this_sucks; |
db08bdb5e9de
The poor design of the gcc command line never ceases to amaze. Notice how
Rob Landley <rob@landley.net>
parents:
28
diff
changeset
|
349 } else if (strstr(argv[i]+1,static_linking) != NULL) { |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
350 use_static_linking = 1; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
351 argv[i]='\0'; |
19
b5ffd82d9ae5
Two problems: 1) Needed to parse -print-file-name= to make the uClibc build
Rob Landley <rob@landley.net>
parents:
18
diff
changeset
|
352 } else if (!strcmp("--version",argv[i])) { |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
353 printf("uClibc "); |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
354 fflush(stdout); |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
355 break; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
356 } else if (strcmp("--uclibc-use-build-dir",argv[i]) == 0) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
357 use_build_dir = 1; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
358 argv[i]='\0'; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
359 } else if (strcmp("--uclibc-use-rpath",argv[i]) == 0) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
360 use_rpath = 1; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
361 argv[i]='\0'; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
362 } else if (strcmp ("--uclibc-cc", argv[i]) == 0 && argv[i + 1]) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
363 cc = argv[i + 1]; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
364 argv[i] = 0; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
365 argv[i + 1] = 0; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
366 } else if (strncmp ("--uclibc-cc=", argv[i], 12) == 0) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
367 cc = argv[i] + 12; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
368 argv[i] = 0; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
369 } else if (strcmp("--uclibc-no-ctors",argv[i]) == 0) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
370 ctor_dtor = 0; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
371 argv[i]='\0'; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
372 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
373 break; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
374 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
375 } else { /* assume it is an existing source file */ |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
376 char *p = strchr (argv[i], '\0') - 2; |
18
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
377 if (p > argv[i] && sawM && (!strcmp(p, ".o") || !strcmp(p, ".a"))) |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
378 sawdotoa = 1; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
379 ++source_count; |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
380 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
381 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
382 |
19
b5ffd82d9ae5
Two problems: 1) Needed to parse -print-file-name= to make the uClibc build
Rob Landley <rob@landley.net>
parents:
18
diff
changeset
|
383 if (sawdotoa && sawM && !sawcES) |
b5ffd82d9ae5
Two problems: 1) Needed to parse -print-file-name= to make the uClibc build
Rob Landley <rob@landley.net>
parents:
18
diff
changeset
|
384 linking = 1; |
b5ffd82d9ae5
Two problems: 1) Needed to parse -print-file-name= to make the uClibc build
Rob Landley <rob@landley.net>
parents:
18
diff
changeset
|
385 |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
386 argcnt = 0; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
387 if (ctor_dtor) { |
18
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
388 asprintf(crtbegin_path, "%s/gcc/lib/crtbegin.o", devprefix); |
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
389 asprintf(crtbegin_path+1, "%s/gcc/lib/crtbeginS.o", devprefix); |
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
390 asprintf(crtend_path, "%s/gcc/lib/crtend.o", devprefix); |
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
391 asprintf(crtend_path+1, "%s/gcc/lib/crtendS.o", devprefix); |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
392 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
393 |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
394 gcc_argv[argcnt++] = cpp ? cpp : cc; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
395 |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
396 if (cplusplus) gcc_argv[argcnt++] = "-fno-use-cxa-atexit"; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
397 |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
398 if (linking && source_count) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
399 //#if defined HAS_ELF && ! defined HAS_MMU |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
400 // gcc_argv[argcnt++] = "-Wl,-elf2flt"; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
401 //#endif |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
402 gcc_argv[argcnt++] = nostdlib; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
403 if (use_static_linking) { |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
404 gcc_argv[argcnt++] = static_linking; |
16
7946bc54424b
Some more work on the wrapper. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents:
14
diff
changeset
|
405 } else { |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
406 if (dlstr && use_build_dir) { |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
407 gcc_argv[argcnt++] = build_dlstr; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
408 } else if (dlstr) { |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
409 gcc_argv[argcnt++] = dlstr; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
410 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
411 if (use_rpath) { |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
412 gcc_argv[argcnt++] = rpath[use_build_dir]; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
413 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
414 } |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
415 for ( i = 0 ; i < n ; i++ ) |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
416 if (libpath[i]) gcc_argv[argcnt++] = libpath[i]; |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
417 gcc_argv[argcnt++] = rpath_link[use_build_dir]; /* just to be safe */ |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
418 if( libstr ) |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
419 gcc_argv[argcnt++] = libstr; |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
420 gcc_argv[argcnt++] = our_lib_path[use_build_dir]; |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
421 if (!use_build_dir) |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
422 asprintf(gcc_argv+(argcnt++), "-L%s/gcc/lib", devprefix); |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
423 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
424 if (use_stdinc && source_count) { |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
425 gcc_argv[argcnt++] = nostdinc; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
426 |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
427 if (cplusplus) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
428 if (use_nostdinc_plus) { |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
429 gcc_argv[argcnt++] = nostdinc_plus; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
430 } |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
431 gcc_argv[argcnt++] = "-isystem"; |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
432 asprintf(gcc_argv+(argcnt++), "%sc++/4.1.1", uClibc_inc[use_build_dir]); |
18
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
433 //char *cppinc; |
22
775c1fdc1730
Minor cleanup on the wrapper script (much more cleanup needed before it's
Rob Landley <rob@landley.net>
parents:
20
diff
changeset
|
434 //#define TARGET_DIR "gcc/armv4l-unknown-linux/gnu/4.1.1" |
18
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
435 //xstrcat(&cppinc, uClibc_inc[use_build_dir], "c++/4.1.1/" TARGET_DIR, NULL); |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
436 //gcc_argv[argcnt++] = "-isystem"; |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
437 //gcc_argv[argcnt++] = cppinc; |
18
eaf7a8d5e697
Managed to get a working toolchain, with wrapper script, to build a hello
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
438 //xstrcat(&cppinc, uClibc_inc[use_build_dir], "c++/4.1.1", NULL); |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
439 //gcc_argv[argcnt++] = "-isystem"; |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
440 //gcc_argv[argcnt++] = cppinc; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
441 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
442 |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
443 gcc_argv[argcnt++] = "-isystem"; |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
444 gcc_argv[argcnt++] = uClibc_inc[use_build_dir]; |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
445 gcc_argv[argcnt++] = "-isystem"; |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
446 asprintf(gcc_argv+(argcnt++), "%s/gcc/include", devprefix); |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
447 if(incstr) gcc_argv[argcnt++] = incstr; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
448 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
449 |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
450 gcc_argv[argcnt++] = "-U__nptl__"; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
451 |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
452 if (linking && source_count) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
453 |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
454 if (profile) { |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
455 gcc_argv[argcnt++] = gcrt1_path[use_build_dir]; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
456 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
457 if (ctor_dtor) { |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
458 gcc_argv[argcnt++] = crti_path[use_build_dir]; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
459 if (use_pic) { |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
460 gcc_argv[argcnt++] = crtbegin_path[1]; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
461 } else { |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
462 gcc_argv[argcnt++] = crtbegin_path[0]; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
463 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
464 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
465 if (use_start) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
466 if (!profile) { |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
467 gcc_argv[argcnt++] = crt0_path[use_build_dir]; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
468 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
469 } |
16
7946bc54424b
Some more work on the wrapper. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents:
14
diff
changeset
|
470 |
7946bc54424b
Some more work on the wrapper. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents:
14
diff
changeset
|
471 // Add remaining unclaimed arguments. |
7946bc54424b
Some more work on the wrapper. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents:
14
diff
changeset
|
472 |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
473 for (i=1; i<argc; i++) if (argv[i]) gcc_argv[argcnt++] = argv[i]; |
16
7946bc54424b
Some more work on the wrapper. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents:
14
diff
changeset
|
474 |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
475 if (use_stdlib) { |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
476 //gcc_argv[argcnt++] = "-Wl,--start-group"; |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
477 gcc_argv[argcnt++] = "-lgcc"; |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
478 // gcc_argv[argcnt++] = "-lgcc_eh"; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
479 } |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
480 for (i = 0 ; i < liblen ; i++) |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
481 if (libraries[i]) gcc_argv[argcnt++] = libraries[i]; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
482 if (use_stdlib) { |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
483 if (cplusplus) { |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
484 gcc_argv[argcnt++] = "-lstdc++"; |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
485 gcc_argv[argcnt++] = "-lm"; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
486 } |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
487 gcc_argv[argcnt++] = "-lc"; |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
488 gcc_argv[argcnt++] = "-lgcc"; |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
489 // gcc_argv[argcnt++] = "-lgcc_eh"; |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
490 //gcc_argv[argcnt++] = "-Wl,--end-group"; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
491 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
492 if (ctor_dtor) { |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
493 gcc_argv[argcnt++] = crtend_path[use_pic ? 1 : 0]; |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
494 gcc_argv[argcnt++] = crtn_path[use_build_dir]; |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
495 } |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
496 } else for (i=1; i<argc; i++) if (argv[i]) gcc_argv[argcnt++] = argv[i]; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
497 |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
498 gcc_argv[argcnt++] = NULL; |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
499 |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
500 if (verbose) { |
28
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
501 for ( i = 0 ; gcc_argv[i] ; i++ ) { |
a6a06bf0c541
Replace single character variable names with ones that are easier to grep for.
Rob Landley <rob@landley.net>
parents:
22
diff
changeset
|
502 printf("arg[%2i] = %s\n", i, gcc_argv[i]); |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
503 } |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
504 fflush(stdout); |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
505 } |
14
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
506 |
42
7b0f34fbc35a
Fix inappropriate activation of profiling support, and add environment variable
Rob Landley <rob@landley.net>
parents:
30
diff
changeset
|
507 if (debug_wrapper) { |
7b0f34fbc35a
Fix inappropriate activation of profiling support, and add environment variable
Rob Landley <rob@landley.net>
parents:
30
diff
changeset
|
508 dprintf(2, "outgoing: "); |
7b0f34fbc35a
Fix inappropriate activation of profiling support, and add environment variable
Rob Landley <rob@landley.net>
parents:
30
diff
changeset
|
509 for(i=0; gcc_argv[i]; i++) dprintf(2, "%s ",gcc_argv[i]); |
7b0f34fbc35a
Fix inappropriate activation of profiling support, and add environment variable
Rob Landley <rob@landley.net>
parents:
30
diff
changeset
|
510 dprintf(2, "\n\n"); |
7b0f34fbc35a
Fix inappropriate activation of profiling support, and add environment variable
Rob Landley <rob@landley.net>
parents:
30
diff
changeset
|
511 } |
7b0f34fbc35a
Fix inappropriate activation of profiling support, and add environment variable
Rob Landley <rob@landley.net>
parents:
30
diff
changeset
|
512 |
65
79295919b775
Ok, when appending .. instead of truncating at /, remember the "stop truncating"
Rob Landley <rob@landley.net>
parents:
64
diff
changeset
|
513 //no need to free memory from xstrcat because we never return. |
16
7946bc54424b
Some more work on the wrapper. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents:
14
diff
changeset
|
514 execvp(gcc_argv[0], gcc_argv); |
14
8b4600334a3d
Replace the path finding logic with the stuff from toybox.
Rob Landley <rob@landley.net>
parents:
13
diff
changeset
|
515 fprintf(stderr, "%s: %s\n", cpp ? cpp : cc, strerror(errno)); |
13
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
516 exit(EXIT_FAILURE); |
d34028ce8602
A version of the old uClibc wrapper script, which Chris Faylor maintained for
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
517 } |