sys.mk broken for single-suffix rules since 1.144 (2021/11/09)

"Greg A. Woods" <[email protected]>
Newsgroups gmane.os.netbsd.current,gmane.os.netbsd.devel.toolchain
Organization Planix, Inc.
Message-ID <[email protected]>
I just noticed that on my recently upgraded -current machines that I
couldn't build simple programs from single source files with a
"portable" Makefile any more.

Instead the program binaries were being put into foo.o files!

It looks like rev. 1.144 of sys.mk was a bit too over-zealous.

I'll send this as a PR also, but perhaps those running -current on
development machines might need a more urgent fix.

Here are my patches that include the fix, and also clean up the use of
various flags in LINK.* (remove CPPFLAGS and add LDSTATIC) and introduce
COMPILE_LINK.* macros to be used with the direct source to target binary
rules (single-suffix rules) such as ".c:" (and finally also split the
settings for debugger and optimizer flags).

The key parts are to revert the change to use ${OBJECT_TARGET} in the
single-suffix rules like ".c:" since ctfconvert(1) won't work on
(static?) linked binaries, and because of course we still need the
final output file to be the filename _without_ any suffix!

Index: sys.mk
===================================================================
RCS file: /cvs/master/m-NetBSD/main/src/share/mk/sys.mk,v
retrieving revision 1.144
diff -u -u -r1.144 sys.mk
--- sys.mk	9 Nov 2020 16:15:05 -0000	1.144
+++ sys.mk	21 Mar 2021 23:25:00 -0000
@@ -19,30 +19,35 @@
 AS?=		as
 AFLAGS?=
 COMPILE.s?=	${CC} ${AFLAGS} ${AFLAGS.${<:T}} -c
