configure.ac 7.06 KB
Newer Older
Karl Chen's avatar
Karl Chen committed
1 2 3 4 5 6 7 8 9 10 11
dnl -*- autoconf -*-

dnl $Id$

dnl NOTE: on milkyway.ssl and jill.ssl , need autoconf/automake et al from quarl's
dnl directory; the _autosetup script does this.

dnl not sure exactly what the minimum version is (but 2.13 won't work)
AC_PREREQ(2.57)

dnl Process this file with autoconf to produce a configure script.
David Anderson's avatar
David Anderson committed
12
AC_INIT(BOINC, 4.00)
Karl Chen's avatar
Karl Chen committed
13

Karl Chen's avatar
Karl Chen committed
14 15 16 17 18 19 20 21 22 23 24 25 26
AC_ARG_ENABLE(server, 
    AC_HELP_STRING([--disable-server],
                   [Disables building the scheduling server (build only client; default builds both server and client)]),
    [],
    [enable_server=yes])

if test "${enable_server}" = yes; then
    echo "--- Configuring BOINC AC_PACKAGE_VERSION (server & client) ---"
else
    echo "--- Configuring BOINC AC_PACKAGE_VERSION (client only) ---"
fi

AM_CONDITIONAL(ENABLE_SERVER, [test "${enable_server}" = yes])
Karl Chen's avatar
Karl Chen committed
27

Karl Chen's avatar
Karl Chen committed
28 29 30 31 32 33 34 35 36
AC_CANONICAL_SYSTEM

dnl generate .tar.gz, .tar.bz2, .zip
dnl AM_INIT_AUTOMAKE(dist-bzip2 dist-zip)
AM_INIT_AUTOMAKE(dist-zip)

AC_CONFIG_SRCDIR(lib/shmem.C)

AC_COPYRIGHT([
Karl Chen's avatar
Karl Chen committed
37
The contents of this file are subject to the BOINC Public License
Karl Chen's avatar
Karl Chen committed
38 39
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
Karl Chen's avatar
Karl Chen committed
40
http://boinc.berkeley.edu/license_1.0.txt
Karl Chen's avatar
Karl Chen committed
41 42 43 44 45 46 47 48 49

Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
License for the specific language governing rights and limitations
under the License. 

The Original Code is the Berkeley Open Infrastructure for Network Computing. 

The Initial Developer of the Original Code is the SETI@home project.
Karl Chen's avatar
Karl Chen committed
50
Portions created by the SETI@home project are Copyright (C) 2002
Karl Chen's avatar
Karl Chen committed
51 52 53 54 55 56 57 58
University of California at Berkeley. All Rights Reserved. 

Contributor(s):
])

AC_REVISION([$Revision$])

AC_SUBST(MAJOR_VERSION, `echo AC_PACKAGE_VERSION | sed 's/\..*//'`)
Karl Chen's avatar
Karl Chen committed
59
AC_SUBST(MINOR_VERSION, `echo AC_PACKAGE_VERSION | sed 's/.*\.0*//'`)
Karl Chen's avatar
Karl Chen committed
60 61 62 63

AC_DEFINE_UNQUOTED(MAJOR_VERSION, $MAJOR_VERSION, [Major part of version number])
AC_DEFINE_UNQUOTED(MINOR_VERSION, $MINOR_VERSION, [Minor part of version number])
AC_DEFINE_UNQUOTED(HOSTTYPE, "$host", [Host for this compilation])
Karl Chen's avatar
Karl Chen committed
64 65 66
AC_SUBST(CLIENT_BIN_FILENAME,[boinc_]AC_PACKAGE_VERSION[_$host${EXEEXT}])
AC_SUBST(TOP_BUILD_DIR, [`pwd`])
AC_SUBST(TOP_SOURCE_DIR, [`(cd \`dirname "$0"\` && pwd)`])
Karl Chen's avatar
Karl Chen committed
67 68 69 70 71 72 73 74 75

AM_MAINTAINER_MODE

dnl Checks for programs.
AC_PROG_CC
AC_PROG_CXX
AC_PROG_CPP
AC_PROG_MAKE_SET
AC_PROG_RANLIB
76
AC_PROG_LN_S
Karl Chen's avatar
Karl Chen committed
77

Karl Chen's avatar
Karl Chen committed
78 79 80 81
if test "${enable_server}" = yes; then
  AC_CHECK_MYSQL
fi

Karl Chen's avatar
Karl Chen committed
82 83 84 85 86 87 88 89
dnl Checks for libraries.
AC_CHECK_LIB(gen, main)
AC_CHECK_LIB(m, sin)
AC_CHECK_LIB(nsl, gethostbyaddr)
AC_CHECK_LIB(socket, main)
AC_CHECK_LIB(stdc++, main)
AC_CHECK_LIB(z, gzopen)
dnl check for pthread
Karl Chen's avatar
Karl Chen committed
90
ACX_PTHREAD(AC_DEFINE(HAVE_PTHREAD,1, [Have pthread]))
Karl Chen's avatar
Karl Chen committed
91
dnl check for GL library
Eric J. Korpela's avatar
Eric J. Korpela committed
92
SAH_GRX_LIBS
Karl Chen's avatar
Karl Chen committed
93 94 95
AC_CHECK_LIB(socket, setservent)
AC_CHECK_LIB(gen, strfind)
AC_CHECK_LIB(gen, strfind, [ AC_DEFINE(HAVE_STRFIND, 1, [Have strfind]) ] )
96
AC_CHECK_LIB(cygipc, shmget)
Karl Chen's avatar
Karl Chen committed
97 98 99 100 101 102

dnl Checks for header files.
AC_HEADER_DIRENT
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_HEADER_TIME
103
AC_TYPE_SIGNAL
Daniel Hsu's avatar
""  
Daniel Hsu committed
104
AC_CHECK_HEADERS(arpa/inet.h dirent.h fcntl.h malloc.h netdb.h netinet/in.h netinet/tcp.h signal.h strings.h sys/file.h sys/ipc.h sys/mount.h sys/param.h sys/resource.h sys/select.h sys/shm.h sys/socket.h sys/statvfs.h sys/statfs.h sys/swap.h sys/sysctl.h sys/systeminfo.h sys/time.h sys/types.h sys/utsname.h sys/vmmeter.h sys/wait.h unistd.h utmp.h errno.h)
Eric J. Korpela's avatar
Eric J. Korpela committed
105
SAH_GRX_INCLUDES
Eric J. Korpela's avatar
Eric J. Korpela committed
106
AC_LANG_PUSH(C++)
107 108 109 110
SAH_HEADER_STDCXX
SAH_CHECK_NAMESPACES
AH_TEMPLATE([HAVE_STD_MIN],[Define to 1 if min is in namespace std::])
AH_TEMPLATE([HAVE_STD_MAX],[Define to 1 if max is in namespace std::])
Daniel Hsu's avatar
""  
Daniel Hsu committed
111 112 113
AH_TEMPLATE([HAVE_STD_LOCALE],[Define to 1 if locale is in namespace std::])
AH_TEMPLATE([HAVE_STD_TRANSFORM],[Define to 1 if transform is in namespace std:: ])
SAH_FUNCS_IN_NAMESPACE([['min(0,0)'] ['max(0,0)'] ['transform((char *)0,(char *) 0,(char *)0,(int(*)(int))malloc)'] ['locale("")']],std)
Eric J. Korpela's avatar
Eric J. Korpela committed
114
AC_LANG_POP
Karl Chen's avatar
Karl Chen committed
115 116 117 118 119 120 121 122 123 124 125 126 127 128
dnl TODO: use compiler to test these; there probably exists an autoconf macro already!
case "$target" in
*-linux-* | *-sun-*)
        AC_DEFINE(GETSOCKOPT_SOCKLEN_T, 1, [getsockopt uses socklen_t])
        ;;
