[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