* 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:
parent
ca6a75cd38
commit
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>
|
Sat Jan 15 10:04:14 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* ruby.c (process_options): autoload rubygems.
|
* 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=pointer-arith \
|
||||||
-Werror=write-strings \
|
-Werror=write-strings \
|
||||||
-Werror=declaration-after-statement \
|
-Werror=declaration-after-statement \
|
||||||
-Werror=shorten-64-to-32; do
|
-Werror=shorten-64-to-32 \
|
||||||
test "$particular_werror_flags" = yes || wflag=`echo x$wflag | sed 's/^x-Werror=/-W/'`
|
-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
|
ok=no
|
||||||
RUBY_TRY_CFLAGS($wflag, [warnflags="${warnflags+$warnflags }$wflag" ok=yes])
|
RUBY_TRY_CFLAGS($wflag, [warnflags="${warnflags+$warnflags }$wflag" ok=yes])
|
||||||
AS_CASE([$ok:$wflag], [no:-Werror=*], [
|
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
|
end
|
||||||
possible_command = (proc {|s| s if /top_srcdir/ !~ s} unless $extmk)
|
possible_command = (proc {|s| s if /top_srcdir/ !~ s} unless $extmk)
|
||||||
extconf_h = $extconf_h ? "-DRUBY_EXTCONF_H=\\\"$(RUBY_EXTCONF_H)\\\" " : $defs.join(" ") << " "
|
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 << %{
|
mk << %{
|
||||||
CC = #{CONFIG['CC']}
|
CC = #{CONFIG['CC']}
|
||||||
CXX = #{CONFIG['CXX']}
|
CXX = #{CONFIG['CXX']}
|
||||||
@ -1676,7 +1672,7 @@ RUBY_EXTCONF_H = #{$extconf_h}
|
|||||||
cflags = #{CONFIG['cflags']}
|
cflags = #{CONFIG['cflags']}
|
||||||
optflags = #{CONFIG['optflags']}
|
optflags = #{CONFIG['optflags']}
|
||||||
debugflags = #{CONFIG['debugflags']}
|
debugflags = #{CONFIG['debugflags']}
|
||||||
warnflags = #{warnflags}
|
warnflags = #{$warnflags}
|
||||||
CFLAGS = #{$static ? '' : CONFIG['CCDLFLAGS']} #$CFLAGS #$ARCH_FLAG
|
CFLAGS = #{$static ? '' : CONFIG['CCDLFLAGS']} #$CFLAGS #$ARCH_FLAG
|
||||||
INCFLAGS = -I. #$INCFLAGS
|
INCFLAGS = -I. #$INCFLAGS
|
||||||
DEFS = #{CONFIG['DEFS']}
|
DEFS = #{CONFIG['DEFS']}
|
||||||
@ -2107,12 +2103,21 @@ end
|
|||||||
|
|
||||||
# :stopdoc:
|
# :stopdoc:
|
||||||
|
|
||||||
def init_mkmf(config = CONFIG)
|
def init_mkmf(config = CONFIG, rbconfig = RbConfig::CONFIG)
|
||||||
$makefile_created = false
|
$makefile_created = false
|
||||||
$arg_config = []
|
$arg_config = []
|
||||||
$enable_shared = config['ENABLE_SHARED'] == 'yes'
|
$enable_shared = config['ENABLE_SHARED'] == 'yes'
|
||||||
$defs = []
|
$defs = []
|
||||||
$extconf_h = nil
|
$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
|
$CFLAGS = with_config("cflags", arg_config("CFLAGS", config["CFLAGS"])).dup
|
||||||
$ARCH_FLAG = with_config("arch_flag", arg_config("ARCH_FLAG", config["ARCH_FLAG"])).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
|
$CPPFLAGS = with_config("cppflags", arg_config("CPPFLAGS", config["CPPFLAGS"])).dup
|
||||||
|
@ -58,15 +58,53 @@ class TestMkmf < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def setup
|
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
|
@tmpdir = Dir.mktmpdir
|
||||||
@curdir = Dir.pwd
|
@curdir = Dir.pwd
|
||||||
@mkmfobj = Object.new
|
@mkmfobj = Object.new
|
||||||
@stdout = Capture.new
|
@stdout = Capture.new
|
||||||
Dir.chdir(@tmpdir)
|
Dir.chdir(@tmpdir)
|
||||||
@quiet, Logging.quiet = Logging.quiet, true
|
@quiet, Logging.quiet = Logging.quiet, true
|
||||||
|
init_mkmf
|
||||||
|
$INCFLAGS[0, 0] = "-I. "
|
||||||
end
|
end
|
||||||
|
|
||||||
def teardown
|
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.quiet = @quiet
|
||||||
Logging.log_close
|
Logging.log_close
|
||||||
Dir.chdir(@curdir)
|
Dir.chdir(@curdir)
|
||||||
|
@ -2,22 +2,6 @@ require_relative 'base'
|
|||||||
|
|
||||||
class TestMkmf
|
class TestMkmf
|
||||||
class TestFindExecutable < 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
|
def test_find_executable
|
||||||
bug2669 = '[ruby-core:27912]'
|
bug2669 = '[ruby-core:27912]'
|
||||||
path, ENV["PATH"] = ENV["PATH"], path
|
path, ENV["PATH"] = ENV["PATH"], path
|
||||||
|
35
test/mkmf/test_flags.rb
Normal file
35
test/mkmf/test_flags.rb
Normal file
@ -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
|
Loading…
x
Reference in New Issue
Block a user