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