*sysv5OpenUNIX8*)
        AC_DEFINE(GETSOCKOPT_SIZE_T, 1, [getsockopt uses size_t])
        ;;
esac

dnl Checks for library functions.
AC_PROG_GCC_TRADITIONAL
AC_FUNC_VPRINTF
AC_FUNC_WAIT3
Daniel Hsu's avatar
Daniel Hsu committed
129
AC_CHECK_FUNCS(gethostname gettimeofday mkdir select socket strstr uname lockf flock strftime setpriority wait4 strlcpy strlcat sigaction getutent setutent)
Karl Chen's avatar
Karl Chen committed
130 131 132 133 134

dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T
AC_STRUCT_TM
Karl Chen's avatar
Karl Chen committed
135
AC_STRUCT_TIMEZONE
Karl Chen's avatar
Karl Chen committed
136

Daniel Hsu's avatar
Daniel Hsu committed
137 138 139 140 141 142 143 144 145
dnl utmp file location
for f in /etc/utmp /var/adm/utmp /var/run/utmp; do
    if test -f $f; then
        utmp_file=$f
    fi
done
if test -n "$utmp_file"; then
    AC_DEFINE_UNQUOTED(UTMP_LOCATION, "$utmp_file", utmp file location)
fi
Daniel Hsu's avatar
Daniel Hsu committed
146

