summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-03-29 07:42:20 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-03-29 07:42:20 +0000
commit09651f04313f679e9eaa604c64d7e62a6ce58eab (patch)
tree68312744c6252a544a65bbb961322fc80690d1db /lib
parent8e565c612d6b6d6c3e1ece97554f910c9576d100 (diff)
* lib/mkmf.rb (arg_config): should use Shellwords::shellwords like
ext/extmk.rb.in. * lib/mkmf.rb (enable_config): default had priority over command line options and configure_args. * lib/mkmf.rb: support autoconf 2.53 style variables from environment. * lib/mkmf.rb: add directory options. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2303 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r--lib/mkmf.rb52
1 files changed, 35 insertions, 17 deletions
diff --git a/lib/mkmf.rb b/lib/mkmf.rb
index 8b8363af82..f0a846a25d 100644
--- a/lib/mkmf.rb
+++ b/lib/mkmf.rb
@@ -3,13 +3,33 @@
require 'rbconfig'
require 'find'
+require 'shellwords'
CONFIG = Config::MAKEFILE_CONFIG
ORIG_LIBPATH = ENV['LIB']
SRC_EXT = ["c", "cc", "m", "cxx", "cpp", "C"]
-$config_cache = CONFIG["compile_dir"]+"/ext/config.cache"
+unless defined? $configure_args
+ $configure_args = {}
+ for arg in Shellwords.shellwords(CONFIG["configure_args"])
+ arg, val = arg.split('=', 2)
+ if arg.sub!(/^(?!--)/, '--')
+ val or next
+ arg.downcase!
+ end
+ next if /^--(?:top|topsrc|src|cur)dir$/ =~ arg
+ $configure_args[arg] = val || true
+ end
+ for arg in ARGV
+ arg, val = arg.split('=', 2)
+ if arg.sub!(/^(?!--)/, '--')
+ val or next
+ arg.downcase!
+ end
+ $configure_args[arg] = val || true
+ end
+end
$srcdir = CONFIG["srcdir"]
$libdir = CONFIG["libdir"]
@@ -295,14 +315,6 @@ SRC
end
def arg_config(config, default=nil)
- unless defined? $configure_args
- $configure_args = {}
- for arg in CONFIG["configure_args"].split + ARGV
- next unless /^--/ =~ arg
- arg, val = arg.split('=', 2)
- $configure_args[arg] = val || true
- end
- end
$configure_args.fetch(config, default)
end
@@ -314,9 +326,9 @@ def with_config(config, default=nil)
end
def enable_config(config, default=nil)
- if arg_config("--enable-"+config, default)
+ if arg_config("--enable-"+config)
true
- elsif arg_config("--disable-"+config, false)
+ elsif arg_config("--disable-"+config)
false
else
default
@@ -361,7 +373,7 @@ def with_destdir(dir)
/^\$[\(\{]/ =~ dir ? dir : "$(DESTDIR)"+dir
end
-def create_makefile(target, srcdir = File.dirname($0))
+def create_makefile(target, srcdir = $srcdir)
save_libs = $libs.dup
save_libpath = $LIBPATH.dup
print "creating Makefile\n"
@@ -386,6 +398,7 @@ def create_makefile(target, srcdir = File.dirname($0))
$configure_args['--enable-shared'] or $LIBPATH |= [$topdir]
$LIBPATH |= [CONFIG["libdir"]]
+ srcdir ||= '.'
defflag = ''
if RUBY_PLATFORM =~ /cygwin|mingw/
deffile = target + '.def'
@@ -413,7 +426,7 @@ def create_makefile(target, srcdir = File.dirname($0))
unless $objs then
$objs = []
- for f in Dir[File.join(srcdir || ".", "*.{#{SRC_EXT.join(%q{,})}}")]
+ for f in Dir[File.join(srcdir, "*.{#{SRC_EXT.join(%q{,})}}")]
f = File.basename(f)
f.sub!(/(#{SRC_EXT.join(%q{|})})$/, $OBJEXT)
$objs.push f
@@ -432,7 +445,7 @@ SHELL = /bin/sh
#### Start of system configuration section. ####
-srcdir = #{srcdir || $srcdir}
+srcdir = #{srcdir}
topdir = #{$topdir}
hdrdir = #{$hdrdir}
VPATH = $(srcdir)
@@ -604,9 +617,14 @@ $defs = []
$make = with_config("make-prog", ENV["MAKE"] || "make")
-$CFLAGS = with_config("cflags", "")
-$CPPFLAGS = with_config("cppflags", "")
-$LDFLAGS = with_config("ldflags", "")
+$CFLAGS = with_config("cflags", arg_config("CFLAGS"))
+$CPPFLAGS = with_config("cppflags", arg_config("CPPFLAGS"))
+$LDFLAGS = with_config("ldflags", arg_config("LDFLAGS"))
$LIBPATH = []
dir_config("opt")
+
+$srcdir = arg_config("--srcdir", File.dirname($0))
+$configure_args["--topsrcdir"] ||= $srcdir
+$curdir = arg_config("--curdir", Dir.pwd)
+$configure_args["--topdir"] ||= $curdir