From: "Björn Persson" <bjorn@xn--rombobjrn-67a.se>
Subject: Re: architecture-independent GNAT project files?
Date: Mon, 27 Apr 2009 23:16:13 +0200
Date: 2009-04-27T23:16:13+02:00 [thread overview]
Message-ID: <75mlktF1979j6U1@mid.individual.net> (raw)
In-Reply-To: t61uka9cd012.18ciieoylrlrx$.dlg@40tude.net
Dmitry A. Kazakov wrote:
> On Mon, 27 Apr 2009 09:32:29 +0200, Bj�rn Persson wrote:
>
>> When I write GNAT project files for shared libraries I find that I have
>> to hardcode the paths to some architecture-specific directories. 32-bit
>> libraries are in /usr/lib/ while 64-bit libraries are in /usr/lib64/, and
>> I would like to have a single project file that works for both cases.
>
> The way I am using is to have a platform variable in the project file:
>
> type Platform_Type is ("x86_Windows", "x86_VxWorks");
> Platform : Platform_Type := external ("Platform", "x86_Windows");
>
> and then somewhere later
>
> case Platform is
> when "x86_Windows" =>
> for Source_Dirs use "os/Windows/i586" & ...;
> when "x86_VxWorks" =>
> for Source_Dirs use "os/vxworks/i586" & ...;
> end case;
>
> then same for library things etc.
The analog for my case would be:
type Architecture is ("i386", "x86_64");
Target : Architecture := external ("Target", "i386");
The problem with that is of course that on x86_64 systems the default will
almost always be wrong, and if I set the default to x86_64 it will be wrong
on i386 systems.
>> The way to find out the architecture of a Unix-like system appears to be
>> to invoke uname, but GNAT project files don't seem to have a shell-out
>> feature. As far as I can see in the manual the only ways they can get
>> input is by environment variables and command line parameters. I don't
>> suppose Gnatmake provides some variable to project files that shows what
>> the architecture is?
>
> I don't know if it has, but if any, how that is supposed to work for cross
> platform developing?
The cross-compiler would know its target platform and would assign that
value to the hypothetical variable. The project file would then select the
right library directories for that platform.
Such a feature, if done right, could make it possible to write project files
that would work for anything from ARM to Itanium, but I wasn't planning to
do that. I'm satisfied if I can support a multilib environment so that i386
libraries will be selected if someone uses the -m32 parameter on an x86_64
platform. For true cross-compilation I guess the cross-compiler will
normally have a completely separate set of libraries, including a separate
project file directory.
--
Bj�rn Persson
PGP key A88682FD
next prev parent reply other threads:[~2009-04-27 21:16 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-27 7:32 architecture-independent GNAT project files? Björn Persson
2009-04-27 8:02 ` Dmitry A. Kazakov
2009-04-27 21:16 ` Björn Persson [this message]
2009-04-27 21:55 ` Ludovic Brenta
2009-04-28 21:41 ` Björn Persson
2009-04-28 7:24 ` Dmitry A. Kazakov
2009-04-28 20:56 ` sjw
2009-04-30 12:17 ` Björn Persson
2009-04-30 12:31 ` Ludovic Brenta
2009-04-27 12:06 ` anon
2009-04-27 19:10 ` sjw
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox