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.
next prev parent 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