tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Improvement for bmake: boolean values
On Wed, Mar 25, 2009 at 01:57:30PM +0200, Aleksey Cheusov wrote:
> In both 4.4BSD bsd.*.mk files and pkgsrc mk files boolean variables are
> widely used: MKMAN, MKCATPAGES, USE_LIBTOOL and tons of others.
>
> One traditional way to represent boolean values is to use YES/NO strings
> for representing true/false respectively. Another widely used practice
> is to use 1/0 values.
>
> In my view YES/NO looks better/easier than 1/0 for human.
> On the other hand 1/0 values make mk code much easier and cleaner.
>
> Problems:
> 1) there are two incompatible way to represent boolean values.
> In pkgsrc there is a special secret table (ask tnn@)
> listing variables and their true/false values
> 2) empty{MKCATPAGES:M[Nn][Oo]} looks very ugly and make the code dirty
> 3) empty{MKCATPAGES:M[Nn][Oo]} is not equivalent to
> !empty{MKCATPAGES:M[Yy][Ee][Ss]}
> (other/bad values are treated as either true or false)
>
> To solve these problems I propose to implement new function for
> bmake, say "yesno", treating 1 and [Yy][Ee][Ss] as logical true,
> and 0 and [Nn][Oo] as logical false.
>
> Example:
> MKMAN = yes # or YES|...|NO|No|nO|1|0
> ...
> .if yesno(MKMAN)
> # make man pages here
> .else
> # do not make man pages here
> .end
>
> In my view this can make mk code cleaner and boolean values in bmake
> much easier to understand and use.
> I think this approach closes the problem once and forever.
Personally I like this idea. :)
Masao
Home |
Main Index |
Thread Index |
Old Index