| 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 | |