summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTollef Fog Heen <tfheen@err.no>2010-05-09 09:35:12 +0200
committerTollef Fog Heen <tfheen@err.no>2010-05-09 09:43:10 +0200
commitc5a3105f418c8fc9efe2e63909cce2fbab95ce97 (patch)
treefe89dab1f9dd83ff58e816d5f85ae70977c7a7f9
parentfbc4f8e076e20818f3dd92f1aa4061da8332068a (diff)
downloadpkg-config-c5a3105f418c8fc9efe2e63909cce2fbab95ce97.tar.gz
Handle -idirafter specially
Don't split -idirafter from its argument. Fixes Freedesktop #23480
-rw-r--r--check/Makefile.am4
-rwxr-xr-xcheck/check-idirafter15
-rw-r--r--check/idirafter.pc12
-rw-r--r--parse.c16
4 files changed, 38 insertions, 9 deletions
diff --git a/check/Makefile.am b/check/Makefile.am
index 1d0d558..335d6fe 100644
--- a/check/Makefile.am
+++ b/check/Makefile.am
@@ -1,10 +1,10 @@
TESTS = check-cflags check-libs check-define-variable \
check-libs-private check-requires-private check-includedir \
- check-conflicts check-missing
+ check-conflicts check-missing check-idirafter
EXTRA_DIST = $(TESTS) common simple.pc requires-test.pc public-dep.pc \
private-dep.pc includedir.pc missing-requires-private.pc \
- missing-requires.pc
+ missing-requires.pc idirafter.pc
DISTCLEANFILES = config.sh
diff --git a/check/check-idirafter b/check/check-idirafter
new file mode 100755
index 0000000..7abd2dc
--- /dev/null
+++ b/check/check-idirafter
@@ -0,0 +1,15 @@
+#! /bin/sh
+
+# Make sure we're POSIX
+if [ "$PKG_CONFIG_SHELL_IS_POSIX" != "1" ]; then
+ PKG_CONFIG_SHELL_IS_POSIX=1 PATH=`getconf PATH` exec sh $0 "$@"
+fi
+
+set -e
+
+. ${srcdir}/common
+
+ARGS="--cflags idirafter"
+RESULT="-idirafter -I/after -I/foo -I/bar"
+
+run_test
diff --git a/check/idirafter.pc b/check/idirafter.pc
new file mode 100644
index 0000000..fced885
--- /dev/null
+++ b/check/idirafter.pc
@@ -0,0 +1,12 @@
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: idirafter test
+Description: Dummy pkgconfig test package for testing pkgconfig
+Version: 1.0.0
+Requires:
+Libs: -lsimple
+Libs.private: -lm
+Cflags: -I/foo -idirafter -I/after -I/bar
diff --git a/parse.c b/parse.c
index 5292c96..0fc242f 100644
--- a/parse.c
+++ b/parse.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2006-2009 Tollef Fog Heen <tfheen@err.no>
+ * Copyright (C) 2006-2010 Tollef Fog Heen <tfheen@err.no>
* Copyright (C) 2001, 2002, 2005-2006 Red Hat Inc.
*
* This program is free software; you can redistribute it and/or
@@ -849,12 +849,12 @@ parse_cflags (Package *pkg, const char *str, const char *path)
char *start;
start = arg;
- p = start;
+ p = start;
if (p[0] == '-' &&
p[1] == 'I')
{
- char *libname;
+ char *libname;
p += 2;
while (*p && isspace ((guchar)*p))
@@ -870,13 +870,15 @@ parse_cflags (Package *pkg, const char *str, const char *path)
g_strconcat ("-I", libname, NULL));
g_free (libname);
- }
- else
- {
+ } else {
if (*arg != '\0')
pkg->other_cflags = g_slist_prepend (pkg->other_cflags,
g_strdup (arg));
- }
+ if (strcmp("-idirafter", arg) == 0) {
+ char *n = trim_string(argv[++i]);
+ pkg->other_cflags = g_slist_prepend(pkg->other_cflags, n);
+ }
+ }
g_free (arg);