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