AC_INIT(main.cpp)

AC_CONFIG_HEADER(config.h)

AC_PROG_CC
AC_PROG_CXX
AC_PROG_INSTALL

CFLAGS="-I . -I/usr/local/include -L/usr/local/lib -g"
AC_SUBST(CFLAGS)

###############################################################################
# signal
###############################################################################
AC_CHECK_TYPES([sighandler_t, sig_t, __signalhandler_t], , ,
    [#include <sys/types.h>
     #include <signal.h> ])

###############################################################################
# environ
###############################################################################
AC_CHECK_DECL(environ)

###############################################################################
# Ruby
###############################################################################
AC_MSG_CHECKING(Ruby)
if test -e "/usr/bin/ruby" || test -e "/usr/local/bin/ruby"; then
    echo "ruby"

    RUBY="ruby"
elif test -e "/usr/bin/ruby18" || test -e "/usr/local/bin/ruby18"; then
    echo "ruby18"

    RUBY="ruby18"
elif test -e "/usr/bin/ruby16" || test -e "/usr/local/bin/ruby16"; then
    echo "ruby16"

    RUBY="ruby16"
elif test -e "/usr/bin/ruby19" || test -e "/usr/local/bin/ruby19"; then
    echo "ruby19"

    RUBY="ruby19"
else
    echo "no ruby.please install ruby"
    exit 1
fi

AC_SUBST(RUBY)

###############################################################################
# ?J?[?V?X
###############################################################################
AC_CHECK_LIB(ncurses, initscr, [NCURSES_LIB="yes"], [NCURSES_LIB="no"])
AC_MSG_CHECKING("ncurses.h")
AC_TRY_LINK([#include <ncurses.h>],[],[NCURSES_HEADER="yes"; echo "yes"], [NCURSES_HEADER="no"; echo "no"])

LIBCURSES=""

if test $NCURSES_HEADER = "yes" && test $NCURSES_LIB = "yes"
then
    LIBCURSES="-lncurses"
    AC_DEFINE(HAVE_NCURSES_H, 1)
fi

AC_CHECK_LIB(curses, initscr, [CURSES_LIB="yes"], [CURSES_LIB="no"])
AC_MSG_CHECKING("curses.h")
AC_TRY_LINK([#include <curses.h>],[],[CURSES_HEADER="yes"; echo "yes"], [CURSES_HEADER="no"; echo "no"])

if test $CURSES_HEADER = "yes" && test $CURSES_LIB = "yes"
then
    LIBCURSES="-lcurses"
    AC_DEFINE(HAVE_CURSES_H, 1)
fi

if test $LIBCURSES = ""
then
    echo "curses(libncurses, libncurses-dev, libcurses, libcurses-dev) is not installed"
    exit 1
fi

AC_SUBST(LIBCURSES)

################################################################################
# Onig
################################################################################
AC_CHECK_LIB(onig, onig_new, [ONIG_LIB="yes"], [ONIG_LIB="no"])
AC_MSG_CHECKING("onig.h")
AC_TRY_LINK([#include <oniguruma.h>], [], [ONIG_HEADER="yes"; echo "yes"], [ONIG_HEADER="no"; echo "no"])

if test $ONIG_HEADER = "yes" && test $ONIG_LIB = "yes"
then
    LIBONIG=-lonig
    INCONIG=

    COMPILED_LIBONIG=
    COMPILED_INCONIG=
else
    LIBONIG=
    INCONIG=

    COMPILED_LIBONIG="onig-4.6.1/.libs/libonig.a"
    COMPILED_INCONIG="-I onig-4.6.1"
fi

AC_SUBST(LIBONIG)
AC_SUBST(INCONIG)
AC_SUBST(COMPILED_LIBONIG)
AC_SUBST(COMPILED_INCONIG)

###############################################################################
# migemo
###############################################################################
AC_CHECK_LIB(migemo, migemo_query, [MIGEMO_LIB="yes"], [MIGEMO_LIB="no"])
AC_MSG_CHECKING("migemo.h")
AC_TRY_LINK([#include <migemo.h>],[],[MIGEMO_HEADER="yes"; echo "yes"], [MIGEMO_HEADER="no"; echo "no"])

if test $MIGEMO_HEADER = "yes" && test $MIGEMO_LIB = "yes"
then
    LIBMIGEMO="-lmigemo"
    AC_DEFINE(HAVE_MIGEMO_H, 1)
else
    LIBMIGEMO=""
fi

AC_SUBST(LIBMIGEMO)

###############################################################################
# ruby
###############################################################################
changequote(<<, >>)dnl
INCRUBY=-I`$RUBY -r rbconfig -e 'print Config::CONFIG["archdir"]'`
LIBRUBY=-l`$RUBY -r rbconfig -e 'print Config::CONFIG["RUBY_SO_NAME"]'`
changequote([, ])dnl

if test $INCRUBY = "" || test $LIBRUBY = ""
then
    echo "ruby(ruby, libruby, ruby-dev) is not installed"
    exit 1
fi

AC_SUBST(INCRUBY)
AC_SUBST(LIBRUBY)

###############################################################################
# iconv
###############################################################################
AC_MSG_CHECKING("iconv.h")
AC_TRY_LINK([#include <iconv.h>],[],[AC_DEFINE(HAVE_ICONV_H, 1) echo "yes"], [echo "no"])
AC_MSG_CHECKING("biconv.h")
AC_TRY_LINK([#include <biconv.h>],[],[AC_DEFINE(HAVE_BICONV_H, 1) echo "yes"], [echo "no"])

###############################################################################
# OS?艞L?虄??C?u????
###############################################################################
AC_MSG_CHECKING(OperatingSystem)
if test `uname -s` = "FreeBSD"; then
    echo "FreeBSD"

    AC_DEFINE(__FREEBSD__, 1)

    TARGETS="mfiler2 mattr mkeycode mhitanykey"

    if test -e "/usr/local/include/biconv.h"
    then
        LIBEXTRA="-lcrypt -lpthread -lbiconv -L /usr/local/lib"
    else
        LIBEXTRA="-lcrypt -lpthread"
    fi

    WKF_CONFIGURE="./configure"
elif test `uname -s | sed -e 's/\(.*\)-\(.*\)/\1/'` = "CYGWIN_NT"; then
    if test `uname -a | perl -ne 'if(/CYGWIN_NT-\S+\s\S+\s(\d+\.\d+)\.\d+/) { print $1, "\n" }'` = "1.7"; then
        echo "CYGWIN_NT1.7"

        AC_DEFINE(__CYGWIN7__, 1)

        if test -e "/usr/include/iconv.h"
        then
            LIBEXTRA="-liconv -lcrypt"
        else
            LIBEXTRA="-lcrypt"
        fi
        
        TARGETS="mfiler2 mattr mkeycode mhitanykey mattrcyg"
        WKF_CONFIGURE="./configure"
    else
        echo "CYGWIN_NT"

        if test -e "/usr/include/iconv.h"
        then
            LIBEXTRA="-liconv -lcrypt"
        else
            LIBEXTRA="-lcrypt"
        fi
        
        TARGETS="mfiler2 mattr mkeycode mhitanykey mattrcyg"
        WKF_CONFIGURE="./configure"
    fi
elif test `uname -s` = "Darwin"; then
    echo "Darwin"

    AC_DEFINE(__DARWIN__, 1)

    LIBEXTRA="-liconv"

    TARGETS="mfiler2 mattr mkeycode mhitanykey"
    WKF_CONFIGURE="./configure --build=powerpc-apple"
else
    echo "Linux"

    AC_DEFINE(__LINUX__, 1)

    LIBEXTRA="-lcrypt"
    
    TARGETS="mfiler2 mattr mkeycode mhitanykey"
    WKF_CONFIGURE="./configure"
fi

AC_SUBST(LIBEXTRA)
AC_SUBST(TARGETS)
AC_SUBST(WKF_CONFIGURE)

###############################################################################
# ???C?u?????虙菈羶p?X, ?C???N???[?h?t?@?C???虙菈羶p?X
###############################################################################
AC_ARG_WITH(cflag, [  --with-cflag=STRING add STRING to CFLAGS(-L/home/daisuke/lib, -I/home/daisuke/include, ...extra)], [ EXTRACFLAGS="$withval" ])

AC_SUBST(EXTRACFLAGS)

###############################################################################
# ?f?o?b?O
###############################################################################
AC_ARG_WITH(debug, [  --with-debug debug mode ], [ DEBUG="-DDEBUG" ])

AC_SUBST(DEBUG)

AC_OUTPUT(Makefile)
