Follow-up r288218 by ensuring common objects are built before recursing.
Some example where this is a problem: lib/atf/libatf-c++/tests/Makefile:SRCS.${_T}= ${_T}.cpp test_helpers.cpp lib/atf/libatf-c++/tests/detail/Makefile:SRCS.${_T}= ${_T}.cpp test_helpers.cpp lib/atf/libatf-c/tests/Makefile:SRCS.${_T}= ${_T}.c test_helpers.c lib/atf/libatf-c/tests/detail/Makefile:SRCS.${_T}= ${_T}.c test_helpers.c lib/libpam/libpam/tests/Makefile:SRCS.${test} = ${test}.c ${COMMONSRC} A similar change may be needed for FILES, SCRIPTS, or INCS, but for now stay with just SRCS. Reported by: rodrigc MFC after: 3 weeks X-MFC-With: r288218 Sponsored by: EMC / Isilon Storage Division
This commit is contained in:
parent
e146e19fb5
commit
3451a7cd5b
@ -84,6 +84,25 @@ $v =
|
||||
# tell progs.mk we might want to install things
|
||||
PROGS_TARGETS+= checkdpadd clean cleandepend cleandir depend install
|
||||
|
||||
# Find common sources among the PROGS and depend on them before building
|
||||
# anything. This allows parallelization without them each fighting over
|
||||
# the same objects.
|
||||
_PROGS_COMMON_SRCS=
|
||||
_PROGS_ALL_SRCS=
|
||||
.for p in ${PROGS}
|
||||
.for s in ${SRCS.${p}}
|
||||
.if ${_PROGS_ALL_SRCS:M${s}} && !${_PROGS_COMMON_SRCS:M${s}}
|
||||
_PROGS_COMMON_SRCS+= ${s}
|
||||
.else
|
||||
_PROGS_ALL_SRCS+= ${s}
|
||||
.endif
|
||||
.endfor
|
||||
.endfor
|
||||
.if !empty(_PROGS_COMMON_SRCS)
|
||||
_PROGS_COMMON_OBJS= ${_PROGS_COMMON_SRCS:N*.h:R:S/$/.o/g}
|
||||
${PROGS}: ${_PROGS_COMMON_OBJS}
|
||||
.endif
|
||||
|
||||
.for p in ${PROGS}
|
||||
.if defined(PROGS_CXX) && !empty(PROGS_CXX:M$p)
|
||||
# bsd.prog.mk may need to know this
|
||||
|
Loading…
x
Reference in New Issue
Block a user