mirror of
git://git.savannah.gnu.org/libtool.git
synced 2024-11-21 01:40:57 +08:00
342 lines
15 KiB
Plaintext
342 lines
15 KiB
Plaintext
From nobody Sun Dec 14 10:48:09 1997
|
|
X-From-Line: JoopvandeWege@mococo.nl Wed Dec 03 04:15:19 1997
|
|
Return-Path: <JoopvandeWege@mococo.nl>
|
|
Delivered-To: gord@trick.profitpress.com
|
|
Received: (qmail 1795 invoked from network); 3 Dec 1997 04:15:16 -0000
|
|
Received: from localhost (HELO bambam.m-tech.ab.ca) (127.0.0.1)
|
|
by localhost with SMTP; 3 Dec 1997 04:15:16 -0000
|
|
Received: from mcc-server.mococo.nl (mail.mococo.nl [195.193.4.2]) by bambam.m-tech.ab.ca (8.8.5/8.6.9) with SMTP id GAA28567 for <gord@m-tech.ab.ca>; Tue, 2 Dec 1997 06:06:47 -0700
|
|
Received: from laptop.mococo.nl (unverified [195.193.4.9]) by mcc-server.mococo.nl
|
|
(EMWAC SMTPRS 0.83) with SMTP id <B0000011089@mcc-server.mococo.nl>;
|
|
Tue, 02 Dec 1997 14:06:15 +0100
|
|
Date: Tue, 02 Dec 1997 14:06:15 +0100
|
|
Message-ID: <B0000011089@mcc-server.mococo.nl>
|
|
From: Joop van de Wege <JoopvandeWege@mococo.nl>
|
|
To: Gordon Matzigkeit <gord@m-tech.ab.ca>
|
|
Subject: Re: AmigaOS libtool port
|
|
In-Reply-To: <86oh339y7g.fsf@trick.profitpress.com>
|
|
References: <86oh339y7g.fsf@trick.profitpress.com>
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=US-ASCII
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Mailer: Becky! ver 1.23
|
|
Xref: trick.profitpress.com mail.libtool:816
|
|
Lines: 177
|
|
X-Gnus-Article-Number: 1 Mon Nov 2 17:16:02 1998
|
|
|
|
|
|
|
|
On 29 Nov 1997 14:39:31 -0700
|
|
Gordon Matzigkeit <gord@m-tech.ab.ca> wrote:
|
|
|
|
> Hi!
|
|
>
|
|
> libtool-1.0g contains some preliminary AmigaOS support. It is a
|
|
> little different than the patches you sent me, simply because I
|
|
> modified libtool slightly so that it would better accomodate your
|
|
> changes.
|
|
>
|
|
> Here are what I consider to be some unresolved issues:
|
|
>
|
|
> * I have attempted to automatically generate $objdir/a2ixlibrary.data,
|
|
> just as the OS/2 port does with $objdir/$libname.def. It currently
|
|
> looks like this:
|
|
>
|
|
> #define NAME $libname
|
|
> #define LIBRARY_ID 1
|
|
> #define VERSION $major
|
|
> #define REVISION $revision
|
|
>
|
|
> So, for libhello.la in the libtool distribution, this would make an
|
|
> a2ixlibrary.data that looks like:
|
|
>
|
|
> #define NAME libhello
|
|
> #define LIBRARY_ID 1
|
|
> #define VERSION 2
|
|
> #define REVISION 12
|
|
>
|
|
> Is that alright? My concerns are for the NAME definition, and the
|
|
> LIBRARY_ID, as I don't know what is valid, or what they are used
|
|
> for.
|
|
I have done this also but removed it because there are indeed two
|
|
problem. The NAME should be 'hello' but this can be solved but the
|
|
second issue is not so easy. LIBRARY_ID is a uniquely assign number
|
|
which needs to be different for each .ixlibrary build. The developer of
|
|
the ixlibrary is maintaining a database of which numbers are assign to
|
|
which library. Everything below 10 can be used for locally build
|
|
libraries, thats why I used 1.
|
|
So it is specific to the Amiga but it looks like overkill to me to
|
|
include the whole list into Libtool (about 50 entries right now).
|
|
|
|
>
|
|
> * What does `assign libs: SOMEDIR [add|remove]' do, exactly? Is it
|
|
> something like `ldconfig'? If so, then we should do something cleaner
|
|
> than in your current patch: it doesn't belong in archive_cmds or
|
|
> finish_cmds, it belongs in the generated executable wrapper.
|
|
Yes, it does something like ldconfig. I followed that thread about it
|
|
and its very similar but also has some differences.
|
|
LIBS: is a logical directory where all libraries are, but that doesn't
|
|
mean that they reside physically in the same directory on disk.
|
|
It is a way of telling the OS where to look when a program requests a
|
|
library, something along these lines:
|
|
main()
|
|
{
|
|
GfxBase=OpenLibrary("graphics.library",37L);
|
|
HelloBase=OpenLibrary("libhello.ixlibrary",3L);
|
|
}
|
|
|
|
Graphics.library is in ROM and will just have its open count incremented
|
|
but nothing else will happen. libhello.ixlibrary is loaded from disk if
|
|
it isn't already in memory, but one needs to tell the system where to
|
|
load it from. It will look in SYS:libs (another logical device (normally
|
|
the boot partition ~= /usr ) containing a libs directory) but it is
|
|
possible to add directories to this logical assignment with 'assign',
|
|
like this:
|
|
assign SOMEDIR LIBS: add
|
|
or remove them like this:
|
|
assign SOMEDIR LIBS: remove
|
|
SOMEDIR is composed of DRIVE+DIRECTORY (absolute) or DIRECTORY
|
|
(relative) from where the assign is executed.
|
|
The reason I used the assignment was because 'make check' didn't work
|
|
correctly because libhello.ixlibrary is generated in .libs which is not
|
|
where 'hell' is started from. The system looks in the current directory
|
|
for .libraries but I'm not sure about .ixlibraries. The alternative was
|
|
to install them first before 'make check'. Bad idea.
|
|
The assignment is not placed into a config file or so. The next reboot
|
|
will destroy it, no ld.so.conf.
|
|
|
|
Probably you're now more confused then ever :)
|
|
|
|
|
|
> * I suspect you don't know what I mean by `hardcoding' a library
|
|
> directory, so I've interpreted your patch, and come up with hardcode_*
|
|
> settings that I believe will work. We need to test that, during the
|
|
> next release.
|
|
I have already merged most things into lt-1.0h but I'm short on freetime
|
|
this week. I hope to have a couple of hours but it could be that I can
|
|
do only some work during the weekend.
|
|
|
|
|
|
> * Could you please tell me more about the AmigaOS requirements? Some
|
|
> of your patch is impossible for me to decipher, because I have no idea
|
|
> what you want to accomplish, and I don't think you're taking full
|
|
> advantage of libtool's internal conventions.
|
|
>
|
|
> In plain language, what are the answers to the following questions:
|
|
>
|
|
> * What exactly are `$libname_ixlibrary.a', `$libname.ixlibrary', and
|
|
> `$libname.a'? Is `$libname.a' the same file and installed in the same
|
|
> place when building static libraries?
|
|
Just in case I don't manage to make this clear. Have a look at the
|
|
readme of the following archive (and maybe the rest of it aswell:
|
|
ftp://ftp.ninemoons.com/pub/geekgadgets/971125/amiga-src/a2ixlibrary-2.0-src.tgz
|
|
(35Kb)
|
|
|
|
Dynamic libraries on the Amiga (in short)
|
|
first compile all object with the following additional CFLAGS:
|
|
-resident32 -malways-restore-a4 (these are the safest, -resident and
|
|
-m...restore.. can also be use but then certain limitations and
|
|
restrictions are imposed)
|
|
AR and RANLIB these into libNAME.a (-->$libname.a)
|
|
run a2ixlibrary on libNAME.a --> $libname_ixlibrary.a and $libname.ixlibrary
|
|
where _ixlibrary.a contains stubs and .ixlibrary contains the real code.
|
|
(NAME.h and NAME.x are also generated and automatically installed by
|
|
a2ixlibrary and are used by collect2)
|
|
libNAME.a can be discarded after running a2ixlibrary.
|
|
libNAME_ixlibrary.a gets installed in /usr/lib together with all the
|
|
other linker libraries.
|
|
libNAME.ixlibrary should be installed somewhere in a directory belonging
|
|
to LIBS: There is a subdirectory in /gg where the gnu-tools are
|
|
installed called sys/libs which should be used for this, prevents
|
|
cluttering the main libs directories.
|
|
|
|
Static libraries on the Amiga:
|
|
compile all objects with the CFLAGS of your choice
|
|
AR and RANLIB these into libNAME.a
|
|
install in /usr/lib
|
|
done.
|
|
|
|
>
|
|
> * How are each of them generated?
|
|
>
|
|
> * Where do they need to be installed?
|
|
Answered above, I hope.
|
|
>
|
|
> * `shlibpath_var' is the name of the runtime library search path
|
|
> environment variable. On Linux, it is `LD_LIBRARY_PATH'. So, if you
|
|
> install libhello.so in /home/gord/lib, binaries won't be able to
|
|
> execute unless you set `LD_LIBRARY_PATH=/home/gord/lib' before running
|
|
> them. Is there an equivalent variable under AmigaOS?
|
|
Assign LIBS: home:gord/lib add
|
|
Nope, ':' is NOT a typo. The root directory is ':' on the amiga and
|
|
cd / means move up one level, cd : means move to root.
|
|
There is a unix emulation library, ixemul.library, which handles things
|
|
like cd .. and cd / when one is using programs linked against it.
|
|
Thats why almost, if not all gnu tools are available for the Amiga and
|
|
they also work like on Unix. These leads to difficulties when mixing
|
|
'native' Amiga programs and ixemul.library linked ones. The path
|
|
differences are most prominent.
|
|
|
|
Somewhere in my patches I use a native program 'assign' inside ksh.
|
|
Further I have the gnu-tools installed under the 'gg' directory and
|
|
reference them in ksh using /gg.
|
|
Libtool libraries end up in /gg/lib (libNAME_ixlibrary.a, libNAME.a) and
|
|
the dynamic library ends up in /gg/sys/libs (libNAME.ixlibrary)
|
|
The system finds these because of the following statement:
|
|
assign LIBS: gg:sys/libs add
|
|
But some people like to specify --prefix=/local when configuring
|
|
packages and they also want the dynamic library to appear under
|
|
/local/sys/libs and thats why I have the sed substitution in postinstall_cmds
|
|
(?). Those people are responsible that they have an assignment that
|
|
tells the system to look into the proper directory for .ixlibraries.
|
|
|
|
> Thanks!
|
|
No thanks, hope this clears up a lot of things. If not, ask me and I'll
|
|
try to clarify things.
|
|
|
|
Joop
|
|
|
|
----
|
|
Joop van de Wege (JoopvandeWege@mail.mococo.nl)
|
|
Mobile Computing Consultants
|
|
+31 (0) 318 553292
|
|
|
|
From nobody Sun Dec 14 10:48:13 1997
|
|
X-From-Line: JoopvandeWege@mococo.nl Sat Dec 13 03:05:34 1997
|
|
Return-Path: <JoopvandeWege@mococo.nl>
|
|
Delivered-To: gord@trick.profitpress.com
|
|
Received: (qmail 11049 invoked from network); 13 Dec 1997 03:05:32 -0000
|
|
Received: from localhost (HELO bambam.m-tech.ab.ca) (127.0.0.1)
|
|
by localhost with SMTP; 13 Dec 1997 03:05:32 -0000
|
|
Received: from mcc-server.mococo.nl (mail.mococo.nl [195.193.4.2]) by bambam.m-tech.ab.ca (8.8.5/8.6.9) with SMTP id GAA11738 for <gord@m-tech.ab.ca>; Fri, 12 Dec 1997 06:47:52 -0700
|
|
Received: from laptop.mococo.nl (unverified [195.193.4.9]) by mcc-server.mococo.nl
|
|
(EMWAC SMTPRS 0.83) with SMTP id <B0000011567@mcc-server.mococo.nl>;
|
|
Fri, 12 Dec 1997 14:48:06 +0100
|
|
Date: Fri, 12 Dec 1997 14:48:06 +0100
|
|
Message-ID: <B0000011567@mcc-server.mococo.nl>
|
|
From: Joop van de Wege <JoopvandeWege@mococo.nl>
|
|
To: Gordon Matzigkeit <gord@m-tech.ab.ca>
|
|
Cc: gg@ninemoons.com
|
|
Subject: Re: AmigaOS libtool port
|
|
In-Reply-To: <86zpm8qm6o.fsf@trick.profitpress.com>
|
|
References: <B0000011089@mcc-server.mococo.nl> <86zpm8qm6o.fsf@trick.profitpress.com>
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=US-ASCII
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Mailer: Becky! ver 1.23
|
|
Xref: trick.profitpress.com mail.libtool:868
|
|
Lines: 111
|
|
X-Gnus-Article-Number: 2 Mon Nov 2 17:16:02 1998
|
|
|
|
|
|
|
|
On 11 Dec 1997 02:11:11 -0700
|
|
Gordon Matzigkeit <gord@m-tech.ab.ca> wrote:
|
|
|
|
> Hi!
|
|
>
|
|
> >>>>> Joop van de Wege writes:
|
|
>
|
|
> >> Is that alright? My concerns are for the NAME definition, and the
|
|
> >> LIBRARY_ID, as I don't know what is valid, or what they are used
|
|
> >> for.
|
|
>
|
|
> JvdW> I have done this also but removed it because there are indeed
|
|
> JvdW> two problem. The NAME should be 'hello' but this can be solved
|
|
> JvdW> but the second issue is not so easy. LIBRARY_ID is a uniquely
|
|
> JvdW> assign number which needs to be different for each .ixlibrary
|
|
> JvdW> build. The developer of the ixlibrary is maintaining a database
|
|
> JvdW> of which numbers are assign to which library. Everything below
|
|
> JvdW> 10 can be used for locally build libraries, thats why I used 1.
|
|
> JvdW> So it is specific to the Amiga but it looks like overkill to me
|
|
> JvdW> to include the whole list into Libtool (about 50 entries right
|
|
> JvdW> now).
|
|
>
|
|
> I suggest that the ixlibrary maintainer come up with a hash function
|
|
> that will map library names to numbers, so that if the LIBRARY_ID is
|
|
> not specified, it will be automatically generated by this hash
|
|
> function.
|
|
>
|
|
> If two hashed library codes conflict, then libtool will still have to
|
|
> provide a way for maintainers to specify the correct LIBRARY_ID.
|
|
>
|
|
> However, the current design of ixlibrary is not good because it means
|
|
> installing two libtool libraries will *always* cause a conflict,
|
|
> unless both package maintainers cared enough to be assigned a
|
|
> LIBRARY_ID.
|
|
The current situation is that all packages on ftp.ninemoons.com are
|
|
under CVS (amiga specific code added) and that for each snapshot Amiga
|
|
specific patches are applied to the baseline sources, whether they
|
|
originate from FSF or someplace else doesn't matter.
|
|
This means that for each library which can be turned into a *.ixlibrary
|
|
an a2ixlibrary.data{.in} exists.
|
|
|
|
It would be nice if the LIBRARY_ID's could be maintained in one location
|
|
and that location being libtool. On the other hand lots of people might
|
|
have objections against such a special treatment to the Amiga.
|
|
It might mean a lot of code just to support on platform.
|
|
|
|
>
|
|
> When I accepted the patches for the AmigaOS shared libraries, I was
|
|
> not aware of this limitation. You are basically telling me that there
|
|
> is no way for me to automatically generate correct shared libraries on
|
|
> AmigaOS.
|
|
No, unless I start digging into the a2ixlibrary source to see if I can
|
|
find a way to automate things. The problem is in the fact that the ID is
|
|
hardcoded into the library (like paths on some other platforms) and the
|
|
ID must be unique, making distribution of binaries almost impossible.
|
|
|
|
|
|
> Unless this issue can be resolved, I think I should remove the AmigaOS
|
|
> support, because it will cause more problems than it solves. Shared
|
|
> libraries, IMO, are not worth the time and effort of every maintainer
|
|
> having to register with the AmigaOS ixlibrary project.
|
|
Libtool can still be a package useful for the Amiga but it will get the
|
|
same treatment as all others, keep a baseline and apply patches when
|
|
needed.
|
|
|
|
>
|
|
> JvdW> Somewhere in my patches I use a native program 'assign' inside
|
|
> JvdW> ksh. Further I have the gnu-tools installed under the 'gg'
|
|
> JvdW> directory and reference them in ksh using /gg. Libtool
|
|
> JvdW> libraries end up in /gg/lib (libNAME_ixlibrary.a, libNAME.a)
|
|
> JvdW> and the dynamic library ends up in /gg/sys/libs
|
|
> JvdW> (libNAME.ixlibrary)
|
|
>
|
|
> JvdW> But some
|
|
> JvdW> people like to specify --prefix=/local when configuring
|
|
> JvdW> packages and they also want the dynamic library to appear under
|
|
> JvdW> /local/sys/libs and thats why I have the sed substitution in
|
|
> JvdW> postinstall_cmds (?). Those people are responsible that they
|
|
> JvdW> have an assignment that tells the system to look into the
|
|
> JvdW> proper directory for .ixlibraries.
|
|
>
|
|
> This is a problem. Why do dynamic libraries have to go into a
|
|
> separate directory?
|
|
This way it doesn't clutter a directory where no executables belong in.
|
|
It is also historical and because the Amiga isn't a real Unix machine.
|
|
It uses ixemul.library for its unix emulation, something like cygwin32.dll
|
|
|
|
> sys/libs sounds like a violation of the GNU directory conventions,
|
|
> which is a problem. It means that even GNU packages will not install
|
|
> binaries according to their own conventions. :(
|
|
>
|
|
> It seems to me to be much better if we just put everything into
|
|
> libdir. Can this work?
|
|
Yes, it can.
|
|
|
|
I'll forward this reply to some relevant Amiga mailinglists to see if
|
|
people are willing to change things.
|
|
|
|
Joop
|
|
|
|
PS:
|
|
Please comment on this, Fred, Hans?
|
|
|
|
----
|
|
|
|
Joop van de Wege (JoopvandeWege@mail.mococo.nl)
|
|
Mobile Computing Consultants
|
|
+31 (0) 318 553292
|
|
|