[Midnightbsd-cvs] src [10268] trunk/share/mk/bsd.prog.mk: update prog config

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Sat Jun 2 18:08:27 EDT 2018


Revision: 10268
          http://svnweb.midnightbsd.org/src/?rev=10268
Author:   laffer1
Date:     2018-06-02 18:08:27 -0400 (Sat, 02 Jun 2018)
Log Message:
-----------
update prog config

Modified Paths:
--------------
    trunk/share/mk/bsd.prog.mk

Modified: trunk/share/mk/bsd.prog.mk
===================================================================
--- trunk/share/mk/bsd.prog.mk	2018-06-02 22:08:10 UTC (rev 10267)
+++ trunk/share/mk/bsd.prog.mk	2018-06-02 22:08:27 UTC (rev 10268)
@@ -1,5 +1,5 @@
 #	from: @(#)bsd.prog.mk	5.26 (Berkeley) 6/25/91
-# $FreeBSD: src/share/mk/bsd.prog.mk,v 1.144.2.1 2005/11/28 19:08:51 ru Exp $
+# $FreeBSD: stable/10/share/mk/bsd.prog.mk 298503 2016-04-23 07:09:23Z ngie $
 # $MidnightBSD$
 
 .include <bsd.init.mk>
@@ -13,6 +13,7 @@
 
 # XXX The use of COPTS in modern makefiles is discouraged.
 .if defined(COPTS)
+.warning COPTS should be CFLAGS.
 CFLAGS+=${COPTS}
 .endif
 
@@ -30,9 +31,23 @@
 .endif
 .endif
 
+.if defined(PROG_CXX)
+PROG=	${PROG_CXX}
+.endif
+
+.if !empty(LDFLAGS:M-Wl,*--oformat,*) || !empty(LDFLAGS:M-static)
+MK_DEBUG_FILES=	no
+.endif
+
 .if defined(CRUNCH_CFLAGS)
 CFLAGS+=${CRUNCH_CFLAGS}
+.else
+.if ${MK_DEBUG_FILES} != "no" && empty(DEBUG_FLAGS:M-g) && \
+    empty(DEBUG_FLAGS:M-gdwarf-*)
+CFLAGS+= -g
+CTFFLAGS+= -g
 .endif
+.endif
 
 .if !defined(DEBUG_FLAGS)
 STRIP?=	-s
@@ -42,34 +57,44 @@
 LDFLAGS+= -static
 .endif
 
-.if defined(PROG_CXX)
-PROG=	${PROG_CXX}
+.if defined(USEPRIVATELIB)
+LDFLAGS+= -L${_SHLIBDIRPREFIX}${LIBPRIVATEDIR} -rpath ${LIBPRIVATEDIR}
 .endif
 
-.if defined(PROG)
-.if defined(SRCS)
-
-# If there are Objective C sources, link with Objective C libraries.
-.if !empty(SRCS:M*.m)
-.if defined(OBJCLIBS)
-LDADD+=	${OBJCLIBS}
+.if ${MK_DEBUG_FILES} != "no"
+PROG_FULL=${PROG}.full
+# Use ${DEBUGDIR} for base system debug files, else .debug subdirectory
+.if defined(BINDIR) && (\
+    ${BINDIR} == "/bin" ||\
+    ${BINDIR} == "/libexec" ||\
+    ${BINDIR} == "/sbin" ||\
+    ${BINDIR:C%/usr/(bin|bsdinstall|games|libexec|lpr|sendmail|sm.bin|sbin)(/.*)?%/usr/bin%} == "/usr/bin"\
+     )
+DEBUGFILEDIR=	${DEBUGDIR}${BINDIR}
 .else
-DPADD+=	${LIBOBJC} ${LIBPTHREAD}
-LDADD+=	-lobjc -lpthread
+DEBUGFILEDIR?=	${BINDIR}/.debug
+DEBUGMKDIR=
 .endif
+.else
+PROG_FULL=	${PROG}
 .endif
 
+.if defined(PROG)
+PROGNAME?=	${PROG}
+
+.if defined(SRCS)
+
 OBJS+=  ${SRCS:N*.h:R:S/$/.o/g}
 
 .if target(beforelinking)
-${PROG}: ${OBJS} beforelinking
-.else
-${PROG}: ${OBJS}
+beforelinking: ${OBJS}
+${PROG_FULL}: beforelinking
 .endif
+${PROG_FULL}: ${OBJS}
 .if defined(PROG_CXX)
-	${CXX} ${CPPFLAGS} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
+	${CXX} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
 .else
