From: "Nick Roberts" <nick.roberts@acm.org>
Subject: Re: Conditional compilation in Ada?
Date: Tue, 16 Nov 2004 20:41:18 -0000
Date: 2004-11-16T20:41:18+00:00 [thread overview]
Message-ID: <2vv6vfF2q17krU1@uni-berlin.de> (raw)
In-Reply-To: mailman.103.1100630792.10401.comp.lang.ada@ada-france.org
"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.
--
HTH
Nick Roberts
next prev parent reply other threads:[~2004-11-16 20:41 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 [this message]
2004-11-17 8:36 ` Alex R. Mosteo
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