1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
Index: dietlibc-0.32/diet.c
===================================================================
--- dietlibc-0.32.orig/diet.c 2009-03-17 00:17:58.000000000 +0100
+++ dietlibc-0.32/diet.c 2009-10-02 14:12:14.306929201 +0200
@@ -132,7 +132,12 @@
}
}
{
- char *cc=argv[1];
+ char *cc;
+ if (!strcmp(argv[1],"ccache")) {
+ cc=argv[2];
+ } else {
+ cc=argv[1];
+ }
char *tmp=strchr(cc,0)-2;
char *tmp2,*tmp3;
if (tmp<cc) goto donttouch;
@@ -144,7 +149,7 @@
if (tmp3<tmp2) tmp2=tmp3;
if (tmp2-cc>90) error("platform name too long!\n");
shortplatform=platform+len;
- memmove(shortplatform,argv[1],(size_t)(tmp2-cc));
+ memmove(shortplatform,cc,(size_t)(tmp2-cc));
platform[tmp2-cc+len]=0;
if (shortplatform[0]=='i' && shortplatform[2]=='8' && shortplatform[3]=='6') shortplatform[1]='3';
} else {
@@ -291,6 +296,9 @@
dest=newargv;
*dest++=argv[1];
+ if (strcmp(argv[1],"ccache") == 0) {
+ *dest++=argv[2];
+ }
if (argv[2]) {
if (!strcmp(argv[2],"-V")) {
*dest++=argv[2];
@@ -300,9 +308,9 @@
} else if (!memcmp(argv[2],"-V",2)) {
*dest++=argv[2];
++argv;
- --argc;
}
}
+
#ifndef __DYN_LIB
if (_link) { *dest++=(char*)nostdlib; *dest++=dashstatic; *dest++=dashL; }
#else
@@ -320,7 +328,15 @@
#ifdef WANT_DYNAMIC
if (_link) { *dest++=d; }
#endif
- for (i=2; i<argc; ++i) {
+ if (strcmp(argv[1],"ccache") == 0) {
+ i=3;
+ } else {
+ i=2;
+ }
+ for (i; i<argc; ++i) {
+ if (strstr(argv[i],"isystem") != NULL)
+ continue;
+
if (!strcmp(argv[i],"-pthread")) {
*dest++="-D_REENTRANT";
if (_link) *dest++="-lpthread";
@@ -333,6 +349,8 @@
continue;
}
*dest++=argv[i];
+ *dest--;
+ *dest++;
}
#ifndef __DYN_LIB
if (compile || _link) {
|