After talking with the folks on #kde-devel, this is the e-mail that I sent to the kde core list.
-----Forwarded Message----- From: Benjamin Reed <[EMAIL PROTECTED]> To: [EMAIL PROTECTED] Subject: kde binary building is not portable :( Date: 25 Nov 2002 10:10:27 -0500 After a discussion on the libtool list of working around module behavior on Darwin, it has become evident that the way KDE treats libtool modules is not portable (and apparently is not how you're supposed to use them =) The issue is that while on elf platforms, modules and shared libraries are the same thing, there are platforms where this is not true. Darwin/MacOSX and NetBSD a.out are the two I know about, but there may be others as well. (for more info, see the thread at the libtool list:) http://mail.gnu.org/pipermail/libtool/2002-November/007235.html There are tons of places in the KDE code where people are linking against libtool libraries built with -module, but the most notable is in the dummy binaries, ie, the ones with main() in the .so file, and then a dummy.cpp that gets linked with that library to make the binary for non-kdeinit startup. For those, the NetBSD folks came up with this fix: -----(before)----- bin_PROGRAMS = foo lib_LTLIBRARIES = foo.la foo_la_SOURCES = main.cpp foo.cpp foo_SOURCES = dummy.cpp foo_LDADD = foo.la -----(after)----- bin_PROGRAMS = foo lib_LTLIBRARIES = foo.la libfoo_main.la libfoo_main_la_SOURCES = foo.cpp foo_la_SOURCES = libfoo_main.cpp foo_la_LIBADD = libfoo_main.la foo_SOURCES = foo_main.cpp foo_LDADD = libfoo_main.la -----(snip!)----- ...their change makes foo.cpp contain an "extern int kdemain()" as it's main function, and then the dummy files (foo_main.cpp and libfoo_main.cpp) actually each contain a main() that just call the kdemain(). It seems like this is kind of overkill, but I don't know if maybe it's because some kind of weird symbol-loading issue on other platforms... It certainly seems the safest way to do it. If kdeinit's behavior is going to stay this way in the near future, perhaps the easiest thing is to make an am_edit change or some kind of automake macro that lets us define something like: -----(foo.am)----- bin_KDEPROGRAMS = foo foo_SOURCES = foo.cpp # <-- contains kdemain() instead of main() -----(snip!)----- ...and that auto-generates the above output (with a split foo.la and libfoo_main.la) automatically. We've been discussing this on the #kde-devel channel, and it sounds like an am_edit macro that does the above transform is the easiest workaround for this, and it allows for future removal of kdeinit if that is still a goal. Does this make sense? Do you need more info or clarification from me? ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ Fink-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/fink-devel