1f974ced3SSimon J. Gerraty# SPDX-License-Identifier: BSD-2-Clause 2f974ced3SSimon J. Gerraty# 3*a2b67d4aSSimon J. Gerraty# $Id: meta.subdir.mk,v 1.15 2024/04/19 15:10:22 sjg Exp $ 47750ad47SMarcel Moolenaar 57750ad47SMarcel Moolenaar# 67750ad47SMarcel Moolenaar# @(#) Copyright (c) 2010, Simon J. Gerraty 77750ad47SMarcel Moolenaar# 87750ad47SMarcel Moolenaar# This file is provided in the hope that it will 97750ad47SMarcel Moolenaar# be of use. There is absolutely NO WARRANTY. 107750ad47SMarcel Moolenaar# Permission to copy, redistribute or otherwise 117750ad47SMarcel Moolenaar# use this file is hereby granted provided that 127750ad47SMarcel Moolenaar# the above copyright notice and this notice are 137750ad47SMarcel Moolenaar# left intact. 147750ad47SMarcel Moolenaar# 157750ad47SMarcel Moolenaar# Please send copies of changes and bug-fixes to: 167750ad47SMarcel Moolenaar# sjg@crufty.net 177750ad47SMarcel Moolenaar# 187750ad47SMarcel Moolenaar 197750ad47SMarcel Moolenaar.if !defined(NO_SUBDIR) && !empty(SUBDIR) 207750ad47SMarcel Moolenaar.if make(destroy*) || make(clean*) 217750ad47SMarcel Moolenaar.MAKE.MODE = compat 2240b9b299SSimon J. Gerraty.if !commands(obj) 237750ad47SMarcel Moolenaar.-include <bsd.obj.mk> 247750ad47SMarcel Moolenaar.endif 257750ad47SMarcel Moolenaar.elif ${.MAKE.LEVEL} == 0 267750ad47SMarcel Moolenaar 277750ad47SMarcel Moolenaar.MAIN: all 287750ad47SMarcel Moolenaar 297750ad47SMarcel Moolenaar.if !exists(${.CURDIR}/${.MAKE.DEPENDFILE:T}) || make(gendirdeps) 307750ad47SMarcel Moolenaar# start with this 317750ad47SMarcel MoolenaarDIRDEPS = ${SUBDIR:N.WAIT:O:u:@d@${RELDIR}/$d@} 327750ad47SMarcel Moolenaar 337750ad47SMarcel Moolenaar.if make(gendirdeps) 347750ad47SMarcel Moolenaar.include <meta.autodep.mk> 357750ad47SMarcel Moolenaar.else 367750ad47SMarcel Moolenaar# this is the cunning bit 377750ad47SMarcel Moolenaar# actually it is probably a bit risky 387750ad47SMarcel Moolenaar# since we may pickup subdirs which are not relevant 397750ad47SMarcel Moolenaar# the alternative is a walk through the tree though 407750ad47SMarcel Moolenaar# which is difficult without a sub-make. 417750ad47SMarcel Moolenaar 427750ad47SMarcel Moolenaar.if defined(BOOTSTRAP_DEPENDFILES) 437750ad47SMarcel Moolenaar_find_name = ${.MAKE.MAKEFILE_PREFERENCE:@m@-o -name $m@:S,^-o,,1} 447750ad47SMarcel MoolenaarDIRDEPS = ${_subdeps:H:O:u:@d@${RELDIR}/$d@} 457750ad47SMarcel Moolenaar.elif ${.MAKE.DEPENDFILE:E} == ${MACHINE} && defined(ALL_MACHINES) 467750ad47SMarcel Moolenaar# we want to find Makefile.depend.* ie for all machines 477750ad47SMarcel Moolenaar# and turn the dirs into dir.<machine> 487750ad47SMarcel Moolenaar_find_name = -name '${.MAKE.DEPENDFILE:T:R}*' 497750ad47SMarcel MoolenaarDIRDEPS = ${_subdeps:O:u:${NIgnoreFiles}:@d@${RELDIR}/${d:H}.${d:E}@:S,.${MACHINE}$,,:S,.depend$,,} 507750ad47SMarcel Moolenaar.else 517750ad47SMarcel Moolenaar# much simpler 527750ad47SMarcel Moolenaar_find_name = -name ${.MAKE.DEPENDFILE:T} 537750ad47SMarcel Moolenaar.if ${.MAKE.DEPENDFILE:E} == ${MACHINE} 547750ad47SMarcel Moolenaar_find_name += -o -name ${.MAKE.DEPENDFILE:T:R} 557750ad47SMarcel Moolenaar.endif 567750ad47SMarcel MoolenaarDIRDEPS = ${_subdeps:H:O:u:@d@${RELDIR}/$d@} 577750ad47SMarcel Moolenaar.endif 587750ad47SMarcel Moolenaar 597750ad47SMarcel Moolenaar_subdeps != cd ${.CURDIR} && \ 607750ad47SMarcel Moolenaar find ${SUBDIR:N.WAIT} -type f \( ${_find_name} \) -print -o \ 617750ad47SMarcel Moolenaar -name .svn -prune 2> /dev/null; echo 627750ad47SMarcel Moolenaar 637750ad47SMarcel Moolenaar.if empty(_subdeps) 647750ad47SMarcel MoolenaarDIRDEPS = 657750ad47SMarcel Moolenaar.else 667750ad47SMarcel Moolenaar# clean up if needed 671e6a58edSBryan DreweryDIRDEPS := ${DIRDEPS:S,^./,,:S,/./,/,g:${SUBDIRDEPS_FILTER:Uu}} 687750ad47SMarcel Moolenaar.endif 697750ad47SMarcel Moolenaar# we just dealt with it, if we leave it defined, 707750ad47SMarcel Moolenaar# dirdeps.mk will compute some interesting combinations. 717750ad47SMarcel Moolenaar.undef ALL_MACHINES 727750ad47SMarcel Moolenaar 737750ad47SMarcel Moolenaar.include <dirdeps.mk> 747750ad47SMarcel Moolenaar.endif 757750ad47SMarcel Moolenaar.endif 767750ad47SMarcel Moolenaar.else 777750ad47SMarcel Moolenaarall: .PHONY 787750ad47SMarcel Moolenaar.endif 797750ad47SMarcel Moolenaar 807750ad47SMarcel Moolenaar.endif 81