diff options
author | Dan Nicholson <dbn.lists@gmail.com> | 2013-12-14 09:24:51 -0800 |
---|---|---|
committer | Dan Nicholson <dbn.lists@gmail.com> | 2013-12-14 10:47:56 -0800 |
commit | abdbaba3e0e02288270304bf026ed35ad6d28be1 (patch) | |
tree | cfec2b5c0cfab02fc137a7236e4eb3ec63f6bcd5 | |
parent | 860cab9a3eea61dd8136f8852054d8f645dfd30a (diff) | |
download | pkg-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-x | check/check-special-flags | 2 | ||||
-rw-r--r-- | check/special-flags.pc | 2 | ||||
-rw-r--r-- | parse.c | 12 |
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 @@ -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') |