Re: if vs. ifdef in Makefile.am

Bogdan <[email protected]>
Newsgroups gmane.comp.sysutils.automake.general
Message-ID <[email protected]>
ljh via Discussion list for automake <[email protected]>, Wed Mar 01 
2023 19:50:56 GMT+0100 (Central European Standard Time)
> Hi community,
> 
> 
> I want to build debug or release with&nbsp;
> 
> 
> ```
> $ make # NDEBUG=1
> $ make NDEBUG=1
> ```
> 
> 
> Can I have automake.am to define and convey something like this to the output Makefile:
> 
> 
> ```
> ifdef NDEBUG &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # if vs. ifdef
> CPPFLAGS += -DNDEBUG
> CFLAGS += -O3 # .cpp
> else
> CFLAGS += -g # .cpp
> LDFLAGS += -fsanitize=address
> endif
> ```
> 
> 
> But it seems I can only write `if` but not `ifdef` in Makefile.am.
> 
> 
> So I had to enable ndebug option in configure.ac. That's a lot more work.
> 
> 
> 
> Thanks


Hi.

  Just adding my 2 cents...
  I hope I won't be saying something silly or obvious here, but maybe 
you can pass the actual flags on the command line as a new variable 
and include it *unconditionally* in the Makefile.am (expanding to 
empty if not defined).
  Sure, that's more troublesome, but at least you can have this 
working even now, I guess.

# Makefile.am:
AM_CPPFLAGS = ... $(MY_CPPFLAGS) ...
AM_CFLAGS = ... $(MY_CFLAGS) ...
AM_LDFLAGS = ... $(MY_LDFLAGS) ...

A single 'autoreconf'/'automake' invocation later and you can do:

# release build:
make MY_CFLAGS=-g MY_LDFLAGS=-fsanitize=address

# debug build:
make MY_CFLAGS=-O3 MY_CPPFLAGS=-DNDEBUG

  Probably Nick's suggestion (a new option to ./configure or the 
AC_HEADER_ASSERT macro) would be the most future-proof, but it 
requires running ./configure each time you wish to change the build 
type (which maybe is not a bad idea, it depends).

-- 
Regards - Bogdan ('bogdro') D.                 (GNU/Linux & FreeDOS)
X86 assembly (DOS, GNU/Linux):    http://bogdro.evai.pl/index-en.php
Soft(EN): http://bogdro.evai.pl/soft  http://bogdro.evai.pl/soft4asm
www.Xiph.org  www.TorProject.org  www.LibreOffice.org  www.GnuPG.org
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.