Daniel Hsu's avatar
Daniel Hsu committed
147 148 149 150 151 152 153 154 155 156 157
dnl Checks for device files
if test -e "/dev/mouse"; then
    AC_DEFINE(HAVE__DEV_MOUSE, 1, [Define to 1 if /dev/mouse exists])
fi
if test -e "/dev/kbd"; then
    AC_DEFINE(HAVE__DEV_KBD, 1, [Define to 1 if /dev/kbd exists])
fi
if test -e "/dev/tty1"; then
    AC_DEFINE(HAVE__DEV_TTY1, 1, [Define to 1 if /dev/tty1 exists])
fi

Karl Chen's avatar
Karl Chen committed
158
# by default, create static binaries on linux.
David Anderson's avatar
David Anderson committed
159 160 161 162 163
#[if [ "$target_os" = "linux-gnu" ]; then
#    STATIC_FLAGS="-static"
#fi
#echo "checking static flags... ${STATIC_FLAGS:-(none)}"]
#AC_SUBST(STATIC_FLAGS)
Karl Chen's avatar
Karl Chen committed
164

Karl Chen's avatar
Karl Chen committed
165 166
AC_CONFIG_FILES([Makefile
                 RSAEuro/source/Makefile
Karl Chen's avatar
Karl Chen committed
167 168 169 170 171 172 173 174 175 176
                 RSAEuro/Makefile
                 api/Makefile
                 apps/Makefile
                 client/Makefile
                 db/Makefile
                 lib/Makefile
                 sched/Makefile
                 tools/Makefile
                 test/Makefile
                 test/version.inc
Karl Chen's avatar
Karl Chen committed
177 178 179 180 181
                 py/Makefile
                 py/Boinc/Makefile
                 py/Boinc/version.py
                 py/Boinc/boinc_path_config.py:py/Boinc/boinc_path_config.py.in
                 py/boinc_path_config.py:py/Boinc/boinc_path_config.py.in
Karl Chen's avatar
Karl Chen committed
182
                 client/win/boinc_path_config.py:py/Boinc/boinc_path_config.py.in
Karl Chen's avatar
Karl Chen committed
183 184 185
                 sched/boinc_path_config.py:py/Boinc/boinc_path_config.py.in
                 tools/boinc_path_config.py:py/Boinc/boinc_path_config.py.in
                 test/boinc_path_config.py:py/Boinc/boinc_path_config.py.in
Karl Chen's avatar
Karl Chen committed
186 187 188 189 190
                 ])

AC_CONFIG_HEADER([config.h])

AC_OUTPUT
Karl Chen's avatar
Karl Chen committed
191

Karl Chen's avatar
Karl Chen committed
192 193 194 195 196
if test "${enable_server}" = yes; then
    echo "--- Configured BOINC AC_PACKAGE_VERSION (server & client) ---"
else
    echo "--- Configured BOINC AC_PACKAGE_VERSION (client only) ---"
fi
Karl Chen's avatar
Karl Chen committed
197

Karl Chen's avatar
Karl Chen committed
198
[
Karl Chen's avatar
Karl Chen committed
199
true || $TOP_SOURCE_DIR/test/test_sanity.py || (
Karl Chen's avatar
Karl Chen committed
200
    cat <<EOF
Karl Chen's avatar
Karl Chen committed
201

Karl Chen's avatar
Karl Chen committed
202 203 204 205 206 207 208 209 210
******************************************************************************
**  
** The framework sanity check failed.
**  
** If you only want to compile (and run) the client or compile (and run) the
** server, this may be okay.
**  
** If you are developing BOINC and want to run the automated tests, you need a
** MySQL server installed and running, with permission to create databases.
Karl Chen's avatar
Karl Chen committed
211 212 213
**
** You can run this sanity check using test/test_sanity.py
**
Karl Chen's avatar
Karl Chen committed
214
******************************************************************************
Karl Chen's avatar
Karl Chen committed
215 216 217 218 219

EOF

)
]