summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TODO60
-rw-r--r--configure.in170
2 files changed, 137 insertions, 93 deletions
diff --git a/TODO b/TODO
index 2389d466..f7ee77f7 100644
--- a/TODO
+++ b/TODO
@@ -99,21 +99,21 @@
so server won't split it when it adds your nick+host mask)
- server connecting:
- - Don't try to restore user modes set by server automatically when
- reconnecting to another server. Like when server sets +r mode to you
- you won't get rid of it until you /disconnect.
- - DNS problems may cause removal of i-line, irssi shouldn't stop
- trying to reconnect the server if it happens.. Maybe it never should
- stop reconnecting to servers that are in config.
- - /RECONNECT <servertag> - If <servertag> belongs to some IRC network,
- reconnect to next server in that ircnet, otherwise just reconnect
- to the server.
- - /SERVER <number> would connect to n'th server in list. Show the
- numbers with /SERVER LIST
- - /CONNECT <ircnet> could remove existing ircnet connection from
- reconnect queue if it exists (only if there's only one?). Also if
- we're already connected to the ircnet it could complain about it
- and -yes would force it.
+ - Don't try to restore user modes set by server automatically when
+ reconnecting to another server. Like when server sets +r mode to you
+ you won't get rid of it until you /disconnect.
+ - DNS problems may cause removal of i-line, irssi shouldn't stop
+ trying to reconnect the server if it happens.. Maybe it never should
+ stop reconnecting to servers that are in config.
+ - /RECONNECT <servertag> - If <servertag> belongs to some IRC network,
+ reconnect to next server in that ircnet, otherwise just reconnect
+ to the server.
+ - /SERVER <number> would connect to n'th server in list. Show the
+ numbers with /SERVER LIST
+ - /CONNECT <ircnet> could remove existing ircnet connection from
+ reconnect queue if it exists (only if there's only one?). Also if
+ we're already connected to the ircnet it could complain about it
+ and -yes would force it.
- Tab completion:
- Complete aliases
@@ -142,21 +142,21 @@
- Try to make them create only .so files instead of .a and all..
- perl scripting:
- - /SCRIPT for listing scripts, /SCRIPT REMOVE <name>|ALL,
- /SCRIPT PERL RELOAD == ex. /PERLFLUSH
- - /PERL command - how does signal_add() work with it? probably not well.
- How to remove those scripts? etc. /SCRIPT could show them as some
- anonymous scripts, maybe list the whole script in the line..
- - Possibility to modify entry line somehow
- - Possibility to use "complete word" signal, needs GSList** handling
- - Add structures: CHATNET_REC, MODULE_REC, THEME_REC, KEYINFO_REC,
- CHAT_PROTOCOL_REC
- - signal_emit() - if emitting unknown signal, it could automatically
- save the types of sent parameters so another perl script could
- signal_add() it.
- - Perl module and the Irssi and Irssi::Irc libraries could have some
- version checks so that if they don't match it would complain.
- - Dependencies don't work with .xs files..
+ - /SCRIPT for listing scripts, /SCRIPT REMOVE <name>|ALL,
+ /SCRIPT PERL RELOAD == ex. /PERLFLUSH
+ - /PERL command - how does signal_add() work with it? probably not well.
+ How to remove those scripts? etc. /SCRIPT could show them as some
+ anonymous scripts, maybe list the whole script in the line..
+ - Possibility to modify entry line somehow
+ - Possibility to use "complete word" signal, needs GSList** handling
+ - Add structures: CHATNET_REC, MODULE_REC, THEME_REC, KEYINFO_REC,
+ CHAT_PROTOCOL_REC
+ - signal_emit() - if emitting unknown signal, it could automatically
+ save the types of sent parameters so another perl script could
+ signal_add() it.
+ - Perl module and the Irssi and Irssi::Irc libraries could have some
+ version checks so that if they don't match it would complain.
+ - Dependencies don't work with .xs files..
- Bigger code changes:
- Restructure code tree so that non-IRC chat protocols would be in
diff --git a/configure.in b/configure.in
index fe3a53ef..45719bbe 100644
--- a/configure.in
+++ b/configure.in
@@ -234,43 +234,54 @@ dnl ** fe-text checks
dnl **
AC_PATH_PROG(sedpath, sed)
-AC_MSG_CHECKING([whether GLib is unpacked to irssi dir])
-
-GLIB_DIR=`for d in *; do test -f $d/glib.h && echo $d; done`
-if test "x$GLIB_DIR" != "x"; then
- dnl glib in irssi directory, use it
- AC_MSG_RESULT([yes, using it])
-
- dnl * we have to do this at this point so we know what libs gmodule needs
- echo
- echo "configuring GLib ..."
- echo
- cd $GLIB_DIR
- ./configure
- cd ..
- echo
-
- GLIB_LDEXTRA=`$GLIB_DIR/glib-config --libs gmodule|sed -e 's/-lglib//' -e 's/-lgmodule//' -e 's,-L/usr/local/lib ,,'|sed 's/ \+/ /g'`
- full_glib_dir="`pwd`/$GLIB_DIR"
- GLIB_CFLAGS="-I$full_glib_dir -I$full_glib_dir/gmodule"
- if test -f $full_glib_dir/.libs/libglib.a; then
- GLIB_LIBS="$full_glib_dir/.libs/libglib.a $GLIB_LDEXTRA"
- if test -f $full_glib_dir/gmodule/.libs/libgmodule.a; then
- GLIB_LIBS="$GLIB_LIBS $full_glib_dir/gmodule/.libs/libgmodule.a"
+
+AC_DEFUN(AC_CHECK_GLIBDIR,[
+ AC_MSG_CHECKING([whether GLib is unpacked to irssi dir])
+
+ GLIB_DIR=`for d in *; do test -f $d/glib.h && echo $d; done`
+ if test "x$GLIB_DIR" != "x"; then
+ dnl * glib in irssi directory, use it
+ AC_MSG_RESULT([yes, using it])
+
+ dnl * we have to do this at this point so we know what libs gmodule needs
+ if test ! -f $GLIB_DIR/.libs/libglib.a; then
+ echo
+ echo "configuring GLib ..."
+ echo
+ cd $GLIB_DIR
+ if test ! -f glib-config; then
+ ./configure
+ fi
+ ${MAKE-make}
+ cd ..
+ echo
fi
- elif test -f $full_glib_dir/libglib.a; then
- GLIB_LIBS="$full_glib_dir/libglib.a $GLIB_LDEXTRA"
- if test -f $full_glib_dir/gmodule/libgmodule.a; then
- GLIB_LIBS="$GLIB_LIBS $full_glib_dir/gmodule/libgmodule.a"
+
+ GLIB_LDEXTRA=`$GLIB_DIR/glib-config --libs gmodule|$sedpath -e 's/-lglib//' -e 's/-lgmodule//' -e 's,-L/usr/local/lib ,,'|$sedpath 's/ \+/ /g'`
+ full_glib_dir="`pwd`/$GLIB_DIR"
+ GLIB_CFLAGS="-I$full_glib_dir -I$full_glib_dir/gmodule"
+ if test -f $full_glib_dir/.libs/libglib.a; then
+ GLIB_LIBS="$full_glib_dir/.libs/libglib.a $GLIB_LDEXTRA"
+ if test -f $full_glib_dir/gmodule/.libs/libgmodule.a; then
+ GLIB_LIBS="$GLIB_LIBS $full_glib_dir/gmodule/.libs/libgmodule.a"
+ fi
+ else
+ GLIB_LIBS="$full_glib_dir/libglib.a $GLIB_LDEXTRA"
+ if test -f $full_glib_dir/gmodule/libgmodule.a; then
+ GLIB_LIBS="$GLIB_LIBS $full_glib_dir/gmodule/libgmodule.a"
+ fi
fi
+ AC_SUBST(GLIB_DIR)
+ AC_SUBST(GLIB_CFLAGS)
+ AC_SUBST(GLIB_LIBS)
else
- AC_ERROR([GLIB was not compiled properly, libglib.a not found])
+ AC_MSG_RESULT([no])
fi
- AC_SUBST(GLIB_DIR)
- AC_SUBST(GLIB_CFLAGS)
- AC_SUBST(GLIB_LIBS)
-else
- AC_MSG_RESULT([no])
+])
+
+AC_CHECK_GLIBDIR
+
+if test "x$GLIB_DIR" = "x"; then
AM_PATH_GLIB(1.2.0,,, gmodule)
if test "x$GLIB_LIBS" = "x"; then
echo "*** trying without -lgmodule"
@@ -279,13 +290,43 @@ else
else
AC_DEFINE(HAVE_GMODULE)
fi
+
if test "x$GLIB_LIBS" = "x"; then
- echo
- echo "*** If you don't have GLIB, you can get it from ftp://ftp.gtk.org"
- echo "*** If you can't install GLIB anywhere or if you don't want to,"
- echo "*** you can just unpack it to Irssi's source directory and"
- echo "*** Irssi will automatically compile and use it."
- AC_ERROR([GLIB is required to build irssi.])
+ echo
+ echo "*** If you don't have GLIB, you can get it from ftp://ftp.gtk.org"
+ echo "*** If you can't install GLIB anywhere or if you don't want to,"
+ echo "*** you can just unpack it to Irssi's source directory and"
+ echo "*** Irssi will automatically compile and use it."
+ echo
+
+ dnl * I think it's pretty safe to assume GLib 1.2.8 since the next
+ dnl * will be 2.0 (or 1.4?) and it's not sure if irssi compiles
+ dnl * with it
+ glib_file=glib-1.2.8.tar.gz
+
+ dlcmd=
+ if test -f "`which ncftpget`"; then
+ dlcmd="ncftpget ftp://ftp.gtk.org/pub/gtk/v1.2/$glib_file"
+ fi
+ if test -f "`which wget`"; then
+ dlcmd="wget http://irssi.org/files/$glib_file"
+ fi
+ if test "x$dlcmd" != "x"; then
+ echo "*** I can download GLib for you now. If you don't want to, press CTRL-C now."
+ read answer
+ eval $dlcmd
+ if `gunzip $glib_file`; then
+ glib_file=`echo $glib_file|$sedpath s/\.gz$//`
+ if `tar xf $glib_file`; then
+ rm -f $glib_file
+ AC_CHECK_GLIBDIR
+ fi
+ fi
+ fi
+
+ if test "x$GLIB_LIBS" = "x"; then
+ AC_ERROR([GLIB is required to build irssi.])
+ fi
fi
fi
@@ -316,24 +357,22 @@ if test ! -s .libs/libconftest.a; then
fi
dnl ** check if dynamic linking worked
-if test ! -s .libs/libconftest.so -a -s .libs/libconftest.so.0.0; then
- mv .libs/libconftest.so.0.0 .libs/libconftest.so
-fi
-if test ! -s .libs/libconftest.so; then
+libfile=`grep ^library_names libconftest.la|$sedpath "s/library_names='\(.*\)'.*/\1/"|$sedpath 's/.* \([[^ ]]*\)$/\1/'`
+if test ! -s .libs/$libfile; then
AC_MSG_RESULT([no, error linking test module])
else
cat > conftest.c <<EOF
#include <gmodule.h>
main() {
GModule *m; int (*modfunc)(void);
-m = g_module_open(".libs/libconftest.so", 0);
+m = g_module_open(".libs/$libfile", 0);
if (!m) g_print("error loading: %s", g_module_error());
else if (!g_module_symbol(m, "modfunc", (gpointer *) &modfunc))
g_print("modfunc() symbol not found from module");
else if (modfunc() == 1) g_print("ok"); else g_print("wrong result?! 1 vs %d", modfunc());
return 0; }
EOF
- $CC $CFLAGS conftest.c -o conftest `$GLIB_CONFIG --cflags --libs gmodule` 2> /dev/null > /dev/null
+ $CC $CFLAGS conftest.c -o conftest $GLIB_CFLAGS $GLIB_LIBS 2> /dev/null > /dev/null
if test ! -s conftest; then
AC_MSG_RESULT([no, error compiling test program])
else
@@ -438,27 +477,31 @@ if test "$want_perl" != "no"; then
fi
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 linux > /dev/null; then
- PERL_LDFLAGS=`echo $PERL_LDFLAGS | $sedpath 's/-lposix\( \|$\)//'`
- fi
+ dnl * libc is of course linked without needing -lc
+ dnl * -rdynamic must not be in LIBADD line
+ for word in -ldb -ldbm -lndbm -lgdbm -lnsl -lc -rdynamic; do
+ PERL_LDFLAGS=`echo $PERL_LDFLAGS | $sedpath -e "s/$word //" -e "s/$word$//"`
+ done
- 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\( \|$\)//'`
+ case "$host_os" in
+ linux*)
+ PERL_LDFLAGS=`echo $PERL_LDFLAGS | $sedpath -e 's/-lposix //' -e 's/-lposix$//'`
+ ;;
+ hpux*)
+ if test "x$ac_cv_prog_gcc" = "xyes"; then
+ PERL_CFLAGS=`echo $PERL_CFLAGS | $sedpath -e 's/-Ae //' -e 's/-Ae$//'`
+ PERL_LDFLAGS=`echo $PERL_LDFLAGS | $sedpath -e 's/-Ae //' -e 's/-Ae$//'`
+ fi
+ ;;
+ *)
+ ;;
+ esac
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
+ echo "main(){perl_alloc(); return 0;}" > conftest.c
+ $CC $CFLAGS conftest.c -o conftest $LDFLAGS $PERL_LDFLAGS 2> /dev/null > /dev/null
if test -s conftest; then
irssi_cv_lib_perl_works=yes
else
@@ -686,7 +729,7 @@ if test "x$want_perl" != "xno"; then
if test "x$old_dir" != "x$whole_dir"; then
for file in $whole_dir/src/perl/*.[[ch]] $whole_dir/src/perl/libperl_orig.la $whole_dir/src/perl/libperl_dynaloader.la $whole_dir/src/perl/common/typemap $whole_dir/src/perl/common/module.h $whole_dir/src/perl/common/*.xs $whole_dir/src/perl/irc/typemap $whole_dir/src/perl/irc/module.h $whole_dir/src/perl/irc/*.xs; do
- link=`echo $file|sed "s?$whole_dir/??"`
+ link=`echo $file|$sedpath "s?$whole_dir/??"`
rm -f $link
$LN_S $file $link
done
@@ -706,6 +749,7 @@ fi
echo "Building irssi bot ......... : $want_irssibot"
echo "Building irssi proxy ....... : $want_irssiproxy"
echo "Building with IPv6 support . : $want_ipv6"
+
if test "x$want_perl" = "xstatic"; then
echo "Building with Perl support . : static (in irssi binary)"
elif test "x$want_perl" = "xyes"; then
@@ -719,7 +763,7 @@ else
fi
fi
-if test "x$perl_mod_error" != "x"; then
+if test "x$want_perl" != "xno" -a "x$perl_mod_error" != "x"; then
echo " - NOTE: Perl support will be compiled statically to irssi, not as"
echo " a module as requested. Reason:"
echo " $perl_mod_error"