Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

autoconf: should I always use AS_IF over if and m4_if?

Tags:

shell

autoconf

m4

The autoconf manual suggest using AS_IF instead of if, but it doesn't mention m4_if. Should AS_IF also be preferred over m4_if?

The "Limitations of Builtins" section of the manual says to use AS_IF for it's portability, but the AC_REQUIRE description says to use it to expand required macros.

Should I always use AS_IF? The answer seems to be yes, but then again I see if and m4_if being used in other macros. When is it ok not to use AS_IF?

like image 416
tprk77 Avatar asked Jan 06 '13 21:01

tprk77


2 Answers

I was confused about this because I didn't realize the fundamental difference between if/AS_IF and m4_if. The normal if and AS_IF have their conditionals evaluated when the user runs the script, i.e. configure. Conversely, m4_if has its conditional evaluated during macro expansion, i.e. autoreconf.

if/AS_IF affects the flow of the script. m4_if affects the contents of the script.

This seems obvious now, but I didn't get it at first. Hopefully this helps someone else.

like image 128
tprk77 Avatar answered Nov 01 '22 21:11

tprk77


The other benefit of AS_IF is that when it expands, any macros that are required by macros in the branches are expanded before the test.

See the manual.

like image 27
Jack Kelly Avatar answered Nov 01 '22 21:11

Jack Kelly