diff --git a/acconfig.h b/acconfig.h index 3a906cc9..55b6d8a9 100644 --- a/acconfig.h +++ b/acconfig.h @@ -8,7 +8,6 @@ #undef HAVE_IPV6 #undef HAVE_POPT_H #undef HAVE_SOCKS_H -#undef HAVE_PERL /* macros/curses checks */ #undef HAS_CURSES diff --git a/configure.in b/configure.in index b66c4fcd..354cfb4b 100644 --- a/configure.in +++ b/configure.in @@ -223,34 +223,49 @@ else fi AC_PATH_PROG(sedpath, sed) -if test "$want_perl" = yes; then +if test "$want_perl" = "yes"; then AC_PATH_PROG(perlpath, perl) AC_MSG_CHECKING(for Perl compile flags) PERL_CFLAGS=`$perlpath -MExtUtils::Embed -e ccopts 2>/dev/null` if test "x$PERL_CFLAGS" = "x"; then - AC_MSG_RESULT([not found, building without perl.]) + AC_MSG_RESULT([not found, building without Perl.]) want_perl=no else - PERL_LDFLAGS=`$perlpath -MExtUtils::Embed -e ldopts |$sedpath 's/-lgdbm //'` - PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-ldb //'` - PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lndbm //'` - if test "$system" = "Linux"; then - PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lnsl //'` - PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lposix //'` + PERL_LDFLAGS="`$perlpath -MExtUtils::Embed -e ldopts` " + + dnl * dynaloader.a -> libperl_dynaloader.la + dynaloader=`echo $PERL_LDFLAGS | $sedpath 's/.* \([[^ ]]*\.a\).*/\1/'` + PERL_LDFLAGS=`echo $PERL_LDFLAGS | $sedpath 's/ [[^ ]]*\.a/ libperl_dynaloader.la/'` + + dnl * remove all database stuffs + PERL_LDFLAGS=`echo $PERL_LDFLAGS | $sedpath 's/-ldb //'` + PERL_LDFLAGS=`echo $PERL_LDFLAGS | $sedpath 's/-ldbm //'` + PERL_LDFLAGS=`echo $PERL_LDFLAGS | $sedpath 's/-lndbm //'` + PERL_LDFLAGS=`echo $PERL_LDFLAGS | $sedpath 's/-lgdbm //'` + dnl * nsl is already in ldflags + PERL_LDFLAGS=`echo $PERL_LDFLAGS | $sedpath 's/-lnsl //'` + + dnl * linux specific .. + if echo $host_os | grep -q linux; then + PERL_LDFLAGS=`echo $PERL_LDFLAGS | $sedpath 's/-lposix //'` fi - PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lc //'` - AC_MSG_RESULT(ok) - AC_SUBST(PERL_CFLAGS) - AC_SUBST(PERL_LDFLAGS) - AC_SUBST(PERL_LIB_DIR) - AC_DEFINE(HAVE_PERL) - fi + dnl * libc is of course in list already + PERL_LDFLAGS=`echo $PERL_LDFLAGS | $sedpath 's/-lc //'` + dnl * must not be in LIBADD line + PERL_LDFLAGS=`echo $PERL_LDFLAGS | $sedpath 's/-rdynamic //'` - dnl ** building from objdir.. - if test ! -d plugins/perl/xs; then - mkdir -p plugins/perl/xs + if test "x$dynaloader" = "x"; then + AC_MSG_RESULT([error parsing ldopts, building without Perl.]) + want_perl=no + else + AC_MSG_RESULT(ok) + + AC_SUBST(PERL_CFLAGS) + AC_SUBST(PERL_LDFLAGS) + AC_SUBST(PERL_LIB_DIR) + fi fi fi @@ -312,7 +327,7 @@ for c in $CHAT_MODULES; do echo "void ${c}_core_init(void); void ${c}_core_deinit(void);" >> $file if test "x$module_inits" != "x"; then echo "$module_inits" | $sedpath -e 's/()/(void)/g' -e 's/ /void /g' >> $file - echo "$module_deinits" | $sedpath -e 's/[ ]*$//' -e 's/()/(void)/g' -e 's/ /void /g' -e 's/^/void /' >> $file + echo "$module_deinits" | $sedpath -e 's/ *$//' -e 's/()/(void)/g' -e 's/ /void /g' -e 's/^/void /' >> $file fi echo "void ${c}_init(void) { ${c}_core_init(); $module_inits }" >> $file echo "void ${c}_deinit(void) { $module_deinits ${c}_core_deinit(); }" >> $file @@ -322,7 +337,7 @@ for c in $CHAT_MODULES; do echo "/* this file is automatically generated by configure - don't change */" > $file if test "x$fe_module_inits" != "x"; then echo "$fe_module_inits" | $sedpath -e 's/()/(void)/g' -e 's/ /void /g' >> $file - echo "$fe_module_deinits" | $sedpath -e 's/[ ]*$//' -e 's/()/(void)/g' -e 's/ /void /g' -e 's/^/void /' >> $file + echo "$fe_module_deinits" | $sedpath -e 's/ *$//' -e 's/()/(void)/g' -e 's/ /void /g' -e 's/^/void /' >> $file fi echo "void fe_${c}_modules_init(void) { $fe_module_inits }" >> $file echo "void fe_${c}_modules_deinit(void) { $fe_module_deinits }" >> $file @@ -408,6 +423,12 @@ if test "x$want_perl" = "xyes"; then ln -sf $file `echo $file|sed "s?$whole_dir/??"` done fi + if test ! -d src/perl/.libs; then + mkdir -p src/perl/.libs + fi + if test ! -L src/perl/.libs/DynaLoader.a; then + ln -s $dynaloader src/perl/.libs/DynaLoader.a + fi fi echo diff --git a/src/fe-text/Makefile.am b/src/fe-text/Makefile.am index a3ffadda..66f5bde0 100644 --- a/src/fe-text/Makefile.am +++ b/src/fe-text/Makefile.am @@ -15,7 +15,6 @@ irssi_DEPENDENCIES = @COMMON_LIBS@ irssi_LDADD = \ @COMMON_LIBS@ \ $(PROG_LIBS) \ - $(PERL_LDFLAGS) \ $(CURSES_LIBS) irssi_SOURCES = \ diff --git a/src/fe-text/irssi.c b/src/fe-text/irssi.c index ec7f979a..56932326 100644 --- a/src/fe-text/irssi.c +++ b/src/fe-text/irssi.c @@ -46,11 +46,6 @@ void irc_deinit(void); void mainwindow_activity_init(void); void mainwindow_activity_deinit(void); -#ifdef HAVE_PERL -void irssi_perl_init(void); -void irssi_perl_deinit(void); -#endif - static GMainLoop *main_loop; int quitting; @@ -110,9 +105,6 @@ static void textui_finish_init(void) fe_common_core_finish_init(); fe_common_irc_finish_init(); -#ifdef HAVE_PERL - irssi_perl_init(); -#endif signal_emit("irssi init finished", 0); screen_refresh_thaw(); @@ -124,9 +116,6 @@ static void textui_deinit(void) signal(SIGINT, SIG_DFL); signal_remove("gui exit", (SIGNAL_FUNC) sig_exit); -#ifdef HAVE_PERL - irssi_perl_deinit(); -#endif gui_textwidget_deinit(); gui_special_vars_deinit(); statusbar_deinit(); diff --git a/src/perl/Makefile.am b/src/perl/Makefile.am index 6cae6a40..4022876d 100644 --- a/src/perl/Makefile.am +++ b/src/perl/Makefile.am @@ -1,4 +1,5 @@ -noinst_LIBRARIES = libperl.a +moduledir = $(libdir)/irssi/modules +module_LTLIBRARIES = libirssi_perl.la irssi-perl.c: perl-signals.h @@ -8,7 +9,7 @@ INCLUDES = $(GLIB_CFLAGS) \ -I$(top_srcdir)/src \ -I$(top_srcdir)/src/core -libperl_a_SOURCES = \ +libirssi_perl_la_SOURCES = \ irssi-perl.c \ xsinit.c @@ -16,6 +17,7 @@ perl-signals.h: $(top_srcdir)/docs/signals.txt $(srcdir)/get-signals.pl cat $(top_srcdir)/docs/signals.txt | $(perlpath) $(srcdir)/get-signals.pl > perl-signals.h EXTRA_DIST = \ + libperl_dynaloader.la \ get-signals.pl \ xs/Irssi-bans.xs \ xs/Irssi-channel.xs \ @@ -47,3 +49,5 @@ all-local: install-exec-local: cd xs && make install && cd .. + +libirssi_perl_la_LIBADD = $(PERL_LDFLAGS) diff --git a/src/perl/libperl_dynaloader.la b/src/perl/libperl_dynaloader.la new file mode 100644 index 00000000..9117cdbd --- /dev/null +++ b/src/perl/libperl_dynaloader.la @@ -0,0 +1,25 @@ +# libsilc.la - a libtool library file +# Generated by ltmain.sh - GNU libtool 1.3.5 (1.385.2.206 2000/05/27 11:12:27) + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='DynaLoader.a' + +# Libraries that this one depends upon. +dependency_libs='' + +# Version information for libsilc. +current=0 +age=0 +revision=0 + +# Is this an already installed library? +installed=no + +# Directory that this library needs to be installed in: +libdir=''