summaryrefslogtreecommitdiff
path: root/packages/pkgconfig/pkgconfig-0.22/sysrootfix.patch
blob: 2e4f796cc9e8f7cb15582990db1f6fdc13c6f233 (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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
Add support for PKG_CONFIG_SYSROOT_DIR to pkgconfig

---
 main.c       |    5 ++++-
 pkg-config.1 |    9 +++++++++
 pkg.c        |   14 +++++++++++++-
 pkg.h        |    3 +++
 4 files changed, 29 insertions(+), 2 deletions(-)

Index: pkg-config-0.22/main.c
===================================================================
--- pkg-config-0.22.orig/main.c	2007-09-14 10:20:15.000000000 +0100
+++ pkg-config-0.22/main.c	2007-09-14 10:22:41.000000000 +0100
@@ -46,6 +46,8 @@
 static int want_debug_spew = 0;
 static int want_verbose_errors = 0;
 static int want_stdout_errors = 0;
+char *pcsysrootdir = NULL;
+
 
 void
 debug_spew (const char *format, ...)
@@ -196,7 +198,7 @@ main (int argc, char **argv)
   GString *str;
   GSList *packages = NULL;
   char *search_path;
-  char *pcbuilddir;
+	char *pcbuilddir;
   const char *pkglibdir;
   char **search_dirs;
   char **iter;
@@ -345,6 +347,7 @@ main (int argc, char **argv)
       }
   }
 #endif
+  pcsysrootdir = getenv ("PKG_CONFIG_SYSROOT_DIR");
 
   pcbuilddir = getenv ("PKG_CONFIG_TOP_BUILD_DIR");
   if (pcbuilddir)
Index: pkg-config-0.22/pkg.c
===================================================================
--- pkg-config-0.22.orig/pkg.c	2007-09-14 10:20:15.000000000 +0100
+++ pkg-config-0.22/pkg.c	2007-09-14 10:22:41.000000000 +0100
@@ -479,11 +479,23 @@ string_list_to_string (GSList *list)
   GSList *tmp;
   GString *str = g_string_new ("");
   char *retval;
+	int offset=0;
   
   tmp = list;
   while (tmp != NULL)
     {
-      g_string_append (str, tmp->data);
+			if (pcsysrootdir != NULL)
+				{
+					if (!strncmp(tmp->data,"-I",2) ||
+							!strncmp(tmp->data,"-L",2))
+						{
+							offset=2;
+							g_string_append_c (str,((char*)tmp->data)[0]);
+							g_string_append_c (str,((char*)tmp->data)[1]);
+							g_string_append (str,pcsysrootdir);
+						}
+				}
+      g_string_append (str, tmp->data+offset);
       g_string_append_c (str, ' ');
       
       tmp = g_slist_next (tmp);
Index: pkg-config-0.22/pkg-config.1
===================================================================
--- pkg-config-0.22.orig/pkg-config.1	2007-09-14 10:20:15.000000000 +0100
+++ pkg-config-0.22/pkg-config.1	2007-09-14 10:23:08.000000000 +0100
@@ -260,6 +260,15 @@ Don't strip -I/usr/include out of cflags
 Don't strip -L/usr/lib out of libs
 
 .TP
+.I "PKG_CONFIG_SYSROOT_DIR"
+Modify -I and -L to use the directories located in target sysroot.
+this option is usefull when crosscompiling package that use pkg-config
+to determine CFLAGS anf LDFLAGS. -I and -L are modified to point to
+the new system root. this means that a -I/usr/include/libfoo will
+become -I/var/target/usr/include/libfoo with a PKG_CONFIG_SYSROOT_DIR
+equal to /var/target (same rule apply to -L)
+
+.TP
 .I "PKG_CONFIG_LIBDIR"
 Replaces the default \fIpkg-config\fP search directory.
 
Index: pkg-config-0.22/pkg.h
===================================================================
--- pkg-config-0.22.orig/pkg.h	2007-09-14 10:20:15.000000000 +0100
+++ pkg-config-0.22/pkg.h	2007-09-14 10:22:41.000000000 +0100
@@ -123,6 +123,9 @@ void disable_private_libs(void);
 /* If TRUE, do not automatically prefer uninstalled versions */
 extern gboolean disable_uninstalled;
 
+/* string that contain environment */
+extern char* pcsysrootdir;
+
 #ifdef G_OS_WIN32
 /* If TRUE, do not automatically define "prefix"  while
  * parsing each .pc file */