n###############################################################################
# mod_uploader / configure.in
###############################################################################
# Copyright (C) 2005 Tetsuya Kimata <kimata@acapulco.dyndns.org>
#
# All rights reserved.
#
# This software is provided 'as-is', without any express or implied
# warranty.  In no event will the authors be held liable for any
# damages arising from the use of this software.
#
# Permission is granted to anyone to use this software for any
# purpose, including commercial applications, and to alter it and
# redistribute it freely, subject to the following restrictions:
#
# 1. The origin of this software must not be misrepresented; you must
#    not claim that you wrote the original software. If you use this
#    software in a product, an acknowledgment in the product
#    documentation would be appreciated but is not required.
#
# 2. Altered source versions must be plainly marked as such, and must
#    not be misrepresented as being the original software.
#
# 3. This notice may not be removed or altered from any source
#    distribution.
#
# $Id: configure.in 672 2005-09-13 13:27:42Z svn $
###############################################################################

AC_PREREQ(2.59)

###############################################################################
# パッケージ
AC_COPYRIGHT([Copyright (C) 2005 Tetsuya Kimata. All Rights Reserved.])
AC_INIT([mod_uploader], [1.3.0], [kimata@acapulco.dyndns.org])

###############################################################################
# システム構成
AC_CANONICAL_TARGET

###############################################################################
# ディレクトリ構成
AC_CONFIG_SRCDIR([src/mod_uploader.cpp])
AC_CONFIG_HEADER([include/mod_uploader_config.h])
AC_CONFIG_AUX_DIR(build)

###############################################################################
# コンパイラ
AC_PROG_CC
AC_PROG_CXX

AC_LANG(C++)

AC_C_INLINE
AC_C_CONST

AC_HEADER_STDC

###############################################################################
# CPU
AC_CHECK_MARCH

###############################################################################
# ヘッダ
AC_CHECK_HEADERS([ctype.h fcntl.h iconv.h limits.h stdlib.h string.h sys/types.h utime.h])
AC_CHECK_FUNCS([ \
    getpagesize \
    strnchr \
    utime \
    memmem \
])

AC_CHECK_LIB([iconv], [main])
AC_CHECK_ICONV_CONST

###############################################################################
# 関数
AC_CHECK_FUNCS(isalpha,	, AC_MSG_ERROR([isalpha not found]))
AC_CHECK_FUNCS(isalnum, , AC_MSG_ERROR([isalnum not found]))
AC_CHECK_FUNCS(isdigit, , AC_MSG_ERROR([isdigit not found]))

AC_CHECK_FUNCS(malloc,  , AC_MSG_ERROR([malloc not found]))
AC_CHECK_FUNCS(realloc, , AC_MSG_ERROR([realloc not found]))

AC_CHECK_FUNCS(memcpy,  , AC_MSG_ERROR([memcpy not found]))
AC_CHECK_FUNCS(memmove, , AC_MSG_ERROR([memmove not found]))

AC_CHECK_FUNCS(strcpy,  , AC_MSG_ERROR([strcpy not found]))
AC_CHECK_FUNCS(strlen,	, AC_MSG_ERROR([strlen not found]))
AC_CHECK_FUNCS(strcmp,  , AC_MSG_ERROR([strcmp not found]))
AC_CHECK_FUNCS(strncmp, , AC_MSG_ERROR([strncmp not found]))
AC_CHECK_FUNCS(strstr,  , AC_MSG_ERROR([strstr not found]))

###############################################################################
# Apache
AC_CHECK_APXS2
AC_CHECK_APACHE2CTL
AC_CHECK_APRCONF

AC_CHECK_APACHE_VERSION
AC_CHECK_APACHE_MOD_DSO

###############################################################################
# コマンド

# Mac OSX の場合，apr-config --apr-libtool で得られる libtool は --tag
# を受け付けてくれないので，自力で GNU Libtool を探す．
AC_CHECK_LIBTOOL

# オプショナルなので，特にエラーメッセージは出さない．
AC_PATH_PROG(RUBY,          ruby,       ruby)
AC_PATH_PROG(DOXYGEN,       doxygen,    doxygen)
AC_PATH_PROG(DOT, 		    dot,        dot)
AC_PATH_PROG(PS2PDF,        ps2pdf,     ps2pdf)
AC_PATH_PROG(SVN,           svn,        svn)
AC_PATH_PROG(TAR,           tar,        tar)

###############################################################################
# 環境
PWD=`pwd`
USER=`whoami`
HOSTNAME=`hostname`
LIBEXECDIR=`$APXS2 -q LIBEXECDIR`

AC_SUBST(PWD)
AC_SUBST(USER)
AC_SUBST(HOSTNAME)
AC_SUBST(LIBEXECDIR)

###############################################################################
# 設定

# サムネイル
AC_ARG_ENABLE(thumbnail,
        [  --enable-thumbnail      trun making thumbnail on])
AC_MSG_CHECKING([for whether to enable making thumbnail])
if test "$enable_thumbnail" = yes; then
    AC_DEFINE(MAKE_THUMBNAIL, "on", [サムネールを作成するかどうか．])
    AC_MSG_RESULT(yes)
    AC_CHECK_MAGICKCONF
else
    AC_MSG_RESULT(no)
    MCONF="echo > /dev/null"
fi
AC_CHECK_IE_NAME_CODE

