${cmd-cp}
# rule to make an object file from a .cpp
-${OBJSDIR_$P}%.o: ${SRCSDIR_$P}%.cpp | $${@D}
- ${cmd-cpptoobj}
-
-# rule to make a depend file from a .cpp
-${DEPSDIR_$P}%.d: ${SRCSDIR_$P}%.cpp | $${@D}
- ${cmd-cpptodep}
+${OBJSDIR_$P}%.o: ${SRCSDIR_$P}%.cpp | $${@D} \
+ $$(patsubst ${OBJSDIR_$P},${DEPSDIR_$P},$${@D})
+ ${cmd-cpp_to_obj_and_dep}
T := $P
${Q4s}rm -rf ${CLEANTARGET} ${Q4e}
endef
-define cmd-cpptoobj
+define cmd-cpp_to_obj_and_dep
${Q1s}${PRNTLOG} "${CXX}" "$@" ${Q1e}
${Q2s}${PRNTFMT} "${CXX}" "$@" ${Q2e}
${Q3s}${CXX} -c $< -o $@ -MF ${@:${OBJSDIR}%.o=${DEPSDIR}%.d} ${CXXFLAGS} ${INCFLAGS} -MMD -MQ $@ ${Q3e}
${Q4s}${CXX} -c $< -o $@ -MF ${@:${OBJSDIR}%.o=${DEPSDIR}%.d} ${CXXFLAGS} ${INCFLAGS} -MMD -MQ $@ ${Q4e}
endef
-# Do nothing. This is now done in parallel with cpptoobj. However, you still
-# need to write rules using this to cause dependency directories to be created
-define cmd-cpptodep
+# Deprecated, use cmd-cpptoobjdep to create obj and dep
+define cmd-cpptoobj
+ ${Q1s}${PRNTLOG} "${CXX}" "$@" ${Q1e}
+ ${Q2s}${PRNTFMT} "${CXX}" "$@" ${Q2e}
+ ${Q3s}${CXX} $< -o $@ ${CXXFLAGS} ${INCFLAGS} -c ${Q3e}
+ ${Q4s}${CXX} $< -o $@ ${CXXFLAGS} ${INCFLAGS} -c ${Q4e}
endef