manpagez: man pages & more
info make
Home | html | info | man

File: make.info,  Node: Testing Flags,  Prev: Conditional Syntax,  Up: Conditionals

7.3 Conditionals that Test Flags
================================

You can write a conditional that tests 'make' command flags such as '-t'
by using the variable 'MAKEFLAGS' together with the 'findstring'
function (*note Functions for String Substitution and Analysis: Text
Functions.).  This is useful when 'touch' is not enough to make a file
appear up to date.

   Recall that 'MAKEFLAGS' will put all single-letter options (such as
'-t') into the first word, and that word will be empty if no
single-letter options were given.  To work with this, it's helpful to
add a value at the start to ensure there's a word: for example
'-$(MAKEFLAGS)'.

   The 'findstring' function determines whether one string appears as a
substring of another.  If you want to test for the '-t' flag, use 't' as
the first string and the first word of 'MAKEFLAGS' as the other.

   For example, here is how to arrange to use 'ranlib -t' to finish
marking an archive file up to date:

     archive.a: ...
     ifneq (,$(findstring t,$(firstword -$(MAKEFLAGS))))
             +touch archive.a
             +ranlib -t archive.a
     else
             ranlib archive.a
     endif

The '+' prefix marks those recipe lines as "recursive" so that they will
be executed despite use of the '-t' flag.  *Note Recursive Use of
'make': Recursion.

© manpagez.com 2000-2024
Individual documents may contain additional copyright information.