Issue #8762 has been updated by tmm1 (Aman Gupta).

Status changed from Rejected to Open
Assignee set to nobu (Nobuyoshi Nakada)
Priority changed from Low to Normal
Target version set to current: 2.1.0

I believe this is still a bug.

If I compile ruby with a custom CFLAGS, the build will lose all optimization and warning flags:

$ CFLAGS="-I/opt/include " ./configure >/dev/null && make -n gc.o
gcc -I/opt/include  -D_FORTIFY_SOURCE=2 -fstack-protector -fno-strict-overflow -fvisibility=hidden -DRUBY_EXPORT -fPIE   -I. -I.ext/include/x86_64-linux -I./include -I. -o gc.o -c gc.c

$ ./configure >/dev/null && make -n gc.o
gcc -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=implicit-function-declaration -ansi -std=iso9899:199409  -D_FORTIFY_SOURCE=2 -fstack-protector -fno-strict-overflow -fvisibility=hidden -DRUBY_EXPORT -fPIE   -I. -I.ext/include/x86_64-linux -I./include -I. -o gc.o -c gc.c

This issue is resolved in my environment with the following patch:

diff --git a/Makefile.in b/Makefile.in
index 98749de..e6b82df 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -57,7 +57,7 @@ CC_VERSION = @CC_VERSION@
 OUTFLAG = @OUTFLAG@$(empty)
 COUTFLAG = @COUTFLAG@$(empty)
 ARCH_FLAG = @ARCH_FLAG@
-CFLAGS = @CFLAGS@ $(ARCH_FLAG)
+CFLAGS = $(cflags) @CFLAGS@ $(ARCH_FLAG)
 cflags = @cflags@
 optflags = @optflags@
 debugflags = @debugflags@
diff --git a/configure.in b/configure.in
index 88d24ee..99d78e4 100644
--- a/configure.in
+++ b/configure.in
@@ -852,7 +852,7 @@ if test "$GCC" = yes; then
     done
 fi
 
-test -z "${ac_env_CFLAGS_set}" -a -n "${cflags+set}" && eval CFLAGS="\"$cflags $ARCH_FLAG\""
+test -z "${ac_env_CFLAGS_set}" -a -n "${ARCH_FLAG+set}" && eval CFLAGS="\"$ARCH_FLAG\""
 test -z "${ac_env_CXXFLAGS_set}" -a -n "${cxxflags+set}" && eval CXXFLAGS="\"$cxxflags $ARCH_FLAG\""
 
 }

----------------------------------------
Bug #8762: CFLAGS and LDFLAGS are not set properly in Makefile when they are already set as environment variables
https://bugs.ruby-lang.org/issues/8762#change-43486

Author: charliesome (Charlie Somerville)
Status: Open
Priority: Normal
Assignee: nobu (Nobuyoshi Nakada)
Category: 
Target version: current: 2.1.0
ruby -v: trunk
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


When the environment variable CFLAGS does not exist, running the ./configure script outputs this to the Makefile:

    # ./configure && grep ^CFLAGS Makefile
    ...configure output...
    CFLAGS = ${cflags} $(ARCH_FLAG)

However, setting the environment variable CFLAGS to anything (even the empty string) causes ${cflags} to not be included in the CFLAGS written to the Makefile:

    # CFLAGS= ./configure && grep ^CFLAGS Makefile
    ...configure output...
    CFLAGS =  $(ARCH_FLAG)

The same happens with LDFLAGS. I believe this is what is breaking trunk compilation for both myself and spastorino in #8759.


-- 
http://bugs.ruby-lang.org/