From: Sascha Schumann Date: Tue, 11 Jan 2000 13:11:13 +0000 (+0000) Subject: These changes are committed together, because they depend on each other. X-Git-Tag: 1.3.10~18 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bbe1a3601e30858f84531a9171165efabe4d124b;p=apache These changes are committed together, because they depend on each other. - shared modules can be built in the tree - added support for --with-layout, uses APACI's config.layout - working 'make install' - working 'make depend' - working Pthreads checks - buildconf replaced git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@84423 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000000..7892c08c00 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,73 @@ + +DEPTH = . +topsrcdir = @topsrcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +SUBDIRS = ap lib main modules os $(REGEX_DIR) + +PROGRAM_NAME = apache +PROGRAM_SOURCES = modules.c buildmark.c +PROGRAM_LDADD = $(EXTRA_LDFLAGS) $(PROGRAM_DEPENDENCIES) $(EXTRA_LIBS) +PROGRAM_DEPENDENCIES = \ + $(BUILTIN_LIBS) \ + $(MPM_LIB) \ + main/libmain.la \ + $(OS_DIR)/libos.la \ + ap/libap.la \ + lib/apr/libapr.a \ + $(REGEX_LIB) + +PROGRAMS = $(PROGRAM_NAME) +targets = $(PROGRAMS) +phony_targets = buildmark.c +install_targets = install-conf install-htdocs install-icons install-other \ + install-cgi install-include + +include $(topsrcdir)/build/rules.mk +include $(topsrcdir)/build/program.mk + +install-conf: + @echo Installing configuration files + @test -d $(sysconfdir) || $(mkinstalldirs) $(sysconfdir) + @cd $(srcdir)/../conf; \ + for i in mime.types magic; do \ + $(INSTALL_DATA) $$i $(sysconfdir); \ + done; \ + for i in *-dist; do \ + sed -e 's#@@ServerRoot@@#$(prefix)#g' \ + < $$i > $(sysconfdir)/$$i; \ + chmod 0644 $(sysconfdir)/$$i; \ + file=`echo $$i|sed s/-dist//`; \ + if test "$$file" != "$$i" && test ! -f $(sysconfdir)/$$file; then \ + $(INSTALL_DATA) $(sysconfdir)/$$i $(sysconfdir)/$$file; \ + fi; \ + done + +install-htdocs: + @echo Installing HTML documents + @test -d $(htdocsdir) || $(mkinstalldirs) $(htdocsdir) + @cp -rp $(srcdir)/../htdocs/* $(htdocsdir) + +install-icons: + @echo Installing icons + @test -d $(iconsdir) || $(mkinstalldirs) $(iconsdir) + @cp -rp $(srcdir)/../icons/* $(iconsdir) + +install-cgi: + @echo Installing CGIs + @test -d $(cgidir) || $(mkinstalldirs) $(cgidir) + @cp -rp $(srcdir)/../cgi-bin/* $(cgidir) + +install-other: + @test -d $(logdir) || $(mkinstalldirs) $(logdir) + +install-include: + @echo Installing header files + @test -d $(includedir) || $(mkinstalldirs) $(includedir) + @test -d $(includedir)/xml || $(mkinstalldirs) $(includedir)/xml + @test -d $(includedir)/apr || $(mkinstalldirs) $(includedir)/apr + @cp include/*.h $(srcdir)/include/*.h $(includedir) + @cp $(srcdir)/lib/expat-lite/*.h $(includedir)/xml + @cp lib/apr/include/*.h $(srcdir)/lib/apr/include/*.h $(includedir)/apr + @chmod 644 $(includedir)/*.h $(includedir)/xml/*.h $(includedir)/apr/*.h diff --git a/acinclude.m4 b/acinclude.m4 index ab2f3c1ad9..5b2a3774de 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -1,31 +1,77 @@ -dnl -dnl APACHE_MODULE(modname [, shared]) -dnl -dnl Includes an extension in the build. -dnl -dnl "modname" is the name of the modules/ subdir where the extension resides -dnl "shared" can be set to "shared" or "yes" to build the extension as -dnl a dynamically loadable library. -dnl -dnl XXX - for now, all modules using this function are in modules/standard -AC_DEFUN(APACHE_MODULE,[ - if test -d "$cwd/$srcdir/modules/standard" ; then -dnl MOD_SUBDIRS="$MOD_SUBDIRS $1" - if test "$2" != "shared" -a "$2" != "yes"; then - libname="`basename $1`" - _extlib="libapachemod_${libname}.a" - MOD_LTLIBS="$MOD_LTLIBS modules/standard/libapachemod_${libname}.la" - MOD_LIBS="$MOD_LIBS standard/$_extlib" - MOD_STATIC="$MOD_STATIC $1" + +AC_DEFUN(APACHE_PASSTHRU,[ + unset ac_cv_pass_$1 + AC_CACHE_VAL(ac_cv_pass_$1, [ac_cv_pass_$1=$$1]) +]) + +dnl APACHE_SUBST(VARIABLE) +dnl Makes VARIABLE available in generated files +dnl (do not use @variable@ in Makefiles, but $(variable)) +AC_DEFUN(APACHE_SUBST,[ + APACHE_VAR_SUBST="$APACHE_VAR_SUBST $1" + AC_SUBST($1) +]) + +dnl APACHE_FAST_OUTPUT(FILENAME) +dnl Perform substitutions on FILENAME (Makefiles only) +AC_DEFUN(APACHE_FAST_OUTPUT,[ + APACHE_FAST_OUTPUT_FILES="$APACHE_FAST_OUTPUT_FILES $1" +]) + +dnl APACHE_MKDIR_P_CHECK +dnl checks whether mkdir -p works +AC_DEFUN(APACHE_MKDIR_P_CHECK,[ + AC_CACHE_CHECK(for working mkdir -p, ac_cv_mkdir_p,[ + test -d conftestdir && rm -rf conftestdir + mkdir -p conftestdir/somedir >/dev/null 2>&1 + if test -d conftestdir/somedir; then + ac_cv_mkdir_p=yes else - MOD_SHARED="$MOD_SHARED $1" + ac_cv_mkdir_p=no fi -dnl APACHE_OUTPUT(modules/$1/Makefile) - fi + rm -rf conftestdir + ]) +]) + +dnl APACHE_FAST_GENERATE +dnl Creates Makefiles and config_vars.mk +AC_DEFUN(APACHE_FAST_GENERATE,[ + APACHE_SUBST(abs_srcdir) + APACHE_SUBST(bindir) + APACHE_SUBST(cgidir) + APACHE_SUBST(logdir) + APACHE_SUBST(exec_prefix) + APACHE_SUBST(libexecdir) + APACHE_SUBST(htdocsdir) + APACHE_SUBST(includedir) + APACHE_SUBST(iconsdir) + APACHE_SUBST(sysconfdir) + APACHE_SUBST(prefix) + APACHE_SUBST(CC) + APACHE_SUBST(CFLAGS) + APACHE_SUBST(CPPFLAGS) + APACHE_SUBST(LDFLAGS) + APACHE_SUBST(DEFS) + APACHE_SUBST(LIBTOOL) + APACHE_SUBST(SHELL) + APACHE_SUBST(MODULE_DIRS) + + abs_srcdir="`(cd $srcdir && pwd)`" + + APACHE_MKDIR_P_CHECK + echo creating config_vars.mk + > config_vars.mk + for i in $APACHE_VAR_SUBST; do + eval echo "$i = \$$i" >> config_vars.mk + done + $SHELL $srcdir/build/fastgen.sh $srcdir $ac_cv_mkdir_p $APACHE_FAST_OUTPUT_FILES ]) -AC_SUBST(MOD_LTLIBS) +AC_DEFUN(APACHE_LIBTOOL_SILENT,[ + LIBTOOL='$(SHELL) $(top_builddir)/libtool --silent' +]) + dnl ## APACHE_OUTPUT(file) dnl ## adds "file" to the list of files generated by AC_OUTPUT dnl ## This macro can be used several times. @@ -95,12 +141,34 @@ AC_DEFUN(APACHE_ONCE,[ fi ]) +dnl APACHE_CHECK_GCC_ARG(ARG, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) +AC_DEFUN(APACHE_CHECK_GCC_ARG,[ + gcc_arg_name=[ac_cv_gcc_arg]translit($1,A-Z-,a-z_) + AC_CACHE_CHECK([whether $CC supports $1], [ac_cv_gcc_arg]translit($1,A-Z-,a-z_), [ + echo 'void somefunc() { };' > conftest.c + cmd='$CC $1 -c conftest.c' + if eval $cmd 2>&1 | egrep -e $1 >/dev/null ; then + ac_result=no + else + ac_result=yes + fi + eval $gcc_arg_name=$ac_result + rm -f conftest.* + ]) + if eval test "\$$gcc_arg_name" = "yes"; then + $2 + else + : + $3 + fi +]) + dnl dnl APACHE_CHECK_THREADS() dnl dnl Determine the best flags for linking against a threading library. dnl -AC_DEFUN(THREAD_TEST, [ +AC_DEFUN(APACHE_THREAD_TEST, [ AC_TRY_RUN( [ #include @@ -118,27 +186,34 @@ int main() { apache_threads_working="no" ], apache_threads_working="no" ) ] ) -define(APACHE_CHECK_THREADS, [dnl - cflags_orig="$CFLAGS" - ldflags_orig="$LDFLAGS" - for test_cflag in $1; do - for test_ldflag in $2; do - CFLAGS="$test_cflag $cflags_orig" - LDFLAGS="$test_ldflag $ldflags_orig" - THREAD_TEST() - if test "$apache_threads_working" = "yes"; then - break 2 - fi - done - done - if test "$apache_threads_working" = "yes"; then - threads_result="POSIX Threads found" - else - CFLAGS="$cflags_orig" - LDFLAGS="$ldflags_orig" - threads_result="POSIX Threads not found" - fi -] ) + +AC_DEFUN(APACHE_CHECK_THREADS,[ + +old_CFLAGS="$CFLAGS" + +if test -n "$GCC"; then + APACHE_CHECK_GCC_ARG(-pthread, [ + CFLAGS="$CFLAGS -pthread" + ],[ + APACHE_CHECK_GCC_ARG(-pthreads, [ + CFLAGS="$CFLAGS -pthreads" + ])]) +fi + +APACHE_THREAD_TEST + +if test "$apache_threads_working" != "yes"; then + CFLAGS="$old_CFLAGS" + AC_CHECK_LIB(pthread, pthread_kill) + APACHE_THREAD_TEST +fi + +if test "$apache_threads_working" = "yes"; then + threads_result="POSIX Threads found" +else + threads_result="POSIX Threads not found" +fi +]) dnl dnl APACHE_INADDR_NONE @@ -146,6 +221,7 @@ dnl dnl checks for missing INADDR_NONE macro dnl AC_DEFUN(APACHE_INADDR_NONE,[ + AC_CACHE_CHECK(whether system defines INADDR_NONE, ac_cv_inaddr_none,[ AC_TRY_COMPILE([ #ifdef HAVE_SYS_TYPES_H #include @@ -162,11 +238,184 @@ AC_DEFUN(APACHE_INADDR_NONE,[ ],[ unsigned long foo = INADDR_NONE; ],[ - HAVE_INADDR_NONE=yes + ac_cv_inaddr_none=yes ],[ - HAVE_INADDR_NONE=no + ac_cv_inaddr_none=no +])]) + if test "$ac_cv_inaddr_none" = "no"; then AC_DEFINE(INADDR_NONE, ((unsigned int) 0xffffffff), [ ]) + fi +]) + +AC_DEFUN(APACHE_CHECK_SHM_RW,[ + AC_CACHE_CHECK([whether system defines SHM_R,SHM_W],ac_cv_shm_rw,[ + AC_TRY_COMPILE([ +#include +#include +#include +],[ + int x = SHM_R | SHM_W; +],[ + ac_cv_shm_rw=yes +],[ + ac_cv_shm_rw=no +])]) + if test "$ac_cv_shm_rw" = "no"; then + AC_DEFINE(SHM_R, 0x400, [ ]) + AC_DEFINE(SHM_W, 0x200, [ ]) + fi ]) - AC_MSG_CHECKING(whether system defines INADDR_NONE) - AC_MSG_RESULT($HAVE_INADDR_NONE) + + +dnl APACHE_MODPATH_INIT(modpath) +AC_DEFUN(APACHE_MODPATH_INIT,[ + modpath_current=modules/$1 + modpath_static= + modpath_shared= + test -d $1 || $srcdir/helpers/mkdir.sh $modpath_current + > $modpath_current/modules.mk + MODULE_DIRS="$MODULE_DIRS $1" +])dnl +dnl +AC_DEFUN(APACHE_MODPATH_FINISH,[ + echo "static = $modpath_static" >> $modpath_current/modules.mk + echo "shared = $modpath_shared" >> $modpath_current/modules.mk + APACHE_FAST_OUTPUT($modpath_current/Makefile) +])dnl +dnl +dnl APACHE_MODPATH_ADD(name[, shared[, objects [, ldflags[, libs]]]]) +AC_DEFUN(APACHE_MODPATH_ADD,[ + if test -z "$3"; then + objects="mod_$1.lo" + else + objects="$3" + fi + + if test -z "$module_standalone"; then + if test -z "$2"; then + libname="libapachemod_$1.la" + BUILTIN_LIBS="$BUILTIN_LIBS $modpath_current/$libname" + modpath_static="$modpath_static $libname" + cat >>$modpath_current/modules.mk<>$modpath_current/modules.mk<[ ]*/d" \ + -e '/[ ]*<\/Layout>[ ]*/,$d' \ + -e "s/^[ ]*//g" \ + -e "s/:[ ]*/=\'/g" \ + -e "s/[ ]*$/'/g" \ + $1 > $pldconf + changequote([,]) + layout_name=$name + . $pldconf + rm $pldconf + for var in prefix exec_prefix bindir sbindir libexecdir mandir \ + sysconfdir datadir iconsdir htdocsdir cgidir includedir \ + localstatedir runtimedir logfiledir proxycachedir; do + eval "val=\"\$$var\"" + case $val in + *+) + val=`echo $val | sed -e 's;\+$;;'` + eval "$var=\"\$val\"" + autosuffix=yes + ;; + *) + autosuffix=no + ;; + esac + val=`echo $val | sed -e 's:\(.\)/*$:\1:'` + if test "$autosuffix" = "yes"; then + if echo $val | grep apache >/dev/null; then + addtarget=no + else + addtarget=yes + fi + if test "$addtarget" = "yes"; then + val="$val/apache" + fi + fi + eval "$var=\"$val\"" + done +])dnl +dnl +dnl APACHE_ENABLE_LAYOUT +dnl +AC_DEFUN(APACHE_ENABLE_LAYOUT,[ +AC_ARG_ENABLE(layout, +[ --enable-layout=LAYOUT],[ + LAYOUT=$enableval +]) + +if test -z "$LAYOUT"; then + htdocsdir='$(prefix)/htdocs' + iconsdir='$(prefix)/icons' + cgidir='$(prefix)/cgi-bin' + logdir='$(prefix)/logs' + sysconfdir='$(prefix)/conf' + layout_name=Apache +else + APACHE_LAYOUT($srcdir/../config.layout, $LAYOUT) +fi + +AC_MSG_CHECKING(for chosen layout) +AC_MSG_RESULT($layout_name) +])dnl +dnl +dnl APACHE_ENABLE_SHARED +dnl +AC_DEFUN(APACHE_ENABLE_SHARED,[ +AC_ARG_ENABLE(shared, +[ --enable-shared=MODULE-LIST],[ + for i in $enableval; do + eval "enable_$i=shared" + done +]) +])dnl +dnl +dnl APACHE_ENABLE_MODULES +dnl +AC_DEFUN(APACHE_ENABLE_MODULES,[ +AC_ARG_ENABLE(modules, +[ --enable-modules=MODULE-LIST],[ + for i in $enableval; do + eval "enable_$i=yes" + done ]) +])dnl diff --git a/build/build.mk b/build/build.mk new file mode 100644 index 0000000000..5ef3d80dd8 --- /dev/null +++ b/build/build.mk @@ -0,0 +1,63 @@ +# Copyright (c) 1999, 2000 Sascha Schumann. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY SASCHA SCHUMANN ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL SASCHA SCHUMANN BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +############################################################################## +# $Id: build.mk,v 1.1 2000/01/11 13:10:58 sascha Exp $ +# +# Makefile to generate build tools +# + +STAMP = buildmk.stamp + +all: $(STAMP) generated_lists + @$(MAKE) AMFLAGS=$(AMFLAGS) -s -f build/build2.mk + +generated_lists: + @echo config_m4_files = `find . -name config.m4` > $@ + +$(STAMP): build/buildcheck.sh + @build/buildcheck.sh && touch $(STAMP) + +snapshot: + distname='$(DISTNAME)'; \ + if test -z "$$distname"; then \ + distname='apache2-snapshot'; \ + fi; \ + cd ..; \ + myname=`basename \`pwd\`` ; \ + cd .. && cp -rp $$myname $$distname; \ + cd $$distname/src; \ + find . -type l -exec rm {} \; ; \ + $(MAKE) AMFLAGS=--copy -f build/build.mk; \ + cd ../..; \ + tar cf $$distname.tar $$distname; \ + rm -rf $$distname $$distname.tar.*; \ + bzip2 -9 $$distname.tar; \ + bzip2 -t $$distname.tar.bz2 + +cvsclean: + @for i in `find . -follow -name .cvsignore`; do \ + (cd `dirname $$i` 2>/dev/null && rm -rf `cat .cvsignore` *.o *.a || true); \ + done + @rm -f $(SUBDIRS) 2>/dev/null || true + +.PHONY: generated_lists snapshot cvsclean diff --git a/build/build2.mk b/build/build2.mk new file mode 100644 index 0000000000..8330c00e2a --- /dev/null +++ b/build/build2.mk @@ -0,0 +1,75 @@ +# Copyright (c) 1999, 2000 Sascha Schumann. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY SASCHA SCHUMANN ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL SASCHA SCHUMANN BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +############################################################################## +# $Id: build2.mk,v 1.1 2000/01/11 13:10:58 sascha Exp $ + +include generated_lists + +TOUCH_FILES = mkinstalldirs install-sh missing + +LT_TARGETS = ltconfig ltmain.sh config.guess config.sub + +config_h_in = include/ap_config_auto.h.in +apr_config_h_in = lib/apr/include/apr_config.h.in +apr_configure = lib/apr/configure + +APACHE_TARGETS = $(TOUCH_FILES) $(LT_TARGETS) configure $(config_h_in) + +APR_TARGETS = $(apr_configure) $(apr_config_h_in) + +targets = .deps $(APACHE_TARGETS) $(APR_TARGETS) + +all: $(targets) + +.deps: + touch $@ + +aclocal.m4: configure.in acinclude.m4 + @echo rebuilding $@ + aclocal + +$(LT_TARGETS): + libtoolize $(AMFLAGS) --force + +$(config_h_in): configure +# explicitly remove target since autoheader does not seem to work +# correctly otherwise (timestamps are not updated) + @echo rebuilding $@ + @rm -f $@ + autoheader + +$(TOUCH_FILES): + touch $(TOUCH_FILES) + +configure: aclocal.m4 configure.in $(config_m4_files) + @echo rebuilding $@ + autoconf + +$(apr_config_h_in): $(apr_configure) lib/apr/acconfig.h + @echo rebuilding $@ + @rm -f $@ + (cd lib/apr && autoheader) + +$(apr_configure): lib/apr/aclocal.m4 lib/apr/configure.in + @echo rebuilding $@ + (cd lib/apr && autoconf) diff --git a/build/buildcheck.sh b/build/buildcheck.sh new file mode 100755 index 0000000000..96974450fd --- /dev/null +++ b/build/buildcheck.sh @@ -0,0 +1,69 @@ +#! /bin/sh + +echo "buildconf: checking installation..." + +# autoconf 2.13 or newer +ac_version=`autoconf --version 2>/dev/null|head -1|sed -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'` +if test -z "$ac_version"; then +echo "buildconf: autoconf not found." +echo " You need autoconf version 2.13 or newer installed" +echo " to build PHP from CVS." +exit 1 +fi +IFS=.; set $ac_version; IFS=' ' +if test "$1" = "2" -a "$2" -lt "13" || test "$1" -lt "2"; then +echo "buildconf: autoconf version $ac_version found." +echo " You need autoconf version 2.13 or newer installed" +echo " to build PHP from CVS." +exit 1 +else +echo "buildconf: autoconf version $ac_version (ok)" +fi + +# automake 1.4 or newer +am_version=`automake --version 2>/dev/null|head -1|sed -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'` +if test "$am_version" = ""; then +echo "buildconf: automake not found." +echo " You need automake version 1.4 or newer installed" +echo " to build PHP from CVS." +exit 1 +fi +IFS=.; set $am_version; IFS=' ' +if test "$1" = "1" -a "$2" -lt "4" || test "$1" -lt "1"; then +echo "buildconf: automake version $am_version found." +echo " You need automake version 1.4 or newer installed" +echo " to build PHP from CVS." +exit 1 +else +echo "buildconf: automake version $am_version (ok)" +fi + +# libtool 1.3.3 or newer +lt_pversion=`libtool --version 2>/dev/null|sed -e 's/^[^0-9]*//' -e 's/[- ].*//'` +if test "$lt_pversion" = ""; then +echo "buildconf: libtool not found." +echo " You need libtool version 1.3 or newer installed" +echo " to build PHP from CVS." +exit 1 +fi +lt_version=`echo $lt_pversion|sed -e 's/\([a-z]*\)$/.\1/'` +IFS=.; set $lt_version; IFS=' ' +if test "$1" -gt "1" || test "$2" -gt "3" || test "$2" = "3" -a "$3" -ge "3" +then +echo "buildconf: libtool version $lt_pversion (ok)" +else +echo "buildconf: libtool version $lt_pversion found." +echo " You need libtool version 1.3.3 or newer installed" +echo " to build PHP from CVS." +exit 1 +fi + +am_prefix=`which automake | sed -e 's#/[^/]*/[^/]*$##'` +lt_prefix=`which libtool | sed -e 's#/[^/]*/[^/]*$##'` +if test "$am_prefix" != "$lt_prefix"; then + echo "WARNING: automake and libtool are installed in different" + echo " directories. This may cause aclocal to fail." + echo " continuing anyway" +fi + +exit 0 diff --git a/build/cvsclean b/build/cvsclean new file mode 100755 index 0000000000..e98ec49b76 --- /dev/null +++ b/build/cvsclean @@ -0,0 +1,3 @@ +#! /bin/sh + +${MAKE:-make} -f build/build.mk cvsclean diff --git a/build/fastgen.sh b/build/fastgen.sh new file mode 100755 index 0000000000..9a59ab7949 --- /dev/null +++ b/build/fastgen.sh @@ -0,0 +1,53 @@ +#! /bin/sh +# +# Copyright (c) 1999, 2000 Sascha Schumann. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY SASCHA SCHUMANN ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL SASCHA SCHUMANN BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +############################################################################## +# $Id: fastgen.sh,v 1.1 2000/01/11 13:10:58 sascha Exp $ +# + +srcdir=$1 +shift + +topsrcdir=`(cd $srcdir; pwd)` + +mkdir_p=$1 +shift + +if test "$mkdir_p" = "yes"; then + mkdir_p="mkdir -p" +else + mkdir_p="$topsrcdir/helpers/mkdir.sh" +fi + +base="\$(DEPTH)/$srcdir" + +for i in $@ ; do + echo "creating $i" + dir=`dirname $i` + $mkdir_p $dir + sed \ + -e s#@topsrcdir@#$base# \ + -e s#@srcdir@#$base/$dir# \ + < $topsrcdir/$i.in > $i +done diff --git a/build/library.mk b/build/library.mk new file mode 100644 index 0000000000..abadb6340c --- /dev/null +++ b/build/library.mk @@ -0,0 +1,42 @@ +# Copyright (c) 1999, 2000 Sascha Schumann. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY SASCHA SCHUMANN ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL SASCHA SCHUMANN BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +############################################################################## +# $Id: library.mk,v 1.1 2000/01/11 13:10:58 sascha Exp $ +# + +LTLIBRARY_OBJECTS = $(LTLIBRARY_SOURCES:.c=.lo) + +$(LTLIBRARY_NAME): $(LTLIBRARY_OBJECTS) $(LTLIBRARY_DEPENDENCIES) + $(LINK) $(LTLIBRARY_LDFLAGS) $(LTLIBRARY_OBJECTS) $(LTLIBRARY_LIBADD) + +$(LTLIBRARY_SHARED_NAME): $(LTLIBRARY_OBJECTS) $(LTLIBRARY_DEPENDENCIES) + @test -d $(phplibdir) || $(mkinstalldirs) $(phplibdir) + $(LINK) -avoid-version -module -rpath $(phplibdir) $(LTLIBRARY_LDFLAGS) $(LTLIBRARY_OBJECTS) $(LTLIBRARY_SHARED_LIBADD) + $(SHLIBTOOL) --mode=install install $@ $(phplibdir) + +shared: + @if test '$(SHLIBTOOL)' != '$(LIBTOOL)'; then \ + $(MAKE) 'LIBTOOL=$(SHLIBTOOL)' $(LTLIBRARY_SHARED_NAME); \ + else \ + $(MAKE) $(LTLIBRARY_SHARED_NAME); \ + fi; \ diff --git a/build/ltlib.mk b/build/ltlib.mk new file mode 100644 index 0000000000..42bbb7cb1b --- /dev/null +++ b/build/ltlib.mk @@ -0,0 +1,31 @@ +# Copyright (c) 1999, 2000 Sascha Schumann. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY SASCHA SCHUMANN ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL SASCHA SCHUMANN BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +############################################################################## +# $Id: ltlib.mk,v 1.1 2000/01/11 13:10:58 sascha Exp $ +# + +targets = $(LTLIBRARY_NAME) + +include $(topsrcdir)/build/rules.mk +include $(topsrcdir)/build/library.mk + diff --git a/build/mkdep.perl b/build/mkdep.perl new file mode 100644 index 0000000000..f9e06ea041 --- /dev/null +++ b/build/mkdep.perl @@ -0,0 +1,91 @@ +#!/usr/bin/perl +# +# $Id: mkdep.perl,v 1.1 2000/01/11 13:10:59 sascha Exp $ +# +# Created: Thu Aug 15 11:57:33 1996 too +# Last modified: Mon Dec 27 09:23:56 1999 too +# +# Copyright (c) 1996-1999 Tomi Ollila. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +die "Usage: mkdep CPP-command [CPP options] file1 [file2...]\n" + if ($#ARGV < 1); + +$cmdl = shift(@ARGV); + +$cmdl = "$cmdl " . shift (@ARGV) while ($ARGV[0] =~ /^-[A-Z]/); + +while ($file = shift(@ARGV)) +{ + $file =~ s/\.o$/.c/; + + open(F, "$cmdl $file|"); + + &parseout; + + close(F); +} + + +sub initinit +{ + %used = (); + $of = $file; + $of =~ s/\.c$/.lo/; + $str = "$of:\t$file"; + $len = length $str; +} + +sub initstr +{ + $str = "\t"; + $len = length $str; +} + +sub parseout +{ + &initinit; + while () + { + next unless (/^# [0-9]* "(.*\.h)"/); + + next if ($1 =~ /^\//); + + next if $used{$1}; + + $used{$1} = 1; + + $nlen = length($1) + 1; + + if ($len + $nlen > 72) + { + print $str, "\\\n"; + &initstr; + $str = $str . $1; + } + else { $str = $str . " " . $1; } + + $len += $nlen; + + } + print $str, "\n"; +} diff --git a/build/program.mk b/build/program.mk new file mode 100644 index 0000000000..bb52d8832c --- /dev/null +++ b/build/program.mk @@ -0,0 +1,30 @@ +# Copyright (c) 1999, 2000 Sascha Schumann. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY SASCHA SCHUMANN ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL SASCHA SCHUMANN BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +############################################################################## +# $Id: program.mk,v 1.1 2000/01/11 13:10:59 sascha Exp $ +# + +PROGRAM_OBJECTS = $(PROGRAM_SOURCES:.c=.lo) + +$(PROGRAM_NAME): $(PROGRAM_DEPENDENCIES) $(PROGRAM_OBJECTS) + $(LINK) $(PROGRAM_LDFLAGS) $(PROGRAM_OBJECTS) $(PROGRAM_LDADD) diff --git a/build/rules.mk b/build/rules.mk new file mode 100644 index 0000000000..e0289eb58f --- /dev/null +++ b/build/rules.mk @@ -0,0 +1,132 @@ +# Copyright (c) 1999, 2000 Sascha Schumann. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY SASCHA SCHUMANN ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL SASCHA SCHUMANN BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +############################################################################## +# $Id: rules.mk,v 1.1 2000/01/11 13:10:59 sascha Exp $ +# + +include $(DEPTH)/config_vars.mk + + +SHLIB_SUFFIX = so +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(EXTRA_INCLUDES) $(CPPFLAGS) $(CFLAGS) $(EXTRA_CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(EXTRA_INCLUDES) $(CPPFLAGS) $(CFLAGS) $(EXTRA_CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(CFLAGS) $(EXTRA_CFLAGS) $(LDFLAGS) -o $@ +mkinstalldirs = $(abs_srcdir)/helpers/mkdir.sh +INSTALL = $(abs_srcdir)/helpers/install.sh -c +INSTALL_DATA = $(INSTALL) -m 644 +INSTALL_PROGRAM = $(INSTALL) -m 755 +SHLIBTOOL = $(SHELL) $(DEPTH)/shlibtool --silent +APACHE_COMPILE = $(COMPILE) -c $< && touch $@ +APACHE_SH_COMPILE = $(SHLIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(EXTRA_INCLUDES) $(CPPFLAGS) $(CFLAGS) $(EXTRA_CFLAGS) -c $< && touch $@ +SHLINK = $(SHLIBTOOL) --mode=link $(CCLD) $(CFLAGS) $(EXTRA_CFLAGS) $(LDFLAGS) -o $@ + +DEFS = -DHAVE_CONFIG_H -I. -I$(srcdir) -I$(DEPTH) + +top_srcdir = $(topsrcdir) +top_builddir = $(DEPTH) + +.SUFFIXES: +.SUFFIXES: .S .c .lo .o .s .y .l .slo + +.c.o: + $(COMPILE) -c $< + +.s.o: + $(COMPILE) -c $< + +.S.o: + $(COMPILE) -c $< + +.c.lo: + $(APACHE_COMPILE) + +.s.lo: + $(APACHE_COMPILE) + +.S.lo: + $(APACHE_COMPILE) + +.c.slo: + $(APACHE_SH_COMPILE) + +.y.c: + $(YACC) $(YFLAGS) $< && mv y.tab.c $*.c + if test -f y.tab.h; then \ + if cmp -s y.tab.h $*.h; then rm -f y.tab.h; else mv y.tab.h $*.h; fi; \ + else :; fi + +.l.c: + $(LEX) $(LFLAGS) $< && mv $(LEX_OUTPUT_ROOT).c $@ + + +all: all-recursive +install: install-recursive + +distclean-recursive depend-recursive clean-recursive all-recursive install-recursive: + @otarget=`echo $@|sed s/-recursive//`; \ + if test '$(NO_RECURSION)' != "$$otarget"; then \ + list='$(SUBDIRS)'; for i in $$list; do \ + target="$$otarget"; \ + echo "Making $$target in $$i"; \ + if test "$$i" = "."; then \ + ok=yes; \ + target="$$target-p"; \ + fi; \ + if test ! -f $$i/.deps; then touch $$i/.deps; fi; \ + (cd $$i && $(MAKE) $$target) || exit 1; \ + done; \ + if test "$$otarget" = "all" && test -z '$(targets)'; then ok=yes; fi;\ + if test "$$ok" != "yes"; then $(MAKE) "$$otarget-p" || exit 1; fi;\ + fi + +all-p: $(targets) +install-p: $(targets) $(install_targets) + @if test -n '$(PROGRAMS)'; then \ + test -d $(bindir) || $(mkinstalldirs) $(bindir); \ + for i in "$(PROGRAMS)"; do \ + $(INSTALL_PROGRAM) $$i $(bindir); \ + done; \ + fi + +distclean-p depend-p clean-p: + +depend: depend-recursive + test "`echo *.c`" = '*.c' || perl $(top_srcdir)/build/mkdep.perl $(CPP) $(INCLUDES) $(EXTRA_INCLUDES) *.c > .deps + +clean: clean-recursive clean-x + +clean-x: + rm -f $(targets) *.lo *.la *.o $(CLEANFILES) + rm -rf .libs + +distclean: distclean-recursive clean-x + rm -f config.cache config.log config.status config_vars.mk libtool \ + stamp-h Makefile shlibtool + +include $(srcdir)/.deps + +.PHONY: all-recursive clean-recursive install-recursive \ +$(install_targets) install all clean depend depend-recursive shared \ +distclean-recursive distclean clean-x all-p install-p distclean-p \ +depend-p clean-p $(phony_targets) diff --git a/build/snapshot b/build/snapshot new file mode 100755 index 0000000000..9553a753f9 --- /dev/null +++ b/build/snapshot @@ -0,0 +1,5 @@ +#! /bin/sh + +test -n "$1" && ARG="DISTNAME='$1'" + +${MAKE:-make} $ARG -f build/build.mk snapshot diff --git a/build/special.mk b/build/special.mk new file mode 100644 index 0000000000..0068836ff3 --- /dev/null +++ b/build/special.mk @@ -0,0 +1,45 @@ +# Copyright (c) 1999, 2000 Sascha Schumann. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY SASCHA SCHUMANN ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL SASCHA SCHUMANN BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +############################################################################## +# $Id: special.mk,v 1.1 2000/01/11 13:10:59 sascha Exp $ +# + + + +all: all-recursive + +include modules.mk +targets = $(static) $(shared) +install_targets = install-modules + +install-modules: + @shared='$(shared)'; \ + if test -n "$$shared"; then \ + $(mkinstalldirs) $(libexecdir); \ + for i in $$shared; do \ + $(SHLIBTOOL) --mode=install cp $$i $(libexecdir); \ + done; \ + fi + +include $(topsrcdir)/build/rules.mk + diff --git a/buildconf b/buildconf index fb76f6c6ff..273eabd9e8 100755 --- a/buildconf +++ b/buildconf @@ -1,127 +1,3 @@ -#!/bin/sh - -# TODO - Steal the new PHP buildconf and build.mk. -# This will do for now, though - -supplied_flag=$1 - -# do some version checking for the tools we use -if test "$1" = "--force"; then - shift -# this is a posix correct "test -nt" -elif test "`ls -t buildconf buildconf.stamp 2>/dev/null |head -1`" != "buildconf"; then - : -else - echo "buildconf: checking installation..." - - # autoconf will check for the version itself - # automake 1.4 or newer - am_version=`automake --version 2>/dev/null|head -1|sed -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'` - if test "$am_version" = ""; then - echo "buildconf: automake not found." - echo " You need automake version 1.4 or newer installed" - echo " to build APACHE from CVS." - exit 1 - fi - old_IFS="$IFS" - IFS=.; set $am_version; IFS="$old_IFS" - if test "$1" = "1" -a "$2" -lt "4" || test "$1" -lt "1"; then - echo "buildconf: automake version $am_version found." - echo " You need automake version 1.4 or newer installed" - echo " to build APACHE from CVS." - exit 1 - else - echo "buildconf: automake version $am_version (ok)" - fi - - # libtool 1.3.3 or newer - lt_pversion=`libtool --version 2>/dev/null|sed -e 's/^[^0-9]*//' -e 's/[- ].*//'` - if test "$lt_pversion" = ""; then - echo "buildconf: libtool not found." - echo " You need libtool version 1.3 or newer installed" - echo " to build APACHE from CVS." - exit 1 - fi - lt_version=`echo $lt_pversion|sed -e 's/\([a-z]*\)$/.\1/'` - IFS=.; set $lt_version; IFS="$old_IFS" - if test "$1" -gt "1" || test "$2" -gt "3" || test "$2" = "3" -a "$3" -ge "3" - then - echo "buildconf: libtool version $lt_pversion (ok)" - else - echo "buildconf: libtool version $lt_pversion found." - echo " You need libtool version 1.3.3 or newer installed" - echo " to build APACHE from CVS." - exit 1 - fi - touch buildconf.stamp -fi - -am_prefix=`which automake | sed -e 's#/[^/]*/[^/]*$##'` -lt_prefix=`which libtool | sed -e 's#/[^/]*/[^/]*$##'` -if test "$am_prefix" != "$lt_prefix"; then - echo "buildconf: WARNING: automake and libtool are installed in different" - echo " directories. This may cause aclocal to fail." - echo "buildconf: continuing anyway" -fi - -if test "$supplied_flag" = "--copy"; then - automake_flags=--copy -fi - -mv aclocal.m4 aclocal.m4.old 2>/dev/null -aclocal -if test "$?" != "0" -a "$am_prefix" != "$lt_prefix"; then - echo "buildconf: ERROR: aclocal failed, probably because automake and" - echo " libtool are installed with different prefixes;" - echo " automake is installed in $am_prefix, but libtool in $lt_prefix." - echo " Please re-install automake and/or libtool with a common prefix" - echo " and try again." - exit 1 -fi - -if cmp aclocal.m4.old aclocal.m4 > /dev/null 2>&1; then - echo "buildconf: keeping aclocal.m4" - mv aclocal.m4.old aclocal.m4 -else - echo "buildconf: created or modified aclocal.m4" -fi - -autoheader - -# find all Makefile.ams -files="Makefile `find ap lib main modules regex os -name Makefile.am | sed 's#\.am$##'`" - -# suppress stupid automake warning -automake --add-missing $automake_flags $files 2>&1 | grep -v \$APACHE_OUTPUT_FILES >&2 - - -mv configure configure.old 2>/dev/null -autoconf -if cmp configure.old configure > /dev/null 2>&1; then - echo "buildconf: keeping configure" - mv configure.old configure -else - echo "buildconf: created or modified configure" -fi - -# Now do APR... - -echo "buildconf: setting up APR" - -cd lib/apr - -mv configure configure.old 2>/dev/null -autoheader -autoconf -if cmp configure.old configure > /dev/null 2>&1; then - echo "buildconf: keeping configure" - mv configure.old configure -else - echo "buildconf: created or modified configure" -fi - -cd ../.. - -# Remove cached config data -rm -f config.cache +#! /bin/sh +${MAKE:-make} -f build/build.mk diff --git a/configure.in b/configure.in index 3fa600b992..8a36169ce5 100644 --- a/configure.in +++ b/configure.in @@ -1,19 +1,24 @@ dnl ## Process this file with autoconf to produce a configure script AC_PREREQ(2.13) -AC_INIT(main/http_main.c) +AC_INIT(acinclude.m4) dnl ## This is the central place where Apache's version should be kept. -AM_INIT_AUTOMAKE(apache, 2.0-dev) +dnl AM_INIT_AUTOMAKE(apache, 2.0-dev) -AM_CONFIG_HEADER(include/ap_config_auto.h) +VERSION="apache-2.0-dev" + +AC_CONFIG_HEADER(include/ap_config_auto.h) APACHE_VERSION=$VERSION -AC_SUBST(APACHE_VERSION) +APACHE_SUBST(APACHE_VERSION) + +test "$exec_prefix" = "NONE" && exec_prefix='${prefix}' +test "$prefix" = "NONE" && prefix='/usr/local' dnl XXX - make will sometimes die as annoyingly as automake with this option. dnl just remake and continue -AM_MAINTAINER_MODE +dnl AM_MAINTAINER_MODE dnl We want this one before the checks, so the checks can modify CFLAGS test -z "$CFLAGS" && auto_cflags=1 @@ -99,9 +104,11 @@ APACHE_INADDR_NONE case "`uname -sr`" in "SunOS 5"*) - CFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS";; + REENTRANCY_FLAGS="$REENTRANCY_FLAGS -D_POSIX_PTHREAD_SEMANTICS";; esac +REENTRANCY_FLAGS="$REENTRANCY_FLAGS -D_REENTRANT" + AC_FUNC_SELECT_ARGTYPES dnl Check if we'll actually need to cast select args all the time @@ -113,29 +120,51 @@ if test "$ac_cv_func_select_arg1" != "int" \ [Define if arguments to select() aren't what we expect]) fi -AM_DISABLE_SHARED -AM_PROG_LIBTOOL - dnl ## Checking command-line options test -n "$GCC" && test "$USE_MAINTAINER_MODE" = "yes" && \ CFLAGS="$CFLAGS -g -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations" +APACHE_ENABLE_LAYOUT +APACHE_ENABLE_MODULES +APACHE_ENABLE_SHARED + INCLUDES="-I\$(top_srcdir)/include -I\$(top_srcdir)/lib/apr/include" -AC_SUBST(INCLUDES) +APACHE_SUBST(INCLUDES) dnl reading config stubs esyscmd(./helpers/config-stubs .) INCLUDES="$INCLUDES -I\$(top_srcdir)/\$(OS_DIR)" -AC_SUBST(EXTRA_LIBS) -AC_SUBST(REGEX_DIR) -AC_SUBST(REGEX_LIB) -AC_SUBST(MPM_LIB) -AC_SUBST(OS) -AC_SUBST(OS_DIR) +EXTRA_LIBS="$EXTRA_LIBS $LIBS" +EXTRA_LDFLAGS="$LDFLAGS" +LIBS="" +LDFLAGS="" +APACHE_SUBST(EXTRA_LDFLAGS) +APACHE_SUBST(EXTRA_LIBS) +APACHE_SUBST(REGEX_DIR) +APACHE_SUBST(REGEX_LIB) +APACHE_SUBST(MPM_LIB) +APACHE_SUBST(OS) +APACHE_SUBST(OS_DIR) +APACHE_SUBST(BUILTIN_LIBS) +AM_DISABLE_SHARED +AM_PROG_LIBTOOL +APACHE_LIBTOOL_SILENT + +if test "$apache_need_shared" = "yes"; then + $SHELL $srcdir/ltconfig --output=shlibtool --disable-static --srcdir=$srcdir --cache-file=./config.cache $srcdir/ltmain.sh +fi + +CPPFLAGS="$CPPFLAGS $REENTRANCY_FLAGS" +APACHE_FAST_OUTPUT(Makefile ap/Makefile lib/Makefile main/Makefile + modules/Makefile os/Makefile) +APACHE_FAST_GENERATE + dnl ## Build modules.c rm -f $srcdir/modules.c echo $MODLIST | $AWK -f $srcdir/helpers/build-modules-c.awk > $srcdir/modules.c -AC_OUTPUT([Makefile ap/Makefile lib/Makefile main/Makefile modules/Makefile - modules/standard/Makefile os/Makefile $APACHE_OUTPUT_FILES]) + +APACHE_PASSTHRU(REENTRANCY_FLAGS) + +AC_OUTPUT($APACHE_OUTPUT_FILES) diff --git a/modules/Makefile.in b/modules/Makefile.in new file mode 100644 index 0000000000..da8a82274b --- /dev/null +++ b/modules/Makefile.in @@ -0,0 +1,10 @@ + +DEPTH = .. +topsrcdir = @topsrcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +SUBDIRS = mpm $(MODULE_DIRS) + +include $(topsrcdir)/build/rules.mk + diff --git a/modules/aaa/Makefile.in b/modules/aaa/Makefile.in new file mode 100644 index 0000000000..ccd3c19755 --- /dev/null +++ b/modules/aaa/Makefile.in @@ -0,0 +1,8 @@ + +DEPTH = ../.. +topsrcdir = @topsrcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +include $(topsrcdir)/build/special.mk + diff --git a/modules/aaa/config.m4 b/modules/aaa/config.m4 index edbb926e27..1e8eba9f59 100644 --- a/modules/aaa/config.m4 +++ b/modules/aaa/config.m4 @@ -1,27 +1,18 @@ dnl modules enabled in this directory by default -STANDARD_LIBS="" -AC_DEFUN(STANDARD_MODULE,[ - APACHE_MODULE($1) - STANDARD_LIBS="$STANDARD_LIBS libapachemod_$1.la" -]) - dnl AC_DEFUN(modulename, modulestructname, defaultonoroff, configmacros) dnl XXX - Need to add help text to --enable-module flags dnl XXX - Need to allow --enable-module to fail if optional config fails + AC_DEFUN(APACHE_CHECK_STANDARD_MODULE, [ - AC_MSG_CHECKING([whether to enable mod_$1]) - AC_ARG_ENABLE(patsubst([$1], _, -), [ --enable-]patsubst([$1], _, -), [], - [enable_$1=]ifelse([$3], , no, [$3])) - AC_MSG_RESULT([$enable_$1]) - if test "$enable_[$1]" != "no" ; then - ifelse([$4], , :, [$4]) - MODLIST="$MODLIST ifelse([$2], , [$1], [$2])" - STANDARD_MODULE([$1]) - fi + APACHE_MODULE($1,,,$2,$3,$4) ]) -APACHE_CHECK_STANDARD_MODULE(vhost_alias, , no) +APACHE_MODPATH_INIT(standard) + +APACHE_MODULE(vhost_alias,blabla) + +dnl APACHE_CHECK_STANDARD_MODULE(vhost_alias, , no) APACHE_CHECK_STANDARD_MODULE(env, , yes) APACHE_CHECK_STANDARD_MODULE(log_config, config_log, yes) APACHE_CHECK_STANDARD_MODULE(mime_magic, , no) @@ -59,4 +50,6 @@ APACHE_CHECK_STANDARD_MODULE(so, , no) APACHE_CHECK_STANDARD_MODULE(setenvif, , yes) APACHE_CHECK_STANDARD_MODULE(echo, , yes) -AC_SUBST(STANDARD_LIBS) +APACHE_MODPATH_FINISH + +APACHE_SUBST(STANDARD_LIBS) diff --git a/os/Makefile.in b/os/Makefile.in new file mode 100644 index 0000000000..0e62c951ce --- /dev/null +++ b/os/Makefile.in @@ -0,0 +1,9 @@ + +DEPTH = .. +topsrcdir = @topsrcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +SUBDIRS = $(OS) + +include $(topsrcdir)/build/rules.mk diff --git a/os/config.m4 b/os/config.m4 index 750f9b0183..eb160d1948 100644 --- a/os/config.m4 +++ b/os/config.m4 @@ -5,4 +5,4 @@ OS=unix OS_DIR=os/$OS AC_MSG_RESULT([$OS]) -APACHE_OUTPUT(os/$OS/Makefile) +APACHE_FAST_OUTPUT(os/$OS/Makefile) diff --git a/os/unix/Makefile.in b/os/unix/Makefile.in new file mode 100644 index 0000000000..82b2dfc8ca --- /dev/null +++ b/os/unix/Makefile.in @@ -0,0 +1,10 @@ + +DEPTH = ../.. +topsrcdir = @topsrcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +LTLIBRARY_NAME = libos.la +LTLIBRARY_SOURCES = os.c os-inline.c unixd.c iol_socket.c + +include $(topsrcdir)/build/ltlib.mk diff --git a/server/Makefile.in b/server/Makefile.in new file mode 100644 index 0000000000..86facf2fdd --- /dev/null +++ b/server/Makefile.in @@ -0,0 +1,32 @@ + +DEPTH = .. +topsrcdir = @topsrcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +LTLIBRARY_NAME = libmain.la +LTLIBRARY_SOURCES = \ + uri_delims.h test_char.h \ + buff.c http_config.c http_core.c http_log.c http_main.c \ + http_protocol.c http_request.c http_vhost.c util.c util_date.c \ + util_script.c util_uri.c util_md5.c \ + rfc1413.c http_connection.c iol_file.c listen.c + +include $(topsrcdir)/build/ltlib.mk + +gen_uri_delims_OBJECTS = gen_uri_delims.lo +gen_uri_delims: $(gen_uri_delims_OBJECTS) + $(LINK) $(gen_uri_delims_OBJECTS) + +gen_test_char_OBJECTS = gen_test_char.lo +gen_test_char: $(gen_test_char_OBJECTS) + $(LINK) $(gen_test_char_OBJECTS) + +uri_delims.h: gen_uri_delims + ./gen_uri_delims > uri_delims.h + +test_char.h: gen_test_char + ./gen_test_char > test_char.h + +util_uri.c: uri_delims.h +util.c: test_char.h diff --git a/server/mpm/Makefile.in b/server/mpm/Makefile.in new file mode 100644 index 0000000000..7f678e86bf --- /dev/null +++ b/server/mpm/Makefile.in @@ -0,0 +1,9 @@ + +DEPTH = ../.. +topsrcdir = @topsrcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +SUBDIRS = $(MPM_NAME) + +include $(topsrcdir)/build/rules.mk diff --git a/server/mpm/config.m4 b/server/mpm/config.m4 index 734613daa5..e21c22c90e 100644 --- a/server/mpm/config.m4 +++ b/server/mpm/config.m4 @@ -1,37 +1,36 @@ AC_MSG_CHECKING(which MPM to use) AC_ARG_WITH(mpm, -[ --with-mpm=MPM Choose the process model, etc. for Apache to use.], -[ - if test "$withval" != "no" ; then - apache_cv_mpm=$withval - AC_MSG_RESULT($apache_cv_mpm) - else - apache_cv_mpm="mpmt_pthread" - AC_MSG_RESULT(No MPM specified. Using pthread) - fi +[ --with-mpm=MPM Choose the process model for Apache to use. + MPM={dexter,mpmt_beos,mpmt_pthread,prefork}],[ + APACHE_MPM=$withval ],[ - apache_cv_mpm="mpmt_pthread" - AC_MSG_RESULT(No MPM specified. Using pthread) + APACHE_MPM=mpmt_pthread ]) +AC_MSG_RESULT($APACHE_MPM) -AC_MSG_CHECKING([for which threading library to use]) -APACHE_CHECK_THREADS('' -pthread -D_REENTRANT, '' -lpthread -lc_r) -AC_MSG_RESULT("$threads_result") +apache_cv_mpm=$APACHE_MPM + +if test "$apache_cv_mpm" != "prefork"; then + APACHE_CHECK_THREADS + AC_MSG_CHECKING([for which threading library to use]) + AC_MSG_RESULT($threads_result) -AC_MSG_CHECKING([to ensure I can compile the selected MPM]) -if test "$apache_threads_working" = "no" && test "$apache_cv_mpm" != "prefork"; then -AC_MSG_RESULT([can't compile selected MPM because there are no threads, defaulting to prefork]) - apache_cv_mpm="prefork" -else -AC_MSG_RESULT([OK]) + if test "$apache_threads_working" = "no"; then + AC_MSG_RESULT(The currently selected MPM requires threads which your system seems to lack) + AC_MSG_CHECKING(checking for replacement) + AC_MSG_RESULT(prefork selected) + apache_cv_mpm=prefork + fi fi -APACHE_OUTPUT(modules/mpm/Makefile) +APACHE_CHECK_SHM_RW + +APACHE_FAST_OUTPUT(modules/mpm/Makefile) MPM_NAME=$apache_cv_mpm MPM_DIR=modules/mpm/$MPM_NAME MPM_LIB=$MPM_DIR/lib${MPM_NAME}.la -AC_SUBST(MPM_NAME) +APACHE_SUBST(MPM_NAME) MODLIST="$MODLIST mpm_${MPM_NAME}" dnl All the unix MPMs use shared memory; save a little duplication diff --git a/server/mpm/dexter/Makefile.in b/server/mpm/dexter/Makefile.in new file mode 100644 index 0000000000..573c30d9a0 --- /dev/null +++ b/server/mpm/dexter/Makefile.in @@ -0,0 +1,10 @@ + +DEPTH = ../../.. +topsrcdir = @topsrcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +LTLIBRARY_NAME = libdexter.la +LTLIBRARY_SOURCES = dexter.c scoreboard.c + +include $(topsrcdir)/build/ltlib.mk diff --git a/server/mpm/dexter/config.m4 b/server/mpm/dexter/config.m4 index 65a93b84d8..9c50938bb9 100644 --- a/server/mpm/dexter/config.m4 +++ b/server/mpm/dexter/config.m4 @@ -4,7 +4,7 @@ if test "$MPM_NAME" = "dexter" ; then ac_cv_enable_threads="yes" AC_CACHE_SAVE - APACHE_OUTPUT(modules/mpm/$MPM_NAME/Makefile) + APACHE_FAST_OUTPUT(modules/mpm/$MPM_NAME/Makefile) APACHE_MPM_PTHREAD APACHE_MPM_CHECK_SHMEM fi diff --git a/server/mpm/mpmt_pthread/Makefile.in b/server/mpm/mpmt_pthread/Makefile.in new file mode 100644 index 0000000000..0be6d53cd6 --- /dev/null +++ b/server/mpm/mpmt_pthread/Makefile.in @@ -0,0 +1,10 @@ + +DEPTH = ../../.. +topsrcdir = @topsrcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +LTLIBRARY_NAME = libmpmt_pthread.la +LTLIBRARY_SOURCES = mpmt_pthread.c scoreboard.c + +include $(topsrcdir)/build/ltlib.mk diff --git a/server/mpm/mpmt_pthread/config.m4 b/server/mpm/mpmt_pthread/config.m4 index 8bbf232ae1..e85d2570f3 100644 --- a/server/mpm/mpmt_pthread/config.m4 +++ b/server/mpm/mpmt_pthread/config.m4 @@ -4,7 +4,7 @@ if test "$MPM_NAME" = "mpmt_pthread" ; then ac_cv_enable_threads="yes" AC_CACHE_SAVE - APACHE_OUTPUT(modules/mpm/$MPM_NAME/Makefile) + APACHE_FAST_OUTPUT(modules/mpm/$MPM_NAME/Makefile) APACHE_MPM_PTHREAD APACHE_MPM_CHECK_SHMEM diff --git a/server/mpm/prefork/Makefile.in b/server/mpm/prefork/Makefile.in new file mode 100644 index 0000000000..5d086070f2 --- /dev/null +++ b/server/mpm/prefork/Makefile.in @@ -0,0 +1,10 @@ + +DEPTH = ../../.. +topsrcdir = @topsrcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +LTLIBRARY_NAME = libprefork.la +LTLIBRARY_SOURCES = prefork.c + +include $(topsrcdir)/build/ltlib.mk diff --git a/server/mpm/prefork/config.m4 b/server/mpm/prefork/config.m4 index b0aa248a0e..1fbf4fa8ab 100644 --- a/server/mpm/prefork/config.m4 +++ b/server/mpm/prefork/config.m4 @@ -3,7 +3,7 @@ dnl Turn off all threading functions in APR ac_cv_enable_threads="no" AC_CACHE_SAVE - APACHE_OUTPUT(modules/mpm/$MPM_NAME/Makefile) + APACHE_FAST_OUTPUT(modules/mpm/$MPM_NAME/Makefile) APACHE_MPM_CHECK_SHMEM diff --git a/server/mpm/prefork/prefork.c b/server/mpm/prefork/prefork.c index f14f1a9eda..2afe44b28e 100644 --- a/server/mpm/prefork/prefork.c +++ b/server/mpm/prefork/prefork.c @@ -105,17 +105,6 @@ #include #include #include - -/* some systems do not define SHM_[RW]; values are from Unix98 */ - -#ifndef SHM_R -#define SHM_R 0x400 -#endif - -#ifndef SHM_W -#define SHM_W 0x200 -#endif - #endif diff --git a/srclib/Makefile.in b/srclib/Makefile.in new file mode 100644 index 0000000000..5d725f2af1 --- /dev/null +++ b/srclib/Makefile.in @@ -0,0 +1,9 @@ + +DEPTH = .. +topsrcdir = @topsrcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +SUBDIRS = apr + +include $(topsrcdir)/build/rules.mk diff --git a/srclib/expat-lite/Makefile.in b/srclib/expat-lite/Makefile.in new file mode 100644 index 0000000000..1cecba2044 --- /dev/null +++ b/srclib/expat-lite/Makefile.in @@ -0,0 +1,33 @@ +# +# default definition of these two. dunno how to get it prepended when the +# Makefile is built, so we do it manually +# +CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) +INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) + +# If you know what your system's byte order is, define BYTE_ORDER: +# use -DBYTE_ORDER=12 for little-endian byte order; +# use -DBYTE_ORDER=21 for big-endian (network) byte order. +#CFLAGS=-O2 + +OBJS=xmltok.o xmlrole.o xmlparse.o hashtable.o + +all lib: libexpat.a + +libexpat.a: $(OBJS) + rm -f libexpat.a + ar cr libexpat.a $(OBJS) + $(RANLIB) libexpat.a + +clean: + rm -f $(OBJS) libexpat.a + +distclean: clean + -rm -f Makefile + +.SUFFIXES: .o + +.c.o: + $(CC) -c $(INCLUDES) $(CFLAGS) $< + +depend: