On Mon, 2 May 2022, Philip Prindeville wrote:
Hi, I was wondering how to do discovery of functions like open_memstream() which is only exposed by <features.h> when compilation used -D_GNU_SOURCE or -D_POSIX_C_SOURCE=200809L. It might be the case that I compile everything with a certain flag, or I might just compile one-off modules such as: time.o: _ASTCFLAGS+=-D_XOPEN_SOURCE=700 What's best practices for handling situations like this? How do I bracket a particular AC_CHECK_FUNCS() invocation with defines that might be critical? I tried using: save_CFLAGS="$CFLAGS" CFLAGS="CFLAGS -D_POSIX_C_SOURCE=200809L" AC_CHECK_FUNCS([open_memstream]) CFLAGS="$save_CFLAGS"
Normally one should use CPPFLAGS rather than CFLAGS for options pertaining to the C pre-processor.
When library function availability is checked, it is normally done using the linker.
When in doubt, check config.log, which will show the test program and steps which were used while performing the test.
It is not wise to mix C/OS standard influencing pre-processor options when compiling since they may require a different ABI, which could be provided by alternate libraries. It might not be possible to support more than one ABI at a time.
Bob -- Bob Friesenhahn bfriesen@xxxxxxxxxxxxxxxxxxx, http://www.simplesystems.org/users/bfriesen/ GraphicsMagick Maintainer, http://www.GraphicsMagick.org/ Public Key, http://www.simplesystems.org/users/bfriesen/public-key.txt