From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: a07f3367d7,b2c4d98cbc17f0a9 X-Google-Attributes: gida07f3367d7,public,usenet X-Google-NewGroupId: yes X-Google-Language: ENGLISH,UTF8 Path: g2news2.google.com!news3.google.com!feeder.news-service.com!de-l.enfer-du-nord.net!feeder1.enfer-du-nord.net!eternal-september.org!.POSTED!not-for-mail From: Ludovic Brenta Newsgroups: comp.lang.ada Subject: Re: A proposal for Debian policy for Ada Date: Mon, 17 May 2010 00:05:39 +0200 Organization: A noiseless patient Spider Message-ID: <87632ncxjg.fsf@ludovic-brenta.org> References: <87aarzd14c.fsf@ludovic-brenta.org> <198miwzl97pnl$.1onmpwoadjr1p.dlg@40tude.net> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Date: Sun, 16 May 2010 22:05:39 +0000 (UTC) Injection-Info: mx02.eternal-september.org; posting-host="1ChOpwk0P7kKt9UgGv4JRA"; logging-data="5946"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18TpBIwQ1bPbepkMlu1LkzT" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) Cancel-Lock: sha1:Of+mTP/2/bfina3r6h/7bzLniG4= sha1:OqvXGLDW4JNf4ko75QoZ41sKEdI= Xref: g2news2.google.com comp.lang.ada:11669 Date: 2010-05-17T00:05:39+02:00 List-Id: "Dmitry A. Kazakov" writes: > On Sun, 16 May 2010 22:48:19 +0200, Ludovic Brenta wrote: > >> "Dmitry A. Kazakov" 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.