From: Ludovic Brenta <ludovic@ludovic-brenta.org>
Subject: Re: A proposal for Debian policy for Ada
Date: Mon, 17 May 2010 00:05:39 +0200
Date: 2010-05-17T00:05:39+02:00 [thread overview]
Message-ID: <87632ncxjg.fsf@ludovic-brenta.org> (raw)
In-Reply-To: 198miwzl97pnl$.1onmpwoadjr1p.dlg@40tude.net
"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes:
> 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.
Ah, I had not caught that subtlety. There are currently 2517 -dev
packages in the libdevel section of Debian unstable. Are you suggesting
that each -dev package for the C language should provide a GNAT Project
file? Or that each -dev package for an Ada library should provide an
individual project file for each C library referenced? That seems like
a *lot* of work.
> 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;
That's a nice suggestion. I'll try to implement that for the release
after Squeeze.
--
Ludovic Brenta.
next prev parent reply other threads:[~2010-05-16 22:05 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
2010-05-16 22:05 ` Ludovic Brenta [this message]
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