Initialize uninitialized variables
[MonkeyD.git] / configure
blobf439bbdaf06fc2d8699e4fdcb562b8cdc5803f34
1 #!/bin/sh
3 # Monkey HTTP Daemon
4 # ------------------
5 # Copyright (C) 2001-2009, Eduardo Silva P.
7 # This program is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 2 of the License, or
10 # (at your option) any later version.
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU Library General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with this program; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 VERSION="0.10.0-git"
22 SYSNAME=`uname -s`
23 SYSINFO=`uname -sr`
25 INFOMODS="extras/inf/"
26 INCDIR="src/include/"
28 messages_en()
30 case "$*" in
31 "1")
32 echo "+ Creating conf/monkey.conf"
34 "2")
35 echo "+ Creating Makefile"
37 "3")
38 echo "+ Creating src/Makefile"
40 "4")
41 echo "+ Creating src/include/info.h"
43 "5")
44 echo "+ Creating banana script"
46 "6")
47 echo -n "Configuration done, just type 'make"
49 "7")
50 echo -n "+ Checking for Pthreads lib.........."
52 esac
55 # Create configuration files under 'conf/'
56 make_conf()
58 cat $INCDIR/config.path lang/"$*"/mconf lang/"$*"/sites/default > makeconf.sh
59 chmod 755 makeconf.sh
60 ./makeconf.sh
61 rm makeconf.sh
62 rm $INCDIR/config.path
63 cp lang/"$*"/monkey.deny conf/
64 cp lang/"$*"/INSTALL ./
65 cp lang/"$*"/README ./
68 local_dirs()
70 bin="bin"
71 logs="logs"
72 sites="conf/sites"
74 if [ ! -d $bin ]; then
75 mkdir $bin
78 if [ ! -d $logs ]; then
79 mkdir $logs
82 if [ ! -d $sites ]; then
83 mkdir $sites
88 main()
90 local_dirs
91 dir=0
92 actual_path=`pwd`
93 rm -rf src/extras/inf/*
96 if [ "$prefix" != "$actual_path" ]; then
97 dir=1
100 if [ "$bindir" != "$actual_path/bin" ]; then
101 dir=1
104 if [ "$cgibin" != "$actual_path/cgi-bin" ]; then
105 dir=1
108 if [ "$sysconfdir" != "$actual_path/conf" ]; then
109 dir=1
112 if [ "$datadir" != "$actual_path/htdocs" ]; then
113 dir=1
116 if [ "$logdir" != "$actual_path/logs" ]; then
117 dir=1
120 echo
121 echo "Checking dependencies"
122 echo "====================="
123 echo
124 messages_$lang "7"
125 check_lib lang
127 echo
128 echo "Creating Makefiles and scripts"
129 echo "=============================="
130 echo
132 messages_$lang "1"
133 create_conf prefix bindir cgibin sysconfdir datadir logdir
135 make_conf $lang
136 messages_$lang "2"
138 if [ "$dir" = 0 ]; then
139 create_makefile1 bindir
140 else
141 create_makefile1_install prefix bindir cgibin sysconfdir datadir logdir
144 messages_$lang "3"
145 create_makefile2 mod_libs mod_defs mod_obj make_script add_obj_mod cheetah_obj
147 messages_$lang "4"
148 create_info sysconfdir SYSNAME VERSION
150 messages_$lang "5"
151 create_banana_script bindir logdir
152 echo
153 messages_$lang "6"
155 if [ "$dir" = 1 ]; then
156 echo -n " && make install' "
157 else
158 echo "' "
160 echo
162 create_makefile_plugins
165 # Check pthreads lib
166 check_lib()
168 cat > check.c <<EOF
169 #include <pthread.h>
170 int main(){ return 0;}
173 libtest=`gcc check.c -lpthread &>configure.log`
174 libstatus=`cat configure.log`
175 if test -n "$libstatus" ; then
176 echo "no"
177 rm -fr check* configure.log
178 exit 1
180 echo "yes"
181 rm -fr check* configure.log a.out
185 # Create Makefile
186 create_makefile1()
188 cat > Makefile << EOF
189 # Monkey HTTP Daemon: Makefile
190 # ============================
191 default:
192 @(cd src; make all)
193 @echo
194 @echo " Running Monkey :"
195 @echo " ----------------"
196 @echo
197 @echo " # $bindir/monkey"
198 @echo
199 @echo " For more help use '-h' option."
200 @echo
202 plugins:
203 @(cd plugins; make all)
205 clean:
206 @(cd src; make clean)
207 distclean:
208 @(cd src; make distclean)
212 create_makefile1_install()
214 cat > Makefile <<EOF
215 # Monkey HTTP Daemon: Makefile
216 # ============================
217 PREFIX=${prefix}
218 BINDIR=${bindir}
219 CGIBIN=${cgibin}
220 SYSCONFDIR=${sysconfdir}
221 DATADIR=${datadir}
222 LOGDIR=${logdir}
224 default:
225 @(cd src; make all)
226 clean:
227 @(cd src; make clean)
228 distclean:
229 @(cd src; make distclean)
231 install:
232 make -C src all
233 install -d \$(BINDIR)
234 install -d \$(CGIBIN)
235 install -d \$(SYSCONFDIR)
236 install -d \$(DATADIR)
237 install -d \${DATADIR}/imgs
238 install -d \${DATADIR}/php
239 install -d \${DATADIR}/docs
240 install -d \${LOGDIR}
241 install -s -m 755 bin/monkey \$(BINDIR)
242 install -m 755 bin/banana \$(BINDIR)
243 install -m 755 ./cgi-bin/* \$(CGIBIN)
244 install -m 600 ./conf/*.* \$(SYSCONFDIR)
245 install -m 644 ./htdocs/*.* \$(DATADIR)
246 install -m 644 ./htdocs/imgs/*.* \${DATADIR}/imgs
247 install -m 644 ./htdocs/php/*.* \${DATADIR}/php
248 install -m 644 ./htdocs/docs/*.* \${DATADIR}/docs
249 @echo
250 @echo " Running Monkey :"
251 @echo " ----------------"
252 @echo
253 @echo " # $bindir/monkey"
254 @echo
255 @echo " For more help use '-h' option"
256 @echo
261 # Create monkey/src/Makefile
262 create_makefile2()
265 if test -z $CC ; then
266 CC="gcc"
268 if test -z $STRIP ; then
269 STRIP="strip "
272 ##### Internal options ####
273 # just for remember that one time we support this :_(
274 # ---------------------------------------------------
275 #if [ "$disable_sendfile" = "on" ]; then
276 # internal_options="-DDISABLE_SENDFILE_SYSCALL"
279 cat > src/Makefile<<EOF
280 CC = $CC
281 DEFS = $mod_defs $internal_options
282 CFLAGS = $CFLAGS \$(DEFS) -g -O2 -Wall
283 INCDIR = ./include
284 LDFLAGS =
285 DESTDIR = ../bin/monkey
286 LIBS = -ldl -lpthread $mod_libs $MORE_LIBS
287 OBJ = monkey.o method.o mimetype.o request.o \\
288 header.o config.o logfile.o signals.o \\
289 cgi.o user.o utils.o \\
290 chars.o epoll.o scheduler.o str.o memory.o \\
291 connection.o iov.o http.o file.o socket.o \\
292 clock.o cache.o worker.o server.o plugin.o \\
293 $add_obj_mod
295 all: ../bin/monkey
297 ../bin/monkey: \$(OBJ)
298 @echo "Compiling Monkey"
299 @echo "================"
300 \$(CC) \$(CFLAGS) \$(LIBS) \$(LDFLAGS) -o \$@ \$(OBJ) $mod_obj
301 $STRIP ../bin/monkey
302 @echo
303 @echo "Compiling Plugins"
304 @echo "================="
305 @(cd ../plugins && make all && cd ..)
307 clean:
308 rm -rf *.o
309 rm -rf ../bin/monkey
311 distclean:
312 rm -rf *.o ../bin/* Makefile \\
313 ../Makefile ../conf/monkey.conf \\
314 ../conf/monkey.deny ../conf/sites/* include/info.h ../logs/*\\
315 extras/inf/*
316 @(cd extras && ./cleanmods.sh && cd ..)
318 .c.o:
319 \$(CC) -c \$(CFLAGS) -I\$(INCDIR) \$<
323 create_makefile_plugins()
325 cd plugins
326 list=`echo */ "" | sed "s/\/ /\n/g"`
327 cat > Makefile <<EOF
328 all:
330 dir=`pwd`
331 plugins_load="../conf/plugins.load"
332 echo -n > $plugins_load
333 echo "# Monkey plugins are loaded on run, by default all " >> $plugins_load
334 echo "# plugins are disabled, if you want to enable" >> $plugins_load
335 echo "# one, just remove the comment character for each line" >> $plugins_load
336 echo "" >> $plugins_load
338 for i in $list;
340 echo " @(cd $i && make && cd ..)" >> Makefile;
341 echo "#LoadPlugin $dir/$i/monkey-$i.so" >> ../conf/plugins.load;
342 done
345 # Creando include/info.h
346 create_info()
348 cat > $INCDIR/info.h <<EOF
349 #define OS "$SYSNAME"
350 #define VERSION "$VERSION" /* Version de Monkey */
351 #define MONKEY_PATH_CONF "$sysconfdir"
355 create_conf()
357 cat > $INCDIR/config.path <<EOF
358 #!/bin/sh
359 prefix=$prefix
360 bindir=$bindir
361 cgibin=$cgibin
362 sysconfdir=$sysconfdir
363 datadir=$datadir
364 logdir=$logdir
368 create_banana_script()
370 cat > bin/banana << EOF
371 #!/bin/sh
373 # Monkey HTTP Daemon - Banana Script
374 # -----------------------------------
375 # This script allow you to control monkey. Written by Eduardo Silva
376 # ----------------------------
377 # Date : 2002/09/01.
378 # ----------------------------
380 # Use: ./banana OPTION
382 # Options available to banana:
384 # start -> start monkey
385 # restart -> restart monkey
386 # stop -> stop monkey if this is running
387 # help -> what do u think ?
389 PIDFILE="$logdir/monkey.pid"
390 BINMONKEY="$bindir/monkey"
392 for arg in \$*; do
393 case "\$arg" in
394 -*=*) optarg=\`echo "\$arg" | sed 's/[-_a-zA-Z0-9]*=//'\` ;;
395 *) optarg= ;;
396 esac
398 if ! test -f \$PIDFILE ; then
399 STATUS="no"
400 else
401 PIDMONKEY=\`cat \$PIDFILE\`
402 if ! kill -0 \$PIDMONKEY 2>/dev/null; then
403 STATUS="no"
404 else
405 STATUS="yes"
409 case "\$arg" in
410 start)
411 if [ "\$STATUS" = "yes" ] ; then
412 echo "Monkey is running... (PID=\$PIDMONKEY)"
413 exit 1
415 if ! test -x \$BINMONKEY ; then
416 echo "Error: I can't run binary file"
417 exit 1
418 else
419 if \$BINMONKEY -D 2>/dev/null ; then
420 echo "Running Monkey -> OK"
421 exit 0
425 stop)
426 if [ "\$STATUS" = "no" ]; then
427 echo "Monkey is not running."
428 exit 1
430 kill -9 \$PIDMONKEY
431 rm -rf \$PIDFILE > /dev/null
432 echo "Monkey stopped (\$PIDMONKEY)"
433 exit 0
435 restart)
436 if [ "\$STATUS" = "yes" ]; then
437 if ! kill \$PIDMONKEY > /dev/null ; then
438 killall -9 monkey
439 else
440 echo -n "Stopping Monkey... "
442 else
443 echo -n "Monkey is not running... "
445 if ! test -x \$BINMONKEY ; then
446 echo "Error: I can't run binary file"
447 exit 1
448 else
449 \$BINMONKEY -D > /dev/null
450 echo "Restarting -> OK"
451 exit 0
455 echo "Use : banana [start|stop|restart|help]"
456 exit 1
458 esac
459 done
460 echo "Use : banana [start|stop|restart|help]"
462 exit 0
464 chmod 755 bin/banana
467 #---------------------------#
468 # End Functions
469 #---------------------------#
472 #---------------------------#
473 # Starting configure
474 #---------------------------#
475 aux=`pwd`
477 prefix="$aux"
478 bindir="$aux/bin"
479 cgibin="$aux/cgi-bin"
480 sysconfdir="$aux/conf"
481 datadir="$aux/htdocs"
482 logdir="$aux/logs"
484 rm -rf src/extras/*.info
485 touch $INCDIR/modules.h
487 for arg in $*; do
488 case "$arg" in
489 -*=*)
490 optarg=`echo "$arg" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
491 *) optarg= ;;
492 esac
494 case "$arg" in
495 --prefix*)
496 prefix=$optarg
497 bindir="$optarg/bin"
498 cgibin="$optarg/cgi-bin"
499 sysconfdir="$optarg/conf"
500 datadir="$optarg/htdocs"
501 logdir="$optarg/logs"
503 --bindir*)
504 bindir=$optarg
506 --cgibin*)
507 cgibin=$optarg
509 --sysconfdir*)
510 sysconfdir=$optarg
512 --datadir*)
513 datadir=$optarg
515 --logdir*)
516 logdir=$optarg
518 --lang*)
519 lang=$optarg
521 --load-mod_mysql*)
522 modules="on"
523 mod_mysql="on"
525 --with-cheetah-shell*)
526 cheetah="on"
528 --version*)
529 echo "Monkey HTTP Daemon v$VERSION"
530 echo "-------------------------"
531 echo "Copyright 2001-2009"
532 echo "Developed by Eduardo Silva"
533 echo "Monkey Home : http://monkeyd.sf.net"
534 echo "Contact Email : edsiper@users.sf.net"
535 echo
536 exit 1
539 echo "Usage: configure [--prefix=PREFIXDIR] [--lang=LANGUAGE] [ --bindir=BINDIR]"
540 echo " [--cgibin=CGIBINDIR] [--sysconfdir=SYSCONFDIR]"
541 echo " [--datadir=DATADIR] [--logdir=LOGDIR]"
542 echo
543 echo "Options : "
544 echo " --help Display this help and exit"
545 echo " --version Display version information and exit"
546 echo
547 echo " --prefix=PREFIX Install Monkey under PREFIX directory"
548 echo " --bindir=BINDIR Install Monkey binaries under BINDIR directory"
549 echo " --cgibin=CGIBINDIR Install Monkey cgi-bin under CGIBIN directory"
550 echo " --sysconfdir=SYSCONFDIR Install Monkey conf files under SYSCONFDIR dir"
551 echo " --datadir=DATADIR Install Monkey data dir files under DATADIR directory"
552 echo " --logdir=LOGDIR Install Monkey log files under LOGDIR directory"
553 echo " --lang=[en|es] Language to configuration files (default English)"
554 echo
555 echo "Extra features :"
556 echo " All modules are optional features, neither of them are loaded by default,"
557 echo " the available modules are:"
558 echo
559 echo " --load-mod_mysql Load MySQL Support (read MODULES file for details)."
560 echo " --with-cheetah-shell Include Cheetah Shell!!!"
561 echo
562 exit 1
564 esac
565 done
567 echo "********************************************"
568 echo " Monkey HTTP Daemon v$VERSION "
569 echo "* (http://monkeyd.sf.net) *"
570 echo "* ---------------------------------------- *"
571 echo "* We need beta testers, developers and *"
572 echo "* translators!, if u want help to this *"
573 echo "* project, email me : *"
574 echo "* *"
575 echo "* edsiper@users.sourceforge.net *"
576 echo "* *"
577 echo "* Thanks for use Monkey!!! *"
578 echo "* *"
579 echo "********************************************"
580 echo "System : $SYSINFO"
582 lang="en"
584 # starting main function
585 main prefix lang bindir cgibin sysconfdir datadir logdir modules SYSNAME VERSION
586 exit 0