🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.utils.bug
Article #1595

Bug in handling of double colon rules (make 3.48)

#1595
From: Paul Higgins
Date: Tue, 09 May 1989 00:10
134 lines
4477 bytes
Version 3.48 of Make doesn't handle double colon rules correctly in
some cases.  This simple Makefile produces the correct results with
Make 3.48:

   test::	/bin/true
	   echo "hello 1"

   clean:: 
	   rm myprog

   test::  /bin/echo
	   echo "hello 2"

When I'm using Make version 3.48 to install X11, however, it seems to
only notice the first double colon rule.  In the following Makefile,
incorrect results occur for the targets "relink", "install" and
"clean".

I've tried Make 3.48 on a Sun 3 running SunOS 4.0.1, a Sun 4 running
SunOS 4.0.1, and a Sequent Symmetry S81 running Dynix 3.0.12, each time
comparing Make version 3.48 to the vendor's /bin/make.

By the way, the Makefiles used in generating and installing X11 are full
of double colon rules.

Using the "-p" option when executing Make 3.48 shows that only one of 
each of the double colon rules appears in the data base.

BOOTSTRAPCFLAGS =
        INSTALL = install
           TAGS = ctags
             RM = rm -f
             MV = mv
           MAKE = make
    STD_DEFINES =
CC = gcc
        DESTDIR =
         BINDIR = $(DESTDIR)/usr/bin/X11
        MANPATH = $(DESTDIR)/usr/man
  MANSOURCEPATH = $(MANPATH)/man
         MANDIR = $(MANSOURCEPATH)d
   INSTMANFLAGS = -m 0444
    CDEBUGFLAGS = -O -traditional -finline-functions -fstrength-reduce \
                   -msoft-float -DPURDUE -DUCI
         DEPEND = $(DEPENDSRC)/makedepend
          IMAKE = $(IMAKESRC)/imake
         CFLAGS = $(CDEBUGFLAGS) $(INCLUDES) $(STD_DEFINES) $(DEFINES)
        LDFLAGS = $(CDEBUGFLAGS) $(SYS_LIBRARIES) $(SYSAUX_LIBRARIES)
            TOP = /usr/cfp/sun3-40/X11
        UTILSRC = $(TOP)/util
      DEPENDSRC = $(UTILSRC)/makedepend
       IMAKESRC = $(UTILSRC)/imake
       IRULESRC = $(UTILSRC)/imake.includes
           XLIB = /usr/lib/libX11.a
         XMULIB = /usr/lib/libXmu.a
      MACROFILE = Sun.macros
  IMAKE_DEFINES =
      IMAKE_CMD = $(NEWTOP)$(IMAKE) -TImake.tmpl -I$(NEWTOP)$(IRULESRC) \
			-s Makefile $(IMAKE_DEFINES)
         RM_CMD = $(RM) *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a \
			.emacs_* tags TAGS make.log MakeOut
          SRCS1 = bitmap.c dialog.c
          OBJS1 = bitmap.o dialog.o
          SRCS2 = bmtoa.c
          OBJS2 = bmtoa.o
          SRCS3 = atobm.c
          OBJS3 = atobm.o
       PROGRAMS = bitmap bmtoa atobm
 OBJS = $(OBJS1) $(OBJS2) $(OBJS3)
 SRCS = $(SRCS1) $(SRCS2) $(SRCS3)
all:: $(PROGRAMS)
bitmap: $(OBJS1) $(XMULIB) $(XLIB)
	$(RM) $@
	$(CC) -o $@ $(OBJS1) $(XMULIB) $(XLIB) $(LDFLAGS) -lm $(SYSLAST_LIBRARIES)
install:: bitmap
	$(INSTALL) -c $(INSTALLFLAGS) bitmap $(BINDIR)
install.man:: bitmap.man
	$(INSTALL) -c $(INSTMANFLAGS) bitmap.man $(MANDIR)/bitmap.d
relink::
	$(RM) $(PROGRAMS)
	$(MAKE) $(MFLAGS) $(PROGRAMS)
depend:: $(DEPEND)
depend::
	$(DEPEND) -s "# DO NOT DELETE" -- $(CFLAGS) -- $(SRCS)
$(DEPEND):
	@echo "making $@"; \
	cd $(DEPENDSRC); $(MAKE)
clean::
	$(RM) $(PROGRAMS)
bmtoa: $(OBJS2) $(XMULIB)
	$(RM) $@
	$(CC) -o $@ $(OBJS2) $(XMULIB) $(LDFLAGS)  $(SYSLAST_LIBRARIES)
relink::
	$(RM) bmtoa
	$(MAKE) $(MFLAGS) bmtoa
clean::
	$(RM) bmtoa
atobm: $(OBJS3)
	$(RM) $@
	$(CC) -o $@ $(OBJS3)  $(LDFLAGS)  $(SYSLAST_LIBRARIES)
relink::
	$(RM) atobm
	$(MAKE) $(MFLAGS) atobm
clean::
	$(RM) atobm
install:: bmtoa
	$(INSTALL) -c  bmtoa $(BINDIR)
install:: atobm
	$(INSTALL) -c  atobm $(BINDIR)
emptyrule::
clean::
	$(RM_CMD) \#*
Makefile:: $(IMAKE)
Makefile:: Imakefile \
	$(IRULESRC)/Imake.tmpl \
	$(IRULESRC)/Imake.rules \
	$(IRULESRC)/site.def \
	$(IRULESRC)/$(MACROFILE)
	-@if [ -f Makefile ]; then \
	echo "$(RM) Makefile.bak; $(MV) Makefile Makefile.bak"; \
	$(RM) Makefile.bak; $(MV) Makefile Makefile.bak; \
	else exit 0; fi
	$(IMAKE_CMD) -DTOPDIR=$(TOP)
$(IMAKE):
	@echo "making $@"; \
	cd $(IMAKESRC); $(MAKE) BOOTSTRAPCFLAGS=$(BOOTSTRAPCFLAGS)
tags::
	$(TAGS) -w *.[ch]
	$(TAGS) -xw *.[ch] > TAGS
install::
	@echo "install done"
install.man::
	@echo "install.man done"
Makefiles::
Technical Details
Message-ID: <8905081710.aa03541@ORION.CF.UCI.EDU>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!ORION.CF.UCI.EDU!phiggins

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!ORION.CF.UCI.EDU!phiggins
From: phiggins@ORION.CF.UCI.EDU (Paul Higgins)
Newsgroups: gnu.utils.bug
Subject: Bug in handling of double colon rules (make 3.48)
Message-ID: <8905081710.aa03541@ORION.CF.UCI.EDU>
Date: 9 May 89 00:10:25 GMT
Sender: daemon@tut.cis.ohio-state.edu
Distribution: gnu
Organization: GNUs Not Usenet
Lines: 134