summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Nicholson <dbn.lists@gmail.com>2013-12-14 09:24:51 -0800
committerDan Nicholson <dbn.lists@gmail.com>2013-12-14 10:47:56 -0800
commitabdbaba3e0e02288270304bf026ed35ad6d28be1 (patch)
treecfec2b5c0cfab02fc137a7236e4eb3ec63f6bcd5
parent860cab9a3eea61dd8136f8852054d8f645dfd30a (diff)
downloadpkg-config-abdbaba3e0e02288270304bf026ed35ad6d28be1.tar.gz
Ensure -isystem Cflags not compressed like -I
Treat -isystem specially like -idirafter so that multiple arguments retain the preceding -isystem. Freedesktop #72584 (https://bugs.freedesktop.org/show_bug.cgi?id=72584)
-rwxr-xr-xcheck/check-special-flags2
-rw-r--r--check/special-flags.pc2
-rw-r--r--parse.c12
3 files changed, 9 insertions, 7 deletions
diff --git a/check/check-special-flags b/check/check-special-flags
index 136160a..c0a9ebb 100755
--- a/check/check-special-flags
+++ b/check/check-special-flags
@@ -4,7 +4,7 @@ set -e
. ${srcdir}/common
-RESULT="-idirafter /after1 -idirafter /after2 -I/foo -I/bar"
+RESULT="-isystem /system1 -idirafter /after1 -idirafter /after2 -isystem /system2 -I/foo -I/bar"
run_test --cflags special-flags
RESULT="-framework Foo -lsimple -framework Bar"
diff --git a/check/special-flags.pc b/check/special-flags.pc
index 269fd36..318eab0 100644
--- a/check/special-flags.pc
+++ b/check/special-flags.pc
@@ -8,4 +8,4 @@ Description: Dummy pkgconfig test package for testing pkgconfig
Version: 1.0.0
Requires:
Libs: -framework Foo -lsimple -framework Bar
-Cflags: -I/foo -idirafter /after1 -I/bar -idirafter /after2
+Cflags: -I/foo -isystem /system1 -idirafter /after1 -I/bar -idirafter /after2 -isystem /system2
diff --git a/parse.c b/parse.c
index 87e5191..60785ea 100644
--- a/parse.c
+++ b/parse.c
@@ -851,17 +851,19 @@ parse_cflags (Package *pkg, const char *str, const char *path)
flag->arg = g_strconcat ("-I", p, NULL);
pkg->cflags = g_list_prepend (pkg->cflags, flag);
}
- else if (strcmp("-idirafter", arg) == 0 && i+1 < argc)
+ else if ((strcmp ("-idirafter", arg) == 0 ||
+ strcmp ("-isystem", arg) == 0) &&
+ i+1 < argc)
{
- char *dirafter, *tmp;
+ char *option, *tmp;
tmp = trim_string (argv[i+1]);
- dirafter = strdup_escape_shell (tmp);
+ option = strdup_escape_shell (tmp);
flag->type = CFLAGS_OTHER;
- flag->arg = g_strconcat (arg, " ", dirafter, NULL);
+ flag->arg = g_strconcat (arg, " ", option, NULL);
pkg->cflags = g_list_prepend (pkg->cflags, flag);
i++;
- g_free (dirafter);
+ g_free (option);
g_free (tmp);
}
else if (*arg != '\0')