From 7d034b463c59ed34798b22055268f04155164a47 Mon Sep 17 00:00:00 2001 From: "David J. MacKenzie" Date: Mon, 19 Sep 1994 16:20:04 +0000 Subject: [PATCH] might work --- automake.in | 88 ++++++++++++++++++++++++++++++++++++++++++++ clean.am | 4 +- compile.am | 11 +++++- dist-subd.am | 4 +- dist.am | 20 ++++++---- header.am | 9 +++++ lib/am/clean.am | 4 +- lib/am/compile.am | 11 +++++- lib/am/header.am | 9 +++++ lib/am/library.am | 1 + lib/am/mans.am | 2 +- lib/am/program.am | 4 +- lib/am/remake-hdr.am | 11 +----- lib/am/subdirs.am | 4 +- lib/am/texinfos.am | 18 +++++++-- libraries.am | 2 +- library.am | 1 + mans.am | 2 +- program.am | 4 +- programs.am | 21 ++++++++--- remake-hdr.am | 11 +----- remake.am | 2 +- subdirs.am | 4 +- texinfos.am | 18 +++++++-- 24 files changed, 204 insertions(+), 61 deletions(-) diff --git a/automake.in b/automake.in index 02ac6cd0..19efa9ad 100755 --- a/automake.in +++ b/automake.in @@ -1,6 +1,15 @@ #!/bin/sh +# automake - create Makefile.in from Makefile.am +# Usage: automake Makefile lib/Makefile src/Makefile man/Makefile +# Written by David Mackenzie . + +if test $# -eq 0; then + echo "Usage: automake Makefile..." >&2 + exit 1 +fi status=0 +amdir=`echo $0|sed s%automake%%` for makefile do @@ -12,4 +21,83 @@ do exec 4> ${makefile}.in + cat $amdir/header.am >&4 + + cat ${makefile}.am >&4 + + CONFIG_HEADER= SUBDIRS= PROGRAMS= LIBRARIES= TEXINFOS= MANS= + + eval `sed -n ' +s/^[ ]*\([A-Z][A-Z0-9_]*\)=[ ]*\(.*\)/\1=\2/p' ${makefile}.am` + + case "$SUBDIRS" in + "") cat $amdir/clean.am >&4 ;; + *) cat $amdir/subdirs.am >&4 ;; + esac + + if test -n "$PROGRAMS" || test -n "$LIBRARIES"; then + cat $amdir/compile.am >&4 + for file in $PROGRAMS $LIBRARIES; do + sed -n "/^[ ]*${file}_SOURCES[ ]*=/{ +s/SOURCES/OBJECTS/ +s/\\.cc/.o/g +s/\\.\${kr}c/.o/g +s/\\.\$(kr)c/.o/g +s/\\.[cCmylfs]/.o/g +p +}" ${makefile}.am >&4 + if test -n "$CONFIG_HEADER"; then + echo "\$(${file}_OBJECTS): $CONFIG_HEADER" >&4 + fi + done + fi + + if test -n "$PROGRAMS"; then + cat $amdir/programs.am >&4 + for prog in $PROGRAMS; do + sed "s/@PROGRAM@/$prog/g" $amdir/program.am >&4 + done + fi + + if test -n "$LIBRARIES"; then + cat $amdir/libraries.am >&4 + for lib in $LIBRARIES; do + sed "s/@LIBRARY@/$lib/g" $amdir/library.am >&4 + done + fi + + if test -n "$TEXINFOS"; then + cat $amdir/texinfos.am >&4 + echo "$TEXINFOS" | sed 's/^/INFOS = /; s/\.texi/.info/g' >&4 + echo "$TEXINFOS" | sed 's/^/DVIS = /; s/\.texi/.dvi/g' >&4 + fi + + if test -n "$MANS"; then + cat $amdir/mans.am >&4 + fi + + case "$makefile" in + */*) cat $amdir/remake-subdir.am >&4 ;; + *) test -f aclocal.m4 && echo "ACLOCAL = aclocal.m4" >&4 + cat $amdir/remake.am >&4 ;; + esac + + case "$CONFIG_HEADER" in + "") ;; + */*) ;; # It's in some other directory, so don't remake it in this one. + *) + test -f acconfig.h && echo "ACCONFIG = acconfig.h" >&4 + test -f config.h.top && echo "CONFIG_TOP = config.h.top" >&4 + test -f config.h.bot && echo "CONFIG_BOT = config.h.bot" >&4 + cat $amdir/remake-hdr.am >&4 ;; + esac + + case "$makefile" in + */*) cat $amdir/dist-subdir.am >&4 ;; + *) cat $amdir/dist.am >&4 ;; + esac + + cat $amdir/footer.am >&4 done + +exit $status diff --git a/clean.am b/clean.am index cccd03e9..6eb3660f 100644 --- a/clean.am +++ b/clean.am @@ -1,8 +1,8 @@ mostlyclean: - rm -f *.o core + rm -f *.o *.krc *.krh core clean: mostlyclean - rm -f $(PROGRAMS) $(LIBRARIES) $(CLEANFILES) + rm -f $(PROGRAMS) $(LIBRARIES) $(TEXFILES) $(CLEANFILES) distclean: clean rm -f Makefile diff --git a/compile.am b/compile.am index 4c37a3c5..26595ec4 100644 --- a/compile.am +++ b/compile.am @@ -1,10 +1,17 @@ CC = @CC@ LEX = @LEX@ YACC = @YACC@ +ANSI2KNR = ./ansi2knr + DEFS = @DEFS@ CFLAGS = @CFLAGS@ -.SUFFIXES: -.SUFFIXES: .c .o +.SUFFIXES: .c .o .krc .krh .c.o: $(CC) -c $(DEFS) $(CPPFLAGS) $(CFLAGS) $< + +.c.krc: + $(ANSI2KNR) $< > $@ + +.h.krh: + $(ANSI2KNR) $< > $@ diff --git a/dist-subd.am b/dist-subd.am index b82e5f4f..8062bed7 100644 --- a/dist-subd.am +++ b/dist-subd.am @@ -1,6 +1,6 @@ dist: $(DISTFILES) - mkdir ../`cat ../.fname`/src; chmod 777 ../`cat ../.fname`/src + mkdir ../`cat ../distname`/src; chmod 777 ../`cat ../distname`/src @echo "Copying distribution files" @for file in $(DISTFILES); do \ - cp -p $(srcdir)/$$file ../`cat ../.fname`/src; \ + cp -p $(srcdir)/$$file ../`cat ../distname`/src; \ done diff --git a/dist.am b/dist.am index f65adfdf..99cd0ab0 100644 --- a/dist.am +++ b/dist.am @@ -1,11 +1,17 @@ +DISTFILES = $(DISTSOURCES) $(DISTMISC) + +distname: + (cd $(srcdir); pwd) | sed 's%.*/%%; s%$$%$(VERSION)%' > .distname + dist: $(DISTFILES) - (cd $(srcdir); pwd) | sed 's|.*/||' > .fname - rm -rf `cat .fname`; mkdir `cat .fname`; chmod 777 `cat .fname` + rm -rf `cat distname`; mkdir `cat distname` @echo "Copying distribution files" @for file in $(DISTFILES); do \ - cp -p $(srcdir)/$$file `cat .fname`; \ + cp -p $(srcdir)/$$file `cat distname`; \ done - for subdir in $(SUBDIRS); do (cd $$subdir; $(MAKE) $@); done - chmod -R a+r `cat .fname` - tar chozf `cat .fname`.tar.gz `cat .fname` - rm -rf `cat .fname` .fname + if test -n "$(SUBDIRS)"; then \ + for subdir in $(SUBDIRS); do (cd $$subdir; $(MAKE) $@); done; + fi + chmod -R a+r `cat distname` + tar -chozf `cat distname`.tar.gz `cat distname` + rm -rf `cat distname` distname diff --git a/header.am b/header.am index 53d659db..13b7a690 100644 --- a/header.am +++ b/header.am @@ -21,3 +21,12 @@ srcdir = @srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +transform = @program_transform_name@ + +ALL = ${PROGRAMS} ${LIBRARIES} + +all: ${ALL} diff --git a/lib/am/clean.am b/lib/am/clean.am index cccd03e9..6eb3660f 100644 --- a/lib/am/clean.am +++ b/lib/am/clean.am @@ -1,8 +1,8 @@ mostlyclean: - rm -f *.o core + rm -f *.o *.krc *.krh core clean: mostlyclean - rm -f $(PROGRAMS) $(LIBRARIES) $(CLEANFILES) + rm -f $(PROGRAMS) $(LIBRARIES) $(TEXFILES) $(CLEANFILES) distclean: clean rm -f Makefile diff --git a/lib/am/compile.am b/lib/am/compile.am index 4c37a3c5..26595ec4 100644 --- a/lib/am/compile.am +++ b/lib/am/compile.am @@ -1,10 +1,17 @@ CC = @CC@ LEX = @LEX@ YACC = @YACC@ +ANSI2KNR = ./ansi2knr + DEFS = @DEFS@ CFLAGS = @CFLAGS@ -.SUFFIXES: -.SUFFIXES: .c .o +.SUFFIXES: .c .o .krc .krh .c.o: $(CC) -c $(DEFS) $(CPPFLAGS) $(CFLAGS) $< + +.c.krc: + $(ANSI2KNR) $< > $@ + +.h.krh: + $(ANSI2KNR) $< > $@ diff --git a/lib/am/header.am b/lib/am/header.am index 53d659db..13b7a690 100644 --- a/lib/am/header.am +++ b/lib/am/header.am @@ -21,3 +21,12 @@ srcdir = @srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +transform = @program_transform_name@ + +ALL = ${PROGRAMS} ${LIBRARIES} + +all: ${ALL} diff --git a/lib/am/library.am b/lib/am/library.am index 12abc045..1b467d6e 100644 --- a/lib/am/library.am +++ b/lib/am/library.am @@ -2,3 +2,4 @@ lib@LIBRARY@.a: $(@LIBRARY@_OBJECTS) rm -f lib@LIBRARY@.a $(AR) cru lib@LIBRARY@.a $(@LIBRARY@_OBJECTS) $(RANLIB) lib@LIBRARY@.a + diff --git a/lib/am/mans.am b/lib/am/mans.am index 7a822fee..598f1c86 100644 --- a/lib/am/mans.am +++ b/lib/am/mans.am @@ -14,7 +14,7 @@ install-man: $(INSTALL_DATA) $(srcdir)/$$man $$mdir/$$inst; \ if test -d $(catdir); then cdir=$(mandir)/cat$$sect; \ - echo installing $$man as $$cdir/$$inst; \ + echo formatting $$man as $$cdir/$$inst; \ $(NROFF) -man $(srcdir)/$$man > $$cdir/$$inst; \ fi; \ done diff --git a/lib/am/program.am b/lib/am/program.am index 78e96a6f..12ccc7b6 100644 --- a/lib/am/program.am +++ b/lib/am/program.am @@ -1 +1,3 @@ -@PROGRAM@: @PROGRAM@_OBJECTS +@PROGRAM@: $(@PROGRAM@_OBJECTS) + $(CC) -o $@ $(@PROGRAM@_OBJECTS) $(LDFLAGS) $(LIBS) + diff --git a/lib/am/remake-hdr.am b/lib/am/remake-hdr.am index 40b618ab..680f7d65 100644 --- a/lib/am/remake-hdr.am +++ b/lib/am/remake-hdr.am @@ -1,16 +1,7 @@ -# For the justification of the following Makefile rules, see node -# `Automatic Remaking' in GNU Autoconf documentation. -Makefile: Makefile.in config.status - CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status -config.status: configure - ./config.status --recheck -configure: configure.in aclocal.m4 - cd $(srcdir); autoconf - ${CONFIG_HEADER}: stamp-h stamp-h: ${CONFIG_HEADER}.in config.status CONFIG_FILES= CONFIG_HEADERS=${CONFIG_HEADER} ./config.status ${CONFIG_HEADER}.in: stamp-h.in -stamp-h.in: configure.in aclocal.m4 ac${CONFIG_HEADER} +stamp-h.in: configure.in ${ACLOCAL} ${ACCONFIG} ${CONFIG_TOP} ${CONFIG_BOT} cd $(srcdir); autoheader date > $(srcdir)/stamp-h.in diff --git a/lib/am/subdirs.am b/lib/am/subdirs.am index 4c361d45..52c21761 100644 --- a/lib/am/subdirs.am +++ b/lib/am/subdirs.am @@ -29,11 +29,11 @@ mostlyclean-recursive clean-recursive distclean-recursive realclean-recursive: done mostlyclean-local: - rm -f *~ clean-local: mostlyclean-local distclean-local: clean-local - rm -f Makefile config.cache config.h config.log config.status stamp-h + rm -f Makefile config.cache config.log config.status + rm -f ${CONFIG_H} stamp-h realclean-local: distclean-local diff --git a/lib/am/texinfos.am b/lib/am/texinfos.am index 158ee458..5c3a0340 100644 --- a/lib/am/texinfos.am +++ b/lib/am/texinfos.am @@ -2,6 +2,8 @@ MAKEINFO = makeinfo TEXI2DVI = texi2dvi infodir = $(prefix)/info +TEXFILES = *.aux *.cp *.cps *.dvi *.fn *.fns *.ky *.log *.pg *.toc *.tp *.vr + .SUFFIXES: .texi .info .dvi .texi.info: $(MAKEINFO) $< @@ -9,13 +11,21 @@ infodir = $(prefix)/info .texi.dvi: $(TEXI2DVI) $< +info: $(INFOS) + +dvi: $(DVIS) + +install:: install-info + install-info: - cd $(srcdir); for file in m4.info*; do \ + cd $(srcdir); for file in *.info*; do \ $(INSTALL_DATA) $$file $(infodir)/$$file; \ done +uninstall:: uninstall-info + uninstall-info: - rm -f $(infodir)/m4.info* + cd $(srcdir); for file in *.info*; do \ + rm -f $(infodir)/$$file; \ + done -texclean: - rm -f *.aux *.cp *.cps *.dvi *.fn *.fns *.ky *.log *.pg *.toc *.tp *.vr diff --git a/libraries.am b/libraries.am index bb4e6dcf..80e4909a 100644 --- a/libraries.am +++ b/libraries.am @@ -1,4 +1,4 @@ -LIBDIR = $(exec_prefix)/lib +libdir = $(exec_prefix)/lib AR = ar RANLIB = @RANLIB@ diff --git a/library.am b/library.am index 12abc045..1b467d6e 100644 --- a/library.am +++ b/library.am @@ -2,3 +2,4 @@ lib@LIBRARY@.a: $(@LIBRARY@_OBJECTS) rm -f lib@LIBRARY@.a $(AR) cru lib@LIBRARY@.a $(@LIBRARY@_OBJECTS) $(RANLIB) lib@LIBRARY@.a + diff --git a/mans.am b/mans.am index 7a822fee..598f1c86 100644 --- a/mans.am +++ b/mans.am @@ -14,7 +14,7 @@ install-man: $(INSTALL_DATA) $(srcdir)/$$man $$mdir/$$inst; \ if test -d $(catdir); then cdir=$(mandir)/cat$$sect; \ - echo installing $$man as $$cdir/$$inst; \ + echo formatting $$man as $$cdir/$$inst; \ $(NROFF) -man $(srcdir)/$$man > $$cdir/$$inst; \ fi; \ done diff --git a/program.am b/program.am index 78e96a6f..12ccc7b6 100644 --- a/program.am +++ b/program.am @@ -1 +1,3 @@ -@PROGRAM@: @PROGRAM@_OBJECTS +@PROGRAM@: $(@PROGRAM@_OBJECTS) + $(CC) -o $@ $(@PROGRAM@_OBJECTS) $(LDFLAGS) $(LIBS) + diff --git a/programs.am b/programs.am index 34726d6f..15c8e511 100644 --- a/programs.am +++ b/programs.am @@ -1,8 +1,17 @@ -CC = @CC@ -YACC = @YACC@ -DEFS = @DEFS@ -CFLAGS = @CFLAGS@ +bindir = $(exec_prefix)/bin LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ -bindir = $(exec_prefix)/bin -transform = @program_transform_name@ + +install:: install-programs + +install-programs: $(PROGRAMS) + for p in $(PROGRAMS); do \ + $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed '$(transform)'`; \ + done + +uninstall:: uninstall-programs + +uninstall-programs: + for p in $(PROGRAMS); do \ + rm -f $(bindir)/`echo $$p|sed '$(transform)'`; \ + done diff --git a/remake-hdr.am b/remake-hdr.am index 40b618ab..680f7d65 100644 --- a/remake-hdr.am +++ b/remake-hdr.am @@ -1,16 +1,7 @@ -# For the justification of the following Makefile rules, see node -# `Automatic Remaking' in GNU Autoconf documentation. -Makefile: Makefile.in config.status - CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status -config.status: configure - ./config.status --recheck -configure: configure.in aclocal.m4 - cd $(srcdir); autoconf - ${CONFIG_HEADER}: stamp-h stamp-h: ${CONFIG_HEADER}.in config.status CONFIG_FILES= CONFIG_HEADERS=${CONFIG_HEADER} ./config.status ${CONFIG_HEADER}.in: stamp-h.in -stamp-h.in: configure.in aclocal.m4 ac${CONFIG_HEADER} +stamp-h.in: configure.in ${ACLOCAL} ${ACCONFIG} ${CONFIG_TOP} ${CONFIG_BOT} cd $(srcdir); autoheader date > $(srcdir)/stamp-h.in diff --git a/remake.am b/remake.am index 0f051d9f..a754005b 100644 --- a/remake.am +++ b/remake.am @@ -4,5 +4,5 @@ Makefile: Makefile.in config.status CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status config.status: configure ./config.status --recheck -configure: configure.in aclocal.m4 +configure: configure.in ${ACLOCAL} cd $(srcdir); autoconf diff --git a/subdirs.am b/subdirs.am index 4c361d45..52c21761 100644 --- a/subdirs.am +++ b/subdirs.am @@ -29,11 +29,11 @@ mostlyclean-recursive clean-recursive distclean-recursive realclean-recursive: done mostlyclean-local: - rm -f *~ clean-local: mostlyclean-local distclean-local: clean-local - rm -f Makefile config.cache config.h config.log config.status stamp-h + rm -f Makefile config.cache config.log config.status + rm -f ${CONFIG_H} stamp-h realclean-local: distclean-local diff --git a/texinfos.am b/texinfos.am index 158ee458..5c3a0340 100644 --- a/texinfos.am +++ b/texinfos.am @@ -2,6 +2,8 @@ MAKEINFO = makeinfo TEXI2DVI = texi2dvi infodir = $(prefix)/info +TEXFILES = *.aux *.cp *.cps *.dvi *.fn *.fns *.ky *.log *.pg *.toc *.tp *.vr + .SUFFIXES: .texi .info .dvi .texi.info: $(MAKEINFO) $< @@ -9,13 +11,21 @@ infodir = $(prefix)/info .texi.dvi: $(TEXI2DVI) $< +info: $(INFOS) + +dvi: $(DVIS) + +install:: install-info + install-info: - cd $(srcdir); for file in m4.info*; do \ + cd $(srcdir); for file in *.info*; do \ $(INSTALL_DATA) $$file $(infodir)/$$file; \ done +uninstall:: uninstall-info + uninstall-info: - rm -f $(infodir)/m4.info* + cd $(srcdir); for file in *.info*; do \ + rm -f $(infodir)/$$file; \ + done -texclean: - rm -f *.aux *.cp *.cps *.dvi *.fn *.fns *.ky *.log *.pg *.toc *.tp *.vr -- 2.43.5