summaryrefslogtreecommitdiff
path: root/1.1.x/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to '1.1.x/configure.ac')
-rw-r--r--1.1.x/configure.ac440
1 files changed, 440 insertions, 0 deletions
diff --git a/1.1.x/configure.ac b/1.1.x/configure.ac
new file mode 100644
index 00000000..b776a258
--- /dev/null
+++ b/1.1.x/configure.ac
@@ -0,0 +1,440 @@
+dnl Licensed under the Apache License, Version 2.0 (the "License"); you may not
+dnl use this file except in compliance with the License. dnl You may obtain a
+dnl copy of the License at
+dnl
+dnl http://www.apache.org/licenses/LICENSE-2.0
+dnl
+dnl Unless required by applicable law or agreed to in writing, software
+dnl distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+dnl WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+dnl License for the specific language governing permissions and limitations
+dnl under the License.
+
+AC_INIT([LOCAL_PACKAGE_NAME], [LOCAL_VERSION], [], [LOCAL_PACKAGE_TARNAME])
+
+AC_PREREQ([2.59])
+
+AC_CONFIG_SRCDIR([CHANGES])
+AC_CONFIG_AUX_DIR([build-aux])
+AC_CONFIG_MACRO_DIR([m4])
+
+AM_CONFIG_HEADER([config.h])
+
+AM_INIT_AUTOMAKE([1.6.3 foreign])
+
+AC_GNU_SOURCE
+AC_ENABLE_SHARED
+AC_DISABLE_STATIC
+
+AC_PROG_CC
+AC_PROG_LIBTOOL
+AC_PROG_LN_S
+
+AC_MSG_CHECKING([for pthread_create in -lpthread])
+
+original_LIBS="$LIBS"
+LIBS="-lpthread $original_LIBS"
+
+AC_TRY_LINK([#include<pthread.h>],
+ [pthread_create((void *)0, (void *)0, (void *)0, (void *)0)],
+ [pthread=yes], [pthread=no])
+
+if test x${pthread} = xyes; then
+ AC_MSG_RESULT([yes])
+else
+ LIBS="$original_LIBS"
+ AC_MSG_RESULT([no])
+fi
+
+AC_ARG_WITH([erlang], [AC_HELP_STRING([--with-erlang=PATH],
+ [set PATH to the Erlang include directory])], [
+ ERLANG_FLAGS="-I$withval"
+], [
+ ERLANG_FLAGS="-I${libdir}/erlang/usr/include"
+ ERLANG_FLAGS="$ERLANG_FLAGS -I/usr/lib/erlang/usr/include"
+ ERLANG_FLAGS="$ERLANG_FLAGS -I/usr/local/lib/erlang/usr/include"
+ ERLANG_FLAGS="$ERLANG_FLAGS -I/opt/local/lib/erlang/usr/include"
+])
+
+AC_ARG_WITH([js-include], [AC_HELP_STRING([--with-js-include=PATH],
+ [set PATH to the SpiderMonkey include directory])], [
+ JS_INCLUDE="$withval"
+ JS_FLAGS="-I$JS_INCLUDE"
+], [
+ JS_FLAGS="-I/usr/include"
+ JS_FLAGS="$JS_FLAGS -I/usr/include/js"
+ JS_FLAGS="$JS_FLAGS -I/usr/include/mozjs"
+ JS_FLAGS="$JS_FLAGS -I/usr/local/include"
+ JS_FLAGS="$JS_FLAGS -I/opt/local/include"
+ JS_FLAGS="$JS_FLAGS -I/usr/local/include/js"
+ JS_FLAGS="$JS_FLAGS -I/opt/local/include/js"
+])
+
+AC_ARG_WITH([js-lib], [AC_HELP_STRING([--with-js-lib=PATH],
+ [set PATH to the SpiderMonkey library directory])],
+ [
+ JS_LIB_DIR=$withval
+ JS_LIB_FLAGS="-L$withval"
+], [
+ JS_LIB_DIR=
+])
+AC_SUBST(JS_LIB_DIR)
+
+AC_ARG_VAR([ERLC_FLAGS], [general flags to prepend to ERLC_FLAGS])
+AC_ARG_VAR([FLAGS], [general flags to prepend to LDFLAGS and CPPFLAGS])
+
+LIB_FLAGS="$JS_LIB_FLAGS -L/usr/local/lib -L/opt/local/lib"
+LIBS="$LIB_FLAGS $LIBS"
+
+case "$(uname -s)" in
+ CYGWIN*)
+ FLAGS="$LIB_FLAGS $ERLANG_FLAGS $JS_FLAGS -DXP_WIN $FLAGS"
+ CPPFLAGS="$FLAGS $CPPFLAGS"
+ LDFLAGS="$FLAGS $LDFLAGS"
+ IS_WINDOWS="TRUE"
+ # The erlang cc.sh/ld.sh scripts will convert a -O option
+ # into the same optimization flags erlang itself uses.
+ CFLAGS="-O2"
+ LTCFLAGS="$CFLAGS"
+ ;;
+ *)
+ # XP_UNIX required for jsapi.h and has been tested to work on Linux and Darwin.
+ FLAGS="$LIB_FLAGS $ERLANG_FLAGS $JS_FLAGS -DXP_UNIX $FLAGS"
+ CPPFLAGS="$FLAGS $CPPFLAGS"
+ # manually linking libm is requred for FreeBSD 7.0
+ LDFLAGS="$FLAGS -lm $LDFLAGS"
+ ;;
+esac
+
+AM_CONDITIONAL([WINDOWS], [test x$IS_WINDOWS = xTRUE])
+
+AC_CHECK_LIB([mozjs], [JS_NewContext], [JS_LIB_BASE=mozjs], [
+ AC_CHECK_LIB([js], [JS_NewContext], [JS_LIB_BASE=js], [
+ AC_CHECK_LIB([js3250], [JS_NewContext], [JS_LIB_BASE=js3250], [
+ AC_CHECK_LIB([js32], [JS_NewContext], [JS_LIB_BASE=js32], [
+ AC_MSG_ERROR([Could not find the js library.
+
+Is the Mozilla SpiderMonkey library installed?])])])])])
+
+AC_SUBST(JS_LIB_BASE)
+
+if test x${IS_WINDOWS} = xTRUE; then
+ if test -f "$JS_LIB_DIR/$JS_LIB_BASE.dll"; then
+ # seamonkey 1.7- build layout on Windows
+ JS_LIB_BINARY="$JS_LIB_DIR/$JS_LIB_BASE.dll"
+ else
+ # seamonkey 1.8+ build layout on Windows
+ if test -f "$JS_LIB_DIR/../bin/$JS_LIB_BASE.dll"; then
+ JS_LIB_BINARY="$JS_LIB_DIR/../bin/$JS_LIB_BASE.dll"
+ else
+ AC_MSG_ERROR([Could not find $JS_LIB_BASE.dll.])
+ fi
+ fi
+ AC_SUBST(JS_LIB_BINARY)
+
+ # On windows we need to know the path to the openssl binaries.
+ AC_ARG_WITH([openssl-bin-dir], [AC_HELP_STRING([--with-openssl-bin-dir=PATH],
+ [path to the open ssl binaries for distribution on Windows])], [
+ openssl_bin_dir=`cygpath -m "$withval"`
+ AC_SUBST(openssl_bin_dir)
+ ], [])
+
+ # Windows uses Inno setup - look for its compiler.
+ AC_PATH_PROG([INNO_COMPILER_EXECUTABLE], [iscc])
+ if test x${INNO_COMPILER_EXECUTABLE} = x; then
+ AC_MSG_WARN([You will be unable to build the Windows installer.])
+ fi
+
+ # We need the msvc redistributables for this platform too
+ # (in theory we could just install the assembly locally - but
+ # there are at least 4 directories with binaries, meaning 4 copies;
+ # so using the redist .exe means it ends up installed globally...)
+ AC_ARG_WITH([msvc-redist-dir], [AC_HELP_STRING([--with-msvc-redist-dir=PATH],
+ [path to the msvc redistributables for the Windows platform])], [
+ msvc_redist_dir=`cygpath -m "$withval"`
+ msvc_redist_name="vcredist_x86.exe"
+ AC_SUBST(msvc_redist_dir)
+ AC_SUBST(msvc_redist_name)
+ ], [])
+ if test ! -f ${msvc_redist_dir}/${msvc_redist_name}; then
+ AC_MSG_WARN([The MSVC redistributable seems to be missing; expect the installer to fail.])
+ fi
+fi
+
+JSLIB=-l$JS_LIB_BASE
+
+AC_CHECK_HEADER([jsapi.h], [], [
+ AC_CHECK_HEADER([js/jsapi.h],
+ [
+ CPPFLAGS="$CPPFLAGS -I$JS_INCLUDE/js"
+ ],
+ [
+ AC_MSG_ERROR([Could not find the jsapi header.
+
+Are the Mozilla SpiderMonkey headers installed?])
+ ])])
+
+AC_SUBST(JSLIB)
+
+AC_LANG_PUSH(C)
+OLD_CFLAGS="$CFLAGS"
+CFLAGS="-Werror-implicit-function-declaration"
+AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <jsapi.h>]],
+ [[JS_SetOperationCallback(0, 0);]]
+ )],
+ AC_DEFINE([USE_JS_SETOPCB], [], [Use new JS_SetOperationCallback])
+)
+CFLAGS="$OLD_CFLAGS"
+AC_LANG_POP(C)
+
+AC_ARG_WITH([win32-icu-binaries], [AC_HELP_STRING([--with-win32-icu-binaries=PATH],
+ [set PATH to the Win32 native ICU binaries directory])], [
+ ICU_CONFIG="" # supposed to be a command to query options...
+ ICU_LOCAL_CFLAGS="-I$withval/include"
+ ICU_LOCAL_LDFLAGS="-L$withval/lib"
+ ICU_LOCAL_BIN=$withval/bin
+], [
+ AC_CHECK_ICU([3.4.1])
+ ICU_LOCAL_CFLAGS=`$ICU_CONFIG --cppflags-searchpath`
+ ICU_LOCAL_LDFLAGS=`$ICU_CONFIG --ldflags-searchpath`
+ ICU_LOCAL_BIN=
+])
+
+AC_SUBST(ICU_CONFIG)
+AC_SUBST(ICU_LOCAL_CFLAGS)
+AC_SUBST(ICU_LOCAL_LDFLAGS)
+AC_SUBST(ICU_LOCAL_BIN)
+
+AC_ARG_WITH([win32-curl], [AC_HELP_STRING([--with-win32-curl=PATH],
+ [set PATH to the Win32 native curl directory])], [
+ # default build on windows is a static lib, and that's what we want too
+ CURL_CFLAGS="-I$withval/include -DCURL_STATICLIB"
+ CURL_LIBS="$withval/lib/libcurl"
+ CURL_LDFLAGS="-l$CURL_LIBS -lWs2_32 -lkernel32 -luser32 -ladvapi32 -lWldap32"
+], [
+ AC_CHECK_CURL([7.18.0])
+ CURL_LDFLAGS=-lcurl
+])
+
+AC_SUBST(CURL_CFLAGS)
+AC_SUBST(CURL_LIBS)
+AC_SUBST(CURL_LDFLAGS)
+
+case "$(uname -s)" in
+ Linux)
+ LIBS="$LIBS -lcrypt"
+ CPPFLAGS="-D_XOPEN_SOURCE $CPPFLAGS"
+ ;;
+ FreeBSD)
+ LIBS="$LIBS -lcrypt"
+ ;;
+ OpenBSD)
+ LIBS="$LIBS -lcrypto"
+ ;;
+esac
+
+AC_PATH_PROG([ERL], [erl])
+
+if test x${ERL} = x; then
+ AC_MSG_ERROR([Could not find the `erl' executable. Is Erlang installed?])
+fi
+
+erlang_version_error="The installed Erlang version is less than 5.6.5 (R12B05)."
+
+version="`${ERL} -version 2>&1 | ${SED} "s/[[^0-9]]/ /g"`"
+
+if test `echo $version | ${AWK} "{print \\$1}"` -lt 5; then
+ AC_MSG_ERROR([$erlang_version_error])
+fi
+
+if test `echo $version | ${AWK} "{print \\$2}"` -lt 6; then
+ AC_MSG_ERROR([$erlang_version_error])
+fi
+
+if test `echo $version | ${AWK} "{print \\$2}"` -eq 6; then
+ if test `echo $version | ${AWK} "{print \\$3}"` -lt 5; then
+ AC_MSG_ERROR([$erlang_version_error])
+ fi
+fi
+
+has_crypto=`${ERL} -eval "case application:load(crypto) of ok -> ok; _ -> exit(no_crypto) end." -noshell -s init stop`
+
+if test -n "$has_crypto"; then
+ AC_MSG_ERROR([Could not find the Erlang crypto library. Has Erlang been compiled with OpenSSL support?])
+fi
+
+AC_PATH_PROG([ERLC], [erlc])
+
+if test x${ERLC} = x; then
+ AC_MSG_ERROR([Could not find the `erlc' executable. Is Erlang installed?])
+fi
+
+AC_CHECK_HEADER([erl_driver.h], [], [
+ AC_MSG_ERROR([Could not find the `erl_driver.h' header.
+
+Are the Erlang headers installed? Use the `--with-erlang' option to specify the
+path to the Erlang include directory.])])
+
+AC_PATH_PROG([HELP2MAN_EXECUTABLE], [help2man])
+if test x${HELP2MAN_EXECUTABLE} = x; then
+ AC_MSG_WARN([You will be unable to regenerate any man pages.])
+fi
+
+use_init=yes
+use_launchd=yes
+
+AC_ARG_ENABLE([init], [AC_HELP_STRING([--disable-init],
+ [don't install init script where applicable])], [
+ use_init=$enableval
+], [])
+
+AC_ARG_ENABLE([launchd], [AC_HELP_STRING([--disable-launchd],
+ [don't install launchd configuration where applicable])], [
+ use_launchd=$enableval
+], [])
+
+init_enabled=false
+launchd_enabled=false
+
+if test "$use_init" = "yes"; then
+ AC_MSG_CHECKING(location of init directory)
+ if test -d /etc/rc.d; then
+ init_enabled=true
+ AC_SUBST([initdir], ['${sysconfdir}/rc.d'])
+ AC_MSG_RESULT(${initdir})
+ else
+ if test -d /etc/init.d; then
+ init_enabled=true
+ AC_SUBST([initdir], ['${sysconfdir}/init.d'])
+ AC_MSG_RESULT(${initdir})
+ else
+ AC_MSG_RESULT(not found)
+ fi
+ fi
+fi
+
+if test "$use_launchd" = "yes"; then
+ AC_MSG_CHECKING(location of launchd directory)
+ if test -d /Library/LaunchDaemons; then
+ init_enabled=false
+ launchd_enabled=true
+ AC_SUBST([launchddir], ['${prefix}/Library/LaunchDaemons'])
+ AC_MSG_RESULT(${launchddir})
+ else
+ AC_MSG_RESULT(not found)
+ fi
+fi
+
+AC_ARG_VAR([ERL], [path to the `erl' executable])
+AC_ARG_VAR([ERLC], [path to the `erlc' executable])
+AC_ARG_VAR([HELP2MAN_EXECUTABLE], [path to the `help2man' program])
+
+if test -n "$HELP2MAN_EXECUTABLE"; then
+ help2man_enabled=true
+else
+ if test -f "$srcdir/bin/couchdb.1" -a -f "$srcdir/bin/couchjs.1"; then
+ help2man_enabled=true
+ else
+ help2man_enabled=false
+ fi
+fi
+
+AM_CONDITIONAL([INIT], [test x${init_enabled} = xtrue])
+AM_CONDITIONAL([LAUNCHD], [test x${launchd_enabled} = xtrue])
+AM_CONDITIONAL([HELP2MAN], [test x${help2man_enabled} = xtrue])
+
+AC_SUBST([package_author_name], ["LOCAL_PACKAGE_AUTHOR_NAME"])
+AC_SUBST([package_author_address], ["LOCAL_PACKAGE_AUTHOR_ADDRESS"])
+AC_SUBST([package_identifier], ["LOCAL_PACKAGE_IDENTIFIER"])
+AC_SUBST([package_tarname], ["LOCAL_PACKAGE_TARNAME"])
+AC_SUBST([package_name], ["LOCAL_PACKAGE_NAME"])
+
+AC_SUBST([version], ["LOCAL_VERSION"])
+AC_SUBST([version_major], ["LOCAL_VERSION_MAJOR"])
+AC_SUBST([version_minor], ["LOCAL_VERSION_MINOR"])
+AC_SUBST([version_revision], ["LOCAL_VERSION_REVISION"])
+AC_SUBST([version_stage], ["LOCAL_VERSION_STAGE"])
+AC_SUBST([version_release], ["LOCAL_VERSION_RELEASE"])
+
+AC_SUBST([bug_uri], ["LOCAL_BUG_URI"])
+
+AC_SUBST([localconfdir], [${sysconfdir}/${package_identifier}])
+AC_SUBST([localdatadir], [${datadir}/${package_identifier}])
+AC_SUBST([localdocdir], [${datadir}/doc/${package_identifier}])
+AC_SUBST([locallibdir], [${libdir}/${package_identifier}])
+AC_SUBST([localstatelibdir], [${localstatedir}/lib/${package_identifier}])
+AC_SUBST([localstatelogdir], [${localstatedir}/log/${package_identifier}])
+AC_SUBST([localstaterundir], [${localstatedir}/run/${package_identifier}])
+
+# On Windows we install directly into our erlang distribution.
+if test x${IS_WINDOWS} = xTRUE; then
+ AC_SUBST([locallibbindir], [${prefix}/bin])
+ AC_SUBST([localerlanglibdir], [${libdir}])
+else
+ AC_SUBST([locallibbindir], [${locallibdir}/bin])
+ AC_SUBST([localerlanglibdir], [${locallibdir}/erlang/lib])
+fi
+
+# fix for older autotools that don't define "abs_top_YYY" by default
+AC_SUBST(abs_top_srcdir)
+AC_SUBST(abs_top_builddir)
+
+AC_REVISION([LOCAL_VERSION])
+
+AC_CONFIG_FILES([Makefile])
+AC_CONFIG_FILES([bin/couchjs.tpl])
+AC_CONFIG_FILES([bin/couchdb.tpl])
+AC_CONFIG_FILES([bin/couchdb.bat.tpl])
+AC_CONFIG_FILES([bin/Makefile])
+AC_CONFIG_FILES([etc/couchdb/Makefile])
+AC_CONFIG_FILES([etc/couchdb/default.ini.tpl])
+AC_CONFIG_FILES([etc/default/Makefile])
+AC_CONFIG_FILES([etc/init/couchdb.tpl])
+AC_CONFIG_FILES([etc/init/Makefile])
+AC_CONFIG_FILES([etc/launchd/org.apache.couchdb.plist.tpl])
+AC_CONFIG_FILES([etc/launchd/Makefile])
+AC_CONFIG_FILES([etc/logrotate.d/couchdb.tpl])
+AC_CONFIG_FILES([etc/logrotate.d/Makefile])
+AC_CONFIG_FILES([etc/windows/Makefile])
+AC_CONFIG_FILES([etc/Makefile])
+AC_CONFIG_FILES([share/Makefile])
+AC_CONFIG_FILES([src/Makefile])
+AC_CONFIG_FILES([src/couchdb/couch.app.tpl])
+AC_CONFIG_FILES([src/couchdb/Makefile])
+AC_CONFIG_FILES([src/couchdb/priv/Makefile])
+AC_CONFIG_FILES([src/erlang-oauth/Makefile])
+AC_CONFIG_FILES([src/etap/Makefile])
+AC_CONFIG_FILES([src/ibrowse/Makefile])
+AC_CONFIG_FILES([src/mochiweb/Makefile])
+AC_CONFIG_FILES([test/Makefile])
+AC_CONFIG_FILES([test/bench/Makefile])
+AC_CONFIG_FILES([test/etap/Makefile])
+AC_CONFIG_FILES([test/etap/test_util.erl])
+AC_CONFIG_FILES([test/javascript/Makefile])
+AC_CONFIG_FILES([test/view_server/Makefile])
+AC_CONFIG_FILES([utils/Makefile])
+AC_CONFIG_FILES([var/Makefile])
+
+AC_OUTPUT
+
+# *sob* - on Windows libtool fails as 'libname_spec' isn't correct (it
+# expects GNU style lib names). I can't work out how to configure this
+# option sanely, so we pass the script through sed to modify it.
+# Also, the erlang cc.sh script doesn't cope well with the '-link' command
+# line option libtool provides.
+# PLEASE, someone help put this out of its misery!!
+# This hackery is being tracked via COUCHDB-440.
+if test x${IS_WINDOWS} = xTRUE; then
+ sed -e 's,libname_spec="lib\\$name",libname_spec="\\\$name",' \
+ -e 's,-link,,' \
+ < libtool > libtool.tmp
+ mv libtool.tmp libtool
+ # probably would chmod +x if we weren't on windows...
+fi
+
+echo
+echo "You have configured Apache CouchDB, time to relax."
+echo
+echo "Run \`make && sudo make install' to install."