make, list and M pattern
Giorgos Keramidas
keramida at ceid.upatras.gr
Tue Apr 7 14:09:46 PDT 2009
On Tue, 07 Apr 2009 23:54:13 +0400, Boris Samorodov <bsam at ipt.ru> wrote:
> Hello List,
>
> I need to create a list with some valid values and check an input
> value. Should this makefile work?
>
> -----
> LIST=f8 f9
>
> all:
> @echo USE_LINUX=${USE_LINUX}, LIST=${LIST}
> .if empty(LIST:M${USE_LINUX})
> @echo The value is invalid
> .else
> @echo The value is valid
> .endif
> -----
> % make USE_LINUX=f8
> USE_LINUX=f8, LIST=f8 f9
> The value is invalid
> -----
Hi Boris! :)
This is not exactly what you asked for, but you can probably loop
instead of trying to match regular expressions:
keramida at kobe:/tmp$ cat -n Makefile
1 LIST= f8 f9
2 USE_LINUX?= f9
3
4 LINUX_VERSION= ${USE_LINUX:C/[ ]*([^ ]*)[ ]*/\1/}
5
6 .if defined(USE_LINUX)
7 .for item in ${LIST}
8 .if ${USE_LINUX} == ${item}
9 RESULT= ${item}
10 .endif
11 .endfor
12 .endif
13
14 all:
15 .if empty(RESULT)
16 @echo Version ${LINUX_VERSION} is not valid.
17 .else
18 @echo Valid version ${RESULT} selected.
19 .endif
keramida at kobe:/tmp$ make
Valid version f9 selected.
keramida at kobe:/tmp$ make -e USE_LINUX=f10
Version f10 is not valid.
keramida at kobe:/tmp$
More information about the freebsd-questions
mailing list