-	${CC} ${CPPFLAGS} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
+	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
 .endif
 .if ${MK_CTF} != "no"
 	${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${OBJS}
@@ -89,23 +114,32 @@
 # - the name of the object gets put into the executable symbol table instead of
 #   the name of a variable temporary object.
 # - it's useful to keep objects around for crunching.
-OBJS=	${PROG}.o
+OBJS+=	${PROG}.o
 
 .if target(beforelinking)
-${PROG}: ${OBJS} beforelinking
-.else
-${PROG}: ${OBJS}
+beforelinking: ${OBJS}
+${PROG_FULL}: beforelinking
 .endif
+${PROG_FULL}: ${OBJS}
 .if defined(PROG_CXX)
-	${CXX} ${CPPFLAGS} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
+	${CXX} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
 .else
-	${CC} ${CPPFLAGS} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
+	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
 .endif
 .if ${MK_CTF} != "no"
 	${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${OBJS}
 .endif
-.endif
+.endif # !target(${PROG})
 
+.endif # !defined(SRCS)
+
+.if ${MK_DEBUG_FILES} != "no"
+${PROG}: ${PROG_FULL} ${PROGNAME}.debug
+	${OBJCOPY} --strip-debug --add-gnu-debuglink=${PROGNAME}.debug \
+	    ${PROG_FULL} ${.TARGET}
+
+${PROGNAME}.debug: ${PROG_FULL}
+	${OBJCOPY} --only-keep-debug ${PROG_FULL} ${.TARGET}
 .endif
 
 .if	${MK_MAN} != "no" && !defined(MAN) && \
@@ -115,9 +149,10 @@
 MAN=	${PROG}.1
 MAN1=	${MAN}
 .endif
-.endif
+.endif # defined(PROG)
 
-all: objwarn ${PROG} ${SCRIPTS}
+all: beforebuild .WAIT ${PROG} ${SCRIPTS}
+beforebuild: objwarn
 .if ${MK_MAN} != "no"
 all: _manpages
 .endif
@@ -124,7 +159,10 @@
 
 .if defined(PROG)
 CLEANFILES+= ${PROG}
+.if ${MK_DEBUG_FILES} != "no"
+CLEANFILES+=	${PROG_FULL} ${PROGNAME}.debug
 .endif
+.endif
 
 .if defined(OBJS)
 CLEANFILES+= ${OBJS}
@@ -136,15 +174,15 @@
 _EXTRADEPEND:
 .if defined(LDFLAGS) && !empty(LDFLAGS:M-nostdlib)
 .if defined(DPADD) && !empty(DPADD)
-	echo ${PROG}: ${DPADD} >> ${DEPENDFILE}
+	echo ${PROG_FULL}: ${DPADD} >> ${DEPENDFILE}
 .endif
 .else
-	echo ${PROG}: ${LIBC} ${DPADD} >> ${DEPENDFILE}
+	echo ${PROG_FULL}: ${LIBC} ${DPADD} >> ${DEPENDFILE}
 .if defined(PROG_CXX)
-.if !empty(CXXFLAGS:M-stdlib=libc++)
-	echo ${PROG}: ${LIBCPLUSPLUS} >> ${DEPENDFILE}
+.if ${MK_CLANG_IS_CC} != "no" && empty(CXXFLAGS:M-stdlib=libstdc++)
+	echo ${PROG_FULL}: ${LIBCPLUSPLUS} >> ${DEPENDFILE}
 .else
-	echo ${PROG}: ${LIBSTDCPLUSPLUS} >> ${DEPENDFILE}
+	echo ${PROG_FULL}: ${LIBSTDCPLUSPLUS} >> ${DEPENDFILE}
 .endif
 .endif
 .endif
@@ -169,14 +207,16 @@
 .ORDER: beforeinstall _proginstall
 _proginstall:
 .if defined(PROG)
-.if defined(PROGNAME)
 	${INSTALL} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
 	    ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}/${PROGNAME}
-.else
-	${INSTALL} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
-	    ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}
+.if ${MK_DEBUG_FILES} != "no"
+.if defined(DEBUGMKDIR)
+	${INSTALL} -T debug -d ${DESTDIR}${DEBUGFILEDIR}
 .endif
+	${INSTALL} -T debug -o ${BINOWN} -g ${BINGRP} -m ${DEBUGMODE} \
+	    ${PROGNAME}.debug ${DESTDIR}${DEBUGFILEDIR}/${PROGNAME}.debug
 .endif
+.endif
 .endif	# !target(realinstall)
 
 .if defined(SCRIPTS) && !empty(SCRIPTS)
@@ -219,7 +259,7 @@
 .ORDER: beforeinstall _maninstall
 .endif
 
-.endif
+.endif	# !target(install)
 
 .if !target(lint)
 lint: ${SRCS:M*.c}



More information about the Midnightbsd-cvs mailing list