pcs 97/09/03 01:30:08
Modified: src Configure Makefile.tmpl src/main Makefile.tmpl src/os/unix Makefile.tmpl Log: Build sub-directories into libraries. Do not use object dependencies in src/Makefile. Make clean propagated to all sub-dirs. Revision Changes Path 1.145 +49 -18 apachen/src/Configure Index: Configure =================================================================== RCS file: /export/home/cvs/apachen/src/Configure,v retrieving revision 1.144 retrieving revision 1.145 diff -u -r1.144 -r1.145 --- Configure 1997/08/28 01:36:57 1.144 +++ Configure 1997/09/03 08:30:04 1.145 @@ -836,19 +836,46 @@ print "};"; \ }' -# Add the module targets to the Makefile +# figure out which module dir require use to autocreate a Makefile. +# for these dirs we must not list the object files from the AddModule +# lines individually since the auto-generated Makefile will create +# a library called libMODDIR.a for it (MODDIR is the module dir +# name). We create two variable here: +# +# AUTODIRS Space separated list of module directories, relative to +# src +# AUTOLIBS Space separated list of auto-generated library files + +for moddir in $MODDIRS +do + if [ -f modules/$moddir/Makefile.tmpl ] ; then + AUTODIRS="$AUTODIRS modules/$moddir" + AUTOLIBS="$AUTOLIBS modules/$moddir/lib$moddir.a" + fi +done -awk >>Makefile <$tmpfile '\ +# Add the module targets to the Makefile. Do not add inidividual object +# targets for auto-generated directories. +awk -v AUTODIRS="$AUTODIRS" >>Makefile <$tmpfile '\ + BEGIN { split ( AUTODIRS, tmp, / /); \ + for ( key in tmp ) { autodirs[tmp[key]] = 1; } } \ /^Module/ { modules[n++] = $3 } \ /^%Module/ { modules[n++] = $3 } \ - END { print "MODULES=\\"; \ + END { print "MODULES=\\"; \ for (i = 0; i < n; ++i) { \ - if (i < n-1) printf (" %s \\\n", modules[i]); \ - else printf (" %s\n", modules[i]); \ + split ( modules[i], pp, /\//); \ + dir = pp[1] "/" pp[2] ; \ + if ( dir in autodirs ) { continue; }\ + else printf (" %s\\\n", modules[i]); \ } \ - print "" \ }' +# Now add the auto-generated library targets +for lib in $AUTOLIBS; do + echo " $lib \\" >> Makefile +done +echo >> Makefile + #################################################################### # Continue building Makefile.config. # @@ -951,39 +978,43 @@ done ) >> modules/Makefile -for moddir in $MODDIRS ; do - if [ ! -f modules/$moddir/Makefile.tmpl ] ; then - continue - fi - echo "Creating Makefile in modules/$moddir" +for moddir in $AUTODIRS ; do + echo "Creating Makefile in $moddir" - cat Makefile.config > modules/$moddir/Makefile - awk >> modules/$moddir/Makefile < $tmpfile '\ + cat Makefile.config > $moddir/Makefile + basedir=`echo $moddir | sed 's|^[^/]*/||g'` + awk >> $moddir/Makefile < $tmpfile '\ BEGIN { printf "OBJS=" }\ - ($1 == "Module" && $3 ~ /^modules\/'$moddir'\//) { \ + ($1 == "Module" && $3 ~ /^modules\/'$basedir'\//) { \ split ($3, pp, "/"); \ printf "%s ", pp[3]; \ } \ END {printf "\n"}' - cat << 'EOF' >> modules/$moddir/Makefile + echo "LIB=lib$basedir.a" >> $moddir/Makefile + cat << 'EOF' >> $moddir/Makefile CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) LIBS=$(EXTRA_LIBS) $(LIBS1) INCLUDES=$(INCLUDES1) $(EXTRA_INCLUDES) LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) INCDIR=../../main -all: $(OBJS) +all: $(LIB) + +$(LIB): $(OBJS) + rm -f $@ + ar crv $@ $(OBJS) + $(RANLIB) $@ .c.o: $(CC) -c $(INCLUDES) $(CFLAGS) $(SPACER) $< clean: - rm -f $(OBJS) + rm -f $(OBJS) $(LIB) $(OBJS): Makefile EOF -cat >> modules/$moddir/Makefile < modules/$moddir/Makefile.tmpl +cat >> $moddir/Makefile < $moddir/Makefile.tmpl done 1.61 +16 -25 apachen/src/Makefile.tmpl Index: Makefile.tmpl =================================================================== RCS file: /export/home/cvs/apachen/src/Makefile.tmpl,v retrieving revision 1.60 retrieving revision 1.61 diff -u -r1.60 -r1.61 --- Makefile.tmpl 1997/08/25 02:19:49 1.60 +++ Makefile.tmpl 1997/09/03 08:30:04 1.61 @@ -9,20 +9,17 @@ LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) OBJS= \ - main/alloc.o main/http_main.o main/http_core.o \ - main/http_config.o main/http_request.o main/http_log.o \ - main/http_protocol.o main/rfc1413.o main/util.o \ - main/util_script.o main/buff.o main/md5c.o \ - main/util_md5.o main/explain.o main/http_bprintf.o \ - main/util_date.o main/util_snprintf.o main/fnmatch.o \ modules.o \ - $(OSOBJ) \ - $(MODULES) + $(MODULES) \ + $(OSDIR)/libos.a \ + main/libmain.a + +SUBDIRS=main $(OSDIR) modules .c.o: $(CC) -c $(INCLUDES) $(CFLAGS) $(SPACER) $< -all: @@Configuration@@ os-dir core-dir modules/last-built httpd +all: @@Configuration@@ httpd @@Configuration@@: Configuration.tmpl @echo "@@Configuration@@ older than Configuration.tmpl, or doesn't exist." @@ -31,36 +28,30 @@ @echo "If not, you will at least have to touch @@Configuration@@." @false -httpd: $(REGLIB) $(OBJS) +httpd: $(REGLIB) modules.o subdirs rm -f buildmark.c echo 'const char SERVER_BUILT[] = "'`/bin/date`'";' > buildmark.c $(CC) -c $(CFLAGS) buildmark.c $(CC) $(LDFLAGS) -o httpd buildmark.o $(OBJS) $(REGLIB) $(LIBS) -regex/libregex.a: - (cd regex; $(MAKE) lib CC='$(CC)' AUX_CFLAGS='$(CFLAGS)' RANLIB='$(RANLIB)') +subdirs: + for i in $(SUBDIRS); do \ + ( cd $$i; $(MAKE) CC='$(CC)' AUX_CFLAGS='$(CFLAGS)' RANLIB='$(RANLIB)') \ + done -modules/last-built: - (cd modules; \ - $(MAKE) CC='$(CC)' AUX_CFLAGS='$(CFLAGS)' RANLIB='$(RANLIB)') +$(REGLIB): + (cd regex; $(MAKE) lib CC='$(CC)' AUX_CFLAGS='$(CFLAGS)' RANLIB='$(RANLIB)') support: support-dir support-dir: cd support; $(MAKE) CC='$(CC)' AUX_CFLAGS='$(CFLAGS)' RANLIB='$(RANLIB)' -core-dir: - cd main; $(MAKE) CC='$(CC)' AUX_CFLAGS='$(CFLAGS)' RANLIB='$(RANLIB)' - -os-dir: - cd $(OSDIR); $(MAKE) CC='$(CC)' AUX_CFLAGS='$(CFLAGS)' RANLIB='$(RANLIB)' - clean: rm -f httpd *.o $(OBJS) - cd main; $(MAKE) clean - cd regex; $(MAKE) clean - cd modules; $(MAKE) clean - cd support; $(MAKE) clean + for i in $(SUBDIRS) regex; do \ + ( cd $$i; $(MAKE) $@ ) \ + done dist.tar: # Assure a semi-sensible configuration going out... 1.3 +9 -2 apachen/src/main/Makefile.tmpl Index: Makefile.tmpl =================================================================== RCS file: /export/home/cvs/apachen/src/main/Makefile.tmpl,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Makefile.tmpl 1997/08/13 09:28:46 1.2 +++ Makefile.tmpl 1997/09/03 08:30:06 1.3 @@ -16,10 +16,17 @@ .c.o: $(CC) -c $(INCLUDES) $(CFLAGS) $(SPACER) $< -all: $(OBJS) +LIB= libmain.a + +all: $(LIB) + +$(LIB): $(OBJS) + rm -f $@ + ar crv $@ $(OBJS) + $(RANLIB) $@ clean: - rm -f $(OBJS) + rm -f $(OBJS) $(LIB) # Work around broken compilers http_bprintf.o: http_bprintf.c 1.3 +10 -1 apachen/src/os/unix/Makefile.tmpl Index: Makefile.tmpl =================================================================== RCS file: /export/home/cvs/apachen/src/os/unix/Makefile.tmpl,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Makefile.tmpl 1997/08/23 22:25:26 1.2 +++ Makefile.tmpl 1997/09/03 08:30:07 1.3 @@ -6,13 +6,22 @@ OBJS= os.o -all: $(OBJS) +LIB= libos.a + +all: $(LIB) + +$(LIB): $(OBJS) + rm -f $@ + ar crv $@ $(OBJS) + $(RANLIB) $@ .c.o: $(CC) -c $(INCLUDES) $(CFLAGS) $(SPACER) $< clean: rm -f $(OBJS) + +$(OBJS): Makefile # DO NOT REMOVE os.o: os.c