Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/share/mk/bsd.prog.mk,v rcsdiff: /ftp/cvs/cvsroot/src/share/mk/bsd.prog.mk,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.269 retrieving revision 1.272 diff -u -p -r1.269 -r1.272 --- src/share/mk/bsd.prog.mk 2011/10/16 01:24:05 1.269 +++ src/share/mk/bsd.prog.mk 2012/02/20 18:23:50 1.272 @@ -1,4 +1,4 @@ -# $NetBSD: bsd.prog.mk,v 1.269 2011/10/16 01:24:05 christos Exp $ +# $NetBSD: bsd.prog.mk,v 1.272 2012/02/20 18:23:50 matt Exp $ # @(#)bsd.prog.mk 8.2 (Berkeley) 4/2/94 .ifndef HOSTPROG @@ -180,6 +180,7 @@ LIBCRT0= ${DESTDIR}/usr/lib/crt0.o stdcxx \ supcxx \ terminfo \ + tre \ usbhid \ util \ wind \ @@ -361,12 +362,17 @@ PROGS= ${PROG} # 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 @@ -395,7 +401,7 @@ _LDSTATIC.${_P}= ${LDSTATIC} ${LDSTATIC. ##### 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}} @@ -411,6 +417,55 @@ LOBJS.${_P}+= ${LSRCS:.c=.ln} ${SRCS.${_ .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) +.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} @@ -420,6 +475,7 @@ ${_P}: .gdbinit ${LIBCRT0} ${OBJS.${_P}} ${_LDFLAGS.${_P}} ${_LDSTATIC.${_P}} -o ${.TARGET} \ ${OBJS.${_P}} ${_LDADD.${_P}} \ ${_PROGLDOPTS} + @${SIZE} ${_P} .if defined(CTFMERGE) ${CTFMERGE} ${CTFMFLAGS} -o ${.TARGET} ${OBJS.${_P}} .endif @@ -430,6 +486,7 @@ ${_P}: .gdbinit ${LIBCRT0} ${OBJS.${_P}} ${OBJCOPY} -R .ident ${.TARGET} .endif .endif # !commands(${_P}) +.endif # USE_COMBINE ${_P}.ro: ${OBJS.${_P}} ${DPADD} ${_MKTARGET_LINK}