-LINK.s?=	${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${LDFLAGS}
+LINK.s?=	${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${LDSTATIC} ${LDFLAGS}
 _ASM_TRADITIONAL_CPP=	-x assembler-with-cpp
 COMPILE.S?=	${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${CPPFLAGS} ${_ASM_TRADITIONAL_CPP} -c
-LINK.S?=	${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${CPPFLAGS} ${LDFLAGS}
+LINK.S?=	${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${LDSTATIC} ${LDFLAGS}
+COMPILE_LINK.S?=${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${CPPFLAGS} ${_ASM_TRADITIONAL_CPP} ${LDSTATIC} ${LDFLAGS}

 CC?=		cc
 .if ${MACHINE_ARCH} == "sh3el" || ${MACHINE_ARCH} == "sh3eb"
 # -O2 is too -falign-* zealous for low-memory sh3 machines
-DBG?=	-Os -freorder-blocks
+OPTIM?=	-Os -freorder-blocks
 .elif ${MACHINE_ARCH} == "m68k" || ${MACHINE_ARCH} == "m68000"
 # -freorder-blocks (enabled by -O2) produces much bigger code
-DBG?=	-O2 -fno-reorder-blocks
+OPTIM?=	-O2 -fno-reorder-blocks
 .elif ${MACHINE_ARCH} == "coldfire"
+OPTIM?=	-O1
 DBG?=	-O1
 .else
-DBG?=	-O2
+OPTIM?=	-O2
 .endif
+DBG?=		# nothing -- just defined
+
 .if ${MKDTRACE:Uno} != "no"
 DTRACE_OPTS?=	-fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-ipa-sra -fno-ipa-icf
 .endif
-CFLAGS?=	${DBG}
+CFLAGS?=	${OPTIM} ${DBG}
 LDFLAGS?=
 COMPILE.c?=	${CC} ${CFLAGS} ${DTRACE_OPTS} ${CPPFLAGS} -c
-LINK.c?=	${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
+LINK.c?=	${CC} ${CFLAGS} ${LDSTATIC} ${LDFLAGS}
+COMPILE_LINK.c?=${CC} ${CFLAGS} ${DTRACE_OPTS} ${CPPFLAGS} ${LDSTATIC} ${LDFLAGS}

 # C Type Format data is required for DTrace
 CTFFLAGS	?=	-g -L VERSION
@@ -67,12 +72,14 @@
 _CXXSEED?=	${BUILDSEED:D-frandom-seed=${__BUILDSEED:hash}}

 COMPILE.cc?=	${CXX} ${_CXXSEED} ${CXXFLAGS} ${DTRACE_OPTS} ${CPPFLAGS} -c
-LINK.cc?=	${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
+LINK.cc?=	${CXX} ${CXXFLAGS} ${LDSTATIC} ${LDFLAGS}
+COMPILE_LINK.cc?=${CXX} ${_CXXSEED} ${CXXFLAGS} ${DTRACE_OPTS} ${CPPFLAGS} ${LDSTATIC} ${LDFLAGS}

 OBJC?=		${CC}
 OBJCFLAGS?=	${CFLAGS}
 COMPILE.m?=	${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c
-LINK.m?=	${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS}
+LINK.m?=	${OBJC} ${OBJCFLAGS} ${LDSTATIC} ${LDFLAGS}
+COMPILE_LINK.m?=${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDSTATIC} ${LDFLAGS}

 CPP?=		cpp
 CPPFLAGS?=
@@ -81,14 +88,19 @@
 FFLAGS?=	-O
 RFLAGS?=
 COMPILE.f?=	${FC} ${FFLAGS} -c
-LINK.f?=	${FC} ${FFLAGS} ${LDFLAGS}
+LINK.f?=	${FC} ${FFLAGS} ${LDSTATIC} ${LDFLAGS}
+COMPILE_LINK.f?=${FC} ${FFLAGS} ${CPPFLAGS} ${LDSTATIC} ${LDFLAGS}
 COMPILE.F?=	${FC} ${FFLAGS} ${CPPFLAGS} -c
-LINK.F?=	${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
+LINK.F?=	${FC} ${FFLAGS} ${LDSTATIC} ${LDFLAGS}
+COMPILE_LINK.F?=${FC} ${FFLAGS} ${CPPFLAGS} ${LDSTATIC} ${LDFLAGS}
 COMPILE.r?=	${FC} ${FFLAGS} ${RFLAGS} -c
-LINK.r?=	${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
+LINK.r?=	${FC} ${FFLAGS} ${LDSTATIC} ${LDFLAGS}
+COMPILE_LINK.r?=${FC} ${FFLAGS} ${CPPFLAGS} ${LDSTATIC} ${LDFLAGS}

 INSTALL?=	install

+MV?=		mv
+
 LD?=		ld

 LEX?=		lex
@@ -107,7 +119,8 @@
 PC?=		pc
 PFLAGS?=
 COMPILE.p?=	${PC} ${PFLAGS} ${CPPFLAGS} -c
-LINK.p?=	${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
+LINK.p?=	${PC} ${PFLAGS} ${LDSTATIC} ${LDFLAGS}
+COMPILE_LINK.p?=${PC} ${PFLAGS} ${CPPFLAGS} ${LDSTATIC} ${LDFLAGS}

 SHELL?=		sh

@@ -121,7 +134,7 @@

 # C
 .c:
-	${LINK.c} ${OBJECT_TARGET} ${.IMPSRC} ${LDLIBS}
+	${COMPILE_LINK.c} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
 # XXX: disable for now
 #	${CTFCONVERT_RUN}
 .c.o:
@@ -138,7 +151,7 @@

 # C++
 .cc .cpp .cxx .C:
-	${LINK.cc} ${OBJECT_TARGET} ${.IMPSRC} ${LDLIBS}
+	${COMPILE_LINK.cc} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
 # XXX: disable for now
 #	${CTFCONVERT_RUN}
 .cc.o .cpp.o .cxx.o .C.o:
@@ -151,8 +164,9 @@

 # Fortran/Ratfor
 .f:
-	${LINK.f} ${OBJECT_TARGET} ${.IMPSRC} ${LDLIBS}
-	${CTFCONVERT_RUN}
+	${COMPILE_LINK.f} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
+# XXX: disable for now
+#	${CTFCONVERT_RUN}
 .f.o:
 	${COMPILE.f} ${.IMPSRC} ${OBJECT_TARGET}
 	${CTFCONVERT_RUN}
@@ -162,8 +176,9 @@
 	rm -f ${.PREFIX}.o

 .F:
-	${LINK.F} ${OBJECT_TARGET} ${.IMPSRC} ${LDLIBS}
-	${CTFCONVERT_RUN}
+	${COMPILE_LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
+# XXX: disable for now
+#	${CTFCONVERT_RUN}
 .F.o:
 	${COMPILE.F} ${.IMPSRC} ${OBJECT_TARGET}
 	${CTFCONVERT_RUN}
@@ -173,8 +188,9 @@
 	rm -f ${.PREFIX}.o

 .r:
-	${LINK.r} ${OBJECT_TARGET} ${.IMPSRC} ${LDLIBS}
-	${CTFCONVERT_RUN}
+	${COMPILE_LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
+# XXX: disable for now
+#	${CTFCONVERT_RUN}
 .r.o:
 	${COMPILE.r} ${.IMPSRC} ${OBJECT_TARGET}
 	${CTFCONVERT_RUN}
@@ -185,8 +201,9 @@

 # Pascal
 .p:
-	${LINK.p} ${OBJECT_TARGET} ${.IMPSRC} ${LDLIBS}
-	${CTFCONVERT_RUN}
+	${COMPILE_LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
+# XXX: disable for now
+#	${CTFCONVERT_RUN}
 .p.o:
 	${COMPILE.p} ${.IMPSRC} ${OBJECT_TARGET}
 	${CTFCONVERT_RUN}
@@ -197,8 +214,9 @@

 # Assembly
 .s:
-	${LINK.s} ${OBJECT_TARGET} ${.IMPSRC} ${LDLIBS}
-	${CTFCONVERT_RUN}
+	${COMPILE_LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
+# XXX: disable for now
+#	${CTFCONVERT_RUN}
 .s.o:
 	${COMPILE.s} ${.IMPSRC} ${OBJECT_TARGET}
 	${CTFCONVERT_RUN}
@@ -207,8 +225,9 @@
 	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
 	rm -f ${.PREFIX}.o
 .S:
-	${LINK.S} ${OBJECT_TARGET} ${.IMPSRC} ${LDLIBS}
-	${CTFCONVERT_RUN}
+	${COMPILE_LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
+# XXX: disable for now
+#	${CTFCONVERT_RUN}
 .S.o:
 	${COMPILE.S} ${.IMPSRC} ${OBJECT_TARGET}
 	${CTFCONVERT_RUN}
@@ -220,8 +239,9 @@
 # Lex
 .l:
 	${LEX.l} ${.IMPSRC}
-	${LINK.c} ${OBJECT_TARGET} lex.yy.c ${LDLIBS} -ll
-	${CTFCONVERT_RUN}
+	${COMPILE_LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll
+# XXX: disable for now
+#	${CTFCONVERT_RUN}
 	rm -f lex.yy.c
 .l.c:
 	${LEX.l} ${.IMPSRC}
@@ -235,8 +255,9 @@
 # Yacc
 .y:
 	${YACC.y} ${.IMPSRC}
-	${LINK.c} ${OBJECT_TARGET} y.tab.c ${LDLIBS}
-	${CTFCONVERT_RUN}
+	${COMPILE_LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS}
+# XXX: disable for now
+#	${CTFCONVERT_RUN}
 	rm -f y.tab.c
 .y.c:
 	${YACC.y} ${.IMPSRC}

--
					Greg A. Woods <[email protected]>

Kelowna, BC     +1 250 762-7675           RoboHack <[email protected]>
Planix, Inc. <[email protected]>     Avoncote Farms <[email protected]>
signature.asc (application/pgp-signature, 195 B)
-----BEGIN PGP SIGNATURE-----

iF0EABECAB0WIQRuK6dmwVAucmRxuh9mfXG3eL/0fwUCYFfaVwAKCRBmfXG3eL/0
f5P1AKC1+0LRdbqZKzWSiB5+ucFc0hkQywCgnn1ogMfXoyt7fkRkfWxE9iVHFck=
=UqJ2
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.