#! /bin/sh # waf configure wrapper # Fancy colors used to beautify the output a bit. # NORMAL="" BOLD="" RED="" YELLOW="" GREEN="" EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_ERROR=2 EXIT_BUG=10 CUR_DIR=$PWD #possible relative path WORKINGDIR=`dirname $0` cd $WORKINGDIR #abs path WORKINGDIR=`pwd` cd $CUR_DIR WAF="${WORKINGDIR}/tools/waf-light" # Checks for WAF. Honours $WAF if set. Stores path to 'waf' in $WAF. # Requires that $PYTHON is set. # checkWAF() { printf "Checking for WAF\t\t\t: " #installed miniwaf in sourcedir if [ -z "$WAF" ] ; then if [ -f "${WORKINGDIR}/waf" ] ; then WAF="${WORKINGDIR}/waf" if [ ! -x "$WAF" ] ; then chmod +x $WAF fi fi fi if [ -z "$WAF" ] ; then if [ -f "${WORKINGDIR}/waf-light" ] ; then ${WORKINGDIR}/waf-light --make-waf WAF="${WORKINGDIR}/waf" fi fi #global installed waf with waf->waf.py link if [ -z "$WAF" ] ; then WAF=`which waf 2>/dev/null` fi # neither waf nor miniwaf could be found if [ ! -x "$WAF" ] ; then printf $RED"not found"$NORMAL"\n" echo "Go to http://code.google.com/p/waf/" echo "and download a waf version" exit $EXIT_FAILURE else printf $GREEN"$WAF"$NORMAL"\n" fi } # Generates a Makefile. Requires that $WAF is set. # generateMakefile() { cat > Makefile << EOF #!/usr/bin/make -f # Waf Makefile wrapper WAF_HOME=$CUR_DIR all: @$WAF build all-debug: @$WAF -v build all-progress: @$WAF -p build install: if test -n "\$(DESTDIR)"; then \\ $WAF install --destdir="\$(DESTDIR)" ; \\ else \\ $WAF install ; \\ fi; uninstall: @if test -n "\$(DESTDIR)"; then \\ $WAF uninstall --destdir="\$(DESTDIR)" ; \\ else \\ $WAF uninstall ; \\ fi; test: all python tools/test.py --mode=release test-all: all python tools/test.py --mode=debug,release test-debug: all python tools/test.py --mode=debug benchmark: all build/default/node benchmark/run.js doc: doc/node.1 doc/api.html doc/index.html doc/api.html: doc/api.txt asciidoc --unsafe \\ -a theme=pipe \\ -a toc \\ -a linkcss \\ -o doc/api.html doc/api.txt doc/api.xml: doc/api.txt asciidoc -b docbook -d manpage -o doc/api.xml doc/api.txt doc/node.1: doc/api.xml xsltproc --output doc/node.1 \\ --nonet /etc/asciidoc/docbook-xsl/manpage.xsl \\ doc/api.xml website-upload: doc scp doc/* linode:~/tinyclouds/node/ clean: @$WAF clean distclean: @$WAF distclean @-rm -rf _build_ @-rm -f Makefile @-rm -f *.pyc check: @$WAF check dist: @$WAF dist .PHONY: benchmark clean dist distclean check uninstall install all test test-all website-upload EOF } checkWAF generateMakefile "${WAF}" configure $* exit $?