You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Wilfredo Sanchez <ws...@apple.com> on 1998/10/02 04:51:40 UTC

[PATCH] Build outside of source tree

  The following patch makes it possible to build Apache completely outside
of the source tree.  It extends the --shadow option to configure so that you
can specify where the shadow tree should be placed, and you can then
cd to that tree and type make.  For example:

[joliet-jake:Work/apache-1.3.2/apache] wsanchez% ./configure \
	--shadow=/tmp/apache/Build -enable-shared=max --enable-module=most
Configuring for Apache, Version 1.3.2
mkdir /tmp/apache/Build
 + creating Makefile (shadow wrapper)
 + create shadow tree (/tmp/apache/Build/src.powerpc-apple-rhapsody5.2)
    /tmp/apache/Build/src.powerpc-apple-rhapsody5.2/ap/Makefile.tmpl
    /tmp/apache/Build/src.powerpc-apple-rhapsody5.2/ap/ap.dsp
...
[joliet-jake:local/Work/apache-1.3.2] wsanchez% cd /tmp/apache/Build
[joliet-jake:/tmp/apache/Build] wsanchez% ls
Makefile                            config.status
Makefile.powerpc-apple-rhapsody5.2  src.powerpc-apple-rhapsody5.2
[joliet-jake:/tmp/apache/Build] wsanchez% make
===> /tmp/apache/Build/src.powerpc-apple-rhapsody5.2
...
<=== /tmp/apache/Build/src.powerpc-apple-rhapsody5.2

  I've tested this change on powerpc-apple-rhapsody5.2 and on
0025F7AE4C00-ibm-aix4.1.  (That's AIX on powerpc; no clue why uname
spews such a skanky string out, except that it's AIX).  Both built
without problems.

  The summary of the changes is:

	INSTALL:
	 - Document --shadow=DIR.

	Makefile.tmpl:
	 - Get rid of $(TOP).

	configure:
	 - Move creation of config.status to after the arguments
	   parsing, so we can put it in the specified shadow tree.
	 - Add --shadow=path option.
	   - Prepend some paths with "$shadow/".

	src/helpers/mkshadow.sh:
	 - delete './' at start of paths.

  This looks pretty huge, but the vast majority of the diffs are in
getting rid of $(TOP) and moving the config.status code down. It's
really not as drastic as it looks. Honest.

  The other makefile changes I have made for Rhapsody involve adding
more options for where to put things, since we don't install Apache
in the BSD hierarchy, and need some more flexibility.  Those were
tricky to extract from these diffs, and would be a pain to apply
separately (mostly due to losing $(TOP) in Makefile.tmpl), so I'll
wait until this gets sorted out, update my code to the result, and
give you the next batch of diffs based on that, which should be a
lot simpler.

	-Fred


Index: CoreOS/Services/apache/apache/INSTALL
diff -u CoreOS/Services/apache/apache/INSTALL:1.1.1.3 CoreOS/Services/apache/apache/INSTALL:1.1.1.3.2.1
--- CoreOS/Services/apache/apache/INSTALL:1.1.1.3	Thu Oct  1 16:00:11 1998
+++ CoreOS/Services/apache/apache/INSTALL	Thu Oct  1 19:48:20 1998
@@ -141,25 +141,25 @@
        [INCLUDES=...]  [LDFLAGS_SHLIB_EXPORT=...]
        [LDFLAGS=...]   [RANLIB=...]
        [LIBS=...]
-       ./configure [--quiet]   [--prefix=DIR]         [--enable-rule=NAME]
-                   [--verbose] [--exec-prefix=PREFIX] [--disable-rule=NAME]
-                   [--shadow]  [--bindir=EPREFIX]     [--add-module=FILE]
-                   [--help]    [--sbindir=DIR]        [--activate-module=FILE]
-                   [--layout]  [--libexecdir=DIR]     [--enable-module=NAME]
-                               [--mandir=DIR]         [--disable-module=NAME]
-                               [--sysconfdir=DIR]     [--enable-shared=NAME]
-                               [--datadir=DIR]        [--disable-shared=NAME]
-                               [--includedir=DIR]
-                               [--localstatedir=DIR]  [--enable-suexec]
-                               [--runtimedir=DIR]     [--suexec-caller=UID]
-                               [--logfiledir=DIR]     [--suexec-userdir=DIR]
-                               [--proxycachedir=DIR]  [--suexec-uidmin=UID]
-                               [--compat]             [--suexec-gidmin=GID]
-                                                      [--suexec-safepath=PATH]
-
-                                                      [--with-perl=FILE]
-                                                      [--without-support]
-                                                      [--without-confadjust]
+       ./configure [--quiet]         [--prefix=DIR]         [--enable-rule=NAME]
+                   [--verbose]       [--exec-prefix=PREFIX] [--disable-rule=NAME]
+                   [--shadow=[DIR]]  [--bindir=EPREFIX]     [--add-module=FILE]
+                   [--help]          [--sbindir=DIR]        [--activate-module=FILE]
+                   [--layout]        [--libexecdir=DIR]     [--enable-module=NAME]
+                                     [--mandir=DIR]         [--disable-module=NAME]
+                                     [--sysconfdir=DIR]     [--enable-shared=NAME]
+                                     [--datadir=DIR]        [--disable-shared=NAME]
+                                     [--includedir=DIR]
+                                     [--localstatedir=DIR]  [--enable-suexec]
+                                     [--runtimedir=DIR]     [--suexec-caller=UID]
+                                     [--logfiledir=DIR]     [--suexec-userdir=DIR]
+                                     [--proxycachedir=DIR]  [--suexec-uidmin=UID]
+                                     [--compat]             [--suexec-gidmin=GID]
+                                                            [--suexec-safepath=PATH]
+
+                                                            [--with-perl=FILE]
+                                                            [--without-support]
+                                                            [--without-confadjust]

      Use the CC, OPTIM, CFLAGS, INCLUDES, LDFLAGS, LIBS, CFLAGS_SHLIB,
      LD_SHLIB, LDFLAGS_SHLIB, LDFLAGS_SHLIB_EXPORT and RANLIB environment
@@ -380,7 +380,8 @@
      Use the --shadow option to let APACI create a shadow source tree of the
      sources for building. This is useful when you want to build for different
      platforms in parallel (usually through a NFS, AFS or DFS mounted
-     filesystem).
+     filesystem). You may specify a directory to --shadow into which the
+     shadow tree will be created.

      Use the --quiet option to disable all configuration verbose messages.

