libtool/mail/amiga
1998-11-02 19:30:15 +00:00

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