Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/share/mk Add support for --combine with gcc.
details: https://anonhg.NetBSD.org/src/rev/56efa5260318
branches: trunk
changeset: 777475:56efa5260318
user: matt <matt%NetBSD.org@localhost>
date: Sun Feb 19 23:19:37 2012 +0000
description:
Add support for --combine with gcc.
diffstat:
share/mk/bsd.dep.mk | 13 ++++++++-
share/mk/bsd.kmodule.mk | 32 ++++++++++++++++++++++++-
share/mk/bsd.lib.mk | 32 ++++++++++++++++++++++++-
share/mk/bsd.prog.mk | 61 +++++++++++++++++++++++++++++++++++++++++++++++-
4 files changed, 131 insertions(+), 7 deletions(-)
diffs (241 lines):
diff -r 6fe2c4020dd5 -r 56efa5260318 share/mk/bsd.dep.mk
--- a/share/mk/bsd.dep.mk Sun Feb 19 23:15:24 2012 +0000
+++ b/share/mk/bsd.dep.mk Sun Feb 19 23:19:37 2012 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.dep.mk,v 1.73 2011/09/10 16:57:35 apb Exp $
+# $NetBSD: bsd.dep.mk,v 1.74 2012/02/19 23:19:37 matt Exp $
##### Basic targets
realdepend: beforedepend .depend afterdepend
@@ -16,8 +16,17 @@
.if defined(SRCS) # {
__acpp_flags= ${_ASM_TRADITIONAL_CPP}
-__DPSRCS.all= ${SRCS:C/\.(c|m|s|S|C|cc|cpp|cxx)$/.d/} \
+.if defined(NODPSRCS)
+.for f in ${SRCS} ${DPSRCS}
+.if "${NODPSRCS:M${f}}" == ""
+__DPSRCS.all+= ${f:C/\.(c|m|s|S|C|cc|cpp|cxx)$/.d/}
+.endif
+.endfor
+beforedepend: ${DPSRCS}
+.else
+__DPSRCS.all+= ${SRCS:C/\.(c|m|s|S|C|cc|cpp|cxx)$/.d/} \
${DPSRCS:C/\.(c|m|s|S|C|cc|cpp|cxx)$/.d/}
+.endif
__DPSRCS.d= ${__DPSRCS.all:O:u:M*.d}
__DPSRCS.notd= ${__DPSRCS.all:O:u:N*.d}
diff -r 6fe2c4020dd5 -r 56efa5260318 share/mk/bsd.kmodule.mk
--- a/share/mk/bsd.kmodule.mk Sun Feb 19 23:15:24 2012 +0000
+++ b/share/mk/bsd.kmodule.mk Sun Feb 19 23:19:37 2012 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.kmodule.mk,v 1.34 2012/02/16 23:58:15 christos Exp $
+# $NetBSD: bsd.kmodule.mk,v 1.35 2012/02/19 23:19:37 matt Exp $
# We are not building this with PIE
MKPIE=no
@@ -69,18 +69,46 @@
KMODSCRIPT= ${DESTDIR}/usr/libdata/ldscripts/kmodule
.endif
-OBJS+= ${SRCS:N*.h:N*.sh:R:S/$/.o/g}
PROG?= ${KMOD}.kmod
##### Build rules
realall: ${PROG}
+.if (defined(USE_COMBINE) && ${USE_COMBINE} != "no" && !commands(${_P}) \
+ && !defined(NOCOMBINE.${_P}) && !defined(NOCOMBINE))
+.for f in ${SRCS:N*.h:N*.sh:N*.fth:C/\.[yl]$/.c/g}
+.if (${CPPFLAGS.$f:D1} == "1" || ${CPUFLAGS.$f:D2} == "2" \
+ || ${COPTS.$f:D3} == "3" || ${OBJCOPTS.$f:D4} == "4" \
+ || ${CXXFLAGS.$f:D5} == "5") \
+ || ("${f:M*.[cyl]}" == "" || commands(${f:R:S/$/.o/}))
+XOBJS+= ${f:R:S/$/.o/}
+.else
+XSRCS+= ${f}
+NODPSRCS+= ${f}
+.endif
+.endfor
+
+.if !empty(XOBJS)
+${XOBJS}: ${DPSRCS}
+.endif
+
+${PROG}: ${XOBJS} ${XSRCS} ${DPSRCS} ${DPADD}
+ ${_MKTARGET_LINK}
+ ${CC} ${LDFLAGS} -nostdlib -MD -combine -r -Wl,-T,${KMODSCRIPT},-d \
+ -o ${.TARGET} ${CFLAGS} ${CPPFLAGS} ${XOBJS} \
+ ${XSRCS:@.SRC.@${.ALLSRC:M*.c:M*${.SRC.}}@:O:u} && \
+ echo '.-include "${KMOD}.d"' > .depend
+
+.else
+OBJS+= ${SRCS:N*.h:N*.sh:R:S/$/.o/g}
+
${OBJS} ${LOBJS}: ${DPSRCS}
${PROG}: ${OBJS} ${DPADD}
${_MKTARGET_LINK}
${CC} ${LDFLAGS} -nostdlib -r -Wl,-T,${KMODSCRIPT},-d \
-o ${.TARGET} ${OBJS}
+.endif
##### Install rules
.if !target(kmodinstall)
diff -r 6fe2c4020dd5 -r 56efa5260318 share/mk/bsd.lib.mk
--- a/share/mk/bsd.lib.mk Sun Feb 19 23:15:24 2012 +0000
+++ b/share/mk/bsd.lib.mk Sun Feb 19 23:19:37 2012 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.lib.mk,v 1.320 2012/01/28 23:13:24 christos Exp $
+# $NetBSD: bsd.lib.mk,v 1.321 2012/02/19 23:19:37 matt Exp $
# @(#)bsd.lib.mk 8.3 (Berkeley) 4/22/94
.include <bsd.init.mk>
@@ -390,7 +390,37 @@
_LIBS=
.endif
+.if ${LIBISPRIVATE} != "no" \
+ && (defined(USE_COMBINE) && ${USE_COMBINE} == "yes" \
+ && !defined(NOCOMBINE)) # {
+.for f in ${SRCS:N*.h:N*.sh:C/\.[yl]$/.c/g}
+COMBINEFLAGS.${LIB}.$f := ${CPPFLAGS.$f:D1} ${CPUFLAGS.$f:D2} ${COPTS.$f:D3} ${OBJCOPTS.$f:D4} ${CXXFLAGS.$f:D5}
+.if empty(COMBINEFLAGS.${LIB}.${f}) && !defined(NOCOMBINE.$f)
+COMBINESRCS+= ${f}
+NODPSRCS+= ${f}
+.else
+OBJS+= ${f:R:S/$/.o/}
+.endif
+.endfor
+
+.if !empty(COMBINESRCS)
+OBJS+= lib${LIB}_combine.o
+lib${LIB}_combine.o: ${COMBINESRCS}
+ ${_MKTARGET_COMPILE}
+ ${COMPILE.c} -MD --combine ${.ALLSRC} -o ${.TARGET}
+.if !defined(CFLAGS) || empty(CFLAGS:M*-g*)
+ ${OBJCOPY} -x ${.TARGET}
+.endif
+
+CLEANFILES+= lib${LIB}_combine.d
+
+.if exists("lib${LIB}_combine.d")
+.include "lib${LIB}_combine.d"
+.endif
+.endif # empty(XSRCS.${LIB})
+.else # } {
OBJS+=${SRCS:N*.h:N*.sh:R:S/$/.o/g}
+.endif # }
STOBJS+=${OBJS}
diff -r 6fe2c4020dd5 -r 56efa5260318 share/mk/bsd.prog.mk
--- a/share/mk/bsd.prog.mk Sun Feb 19 23:15:24 2012 +0000
+++ b/share/mk/bsd.prog.mk Sun Feb 19 23:19:37 2012 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.prog.mk,v 1.270 2011/11/05 22:56:31 christos Exp $
+# $NetBSD: bsd.prog.mk,v 1.271 2012/02/19 23:19:37 matt Exp $
# @(#)bsd.prog.mk 8.2 (Berkeley) 4/2/94
.ifndef HOSTPROG
@@ -362,12 +362,17 @@
# Per-program definitions and targets.
#
+_CCLINK.CDEFAULT= ${CC} ${_CCLINKFLAGS}
# Definitions specific to C programs.
.for _P in ${PROGS}
SRCS.${_P}?= ${_P}.c
_CCLINK.${_P}= ${CC} ${_CCLINKFLAGS}
+_CFLAGS.${_P}= ${CFLAGS} ${CPUFLAGS}
+_CPPFLAGS.${_P}= ${CPPFLAGS}
+_COPTS.${_P}= ${COPTS}
.endfor
+_CCLINK.CXXDEFAULT= ${CXX} ${_CCLINKFLAGS}
# Definitions specific to C++ programs.
.for _P in ${PROGS_CXX}
SRCS.${_P}?= ${_P}.cc
@@ -396,7 +401,7 @@
##### Build and install rules
.if !empty(_APPEND_SRCS:M[Yy][Ee][Ss])
-SRCS+= ${SRCS.${_P}} # For bsd.dep.mk
+SRCS+= ${SRCS.${_P}} # For bsd.dep.mk
.endif
_YPSRCS.${_P}= ${SRCS.${_P}:M*.[ly]:C/\..$/.c/} ${YHEADER:D${SRCS.${_P}:M*.y:.y=.h}}
@@ -412,6 +417,56 @@
.if defined(OBJS.${_P}) && !empty(OBJS.${_P}) # {
.NOPATH: ${OBJS.${_P}} ${_P} ${_YPSRCS.${_P}}
+.if (defined(USE_COMBINE) && ${USE_COMBINE} != "no" && !commands(${_P}) \
+ && (${_CCLINK.${_P}} == ${_CCLINK.CDEFAULT} \
+ || ${_CCLINK.${_P}} == ${_CCLINK.CXXDEFAULT}) \
+ && !defined(NOCOMBINE.${_P}) && !defined(NOCOMBINE))
+.for f in ${SRCS.${_P}:N*.h:N*.sh:N*.fth:C/\.[yl]$/.c/g}
+#_XFLAGS.$f := ${CPPFLAGS.$f:D1} ${CPUFLAGS.$f:D2} \
+# ${COPTS.$f:D3} ${OBJCOPTS.$f:D4} ${CXXFLAGS.$f:D5}
+.if (${CPPFLAGS.$f:D1} == "1" || ${CPUFLAGS.$f:D2} == "2" \
+ || ${COPTS.$f:D3} == "3" || ${OBJCOPTS.$f:D4} == "4" \
+ || ${CXXFLAGS.$f:D5} == "5") \
+ || ("${f:M*.[cyl]}" == "" || commands(${f:R:S/$/.o/}))
+XOBJS.${_P}+= ${f:R:S/$/.o/}
+.else
+XSRCS.${_P}+= ${f}
+NODPSRCS+= ${f}
+.endif
+.endfor
+
+${_P}: .gdbinit ${LIBCRT0} ${XOBJS.${_P}} ${SRCS.${_P}} ${DPSRCS} ${LIBC} ${LIBCRTBEGIN} ${LIBCRTEND} ${DPADD}
+ ${_MKTARGET_LINK}
+.if defined(DESTDIR)
+ ${_CCLINK.${_P}} -Wl,-nostdlib \
+ ${_LDFLAGS.${_P}} ${_LDSTATIC.${_P}} -o ${.TARGET} ${_PROGLDOPTS} \
+ -B${_GCC_CRTDIR}/ -B${DESTDIR}/usr/lib/ \
+ -MD --combine ${_CPPFLAGS.${_P}} ${_CFLAGS.${_P}} ${_COPTS.${_P}} \
+ ${XSRCS.${_P}:@.SRC.@${.ALLSRC:M*.c:M*${.SRC.}}@:O:u} ${XOBJS.${_P}} \
+ ${_LDADD.${_P}} -L${_GCC_LIBGCCDIR} -L${DESTDIR}/usr/lib
+.else
+ ${_CCLINK.${_P}} ${_LDFLAGS.${_P}} ${_LDSTATIC.${_P}} -o ${.TARGET} ${_PROGLDOPTS} \
+ -MD --combine ${_CPPFLAGS.${_P}} ${_COPTS.${_P}}
+ ${XSRCS.${_P}:@.SRC.@${.ALLSRC:M*.c:M*${.SRC.}}@:O:u} ${XOBJS.${_P}} \
+ ${_LDADD.${_P}}
+.endif # defined(DESTDIR)
+ @${SIZE} ${_P}
+.if defined(CTFMERGE)
+ ${CTFMERGE} ${CTFMFLAGS} -o ${.TARGET} ${OBJS.${_P}}
+.endif
+.if defined(PAXCTL_FLAGS.${_P})
+ ${PAXCTL} ${PAXCTL_FLAGS.${_P}} ${.TARGET}
+.endif
+.if ${MKSTRIPIDENT} != "no"
+ ${OBJCOPY} -R .ident ${.TARGET}
+.endif
+
+CLEANFILES+= ${_P}.d
+.if exists(${_P}.d)
+.include "${_P}.d" # include -MD depend for program.
+.endif
+.else # USE_COMBINE
+
${OBJS.${_P}} ${LOBJS.${_P}}: ${DPSRCS}
${_P}: .gdbinit ${LIBCRT0} ${OBJS.${_P}} ${LIBC} ${LIBCRTBEGIN} ${LIBCRTEND} ${DPADD}
@@ -421,6 +476,7 @@
${_LDFLAGS.${_P}} ${_LDSTATIC.${_P}} -o ${.TARGET} \
${OBJS.${_P}} ${_LDADD.${_P}} \
${_PROGLDOPTS}
+ @${SIZE} ${_P}
.if defined(CTFMERGE)
${CTFMERGE} ${CTFMFLAGS} -o ${.TARGET} ${OBJS.${_P}}
.endif
@@ -431,6 +487,7 @@
${OBJCOPY} -R .ident ${.TARGET}
.endif
.endif # !commands(${_P})
+.endif # USE_COMBINE
${_P}.ro: ${OBJS.${_P}} ${DPADD}
${_MKTARGET_LINK}
Home |
Main Index |
Thread Index |
Old Index