[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [gpsd-dev] [gpsd-commit-watch] [SCM] GPSD branch, master, updated. r
From: |
Greg Troxel |
Subject: |
Re: [gpsd-dev] [gpsd-commit-watch] [SCM] GPSD branch, master, updated. release-3.9-547-gcbf524c |
Date: |
Sat, 02 Nov 2013 09:14:06 -0400 |
User-agent: |
Gnus/5.130006 (Ma Gnus v0.6) Emacs/23.4 (berkeley-unix) |
"Eric S. Raymond" <address@hidden> writes:
> Greg Troxel <address@hidden>:
>> Stepping back from autoconf/scons/etc., I mean 'configure time' to be
>> the things that happen to figure out the system, as opposed to running
>> the (maybe cross) compiler to build objects for the target.
>>
>> First, for header files we need (that are not required by
>> posix, or for which we cut slack to nonconforming implemenations), the
>> build needs to determine if they are present. Present of course means
>> "usable by the compiler, which may be cross".
>
> Right. The problem with any check for file location or endianness run
> *by scons* is that it will check the state of the build host, not the
> target.
That's just plain broken. When doing cross, one has to be checking the
include files in the -sysroot/whatever for the target toolchain. It's
really hard to believe scons can't deal with the cross header file
notion.
>> So given that endian.h is in different places (actually, and posix seems
>> not to specify this), I think the following steps should be happening:
>>
>> check for presence of endian.h
>> (if not found) check for presence of sys/endian.h
>>
>> when building the endian test program
>
> If you do it this way, you lose when the location of endian.h on the target
> system is different from where it is on the host. This is why it's
> better to extract information from the target compiler's #ifdefs than
> to run tests in scons.
I meant to do a test compile with endian.h with the for-target compiler,
just like autoconf would do with AC_TRY_COMPILE. None of this should
ever look on the host (except by looking on target when host = target of
course).
So if this means first doing a test compile (with the for-target
compiler) of
----------------------------------------
#include <endian.h>
----------------------------------------
and using success at that compilation to define HAVE_ENDIAN_H, and then
repeating for SYS_ENDIAN_H and then building the program that will
compile on LE but not BE, that sounds fine.
Are you saying scons has a "look for header file" mechanism, but that it
only looks in /usr/include on the host and has no concept of cross? If
so, I agree that such functionality should just be ignored.
pgpy96cGI00KH.pgp
Description: PGP signature