ljh via Discussion list for automake <automake@gnu.org>, 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


Reply via email to