comp.lang.ada
 help / color / mirror / Atom feed
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



  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