diff options
author | Timo Sirainen <cras@irssi.org> | 2001-02-22 20:39:35 +0000 |
---|---|---|
committer | cras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564> | 2001-02-22 20:39:35 +0000 |
commit | 469fde361894e3e2abda51e9351aae42832aa0a1 (patch) | |
tree | 516941c3d28b94573e6fec31556ccc0c38333164 | |
parent | e2ff4550ea1c77c95db91ebb07eeea8f174e33dc (diff) | |
download | irssi-469fde361894e3e2abda51e9351aae42832aa0a1.zip |
Verify in configure that linking with perl's LDFLAGS actually works. If
perl lib dir is set, add 'use lib "/perl/lib/dir"' before each script
automatically.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1287 dbcabf3a-b0e7-0310-adc4-f8d773084564
-rw-r--r-- | configure.in | 49 | ||||
-rw-r--r-- | src/perl/Makefile.am | 1 | ||||
-rw-r--r-- | src/perl/perl.c | 11 |
3 files changed, 49 insertions, 12 deletions
diff --git a/configure.in b/configure.in index 128e5151..fe3a53ef 100644 --- a/configure.in +++ b/configure.in @@ -392,11 +392,17 @@ dnl ** if test "$want_perl" != "no"; then AC_PATH_PROG(perlpath, perl) - AC_MSG_CHECKING(for Perl compile flags) + AC_MSG_CHECKING(for working Perl support) + + if test "x$perlpath" = "x"; then + perl_check_error="perl binary not found" + else + PERL_CFLAGS=`$perlpath -MExtUtils::Embed -e ccopts 2>/dev/null` + fi - 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.]) + perl_check_error="Error getting perl CFLAGS" + AC_MSG_RESULT([not found, building without Perl]) want_perl=no else PERL_LDFLAGS=`$perlpath -MExtUtils::Embed -e ldopts 2>/dev/null` @@ -449,6 +455,25 @@ if test "$want_perl" != "no"; then dnl * must not be in LIBADD line PERL_LDFLAGS=`echo $PERL_LDFLAGS | $sedpath 's/-rdynamic\( \|$\)//'` + dnl * check that perl's ldflags actually work + AC_CACHE_VAL(irssi_cv_lib_perl_works, [ + echo "main(){return 0;}" > conftest.c + $CC $CFLAGS $LDFLAGS $PERL_LDFLAGS conftest.c -o conftest 2> /dev/null > /dev/null + if test -s conftest; then + irssi_cv_lib_perl_works=yes + else + irssi_cv_lib_perl_works=no + fi + ]) + + if test "x$irssi_cv_lib_perl_works" = "xno"; then + perl_check_error="Error linking with perl libraries: $PERL_LDFLAGS" + AC_MSG_RESULT([error linking with perl libraries, building without Perl]) + want_perl=no + fi + fi + + if test "x$want_perl" != "xno"; then if test "x$want_perl" = "xstatic"; then AC_MSG_RESULT(ok) elif test "x$DYNALOADER_A" = "x"; then @@ -686,7 +711,12 @@ if test "x$want_perl" = "xstatic"; then elif test "x$want_perl" = "xyes"; then echo "Building with Perl support . : module" else - echo "Building with Perl support . : no" + if test "x$perl_check_error" = "x"; then + echo "Building with Perl support . : no" + else + echo "Building with Perl support . : NO!" + echo " - $perl_check_error" + fi fi if test "x$perl_mod_error" != "x"; then @@ -701,12 +731,11 @@ if test "x$want_perl" = "xyes"; then else echo "Perl library directory ..... : $PERL_LIB_DIR" if test "x$perl_lib_dir_given" != "xyes"; then - echo " - NOTE: This is automatically set to the same directory you gave with" - echo " --prefix. Irssi's perl scripts do not work unless you also add" - echo " this directory to @INC (or do some other magic)." - echo " *OR* what you might want to do instead, is to simply give --enable-perl=" - echo " (nothing after '=') option to configure, and make install will install" - echo " the Perl libraries to defaut directory." + echo " - NOTE: This was automatically set to the same directory you gave with" + echo " --prefix. If you want the perl libraries to install to their 'correct'" + echo " path, you'll need to give --enable-perl= (nothing after '=') option" + echo " to configure. Anyway, installing perl to this directory should work" + echo " just as well.." fi fi fi diff --git a/src/perl/Makefile.am b/src/perl/Makefile.am index 5c31d908..4bc66891 100644 --- a/src/perl/Makefile.am +++ b/src/perl/Makefile.am @@ -15,6 +15,7 @@ perl.c: perl-signals-list.h INCLUDES = $(GLIB_CFLAGS) \ -DSCRIPTDIR=\""$(libdir)/irssi/scripts"\" \ + -DPERL_LIB_DIR=\""$(PERL_LIB_DIR)"\" \ $(PERL_CFLAGS) \ -I$(top_srcdir)/src \ -I$(top_srcdir)/src/core diff --git a/src/perl/perl.c b/src/perl/perl.c index 6239b9ed..95d2c2b3 100644 --- a/src/perl/perl.c +++ b/src/perl/perl.c @@ -72,7 +72,7 @@ static void irssi_perl_start(void) " my $sub = <FH>;\n" " close FH;\n" "\n" - " my $eval = qq{package $package; sub handler { $sub; }};\n" + " my $eval = qq{package $package; %s sub handler { $sub; }};\n" " {\n" " # hide our variables within this block\n" " my ($filename, $package, $sub);\n" @@ -83,6 +83,7 @@ static void irssi_perl_start(void) " eval {$package->handler;};\n" " die $@ if $@;\n" "}\n"; + char *code, *use_code; perl_signals_start(); perl_sources = NULL; @@ -91,7 +92,13 @@ static void irssi_perl_start(void) perl_construct(my_perl); perl_parse(my_perl, xs_init, 3, args, NULL); - perl_eval_pv(eval_file_code, TRUE); + + use_code = *PERL_LIB_DIR == '\0' ? "" : + "use lib \""PERL_LIB_DIR"\";"; + + code = g_strdup_printf(eval_file_code, use_code); + perl_eval_pv(code, TRUE); + g_free(code); perl_common_init(); } |