customcc: Fix the setup of the /usr/include path to use.
authorSascha Wildner <saw@online.de>
Thu, 2 Aug 2012 17:16:08 +0000 (19:16 +0200)
committerSascha Wildner <saw@online.de>
Thu, 2 Aug 2012 17:16:08 +0000 (19:16 +0200)
With the recent O_DIRECTORY addition, this apparent bug in the script was
exposed. Using -isysroot/-isystem doesn't seem to cut it for what we want
here (which is to completely override the /usr/include path).

I didn't verify in 100% detail, but all evidence looks like the reason is
that when -I is present on the command line, the paths of the headers
which are included by headers from this directory are not prefixed with
-isysroot's argument.

So for now, use -iprefix and -iwithbeforeprefix for /usr/include, which
seem to do what we want.

While here, add our copyright.

Reported-by: marino
libexec/customcc/cc.sh

index 341598e..eab2554 100644 (file)
@@ -1,4 +1,35 @@
 #!/bin/sh
+#
+# Copyright (c) 2009-2012
+#      The DragonFly Project.  All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in
+#    the documentation and/or other materials provided with the
+#    distribution.
+# 3. Neither the name of The DragonFly Project nor the names of its
+#    contributors may be used to endorse or promote products derived
+#    from this software without specific, prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
 
 CDIR=$(dirname $0)
 CNAME=$(basename $0)
@@ -38,16 +69,16 @@ elif [ "${CCVER}" = "gcc46" ]; then
        GCC46VER=`gnatc++ -dumpversion`
        GCC46MAC=`gnatc++ -dumpmachine`
        INCOPT="-nostdinc \
-           -isysroot @@INCPREFIX@@ \
-           -isystem /usr/include \
+           -iprefix @@INCPREFIX@@ \
+           -iwithprefixbefore /usr/include \
            -isystem /usr/pkg/include/c++/${GCC46VER} \
            -isystem /usr/pkg/include/c++/${GCC46VER}/${GCC46MAC}"
 elif [ "${CCVER}" = "gcc47" ]; then
        GCC47VER=`/usr/pkg/gcc-aux/bin/c++ -dumpversion`
        GCC47MAC=`/usr/pkg/gcc-aux/bin/c++ -dumpmachine`
        INCOPT="-nostdinc \
-           -isysroot @@INCPREFIX@@ \
-           -isystem /usr/include \
+           -iprefix @@INCPREFIX@@ \
+           -iwithprefixbefore /usr/include \
            -isystem /usr/pkg/gcc-aux/include/c++/${GCC47VER} \
            -isystem /usr/pkg/gcc-aux/include/c++/${GCC47VER}/${GCC47MAC}"
 fi