Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 3 Apr 2016 22:48:25 -0600
From:      Warner Losh <imp@bsdimp.com>
To:        Mark Millard <markmi@dsl-only.net>
Cc:        FreeBSD Toolchain <freebsd-toolchain@freebsd.org>, freebsd-arm <freebsd-arm@freebsd.org>
Subject:   Re: 11.0: head/lib/libsysdecode/Makefile for . . ./libsoft/usr/include uses CPP when XCPP needed?
Message-ID:  <CANCZdfo3Gdf0QF64hfn_WJzxhPOwJk6yMB3qEkDi8tfEpRRveg@mail.gmail.com>
In-Reply-To: <D8803949-18C1-4B17-981F-DAD5A2DEDCE8@dsl-only.net>

index | next in thread | previous in thread | raw e-mail

On Sun, Apr 3, 2016 at 10:25 PM, Mark Millard <markmi@dsl-only.net> wrote:

> For an amd64 -> armv7a (rpi2 targeting) cross-compile the code
>
> > # $FreeBSD: head/lib/libsysdecode/Makefile 295931 2016-02-23 20:00:55Z
> jhb $
> >
> > . . .
> > ioctl.c: mkioctls
> >         env MACHINE=${MACHINE} CPP="${CPP}" \
> >                 /bin/sh ${.CURDIR}/mkioctls ${DESTDIR}${INCLUDEDIR} >
> ${.TARGET}
>
> (with its use of CPP instead of the XCPP) got:
>
> > --- all_subdir_lib/libsysdecode ---
> > --- ioctl.c ---
> > env MACHINE=arm CPP="/usr/bin/clang-cpp"  /bin/sh
> /usr/src/lib/libsysdecode/mkioctls
> /usr/obj/clang/arm.armv6/usr/src/libsoft/usr/include > ioctl.c
> > . . .
> > --- all_subdir_lib/libsysdecode ---
> > In file included from <stdin>:17:
> > In file included from
> /usr/obj/clang/arm.armv6/usr/src/libsoft/usr/include/dev/nvme/nvme.h:36:
> > In file included from
> /usr/obj/clang/arm.armv6/usr/src/libsoft/usr/include/sys/param.h:135:
> > In file included from
> /usr/obj/clang/arm.armv6/usr/src/libsoft/usr/include/machine/param.h:49:
> >
> /usr/obj/clang/arm.armv6/usr/src/libsoft/usr/include/machine/acle-compat.h:182:4:
> error: Unable to determine architecture version.
> > #  error Unable to determine architecture version.
> >    ^
>
> In my case I had the following in the in-use src.conf in order to control
> the cross compile specifics:
>
> > XCC=/usr/bin/clang -target ${TO_TYPE}--freebsd11.0-gnueabi -march=armv7a
> -mcpu=cortex-a7 -mno-unaligned-access
> > XCXX=/usr/bin/clang++ -target ${TO_TYPE}--freebsd11.0-gnueabi
> -march=armv7a -mcpu=cortex-a7 -mno-unaligned-access
> > XCPP=/usr/bin/clang-cpp -target ${TO_TYPE}--freebsd11.0-gnueabi
> -march=armv7a -mcpu=cortex-a7 -mno-unaligned-access
>
>
> (I've been doing such for a long time but only just progressed to a 11.0
> source vintage with libsoft involved.)
>
> Even if I'm out of bounds for technique in some way I expect that
>
> > ioctl.c: mkioctls
> >         env MACHINE=${MACHINE} CPP="${CPP}" \
> >                 /bin/sh ${.CURDIR}/mkioctls ${DESTDIR}${INCLUDEDIR} >
> ${.TARGET}
>
> is not doing everything it should to have the full context needed for . .
> ./machine/acle-compat.h .
>

It's gotta be upstream. XCPP XCC and XCXX are all exclusive to
Makefile.inc1. It's up to it to sort out the
rest...  And none of the X{AR,AS,LD,etc} are defined, so there's bound to
be an impedance mismatch. :)
In the past when I've seen this it's been due to some kind of variable
contamination, perhaps one that's
not otherwise known...

Warner


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANCZdfo3Gdf0QF64hfn_WJzxhPOwJk6yMB3qEkDi8tfEpRRveg>