comp.lang.ada
 help / color / mirror / Atom feed
From: "Alex R. Mosteo" <devnull@mailinator.com>
Subject: Re: Conditional compilation in Ada?
Date: Wed, 17 Nov 2004 09:36:41 +0100
Date: 2004-11-17T09:36:41+01:00	[thread overview]
Message-ID: <419B0D99.9030106@mailinator.com> (raw)
In-Reply-To: <2vv6vfF2q17krU1@uni-berlin.de>

Nick Roberts wrote:
> "Marius Amado Alves" <amado.alves@netcabo.pt> wrote in message 
> news:mailman.103.1100630792.10401.comp.lang.ada@ada-france.org...
> 
>>>Any hints?
>>
>>Gnatprep.
> 
> 
> In a little more detail, declare the things that differ (types, associated 
> operations) in two separate packages, say Stuff_For_Playstation and 
> Stuff_For_XBox, then put something like this:
> 
> Compile_Target := XBox
> 
> into a text file called "targspec.txt" (say), and then something like this 
> in the appropriate places in your source files:
> 
>    with Stuff_For_$Compile_Target;
>    ...
>    package Target_Specific renames Stuff_For_$Compile_Target;
>    ...
>       Target_Specific.Reset_Joystick; -- or whatever
> 
> and rename every so doctored source file myfile.ads to myfile.adsp (and 
> myfile.adb to myfile.adbp) and then run:
> 
>    gnatprep myfile.adsp myfile.ads targspec.txt -c -r
> 
> for each such source file, and then compile as normal. Documentation for 
> gnatprep is in the GNAT User's Guide.
> 
> Obviously, you change "Compile_Target := XBox" to "Compile_Target := 
> Playstation" to recompile for a different target.
> 
> The idea is to minimise the number of times you use a $ macro or #if in your 
> source files, within reason, and put as much as possible into the different 
> specific packages. Things tend to be easier to debug this way. You may find 
> that you do not have to use gnatprep at all, but instead you could just have 
> a separate file "target_specific.ads" which contains the two lines:
> 
>    with Stuff_For_XBox;
>    package Target_Specific renames Stuff_For_XBox;
> 
> which you simply change to:
> 
> 
>    with Stuff_For_Playstation;
>    package Target_Specific renames Stuff_For_Playstation;
> 
> in order to recompile for a different target.

What I do is to have a folder for every platform-specific code. It must 
conform to a predefined spec, as suggested. Then I have two rules in a 
Makefile. One issues the gnatmake -Iplatform1 and the other -Iplatform2.



  reply	other threads:[~2004-11-17  8:36 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-11-16 18:30 Conditional compilation in Ada? jtg
2004-11-16 18:45 ` Marius Amado Alves
2004-11-16 20:41   ` Nick Roberts
2004-11-17  8:36     ` Alex R. Mosteo [this message]
2004-11-16 19:03 ` Jeffrey Carter
2004-11-16 19:13   ` Hyman Rosen
2004-11-16 19:41     ` Björn Lundin
2004-11-16 20:08     ` tmoran
2004-11-16 20:27       ` Hyman Rosen
2004-11-16 23:49         ` Jim Rogers
2004-11-16 20:43     ` Martin Dowie
2004-11-16 19:06 ` tmoran
2004-11-17  9:39   ` Adrien Plisson
2004-11-17 16:39     ` Jacob Sparre Andersen
2004-11-17  2:44 ` Steve
2004-11-17 20:30   ` Jeffrey Carter
2004-11-18  4:09     ` Steve
2004-11-18  6:49       ` Martin Dowie
2004-11-18 15:17         ` Georg Bauhaus
2004-11-18 19:12           ` Martin Dowie
2004-11-18 17:34         ` Jeffrey Carter
2004-11-18 17:44       ` Jeffrey Carter
2004-11-18 18:03         ` Alex R. Mosteo
2004-11-19  3:00           ` Steve
2004-11-19 21:35             ` Simon Wright
2004-11-20  2:56               ` Steve
2004-11-20 16:57                 ` Simon Wright
2004-11-17  9:28 ` Martin Krischik
2004-11-17 13:39   ` Stephen Leake
2004-11-17 10:02 ` Frank Piron
2004-11-17 12:32   ` Georg Bauhaus
2004-11-17 14:44     ` Dmitry A. Kazakov
2004-11-18 15:23       ` Georg Bauhaus
2004-11-18 22:10         ` Brian May
2004-11-19  9:03           ` Martin Krischik
2004-11-20 17:31             ` Georg Bauhaus
2004-11-21  9:14               ` Martin Krischik
2004-12-12  0:36               ` Lionel Draghi
2004-12-12  0:17             ` How to switch off those damm warnings about unknows pragma Lionel Draghi
2004-12-13 11:10               ` Georg Bauhaus
2004-12-13 15:07               ` Peter Amey
2004-11-20  1:05         ` Conditional compilation in Ada? Dr. Adrian Wrigley
2004-11-20 17:25           ` Georg Bauhaus
2004-11-23  1:15           ` Arthur Schwarz
2004-11-23 15:42             ` skidmarks
2004-11-17 12:27 ` Marin David Condic
  -- strict thread matches above, loose matches on Subject: below --
2004-11-19  9:13 Christoph Karl Walter Grein
replies disabled

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