vendor/bmake: upgrade from 20210206 to 20210314
[dragonfly.git] / contrib / bmake / mk / init.mk
1 # $Id: init.mk,v 1.25 2020/11/27 17:59:46 sjg Exp $
2 #
3 #       @(#) Copyright (c) 2002, 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}__:
18
19 .if ${MAKE_VERSION:U0} > 20100408
20 _this_mk_dir := ${.PARSEDIR:tA}
21 .else
22 _this_mk_dir := ${.PARSEDIR}
23 .endif
24
25 .-include <local.init.mk>
26 .-include <${.CURDIR:H}/Makefile.inc>
27 .include <own.mk>
28 .include <compiler.mk>
29
30 .MAIN:          all
31
32 # should have been set by sys.mk
33 CXX_SUFFIXES?= .cc .cpp .cxx .C
34
35 .if !empty(WARNINGS_SET) || !empty(WARNINGS_SET_${MACHINE_ARCH})
36 .include <warnings.mk>
37 .endif
38
39 # these are applied in order, least specific to most
40 VAR_QUALIFIER_LIST += \
41         ${TARGET_SPEC_VARS:UMACHINE:@v@${$v}@} \
42         ${COMPILER_TYPE} \
43         ${.TARGET:T:R} \
44         ${.TARGET:T} \
45         ${.IMPSRC:T} \
46         ${VAR_QUALIFIER_XTRA_LIST}
47
48 QUALIFIED_VAR_LIST += \
49         CFLAGS \
50         COPTS \
51         CPPFLAGS \
52         CPUFLAGS \
53         LDFLAGS \
54
55 # a final :U avoids errors if someone uses :=
56 .for V in ${QUALIFIED_VAR_LIST:O:u:@q@$q $q_LAST@}
57 .for Q in ${VAR_QUALIFIER_LIST:u}
58 $V += ${$V.$Q:U} ${$V.$Q.${COMPILER_TYPE}:U}
59 .endfor
60 .endfor
61
62 CC_PG?= -pg
63 CXX_PG?= ${CC_PG}
64 CC_PIC?= -DPIC
65 CXX_PIC?= ${CC_PIC}
66 PROFFLAGS?= -DGPROF -DPROF
67
68 .if ${.MAKE.LEVEL:U1} == 0 && ${MK_DIRDEPS_BUILD:Uno} == "yes"
69 # targets that are ok at level 0
70 DIRDEPS_BUILD_LEVEL0_TARGETS += clean* destroy*
71 M_ListToSkip?= O:u:S,^,N,:ts:
72 .if ${.TARGETS:Uall:${DIRDEPS_BUILD_LEVEL0_TARGETS:${M_ListToSkip}}} != ""
73 # this tells lib.mk and prog.mk to not actually build anything
74 _SKIP_BUILD = not building at level 0
75 .endif
76 .endif
77
78 .if !defined(.PARSEDIR)
79 # no-op is the best we can do if not bmake.
80 .WAIT:
81 .endif
82
83 # define this once for consistency
84 .if !defined(_SKIP_BUILD)
85 # beforebuild is a hook for things that must be done early
86 all: beforebuild .WAIT realbuild
87 .else
88 all: .PHONY
89 .if !empty(_SKIP_BUILD) && ${.MAKEFLAGS:M-V} == ""
90 .warning ${_SKIP_BUILD}
91 .endif
92 .endif
93 beforebuild:
94 realbuild:
95
96 .endif