1#!/bin/sh
2
3echo ""
4
5# defaults
6DEBUG=no
7with_libdb=test
8with_mysql=test
9
10# parse options
11# --with/--without parsing copied from autoconf's output
12while [ $# -gt 0 ]; do
13  case $1 in
14    --with-*)
15      ac_option=$1
16      ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
17      ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
18      # Reject names that are not valid shell variable names.
19      expr "x$ac_package" : ".*[^A-Za-z0-9_-]" >/dev/null &&
20        { echo "error: invalid package name: $ac_package"; exit 1; }
21      ac_package=`echo $ac_package | sed 's/-/_/g'`
22      case $ac_option in
23        *=*)
24          ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
25          ;;
26        *)
27          ac_optarg=yes
28          ;;
29      esac
30      eval "with_$ac_package='$ac_optarg'"
31      ;;
32    --without-*)
33      ac_option=$1
34      ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
35      ac_package=`expr "x$ac_option" : 'x-*without-\([^=]*\)'`
36      # Reject names that are not valid shell variable names.
37      expr "x$ac_package" : ".*[^A-Za-z0-9_-]" >/dev/null &&
38        { echo "error: invalid package name: $ac_package"; exit 1; }
39      ac_package=`echo $ac_package | sed 's/-/_/g'`
40      eval "with_$ac_package=no"
41      ;;
42    --debug=yes|--debug|-d)
43      echo "Debug mode enabled."
44      with_debug=yes
45      ;;
46    --debug=no)
47      echo "Debug mode disabled."
48      with_debug=no
49      ;;
50    --help|-help|-h)
51      echo "usage: $0 [ options ]"
52      echo "available options:"
53      echo "  --debug=yes (or -d)     Enable debugging support."
54      echo "  --debug=no              Disable debugging support."
55      echo "  --with-package          Enable support for package in default location."
56      echo "  --with-package=path     Enable support for package installed in path."
57      echo "  --without-package       Disable support for package."
58      echo "  --help (or -h)          Show this message."
59      echo ""
60      echo "relevant packages:"
61      echo "  libdb = BerkeleyDB"
62      echo "  mysql = MySQL database"
63      exit 1
64      ;;
65    *)
66      echo "Unknown option '$1', try -h for help"
67      exit 1
68      ;;
69  esac
70  shift
71done
72
73echo "Examining system setup..."
74
75# Some known configs:
76#
77# uname -s   uname -r      uname -m   uname -p
78# ========   ===========   ========   ========
79# SunOS      5.6           sun4u      sparc
80# Linux      2.2.17        i686       unknown
81# FreeBSD    4.1-RELEASE   i386       i386
82
83UNAME_S=`uname -s`
84UNAME_R=`uname -r`
85
86case "$UNAME_S" in
87  Linux)
88    if [ "$with_debug" = "yes" ]; then
89      CCDBG="-g"
90      LDDBG="-g"
91    else
92      CCDBG="-DNDEBUG"
93      LDDBG=""
94    fi
95    CC=gcc
96    CFLAGS="$CCDBG -D_UNIX -D_LINUX -Wall"
97    CXX=g++
98    CXXFLAGS=${CFLAGS}
99    AR=ar
100    ARFLAGS="-rc"
101    LD=gcc
102    LDFLAGS="$LDDBG"
103    SYSLIBS=""
104    LIBDB_LIB="-ldb"
105    MYSQL_LIB="-lmysqlclient"
106    ;;
107  FreeBSD|DragonFly)
108    case "$UNAME_R" in
109      2.*)
110        OSVER=20
111        ;;
112      3.*)
113        OSVER=30
114        ;;
115      4.*)
116        OSVER=40
117        ;;
118      *)
119        # Assume 5.0 +
120        OSVER=50
121        ;;
122    esac
123    if [ "$with_debug" = "yes" ]; then
124      CCDBG="-g"
125      LDDBG="-g"
126    else
127      CCDBG="-DNDEBUG"
128      LDDBG=""
129    fi
130    CC=gcc
131    CFLAGS="$CCDBG -D_UNIX -D_BSD=$OSVER -Wall $CFLAGS"
132    CXX=g++
133    CXXFLAGS=${CFLAGS}
134    AR=ar
135    ARFLAGS="-rc"
136    LD=gcc
137    LDFLAGS="$LDDBG $LDFLAGS"
138    SYSLIBS=""
139    LIBDB_LIB="${DB_LIBNAME}"
140    MYSQL_LIB="-lmysqlclient"
141    ;;
142  OpenBSD)
143    # I'm guessing OpenBSD looks mostly like FreeBSD 4.x
144    OSVER=40
145    if [ "$with_debug" = "yes" ]; then
146      CCDBG="-g"
147      LDDBG="-g"
148    else
149      CCDBG="-DNDEBUG"
150      LDDBG=""
151    fi
152    CC=gcc
153    CFLAGS="$CCDBG -D_UNIX -D_BSD=$OSVER -Wall"
154    CXX=g++
155    CXXFLAGS=${CFLAGS}
156    AR=ar
157    ARFLAGS="-rc"
158    LD=gcc
159    LDFLAGS="$LDDBG"
160    SYSLIBS=""
161    LIBDB_LIB=""
162    MYSQL_LIB="-lmysqlclient"
163    ;;
164  Darwin)
165    # I'm guessing Darwin looks mostly like FreeBSD 4.x
166    OSVER=40
167    if [ "$with_debug" = "yes" ]; then
168      CCDBG="-g"
169      LDDBG="-g"
170    else
171      CCDBG="-DNDEBUG"
172      LDDBG=""
173    fi
174    CC=cc
175    CFLAGS="$CCDBG -D_UNIX -D_BSD=$OSVER -DNOLOCK -Wall"
176    CXX=c++
177    CXXFLAGS=${CFLAGS}
178    AR=ar
179    ARFLAGS="-rc"
180    LD=cc
181    LDFLAGS="$LDDBG"
182    SYSLIBS=""
183    LIBDB_LIB=""
184    MYSQL_LIB="-lmysqlclient"
185    ;;
186  SunOS)
187    case "$UNAME_R" in
188      5.6)
189        OSVER=56
190        ;;
191      5.7)
192        OSVER=57
193        ;;
194      5.8)
195        OSVER=58
196        ;;
197      *)
198        # Assume 9.0+
199        OSVER=59
200        ;;
201    esac
202    # Prefer gcc to the native cc here because I haven't tested with the
203    # native compiler yet.
204    type gcc >/dev/null 2>&1
205    if [ $? -eq 0 ]; then
206      if [ "$with_debug" = "yes" ]; then
207        CCDBG="-g"
208        LDDBG="-g"
209      else
210        CCDBG="-DNDEBUG"
211        LDDBG=""
212      fi
213      CC=gcc
214      CFLAGS="$CCDBG -D_UNIX -D_SOLARIS=$OSVER -Wall"
215      CXX=g++
216      CXXFLAGS=${CFLAGS}
217      LD=gcc
218      LDFLAGS="$LDDBG"
219    else
220      if [ "$with_debug" = "yes" ]; then
221        CCDBG="-g"
222        LDDBG="-g"
223      else
224        CCDBG="-DNDEBUG"
225        LDDBG=""
226      fi
227      CC=cc
228      CFLAGS="-DNDEBUG -D_UNIX -D_SOLARIS=$OSVER"
229      CXX=c++
230      CXXFLAGS=${CFLAGS}
231      LD=ld
232      LDFLAGS=""
233    fi
234    AR=ar
235    ARFLAGS="-rc"
236    SYSLIBS=""
237    LIBDB_LIB="-ldb"
238    MYSQL_LIB="-lmysqlclient"
239    ;;
240  OSF1)
241    if [ "$with_debug" = "yes" ]; then
242      CCDBG="-g2"
243      LDDBG="-g2"
244    else
245      CCDBG="-DNDEBUG"
246      LDDBG=""
247    fi
248    CC=cc
249    CFLAGS="$CCDBG -D_UNIX -D_OSF"
250    CXX=cxx
251    CXXFLAGS="-noexceptions ${CFLAGS}"
252    AR=ar
253    ARFLAGS="-rc"
254    LD=ld
255    LDFLAGS=""
256    SYSLIBS="-lm"
257    LIBDB_LIB="-ldb"
258    MYSQL_LIB="-lmysqlclient"
259    ;;
260  *)
261    if [ "$with_debug" = "yes" ]; then
262      CCDBG="-g"
263      LDDBG="-g"
264    else
265      CCDBG="-DNDEBUG"
266      LDDBG=""
267    fi
268    CC=cc
269    CFLAGS="$CCDBG -DNDEBUG -D_UNIX"
270    CXX=c++
271    CXXFLAGS=${CFLAGS}
272    AR=ar
273    ARFLAGS="-rc"
274    LD=ld
275    LDFLAGS="$LDDBG"
276    SYSLIBS=""
277    LIBDB_LIB="-ldb"
278    MYSQL_LIB="-lmysqlclient"
279    ;;
280esac
281
282echo -n "Looking for compiler... "
283type $CC >/dev/null 2>&1
284if [ $? -ne 0 ]; then
285  echo "compiler '$CC' not found!"
286  exit 1
287else
288  echo "$CC is executable."
289fi
290
291echo -n "Checking for BerkeleyDB... "
292if [ "$with_libdb" = "test" ]; then
293  if [ -e /usr/local/BerkeleyDB.4.1/include/db.h ]; then
294    with_libdb=/usr/local/BerkeleyDB.4.1
295    LIBDB_LIB="-ldb"
296  elif [ -e /usr/include/db.h -o \
297       -e /usr/local/include/db.h ]; then
298    with_libdb=yes
299  else
300    with_libdb=no
301  fi
302fi
303if [ "$with_libdb" = "no" ]; then
304  echo "disabled."
305else
306  if [ "$with_libdb" != "yes" ]; then
307    CFLAGS="$CFLAGS -I$with_libdb/include"
308    LDFLAGS="$LDFLAGS -L$with_libdb/lib"
309  fi
310  CFLAGS="$CFLAGS -DHAVE_LIBDB"
311  LDFLAGS="$LDFLAGS $LIBDB_LIB"
312  echo "enabled."
313fi
314
315echo -n "Checking for MySQL... "
316if [ "$with_mysql" = "test" ]; then
317  type mysql_config >/dev/null 2>&1
318  if [ $? -eq 0 ]; then
319    with_mysql=yes
320    CFLAGS="$CFLAGS `mysql_config --cflags`"
321    LDFLAGS="$LDFLAGS `mysql_config --libs`"
322    # mysql_config will add -lmysqlclient, don't add it twice
323    MYSQL_LIB=""
324  else
325    with_mysql=no
326  fi
327fi
328if [ "$with_mysql" = "no" ]; then
329  echo "disabled."
330else
331  if [ "$with_mysql" != "yes" ]; then
332    CFLAGS="$CFLAGS -I$with_mysql/include"
333    LDFLAGS="$LDFLAGS -L$with_mysql/lib"
334  fi
335  CFLAGS="$CFLAGS -DHAVE_MYSQL"
336  LDFLAGS="$LDFLAGS $MYSQL_LIB"
337  echo "enabled."
338fi
339
340for D in .; do
341  cat $D/Makefile.in | sed "s%@CC@%${CC}%g
342	s%@CXX@%${CXX}%g
343	s%@AR@%${AR}%g
344	s%@LD@%${LD}%g
345	s%@CFLAGS@%${CFLAGS}%g
346	s%@CXXFLAGS@%${CXXFLAGS}%g
347	s%@ARFLAGS@%${ARFLAGS}%g
348	s%@LDFLAGS@%${LDFLAGS}%g
349	s%@SYSLIBS@%${SYSLIBS}%" > $D/Makefile || exit 1
350done
351
352echo "Configuration successful."
353echo "Now run 'make all' and 'make install'."
354echo ""
355