1 # Copyright (C) 2008 Equinox Software, Inc.
2 # Kevin Beswick <kevinbeswick00@gmail.com>
3 # Copyright (C) 2010 Laurentian University
4 # Dan Scott <dscott@laurentian.ca>
6 # This program is free software; you can redistribute it and/or
7 # modify it under the terms of the GNU General Public License
8 # as published by the Free Software Foundation; either version 2
9 # of the License, or (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
17 #---------------------------
19 #---------------------------
21 export PATH=${PATH}:/usr/sbin
23 AC_INIT(Open-ILS, trunk, open-ils-dev@list.georgialibraries.org)
24 AC_CONFIG_SRCDIR([configure.ac])
25 AC_CONFIG_MACRO_DIR([m4])
27 AC_REVISION($Revision: 0.1 $)
28 AC_CONFIG_SUBDIRS([Open-ILS/xul/staff_client/external/libmar])
30 AC_SUBST([abs_top_builddir])
31 #-----------------------------------
32 # Checks for programs.
33 #-----------------------------------
44 #-----------------------------------
46 #-----------------------------------
48 # install openils-all?
49 #AC_ARG_ENABLE([openils-all],
50 #[ --enable-openils-all enables the installation of the default openils system (base system,web,staffclient) ],
51 #[case "${enableval}" in
52 # yes) openils_all=true;
55 # openils_updates=true;
56 # openils_reporter=true;
57 # openils_client_xul=true;
58 # openils_server_xul=true ;;
59 # no) openils_all=false ;;
60 # *) AC_MSG_ERROR([please choose another value for --enable-openils-all (supported values are yes or no])
64 # install evergreen-core?
66 [ --disable-core disables installation of the Evergreen core components ],
67 [case "${enableval}" in
68 yes) openils_core=true ;;
69 no) openils_core=false ;;
70 *) AC_MSG_ERROR([please choose another value for --disable-core (supported values are yes or no])
74 AM_CONDITIONAL([BUILDILSCORE], [test x$openils_core = xtrue])
76 # install evergreen-web?
79 [ --disable-web disables installation of the Evergreen web modules ],
80 [case "${enableval}" in
81 yes) openils_web=true ;;
82 no) openils_web=false ;;
83 *) AC_MSG_ERROR([please choose another value for --disable-web (supported values are yes or no])
87 AM_CONDITIONAL([BUILDILSWEB], [test x$openils_web = xtrue])
89 # install evergreen-updates?
91 AC_ARG_ENABLE([updates],
92 [ --disable-updates disables installation of the Evergreen updates folder ],
93 [case "${enableval}" in
94 yes) openils_updates=true ;;
95 no) openils_updates=false ;;
96 *) AC_MSG_ERROR([please choose another value for --disable-updates (supported values are yes or no])
98 [openils_updates=true])
100 AM_CONDITIONAL([BUILDILSUPDATES], [test x$openils_updates = xtrue])
102 # Default updates host?
103 AC_ARG_WITH([updateshost],
104 [ --with-updateshost=hostname default hostname for automatic updates (default is blank)],
105 [AUTOUPDATE_HOST=${withval}],
107 AC_SUBST([AUTOUPDATE_HOST])
109 # Default updates host?
110 AC_ARG_WITH([initialhost],
111 [ --with-initialhost=hostname default hostname for staff client (default is blank)],
112 [INITIAL_HOST=${withval}],
114 AC_SUBST([INITIAL_HOST])
117 # install Evergreen Apache modules?
118 AC_ARG_ENABLE([apache-modules],
119 [ --disable-apache-modules disables installation of the Evergreen Apache modules ],
120 [case "${enableval}" in
121 yes) build_apachemods=true ;;
122 no) build_apachemods=false ;;
123 *) AC_MSG_ERROR([please choose another value for --disable-apache-modules (supported values are yes or no])
125 [build_apachemods=true])
127 AM_CONDITIONAL([BUILDAPACHEMODS], [test x$build_apachemods = xtrue])
129 # build evergreen-reporter ?
131 AC_ARG_ENABLE([reporter],
132 [ --disable-reporter disables installation of the Evergreen reporter module ],
133 [case "${enableval}" in
134 yes) openils_reporter=true ;;
135 no) openils_reporter=false ;;
136 *) AC_MSG_ERROR([please choose another value for --disable-reporter (supported values are yes or no])
138 [openils_reporter=true])
140 AM_CONDITIONAL([BUILDILSREPORTER], [test x$openils_reporter = xtrue])
142 # build evergreen-client ?
144 AC_ARG_ENABLE([client],
145 [ --disable-client disables installation of the Evergreen staff client ],
146 [case "${enableval}" in
147 yes) openils_client=true ;;
148 no) openils_client=false ;;
149 *) AC_MSG_ERROR([please choose another value for --disable-client (supported values are yes or no])
151 [openils_client=true])
153 AM_CONDITIONAL([BUILDILSCLIENT], [test x$openils_client = xtrue])
156 #-----------------------------------
157 # Check for dependencies
158 #-----------------------------------
160 [ --with-tmp=path location of the Evergreen temporary directory (default is /tmp) ],
166 [ --with-apxs=path location of the apxs Apache configuration tool (default is /usr/bin/apxs2)],
168 [APXS2=/usr/bin/apxs2])
170 # If the passed in value doesn't work, try some reasonable defaults
171 # Fedora puts the file in /usr/sbin/apxs, for example
172 if ! test -x "$APXS2"; then
173 for i in /usr/bin /usr/sbin /usr/local/apache/bin /usr/local/apache2/bin ; do
174 for j in apxs apxs2 ; do
175 if test -x "$i/$j"; then
184 AC_ARG_WITH([libxml2],
185 [ --with-libxml2=path location of the libxml2 headers (default is /usr/include/libxml2)],
186 [LIBXML2_HEADERS=${withval}],
187 [LIBXML2_HEADERS=/usr/include/libxml2/])
188 AC_SUBST([LIBXML2_HEADERS])
190 PKG_CHECK_MODULES([DBI], [dbi])
192 AC_ARG_WITH([hiredis],
193 [ --with-hiredis=path location of the hiredis headers (default is /usr/include/hiredis/))],
194 [HIREDIS_HEADERS=${withval}],
195 [HIREDIS_HEADERS=/usr/include/hiredis/])
196 AC_SUBST([HIREDIS_HEADERS])
199 [ --with-dbi=path location of the libdbi driver libraries (default is /usr/lib/x86_64-linux-gnu/dbd/)],
200 [DBI_LIBS=${withval}],
201 [DBI_LIBS=/usr/lib/x86_64-linux-gnu/dbd/])
203 AC_ARG_WITH([perlbase],
204 [ --with-perlbase=path base location to install Perl modules (default based on Config.pm)],
205 [PERL_BASE=${withval}],
207 AC_SUBST([PERL_BASE])
209 AC_ARG_WITH([redis-accounts],
210 [ --with-redis-accounts=path location of the redis accounts file (default is $sysconfdir/redis-accounts.txt)],
211 [REDIS_ACCOUNTS=${withval}],
212 [REDIS_ACCOUNTS=$sysconfdir/redis-accounts.txt])
213 AC_SUBST([REDIS_ACCOUNTS])
215 # Skip password propagation if there is no password field.
219 OPENSRF_BUS_PASSWORD=$(grep 'ACL SETUSER opensrf on >' ${REDIS_ACCOUNTS} | cut -d'>' -f2),
220 GATEWAY_BUS_PASSWORD=$(grep 'ACL SETUSER gateway on >' ${REDIS_ACCOUNTS} | cut -d'>' -f2),
221 ROUTER_BUS_PASSWORD=$(grep 'ACL SETUSER router on >' ${REDIS_ACCOUNTS} | cut -d'>' -f2),
222 AC_SUBST([OPENSRF_BUS_PASSWORD]),
223 AC_SUBST([GATEWAY_BUS_PASSWORD]),
224 AC_SUBST([ROUTER_BUS_PASSWORD])
226 [AC_MSG_RESULT(Skipping Redis accounts password propagation)]
229 AM_CONDITIONAL(CHECK_TESTS, test x$enable_tests = xyes)
231 if test "x$openils_core" = "xtrue"; then
233 AC_PATH_PROG([OSRF_CONFIG], [osrf_config])
234 if test "x$OSRF_CONFIG" == "x"; then
235 AC_MSG_ERROR([Could not find osrf_config.
236 Ensure OpenSRF is installed and that the PATH environment variable includes
237 the OpenSRF executables. For example: PATH=\$PATH:/openils/bin ./configure])
240 AC_ARG_WITH([opensrf-headers],
241 [ --with-opensrf-headers=path location of the OpenSRF header files],
242 [OPENSRF_HEADERS=${withval}],
243 [OPENSRF_HEADERS=`$OSRF_CONFIG --includedir`])
244 AC_SUBST([OPENSRF_HEADERS])
246 # We need this for JavaScript
247 AC_ARG_WITH([opensrf-libs],
248 [ --with-opensrf-libs=path location of the OpenSRF libraries],
249 [OPENSRF_LIBS=${withval}],
250 [OPENSRF_LIBS=`$OSRF_CONFIG --libdir`])
251 AC_SUBST([OPENSRF_LIBS])
253 AC_CHECK_PROG([MEMCACHED],memcached,yes,no)
254 if test $MEMCACHED = "no"; then
255 AC_MSG_ERROR([*** memcached not found, aborting])
258 AC_CHECK_PROG([ASPELL],aspell,yes,no)
259 if test $ASPELL = "no"; then
260 AC_MSG_ERROR([*** aspell not found, aborting])
263 AC_CHECK_PROG([CPAN],cpan,yes,no)
264 if test $CPAN = "no"; then
265 AC_MSG_ERROR([*** cpan not found, aborting])
268 PKG_CHECK_MODULES([YAZ],[yaz],[YAZ=yes],[YAZ=no])
269 if test $YAZ = "no"; then
270 AC_MSG_ERROR([*** yaz not found, aborting])
273 AC_CHECK_PROG([PERL],perl,yes,no)
274 if test $PERL = "no"; then
275 AC_MSG_ERROR([*** perl not found, aborting])
278 #------------------------------------
279 # Checks for libraries.
280 #------------------------------------
282 # Check for the rest of the libraries
284 #check for dynamic linking functions
285 AC_CHECK_LIB(dl,dlopen)
287 #check for the libdbi library
288 AC_CHECK_LIB(dbi,dbi_initialize)
290 #to check for the availability and function of a particular
291 #driver we need a runtime check (since the driver is loaded
292 #dynamically). This example checks for the mysql driver
293 AC_MSG_CHECKING([for libdbi pgsql driver (dynamic load)])
296 [[dbi_initialize(0); return(dbi_conn_new("pgsql") ? 0 : 1);]])],
297 [AC_MSG_RESULT("yes")],
298 [AC_MSG_FAILURE("pgsql driver not installed?")])
300 AC_CHECK_LIB([expat], [main], [], AC_MSG_ERROR(*** OpenILS requires libexpat))
301 AC_CHECK_LIB([ncurses], [main], [], AC_MSG_ERROR(*** OpenILS requires libncurses))
303 # IF the OpenSRF libs are installed in a non-standard location, such as
304 # /openils/lib, the compilation test will fail. Support that case.
305 LDFLAGS="-L$OPENSRF_LIBS"
307 # checking this specific function name ensures we have a "new enough" libopensrf but isn't actually checking the lib version :-/
308 AC_CHECK_LIB([opensrf], [osrf_buffer_free], [], AC_MSG_ERROR(*** OpenILS requires libopensrf))
309 AC_CHECK_LIB([readline], [main], [], AC_MSG_ERROR(*** OpenILS requires libreadline))
310 AC_CHECK_LIB([xml2], [main], [], AC_MSG_ERROR(*** OpenILS requires libxml2))
311 AC_CHECK_LIB([hiredis], [redisConnect], [], AC_MSG_ERROR(***OpenSRF requires libhiredis))
312 AC_CHECK_LIB([xslt], [main], [], AC_MSG_ERROR(*** OpenILS requires libxslt))
313 AC_CHECK_LIB([pq], [main], [], AC_MSG_ERROR(*** OpenILS requires libpq))
314 PKG_CHECK_MODULES(pcre, libpcre >= 3.0.0)
317 #------------------------------------
318 # Checks for header files.
319 #------------------------------------
321 AC_CHECK_HEADERS([fcntl.h langinfo.h locale.h stdlib.h string.h unistd.h])
323 #-------------------------------------------------------------------
324 # Checks for typedefs, structures, and compiler characteristics.
325 #-------------------------------------------------------------------
332 #-------------------------------------------------------------------
333 # Checks for library functions.
334 #-------------------------------------------------------------------
338 AC_CHECK_FUNCS([localtime_r memset nl_langinfo setlocale strcasecmp strchr strdup strerror strncasecmp])
340 #---------------------------------
341 # Check for unit test framework.
342 #---------------------------------
343 PKG_CHECK_MODULES([CHECK], [check >= 0.9.0], [enable_tests=yes],
345 if test "x$enable_tests" = "xno"; then
346 AC_MSG_WARN(Check unit testing framework not found.)
349 #----------------------------
350 # Create Makefiles/Output
351 #----------------------------
353 AC_CONFIG_FILES([Open-ILS/examples/Makefile
354 Open-ILS/src/c-apps/Makefile
355 Open-ILS/src/c-apps/tests/Makefile
356 Open-ILS/src/extras/Makefile])
359 if test "x$build_apachemods" = "xtrue"; then
361 #-----------------------------------
362 # Set install path variables
363 #-----------------------------------
365 #APACHE PREFORK DEV TEST
366 AC_MSG_CHECKING([APXS2])
367 if test -x "${APXS2}"; then
370 AC_MSG_ERROR([*** apxs not found in ${APXS2}, aborting])
373 AC_CONFIG_FILES([Open-ILS/src/apachemods/Makefile])
376 AC_CONFIG_FILES([Makefile
377 Open-ILS/src/Makefile
378 Open-ILS/src/perlmods/Makefile
379 Open-ILS/web/Makefile
380 Open-ILS/updates/Makefile
381 Open-ILS/xul/staff_client/Makefile
382 Open-ILS/src/extras/eg_config
385 if test -e "./Open-ILS/src/extras/eg_config"; then chmod 755 Open-ILS/src/extras/eg_config; fi;
389 #-------------------------------------------------
391 #-------------------------------------------------
394 AC_MSG_RESULT([--------------------- Configuration options: -----------------------])
397 AC_MSG_RESULT([-------- Installation Options: --------])
398 if test "$openils_core" = "true" ; then
399 AC_MSG_RESULT([Evergreen Core: yes])
401 AC_MSG_RESULT([Evergreen Core: no])
403 if test "$build_apachemods" = "true" ; then
404 AC_MSG_RESULT([Evergreen Apache module: yes])
406 AC_MSG_RESULT([Evergreen Apache module: no])
408 if test "$openils_web" = "true" ; then
409 AC_MSG_RESULT([Evergreen Web: yes])
411 AC_MSG_RESULT([Evergreen Web: no])
413 if test "$openils_updates" = "true" ; then
414 AC_MSG_RESULT([Evergreen Updates: yes])
416 AC_MSG_RESULT([Evergreen Updates: no])
418 if test "$openils_reporter" = "true" ; then
419 AC_MSG_RESULT([Evergreen Reporter: yes])
421 AC_MSG_RESULT([Evergreen Reporter: no])
423 if test "$openils_client" = "true" ; then
424 AC_MSG_RESULT([Evergreen Staff Client: yes])
426 AC_MSG_RESULT([Evergreen Staff Client: no])
429 AC_MSG_RESULT([-------- Installation Directories --------])
430 AC_MSG_RESULT(Installation directory prefix: ${prefix})
431 AC_MSG_RESULT(Temporary directory: ${TMP})
432 AC_MSG_RESULT(APXS2 location: ${APXS2})
433 AC_MSG_RESULT(libxml2 headers location: ${LIBXML2_HEADERS})
434 AC_MSG_RESULT(libdbi location: ${DBI_LIBS})
435 AC_MSG_RESULT(OpenSRF headers location: ${OPENSRF_HEADERS})
436 AC_MSG_RESULT(OpenSRF libraries location: ${OPENSRF_LIBS})
437 AC_MSG_RESULT(libhiredis headers location: ${HIREDIS_HEADERS})
438 AC_MSG_RESULT(Redis Accounts: ${REDIS_ACCOUNTS})
440 AC_MSG_RESULT([----------------------------------------------------------------------])