# 排他処理
AC_ARG_ENABLE(rwlock,
        [  --disable-rwlock        use mutex instead of rwlock])
AC_MSG_CHECKING([for whether to use rwlock])
if test "$enable_rwlock" = no; then
    AC_DEFINE(LOCK_TYPE_MUTEX, , [排他処理に mutex を使用．])
    AC_MSG_RESULT(no)
else
    AC_DEFINE(LOCK_TYPE_RWLOCK, , [排他処理に rwlock を使用．])
    AC_MSG_RESULT(yes)
fi

###############################################################################
# カスタマイズ変数
AC_DEFINE(BYTE_UNIT,                "Byte",     	[サイズの単位の表記(Byte)．])
AC_DEFINE(KBYTE_UNIT,               "KB",           [サイズの単位の表記(KByte)．])
AC_DEFINE(MBYTE_UNIT,               "MB",           [サイズの単位の表記(MByte)．])
AC_DEFINE(GBYTE_UNIT,               "GB",           [サイズの単位の表記(GByte)．])

AC_DEFINE(UPLOAD_POST_INTERVAL_SEC,  60,            [再アップロードするまでの待ち時間])

AC_DEFINE(TIMEZONE_OFFSET,          "+09:00",       [世界標準時からのオフセット表記])

AC_DEFINE(CHARACTER_CODE,           "euc-jp",       [データの文字コード])

AC_DEFINE(UITEM_TIME_ZONE_OFFSET,   9*60*60,        [世界標準時からのオフセット．])
AC_DEFINE(UITEM_TIME_FORMAT,        "%y/%m/%d(%a) %H:%M:%S", [時間表記のフォーマット．])
AC_DEFINE(UITEM_MAX_TIME_LENGTH,    32,             [時間表記の最大長．])

AC_DEFINE(MMAP_PAGE_SIZE,           4096,           [OS のページサイズ．])
AC_DEFINE(MMAP_BLOCK_SIZE,          1024*1024,      [mmap する単位．])

AC_DEFINE(RFC1867_READ_BLOCK_SIZE,  4*1024,         [RFC1867 の内容を読み込む単位．])
AC_DEFINE(RFC1867_READ_TIMEOUT,     600,            [RFC1867 の内容を読み込むときのタイムアウト時間．])

AC_DEFINE(TLEXER_TOKEN_POOL_NUM,    128,            [token 用のメモリの確保を行う単位．])
AC_DEFINE(TPARSER_NODE_POOL_NUM,    128,            [node 用のメモリの確保を行う単位．])
AC_DEFINE(TEXECUTOR_VARIABLE_POOL_NUM, 32,          [variable 用のメモリの確保を行う単位．])
AC_DEFINE(TEXECUTOR_SCALAR_POOL_NUM, 16,            [scalar 用のメモリの確保を行う単位．])

AC_DEFINE(THUMBNAIL_SIZE_LIMIT,     5*1024*1024,    [サムネイルを作成する対象となる最大ファイルサイズ．])
AC_DEFINE(THUMBNAIL_FILE_TYPE,      "jpg",      	[サムネイル画像の種類．])
AC_DEFINE(THUMBNAIL_WIDTH_LIMIT,    128,            [サムネイルの最大縦サイズ．])
AC_DEFINE(THUMBNAIL_HEIGHT_LIMIT,   96,             [サムネイルの最大横サイズ．])

###############################################################################
# デバッグ
AC_ARG_ENABLE(debug,
        [  --enable-debug          trun on debugging [default no]],
        [DEBUG=on],[DEBUG=off])
AC_MSG_CHECKING(for whether to enable debuging)
AC_MSG_RESULT($DEBUG)
AC_SUBST(DEBUG)

###############################################################################
# 実装クラス
AC_ARG_WITH(writer,
        [  --with-writer=TYPE      write method (mmap or basic)],
        [WRITER_TYPE=${withval}], [WRITER_TYPE=basic])
AC_MSG_CHECKING([for write method])
if test "$WRITER_TYPE" = mmap; then
    WRITER_CLASS=MmapFileWriter
    AC_DEFINE(WRITER_TYPE_MMAP, , [ファイルの書き出しに write を使用．])
else
    WRITER_CLASS=BasicFileWriter
    WRITER_TYPE="basic"
    AC_DEFINE(WRITER_TYPE_BASIC, , [ファイルの書き出しに mmap を使用．])
fi
AC_MSG_RESULT($WRITER_TYPE)
AC_SUBST(WRITER_CLASS)
AC_SUBST(WRITER_TYPE)

###############################################################################
# 出力
AC_CONFIG_FILES([
    GNUmakefile bin/GNUmakefile src/GNUmakefile src/GNUmakefile.win32 doc/GNUmakefile \
    src/RFC1867Parser.cpp src/CharCodeConverter.cpp \
    include/mod_uploader.h include/RFC1867ParserImpl.h src/RFC1867ParserImpl.cpp \
    tmpl/view.htm tmpl/download.htm tmpl/thumbnail.htm tmpl/progress.htm tmpl/error.htm \
    bin/ext/extconf.rb bin/tmpl/view.htm bin/tmpl/error.htm \
    conf/httpd.conf \
    doc/doxygen.conf \
])
AC_OUTPUT

# Local Variables:
# mode: autoconf
# buffer-file-coding-system: euc-japan-unix
# End:
