From c5a3105f418c8fc9efe2e63909cce2fbab95ce97 Mon Sep 17 00:00:00 2001 From: Tollef Fog Heen Date: Sun, 9 May 2010 09:35:12 +0200 Subject: Handle -idirafter specially Don't split -idirafter from its argument. Fixes Freedesktop #23480 --- check/Makefile.am | 4 ++-- check/check-idirafter | 15 +++++++++++++++ check/idirafter.pc | 12 ++++++++++++ parse.c | 16 +++++++++------- 4 files changed, 38 insertions(+), 9 deletions(-) create mode 100755 check/check-idirafter create mode 100644 check/idirafter.pc 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 + * Copyright (C) 2006-2010 Tollef Fog Heen * 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); -- cgit v1.2.1