summaryrefslogtreecommitdiff
path: root/devel/bmake/files/mk/auto.dep.mk
diff options
context:
space:
mode:
Diffstat (limited to 'devel/bmake/files/mk/auto.dep.mk')
-rw-r--r--devel/bmake/files/mk/auto.dep.mk74
1 files changed, 74 insertions, 0 deletions
diff --git a/devel/bmake/files/mk/auto.dep.mk b/devel/bmake/files/mk/auto.dep.mk
new file mode 100644
index 00000000000..d754bab6d38
--- /dev/null
+++ b/devel/bmake/files/mk/auto.dep.mk
@@ -0,0 +1,74 @@
+#
+# RCSid:
+# $Id: auto.dep.mk,v 1.1.1.1 2020/05/24 05:35:53 nia Exp $
+#
+# @(#) Copyright (c) 2010, Simon J. Gerraty
+#
+# This file is provided in the hope that it will
+# be of use. There is absolutely NO WARRANTY.
+# Permission to copy, redistribute or otherwise
+# use this file is hereby granted provided that
+# the above copyright notice and this notice are
+# left intact.
+#
+# Please send copies of changes and bug-fixes to:
+# sjg@crufty.net
+#
+
+# This module provides automagic dependency generation along the
+# lines suggested in the GNU make.info
+
+# set MKDEP_MK=auto.dep.mk and dep.mk will include us
+
+# This version differs from autodep.mk, in that
+# we use ${.TARGET:T}.d rather than ${.TARGET:T:R}.d
+# this makes it simpler to get the args to -MF and -MT right
+# and ensure we can simply include all the .d files.
+#
+# However suffix rules do not work with something like .o.d so we
+# don't even try to handle 'make depend' gracefully.
+# dep.mk will handle that itself.
+#
+.if !target(__${.PARSEFILE}__)
+__${.PARSEFILE}__:
+
+# this what bmake > 20100401 will look for
+.MAKE.DEPENDFILE ?= .depend
+
+# set this to -MMD to ignore /usr/include
+# actually it ignores <> so may not be a great idea
+CFLAGS_MD ?= -MD
+# -MF etc not available on all gcc versions.
+CFLAGS_MF ?= -MF ${.TARGET:T}.d -MT ${.TARGET:T}
+CFLAGS += ${CFLAGS_MD} ${CFLAGS_MF}
+CXXFLAGS += ${CFLAGS_MD} ${CFLAGS_MF}
+
+CLEANFILES += .depend ${.MAKE.DEPENDFILE} *.d
+
+.if ${MAKE_VERSION} < 20160218
+# skip generating dependfile for misc targets
+.if ${.TARGETS:Uall:M*all} != ""
+.END: ${.MAKE.DEPENDFILE}
+.endif
+
+# doing 'make depend' isn't a big win with this model
+.if !target(depend)
+depend: ${.MAKE.DEPENDFILE}
+.endif
+
+# this is trivial
+${.MAKE.DEPENDFILE}: ${OBJS} ${POBJS} ${SOBJS}
+ -@for f in ${.ALLSRC:M*o:T:O:u:%=%.d}; do \
+ echo ".-include \"$$f\""; \
+ done > $@
+.else
+# we have .dinclude
+.if empty(_SKIP_BUILD)
+_all_objs = ${OBJS} ${POBJS} ${SOBJS}
+.for d in ${_all_objs:M*o:T:O:u:%=%.d}
+.dinclude <$d>
+.endfor
+.endif
+
+.endif
+.endif