Right then. So after a fair amount of discussion on IRC, this is hopefully
the solution to all the configuration issues people have been hitting.
The only issue now is that this code is distributed as part of the "data"
part of autoconf. The license for autoconf _appears_ to say that the "data"
section of autoconf (which is defined as stuff that gets put into configure
scripts) is under no restrictions and is freely available to use, modify 
and distribute - in other words, exempt from the GPL. The license is pasted below.
Huge thanks to Aaron and Justin for this. (Esp. to Justin for not taking out
a contract on my life).
Cheers,
-Thom

Upstream copyright notice:
----------------------------------------------------------------------
Copyright (C) 1992, 1993, 1994, 1995, 1996 Free Software Foundation,
Inc.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
USA.     

As a special exception, the Free Software Foundation gives unlimited
permission to copy, distribute and modify the configure scripts that
are the output of Autoconf.  You need not follow the terms of the GNU
General Public License when using or distributing such scripts, even
though portions of the text of Autoconf appear in them.  The GNU
General Public License (GPL) does govern all other use of the material
that constitutes the Autoconf program.

Certain portions of the Autoconf source text are designed to be copied
(in certain cases, depending on the input) into the output of
Autoconf.  We call these the "data" portions.  The rest of the
Autoconf source text consists of comments plus executable code that
decides which of the data portions to output in any given case.  We
call these comments and executable code the "non-data" portions.
Autoconf never copies any of the non-data portions into its output.

This special exception to the GPL applies to versions of Autoconf
released by the Free Software Foundation.  When you make and
distribute a modified version of Autoconf, you may extend this special
exception to the GPL to apply to your modified version as well,
*unless* your modified version has the potential to copy into its
output some of the text that was the non-data portion of the version
that you started with.  (In other words, unless your change moves or
copies text from the non-data portions to the data portions.)  If your
modification has such potential, you must delete any notice of this
special exception to the GPL from your modified version.
----------------------------------------------------------------------

-- 

Index: acinclude.m4
===================================================================
RCS file: /home/cvspublic/httpd-2.0/acinclude.m4,v
retrieving revision 1.113
diff -u -u -r1.113 acinclude.m4
--- acinclude.m4        28 Feb 2002 01:38:11 -0000      1.113
+++ acinclude.m4        1 Mar 2002 22:57:44 -0000
@@ -350,6 +350,24 @@
 ])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
+  LAYOUT="Apache"
+fi
+APACHE_LAYOUT($srcdir/config.layout, $LAYOUT)
+
+AC_MSG_CHECKING(for chosen layout)
+AC_MSG_RESULT($layout_name)
+])
+
+dnl
 dnl APACHE_ENABLE_MODULES
 dnl
 AC_DEFUN(APACHE_ENABLE_MODULES,[
@@ -497,3 +515,124 @@
 fi
 ])
 
+dnl
+dnl APACHE_PARSE_ARGUMENTS
+dnl a reimplementation of autoconf's argument parser,
+dnl used here to allow us to co-exist layouts and argument based
+dnl set ups.
+AC_DEFUN(APACHE_PARSE_ARGUMENTS,[
+ac_prev=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval "$ac_prev=\$ac_option"
+    ac_prev=
+    continue
+  fi
+
+  ac_optarg=`expr "x$ac_option" : 'x[[^=]]*=\(.*\)'`
+
+  case $ac_option in
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+  | --da=*)
+    datadir=$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst \
+  | --locals | --local | --loca | --loc | --lo)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [[\\/$]]* | ?:[[\\/]]* | NONE | '' ) ;;
+    *)  AC_MSG_ERROR([expected an absolute path for --$ac_var: $ac_val]);;
+  esac
+done
+
+])dnl
Index: configure.in
===================================================================
RCS file: /home/cvspublic/httpd-2.0/configure.in,v
retrieving revision 1.205
diff -u -u -r1.205 configure.in
--- configure.in        28 Feb 2002 15:44:43 -0000      1.205
+++ configure.in        1 Mar 2002 22:57:50 -0000
@@ -24,17 +24,10 @@
 AC_PREFIX_DEFAULT(/usr/local/apache2)
 
 dnl Get the layout here, so we can pass the required variables to apr
-dnl APACHE_ENABLE_LAYOUT
-AC_MSG_CHECKING(for chosen layout)
-AC_ARG_ENABLE(layout,
-APACHE_HELP_STRING(--enable-layout=LAYOUT,Default file layout),[
-  LAYOUT=$enableval
-  APACHE_LAYOUT($srcdir/config.layout, $LAYOUT)
-  AC_MSG_RESULT($LAYOUT)
-], [
-  APACHE_LAYOUT_DEFAULTS
-  AC_MSG_RESULT([Autoconf Defaults])
-])
+APACHE_ENABLE_LAYOUT
+
+dnl reparse the configure arguments.
+APACHE_PARSE_ARGUMENTS
 
 dnl Save user-defined environment settings for later restoration
 dnl

Reply via email to