Index: CoreOS/Services/apache/apache/Makefile.tmpl
diff -u CoreOS/Services/apache/apache/Makefile.tmpl:1.1.1.3 CoreOS/Services/apache/apache/Makefile.tmpl:1.1.1.3.2.1
--- CoreOS/Services/apache/apache/Makefile.tmpl:1.1.1.3	Thu Oct  1 16:00:12 1998
+++ CoreOS/Services/apache/apache/Makefile.tmpl	Thu Oct  1 19:48:20 1998
@@ -80,8 +80,8 @@
 LN              = ln
 RM              = rm -f
 TAR             = tar
-MKDIR           = $(TOP)/$(AUX)/mkdir.sh
-INSTALL         = $(TOP)/$(AUX)/install.sh -c
+MKDIR           = $(AUX)/mkdir.sh
+INSTALL         = $(AUX)/install.sh -c
 INSTALL_PROGRAM = $(INSTALL) -s -m 755
 INSTALL_DSO     = $(INSTALL) -m 755
 INSTALL_SCRIPT  = $(INSTALL) -m 755
@@ -148,17 +148,17 @@
 build:
 	@echo "===> $(SRC)"
 	@$(MAKE) -f $(MKF) $(MFLAGS) $(MFWD) build-std $(build-support)
-	@touch $(TOP)/$(SRC)/.apaci.build.ok
+	@touch $(SRC)/.apaci.build.ok
 	@echo "<=== $(SRC)"

 #   build the standard stuff
 build-std:
-	@cd $(TOP)/$(SRC); $(MAKE) $(MFLAGS) SDP=$(SRC)/ all
+	@cd $(SRC); $(MAKE) $(MFLAGS) SDP=$(SRC)/ all

 #   build the additional support stuff
 build-support:
 	@echo "===> $(SRC)/support"; \
-	cd $(TOP)/$(SRC)/support; $(MAKE) $(MFLAGS) all; \
+	cd $(SRC)/support; $(MAKE) $(MFLAGS) all; \
 	if [ ".$(suexec)" = .1 ]; then \
 	    $(MAKE) $(MFLAGS) \
 		EXTRA_CFLAGS='\
@@ -182,8 +182,8 @@
 #   package. This is implemented by running subtargets for the
 #   separate parts of the installation process.
 install:
-	@if [ ! -f $(TOP)/$(SRC)/.apaci.build.ok ]; then \
-		$(MAKE) -f $(MKF) $(MFLAGS) $(MFWD) build; \
+	@if [ ! -f $(SRC)/.apaci.build.ok ]; then \
+	    $(MAKE) -f $(MKF) $(MFLAGS) $(MFWD) build; \
 	else \
 		:; \
 	fi
@@ -237,14 +237,14 @@
 #   shared object files.
 install-programs:
 	@echo "===> [programs: Installing Apache httpd program and shared objects]"
