From aeac90e6c5e9e3e30fafdb7cdc9c5c569fc6516b Mon Sep 17 00:00:00 2001 From: knu Date: Fri, 15 Feb 2013 13:25:28 +0000 Subject: [PATCH] Fix CFLAGS and CXXFLAGS in RbConfig::CONFIG on FreeBSD and NetBSD/amd64. * configure.in: Fix a bug introduced in r38342 that the cflagspat substitution is messed up by the way CFLAGS and optflags are modified, which affected FreeBSD and NetBSD/amd64 when configured to use libexecinfo. This bug resulted in CFLAGS and CXXFLAGS in RbConfig::CONFIG having warnflags expanded in them, forcing third-party C/C++ extensions to follow what warnflags demands, like ANSI/ISO-C90 conformance. ref [Bug #7101] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39255 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 10 ++++++++++ configure.in | 11 +++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 02853b2dc0..62cc0b39c6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +Fri Feb 15 22:21:37 2013 Akinori MUSHA + + * configure.in: Fix a bug introduced in r38342 that the cflagspat + substitution is messed up by the way CFLAGS and optflags are + modified, which affected FreeBSD and NetBSD/amd64 when + configured to use libexecinfo. This bug resulted in CFLAGS and + CXXFLAGS in RbConfig::CONFIG having warnflags expanded in them, + forcing third-party C/C++ extensions to follow what warnflags + demands, like ANSI/ISO-C90 conformance. ref [Bug #7101] + Fri Feb 15 20:29:11 2013 Tanaka Akira * ext/socket/sockport.h (SET_SIN_LEN): defined for strict-aliasing diff --git a/configure.in b/configure.in index e83cfb4897..64c7262f94 100644 --- a/configure.in +++ b/configure.in @@ -2421,8 +2421,15 @@ AS_CASE(["$target_cpu-$target_os"], execinfo_frame_pointer=no RUBY_TRY_CFLAGS(-fno-omit-frame-pointer, [execinfo_frame_pointer=yes]) if test "x$execinfo_frame_pointer" = xyes; then - optflags="${optflags+$optflags }-fno-omit-frame-pointer" - CFLAGS="$CFLAGS -fno-omit-frame-pointer" + # optflags must be manipulated very carefully. For the + # later cflagspat/cxxflagspat substitution to work, CFLAGS + # and CXXFLAGS must start exactly with the value of + # optflags. + CFLAGS="${CFLAGS# }"; CFLAGS="${CFLAGS#"$optflags "}" + CXXFLAGS="${CXXFLAGS# }"; CXXFLAGS="${CXXFLAGS#"$optflags "}" + RUBY_APPEND_OPTION(optflags, -fno-omit-frame-pointer) + CFLAGS=" $optflags $CFLAGS" + CXXFLAGS=" $optflags $CXXFLAGS" fi fi]) AC_CHECK_FUNCS(backtrace)