From c7c26905e41d70fe0ea9d02c5af1fc0a688408d4 Mon Sep 17 00:00:00 2001 From: Sascha Wildner Date: Thu, 2 Aug 2012 19:16:08 +0200 Subject: [PATCH] customcc: Fix the setup of the /usr/include path to use. 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 | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/libexec/customcc/cc.sh b/libexec/customcc/cc.sh index 341598e8f7..eab25544cc 100644 --- a/libexec/customcc/cc.sh +++ b/libexec/customcc/cc.sh @@ -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 -- 2.41.0