Logger: move specific values to header
[MonkeyD.git] / configure
blobeb394b482c5e12c86a7274b4d4c1412c493c43bc
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 VERSION="0.10.0-git"
22 SYSNAME=`uname -s`
23 SYSINFO=`uname -sr`
25 INCDIR="src/include/"
27 messages_en()
29 case "$*" in
30 "1")
31 echo "+ Creating conf/monkey.conf"
33 "2")
34 echo "+ Creating Makefile"
36 "3")
37 echo "+ Creating src/Makefile"
39 "4")
40 echo "+ Creating src/include/info.h"
42 "5")
43 echo "+ Creating banana script"
45 "6")
46 echo -n "Configuration done, just type 'make"
48 "7")
49 echo -n "+ Checking for Pthreads lib.........."
51 esac
54 # Create configuration files under 'conf/'
55 make_conf()
57 cat $INCDIR/config.path lang/"$*"/mconf lang/"$*"/sites/default > makeconf.sh
58 chmod 755 makeconf.sh
59 ./makeconf.sh
60 rm makeconf.sh
61 rm $INCDIR/config.path
62 cp lang/"$*"/INSTALL ./
63 cp lang/"$*"/README ./
66 local_dirs()
68 bin="bin"
69 logs="logs"
70 sites="conf/sites"
72 if [ ! -d $bin ]; then
73 mkdir $bin
76 if [ ! -d $logs ]; then
77 mkdir $logs
80 if [ ! -d $sites ]; then
81 mkdir $sites
86 main()
88 local_dirs
89 dir=0
90 actual_path=`pwd`
92 if [ "$prefix" != "$actual_path" ]; then
93 dir=1
96 if [ "$bindir" != "$actual_path/bin" ]; then
97 dir=1
100 if [ "$cgibin" != "$actual_path/cgi-bin" ]; then
101 dir=1
104 if [ "$sysconfdir" != "$actual_path/conf" ]; then
105 dir=1
108 if [ "$datadir" != "$actual_path/htdocs" ]; then
109 dir=1
112 if [ "$logdir" != "$actual_path/logs" ]; then
113 dir=1
116 echo
117 echo "Checking dependencies"
118 echo "====================="
119 echo
120 messages_$lang "7"
121 check_lib lang
123 echo
124 echo "Creating Makefiles and scripts"
125 echo "=============================="
126 echo
128 messages_$lang "1"
129 create_conf prefix bindir cgibin sysconfdir datadir logdir
131 make_conf $lang
132 messages_$lang "2"
134 if [ "$dir" = 0 ]; then
135 create_makefile1 bindir
136 else
137 create_makefile1_install prefix bindir cgibin sysconfdir datadir logdir
140 messages_$lang "3"
141 create_makefile2 mod_libs mod_defs mod_obj make_script add_obj_mod cheetah_obj
143 messages_$lang "4"
144 create_info sysconfdir SYSNAME VERSION
146 messages_$lang "5"
147 create_banana_script bindir logdir
148 echo
149 messages_$lang "6"
151 if [ "$dir" = 1 ]; then
152 echo -n " && make install' "
153 else
154 echo "' "
156 echo
158 create_makefile_plugins $plugdir
160 echo "#define CC \"${CC}\"" > src/include/env.h
163 # Check pthreads lib
164 check_lib()
166 cat > check.c <<EOF
167 #include <pthread.h>
168 int main(){ return 0;}
171 libtest=`gcc check.c -lpthread &>configure.log`
172 libstatus=`cat configure.log`
173 if test -n "$libstatus" ; then
174 echo "no"
175 rm -fr check* configure.log
176 exit 1
178 echo "yes"
179 rm -fr check* configure.log a.out
183 # Create Makefile
184 create_makefile1()
186 cat > Makefile << EOF
187 # Monkey HTTP Daemon: Makefile
188 # ============================
189 default:
190 @(cd src; make all)
191 @echo
192 @echo " Running Monkey :"
193 @echo " ----------------"
194 @echo
195 @echo " # $bindir/monkey"
196 @echo
197 @echo " For more help use '-h' option."
198 @echo
200 plugins:
201 @(cd plugins; make all)
203 clean:
204 @(cd src; make clean)
205 distclean:
206 @(cd src; make distclean)
210 create_makefile1_install()
213 # Look for plugins and create list
214 for entry in plugins/*
216 if [ -d $entry ]; then
217 echo "\tinstall -s -m 644 $entry/*.so \${PLUGINDIR}" >> plugins.list
219 done;
220 plglist=`cat plugins.list`
221 rm -rf plugins.list
223 # Look for plugins configuration
224 for entry in conf/plugins/*
226 if [ -d $entry ]; then
227 echo "\tcp -r $entry \${SYSCONFDIR}/plugins/" >> plugins.conf
229 done;
230 plgconf=`cat plugins.conf`
231 rm -rf plugins.conf
233 cat > Makefile <<EOF
234 # Monkey HTTP Daemon: Makefile
235 # ============================
236 PREFIX=${prefix}
237 BINDIR=${bindir}
238 CGIBIN=${cgibin}
239 SYSCONFDIR=${sysconfdir}
240 DATADIR=${datadir}
241 LOGDIR=${logdir}
242 PLUGINDIR=${plugdir}
244 default:
245 @(cd src; make all)
246 clean:
247 @(cd src; make clean)
248 distclean:
249 @(cd src; make distclean)
251 install:
252 make -C src all
253 install -d \$(BINDIR)
254 install -d \$(CGIBIN)
255 install -d \$(SYSCONFDIR)
256 install -d \${SYSCONFDIR}/sites
257 install -d \${SYSCONFDIR}/plugins
258 install -d \$(DATADIR)
259 install -d \${DATADIR}/imgs
260 install -d \${DATADIR}/php
261 install -d \${DATADIR}/docs
262 install -d \${LOGDIR}
263 install -d \${PLUGINDIR}
264 install -s -m 755 bin/monkey \$(BINDIR)
265 install -m 755 bin/banana \$(BINDIR)
266 install -m 755 ./cgi-bin/* \$(CGIBIN)
267 install -m 600 ./conf/*.* \$(SYSCONFDIR)
268 $plgconf
269 install -m 600 ./conf/sites/* \${SYSCONFDIR}/sites
270 $plglist
271 install -m 644 ./htdocs/*.* \$(DATADIR)
272 install -m 644 ./htdocs/imgs/*.* \${DATADIR}/imgs
273 install -m 644 ./htdocs/php/*.* \${DATADIR}/php
274 install -m 644 ./htdocs/docs/*.* \${DATADIR}/docs
275 @echo
276 @echo " Running Monkey :"
277 @echo " ----------------"
278 @echo
279 @echo " # $bindir/monkey"
280 @echo
281 @echo " For more help use '-h' option"
282 @echo
287 # Create monkey/src/Makefile
288 create_makefile2()
291 if test -z $CC ; then
292 CC="gcc"
295 if test -z $debug ; then
296 CFLAGS="-O2 -Wall"
297 else
298 CFLAGS="-g -Wall"
301 ##### Internal options ####
302 # just for remember that one time we support this :_(
303 # ---------------------------------------------------
304 #if [ "$disable_sendfile" = "on" ]; then
305 # internal_options="-DDISABLE_SENDFILE_SYSCALL"
308 cat > src/Makefile<<EOF
309 CC = $CC
310 DEFS = $mod_defs $internal_options
311 CFLAGS = $CFLAGS \$(DEFS)
312 INCDIR = ./include
313 LDFLAGS =
314 DESTDIR = ../bin/monkey
315 LIBS = -ldl -lpthread $mod_libs $MORE_LIBS
316 OBJ = monkey.o method.o mimetype.o request.o \\
317 header.o config.o logfile.o signals.o \\
318 user.o utils.o chars.o epoll.o scheduler.o \\
319 str.o memory.o connection.o iov.o http.o \\
320 file.o socket.o clock.o cache.o worker.o \\
321 server.o plugin.o \\
322 $add_obj_mod
324 all: ../bin/monkey
326 ../bin/monkey: \$(OBJ)
327 @echo "Compiling Monkey"
328 @echo "================"
329 \$(CC) \$(CFLAGS) \$(LIBS) \$(LDFLAGS) -o \$@ \$(OBJ) $mod_obj
330 @echo
331 @echo "Compiling Plugins"
332 @echo "================="
333 @(cd ../plugins && make all && cd ..)
335 clean:
336 rm -rf *.o
337 rm -rf ../bin/monkey
339 distclean:
340 rm -rf *.o ../bin/* Makefile \\
341 ../Makefile ../conf/monkey.conf \\
342 ../conf/sites/* include/info.h ../logs/*\\
344 .c.o:
345 \$(CC) -c \$(CFLAGS) -I\$(INCDIR) \$<
349 create_makefile_plugins()
351 cd plugins
352 cat > Makefile <<EOF
353 all:
355 dir=`pwd`
356 plugins_load="../conf/plugins.load"
357 echo -n > $plugins_load
358 echo "# Monkey plugins are loaded on run, by default all " >> $plugins_load
359 echo "# plugins are disabled, if you want to enable" >> $plugins_load
360 echo "# one, just remove the comment character for each line" >> $plugins_load
361 echo "" >> $plugins_load
363 list=`echo */ "" | sed "s/\/ /\n/g"`
364 for i in $list;
366 echo " @(cd $i && make && cd ..)" >> Makefile;
368 if [ "$plugdir" != "" ]; then
369 echo "#LoadPlugin $plugdir/monkey-$i.so" >> ../conf/plugins.load
370 else
371 echo "#LoadPlugin $dir/$i/monkey-$i.so" >> ../conf/plugins.load
373 done
375 # Add 'install' option to make file if plugdir was specified
376 if [ "$plugdir" != "" ]; then
377 echo "\ninstall:" >> Makefile
378 echo "\tinstall -d $plugdir" >> Makefile
380 list=`echo */ "" | sed "s/\/ /\n/g"`
381 for i in $list;
383 echo "\tinstall -m 644 $dir/$i/monkey-$i.so $plugdir/" >> Makefile
384 done
386 cd ..
389 # Creando include/info.h
390 create_info()
392 cat > $INCDIR/info.h <<EOF
393 #define OS "$SYSNAME"
394 #define VERSION "$VERSION" /* Version de Monkey */
395 #define MONKEY_PATH_CONF "$sysconfdir"
399 create_conf()
401 cat > $INCDIR/config.path <<EOF
402 #!/bin/sh
403 prefix=$prefix
404 bindir=$bindir
405 cgibin=$cgibin
406 sysconfdir=$sysconfdir
407 datadir=$datadir
408 logdir=$logdir
412 create_banana_script()
414 cat > bin/banana << EOF
415 #!/bin/sh
417 # Monkey HTTP Daemon - Banana Script
418 # -----------------------------------
419 # This script allow you to control monkey. Written by Eduardo Silva
420 # ----------------------------
421 # Date : 2002/09/01.
422 # ----------------------------
424 # Use: ./banana OPTION
426 # Options available to banana:
428 # start -> start monkey
429 # restart -> restart monkey
430 # stop -> stop monkey if this is running
431 # help -> what do u think ?
433 PIDFILE="$logdir/monkey.pid"
434 BINMONKEY="$bindir/monkey"
436 for arg in \$*; do
437 case "\$arg" in
438 -*=*) optarg=\`echo "\$arg" | sed 's/[-_a-zA-Z0-9]*=//'\` ;;
439 *) optarg= ;;
440 esac
442 if ! test -f \$PIDFILE ; then
443 STATUS="no"
444 else
445 PIDMONKEY=\`cat \$PIDFILE\`
446 if ! kill -0 \$PIDMONKEY 2>/dev/null; then
447 STATUS="no"
448 else
449 STATUS="yes"
453 case "\$arg" in
454 start)
455 if [ "\$STATUS" = "yes" ] ; then
456 echo "Monkey is running... (PID=\$PIDMONKEY)"
457 exit 1
459 if ! test -x \$BINMONKEY ; then
460 echo "Error: I can't run binary file"
461 exit 1
462 else
463 if \$BINMONKEY -D 2>/dev/null ; then
464 echo "Running Monkey -> OK"
465 exit 0
469 stop)
470 if [ "\$STATUS" = "no" ]; then
471 echo "Monkey is not running."
472 exit 1
474 kill -9 \$PIDMONKEY
475 rm -rf \$PIDFILE > /dev/null
476 echo "Monkey stopped (\$PIDMONKEY)"
477 exit 0
479 restart)
480 if [ "\$STATUS" = "yes" ]; then
481 if ! kill \$PIDMONKEY > /dev/null ; then
482 killall -9 monkey
483 else
484 echo -n "Stopping Monkey... "
486 else
487 echo -n "Monkey is not running... "
489 if ! test -x \$BINMONKEY ; then
490 echo "Error: I can't run binary file"
491 exit 1
492 else
493 \$BINMONKEY -D > /dev/null
494 echo "Restarting -> OK"
495 exit 0
499 echo "Use : banana [start|stop|restart|help]"
500 exit 1
502 esac
503 done
504 echo "Use : banana [start|stop|restart|help]"
506 exit 0
508 chmod 755 bin/banana
511 #---------------------------#
512 # End Functions
513 #---------------------------#
516 #---------------------------#
517 # Starting configure
518 #---------------------------#
519 aux=`pwd`
521 prefix="$aux"
522 bindir="$aux/bin"
523 cgibin="$aux/cgi-bin"
524 sysconfdir="$aux/conf"
525 datadir="$aux/htdocs"
526 logdir="$aux/logs"
528 for arg in $*; do
529 case "$arg" in
530 -*=*)
531 optarg=`echo "$arg" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
532 *) optarg= ;;
533 esac
535 case "$arg" in
536 --prefix*)
537 prefix=$optarg
538 bindir="$optarg/bin"
539 cgibin="$optarg/cgi-bin"
540 sysconfdir="$optarg/conf"
541 datadir="$optarg/htdocs"
542 logdir="$optarg/logs"
544 --bindir*)
545 bindir=$optarg
547 --cgibin*)
548 cgibin=$optarg
550 --sysconfdir*)
551 sysconfdir=$optarg
553 --datadir*)
554 datadir=$optarg
556 --logdir*)
557 logdir=$optarg
559 --lang*)
560 lang=$optarg
562 --plugdir*)
563 plugdir=$optarg
565 --debug*)
566 debug=1
568 --version*)
569 echo "Monkey HTTP Daemon v$VERSION"
570 echo "-------------------------"
571 echo "Copyright 2001-2010"
572 echo "Developed by Eduardo Silva Pereira"
573 echo "Monkey Home : http://www.monkey-project.com"
574 echo "Contact Email : edsiper@gmail.com"
575 echo
576 exit 1
579 echo "Usage: configure [--prefix=PREFIXDIR] [--lang=LANGUAGE] [ --bindir=BINDIR]"
580 echo " [--cgibin=CGIBINDIR] [--sysconfdir=SYSCONFDIR]"
581 echo " [--datadir=DATADIR] [--logdir=LOGDIR] [--plugdir=PLUGDIR]"
582 echo
583 echo "Options: "
584 echo " --help Display this help and exit"
585 echo " --version Display version information and exit"
586 echo " --debug Compile Monkey with debugging symbols"
587 echo
588 echo " --prefix=PREFIX Install Monkey under PREFIX directory"
589 echo " --bindir=BINDIR Install Monkey binaries under BINDIR directory"
590 echo " --cgibin=CGIBINDIR Install Monkey cgi-bin under CGIBIN directory"
591 echo " --sysconfdir=SYSCONFDIR Install Monkey conf files under SYSCONFDIR dir"
592 echo " --datadir=DATADIR Install Monkey data dir files under DATADIR directory"
593 echo " --logdir=LOGDIR Install Monkey log files under LOGDIR directory"
594 echo " --plugdir=PLUGDIR Target directory for Monkey plugins"
595 echo
596 exit 1
598 esac
599 done
601 echo "********************************************"
602 echo " Monkey HTTP Daemon v$VERSION "
603 echo "* http://www.monkey-project.com *"
604 echo "* ---------------------------------------- *"
605 echo "* We need beta testers, developers and *"
606 echo "* translators!, if u want help to this *"
607 echo "* project, email me : *"
608 echo "* *"
609 echo "* edsiper@gmail.com *"
610 echo "* *"
611 echo "* Thanks for use Monkey!!! *"
612 echo "* *"
613 echo "********************************************"
614 echo "System : $SYSINFO"
616 lang="en"
618 # starting main function
619 main prefix lang bindir cgibin sysconfdir datadir logdir plugdir modules SYSNAME VERSION
620 exit 0