[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
disabling -O on gcc platforms
From: |
Christoph Rupp |
Subject: |
disabling -O on gcc platforms |
Date: |
Sun, 17 Dec 2006 18:26:41 +0000 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.5) Gecko/20060922 SeaMonkey/1.0.3 |
Hi!
This weekend, i migrated my project
(http://freshmeat.net/projects/hamsterdb/) from scons to autotools. It
was quite easy.
However, i have one problem, and after searching the web and the
autoconf mailing list, i did found some results, but it was not exactly
what i needed. The problem is that if my library is compiled with gcc <
4.1.1, then EVERY optimization flag (even -O0) breaks the library. I
therefore have to completely get rid of optimization if an older gcc is
used.
I have written a macro to recognize such gcc compilers; but how do i get
rid of -O? It seems that per default, CFLAGS is "-O2 -g"; i don't know
why -g is enabled, i'm not making debug builds. I therefore *could*
completely clear CFLAGS. But i don't know if that's a good idea - maybe
other unix platforms have other flags which would then be missed.
Here's the macro for configure.in:
if test "$GCC" = yes ; then
AC_MSG_CHECKING(whether gcc version is older than 4.1.1)
AC_TRY_COMPILE(,
[#define GCC_VERSION (__GNUC__ * 10000 \
+ __GNUC_MINOR__ * 100 \
+ __GNUC_PATCHLEVEL__)
#if GCC_VERSION<40101
# error "gcc too old, disabling optimizations"
#endif
int main(void) { return 0; }],
gcc_version_ok=yes,
gcc_version_ok=no)
if test $gcc_version_ok != yes; then
AC_MSG_RESULT(Yes, disabling optimizations)
else
AC_MSG_RESULT(No, enabling optimizations)
fi
fi
AM_CONDITIONAL(ENABLE_GCC_OPTIMIZATION, test x$gcc_version_ok = xyes)
And here's the code from Makefile.am. Currently, it completely deletes
CFLAGS if GCC is used, and then enables -O3, if we're not in DEBUG mode
and ENABLE_GCC_OPTIMIZATION is set:
if USING_GCC
CFLAGS =
endif
if DEBUG
AM_CFLAGS += -DDEBUG -DHAM_DEBUG
else
AM_CFLAGS += -DHAM_RELEASE -ffast-math
if ENABLE_GCC_OPTIMIZATION
AM_CFLAGS += -O3 -ffast-math
endif
endif
Thanks,
Chris
- disabling -O on gcc platforms,
Christoph Rupp <=