comp.lang.ada
 help / color / mirror / Atom feed
From: Niklas Holsti <niklas.holsti@tidorum.invalid>
Subject: Re: spec/body/rep (Was: Compilation error (GNAT bug?))
Date: Tue, 27 May 2014 09:22:16 +0300
Date: 2014-05-27T09:22:16+03:00	[thread overview]
Message-ID: <buip8nFgg52U1@mid.individual.net> (raw)
In-Reply-To: <lm1748$1lp$1@dont-email.me>

On 14-05-27 08:16 , J-P. Rosen wrote:
> Le 23/05/2014 23:21, Randy Brukardt a écrit :
>> I don't think so, mainly because you already have such a capability: 
>> constants! It's not the presence or absence of an aspect that changes, it's 
>> the value. So it might make sense to have a package specifically for the 
>> target-specific details (many systems do that, including the ACATS).
>>
>> For instance:
>>     package Target_Specific is
>>          -- Package for Windows.
>>          pragma Linker_Options (...);
>>
>>          -- Data types:
>>          type Largest_Integer is range -2**31 .. 2**31 with Size => 32;
>>          type Largest_Modular is mod 2**32 with Size => 32;
>>
>>          -- Interfacing details for package Blarch:
>>          Foo_External_Name : constant String := "...";
>>          Bar_External_Name : constant String := "...";
>>
>>          ...
>>    end Target_Specific;
>>
>> And then have separate versions of the package for the various targets 
>> supported.
> And to ease porting, have a package called Target_Specific_Windows,
> another one called Target_Specific_Linux. All the users do:
> with Target_Specific;
> 
> and have the following library-lever renaming:
> with Target_Specific_Windows;
> package Target_Specific renames Target_Specific_Windows;

I don't see what advantage such as a library-level renaming gives. If
one is developing for several platforms, say Windows and Linux, there
will then be two library-level renamings somewhere, one as above and the
other using Target_Specific_Linux, but some compiler-specific way is
still needed to choose which of the library level renamings to include
in the compilation. So one could just as well call both the
target-specific packages Target_Specific, directly, and use the same
compiler-specific way to choose which one to compile. For example, I use
GNAT's ADA_INCLUDE_PATH to choose the folder ("linux" or "windows")
which contains the version of Target_Specific to be compiled.

Would there be some sense in being able to specify such library-level
renamings as configuration pragmas? This might give us a standard way to
choose component versions depending on the configuration (leaving as
compiler-specific the way to select which configuration is to be
compiled... :-)

-- 
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
      .      @       .


  reply	other threads:[~2014-05-27  6:22 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-20 18:32 Compilation error (GNAT bug?) Victor Porton
2014-05-20 18:43 ` Simon Wright
2014-05-20 22:22   ` spec/body/rep (Was: Compilation error (GNAT bug?)) Georg Bauhaus
2014-05-23 21:21     ` Randy Brukardt
2014-05-27  5:16       ` J-P. Rosen
2014-05-27  6:22         ` Niklas Holsti [this message]
2014-05-27  8:54           ` J-P. Rosen
2014-05-27  8:55           ` Dmitry A. Kazakov
2014-05-27 15:45             ` G.B.
2014-05-27 16:41               ` Dmitry A. Kazakov
2014-05-27 16:52                 ` G.B.
2014-05-27 17:03                   ` Dmitry A. Kazakov
2014-05-27 22:57               ` Randy Brukardt
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox