aboutsummaryrefslogtreecommitdiff
blob: 657de625442a565920d9e7d08865874c63e27929 (plain)
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
Fix the include directories for cross compilation automagically
(patch by Ned Ludd <solar@gentoo.org> on the Gentoo embedded mailinglist 2008-09-21)

--- gcc/c-incpath.c	2007-09-01 08:28:30.000000000 -0700
+++ gcc/c-incpath.c	2008-09-19 20:32:27.000000000 -0700
@@ -332,6 +332,32 @@
   tails[chain] = p;
 }
 
+#ifdef CROSS_COMPILE
+/* Rewrite the include paths for cross compiles */
+char *cross_fixup_path(char *path);
+char *cross_fixup_path(char *path) {
+	char *name, *root, *ptr;
+	int len;
+
+	root = getenv("ROOT");
+	if (root == NULL)
+		return name;
+
+	if (strstr(path, "/usr/include") != path)
+		return path;
+
+	name = xstrdup(path);
+	len = strlen(root) + strlen(name) + 2;
+	ptr = (char *) xmalloc (len);
+	sprintf(ptr, "%s/%s", root, name);
+	fprintf(stderr, _("Autofixing Invalid Cross Include Path: %s -> %s\n"), name, ptr);
+	free(path);
+	path = ptr;
+	name = path;
+	return name;
+}
+#endif
+
 /* Add PATH to the include chain CHAIN. PATH must be malloc-ed and
    NUL-terminated.  */
 void
@@ -359,6 +385,11 @@
   p->construct = 0;
   p->user_supplied_p = user_supplied_p;
 
+#ifdef CROSS_COMPILE
+  path = cross_fixup_path(path);
+  p->name = path;
+#endif
+
   add_cpp_dir_path (p, chain);
 }