mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* 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
					
				
					 6 changed files with 103 additions and 24 deletions
				
			
		
							
								
								
									
										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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										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…
	
	Add table
		Add a link
		
	
		Reference in a new issue