зеркало из https://github.com/github/ruby.git
* configure.in (warnflags): add -Werror=implicit-function-declaration
if available. * lib/mkmf.rb (init_mkmf): ignore warnings in mkmf tests. * test/mkmf/base.rb (setup, teardown): restore config values. * test/mkmf/test_flags.rb: split from test_find_executable.rb. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30550 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
ca6a75cd38
Коммит
b794a2bd8c
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
|||
Sat Jan 15 11:57:30 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* configure.in (warnflags): add -Werror=implicit-function-declaration
|
||||
if available.
|
||||
|
||||
* lib/mkmf.rb (init_mkmf): ignore warnings in mkmf tests.
|
||||
|
||||
* test/mkmf/base.rb (setup, teardown): restore config values.
|
||||
|
||||
* test/mkmf/test_flags.rb: split from test_find_executable.rb.
|
||||
|
||||
Sat Jan 15 10:04:14 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* ruby.c (process_options): autoload rubygems.
|
||||
|
|
10
configure.in
10
configure.in
|
@ -450,8 +450,14 @@ if test "$GCC:${warnflags+set}:no" = yes::no; then
|
|||
-Werror=pointer-arith \
|
||||
-Werror=write-strings \
|
||||
-Werror=declaration-after-statement \
|
||||
-Werror=shorten-64-to-32; do
|
||||
test "$particular_werror_flags" = yes || wflag=`echo x$wflag | sed 's/^x-Werror=/-W/'`
|
||||
-Werror=shorten-64-to-32 \
|
||||
-Werror-implicit-function-declaration \
|
||||
; do
|
||||
if test "$particular_werror_flags" = yes; then
|
||||
wflag=`echo x$wflag | sed 's/^x-Werror-/-Werror=/;s/^x//'`
|
||||
else
|
||||
wflag=`echo x$wflag | sed 's/^x-Werror=/-W/;s/^x//'`
|
||||
fi
|
||||
ok=no
|
||||
RUBY_TRY_CFLAGS($wflag, [warnflags="${warnflags+$warnflags }$wflag" ok=yes])
|
||||
AS_CASE([$ok:$wflag], [no:-Werror=*], [
|
||||
|
|
17
lib/mkmf.rb
17
lib/mkmf.rb
|
@ -1658,10 +1658,6 @@ VPATH = #{vpath.join(CONFIG['PATH_SEPARATOR'])}
|
|||
end
|
||||
possible_command = (proc {|s| s if /top_srcdir/ !~ s} unless $extmk)
|
||||
extconf_h = $extconf_h ? "-DRUBY_EXTCONF_H=\\\"$(RUBY_EXTCONF_H)\\\" " : $defs.join(" ") << " "
|
||||
if warnflags = CONFIG['warnflags'] and CONFIG['GCC'] == 'yes' and !$extmk
|
||||
# turn warnings into errors only for bundled extensions.
|
||||
warnflags = warnflags.gsub(/(\A|\s)-Werror=/, '\1-W')
|
||||
end
|
||||
mk << %{
|
||||
CC = #{CONFIG['CC']}
|
||||
CXX = #{CONFIG['CXX']}
|
||||
|
@ -1676,7 +1672,7 @@ RUBY_EXTCONF_H = #{$extconf_h}
|
|||
cflags = #{CONFIG['cflags']}
|
||||
optflags = #{CONFIG['optflags']}
|
||||
debugflags = #{CONFIG['debugflags']}
|
||||
warnflags = #{warnflags}
|
||||
warnflags = #{$warnflags}
|
||||
CFLAGS = #{$static ? '' : CONFIG['CCDLFLAGS']} #$CFLAGS #$ARCH_FLAG
|
||||
INCFLAGS = -I. #$INCFLAGS
|
||||
DEFS = #{CONFIG['DEFS']}
|
||||
|
@ -2107,12 +2103,21 @@ end
|
|||
|
||||
# :stopdoc:
|
||||
|
||||
def init_mkmf(config = CONFIG)
|
||||
def init_mkmf(config = CONFIG, rbconfig = RbConfig::CONFIG)
|
||||
$makefile_created = false
|
||||
$arg_config = []
|
||||
$enable_shared = config['ENABLE_SHARED'] == 'yes'
|
||||
$defs = []
|
||||
$extconf_h = nil
|
||||
if $warnflags = CONFIG['warnflags'] and CONFIG['GCC'] == 'yes'
|
||||
# turn warnings into errors only for bundled extensions.
|
||||
config['warnflags'] = $warnflags.gsub(/(\A|\s)-Werror[-=]/, '\1-W')
|
||||
RbConfig.expand(rbconfig['warnflags'] = config['warnflags'].dup)
|
||||
config.each do |key, val|
|
||||
RbConfig.expand(rbconfig[key] = val.dup) if /warnflags/ =~ val
|
||||
end
|
||||
$warnflags = config['warnflags'] unless $extmk
|
||||
end
|
||||
$CFLAGS = with_config("cflags", arg_config("CFLAGS", config["CFLAGS"])).dup
|
||||
$ARCH_FLAG = with_config("arch_flag", arg_config("ARCH_FLAG", config["ARCH_FLAG"])).dup
|
||||
$CPPFLAGS = with_config("cppflags", arg_config("CPPFLAGS", config["CPPFLAGS"])).dup
|
||||
|
|
|
@ -58,15 +58,53 @@ class TestMkmf < Test::Unit::TestCase
|
|||
end
|
||||
|
||||
def setup
|
||||
@rbconfig = rbconfig0 = RbConfig::CONFIG
|
||||
@mkconfig = mkconfig0 = RbConfig::MAKEFILE_CONFIG
|
||||
rbconfig = {
|
||||
"hdrdir" => $hdrdir,
|
||||
"srcdir" => $srcdir,
|
||||
"topdir" => $topdir,
|
||||
}
|
||||
mkconfig = {
|
||||
"hdrdir" => "$(top_srcdir)/include",
|
||||
"srcdir" => "$(top_srcdir)/ext/#{$mdir}",
|
||||
"topdir" => $topdir,
|
||||
}
|
||||
rbconfig0.each_pair {|key, val| rbconfig[key] ||= val.dup}
|
||||
mkconfig0.each_pair {|key, val| mkconfig[key] ||= val.dup}
|
||||
RbConfig.module_eval {
|
||||
remove_const(:CONFIG)
|
||||
const_set(:CONFIG, rbconfig)
|
||||
remove_const(:MAKEFILE_CONFIG)
|
||||
const_set(:MAKEFILE_CONFIG, mkconfig)
|
||||
}
|
||||
Object.class_eval {
|
||||
remove_const(:CONFIG)
|
||||
const_set(:CONFIG, mkconfig)
|
||||
}
|
||||
@tmpdir = Dir.mktmpdir
|
||||
@curdir = Dir.pwd
|
||||
@mkmfobj = Object.new
|
||||
@stdout = Capture.new
|
||||
Dir.chdir(@tmpdir)
|
||||
@quiet, Logging.quiet = Logging.quiet, true
|
||||
init_mkmf
|
||||
$INCFLAGS[0, 0] = "-I. "
|
||||
end
|
||||
|
||||
def teardown
|
||||
rbconfig0 = @rbconfig
|
||||
mkconfig0 = @mkconfig
|
||||
RbConfig.module_eval {
|
||||
remove_const(:CONFIG)
|
||||
const_set(:CONFIG, rbconfig0)
|
||||
remove_const(:MAKEFILE_CONFIG)
|
||||
const_set(:MAKEFILE_CONFIG, mkconfig0)
|
||||
}
|
||||
Object.class_eval {
|
||||
remove_const(:CONFIG)
|
||||
const_set(:CONFIG, mkconfig0)
|
||||
}
|
||||
Logging.quiet = @quiet
|
||||
Logging.log_close
|
||||
Dir.chdir(@curdir)
|
||||
|
|
|
@ -2,22 +2,6 @@ require_relative 'base'
|
|||
|
||||
class TestMkmf
|
||||
class TestFindExecutable < TestMkmf
|
||||
def test_valid_warnflags
|
||||
val = $extmk
|
||||
begin
|
||||
makefile = mkmf do
|
||||
$extmk = false
|
||||
self.class::CONFIG['warnflags'] = "-Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=shorten-64-to-32"
|
||||
self.class::CONFIG['GCC'] = 'yes'
|
||||
configuration '.'
|
||||
end
|
||||
generated_flags = makefile.grep(/warnflags/).first[/^warnflags = .*$/]
|
||||
assert_equal "warnflags = -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32", generated_flags
|
||||
ensure
|
||||
$extmk = val
|
||||
end
|
||||
end
|
||||
|
||||
def test_find_executable
|
||||
bug2669 = '[ruby-core:27912]'
|
||||
path, ENV["PATH"] = ENV["PATH"], path
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
require_relative 'base'
|
||||
|
||||
class TestMkmf
|
||||
class TestFlags < TestMkmf
|
||||
def test_valid_warnflags
|
||||
val = $extmk
|
||||
warnflags = $warnflags
|
||||
makefile = mkmf do
|
||||
$extmk = false
|
||||
self.class::CONFIG['warnflags'] = %w"-Wextra
|
||||
-Wno-unused-parameter -Wno-parentheses -Wno-long-long
|
||||
-Wno-missing-field-initializers -Werror=pointer-arith
|
||||
-Werror=write-strings -Werror=declaration-after-statement
|
||||
-Werror=shorten-64-to-32
|
||||
-Werror-implicit-function-declaration
|
||||
".join(' ')
|
||||
self.class::CONFIG['GCC'] = 'yes'
|
||||
init_mkmf(self.class::CONFIG)
|
||||
configuration '.'
|
||||
end
|
||||
generated_flags = makefile.grep(/warnflags/).first[/^warnflags = (.*)$/, 1].split
|
||||
|
||||
assert_equal %w"
|
||||
-Wextra -Wno-unused-parameter -Wno-parentheses
|
||||
-Wno-long-long -Wno-missing-field-initializers -Wpointer-arith
|
||||
-Wwrite-strings -Wdeclaration-after-statement
|
||||
-Wshorten-64-to-32 -Wimplicit-function-declaration
|
||||
", generated_flags
|
||||
|
||||
ensure
|
||||
$warnflags = warnflags
|
||||
$extmk = val
|
||||
end
|
||||
end
|
||||
end
|
Загрузка…
Ссылка в новой задаче