1# $NetBSD: directive-ifmake.mk,v 1.4 2020/08/30 14:25:45 rillig Exp $
2#
3# Tests for the .ifmake directive, which provides a shortcut for asking
4# whether a certain target is requested to be made from the command line.
5
6# This is the most basic form.
7.ifmake first
8.info ok: positive condition works
9.else
10.warning positive condition fails
11.endif
12
13# The not operator works as expected.
14# An alternative interpretation were that this condition is asking whether
15# the target "!first" was requested.  To distinguish this, see the next test.
16.ifmake !first
17.warning unexpected
18.else
19.info ok: negation works
20.endif
21
22# See if the exclamation mark really means "not", or if it is just part of
23# the target name.
24.ifmake !!first
25.info ok: double negation works
26.else
27.warning double negation fails
28.endif
29
30# Multiple targets can be combined using the && and || operators.
31.ifmake first && second
32.info ok: both mentioned
33.else
34.warning && does not work as expected
35.endif
36
37# Negation also works in complex conditions.
38.ifmake first && !unmentioned
39.info ok: only those mentioned
40.else
41.warning && with ! does not work as expected
42.endif
43
44# Using the .MAKEFLAGS special dependency target, arbitrary command
45# line options can be added at parse time.  This means that it is
46# possible to extend the targets to be made.
47.MAKEFLAGS: late-target
48.ifmake late-target
49.info Targets can even be added at parse time.
50.else
51.info No, targets cannot be added at parse time anymore.
52.endif
53
54first second unmentioned late-target:
55	: $@
56