Commit d1dbba1e authored by Niels Möller's avatar Niels Möller
Browse files

Use %-pattern rules instad of suffix rules.

parent 57427231
2020-01-15 Niels Möller <>
* Replace suffix rules by pattern rules. Move .asm
rule above .c rule, since now the order of rules in the Makefile
matters, rather than the order in the .SUFFIXES list.
(aesdata, desdata, twofishdata, shadata, gcmdata, eccparams):
Individual rules replaced by a pattern rule.
(eccdata): Add explicit dependencies, to complement the pattern
* examples/ Replace suffix rules by pattern rules.
* testsuite/ Likewise.
* tools/ Likewise.
* Empty .SUFFIXES, to not accidentally use any
suffix rules.
* aclocal.m4 (DEP_INCLUDE): Delete substituted variable.
* Use the GNU make directive -include to include
......@@ -269,7 +269,11 @@ libhogweed.a: $(hogweed_OBJS)
$(RANLIB) $@
echo hogweed > libhogweed.stamp
%.$(OBJEXT): %.asm $(srcdir)/asm.m4 machine.m4 config.m4
$(M4) $(srcdir)/asm.m4 machine.m4 config.m4 $< >$*.s
$(COMPILE) -c $*.s
%.$(OBJEXT): %.c
$(COMPILE) -c $< \
......@@ -296,36 +300,12 @@ $(LIBHOGWEED_FORLINK): $(hogweed_OBJS) $(LIBNETTLE_FORLINK)
echo hogweed > libhogweed.stamp
# For Solaris and BSD make, we have to use an explicit rule for each
# executable. Avoid object file targets to make it easy to run the
# right compiler.
aesdata$(EXEEXT_FOR_BUILD): aesdata.c
$(CC_FOR_BUILD) `test -f aesdata.c || echo '$(srcdir)/'`aesdata.c \
-o aesdata$(EXEEXT_FOR_BUILD)
desdata$(EXEEXT_FOR_BUILD): desdata.c
$(CC_FOR_BUILD) `test -f desdata.c || echo '$(srcdir)/'`desdata.c \
-o desdata$(EXEEXT_FOR_BUILD)
twofishdata$(EXEEXT_FOR_BUILD): twofishdata.c
$(CC_FOR_BUILD) `test -f twofishdata.c || echo '$(srcdir)/'`twofishdata.c \
-o twofishdata$(EXEEXT_FOR_BUILD)
shadata$(EXEEXT_FOR_BUILD): shadata.c
$(CC_FOR_BUILD) `test -f shadata.c || echo '$(srcdir)/'`shadata.c -lm \
-o shadata$(EXEEXT_FOR_BUILD)
# For building the various *data.c programs. -lm needed for shadata.
$(CC_FOR_BUILD) $< -lm -o $@
gcmdata$(EXEEXT_FOR_BUILD): gcmdata.c
$(CC_FOR_BUILD) `test -f gcmdata.c || echo '$(srcdir)/'`gcmdata.c \
-o gcmdata$(EXEEXT_FOR_BUILD)
eccdata$(EXEEXT_FOR_BUILD): eccdata.c mini-gmp.c mini-gmp.h
$(CC_FOR_BUILD) `test -f eccdata.c || echo '$(srcdir)/'`eccdata.c \
-o eccdata$(EXEEXT_FOR_BUILD)
eccparams$(EXEEXT_FOR_BUILD): eccparams.c
$(CC_FOR_BUILD) `test -f eccparams.c || echo '$(srcdir)/'`eccparams.c \
-o eccparams$(EXEEXT_FOR_BUILD)
# Explicit dependency.
eccdata$(EXEEXT_FOR_BUILD): mini-gmp.c mini-gmp.h
# desCore rules
# It seems using $(srcdir)/ doesn't work with GNU make 3.79.1
......@@ -408,29 +388,24 @@ ecc-secp256r1.$(OBJEXT): ecc-secp256r1.h
ecc-secp384r1.$(OBJEXT): ecc-secp384r1.h
ecc-secp521r1.$(OBJEXT): ecc-secp521r1.h
.asm.$(OBJEXT): $(srcdir)/asm.m4 machine.m4 config.m4
$(M4) $(srcdir)/asm.m4 machine.m4 config.m4 $< >$*.s
$(COMPILE) -c $*.s
@echo "$@ : $< $(srcdir)/asm.m4 machine.m4 config.m4" >$@.d
# Texinfo rules %.texinfo
cd $(srcdir) && $(MAKEINFO) --output $@ `basename "$<"`
%.html: %.texinfo
cd $(srcdir) && $(MAKEINFO) --html --no-split \
--output $@T `basename "$<"` \
&& test -s $@T && mv -f $@T $@
%.dvi: %.texinfo
cd $(srcdir) && texi2dvi -b `basename "$<"` %.dvi
cd $(srcdir) && dvips -Ppdf -G0 -o `basename "$<" .dvi`.ps `basename "$<"`
# Avoid rebuilding .dvi and .ps files when the .texinfo source is unchanged.
PS2PDFFLAGS=-dCompatibilityLevel=1.3 -dMAxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true
%.pdf: %.texinfo
$(MAKE) `basename "$<" .texinfo`.ps
cd $(srcdir) && ps2pdf $(PS2PDFFLAGS) `basename "$<" .texinfo`.ps
......@@ -77,17 +77,11 @@ LINK_CXX = $(CXX) $(CXXFLAGS) $(PRE_LDFLAGS) $(LDFLAGS)
# usual targets.
default: all
# For some reason the suffixes list must be set before the rules.
# Otherwise BSD make won't build binaries e.g. aesdata. On the other
# hand, AIX make has the opposite idiosyncrasies to BSD, and the AIX
# compile was broken when .SUFFIXES was moved here from
# Don't use any old-fashioned suffix rules.
.SUFFIXES: .asm .c .$(OBJEXT) .html .dvi .info .exe .pdf .ps .texinfo
# Disable builtin rule
%$(EXEEXT) : %.c
# Keep object files
......@@ -40,7 +40,7 @@ DISTFILES= $(SOURCES) $(TS_ALL) setup-env teardown-env \
all: $(TARGETS)
%.$(OBJEXT): %.c
$(COMPILE) -c $< && $(DEP_PROCESS)
# NOTE: If we required GNU make, we could use a single rule with $(@F)
......@@ -79,11 +79,10 @@ DISTFILES = $(SOURCES) $(CXX_SOURCES) .test-rules.make \
%.$(OBJEXT): %.c
$(COMPILE) -c $< && $(DEP_PROCESS)
%.$(OBJEXT): %.cxx
# BSD (and Solaris) make doesn't allow extra dependencies together one
......@@ -56,7 +56,7 @@ nettle-pbkdf2$(EXEEXT): $(nettle_pbkdf2_OBJS) ../libnettle.stamp
$(LINK) $(nettle_pbkdf2_OBJS) -lnettle -o $@
%.$(OBJEXT): %.c
$(COMPILE) -c $< && $(DEP_PROCESS)
# NOTE: If we required GNU make, we could use a single rule with $(@F)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment