From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: A proposal for Debian policy for Ada
Date: Sun, 16 May 2010 23:15:39 +0200
Date: 2010-05-16T23:15:38+02:00 [thread overview]
Message-ID: <198miwzl97pnl$.1onmpwoadjr1p.dlg@40tude.net> (raw)
In-Reply-To: 87aarzd14c.fsf@ludovic-brenta.org
On Sun, 16 May 2010 22:48:19 +0200, Ludovic Brenta wrote:
> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes:
>> In the past we are used to link external libraries using package Linker and
>> Default_Switches ("ada") set to, e.g. "-lgdk_pixbuf-2.0". The problem with
>> this approach is that Linker package is not automatically inherited. There
>> exist different workarounds all more or less unpleasant.
>>
>> Meanwhile there is IMO a cleaner and simpler way. Just create a gpr file
>> for the library(es) in use. For example:
>>
>> project Gdk_Pixbuf is
>> for Externally_Built use "true";
>> for Source_Files use ();
>> for Library_Dir use "/usr/lib"; -- Where it resides
>> for Library_Name use "gdk_pixbuf-2.0"; -- Its name (no ".so" ending)
>> for Library_Kind use "dynamic"; -- Shared in this case
>> end Gdk_Pixbuf;
>>
>> Then with it in your project:
>>
>> with "gdk_pixbuf.gpr";
>> project My_Library is
>> ... -- No linker package needed
>> end My_Library;
>>
>> That is. gnatmake and gprbuild will add necessary linker options to all
>> projects referencing My_Library.
>>
>> What about adding this as a requirement to the Debian policy?
>
> It seems you forgot to read �5.3.6 GNAT project file and �6 Using shared
> libraries.
5.3.6 seems to refer to the Ada library being packaged. What I mean is a
way to reference to an external C library, e.g. libgdk_pixbuf in the
example.
As for 6, it gives an example
with "LIBRARY";
project PROGRAM is
for Source_Dirs use (".");
for Object_Dir use "obj";
for Exec_Dir use ".";
for Main use ("PROGRAM");
package Linker is
for Default_Switches ("Ada") use ("/usr/lib/libLIBRARY.a");
end Linker;
end;
that uses Default_Switches. It were not necessary if the LIBRARY.gpr (in
5.3.6) described both static and dynamic builds controlled by Library_Type
variable. gnatmake is smart enough to choose either *.a or *.so for the
dependant library/application. E.g.
project LIBRARY is
type Library_Kind_Type is ("static", "relocatable");
Library_Kind : Library_Kind_Type :=
external ("Library_Type", "relocatable");
for Library_Kind use Library_Kind;
for Library_Name use "LIBRARY"; -- Valid for either choice
for Library_Dir use "/usr/lib"; -- Valid for either choice
...
for Externally_Built use "true";
end LIBRARY;
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2010-05-16 21:15 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-16 19:49 A proposal for Debian policy for Ada Dmitry A. Kazakov
2010-05-16 20:48 ` Ludovic Brenta
2010-05-16 21:15 ` Dmitry A. Kazakov [this message]
2010-05-16 22:05 ` Ludovic Brenta
2010-05-17 6:01 ` Stephen Leake
2010-05-17 9:28 ` Dmitry A. Kazakov
2010-05-17 10:02 ` Ludovic Brenta
2010-05-17 13:14 ` Dmitry A. Kazakov
2010-05-18 8:00 ` Stephen Leake
2010-05-18 8:39 ` Dmitry A. Kazakov
2010-05-18 9:53 ` Ludovic Brenta
2010-05-18 12:39 ` Dmitry A. Kazakov
2010-05-19 9:25 ` Stephen Leake
2010-05-19 9:47 ` Dmitry A. Kazakov
2010-05-20 10:45 ` Stephen Leake
2010-05-20 14:06 ` Dmitry A. Kazakov
2010-05-19 13:24 ` Björn Persson
2010-05-19 9:22 ` Stephen Leake
2010-05-19 9:52 ` Dmitry A. Kazakov
2010-05-19 10:41 ` Ludovic Brenta
2010-05-19 12:23 ` Dmitry A. Kazakov
2010-05-19 13:21 ` Ludovic Brenta
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox