]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - share/mk/sys.dependfile.mk
zfs: merge openzfs/zfs@f795e90a1
[FreeBSD/FreeBSD.git] / share / mk / sys.dependfile.mk
1 # $Id: sys.dependfile.mk,v 1.10 2023/05/10 19:23:26 sjg Exp $
2 #
3 #       @(#) Copyright (c) 2012-2023, Simon J. Gerraty
4 #
5 #       This file is provided in the hope that it will
6 #       be of use.  There is absolutely NO WARRANTY.
7 #       Permission to copy, redistribute or otherwise
8 #       use this file is hereby granted provided that
9 #       the above copyright notice and this notice are
10 #       left intact.
11 #
12 #       Please send copies of changes and bug-fixes to:
13 #       sjg@crufty.net
14 #
15
16 .if !target(__${.PARSEFILE}__)
17 __${.PARSEFILE}__: .NOTMAIN
18
19 # This only makes sense for DIRDEPS_BUILD.
20 # This allows a mixture of auto generated as well as manually edited
21 # dependency files, which can be differentiated by their names.
22 # As per dirdeps.mk we only require:
23 # 1. a common prefix
24 # 2. that machine specific files end in .${MACHINE}
25 #
26 # The .MAKE.DEPENDFILE_PREFERENCE below is an example.
27
28 # All depend file names should start with this
29 .MAKE.DEPENDFILE_PREFIX ?= Makefile.depend
30
31 .if !empty(.MAKE.DEPENDFILE) && \
32         ${.MAKE.DEPENDFILE:M${.MAKE.DEPENDFILE_PREFIX}*} == ""
33 # let us do our thing below...
34 .undef .MAKE.DEPENDFILE
35 .endif
36
37 # The order of preference: we will use the first one of these we find.
38 # It usually makes sense to order from most specific to least.
39 .MAKE.DEPENDFILE_PREFERENCE ?= \
40         ${.CURDIR}/${.MAKE.DEPENDFILE_PREFIX}.${MACHINE} \
41         ${.CURDIR}/${.MAKE.DEPENDFILE_PREFIX}
42
43 # Normally the 1st entry is our default choice
44 # Another useful default is ${.MAKE.DEPENDFILE_PREFIX}
45 .MAKE.DEPENDFILE_DEFAULT ?= ${.MAKE.DEPENDFILE_PREFERENCE:[1]}
46
47 _e := ${.MAKE.DEPENDFILE_PREFERENCE:@m@${exists($m):?$m:}@}
48 .if !empty(_e)
49 .MAKE.DEPENDFILE := ${_e:[1]}
50 .elif ${.MAKE.DEPENDFILE_PREFERENCE:M*${MACHINE}} != "" && ${.MAKE.DEPENDFILE_DEFAULT:E} != ${MACHINE}
51 # MACHINE specific depend files are supported, but *not* default.
52 # If any already exist, we should follow suit.
53 _aml = ${ALL_MACHINE_LIST:Uarm amd64 i386 powerpc:N${MACHINE}} ${MACHINE}
54 # make sure we restore MACHINE
55 _m := ${MACHINE}
56 _e := ${_aml:@MACHINE@${.MAKE.DEPENDFILE_PREFERENCE:@m@${exists($m):?$m:}@}@}
57 MACHINE := ${_m}
58 .if !empty(_e)
59 .MAKE.DEPENDFILE ?= ${.MAKE.DEPENDFILE_PREFERENCE:M*${MACHINE}:[1]}
60 .endif
61 .endif
62 .MAKE.DEPENDFILE ?= ${.MAKE.DEPENDFILE_DEFAULT}
63
64 .endif