tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Improvement for bmake: boolean values
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.
--
Best regards, Aleksey Cheusov.
Home |
Main Index |
Thread Index |
Old Index