# Copyright (C) 2008 Equinox Software, Inc.
# Kevin Beswick <kevinbeswick00@gmail.com>
+# Copyright (C) 2009-2010 Dan Scott <dscott@laurentian.ca>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
export PATH=${PATH}:/usr/sbin
AC_PREREQ(2.59)
-AC_INIT([OpenSRF],[trunk],[open-ils-dev@list.georgialibraries.org])
-AM_INIT_AUTOMAKE([OpenSRF], [trunk])
+
+# Get our version number from one file
+m4_include([version.m4])
+
+# Version number gets turned into @PACKAGE_VERSION@
+AC_INIT([OpenSRF],m4_defn([VERSION_NUMBER]),[open-ils-dev@list.georgialibraries.org])
+AM_INIT_AUTOMAKE([OpenSRF], m4_defn([VERSION_NUMBER]))
+
AC_REVISION($Revision: 0.1 $)
AC_CONFIG_SRCDIR([configure.ac])
-AC_PREFIX_DEFAULT([/opensrf/])
+# Enable $prefix to resolve to a reasonable value in substitutions in
+# scripts if no explict value was passed in to configure
+if test "$prefix" == "NONE"; then
+ prefix=$ac_default_prefix
+fi
+
+# Perl and Python scripts don't want ${prefix} if no value was specified
+eval "eval CONF_DIR=$sysconfdir"
+eval "eval PID_DIR=$localstatedir"
+AC_SUBST([CONF_DIR])
+AC_SUBST([PID_DIR])
AC_SUBST(prefix)
+AC_SUBST(bindir)
AC_DEFUN([AC_PYTHON_MOD],[
PYTHON="python"
fi
AC_MSG_CHECKING($PYTHON_NAME module: $1)
- $PYTHON -c "import $1" 2>/tmp/null
+ $PYTHON -c "import $1" 2>/dev/null
if test $? -eq 0;
then
AC_MSG_RESULT(yes)
fi
])
-
-
#-------------------------------
# Installation options
#-------------------------------
AM_CONDITIONAL([BUILDJAVA], [test x$OSRF_INSTALL_JAVA = xtrue])
AC_SUBST([OSRF_INSTALL_JAVA])
+# install the javascript files?
+AC_ARG_ENABLE([javascript],
+[ --disable-javascript disable installing JavaScript libraries],
+[case "${enableval}" in
+ yes) OSRF_INSTALL_JAVASCRIPT=true ;;
+ no) OSRF_INSTALL_JAVASCRIPT=false ;;
+ *) AC_MSG_ERROR([please choose another value for --disable-javascript (supported values are yes or no)]) ;;
+esac],
+[OSRF_INSTALL_JAVASCRIPT=true])
+
+AM_CONDITIONAL([INSTALLJAVASCRIPT], [test x$OSRF_INSTALL_JAVASCRIPT = xtrue])
+AC_SUBST([OSRF_INSTALL_JAVASCRIPT])
+
+# install the OpenSRF core files?
+AC_ARG_ENABLE([core],
+[ --disable-core disable installing core files],
+[case "${enableval}" in
+ yes) OSRF_INSTALL_CORE=true ;;
+ no) OSRF_INSTALL_CORE=false ;;
+ *) AC_MSG_ERROR([please choose another value for --disable-core (supported values are yes or no)]) ;;
+esac],
+[OSRF_INSTALL_CORE=true])
+
+AM_CONDITIONAL([BUILDCORE], [test x$OSRF_INSTALL_CORE = xtrue])
+AC_SUBST([OSRF_INSTALL_CORE])
+
+
# build and install the python modules
AC_ARG_ENABLE([python],
-[ --disable-python disable building and installing python modules],
+[ --enable-python enable building and installing python modules],
[case "${enableval}" in
yes) OSRF_INSTALL_PYTHON=true ;;
no) OSRF_INSTALL_PYTHON=false ;;
*) AC_MSG_ERROR([please choose another value for --enable-python (supported values are yes or no)]) ;;
esac],
-[OSRF_INSTALL_PYTHON=true])
+[OSRF_INSTALL_PYTHON=false])
AM_CONDITIONAL([BUILDPYTHON], [test x$OSRF_INSTALL_PYTHON = xtrue])
AC_SUBST([OSRF_INSTALL_PYTHON])
-# create the legacy JSON headers and .so file for backwards compatibility?
-AC_ARG_ENABLE([legacyjson],
-[ --disable-legacyjson disable the legacy json headers and .so file for backwards compatibility],
-[case "${enableval}" in
- yes) OSRF_LEGACY_JSON=true ;;
- no) OSRF_LEGACY_JSON=false ;;
- *) AC_MSG_ERROR([please choose another value for --disable-legacyjson (supported values are yes or no)]) ;;
-esac],
-[OSRF_LEGACY_JSON=true])
-
-AM_CONDITIONAL([BUILDJSON], [test x$OSRF_LEGACY_JSON = xtrue])
-AC_SUBST([OSRF_LEGACY_JSON])
-
# enable debug?
AC_ARG_ENABLE(debug,
esac],[debug=false])
AM_CONDITIONAL(DEBUG, test x$debug = xtrue)
-
# path to the directory containing the java dependency jar files (included if java installs)
if test $OSRF_INSTALL_JAVA; then
- AC_SUBST([OSRF_JAVA_DEPSDIR], [/opt/java])
+ AC_SUBST([OSRF_JAVA_DEPSDIR], [deps])
+ AC_CONFIG_FILES([src/java/Makefile])
fi
-
-
#--------------------------------
# Checks for programs.
#--------------------------------
# Set install path variables
#------------------------------
AC_ARG_WITH([tmp],
-[ --with-tmp=path location for the tmp dir for openSRF (/tmp/osrftmp by default)],
+[ --with-tmp=path location for the temporary directory for OpenSRF (default is /tmp)],
[TMP=${withval}],
-[TMP=/tmp/osrftmp])
+[TMP=/tmp])
AC_SUBST([TMP])
AC_ARG_WITH([apxs],
-[ --with-apxs=path location of apxs (default is /usr/bin/apxs2)],
+[ --with-apxs=path location of the apxs (Apache extension) tool (default is /usr/bin/apxs2)],
[APXS2=${withval}],
[APXS2=/usr/bin/apxs2])
+if ! test -x "$APXS2"; then
+ for i in /usr/bin /usr/sbin /usr/local/apache/bin /usr/local/apache2/bin ; do
+ for j in apxs apxs2 ; do
+ if test -x "$i/$j"; then
+ APXS2="$i/$j"
+ break
+ fi
+ done
+ done
+fi
AC_SUBST([APXS2])
AC_ARG_WITH([apache],
-[ --with-apache=path location of the apache headers (default is /usr/include/apache2)],
+[ --with-apache=path location of the Apache headers (default is /usr/include/apache2)],
[APACHE2_HEADERS=${withval}],
[APACHE2_HEADERS=/usr/include/apache2])
+if ! test -d "$APACHE2_HEADERS"; then
+ for i in /usr/include/httpd ; do
+ if test -d "$i"; then
+ APACHE2_HEADERS="$i"
+ break
+ fi
+ done
+fi
AC_SUBST([APACHE2_HEADERS])
AC_ARG_WITH([apr],
-[ --with-apr=path location of the apr headers (default is /usr/include/apr-1.0/)],
+[ --with-apr=path location of the Apache Portable Runtime headers (default is /usr/include/apr-1.0/)],
[APR_HEADERS=${withval}],
[APR_HEADERS=/usr/include/apr-1.0])
+if ! test -d "$APR_HEADERS"; then
+ for i in /usr/include/apr-1 ; do
+ if test -d "$i"; then
+ APR_HEADERS="$i"
+ break
+ fi
+ done
+fi
AC_SUBST([APR_HEADERS])
+AC_ARG_WITH([perlbase],
+[ --with-perlbase=path base location to install Perl modules (default based on Config.pm)],
+[PERL_BASE=${withval}],
+[PERL_BASE=x])
+AC_SUBST([PERL_BASE])
+
+AC_ARG_WITH([websockets-port],
+[ --with-websockets-port=path WebSockets port to use (default is 7682)],
+[WS_PORT=${withval}],
+[WS_PORT=7682])
+AC_SUBST([WS_PORT])
+
+# The following Apache version detection code is adapted from
+# http://www.gnu.org/software/autoconf-archive/ax_prog_apache.html
+# licensed under version 2 of the GNU General Public License, or
+# (at your discretion) any later version.
+#
+# Copyright (c) 2008 Loic Dachary <loic@senga.org>
+#
+# Collect apache version number. If for nothing else, this
+# guarantees that httpd is a working apache executable.
+#
+APACHE=`$APXS2 -q progname`
+AC_PATH_PROG(APACHE_PATH, [$APACHE], [])
+if test -z "$APACHE_PATH" ; then
+ for i in /usr/bin /usr/sbin /usr/local/apache/bin /usr/local/apache2/bin ; do
+ if test -x "$i/$APACHE"; then
+ APACHE_PATH="$i/$APACHE"
+ break
+ fi
+ done
+fi
+changequote(<<, >>)dnl
+APACHE_READABLE_VERSION=`$APACHE_PATH -v | grep 'Server version' | sed -e 's;.*Apache/\([0-9\.][0-9\.]*\).*;\1;'`
+changequote([, ])dnl
+APACHE_VERSION=`echo $APACHE_READABLE_VERSION | sed -e 's/\.//g'`
+if test -z "$APACHE_VERSION" ; then
+ AC_MSG_ERROR("could not determine apache version number");
+fi
+APACHE_MAJOR=`expr $APACHE_VERSION : '\(..\)'`
+APACHE_MINOR=`expr $APACHE_VERSION : '..\(.*\)'`
+AM_CONDITIONAL(APACHE_MIN_24, test "$APACHE_MAJOR" -ge "24")
+AC_SUBST([APACHE_MIN_24])
+
AC_ARG_WITH([libxml],
-[ --with-libxml=path location of the libxml headers (default is /usr/include/libxml2/))],
+[ --with-libxml=path location of the libxml2 headers (default is /usr/include/libxml2/))],
[LIBXML2_HEADERS=${withval}],
[LIBXML2_HEADERS=/usr/include/libxml2/])
AC_SUBST([LIBXML2_HEADERS])
IFS=${IFSBAK}
-#--------------------------------
-# Check for dependencies.
-#--------------------------------
-
-#APACHE PREFORK DEV TEST
-AC_MSG_CHECKING([APXS])
-if test -f "${APXS2}"; then
-AC_MSG_RESULT([yes])
-else
-AC_MSG_ERROR([*** apxs not found, aborting])
-fi
+AC_CONFIG_FILES([Makefile
+ src/Makefile])
#PYTHON TESTS
if test x$OSRF_INSTALL_PYTHON = xtrue; then
- AC_CHECK_PROG([HAVE_PYTHON],python,yes,no)
- if test $HAVE_PYTHON = "no"; then
- AC_MSG_ERROR([*** python not found, aborting])
- fi
- AC_PYTHON_MOD([setuptools])
+ AC_CHECK_PROG([HAVE_PYTHON],python,yes,no)
+ if test $HAVE_PYTHON = "no"; then
+ AC_MSG_ERROR([*** python not found, aborting])
+ fi
+ AC_PYTHON_MOD([setuptools])
+ AC_CONFIG_FILES([
+ examples/math_client.py
+ examples/simple_text.py
+ src/python/Makefile
+ ])
fi
+# Check Unit test framework
+PKG_CHECK_MODULES([CHECK], [check >= 0.9.0], [enable_tests=yes],
+ [enable_tests=no])
+AM_CONDITIONAL(CHECK_TESTS, test x$enable_tests = xyes)
+if test "x$enable_tests" = "xno"; then
+ AC_MSG_WARN(Check unit testing framework not found.)
+fi
-#-----------------------------
-# Checks for libraries.
-#-----------------------------
-
-AC_CHECK_LIB([dl], [dlerror], [],AC_MSG_ERROR(***OpenSRF requires libdl))
-AC_CHECK_LIB([memcache], [mc_req_free], [], AC_MSG_ERROR(***OpenSRF requires memcache development headers))
-AC_CHECK_LIB([ncurses], [initscr], [], AC_MSG_ERROR(***OpenSRF requires ncurses development headers))
-AC_CHECK_LIB([readline], [readline], [], AC_MSG_ERROR(***OpenSRF requires readline development headers))
-AC_CHECK_LIB([xml2], [xmlAddID], [], AC_MSG_ERROR(***OpenSRF requires xml2 development headers))
-
-
-
-#-----------------------------
-# Checks for header files.
-#-----------------------------
-
-AC_HEADER_STDC
-AC_HEADER_SYS_WAIT
-AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h malloc.h netdb.h netinet/in.h stdlib.h string.h strings.h sys/socket.h sys/time.h sys/timeb.h syslog.h unistd.h])
-
-#------------------------------------------------------------------
-# Checks for typedefs, structures, and compiler characteristics.
-#------------------------------------------------------------------
-
-AC_C_CONST
-AC_C_INLINE
-AC_TYPE_PID_T
-AC_TYPE_SIZE_T
-AC_HEADER_TIME
-AC_STRUCT_TM
-
-#----------------------------------
-# Checks for library functions.
-#----------------------------------
-
-AC_FUNC_FORK
-AC_FUNC_MALLOC
-AC_FUNC_SELECT_ARGTYPES
-AC_TYPE_SIGNAL
-AC_FUNC_STRFTIME
-AC_FUNC_STRTOD
-AC_FUNC_VPRINTF
-AC_CHECK_FUNCS([bzero dup2 gethostbyname gethostname gettimeofday memset select socket strcasecmp strchr strdup strerror strncasecmp strndup strrchr strtol])
-
-#------------------------------------
-# Configuration and output
-#------------------------------------
-
-AC_CONFIG_FILES([Makefile
- examples/math_xul_client/Makefile
- src/Makefile
- src/c-apps/Makefile
- src/gateway/Makefile
- src/java/Makefile
- src/jserver/Makefile
- src/libopensrf/Makefile
- src/ports/strn_compat/Makefile
- src/python/Makefile
- src/router/Makefile
- src/srfsh/Makefile
- bin/osrf_config], [if test -e "./bin/osrf_config"; then chmod 755 bin/osrf_config; fi])
+if test "x$OSRF_INSTALL_CORE" = "xtrue"; then
+ #--------------------------------
+ # Check for dependencies.
+ #--------------------------------
+ #APACHE PREFORK DEV TEST
+ AC_MSG_CHECKING([APXS])
+ if test -f "${APXS2}"; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_ERROR([*** apxs not found, aborting])
+ fi
+
+ #-----------------------------
+ # Checks for libraries.
+ #-----------------------------
+
+ AC_SEARCH_LIBS([dlerror], [dl], [],AC_MSG_ERROR([***OpenSRF requires a library (typically libdl) that provides dlerror()]))
+ AC_CHECK_LIB([ncurses], [initscr], [], AC_MSG_ERROR(***OpenSRF requires ncurses development headers))
+ AC_CHECK_LIB([readline], [readline], [], AC_MSG_ERROR(***OpenSRF requires readline development headers))
+ AC_CHECK_LIB([xml2], [xmlAddID], [], AC_MSG_ERROR(***OpenSRF requires xml2 development headers))
+ # Check for libmemcached and set flags accordingly
+ PKG_CHECK_MODULES(memcached, libmemcached >= 0.8.0)
+ AC_SUBST(memcached_CFLAGS)
+ AC_SUBST(memcached_LIBS)
+
+ #-----------------------------
+ # Checks for header files.
+ #-----------------------------
+
+ AC_HEADER_STDC
+ AC_HEADER_SYS_WAIT
+ AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h malloc.h netdb.h netinet/in.h stdlib.h string.h strings.h sys/socket.h sys/time.h sys/timeb.h syslog.h unistd.h])
+
+ #------------------------------------------------------------------
+ # Checks for typedefs, structures, and compiler characteristics.
+ #------------------------------------------------------------------
+
+ AC_C_CONST
+ AC_C_INLINE
+ AC_TYPE_PID_T
+ AC_TYPE_SIZE_T
+ AC_HEADER_TIME
+ AC_STRUCT_TM
+ AM_PROG_CC_C_O
+
+ #----------------------------------
+ # Checks for library functions.
+ #----------------------------------
+
+ AC_FUNC_FORK
+ AC_FUNC_MALLOC
+ AC_FUNC_SELECT_ARGTYPES
+ AC_TYPE_SIGNAL
+ AC_FUNC_STRFTIME
+ AC_FUNC_STRTOD
+ AC_FUNC_VPRINTF
+ AC_CHECK_FUNCS([bzero dup2 gethostbyname gethostname gettimeofday malloc_stats memset select socket strcasecmp strchr strdup strerror strncasecmp strndup strrchr strtol])
+
+ #------------------------------------
+ # Configuration and output
+ #------------------------------------
+
+ AC_CONFIG_FILES([doc/dokuwiki-doc-stubber.pl
+ examples/math_xul_client/Makefile
+ examples/math_bench.pl
+ examples/multisession-test.pl
+ src/c-apps/Makefile
+ src/gateway/Makefile
+ src/javascript/opensrf_ws.js
+ src/javascript/opensrf_ws_shared.js
+ src/libopensrf/Makefile
+ src/perl/Makefile
+ src/ports/strn_compat/Makefile
+ src/python/opensrf.py
+ src/router/Makefile
+ src/srfsh/Makefile
+ src/websocket-stdio/Makefile
+ tests/Makefile
+ bin/opensrf-perl.pl
+ bin/osrf_config])
+fi
AC_OUTPUT
AC_MSG_RESULT([--------------------- Configuration options: -----------------------])
if test "$OSRF_INSTALL_JAVA" = "true" ; then
- AC_MSG_RESULT([OSRF install java?: yes])
- AC_MSG_RESULT([Java deps dir: $OSRF_JAVA_DEPSDIR])
+ AC_MSG_RESULT([OSRF install Java support? yes])
+ AC_MSG_RESULT([Java support files $OSRF_JAVA_DEPSDIR])
else
- AC_MSG_RESULT([OSRF install java?: no])
+ AC_MSG_RESULT([OSRF install Java support? no])
fi
if test "$OSRF_INSTALL_PYTHON" = "true" ; then
- AC_MSG_RESULT([OSRF install python?: yes])
+ AC_MSG_RESULT([OSRF install Python support? yes])
else
- AC_MSG_RESULT([OSRF install python?: no])
+ AC_MSG_RESULT([OSRF install Python support? no])
fi
-if test "$OSRF_LEGACY_JSON" = "true" ; then
- AC_MSG_RESULT([OSRF install legacy json?: yes])
-else
- AC_MSG_RESULT([OSRF install legacy json?: no])
-fi
-
- AC_MSG_RESULT(Installation directory prefix: ${prefix})
- AC_MSG_RESULT(Tmp dir location: ${TMP})
- AC_MSG_RESULT(APXS2 location: ${APXS2})
- AC_MSG_RESULT(Apache headers location: ${APACHE2_HEADERS})
- AC_MSG_RESULT(APR headers location: ${APR_HEADERS})
- AC_MSG_RESULT(libxml2 headers location: ${LIBXML2_HEADERS})
-
-
-
-
+ AC_MSG_RESULT(Installation directory prefix: ${prefix})
+ AC_MSG_RESULT(Temporary directory: ${TMP})
+ AC_MSG_RESULT(APXS2 location: ${APXS2})
+ AC_MSG_RESULT(Apache headers location: ${APACHE2_HEADERS})
+ AC_MSG_RESULT(APR headers location: ${APR_HEADERS})
+ AC_MSG_RESULT(Apache version: ${APACHE_READABLE_VERSION})
+ AC_MSG_RESULT(libxml2 headers location: ${LIBXML2_HEADERS})
AC_MSG_RESULT([----------------------------------------------------------------------])