-	$(INSTALL_PROGRAM) $(TOP)/$(SRC)/httpd $(root)$(sbindir)/httpd
-	-@if [ ".`grep 'SUBTARGET=target_shared' $(TOP)/$(SRC)/Makefile`" != . ]; then \
-		SHLIB_SUFFIX_NAME="`grep '^SHLIB_SUFFIX_NAME=' $(TOP)/$(SRC)/Makefile | sed -e 's:^.*=::'`"; \
-		SHLIB_SUFFIX_LIST="`grep '^SHLIB_SUFFIX_LIST=' $(TOP)/$(SRC)/Makefile | sed -e 's:^.*=::'`"; \
-		echo "$(INSTALL_DSO) $(TOP)/$(SRC)/libhttpd.ep $(root)$(libexecdir)/libhttpd.ep"; \
-		$(INSTALL_DSO) $(TOP)/$(SRC)/libhttpd.ep $(root)$(libexecdir)/libhttpd.ep; \
-		echo "$(INSTALL_DSO) $(TOP)/$(SRC)/libhttpd.$${SHLIB_SUFFIX_NAME} $(root)$(libexecdir)/libhttpd.$${SHLIB_SUFFIX_NAME}"; \
-		$(INSTALL_DSO) $(TOP)/$(SRC)/libhttpd.$${SHLIB_SUFFIX_NAME} $(root)$(libexecdir)/libhttpd.$${SHLIB_SUFFIX_NAME}; \
+	$(INSTALL_PROGRAM) $(SRC)/httpd $(root)$(sbindir)/httpd
+	-@if [ ".`grep 'SUBTARGET=target_shared' $(SRC)/Makefile`" != . ]; then \
+		SHLIB_SUFFIX_NAME="`grep '^SHLIB_SUFFIX_NAME=' $(SRC)/Makefile | sed -e 's:^.*=::'`"; \
+		SHLIB_SUFFIX_LIST="`grep '^SHLIB_SUFFIX_LIST=' $(SRC)/Makefile | sed -e 's:^.*=::'`"; \
+		echo "$(INSTALL_DSO) $(SRC)/libhttpd.ep $(root)$(libexecdir)/libhttpd.ep"; \
+		$(INSTALL_DSO) $(SRC)/libhttpd.ep $(root)$(libexecdir)/libhttpd.ep; \
+		echo "$(INSTALL_DSO) $(SRC)/libhttpd.$${SHLIB_SUFFIX_NAME} $(root)$(libexecdir)/libhttpd.$${SHLIB_SUFFIX_NAME}"; \
+		$(INSTALL_DSO) $(SRC)/libhttpd.$${SHLIB_SUFFIX_NAME} $(root)$(libexecdir)/libhttpd.$${SHLIB_SUFFIX_NAME}; \
 		if [ ".$${SHLIB_SUFFIX_LIST}" != . ]; then \
 			echo "$(RM) $(libexecdir)/libhttpd.$${SHLIB_SUFFIX_NAME}.*"; \
 			$(RM) $(libexecdir)/libhttpd.$${SHLIB_SUFFIX_NAME}.*; \
@@ -255,15 +255,15 @@
 			done; \
 		fi; \
 	fi
-	$(INSTALL_DATA) $(TOP)/$(SRC)/support/httpd.8 $(root)$(mandir)/man8/httpd.8
+	$(INSTALL_DATA) $(SRC)/support/httpd.8 $(root)$(mandir)/man8/httpd.8
 	-@$(RM) $(SRC)/.apaci.install.conf; touch $(SRC)/.apaci.install.conf
