dnl Process this file with autoconf to produce a configure script.
AC_INIT(hengband, 2.1.5)

AC_CONFIG_HEADERS(src/autoconf.h)
AC_CONFIG_SRCDIR(src/main.c)
AM_INIT_AUTOMAKE

AC_ARG_WITH(setgid,
[  --with-setgid=NAME      install hengband as group NAME],
[case "${withval}" in
  no) GAMEGROUP="";;
  yes) AC_MSG_ERROR(missing argument for --with-setgid);;
  *) GAMEGROUP="$withval";;
esac])
AC_SUBST(GAMEGROUP)
AM_CONDITIONAL(SET_GID, test "$GAMEGROUP" != "")

AC_LANG_C

dnl generate the installation path for the ./lib/ folder
if test "$GAMEGROUP" != ""; then
  MY_EXPAND_DIR(game_datadir, "$datadir/games/$PACKAGE/lib/")
else
  MY_EXPAND_DIR(game_datadir, "./lib/")
  bindir=".."
fi

dnl overwrite the path with an user-specified value
AC_ARG_WITH(libpath,
[  --with-libpath=path     specify the path to the Hengband lib folder],
[game_datadir="$withval"])

AC_DEFINE_UNQUOTED(DEFAULT_PATH, "$game_datadir", [Path to the Hengband lib folder])
DEFAULT_PATH="$game_datadir"
AC_SUBST(DEFAULT_PATH)

dnl Checks for programs.
AC_PROG_CC

AC_ARG_ENABLE(japanese,
[  --disable-japanese      build english version], use_japanese=no, [AC_DEFINE(JP, 1, [Enable Japanese]) AC_DEFINE(EUC, 1, [Use Extended Unix Code])])

AC_ARG_ENABLE(xim,
[  --disable-xim           disable xim support], use_xim=no, use_xim=yes)
AC_ARG_ENABLE(fontset,
[  --disable-fontset       disable fontset support], use_fontset=no, use_fontset=yes)
AC_ARG_ENABLE(worldscore,
[  --disable-worldscore    disable worldscore support], ,AC_DEFINE(WORLD_SCORE, 1, [Allow the game to send scores to the score server]))
AC_ARG_ENABLE(chuukei,
[  --enable-chuukei        enable internet chuukei support], AC_DEFINE(CHUUKEI, 1, [Chuukei mode]))

dnl Checks for libraries.
dnl Replace `main' with a function in -lncurses:
AC_CHECK_LIB(ncursesw, initscr, [AC_DEFINE(USE_GCU, 1, [Allow -mGCU environment]) AC_DEFINE(USE_NCURSES, 1, [Use ncurses]) LIBS="$LIBS -lncursesw"])
if test "$ac_cv_lib_ncursesw_initscr" != yes; then
  AC_CHECK_LIB(ncurses, initscr, [AC_DEFINE(USE_GCU, 1, [Allow -mGCU environment]) AC_DEFINE(USE_NCURSES, 1, [Use ncurses]) LIBS="$LIBS -lncurses"])
  if test "$ac_cv_lib_ncurses_initscr" != yes; then
    AC_CHECK_LIB(curses, initscr, [AC_DEFINE(USE_GCU, 1, [Allow -mGCU environment]) LIBS="$LIBS -lcurses"])
    if test "$ac_cv_lib_curses_initscr" != yes; then
      AC_CHECK_LIB(termcap, tgetent, [AC_DEFINE(USE_CAP, 1, [Allow -mCAP environment]) LIBS="$LIBS -ltermcap"])
    fi
  fi
fi

AC_CHECK_LIB(iconv, iconv_open)

AC_CHECK_FILE(/dev/urandom, AC_DEFINE(RNG_DEVICE, "/dev/urandom", [Random Number Generation device file]))

dnl Checks for header files.
AC_PATH_XTRA
if test "$have_x" = yes; then
  LIBS="$LIBS -lX11"
  AC_DEFINE(USE_X11, 1, [Allow -mX11 environment])
  CFLAGS="$X_CFLAGS $CFLAGS"
  LDFLAGS="$X_LIBS $LDFLAGS"

  if test "$use_fontset" = yes; then
    AC_DEFINE(USE_FONTSET, 1, [Use FontSet])
  else
    if test "$use_japanese" != no; then
      AC_DEFINE(USE_JP_FONTSTRUCT, 1, [Use Kanji without FontSet])
    fi
  fi

  if test "$use_xim" = yes; then
    AC_DEFINE(USE_XIM, 1, [Use X Imput Method])
  fi

  if test "$use_fontset" = yes || test "$use_xim" = yes; then
    AC_DEFINE(USE_LOCALE, 1, [Support Locale])
    if test "$use_japanese" != no; then
      AC_DEFINE(DEFAULT_LOCALE, "ja_JP.eucJP", Default Japanese Locale)
    fi
    AC_CHECK_LIB(X11, _Xsetlocale, AC_DEFINE(X_LOCALE, 1, [Use XLocale]))
    AC_CHECK_LIB(xpg4, setlocale, LIBS="$LIBS -lxpg4")
  fi
fi

if test "$use_japanese" != no; then
  AC_CHECK_PROG(NKF, nkf, yes)
  if test x"$NKF" != x"yes"; then
    AC_MSG_ERROR([nkf is not found. Please install nkf.])
  fi
fi

AC_HEADER_STDC
AC_CHECK_HEADERS(fcntl.h strings.h sys/file.h sys/ioctl.h sys/time.h termio.h unistd.h stdint.h)

dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_HEADER_TIME
AC_STRUCT_TM

dnl Checks for library functions.
AC_PROG_GCC_TRADITIONAL
AC_FUNC_MEMCMP
AC_TYPE_SIGNAL
AC_FUNC_STRFTIME
AC_FUNC_VPRINTF
AC_CHECK_FUNCS(gethostname mkdir select socket strtol vsnprintf mkstemp usleep)

AC_OUTPUT(Makefile src/Makefile lib/Makefile lib/apex/Makefile lib/bone/Makefile lib/data/Makefile lib/edit/Makefile lib/file/Makefile lib/help/Makefile lib/info/Makefile lib/pref/Makefile lib/save/Makefile lib/script/Makefile lib/user/Makefile lib/xtra/Makefile lib/xtra/font/Makefile lib/xtra/graf/Makefile lib/xtra/music/Makefile lib/xtra/sound/Makefile)
