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