-	-@if [ ".`grep '^[ 	]*SharedModule' $(TOP)/$(SRC)/Configuration.apaci`" != . ]; then \
-		for mod in `egrep '^[ 	]*SharedModule' $(TOP)/$(SRC)/Configuration.apaci |\
+	-@if [ ".`grep '^[ 	]*SharedModule' $(SRC)/Configuration.apaci`" != . ]; then \
+		for mod in `egrep '^[ 	]*SharedModule' $(SRC)/Configuration.apaci |\
 	                sed -e 's/^[ 	]*SharedModule[ 	]*//'`; do \
 			file=`echo $${mod} | sed -e 's;^.*/\([^/]*\);\1;'`; \
-			echo "$(INSTALL_DSO) $(TOP)/$(SRC)/$${mod} $(root)$(libexecdir)/$${file}"; \
-			$(INSTALL_DSO) $(TOP)/$(SRC)/$${mod} $(root)$(libexecdir)/$${file}; \
-			name=`$(TOP)/$(AUX)/fmn.sh $(TOP)/$(SRC)/$${mod}`; \
+			echo "$(INSTALL_DSO) $(SRC)/$${mod} $(root)$(libexecdir)/$${file}"; \
+			$(INSTALL_DSO) $(SRC)/$${mod} $(root)$(libexecdir)/$${file}; \
+			name=`$(AUX)/fmn.sh $(SRC)/$${mod}`; \
 			echo dummy | awk '{ printf("LoadModule %-18s %s\n", modname, modpath); }' \
 			modname="$${name}" modpath="$(libexecdir_relative)$${file}" >>$(SRC)/.apaci.install.conf; \
 		done; \
@@ -283,56 +283,56 @@
 #   install the support programs and scripts
 install-support:
 	@echo "===> [support: Installing Apache support programs and scripts]"
-	$(INSTALL_PROGRAM) $(TOP)/$(SRC)/support/ab $(root)$(sbindir)/ab
-	$(INSTALL_DATA) $(TOP)/$(SRC)/support/ab.1 $(root)$(mandir)/man1/ab.1
-	@echo "$(INSTALL_SCRIPT) $(TOP)/$(SRC)/support/apachectl[*] $(root)$(sbindir)/apachectl"; \
+	$(INSTALL_PROGRAM) $(SRC)/support/ab $(root)$(sbindir)/ab
+	$(INSTALL_DATA) $(SRC)/support/ab.1 $(root)$(mandir)/man1/ab.1
+	@echo "$(INSTALL_SCRIPT) $(SRC)/support/apachectl[*] $(root)$(sbindir)/apachectl"; \
 	sed -e 's;PIDFILE=.*;PIDFILE=$(runtimedir)/httpd.pid;' \
 		-e 's;HTTPD=.*;HTTPD=$(sbindir)/httpd;' \
-		< $(TOP)/$(SRC)/support/apachectl > $(TOP)/$(SRC)/.apaci.install.tmp && \
-		$(INSTALL_SCRIPT) $(TOP)/$(SRC)/.apaci.install.tmp $(root)$(sbindir)/apachectl
-	$(INSTALL_DATA) $(TOP)/$(SRC)/support/apachectl.1 $(root)$(mandir)/man1/apachectl.1
-	$(INSTALL_PROGRAM) $(TOP)/$(SRC)/support/htpasswd $(root)$(bindir)/htpasswd
-	$(INSTALL_DATA) $(TOP)/$(SRC)/support/htpasswd.1 $(root)$(mandir)/man1/htpasswd.1
-	$(INSTALL_PROGRAM) $(TOP)/$(SRC)/support/htdigest $(root)$(bindir)/htdigest
-	$(INSTALL_DATA) $(TOP)/$(SRC)/support/htdigest.1 $(root)$(mandir)/man1/htdigest.1
-	@echo "$(INSTALL_SCRIPT) $(TOP)/$(SRC)/support/dbmmanage[*] $(root)$(bindir)/dbmmanage"; \
+		< $(SRC)/support/apachectl > $(SRC)/.apaci.install.tmp && \
+		$(INSTALL_SCRIPT) $(SRC)/.apaci.install.tmp $(root)$(sbindir)/apachectl
+	$(INSTALL_DATA) $(SRC)/support/apachectl.1 $(root)$(mandir)/man1/apachectl.1
+	$(INSTALL_PROGRAM) $(SRC)/support/htpasswd $(root)$(bindir)/htpasswd
+	$(INSTALL_DATA) $(SRC)/support/htpasswd.1 $(root)$(mandir)/man1/htpasswd.1
+	$(INSTALL_PROGRAM) $(SRC)/support/htdigest $(root)$(bindir)/htdigest
+	$(INSTALL_DATA) $(SRC)/support/htdigest.1 $(root)$(mandir)/man1/htdigest.1
+	@echo "$(INSTALL_SCRIPT) $(SRC)/support/dbmmanage[*] $(root)$(bindir)/dbmmanage"; \
 	sed -e 's;^#!/.*;#!$(PERL);' \
-		< $(TOP)/$(SRC)/support/dbmmanage > $(TOP)/$(SRC)/.apaci.install.tmp && \
-		$(INSTALL_SCRIPT) $(TOP)/$(SRC)/.apaci.install.tmp $(root)$(bindir)/dbmmanage
-	$(INSTALL_DATA) $(TOP)/$(SRC)/support/dbmmanage.1 $(root)$(mandir)/man1/dbmmanage.1
-	$(INSTALL_PROGRAM) $(TOP)/$(SRC)/support/logresolve $(root)$(sbindir)/logresolve
-	$(INSTALL_DATA) $(TOP)/$(SRC)/support/logresolve.8 $(root)$(mandir)/man8/logresolve.8
-	$(INSTALL_PROGRAM) $(TOP)/$(SRC)/support/rotatelogs $(root)$(sbindir)/rotatelogs
-	$(INSTALL_DATA) $(TOP)/$(SRC)/support/rotatelogs.8 $(root)$(mandir)/man8/rotatelogs.8
-	@echo "$(INSTALL_SCRIPT) $(TOP)/$(SRC)/support/apxs[*] $(root)$(sbindir)/apxs"; \
+		< $(SRC)/support/dbmmanage > $(SRC)/.apaci.install.tmp && \
+		$(INSTALL_SCRIPT) $(SRC)/.apaci.install.tmp $(root)$(bindir)/dbmmanage
+	$(INSTALL_DATA) $(SRC)/support/dbmmanage.1 $(root)$(mandir)/man1/dbmmanage.1
+	$(INSTALL_PROGRAM) $(SRC)/support/logresolve $(root)$(sbindir)/logresolve
+	$(INSTALL_DATA) $(SRC)/support/logresolve.8 $(root)$(mandir)/man8/logresolve.8
+	$(INSTALL_PROGRAM) $(SRC)/support/rotatelogs $(root)$(sbindir)/rotatelogs
+	$(INSTALL_DATA) $(SRC)/support/rotatelogs.8 $(root)$(mandir)/man8/rotatelogs.8
+	@echo "$(INSTALL_SCRIPT) $(SRC)/support/apxs[*] $(root)$(sbindir)/apxs"; \
 	sed -e 's;^#!/.*;#!$(PERL);' \
 		-e 's;\@prefix\@;$(prefix);' \
 		-e 's;\@sbindir\@;$(sbindir);' \
 		-e 's;\@libexecdir\@;$(libexecdir);' \
 		-e 's;\@includedir\@;$(includedir);' \
 		-e 's;\@sysconfdir\@;$(sysconfdir);' \
-		< $(TOP)/$(SRC)/support/apxs > $(TOP)/$(SRC)/.apaci.install.tmp && \
-		$(INSTALL_SCRIPT) $(TOP)/$(SRC)/.apaci.install.tmp $(root)$(sbindir)/apxs
-	$(INSTALL_DATA) $(TOP)/$(SRC)/support/apxs.8 $(root)$(mandir)/man8/apxs.8
+		< $(SRC)/support/apxs > $(SRC)/.apaci.install.tmp && \
+		$(INSTALL_SCRIPT) $(SRC)/.apaci.install.tmp $(root)$(sbindir)/apxs
+	$(INSTALL_DATA) $(SRC)/support/apxs.8 $(root)$(mandir)/man8/apxs.8
 	-@if [ ".$(suexec)" = .1 ]; then \
-	    echo "$(INSTALL_PROGRAM) $(TOP)/$(SRC)/support/suexec $(root)$(sbindir)/suexec"; \
-	    $(INSTALL_PROGRAM) $(TOP)/$(SRC)/support/suexec $(root)$(sbindir)/suexec; \
+	    echo "$(INSTALL_PROGRAM) $(SRC)/support/suexec $(root)$(sbindir)/suexec"; \
+	    $(INSTALL_PROGRAM) $(SRC)/support/suexec $(root)$(sbindir)/suexec; \
 	    echo "chown root $(root)$(sbindir)/suexec"; \
 	    chown root $(root)$(sbindir)/suexec; \
 	    echo "chmod 4711 $(root)$(sbindir)/suexec"; \
 	    chmod 4711 $(root)$(sbindir)/suexec; \
-	    echo "$(INSTALL_DATA) $(TOP)/$(SRC)/support/suexec.8 $(root)$(mandir)/man8/suexec.8"; \
-	    $(INSTALL_DATA) $(TOP)/$(SRC)/support/suexec.8 $(root)$(mandir)/man8/suexec.8; \
+	    echo "$(INSTALL_DATA) $(SRC)/support/suexec.8 $(root)$(mandir)/man8/suexec.8"; \
+	    $(INSTALL_DATA) $(SRC)/support/suexec.8 $(root)$(mandir)/man8/suexec.8; \
 	fi
 	@echo "<=== [support]"

 #   install the Apache C header files
 install-include:
 	@echo "===> [include: Installing Apache C header files]"
-	$(CP) $(TOP)/$(SRC)/include/*.h $(root)$(includedir)/
-	@osdir=`grep '^OSDIR=' $(TOP)/$(SRC)/Makefile.config | sed -e 's:^OSDIR=.*/os:os:'`; \
-		echo "$(CP) $(TOP)/$(SRC)/$${osdir}/os.h $(root)$(includedir)/"; \
-		$(CP) $(TOP)/$(SRC)/$${osdir}/os.h $(root)$(includedir)/
+	$(CP) $(SRC)/include/*.h $(root)$(includedir)/
+	@osdir=`grep '^OSDIR=' $(SRC)/Makefile.config | sed -e 's:^OSDIR=.*/os:os:'`; \
+		echo "$(CP) $(SRC)/$${osdir}/os.h $(root)$(includedir)/"; \
+		$(CP) $(SRC)/$${osdir}/os.h $(root)$(includedir)/
 	chmod 644 $(root)$(includedir)/*.h
 	@echo "<=== [include]"

@@ -355,9 +355,9 @@
 		for script in printenv test-cgi; do \
 			cat $(TOP)/cgi-bin/$${script} |\
 			sed -e 's;^#!/.*perl;#!$(PERL);' \
-        		> $(TOP)/$(SRC)/.apaci.install.tmp; \
-			echo "$(INSTALL_DATA) $(TOP)/conf/$${script}[*] $(root)$(datadir)/cgi-bin/$${script}"; \
-			$(INSTALL_DATA) $(TOP)/$(SRC)/.apaci.install.tmp $(root)$(datadir)/cgi-bin/$${script}; \
+        		> $(SRC)/.apaci.install.tmp; \
+			echo "$(INSTALL_DATA) conf/$${script}[*] $(root)$(datadir)/cgi-bin/$${script}"; \
+			$(INSTALL_DATA) $(SRC)/.apaci.install.tmp $(root)$(datadir)/cgi-bin/$${script}; \
 		done; \
 	fi
 	@echo "Copying tree $(TOP)/icons/ -> $(root)$(datadir)/icons/"; \
@@ -377,7 +377,7 @@
 		 echo "##"; \
 		 echo ""; \
 		 cat $(TOP)/conf/$${conf}-dist ) |\
-		 sed -e '/# LoadModule/r $(TOP)/$(SRC)/.apaci.install.conf' \
+		 sed -e '/# LoadModule/r $(SRC)/.apaci.install.conf' \
 			-e 's;@@ServerRoot@@/htdocs;$(datadir)/htdocs;' \
 			-e 's;@@ServerRoot@@/icons;$(datadir)/icons;' \
 			-e 's;@@ServerRoot@@/cgi-bin;$(datadir)/cgi-bin;' \
@@ -396,12 +396,12 @@
 			-e 's;Port 80;Port $(conf_port);' \
 			-e 's;ServerAdmin you@your.address;ServerAdmin $(conf_serveradmin);' \
 			-e 's;ServerName new.host.name;ServerName $(conf_servername);' \
-        	> $(TOP)/$(SRC)/.apaci.install.tmp && \
-		echo "$(INSTALL_DATA) $(TOP)/conf/$${conf}-dist[*] $(root)$(sysconfdir)/$${conf}.default"; \
-		$(INSTALL_DATA) $(TOP)/$(SRC)/.apaci.install.tmp $(root)$(sysconfdir)/$${conf}.default; \
+        	> $(SRC)/.apaci.install.tmp && \
+		echo "$(INSTALL_DATA) conf/$${conf}-dist[*] $(root)$(sysconfdir)/$${conf}.default"; \
+		$(INSTALL_DATA) $(SRC)/.apaci.install.tmp $(root)$(sysconfdir)/$${conf}.default; \
 		if [ ! -f "$(root)$(sysconfdir)/$${conf}" ]; then \
-			echo "$(INSTALL_DATA) $(TOP)/conf/$${conf}-dist[*] $(root)$(sysconfdir)/$${conf}"; \
-			$(INSTALL_DATA) $(TOP)/$(SRC)/.apaci.install.tmp $(root)$(sysconfdir)/$${conf}; \
+			echo "$(INSTALL_DATA) conf/$${conf}-dist[*] $(root)$(sysconfdir)/$${conf}"; \
+			$(INSTALL_DATA) $(SRC)/.apaci.install.tmp $(root)$(sysconfdir)/$${conf}; \
 		else \
 			echo "[PRESERVING EXISTING CONFIG FILE: $(root)$(sysconfdir)/$${conf}]"; \
 		fi; \
@@ -429,20 +429,20 @@
 	@echo "===> $(SRC)"
 	@$(MAKE) -f $(MKF) $(MFLAGS) $(MFWD) clean-std $(clean-support)
 	@echo "<=== $(SRC)"
-	@$(RM) $(TOP)/$(SRC)/.apaci.build.ok
+	@$(RM) $(SRC)/.apaci.build.ok

 #   clean the standard stuff
 clean-std:
-	@cd $(TOP)/$(SRC); $(MAKE) $(MFLAGS) SDP=$(SRC)/ clean
+	@cd $(SRC); $(MAKE) $(MFLAGS) SDP=$(SRC)/ clean

 #   clean additional support stuff
 clean-support:
 	@echo "===> $(SRC)/support"; \
-	cd $(TOP)/$(SRC)/support; $(MAKE) $(MFLAGS) clean; \
-	if [ ".$(suexec)" = .1 ]; then \
-		echo "$(RM) suexec"; \
-		$(RM) suexec; \
-	fi; \
+	    cd $(SRC)/support; $(MAKE) $(MFLAGS) clean; \
+	    if [ ".$(suexec)" = .1 ]; then \
+	        echo "$(RM) suexec"; \
+	        $(RM) suexec; \
+	    fi; \
 	echo "<=== $(SRC)/support"

 #   cleanup the source tree by removing anything which was
@@ -467,11 +467,11 @@

 #   clean the standard stuff
 distclean-std:
-	@cd $(TOP)/$(SRC); $(MAKE) $(MFLAGS) SDP=$(SRC)/ distclean
+	@cd $(SRC); $(MAKE) $(MFLAGS) SDP=$(SRC)/ distclean

 distclean-support:
 	@echo "===> $(SRC)/support"; \
-	cd $(TOP)/$(SRC)/support; $(MAKE) $(MFLAGS) distclean; \
+	cd $(SRC)/support; $(MAKE) $(MFLAGS) distclean; \
 	if [ ".$(suexec)" = .1 ]; then \
 	    echo "$(RM) suexec"; \
 	    $(RM) suexec; \
@@ -481,7 +481,7 @@
 distclean-shadow:
 	$(RM) -r $(SRC)
 	$(RM) $(MKF)
-	-@if [ ".`ls $(TOP)/src.* 2>/dev/null`" = . ]; then \
+	-@if [ ".`ls src.* 2>/dev/null`" = . ]; then \
 		echo "$(RM) Makefile"; \
 		$(RM) Makefile; \
 	fi
Index: CoreOS/Services/apache/apache/configure
diff -u CoreOS/Services/apache/apache/configure:1.1.1.3 CoreOS/Services/apache/apache/configure:1.1.1.3.2.1
--- CoreOS/Services/apache/apache/configure:1.1.1.3	Thu Oct  1 16:00:13 1998
+++ CoreOS/Services/apache/apache/configure	Thu Oct  1 19:48:21 1998
@@ -266,45 +266,6 @@
 done
 IFS="$OIFS"

-#   create a config status script for restoring
-#   the configuration via a simple shell script
-if [ ".$help" = .no ]; then
-    rm -f $configstatus 2>/dev/null
-    echo "#!/bin/sh" >$configstatus
-    echo "##" >>$configstatus
-    echo "##  $configstatus -- APACI auto-generated configuration restore script" >>$configstatus
-    echo "##" >>$configstatus
-    echo "##  Use this shell script to re-run the APACI configure script for" >>$configstatus
-    echo "##  restoring your configuration. Additional parameters can be supplied." >>$configstatus
-    echo "##" >>$configstatus
-    echo "" >>$configstatus
-    for var in CC CPP OPTIM CFLAGS CFLAGS_SHLIB LDFLAGS LD_SHLIB LDFLAGS_SHLIB \
-               LDFLAGS_SHLIB_EXPORT LIBS INCLUDES RANLIB; do
-        eval "val=\"\$$var\""
-        if [ ".$val" != . ]; then
-            echo "$var=$val" |\
-            sed -e 's:\(["$\\]\):\\\1:g' \
-                -e 's:\([A-Z]*=\):\1":' \
-                -e 's:$:" \\:' >>$configstatus
-        fi
-    done
-    if [ $# -eq 0 ]; then
-        echo "./configure" >>$configstatus
-    else
-        echo $SEO "./configure \\" >>$configstatus
-        for arg
-        do
-            echo "$arg" |\
-            sed -e 's:\(["$\\]\):\\\1:g' \
-                -e 's:^:":' \
-                -e 's:$:" \\:' >>$configstatus
-        done
-    fi
-    echo '"$@"' >>$configstatus
-    echo '' >>$configstatus
-    chmod a+x $configstatus
-fi
-
 ##
 ##  parse argument line options
 ##
@@ -333,36 +294,52 @@
         --verbose | -v)
             verbose=yes
             ;;
-        --shadow)
+        --shadow*)
+	    case "$apc_option" in
+		--shadow)
+        	    shadow="."
+		    ;;
+		--shadow=*)
+	            shadow="$apc_optarg"
+		    if [ ! -d "$shadow" ]; then
+			$aux/mkdir.sh "$shadow"
+		    fi
+		    ;;
+	    esac
             #   determine GNU platform triple
             gnutriple=`$aux/GuessOS | sed -e 's:/:-:g' | $AWK '{ printf("%s",$1); }'`
             #   create Makefile wrapper (the first time only)
-            if [ ".`ls $top/src.* 2>/dev/null`" = . ]; then
+            if [ ".`ls src.* 2>/dev/null`" = . ]; then
                 if [ .$quiet = .no ]; then
                     echo " + creating Makefile (shadow wrapper)"
                 fi
-                echo "##" > Makefile
-                echo "##  Apache Makefile (shadow wrapper)" >> Makefile
-                echo "##" >> Makefile
-                echo "" >> Makefile
-                echo "GNUTRIPLE=\`$aux/GuessOS | sed -e 's:/:-:g' | $AWK '{ printf(\"%s\",\$\$1); }'\`" >> Makefile
-                echo "" >> Makefile
-                echo "all build install install-quiet clean distclean:" >> Makefile
-                echo "	@\$(MAKE) -f Makefile.\$(GNUTRIPLE) \$(MFLAGS) \$@" >> Makefile
-                echo "" >> Makefile
+                echo "##" > "$shadow/Makefile"
+                echo "##  Apache Makefile (shadow wrapper)" >> "$shadow/Makefile"
+                echo "##" >> "$shadow/Makefile"
+                echo "" >> "$shadow/Makefile"
+                echo "GNUTRIPLE=\``pwd`/$aux/GuessOS | sed -e 's:/:-:g' | $AWK '{ printf(\"%s\",\$\$1); }'\`" >> $shadow/Makefile
+                echo "" >> "$shadow/Makefile"
+                echo "all build install install-quiet clean distclean:" >> "$shadow/Makefile"
+                echo "	@\$(MAKE) -f Makefile.\$(GNUTRIPLE) \$(MFLAGS) \$@" >> "$shadow/Makefile"
+                echo "" >> "$shadow/Makefile"
+                echo "" >> "$shadow/Makefile"
             fi
             #   set shadow paths
-            shadowmkf="Makefile.$gnutriple"
-            shadowsrc="src.$gnutriple"
-            shadowaux="src.$gnutriple/helpers"
-            shadowsedsubst="src.$gnutriple/.apaci.sedsubst"
-            shadowaddconf="src.$gnutriple/.apaci.addconf"
+            shadowmkf="$shadow/Makefile.$gnutriple"
+            shadowsrc="$shadow/src.$gnutriple"
+            shadowaux="$shadowsrc/helpers"
+            shadowsedsubst="$shadowsrc/.apaci.sedsubst"
+            shadowaddconf="$shadowsrc/.apaci.addconf"
             #   (re)create shadow tree
             if [ .$quiet = .no ]; then
                 echo " + create shadow tree ($shadowsrc)"
             fi
             rm -rf $shadowsrc
-            $aux/mkshadow.sh $src $shadowsrc
+            if [ "$shadow" = "." ]; then
+                $aux/mkshadow.sh $src $shadowsrc
+            else
+                $aux/mkshadow.sh `pwd`/$src $shadowsrc
+            fi
             #   delegate us to the shadow paths
             mkf=$shadowmkf
             src=$shadowsrc
@@ -371,7 +348,6 @@
             rm -f $addconf 2>/dev/null
             addconf=$shadowaddconf
             rm -f $addconf 2>/dev/null
-            touch $addconf
             ;;
         --help | -h | -help )
             echo "Usage: configure [options]"
@@ -505,6 +481,7 @@
             if [ ".$file" != ".$src/modules/extra/$modfilec" ]; then
                 cp $file $src/modules/extra/$modfilec
             fi
+            if [ ! -f $addconf ]; then touch $addconf; fi
             echo "" >>$addconf
             echo "## On-the-fly added module" >>$addconf
             echo "## (configure --add-module=$file)" >>$addconf
@@ -531,6 +508,7 @@
                     ;;
             esac
             modfile=`echo $file | sed -e 's;^src/;;'`
+            if [ ! -f $addconf ]; then touch $addconf; fi
             echo "" >>$addconf
             echo "## On-the-fly activated module" >>$addconf
             echo "## (configure --activate-module=$file)" >>$addconf
@@ -732,6 +710,46 @@
 if [ ".$apc_prev" != . ]; then
     echo "configure:Error: missing argument to --`echo $apc_prev | sed 's/_/-/g'`" 1>&2
     exit 1
+fi
+touch $addconf
+
+#   create a config status script for restoring
+#   the configuration via a simple shell script
+if [ ".$help" = .no ]; then
+    rm -f $shadow/$configstatus 2>/dev/null
+    echo "#!/bin/sh" >$shadow/$configstatus
+    echo "##" >>$shadow/$configstatus
+    echo "##  $shadow/$configstatus -- APACI auto-generated configuration restore script" >>$shadow/$configstatus
+    echo "##" >>$shadow/$configstatus
+    echo "##  Use this shell script to re-run the APACI configure script for" >>$shadow/$configstatus
+    echo "##  restoring your configuration. Additional parameters can be supplied." >>$shadow/$configstatus
+    echo "##" >>$shadow/$configstatus
+    echo "" >>$shadow/$configstatus
+    for var in CC CPP OPTIM CFLAGS CFLAGS_SHLIB LDFLAGS LD_SHLIB LDFLAGS_SHLIB \
+               LDFLAGS_SHLIB_EXPORT LIBS INCLUDES RANLIB; do
+        eval "val=\"\$$var\""
+        if [ ".$val" != . ]; then
+            echo "$var=$val" |\
+            sed -e 's:\(["$\\]\):\\\1:g' \
+                -e 's:\([A-Z]*=\):\1":' \
+                -e 's:$:" \\:' >>$shadow/$configstatus
+        fi
+    done
+    if [ $# -eq 0 ]; then
+        echo "./configure" >>$shadow/$configstatus
+    else
+        echo $SEO "./configure \\" >>$shadow/$configstatus
+        for arg
+        do
+            echo "$arg" |\
+            sed -e 's:\(["$\\]\):\\\1:g' \
+                -e 's:^:":' \
+                -e 's:$:" \\:' >>$shadow/$configstatus
+        done
+    fi
+    echo '"$@"' >>$shadow/$configstatus
+    echo '' >>$shadow/$configstatus
+    chmod a+x $shadow/$configstatus
 fi

 ##
Index: CoreOS/Services/apache/apache/src/helpers/mkshadow.sh
diff -u CoreOS/Services/apache/apache/src/helpers/mkshadow.sh:1.1.1.2 CoreOS/Services/apache/apache/src/helpers/mkshadow.sh:1.1.1.2.2.1
--- CoreOS/Services/apache/apache/src/helpers/mkshadow.sh:1.1.1.2	Thu Oct  1 16:00:20 1998
+++ CoreOS/Services/apache/apache/src/helpers/mkshadow.sh	Thu Oct  1 19:48:22 1998
@@ -16,8 +16,8 @@
 '

 #   source and destination directory
-src=`echo $1 | sed -e 's:/$::'`
-dst=`echo $2 | sed -e 's:/$::'`
+src=`echo $1 | sed -e 's:/$::' | sed -e 's:^./::'`
+dst=`echo $2 | sed -e 's:/$::' | sed -e 's:^./::'`

 #   determine if source is an absolute path
 case $src in


Re: [PATCH] Build outside of source tree

Posted by Martin Kraemer <ma...@mch.sni.de>.
On Thu, Oct 01, 1998 at 07:51:40PM -0700, Wilfredo Sanchez wrote:
>   The following patch makes it possible to build Apache completely outside
> of the source tree.  It extends the --shadow option to configure so that you
> can specify where the shadow tree should be placed, and you can then
> cd to that tree and type make.  For example:

Hey, great! I love that! It finally will allow me to use one source tree
on an NFS volume for the various arch builds.
+1 (for concept, still untested by me)

    Martin