This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: PR57792 fixincludes doesn't honor the use of --with-sysroot during bootstrap
- From: Jack Howarth <howarth at bromo dot med dot uc dot edu>
- To: Bruce Korb <bkorb at gnu dot org>
- Cc: gcc at gcc dot gnu dot org
- Date: Thu, 4 Jul 2013 18:45:37 -0400
- Subject: Re: PR57792 fixincludes doesn't honor the use of --with-sysroot during bootstrap
- References: <20130704164015 dot GA15640 at bromo dot med dot uc dot edu> <51D5B3D9 dot 4040901 at gnu dot org>
On Thu, Jul 04, 2013 at 10:41:45AM -0700, Bruce Korb wrote:
> On 07/04/13 09:40, Jack Howarth wrote:
>> Currently I am forced to manually patch fixincludes/fixinc.in to have the DIR passed to
>> --with-sysroot honored during the bootstrap. Thanks in advance for any help in getting
>> this oversight in fixincludes fixed for gcc 4.9.
>> Jack
>
> I saw the bug report. I find autotools sufficiently flexible that they
> are neigh on opaque. I *think* you'll need:
>
> AC_ARG_WITH([sysroot],
> [the system include directory -- default: /usr/include],
> [ AC_DEFINE_UNQUOTED([SYSTEM_INC_DIR], "$withval",
> [system include directory])
>
> [if test -d "$withval" ; then SYSTEM_INC_DIR=$withval
> else AC_MSG_ERROR([provided value is not a directory: $withval]) ; fi]],
>
> [SYSTEM_INC_DIR=/usr/include])
>
> and then replace the INPUTLIST definition with:
>
> test $# -eq 0 && INPUTLIST="@SYSTEM_INC_DIR@" || INPUTLIST="$*"
>
> using "$@" is confusing and won't actually work:
>
>> $ set a b c\ d;echo $#;f="$@";set -- $f; echo $#
>> 3
>> 4
>
>
> Anyway, I *think* that works, but like I said, it's pretty opaque to me.
It appears that the existing code is sufficient. I'm not sure how I missed this in my previous
testing but a build with...
../gcc-4.8.1/configure --prefix=/sw --prefix=/sw/lib/gcc4.8 --mandir=/sw/share/man --infodir=/sw/lib/gcc4.8/info --enable-languages=c,c++,fortran,lto,objc,obj-c++,java --with-gmp=/sw --with-libiconv-prefix=/sw --with-isl=/sw --with-cloog=/sw --with-mpc=/sw --with-system-zlib --enable-checking=release --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib --program-suffix=-fsf-4.8 --with-sysroot=/Library/Developer/CommandLineTools/SDKs/MacOSX10.9.sdk
...produced...
chmod a+rx include-fixed
if [ -d ../prev-gcc ]; then \
cd ../prev-gcc && \
/Library/Developer/CommandLineTools/usr/bin/make real-install-headers-tar DESTDIR=`pwd`/../gcc/ \
libsubdir=. ; \
else \
set -e; for ml in `cat fixinc_list`; do \
sysroot_headers_suffix=`echo ${ml} | sed -e 's/;.*$//'`; \
multi_dir=`echo ${ml} | sed -e 's/^[^;]*;//'`; \
fix_dir=include-fixed${multi_dir}; \
if ! false && test ! -d `echo /Library/Developer/CommandLineTools/SDKs/MacOSX10.9.sdk${sysroot_headers_suffix}/usr/include | sed -e :a -e 's,[^/]*/\.\.\/,,' -e ta`; then \
echo The directory that should contain system headers does not exist: >&2 ; \
echo " `echo /Library/Developer/CommandLineTools/SDKs/MacOSX10.9.sdk${sysroot_headers_suffix}/usr/include | sed -e :a -e 's,[^/]*/\.\.\/,,' -e ta`" >&2 ; \
tooldir_sysinc=`echo "/sw/lib/gcc4.8/lib/gcc/x86_64-apple-darwin13.0.0/4.8.1/../../../../x86_64-apple-darwin13.0.0/sys-include" | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta`; \
if test "x`echo /Library/Developer/CommandLineTools/SDKs/MacOSX10.9.sdk${sysroot_headers_suffix}/usr/include | sed -e :a -e 's,[^/]*/\.\.\/,,' -e ta`" = "x${tooldir_sysinc}"; \
then sleep 1; else exit 1; fi; \
fi; \
/bin/sh ../../gcc-4.8.1/gcc/../mkinstalldirs ${fix_dir}; \
chmod a+rx ${fix_dir} || true; \
(TARGET_MACHINE='x86_64-apple-darwin13.0.0'; srcdir=`cd ../../gcc-4.8.1/gcc; ${PWDCMD-pwd}`; \
SHELL='/bin/sh'; MACRO_LIST=`${PWDCMD-pwd}`/macro_list ; \
gcc_dir=`${PWDCMD-pwd}` ; \
export TARGET_MACHINE srcdir SHELL MACRO_LIST && \
cd ../build-x86_64-apple-darwin13.0.0/fixincludes && \
/bin/sh ./fixinc.sh "${gcc_dir}/${fix_dir}" \
`echo /Library/Developer/CommandLineTools/SDKs/MacOSX10.9.sdk${sysroot_headers_suffix}/usr/include | sed -e :a -e 's,[^/]*/\.\.\/,,' -e ta` ); \
rm -f ${fix_dir}/syslimits.h; \
if [ -f ${fix_dir}/limits.h ]; then \
mv ${fix_dir}/limits.h ${fix_dir}/syslimits.h; \
else \
cp ../../gcc-4.8.1/gcc/gsyslimits.h ${fix_dir}/syslimits.h; \
fi; \
chmod a+r ${fix_dir}/syslimits.h; \
done; \
fi
(cd `${PWDCMD-pwd}`/include-fixed ; \
tar -cf - .; exit 0) | (cd /sw/src/fink.build/gcc48-4.8.1-1001/darwin_objdir/prev-gcc/../gcc/./include-fixed; tar xpf - )
echo timestamp > stmp-fixinc
if [ -d include ] ; then true; else mkdir include; chmod a+rx include; fi
if [ -d include-fixed ] ; then true; else mkdir include-fixed; chmod a+rx include-fixed; fi
Sorry for the noise as I was certain that I had tested just --with-sysroot before. The top level configure really needs adjusted
to make '--with-sysroot="`xcrun --show-sdk-path`"' the default behavior on darwin13 and later.
Jack