2002-12-26 09:59:35 -05:00
|
|
|
#! /usr/local/bin/ruby
|
2002-09-08 05:08:15 -04:00
|
|
|
# -*- ruby -*-
|
|
|
|
|
2006-09-08 15:48:22 -04:00
|
|
|
$extension = nil
|
|
|
|
$extstatic = nil
|
2002-09-08 05:08:15 -04:00
|
|
|
$force_static = nil
|
|
|
|
$install = nil
|
|
|
|
$destdir = nil
|
2006-09-08 15:48:22 -04:00
|
|
|
$dryrun = false
|
2002-09-08 05:08:15 -04:00
|
|
|
$clean = nil
|
|
|
|
$nodynamic = nil
|
|
|
|
$extinit = nil
|
|
|
|
$extobjs = nil
|
2006-09-08 15:48:22 -04:00
|
|
|
$extflags = ""
|
|
|
|
$extlibs = nil
|
|
|
|
$extpath = nil
|
2002-12-31 07:31:12 -05:00
|
|
|
$ignore = nil
|
|
|
|
$message = nil
|
2002-09-08 05:08:15 -04:00
|
|
|
|
2003-01-05 15:11:20 -05:00
|
|
|
$progname = $0
|
|
|
|
alias $PROGRAM_NAME $0
|
|
|
|
alias $0 $progname
|
|
|
|
|
2002-09-08 05:08:15 -04:00
|
|
|
$extlist = []
|
2005-02-06 09:51:44 -05:00
|
|
|
$compiled = {}
|
2002-09-08 05:08:15 -04:00
|
|
|
|
2005-04-18 11:01:21 -04:00
|
|
|
$:.replace([Dir.pwd])
|
2002-09-08 05:08:15 -04:00
|
|
|
require 'rbconfig'
|
|
|
|
|
2005-05-13 10:44:59 -04:00
|
|
|
srcdir = File.dirname(File.dirname(__FILE__))
|
2002-09-08 05:08:15 -04:00
|
|
|
|
2005-05-13 10:44:59 -04:00
|
|
|
$:.unshift(srcdir, File.expand_path("lib", srcdir))
|
2002-09-08 05:08:15 -04:00
|
|
|
|
2004-02-21 00:33:24 -05:00
|
|
|
$topdir = "."
|
2002-09-08 08:59:08 -04:00
|
|
|
$top_srcdir = srcdir
|
2004-03-18 04:50:14 -05:00
|
|
|
|
|
|
|
require 'mkmf'
|
|
|
|
require 'optparse/shellwords'
|
2002-09-08 05:08:15 -04:00
|
|
|
|
2002-12-31 07:31:12 -05:00
|
|
|
def sysquote(x)
|
2003-01-05 02:04:10 -05:00
|
|
|
@quote ||= /human|os2|macos/ =~ (CROSS_COMPILING || RUBY_PLATFORM)
|
|
|
|
@quote ? x.quote : x
|
2002-12-31 07:31:12 -05:00
|
|
|
end
|
|
|
|
|
2005-02-09 22:09:27 -05:00
|
|
|
def extract_makefile(makefile, keep = true)
|
2005-02-06 09:51:44 -05:00
|
|
|
m = File.read(makefile)
|
|
|
|
if !(target = m[/^TARGET[ \t]*=[ \t]*(\S*)/, 1])
|
2005-02-09 22:09:27 -05:00
|
|
|
return keep
|
2005-02-06 09:51:44 -05:00
|
|
|
end
|
|
|
|
installrb = {}
|
|
|
|
m.scan(/^install-rb-default:[ \t]*(\S+)\n\1:[ \t]*(\S+)/) {installrb[$2] = $1}
|
|
|
|
oldrb = installrb.keys.sort
|
|
|
|
newrb = install_rb(nil, "").collect {|d, *f| f}.flatten.sort
|
|
|
|
if target_prefix = m[/^target_prefix[ \t]*=[ \t]*\/(.*)/, 1]
|
|
|
|
target = "#{target_prefix}/#{target}"
|
2005-02-18 20:43:58 -05:00
|
|
|
end
|
|
|
|
unless oldrb == newrb
|
|
|
|
if $extout
|
|
|
|
newrb.each {|f| installrb.delete(f)}
|
2005-03-28 06:53:52 -05:00
|
|
|
unless installrb.empty?
|
|
|
|
config = CONFIG.dup
|
|
|
|
install_dirs(target_prefix).each {|var, val| config[var] = val}
|
* mkconfig.rb: generate RbConfig instead of Config.
* instruby.rb, rubytest.rb, runruby.rb, bcc32/Makefile.sub,
ext/extmk.rb, ext/dl/extconf.rb, ext/iconv/charset_alias.rb,
lib/mkmf.rb, lib/rdoc/ri/ri_paths.rb,
lib/webrick/httpservlet/cgihandler.rb,
test/dbm/test_dbm.rb, test/gdbm/test_gdbm.rb,
test/ruby/envutil.rb, test/soap/calc/test_calc_cgi.rb,
test/soap/header/test_authheader_cgi.rb, test/soap/ssl/test_ssl.rb,
win32/mkexports.rb, win32/resource.rb: Use RbConfig instead of
Config.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9970 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-02-20 03:34:53 -05:00
|
|
|
FileUtils.rm_f(installrb.values.collect {|f| RbConfig.expand(f, config)}, verbose: true)
|
2005-03-28 06:53:52 -05:00
|
|
|
end
|
2005-02-09 22:09:27 -05:00
|
|
|
end
|
2005-02-18 20:43:58 -05:00
|
|
|
return false
|
2005-02-06 09:51:44 -05:00
|
|
|
end
|
|
|
|
$target = target
|
2006-05-25 19:44:08 -04:00
|
|
|
$extconf_h = m[/^RUBY_EXTCONF_H[ \t]*=[ \t]*(\S+)/, 1]
|
2006-05-26 22:30:10 -04:00
|
|
|
$static ||= m[/^EXTSTATIC[ \t]*=[ \t]*(\S+)/, 1] || false
|
2005-02-06 09:51:44 -05:00
|
|
|
/^STATIC_LIB[ \t]*=[ \t]*\S+/ =~ m or $static = nil
|
|
|
|
$preload = Shellwords.shellwords(m[/^preload[ \t]*=[ \t]*(.*)/, 1] || "")
|
2007-11-28 00:43:17 -05:00
|
|
|
$DLDFLAGS += " " + (m[/^dldflags[ \t]*=[ \t]*(.*)/, 1] || "")
|
2005-02-06 09:51:44 -05:00
|
|
|
if s = m[/^LIBS[ \t]*=[ \t]*(.*)/, 1]
|
|
|
|
s.sub!(/^#{Regexp.quote($LIBRUBYARG)} */, "")
|
|
|
|
s.sub!(/ *#{Regexp.quote($LIBS)}$/, "")
|
|
|
|
$libs = s
|
|
|
|
end
|
2006-09-08 15:48:22 -04:00
|
|
|
$objs = (m[/^OBJS[ \t]*=[ \t](.*)/, 1] || "").split
|
|
|
|
$srcs = (m[/^SRCS[ \t]*=[ \t](.*)/, 1] || "").split
|
2005-02-06 09:51:44 -05:00
|
|
|
$LOCAL_LIBS = m[/^LOCAL_LIBS[ \t]*=[ \t]*(.*)/, 1] || ""
|
|
|
|
$LIBPATH = Shellwords.shellwords(m[/^libpath[ \t]*=[ \t]*(.*)/, 1] || "") - %w[$(libdir) $(topdir)]
|
|
|
|
true
|
|
|
|
end
|
|
|
|
|
2002-09-08 05:08:15 -04:00
|
|
|
def extmake(target)
|
* configure.in (XCFLAGS): CFLAGS to comile ruby itself.
* configure.in (LIBEXT): suffix for static libraries.
* configure.in (LIBPATHFLAG): switch template to specify library
path.
* configure.in (LINK_SO): command to link shared objects.
* configure.in (DEFFILE, ARCHFILE): miscellaneous system dependent
files.
* configure.in (EXPORT_PREFIX): prefix to exported symbols on
Windows.
* configure.in (COMMON_LIBS, COMMON_MACROS, COMMON_HEADERS):
libraries, macros and headers used in common.
* configure.in (RUBYW_INSTALL_NAME, rubyw_install_name): GUI mode
excutable name.
* Makefile.in (CFLAGS): append XCFLAGS.
* Makefile.in (PREP): miscellaneous system dependent files.
* Makefile.in (ruby.imp, ext/extinit.o): moved from ext/extmk.rb.
* Makefile.in (fake.rb): CROSS_COMPILING keeps building platform.
* Makefile.in (MAKEFILES): depend on *.in and config.status.
* Makefile.in (parse.c): replace "y.tab.c" with actual name for
byacc.
* ext/extmk.rb, lib/mkmf.rb: integrated.
* ext/extmk.rb: propagate MFLAGS.
* ext/extmk.rb (extmake): make dummy Makefile to clean even if no
Makefile is made.
* lib/mkmf.rb (older): accept multiple file names and Time
objects.
* lib/mkmf.rb (xsystem): split and qoute.
* lib/mkmf.rb (cpp_include): make include directives.
* lib/mkmf.rb (try_func): try wheather specified function is
available.
* lib/mkmf.rb (install_files): default to site-install.
* lib/mkmf.rb (checking_for): added.
* lib/mkmf.rb (find_executable0): just find executable file with
no message.
* lib/mkmf.rb (create_header): output header file is variable.
* lib/mkmf.rb (create_makefile): separate sections.
* lib/mkmf.rb (init_mkmf): initialize global variables.
* win32/Makefile.sub, bcc32/Makefile.sub (CPP, AR): added.
* bcc32/Makefile.sub (ARCH): fixed to i386.
* win32/Makefile.sub, bcc32/Makefile.sub (miniruby): should not
link EXTOBJS.
* ext/dl/extconf.rb: use try_cpp to cross compile.
* ext/dl/extconf.rb: not modify files in source directory.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-21 10:03:46 -04:00
|
|
|
print "#{$message} #{target}\n"
|
|
|
|
$stdout.flush
|
2002-09-08 05:08:15 -04:00
|
|
|
if $force_static or $static_ext[target]
|
|
|
|
$static = target
|
|
|
|
else
|
|
|
|
$static = false
|
|
|
|
end
|
|
|
|
|
* configure.in (XCFLAGS): CFLAGS to comile ruby itself.
* configure.in (LIBEXT): suffix for static libraries.
* configure.in (LIBPATHFLAG): switch template to specify library
path.
* configure.in (LINK_SO): command to link shared objects.
* configure.in (DEFFILE, ARCHFILE): miscellaneous system dependent
files.
* configure.in (EXPORT_PREFIX): prefix to exported symbols on
Windows.
* configure.in (COMMON_LIBS, COMMON_MACROS, COMMON_HEADERS):
libraries, macros and headers used in common.
* configure.in (RUBYW_INSTALL_NAME, rubyw_install_name): GUI mode
excutable name.
* Makefile.in (CFLAGS): append XCFLAGS.
* Makefile.in (PREP): miscellaneous system dependent files.
* Makefile.in (ruby.imp, ext/extinit.o): moved from ext/extmk.rb.
* Makefile.in (fake.rb): CROSS_COMPILING keeps building platform.
* Makefile.in (MAKEFILES): depend on *.in and config.status.
* Makefile.in (parse.c): replace "y.tab.c" with actual name for
byacc.
* ext/extmk.rb, lib/mkmf.rb: integrated.
* ext/extmk.rb: propagate MFLAGS.
* ext/extmk.rb (extmake): make dummy Makefile to clean even if no
Makefile is made.
* lib/mkmf.rb (older): accept multiple file names and Time
objects.
* lib/mkmf.rb (xsystem): split and qoute.
* lib/mkmf.rb (cpp_include): make include directives.
* lib/mkmf.rb (try_func): try wheather specified function is
available.
* lib/mkmf.rb (install_files): default to site-install.
* lib/mkmf.rb (checking_for): added.
* lib/mkmf.rb (find_executable0): just find executable file with
no message.
* lib/mkmf.rb (create_header): output header file is variable.
* lib/mkmf.rb (create_makefile): separate sections.
* lib/mkmf.rb (init_mkmf): initialize global variables.
* win32/Makefile.sub, bcc32/Makefile.sub (CPP, AR): added.
* bcc32/Makefile.sub (ARCH): fixed to i386.
* win32/Makefile.sub, bcc32/Makefile.sub (miniruby): should not
link EXTOBJS.
* ext/dl/extconf.rb: use try_cpp to cross compile.
* ext/dl/extconf.rb: not modify files in source directory.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-21 10:03:46 -04:00
|
|
|
unless $ignore
|
2002-11-25 06:00:03 -05:00
|
|
|
return true if $nodynamic and not $static
|
2002-09-08 05:08:15 -04:00
|
|
|
end
|
|
|
|
|
2004-02-17 05:34:31 -05:00
|
|
|
FileUtils.mkpath target unless File.directory?(target)
|
2004-02-21 00:33:24 -05:00
|
|
|
begin
|
|
|
|
dir = Dir.pwd
|
|
|
|
FileUtils.mkpath target unless File.directory?(target)
|
|
|
|
Dir.chdir target
|
|
|
|
top_srcdir = $top_srcdir
|
|
|
|
topdir = $topdir
|
2007-06-09 23:06:15 -04:00
|
|
|
hdrdir = $hdrdir
|
2004-02-21 00:33:24 -05:00
|
|
|
prefix = "../" * (target.count("/")+1)
|
2007-06-09 23:06:15 -04:00
|
|
|
$top_srcdir = relative_from(top_srcdir, prefix)
|
|
|
|
$hdrdir = relative_from(hdrdir, prefix)
|
2004-02-21 00:33:24 -05:00
|
|
|
$topdir = prefix + $topdir
|
2002-09-08 05:08:15 -04:00
|
|
|
$target = target
|
|
|
|
$mdir = target
|
* configure.in (XCFLAGS): CFLAGS to comile ruby itself.
* configure.in (LIBEXT): suffix for static libraries.
* configure.in (LIBPATHFLAG): switch template to specify library
path.
* configure.in (LINK_SO): command to link shared objects.
* configure.in (DEFFILE, ARCHFILE): miscellaneous system dependent
files.
* configure.in (EXPORT_PREFIX): prefix to exported symbols on
Windows.
* configure.in (COMMON_LIBS, COMMON_MACROS, COMMON_HEADERS):
libraries, macros and headers used in common.
* configure.in (RUBYW_INSTALL_NAME, rubyw_install_name): GUI mode
excutable name.
* Makefile.in (CFLAGS): append XCFLAGS.
* Makefile.in (PREP): miscellaneous system dependent files.
* Makefile.in (ruby.imp, ext/extinit.o): moved from ext/extmk.rb.
* Makefile.in (fake.rb): CROSS_COMPILING keeps building platform.
* Makefile.in (MAKEFILES): depend on *.in and config.status.
* Makefile.in (parse.c): replace "y.tab.c" with actual name for
byacc.
* ext/extmk.rb, lib/mkmf.rb: integrated.
* ext/extmk.rb: propagate MFLAGS.
* ext/extmk.rb (extmake): make dummy Makefile to clean even if no
Makefile is made.
* lib/mkmf.rb (older): accept multiple file names and Time
objects.
* lib/mkmf.rb (xsystem): split and qoute.
* lib/mkmf.rb (cpp_include): make include directives.
* lib/mkmf.rb (try_func): try wheather specified function is
available.
* lib/mkmf.rb (install_files): default to site-install.
* lib/mkmf.rb (checking_for): added.
* lib/mkmf.rb (find_executable0): just find executable file with
no message.
* lib/mkmf.rb (create_header): output header file is variable.
* lib/mkmf.rb (create_makefile): separate sections.
* lib/mkmf.rb (init_mkmf): initialize global variables.
* win32/Makefile.sub, bcc32/Makefile.sub (CPP, AR): added.
* bcc32/Makefile.sub (ARCH): fixed to i386.
* win32/Makefile.sub, bcc32/Makefile.sub (miniruby): should not
link EXTOBJS.
* ext/dl/extconf.rb: use try_cpp to cross compile.
* ext/dl/extconf.rb: not modify files in source directory.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-21 10:03:46 -04:00
|
|
|
$srcdir = File.join($top_srcdir, "ext", $mdir)
|
2003-08-11 22:12:48 -04:00
|
|
|
$preload = nil
|
2006-09-08 15:48:22 -04:00
|
|
|
$objs = ""
|
|
|
|
$srcs = ""
|
2005-02-06 09:51:44 -05:00
|
|
|
$compiled[target] = false
|
2003-08-16 10:58:34 -04:00
|
|
|
makefile = "./Makefile"
|
2005-02-06 09:51:44 -05:00
|
|
|
ok = File.exist?(makefile)
|
* configure.in (XCFLAGS): CFLAGS to comile ruby itself.
* configure.in (LIBEXT): suffix for static libraries.
* configure.in (LIBPATHFLAG): switch template to specify library
path.
* configure.in (LINK_SO): command to link shared objects.
* configure.in (DEFFILE, ARCHFILE): miscellaneous system dependent
files.
* configure.in (EXPORT_PREFIX): prefix to exported symbols on
Windows.
* configure.in (COMMON_LIBS, COMMON_MACROS, COMMON_HEADERS):
libraries, macros and headers used in common.
* configure.in (RUBYW_INSTALL_NAME, rubyw_install_name): GUI mode
excutable name.
* Makefile.in (CFLAGS): append XCFLAGS.
* Makefile.in (PREP): miscellaneous system dependent files.
* Makefile.in (ruby.imp, ext/extinit.o): moved from ext/extmk.rb.
* Makefile.in (fake.rb): CROSS_COMPILING keeps building platform.
* Makefile.in (MAKEFILES): depend on *.in and config.status.
* Makefile.in (parse.c): replace "y.tab.c" with actual name for
byacc.
* ext/extmk.rb, lib/mkmf.rb: integrated.
* ext/extmk.rb: propagate MFLAGS.
* ext/extmk.rb (extmake): make dummy Makefile to clean even if no
Makefile is made.
* lib/mkmf.rb (older): accept multiple file names and Time
objects.
* lib/mkmf.rb (xsystem): split and qoute.
* lib/mkmf.rb (cpp_include): make include directives.
* lib/mkmf.rb (try_func): try wheather specified function is
available.
* lib/mkmf.rb (install_files): default to site-install.
* lib/mkmf.rb (checking_for): added.
* lib/mkmf.rb (find_executable0): just find executable file with
no message.
* lib/mkmf.rb (create_header): output header file is variable.
* lib/mkmf.rb (create_makefile): separate sections.
* lib/mkmf.rb (init_mkmf): initialize global variables.
* win32/Makefile.sub, bcc32/Makefile.sub (CPP, AR): added.
* bcc32/Makefile.sub (ARCH): fixed to i386.
* win32/Makefile.sub, bcc32/Makefile.sub (miniruby): should not
link EXTOBJS.
* ext/dl/extconf.rb: use try_cpp to cross compile.
* ext/dl/extconf.rb: not modify files in source directory.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-21 10:03:46 -04:00
|
|
|
unless $ignore
|
2007-08-02 22:05:57 -04:00
|
|
|
rbconfig0 = RbConfig::CONFIG
|
|
|
|
mkconfig0 = CONFIG
|
|
|
|
rbconfig = {
|
|
|
|
"hdrdir" => $hdrdir,
|
|
|
|
"srcdir" => $srcdir,
|
|
|
|
"topdir" => $topdir,
|
|
|
|
}
|
|
|
|
mkconfig = {
|
|
|
|
"hdrdir" => ($hdrdir == top_srcdir) ? top_srcdir : "$(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)
|
|
|
|
}
|
2005-02-06 09:51:44 -05:00
|
|
|
begin
|
2006-05-25 19:44:08 -04:00
|
|
|
$extconf_h = nil
|
|
|
|
ok &&= extract_makefile(makefile)
|
|
|
|
if (($extconf_h && !File.exist?($extconf_h)) ||
|
2005-02-06 09:51:44 -05:00
|
|
|
!(t = modified?(makefile, MTIMES)) ||
|
2006-09-08 15:48:22 -04:00
|
|
|
["#{$srcdir}/makefile.rb", "#{$srcdir}/extconf.rb", "#{$srcdir}/depend"].any? {|f| modified?(f, [t])})
|
2005-02-06 09:51:44 -05:00
|
|
|
then
|
2005-02-09 22:09:27 -05:00
|
|
|
ok = false
|
2005-02-06 09:51:44 -05:00
|
|
|
init_mkmf
|
|
|
|
Logging::logfile 'mkmf.log'
|
|
|
|
rm_f makefile
|
2003-01-05 03:50:21 -05:00
|
|
|
if File.exist?($0 = "#{$srcdir}/makefile.rb")
|
|
|
|
load $0
|
|
|
|
elsif File.exist?($0 = "#{$srcdir}/extconf.rb")
|
|
|
|
load $0
|
|
|
|
else
|
|
|
|
create_makefile(target)
|
|
|
|
end
|
2006-05-24 12:43:45 -04:00
|
|
|
$defs << "-DRUBY_EXPORT" if $static
|
2005-02-06 09:51:44 -05:00
|
|
|
ok = File.exist?(makefile)
|
2004-04-02 04:00:12 -05:00
|
|
|
end
|
2005-02-06 09:51:44 -05:00
|
|
|
rescue SystemExit
|
|
|
|
# ignore
|
|
|
|
ensure
|
|
|
|
rm_f "conftest*"
|
|
|
|
config = $0
|
|
|
|
$0 = $PROGRAM_NAME
|
|
|
|
end
|
|
|
|
end
|
|
|
|
ok = yield(ok) if block_given?
|
|
|
|
unless ok
|
|
|
|
open(makefile, "w") do |f|
|
2006-09-08 15:48:22 -04:00
|
|
|
f.print(*dummy_makefile(CONFIG["srcdir"]))
|
2002-09-08 05:08:15 -04:00
|
|
|
end
|
2003-08-16 10:58:34 -04:00
|
|
|
return true
|
2002-09-08 05:08:15 -04:00
|
|
|
end
|
2004-02-17 05:34:31 -05:00
|
|
|
args = sysquote($mflags)
|
2005-04-17 09:57:52 -04:00
|
|
|
unless $destdir.to_s.empty? or $mflags.include?("DESTDIR")
|
2005-08-04 11:20:10 -04:00
|
|
|
args += [sysquote("DESTDIR=" + relative_from($destdir, "../"+prefix))]
|
2005-04-17 09:57:52 -04:00
|
|
|
end
|
2003-08-16 10:58:34 -04:00
|
|
|
if $static
|
2004-04-22 05:25:16 -04:00
|
|
|
args += ["static"] unless $clean
|
2003-08-16 10:58:34 -04:00
|
|
|
$extlist.push [$static, $target, File.basename($target), $preload]
|
|
|
|
end
|
|
|
|
unless system($make, *args)
|
|
|
|
$ignore or $continue or return false
|
2002-09-08 05:08:15 -04:00
|
|
|
end
|
2005-02-06 09:51:44 -05:00
|
|
|
$compiled[target] = true
|
2007-08-02 22:05:57 -04:00
|
|
|
if $clean
|
|
|
|
FileUtils.rm_f("mkmf.log")
|
|
|
|
if $clean != true
|
|
|
|
FileUtils.rm_f([makefile, $extconf_h || "extconf.h"])
|
|
|
|
end
|
2004-03-23 00:32:01 -05:00
|
|
|
end
|
2002-09-08 05:08:15 -04:00
|
|
|
if $static
|
* configure.in (XCFLAGS): CFLAGS to comile ruby itself.
* configure.in (LIBEXT): suffix for static libraries.
* configure.in (LIBPATHFLAG): switch template to specify library
path.
* configure.in (LINK_SO): command to link shared objects.
* configure.in (DEFFILE, ARCHFILE): miscellaneous system dependent
files.
* configure.in (EXPORT_PREFIX): prefix to exported symbols on
Windows.
* configure.in (COMMON_LIBS, COMMON_MACROS, COMMON_HEADERS):
libraries, macros and headers used in common.
* configure.in (RUBYW_INSTALL_NAME, rubyw_install_name): GUI mode
excutable name.
* Makefile.in (CFLAGS): append XCFLAGS.
* Makefile.in (PREP): miscellaneous system dependent files.
* Makefile.in (ruby.imp, ext/extinit.o): moved from ext/extmk.rb.
* Makefile.in (fake.rb): CROSS_COMPILING keeps building platform.
* Makefile.in (MAKEFILES): depend on *.in and config.status.
* Makefile.in (parse.c): replace "y.tab.c" with actual name for
byacc.
* ext/extmk.rb, lib/mkmf.rb: integrated.
* ext/extmk.rb: propagate MFLAGS.
* ext/extmk.rb (extmake): make dummy Makefile to clean even if no
Makefile is made.
* lib/mkmf.rb (older): accept multiple file names and Time
objects.
* lib/mkmf.rb (xsystem): split and qoute.
* lib/mkmf.rb (cpp_include): make include directives.
* lib/mkmf.rb (try_func): try wheather specified function is
available.
* lib/mkmf.rb (install_files): default to site-install.
* lib/mkmf.rb (checking_for): added.
* lib/mkmf.rb (find_executable0): just find executable file with
no message.
* lib/mkmf.rb (create_header): output header file is variable.
* lib/mkmf.rb (create_makefile): separate sections.
* lib/mkmf.rb (init_mkmf): initialize global variables.
* win32/Makefile.sub, bcc32/Makefile.sub (CPP, AR): added.
* bcc32/Makefile.sub (ARCH): fixed to i386.
* win32/Makefile.sub, bcc32/Makefile.sub (miniruby): should not
link EXTOBJS.
* ext/dl/extconf.rb: use try_cpp to cross compile.
* ext/dl/extconf.rb: not modify files in source directory.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-21 10:03:46 -04:00
|
|
|
$extflags ||= ""
|
2003-08-12 03:55:14 -04:00
|
|
|
$extlibs ||= []
|
2003-08-05 23:11:14 -04:00
|
|
|
$extpath ||= []
|
2004-01-18 23:10:53 -05:00
|
|
|
unless $mswin
|
2004-04-02 04:00:12 -05:00
|
|
|
$extflags = ($extflags.split | $DLDFLAGS.split | $LDFLAGS.split).join(" ")
|
2004-01-18 23:10:53 -05:00
|
|
|
end
|
2004-01-08 21:20:28 -05:00
|
|
|
$extlibs = merge_libs($extlibs, $libs.split, $LOCAL_LIBS.split)
|
2003-08-05 23:11:14 -04:00
|
|
|
$extpath |= $LIBPATH
|
2002-09-08 05:08:15 -04:00
|
|
|
end
|
2004-02-21 00:33:24 -05:00
|
|
|
ensure
|
2007-08-02 22:05:57 -04:00
|
|
|
unless $ignore
|
|
|
|
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)
|
|
|
|
}
|
|
|
|
end
|
2007-06-09 23:06:15 -04:00
|
|
|
$top_srcdir = top_srcdir
|
2004-02-21 00:33:24 -05:00
|
|
|
$topdir = topdir
|
2007-06-09 23:06:15 -04:00
|
|
|
$hdrdir = hdrdir
|
2004-02-21 00:33:24 -05:00
|
|
|
Dir.chdir dir
|
2002-09-08 05:08:15 -04:00
|
|
|
end
|
2004-02-17 05:34:31 -05:00
|
|
|
begin
|
|
|
|
Dir.rmdir target
|
|
|
|
target = File.dirname(target)
|
|
|
|
rescue SystemCallError
|
|
|
|
break
|
|
|
|
end while true
|
2002-11-13 02:30:24 -05:00
|
|
|
true
|
2002-09-08 05:08:15 -04:00
|
|
|
end
|
|
|
|
|
2005-02-06 09:51:44 -05:00
|
|
|
def compiled?(target)
|
|
|
|
$compiled[target]
|
|
|
|
end
|
|
|
|
|
2003-01-25 13:59:34 -05:00
|
|
|
def parse_args()
|
2004-02-21 22:58:44 -05:00
|
|
|
$mflags = []
|
|
|
|
|
2005-02-06 09:51:44 -05:00
|
|
|
$optparser ||= OptionParser.new do |opts|
|
2004-02-21 22:58:44 -05:00
|
|
|
opts.on('-n') {$dryrun = true}
|
2006-06-21 04:08:36 -04:00
|
|
|
opts.on('--[no-]extension [EXTS]', Array) do |v|
|
2004-02-21 22:58:44 -05:00
|
|
|
$extension = (v == false ? [] : v)
|
2004-02-09 03:48:55 -05:00
|
|
|
end
|
2006-06-21 04:08:36 -04:00
|
|
|
opts.on('--[no-]extstatic [STATIC]', Array) do |v|
|
2004-02-21 22:58:44 -05:00
|
|
|
if ($extstatic = v) == false
|
|
|
|
$extstatic = []
|
|
|
|
elsif v
|
2005-11-16 09:25:53 -05:00
|
|
|
$force_static = true if $extstatic.delete("static")
|
2004-02-21 22:58:44 -05:00
|
|
|
$extstatic = nil if $extstatic.empty?
|
|
|
|
end
|
2004-02-09 03:48:55 -05:00
|
|
|
end
|
2004-02-21 22:58:44 -05:00
|
|
|
opts.on('--dest-dir=DIR') do |v|
|
|
|
|
$destdir = v
|
|
|
|
end
|
|
|
|
opts.on('--extout=DIR') do |v|
|
|
|
|
$extout = (v unless v.empty?)
|
|
|
|
end
|
|
|
|
opts.on('--make=MAKE') do |v|
|
|
|
|
$make = v || 'make'
|
|
|
|
end
|
2006-06-21 04:08:36 -04:00
|
|
|
opts.on('--make-flags=FLAGS', '--mflags', Shellwords) do |v|
|
2005-11-16 09:25:53 -05:00
|
|
|
v.grep(/\A([-\w]+)=(.*)/) {$configure_args["--#{$1}"] = $2}
|
2004-02-21 22:58:44 -05:00
|
|
|
if arg = v.first
|
|
|
|
arg.insert(0, '-') if /\A[^-][^=]*\Z/ =~ arg
|
|
|
|
end
|
|
|
|
$mflags.concat(v)
|
|
|
|
end
|
|
|
|
opts.on('--message [MESSAGE]', String) do |v|
|
|
|
|
$message = v
|
|
|
|
end
|
2005-02-06 09:51:44 -05:00
|
|
|
end
|
|
|
|
begin
|
|
|
|
$optparser.parse!(ARGV)
|
|
|
|
rescue OptionParser::InvalidOption => e
|
|
|
|
retry if /^--/ =~ e.args[0]
|
|
|
|
$optparser.warn(e)
|
2006-10-09 10:41:24 -04:00
|
|
|
abort $optparser.to_s
|
2005-02-06 09:51:44 -05:00
|
|
|
end
|
2002-11-03 16:42:14 -05:00
|
|
|
|
2004-02-21 22:58:44 -05:00
|
|
|
$destdir ||= ''
|
2003-01-27 14:48:02 -05:00
|
|
|
|
2003-01-25 13:59:34 -05:00
|
|
|
$make, *rest = Shellwords.shellwords($make)
|
|
|
|
$mflags.unshift(*rest) unless rest.empty?
|
2002-11-03 16:42:14 -05:00
|
|
|
|
2003-01-26 03:56:01 -05:00
|
|
|
def $mflags.set?(flag)
|
* sprintf.c (rb_str_format): allow %c to print one character
string (e.g. ?x).
* lib/tempfile.rb (Tempfile::make_tmpname): put dot between
basename and pid. [ruby-talk:196272]
* parse.y (do_block): remove -> style block.
* parse.y (parser_yylex): remove tLAMBDA_ARG.
* eval.c (rb_call0): binding for the return event hook should have
consistent scope. [ruby-core:07928]
* eval.c (proc_invoke): return behavior should depend whether it
is surrounded by a lambda or a mere block.
* eval.c (formal_assign): handles post splat arguments.
* eval.c (rb_call0): ditto.
* st.c (strhash): use FNV-1a hash.
* parse.y (parser_yylex): removed experimental ';;' terminator.
* eval.c (rb_node_arity): should be aware of post splat arguments.
* eval.c (rb_proc_arity): ditto.
* parse.y (f_args): syntax rule enhanced to support arguments
after the splat.
* parse.y (block_param): ditto for block parameters.
* parse.y (f_post_arg): mandatory formal arguments after the splat
argument.
* parse.y (new_args_gen): generate nodes for mandatory formal
arguments after the splat argument.
* eval.c (rb_eval): dispatch mandatory formal arguments after the
splat argument.
* parse.y (args): allow more than one splat in the argument list.
* parse.y (method_call): allow aref [] to accept all kind of
method argument, including assocs, splat, and block argument.
* eval.c (SETUP_ARGS0): prepare block argument as well.
* lib/mathn.rb (Integer): remove Integer#gcd2. [ruby-core:07931]
* eval.c (error_line): print receivers true/false/nil specially.
* eval.c (rb_proc_yield): handles parameters in yield semantics.
* eval.c (nil_yield): gives LocalJumpError to denote no block
error.
* io.c (rb_io_getc): now takes one-character string.
* string.c (rb_str_hash): use FNV-1a hash from Fowler/Noll/Vo
hashing algorithm.
* string.c (rb_str_aref): str[0] now returns 1 character string,
instead of a fixnum. [Ruby2]
* parse.y (parser_yylex): ?c now returns 1 character string,
instead of a fixnum. [Ruby2]
* string.c (rb_str_aset): no longer support fixnum insertion.
* eval.c (umethod_bind): should not update original class.
[ruby-dev:28636]
* eval.c (ev_const_get): should support constant access from
within instance_eval(). [ruby-dev:28327]
* time.c (time_timeval): should round for usec floating
number. [ruby-core:07896]
* time.c (time_add): ditto.
* dir.c (sys_warning): should not call a vararg function
rb_sys_warning() indirectly. [ruby-core:07886]
* numeric.c (flo_divmod): the first element of Float#divmod should
be an integer. [ruby-dev:28589]
* test/ruby/test_float.rb: add tests for divmod, div, modulo and remainder.
* re.c (rb_reg_initialize): should not allow modifying literal
regexps. frozen check moved from rb_reg_initialize_m as well.
* re.c (rb_reg_initialize): should not modify untainted objects in
safe levels higher than 3.
* re.c (rb_memcmp): type change from char* to const void*.
* dir.c (dir_close): should not close untainted dir stream.
* dir.c (GetDIR): add tainted/frozen check for each dir operation.
* lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_symbol_arg):
typo fixed. a patch from Florian Gross <florg at florg.net>.
* eval.c (EXEC_EVENT_HOOK): trace_func may remove itself from
event_hooks. no guarantee for arbitrary hook deletion.
[ruby-dev:28632]
* util.c (ruby_strtod): differ addition to minimize error.
[ruby-dev:28619]
* util.c (ruby_strtod): should not raise ERANGE when the input
string does not have any digits. [ruby-dev:28629]
* eval.c (proc_invoke): should restore old ruby_frame->block.
thanks to ts <decoux at moulon.inra.fr>. [ruby-core:07833]
also fix [ruby-dev:28614] as well.
* signal.c (trap): sig should be less then NSIG. Coverity found
this bug. a patch from Kevin Tew <tewk at tewk.com>.
[ruby-core:07823]
* math.c (math_log2): add new method inspired by
[ruby-talk:191237].
* math.c (math_log): add optional base argument to Math::log().
[ruby-talk:191308]
* ext/syck/emitter.c (syck_scan_scalar): avoid accessing
uninitialized array element. a patch from Pat Eyler
<rubypate at gmail.com>. [ruby-core:07809]
* array.c (rb_ary_fill): initialize local variables first. a
patch from Pat Eyler <rubypate at gmail.com>. [ruby-core:07810]
* ext/syck/yaml2byte.c (syck_yaml2byte_handler): need to free
type_tag. a patch from Pat Eyler <rubypate at gmail.com>.
[ruby-core:07808]
* ext/socket/socket.c (make_hostent_internal): accept ai_family
check from Sam Roberts <sroberts at uniserve.com>.
[ruby-core:07691]
* util.c (ruby_strtod): should not cut off 18 digits for no
reason. [ruby-core:07796]
* array.c (rb_ary_fill): internalize local variable "beg" to
pacify Coverity. [ruby-core:07770]
* pack.c (pack_unpack): now supports CRLF newlines. a patch from
<tommy at tmtm.org>. [ruby-dev:28601]
* applied code clean-up patch from Stefan Huehner
<stefan at huehner.org>. [ruby-core:07764]
* lib/jcode.rb (String::tr_s): should have translated non
squeezing character sequence (i.e. a character) as well. thanks
to Hiroshi Ichikawa <gimite at gimite.ddo.jp> [ruby-list:42090]
* ext/socket/socket.c: document update patch from Sam Roberts
<sroberts at uniserve.com>. [ruby-core:07701]
* lib/mathn.rb (Integer): need not to remove gcd2. a patch from
NARUSE, Yui <naruse at airemix.com>. [ruby-dev:28570]
* parse.y (arg): too much NEW_LIST()
* eval.c (SETUP_ARGS0): remove unnecessary access to nd_alen.
* eval.c (rb_eval): use ARGSCAT for NODE_OP_ASGN1.
[ruby-dev:28585]
* parse.y (arg): use NODE_ARGSCAT for placeholder.
* lib/getoptlong.rb (GetoptLong::get): RDoc update patch from
mathew <meta at pobox.com>. [ruby-core:07738]
* variable.c (rb_const_set): raise error when no target klass is
supplied. [ruby-dev:28582]
* prec.c (prec_prec_f): documentation patch from
<gerardo.santana at gmail.com>. [ruby-core:07689]
* bignum.c (rb_big_pow): second operand may be too big even if
it's a Fixnum. [ruby-talk:187984]
* README.EXT: update symbol description. [ruby-talk:188104]
* COPYING: explicitly note GPLv2. [ruby-talk:187922]
* parse.y: remove some obsolete syntax rules (unparenthesized
method calls in argument list).
* eval.c (rb_call0): insecure calling should be checked for non
NODE_SCOPE method invocations too.
* eval.c (rb_alias): should preserve the current safe level as
well as method definition.
* process.c (rb_f_sleep): remove RDoc description about SIGALRM
which is not valid on the current implementation. [ruby-dev:28464]
Thu Mar 23 21:40:47 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
* eval.c (method_missing): should support argument splat in
super. a bug in combination of super, splat and
method_missing. [ruby-talk:185438]
* configure.in: Solaris SunPro compiler -rapth patch from
<kuwa at labs.fujitsu.com>. [ruby-dev:28443]
* configure.in: remove enable_rpath=no for Solaris.
[ruby-dev:28440]
* ext/win32ole/win32ole.c (ole_val2olevariantdata): change behavior
of converting OLE Variant object with VT_ARRAY|VT_UI1 and Ruby
String object.
* ruby.1: a clarification patch from David Lutterkort
<dlutter at redhat.com>. [ruby-core:7508]
* lib/rdoc/ri/ri_paths.rb (RI::Paths): adding paths from rubygems
directories. a patch from Eric Hodel <drbrain at segment7.net>.
[ruby-core:07423]
* eval.c (rb_clear_cache_by_class): clearing wrong cache.
* ext/extmk.rb: use :remove_destination to install extension libraries
to avoid SEGV. [ruby-dev:28417]
* eval.c (rb_thread_fd_writable): should not re-schedule output
from KILLED thread (must be error printing).
* array.c (rb_ary_flatten_bang): allow specifying recursion
level. [ruby-talk:182170]
* array.c (rb_ary_flatten): ditto.
* gc.c (add_heap): a heap_slots may overflow. a patch from Stefan
Weil <weil at mail.berlios.de>.
* eval.c (rb_call): use separate cache for fcall/vcall
invocation.
* eval.c (rb_eval): NODE_FCALL, NODE_VCALL can call local
functions.
* eval.c (rb_mod_local): a new method to specify newly added
visibility "local".
* eval.c (search_method): search for local methods which are
visible only from the current class.
* class.c (rb_class_local_methods): a method to list local methods.
* object.c (Init_Object): add BasicObject class as a top level
BlankSlate class.
* ruby.h (SYM2ID): should not cast to signed long.
[ruby-core:07414]
* class.c (rb_include_module): allow module duplication.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10235 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-06-09 17:20:17 -04:00
|
|
|
grep(/\A-(?!-).*#{'%s' % flag}/i) { return true }
|
2003-01-27 14:48:02 -05:00
|
|
|
false
|
2003-01-26 03:56:01 -05:00
|
|
|
end
|
2004-02-09 03:48:55 -05:00
|
|
|
def $mflags.defined?(var)
|
|
|
|
grep(/\A#{var}=(.*)/) {return $1}
|
2005-03-02 05:53:53 -05:00
|
|
|
false
|
2004-02-09 03:48:55 -05:00
|
|
|
end
|
2003-01-26 03:56:01 -05:00
|
|
|
|
|
|
|
if $mflags.set?(?n)
|
|
|
|
$dryrun = true
|
|
|
|
else
|
2003-02-10 06:59:26 -05:00
|
|
|
$mflags.unshift '-n' if $dryrun
|
2003-01-26 03:56:01 -05:00
|
|
|
end
|
* configure.in (XCFLAGS): CFLAGS to comile ruby itself.
* configure.in (LIBEXT): suffix for static libraries.
* configure.in (LIBPATHFLAG): switch template to specify library
path.
* configure.in (LINK_SO): command to link shared objects.
* configure.in (DEFFILE, ARCHFILE): miscellaneous system dependent
files.
* configure.in (EXPORT_PREFIX): prefix to exported symbols on
Windows.
* configure.in (COMMON_LIBS, COMMON_MACROS, COMMON_HEADERS):
libraries, macros and headers used in common.
* configure.in (RUBYW_INSTALL_NAME, rubyw_install_name): GUI mode
excutable name.
* Makefile.in (CFLAGS): append XCFLAGS.
* Makefile.in (PREP): miscellaneous system dependent files.
* Makefile.in (ruby.imp, ext/extinit.o): moved from ext/extmk.rb.
* Makefile.in (fake.rb): CROSS_COMPILING keeps building platform.
* Makefile.in (MAKEFILES): depend on *.in and config.status.
* Makefile.in (parse.c): replace "y.tab.c" with actual name for
byacc.
* ext/extmk.rb, lib/mkmf.rb: integrated.
* ext/extmk.rb: propagate MFLAGS.
* ext/extmk.rb (extmake): make dummy Makefile to clean even if no
Makefile is made.
* lib/mkmf.rb (older): accept multiple file names and Time
objects.
* lib/mkmf.rb (xsystem): split and qoute.
* lib/mkmf.rb (cpp_include): make include directives.
* lib/mkmf.rb (try_func): try wheather specified function is
available.
* lib/mkmf.rb (install_files): default to site-install.
* lib/mkmf.rb (checking_for): added.
* lib/mkmf.rb (find_executable0): just find executable file with
no message.
* lib/mkmf.rb (create_header): output header file is variable.
* lib/mkmf.rb (create_makefile): separate sections.
* lib/mkmf.rb (init_mkmf): initialize global variables.
* win32/Makefile.sub, bcc32/Makefile.sub (CPP, AR): added.
* bcc32/Makefile.sub (ARCH): fixed to i386.
* win32/Makefile.sub, bcc32/Makefile.sub (miniruby): should not
link EXTOBJS.
* ext/dl/extconf.rb: use try_cpp to cross compile.
* ext/dl/extconf.rb: not modify files in source directory.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-21 10:03:46 -04:00
|
|
|
|
2003-01-26 03:56:01 -05:00
|
|
|
$continue = $mflags.set?(?k)
|
2004-02-09 04:20:52 -05:00
|
|
|
if $extout
|
2004-02-16 22:12:53 -05:00
|
|
|
$extout = '$(topdir)/'+$extout
|
2007-06-09 23:06:15 -04:00
|
|
|
RbConfig::CONFIG["extout"] = CONFIG["extout"] = $extout
|
2004-02-17 05:34:31 -05:00
|
|
|
$extout_prefix = $extout ? "$(extout)$(target_prefix)/" : ""
|
2007-06-10 02:09:40 -04:00
|
|
|
$mflags << "extout=#$extout" << "extout_prefix=#$extout_prefix"
|
2004-02-09 03:48:55 -05:00
|
|
|
end
|
2003-01-25 13:59:34 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
parse_args()
|
* configure.in (XCFLAGS): CFLAGS to comile ruby itself.
* configure.in (LIBEXT): suffix for static libraries.
* configure.in (LIBPATHFLAG): switch template to specify library
path.
* configure.in (LINK_SO): command to link shared objects.
* configure.in (DEFFILE, ARCHFILE): miscellaneous system dependent
files.
* configure.in (EXPORT_PREFIX): prefix to exported symbols on
Windows.
* configure.in (COMMON_LIBS, COMMON_MACROS, COMMON_HEADERS):
libraries, macros and headers used in common.
* configure.in (RUBYW_INSTALL_NAME, rubyw_install_name): GUI mode
excutable name.
* Makefile.in (CFLAGS): append XCFLAGS.
* Makefile.in (PREP): miscellaneous system dependent files.
* Makefile.in (ruby.imp, ext/extinit.o): moved from ext/extmk.rb.
* Makefile.in (fake.rb): CROSS_COMPILING keeps building platform.
* Makefile.in (MAKEFILES): depend on *.in and config.status.
* Makefile.in (parse.c): replace "y.tab.c" with actual name for
byacc.
* ext/extmk.rb, lib/mkmf.rb: integrated.
* ext/extmk.rb: propagate MFLAGS.
* ext/extmk.rb (extmake): make dummy Makefile to clean even if no
Makefile is made.
* lib/mkmf.rb (older): accept multiple file names and Time
objects.
* lib/mkmf.rb (xsystem): split and qoute.
* lib/mkmf.rb (cpp_include): make include directives.
* lib/mkmf.rb (try_func): try wheather specified function is
available.
* lib/mkmf.rb (install_files): default to site-install.
* lib/mkmf.rb (checking_for): added.
* lib/mkmf.rb (find_executable0): just find executable file with
no message.
* lib/mkmf.rb (create_header): output header file is variable.
* lib/mkmf.rb (create_makefile): separate sections.
* lib/mkmf.rb (init_mkmf): initialize global variables.
* win32/Makefile.sub, bcc32/Makefile.sub (CPP, AR): added.
* bcc32/Makefile.sub (ARCH): fixed to i386.
* win32/Makefile.sub, bcc32/Makefile.sub (miniruby): should not
link EXTOBJS.
* ext/dl/extconf.rb: use try_cpp to cross compile.
* ext/dl/extconf.rb: not modify files in source directory.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-21 10:03:46 -04:00
|
|
|
|
2004-02-09 03:48:55 -05:00
|
|
|
if target = ARGV.shift and /^[a-z-]+$/ =~ target
|
|
|
|
$mflags.push(target)
|
|
|
|
case target
|
2007-06-15 09:31:54 -04:00
|
|
|
when /^(dist|real)?(clean)$/
|
|
|
|
target = $2
|
2004-02-09 03:48:55 -05:00
|
|
|
$ignore ||= true
|
2004-03-23 00:32:01 -05:00
|
|
|
$clean = $1 ? $1[0] : true
|
2004-02-09 03:48:55 -05:00
|
|
|
when /^install\b/
|
|
|
|
$install = true
|
|
|
|
$ignore ||= true
|
|
|
|
$mflags.unshift("INSTALL_PROG=install -c -p -m 0755",
|
|
|
|
"INSTALL_DATA=install -c -p -m 0644",
|
|
|
|
"MAKEDIRS=mkdir -p") if $dryrun
|
|
|
|
end
|
|
|
|
end
|
* configure.in (XCFLAGS): CFLAGS to comile ruby itself.
* configure.in (LIBEXT): suffix for static libraries.
* configure.in (LIBPATHFLAG): switch template to specify library
path.
* configure.in (LINK_SO): command to link shared objects.
* configure.in (DEFFILE, ARCHFILE): miscellaneous system dependent
files.
* configure.in (EXPORT_PREFIX): prefix to exported symbols on
Windows.
* configure.in (COMMON_LIBS, COMMON_MACROS, COMMON_HEADERS):
libraries, macros and headers used in common.
* configure.in (RUBYW_INSTALL_NAME, rubyw_install_name): GUI mode
excutable name.
* Makefile.in (CFLAGS): append XCFLAGS.
* Makefile.in (PREP): miscellaneous system dependent files.
* Makefile.in (ruby.imp, ext/extinit.o): moved from ext/extmk.rb.
* Makefile.in (fake.rb): CROSS_COMPILING keeps building platform.
* Makefile.in (MAKEFILES): depend on *.in and config.status.
* Makefile.in (parse.c): replace "y.tab.c" with actual name for
byacc.
* ext/extmk.rb, lib/mkmf.rb: integrated.
* ext/extmk.rb: propagate MFLAGS.
* ext/extmk.rb (extmake): make dummy Makefile to clean even if no
Makefile is made.
* lib/mkmf.rb (older): accept multiple file names and Time
objects.
* lib/mkmf.rb (xsystem): split and qoute.
* lib/mkmf.rb (cpp_include): make include directives.
* lib/mkmf.rb (try_func): try wheather specified function is
available.
* lib/mkmf.rb (install_files): default to site-install.
* lib/mkmf.rb (checking_for): added.
* lib/mkmf.rb (find_executable0): just find executable file with
no message.
* lib/mkmf.rb (create_header): output header file is variable.
* lib/mkmf.rb (create_makefile): separate sections.
* lib/mkmf.rb (init_mkmf): initialize global variables.
* win32/Makefile.sub, bcc32/Makefile.sub (CPP, AR): added.
* bcc32/Makefile.sub (ARCH): fixed to i386.
* win32/Makefile.sub, bcc32/Makefile.sub (miniruby): should not
link EXTOBJS.
* ext/dl/extconf.rb: use try_cpp to cross compile.
* ext/dl/extconf.rb: not modify files in source directory.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-21 10:03:46 -04:00
|
|
|
unless $message
|
2004-02-09 03:48:55 -05:00
|
|
|
if target
|
|
|
|
$message = target.sub(/^(\w+)e?\b/, '\1ing').tr('-', ' ')
|
* configure.in (XCFLAGS): CFLAGS to comile ruby itself.
* configure.in (LIBEXT): suffix for static libraries.
* configure.in (LIBPATHFLAG): switch template to specify library
path.
* configure.in (LINK_SO): command to link shared objects.
* configure.in (DEFFILE, ARCHFILE): miscellaneous system dependent
files.
* configure.in (EXPORT_PREFIX): prefix to exported symbols on
Windows.
* configure.in (COMMON_LIBS, COMMON_MACROS, COMMON_HEADERS):
libraries, macros and headers used in common.
* configure.in (RUBYW_INSTALL_NAME, rubyw_install_name): GUI mode
excutable name.
* Makefile.in (CFLAGS): append XCFLAGS.
* Makefile.in (PREP): miscellaneous system dependent files.
* Makefile.in (ruby.imp, ext/extinit.o): moved from ext/extmk.rb.
* Makefile.in (fake.rb): CROSS_COMPILING keeps building platform.
* Makefile.in (MAKEFILES): depend on *.in and config.status.
* Makefile.in (parse.c): replace "y.tab.c" with actual name for
byacc.
* ext/extmk.rb, lib/mkmf.rb: integrated.
* ext/extmk.rb: propagate MFLAGS.
* ext/extmk.rb (extmake): make dummy Makefile to clean even if no
Makefile is made.
* lib/mkmf.rb (older): accept multiple file names and Time
objects.
* lib/mkmf.rb (xsystem): split and qoute.
* lib/mkmf.rb (cpp_include): make include directives.
* lib/mkmf.rb (try_func): try wheather specified function is
available.
* lib/mkmf.rb (install_files): default to site-install.
* lib/mkmf.rb (checking_for): added.
* lib/mkmf.rb (find_executable0): just find executable file with
no message.
* lib/mkmf.rb (create_header): output header file is variable.
* lib/mkmf.rb (create_makefile): separate sections.
* lib/mkmf.rb (init_mkmf): initialize global variables.
* win32/Makefile.sub, bcc32/Makefile.sub (CPP, AR): added.
* bcc32/Makefile.sub (ARCH): fixed to i386.
* win32/Makefile.sub, bcc32/Makefile.sub (miniruby): should not
link EXTOBJS.
* ext/dl/extconf.rb: use try_cpp to cross compile.
* ext/dl/extconf.rb: not modify files in source directory.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-21 10:03:46 -04:00
|
|
|
else
|
|
|
|
$message = "compiling"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
EXEEXT = CONFIG['EXEEXT']
|
2002-12-31 07:31:12 -05:00
|
|
|
if CROSS_COMPILING
|
* configure.in (XCFLAGS): CFLAGS to comile ruby itself.
* configure.in (LIBEXT): suffix for static libraries.
* configure.in (LIBPATHFLAG): switch template to specify library
path.
* configure.in (LINK_SO): command to link shared objects.
* configure.in (DEFFILE, ARCHFILE): miscellaneous system dependent
files.
* configure.in (EXPORT_PREFIX): prefix to exported symbols on
Windows.
* configure.in (COMMON_LIBS, COMMON_MACROS, COMMON_HEADERS):
libraries, macros and headers used in common.
* configure.in (RUBYW_INSTALL_NAME, rubyw_install_name): GUI mode
excutable name.
* Makefile.in (CFLAGS): append XCFLAGS.
* Makefile.in (PREP): miscellaneous system dependent files.
* Makefile.in (ruby.imp, ext/extinit.o): moved from ext/extmk.rb.
* Makefile.in (fake.rb): CROSS_COMPILING keeps building platform.
* Makefile.in (MAKEFILES): depend on *.in and config.status.
* Makefile.in (parse.c): replace "y.tab.c" with actual name for
byacc.
* ext/extmk.rb, lib/mkmf.rb: integrated.
* ext/extmk.rb: propagate MFLAGS.
* ext/extmk.rb (extmake): make dummy Makefile to clean even if no
Makefile is made.
* lib/mkmf.rb (older): accept multiple file names and Time
objects.
* lib/mkmf.rb (xsystem): split and qoute.
* lib/mkmf.rb (cpp_include): make include directives.
* lib/mkmf.rb (try_func): try wheather specified function is
available.
* lib/mkmf.rb (install_files): default to site-install.
* lib/mkmf.rb (checking_for): added.
* lib/mkmf.rb (find_executable0): just find executable file with
no message.
* lib/mkmf.rb (create_header): output header file is variable.
* lib/mkmf.rb (create_makefile): separate sections.
* lib/mkmf.rb (init_mkmf): initialize global variables.
* win32/Makefile.sub, bcc32/Makefile.sub (CPP, AR): added.
* bcc32/Makefile.sub (ARCH): fixed to i386.
* win32/Makefile.sub, bcc32/Makefile.sub (miniruby): should not
link EXTOBJS.
* ext/dl/extconf.rb: use try_cpp to cross compile.
* ext/dl/extconf.rb: not modify files in source directory.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-21 10:03:46 -04:00
|
|
|
$ruby = CONFIG['MINIRUBY']
|
2006-05-17 11:42:21 -04:00
|
|
|
elsif sep = config_string('BUILD_FILE_SEPARATOR')
|
|
|
|
$ruby = "$(topdir:/=#{sep})#{sep}miniruby" + EXEEXT
|
* configure.in (XCFLAGS): CFLAGS to comile ruby itself.
* configure.in (LIBEXT): suffix for static libraries.
* configure.in (LIBPATHFLAG): switch template to specify library
path.
* configure.in (LINK_SO): command to link shared objects.
* configure.in (DEFFILE, ARCHFILE): miscellaneous system dependent
files.
* configure.in (EXPORT_PREFIX): prefix to exported symbols on
Windows.
* configure.in (COMMON_LIBS, COMMON_MACROS, COMMON_HEADERS):
libraries, macros and headers used in common.
* configure.in (RUBYW_INSTALL_NAME, rubyw_install_name): GUI mode
excutable name.
* Makefile.in (CFLAGS): append XCFLAGS.
* Makefile.in (PREP): miscellaneous system dependent files.
* Makefile.in (ruby.imp, ext/extinit.o): moved from ext/extmk.rb.
* Makefile.in (fake.rb): CROSS_COMPILING keeps building platform.
* Makefile.in (MAKEFILES): depend on *.in and config.status.
* Makefile.in (parse.c): replace "y.tab.c" with actual name for
byacc.
* ext/extmk.rb, lib/mkmf.rb: integrated.
* ext/extmk.rb: propagate MFLAGS.
* ext/extmk.rb (extmake): make dummy Makefile to clean even if no
Makefile is made.
* lib/mkmf.rb (older): accept multiple file names and Time
objects.
* lib/mkmf.rb (xsystem): split and qoute.
* lib/mkmf.rb (cpp_include): make include directives.
* lib/mkmf.rb (try_func): try wheather specified function is
available.
* lib/mkmf.rb (install_files): default to site-install.
* lib/mkmf.rb (checking_for): added.
* lib/mkmf.rb (find_executable0): just find executable file with
no message.
* lib/mkmf.rb (create_header): output header file is variable.
* lib/mkmf.rb (create_makefile): separate sections.
* lib/mkmf.rb (init_mkmf): initialize global variables.
* win32/Makefile.sub, bcc32/Makefile.sub (CPP, AR): added.
* bcc32/Makefile.sub (ARCH): fixed to i386.
* win32/Makefile.sub, bcc32/Makefile.sub (miniruby): should not
link EXTOBJS.
* ext/dl/extconf.rb: use try_cpp to cross compile.
* ext/dl/extconf.rb: not modify files in source directory.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-21 10:03:46 -04:00
|
|
|
else
|
|
|
|
$ruby = '$(topdir)/miniruby' + EXEEXT
|
|
|
|
end
|
2007-06-09 23:06:15 -04:00
|
|
|
$ruby << " -I'$(topdir)' -I'$(top_srcdir)/lib'"
|
2007-05-22 16:48:34 -04:00
|
|
|
$ruby << " -I'$(extout)/$(arch)' -I'$(extout)/common'" if $extout
|
2007-06-09 23:06:15 -04:00
|
|
|
$ruby << " -I'$(top_srcdir)/ext' -rpurelib.rb"
|
|
|
|
$config_h = '$(arch_hdrdir)/ruby/config.h'
|
2007-05-22 16:48:34 -04:00
|
|
|
ENV["RUBYLIB"] = "-"
|
|
|
|
ENV["RUBYOPT"] = "-rpurelib.rb"
|
2002-09-08 05:08:15 -04:00
|
|
|
|
2004-01-25 21:35:30 -05:00
|
|
|
MTIMES = [__FILE__, 'rbconfig.rb', srcdir+'/lib/mkmf.rb'].collect {|f| File.mtime(f)}
|
2002-09-08 05:08:15 -04:00
|
|
|
|
|
|
|
# get static-link modules
|
|
|
|
$static_ext = {}
|
2004-02-09 03:48:55 -05:00
|
|
|
if $extstatic
|
2006-10-09 10:41:24 -04:00
|
|
|
$extstatic.each do |t|
|
|
|
|
target = t
|
2004-02-09 03:48:55 -05:00
|
|
|
target = target.downcase if /mswin32|bccwin32/ =~ RUBY_PLATFORM
|
|
|
|
$static_ext[target] = $static_ext.size
|
|
|
|
end
|
|
|
|
end
|
* configure.in (XCFLAGS): CFLAGS to comile ruby itself.
* configure.in (LIBEXT): suffix for static libraries.
* configure.in (LIBPATHFLAG): switch template to specify library
path.
* configure.in (LINK_SO): command to link shared objects.
* configure.in (DEFFILE, ARCHFILE): miscellaneous system dependent
files.
* configure.in (EXPORT_PREFIX): prefix to exported symbols on
Windows.
* configure.in (COMMON_LIBS, COMMON_MACROS, COMMON_HEADERS):
libraries, macros and headers used in common.
* configure.in (RUBYW_INSTALL_NAME, rubyw_install_name): GUI mode
excutable name.
* Makefile.in (CFLAGS): append XCFLAGS.
* Makefile.in (PREP): miscellaneous system dependent files.
* Makefile.in (ruby.imp, ext/extinit.o): moved from ext/extmk.rb.
* Makefile.in (fake.rb): CROSS_COMPILING keeps building platform.
* Makefile.in (MAKEFILES): depend on *.in and config.status.
* Makefile.in (parse.c): replace "y.tab.c" with actual name for
byacc.
* ext/extmk.rb, lib/mkmf.rb: integrated.
* ext/extmk.rb: propagate MFLAGS.
* ext/extmk.rb (extmake): make dummy Makefile to clean even if no
Makefile is made.
* lib/mkmf.rb (older): accept multiple file names and Time
objects.
* lib/mkmf.rb (xsystem): split and qoute.
* lib/mkmf.rb (cpp_include): make include directives.
* lib/mkmf.rb (try_func): try wheather specified function is
available.
* lib/mkmf.rb (install_files): default to site-install.
* lib/mkmf.rb (checking_for): added.
* lib/mkmf.rb (find_executable0): just find executable file with
no message.
* lib/mkmf.rb (create_header): output header file is variable.
* lib/mkmf.rb (create_makefile): separate sections.
* lib/mkmf.rb (init_mkmf): initialize global variables.
* win32/Makefile.sub, bcc32/Makefile.sub (CPP, AR): added.
* bcc32/Makefile.sub (ARCH): fixed to i386.
* win32/Makefile.sub, bcc32/Makefile.sub (miniruby): should not
link EXTOBJS.
* ext/dl/extconf.rb: use try_cpp to cross compile.
* ext/dl/extconf.rb: not modify files in source directory.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-21 10:03:46 -04:00
|
|
|
for dir in ["ext", File::join($top_srcdir, "ext")]
|
|
|
|
setup = File::join(dir, CONFIG['setup'])
|
2002-09-08 05:08:15 -04:00
|
|
|
if File.file? setup
|
2005-11-16 09:25:53 -05:00
|
|
|
f = open(setup)
|
2002-09-08 05:08:15 -04:00
|
|
|
while line = f.gets()
|
|
|
|
line.chomp!
|
|
|
|
line.sub!(/#.*$/, '')
|
|
|
|
next if /^\s*$/ =~ line
|
* configure.in (XCFLAGS): CFLAGS to comile ruby itself.
* configure.in (LIBEXT): suffix for static libraries.
* configure.in (LIBPATHFLAG): switch template to specify library
path.
* configure.in (LINK_SO): command to link shared objects.
* configure.in (DEFFILE, ARCHFILE): miscellaneous system dependent
files.
* configure.in (EXPORT_PREFIX): prefix to exported symbols on
Windows.
* configure.in (COMMON_LIBS, COMMON_MACROS, COMMON_HEADERS):
libraries, macros and headers used in common.
* configure.in (RUBYW_INSTALL_NAME, rubyw_install_name): GUI mode
excutable name.
* Makefile.in (CFLAGS): append XCFLAGS.
* Makefile.in (PREP): miscellaneous system dependent files.
* Makefile.in (ruby.imp, ext/extinit.o): moved from ext/extmk.rb.
* Makefile.in (fake.rb): CROSS_COMPILING keeps building platform.
* Makefile.in (MAKEFILES): depend on *.in and config.status.
* Makefile.in (parse.c): replace "y.tab.c" with actual name for
byacc.
* ext/extmk.rb, lib/mkmf.rb: integrated.
* ext/extmk.rb: propagate MFLAGS.
* ext/extmk.rb (extmake): make dummy Makefile to clean even if no
Makefile is made.
* lib/mkmf.rb (older): accept multiple file names and Time
objects.
* lib/mkmf.rb (xsystem): split and qoute.
* lib/mkmf.rb (cpp_include): make include directives.
* lib/mkmf.rb (try_func): try wheather specified function is
available.
* lib/mkmf.rb (install_files): default to site-install.
* lib/mkmf.rb (checking_for): added.
* lib/mkmf.rb (find_executable0): just find executable file with
no message.
* lib/mkmf.rb (create_header): output header file is variable.
* lib/mkmf.rb (create_makefile): separate sections.
* lib/mkmf.rb (init_mkmf): initialize global variables.
* win32/Makefile.sub, bcc32/Makefile.sub (CPP, AR): added.
* bcc32/Makefile.sub (ARCH): fixed to i386.
* win32/Makefile.sub, bcc32/Makefile.sub (miniruby): should not
link EXTOBJS.
* ext/dl/extconf.rb: use try_cpp to cross compile.
* ext/dl/extconf.rb: not modify files in source directory.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-21 10:03:46 -04:00
|
|
|
target, opt = line.split(nil, 3)
|
|
|
|
if target == 'option'
|
|
|
|
case opt
|
|
|
|
when 'nodynamic'
|
|
|
|
$nodynamic = true
|
|
|
|
end
|
2002-09-08 05:08:15 -04:00
|
|
|
next
|
|
|
|
end
|
|
|
|
target = target.downcase if /mswin32|bccwin32/ =~ RUBY_PLATFORM
|
2004-01-07 17:06:38 -05:00
|
|
|
$static_ext[target] = $static_ext.size
|
2002-09-08 05:08:15 -04:00
|
|
|
end
|
* configure.in (XCFLAGS): CFLAGS to comile ruby itself.
* configure.in (LIBEXT): suffix for static libraries.
* configure.in (LIBPATHFLAG): switch template to specify library
path.
* configure.in (LINK_SO): command to link shared objects.
* configure.in (DEFFILE, ARCHFILE): miscellaneous system dependent
files.
* configure.in (EXPORT_PREFIX): prefix to exported symbols on
Windows.
* configure.in (COMMON_LIBS, COMMON_MACROS, COMMON_HEADERS):
libraries, macros and headers used in common.
* configure.in (RUBYW_INSTALL_NAME, rubyw_install_name): GUI mode
excutable name.
* Makefile.in (CFLAGS): append XCFLAGS.
* Makefile.in (PREP): miscellaneous system dependent files.
* Makefile.in (ruby.imp, ext/extinit.o): moved from ext/extmk.rb.
* Makefile.in (fake.rb): CROSS_COMPILING keeps building platform.
* Makefile.in (MAKEFILES): depend on *.in and config.status.
* Makefile.in (parse.c): replace "y.tab.c" with actual name for
byacc.
* ext/extmk.rb, lib/mkmf.rb: integrated.
* ext/extmk.rb: propagate MFLAGS.
* ext/extmk.rb (extmake): make dummy Makefile to clean even if no
Makefile is made.
* lib/mkmf.rb (older): accept multiple file names and Time
objects.
* lib/mkmf.rb (xsystem): split and qoute.
* lib/mkmf.rb (cpp_include): make include directives.
* lib/mkmf.rb (try_func): try wheather specified function is
available.
* lib/mkmf.rb (install_files): default to site-install.
* lib/mkmf.rb (checking_for): added.
* lib/mkmf.rb (find_executable0): just find executable file with
no message.
* lib/mkmf.rb (create_header): output header file is variable.
* lib/mkmf.rb (create_makefile): separate sections.
* lib/mkmf.rb (init_mkmf): initialize global variables.
* win32/Makefile.sub, bcc32/Makefile.sub (CPP, AR): added.
* bcc32/Makefile.sub (ARCH): fixed to i386.
* win32/Makefile.sub, bcc32/Makefile.sub (miniruby): should not
link EXTOBJS.
* ext/dl/extconf.rb: use try_cpp to cross compile.
* ext/dl/extconf.rb: not modify files in source directory.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-21 10:03:46 -04:00
|
|
|
MTIMES << f.mtime
|
2002-09-08 05:08:15 -04:00
|
|
|
$setup = setup
|
|
|
|
f.close
|
|
|
|
break
|
|
|
|
end
|
2004-02-09 03:48:55 -05:00
|
|
|
end unless $extstatic
|
|
|
|
|
|
|
|
ext_prefix = "#{$top_srcdir}/ext"
|
|
|
|
exts = $static_ext.sort_by {|t, i| i}.collect {|t, i| t}
|
2006-06-21 04:08:36 -04:00
|
|
|
if $extension
|
2005-10-16 09:17:43 -04:00
|
|
|
exts |= $extension.select {|d| File.directory?("#{ext_prefix}/#{d}")}
|
|
|
|
else
|
2005-10-22 10:55:07 -04:00
|
|
|
withes, withouts = %w[--with --without].collect {|w|
|
2006-10-09 10:41:24 -04:00
|
|
|
if not (w = %w[-extensions -ext].collect {|o|arg_config(w+o)}).any?
|
2005-10-22 10:55:07 -04:00
|
|
|
proc {false}
|
|
|
|
elsif (w = w.grep(String)).empty?
|
|
|
|
proc {true}
|
|
|
|
else
|
2006-10-09 10:41:24 -04:00
|
|
|
w.collect {|o| o.split(/,/)}.flatten.method(:any?)
|
2005-10-22 10:55:07 -04:00
|
|
|
end
|
|
|
|
}
|
|
|
|
cond = proc {|ext|
|
|
|
|
cond1 = proc {|n| File.fnmatch(n, ext, File::FNM_PATHNAME)}
|
|
|
|
withes.call(&cond1) or !withouts.call(&cond1)
|
|
|
|
}
|
2005-10-16 09:17:43 -04:00
|
|
|
exts |= Dir.glob("#{ext_prefix}/*/**/extconf.rb").collect {|d|
|
|
|
|
d = File.dirname(d)
|
|
|
|
d.slice!(0, ext_prefix.length + 1)
|
|
|
|
d
|
2005-10-22 10:55:07 -04:00
|
|
|
}.find_all {|ext|
|
|
|
|
with_config(ext, &cond)
|
2005-10-16 09:17:43 -04:00
|
|
|
}.sort
|
|
|
|
end
|
2004-02-09 03:48:55 -05:00
|
|
|
|
2004-02-09 04:20:52 -05:00
|
|
|
if $extout
|
2006-09-28 20:37:20 -04:00
|
|
|
extout = RbConfig.expand("#{$extout}", RbConfig::CONFIG.merge("topdir"=>$topdir))
|
2004-02-09 03:48:55 -05:00
|
|
|
unless $ignore
|
2004-02-21 00:33:24 -05:00
|
|
|
FileUtils.mkpath(extout)
|
2004-02-09 03:48:55 -05:00
|
|
|
end
|
2002-09-08 05:08:15 -04:00
|
|
|
end
|
|
|
|
|
2004-02-21 00:33:24 -05:00
|
|
|
dir = Dir.pwd
|
2003-08-16 22:32:07 -04:00
|
|
|
FileUtils::makedirs('ext')
|
* configure.in (XCFLAGS): CFLAGS to comile ruby itself.
* configure.in (LIBEXT): suffix for static libraries.
* configure.in (LIBPATHFLAG): switch template to specify library
path.
* configure.in (LINK_SO): command to link shared objects.
* configure.in (DEFFILE, ARCHFILE): miscellaneous system dependent
files.
* configure.in (EXPORT_PREFIX): prefix to exported symbols on
Windows.
* configure.in (COMMON_LIBS, COMMON_MACROS, COMMON_HEADERS):
libraries, macros and headers used in common.
* configure.in (RUBYW_INSTALL_NAME, rubyw_install_name): GUI mode
excutable name.
* Makefile.in (CFLAGS): append XCFLAGS.
* Makefile.in (PREP): miscellaneous system dependent files.
* Makefile.in (ruby.imp, ext/extinit.o): moved from ext/extmk.rb.
* Makefile.in (fake.rb): CROSS_COMPILING keeps building platform.
* Makefile.in (MAKEFILES): depend on *.in and config.status.
* Makefile.in (parse.c): replace "y.tab.c" with actual name for
byacc.
* ext/extmk.rb, lib/mkmf.rb: integrated.
* ext/extmk.rb: propagate MFLAGS.
* ext/extmk.rb (extmake): make dummy Makefile to clean even if no
Makefile is made.
* lib/mkmf.rb (older): accept multiple file names and Time
objects.
* lib/mkmf.rb (xsystem): split and qoute.
* lib/mkmf.rb (cpp_include): make include directives.
* lib/mkmf.rb (try_func): try wheather specified function is
available.
* lib/mkmf.rb (install_files): default to site-install.
* lib/mkmf.rb (checking_for): added.
* lib/mkmf.rb (find_executable0): just find executable file with
no message.
* lib/mkmf.rb (create_header): output header file is variable.
* lib/mkmf.rb (create_makefile): separate sections.
* lib/mkmf.rb (init_mkmf): initialize global variables.
* win32/Makefile.sub, bcc32/Makefile.sub (CPP, AR): added.
* bcc32/Makefile.sub (ARCH): fixed to i386.
* win32/Makefile.sub, bcc32/Makefile.sub (miniruby): should not
link EXTOBJS.
* ext/dl/extconf.rb: use try_cpp to cross compile.
* ext/dl/extconf.rb: not modify files in source directory.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-21 10:03:46 -04:00
|
|
|
Dir::chdir('ext')
|
|
|
|
|
2007-06-09 23:06:15 -04:00
|
|
|
hdrdir = $hdrdir
|
|
|
|
$hdrdir = ($top_srcdir = relative_from(srcdir, $topdir = "..")) + "/include"
|
2004-02-09 03:48:55 -05:00
|
|
|
exts.each do |d|
|
2004-01-07 17:06:38 -05:00
|
|
|
extmake(d) or abort
|
2002-09-08 05:08:15 -04:00
|
|
|
end
|
2007-06-09 23:06:15 -04:00
|
|
|
$top_srcdir = srcdir
|
2004-02-21 00:33:24 -05:00
|
|
|
$topdir = "."
|
2007-06-09 23:06:15 -04:00
|
|
|
$hdrdir = hdrdir
|
2002-09-08 05:08:15 -04:00
|
|
|
|
2006-05-26 22:30:10 -04:00
|
|
|
extinit = Struct.new(:c, :o) {
|
|
|
|
def initialize(src)
|
|
|
|
super("#{src}.c", "#{src}.#{$OBJEXT}")
|
|
|
|
end
|
|
|
|
}.new("extinit")
|
* configure.in (XCFLAGS): CFLAGS to comile ruby itself.
* configure.in (LIBEXT): suffix for static libraries.
* configure.in (LIBPATHFLAG): switch template to specify library
path.
* configure.in (LINK_SO): command to link shared objects.
* configure.in (DEFFILE, ARCHFILE): miscellaneous system dependent
files.
* configure.in (EXPORT_PREFIX): prefix to exported symbols on
Windows.
* configure.in (COMMON_LIBS, COMMON_MACROS, COMMON_HEADERS):
libraries, macros and headers used in common.
* configure.in (RUBYW_INSTALL_NAME, rubyw_install_name): GUI mode
excutable name.
* Makefile.in (CFLAGS): append XCFLAGS.
* Makefile.in (PREP): miscellaneous system dependent files.
* Makefile.in (ruby.imp, ext/extinit.o): moved from ext/extmk.rb.
* Makefile.in (fake.rb): CROSS_COMPILING keeps building platform.
* Makefile.in (MAKEFILES): depend on *.in and config.status.
* Makefile.in (parse.c): replace "y.tab.c" with actual name for
byacc.
* ext/extmk.rb, lib/mkmf.rb: integrated.
* ext/extmk.rb: propagate MFLAGS.
* ext/extmk.rb (extmake): make dummy Makefile to clean even if no
Makefile is made.
* lib/mkmf.rb (older): accept multiple file names and Time
objects.
* lib/mkmf.rb (xsystem): split and qoute.
* lib/mkmf.rb (cpp_include): make include directives.
* lib/mkmf.rb (try_func): try wheather specified function is
available.
* lib/mkmf.rb (install_files): default to site-install.
* lib/mkmf.rb (checking_for): added.
* lib/mkmf.rb (find_executable0): just find executable file with
no message.
* lib/mkmf.rb (create_header): output header file is variable.
* lib/mkmf.rb (create_makefile): separate sections.
* lib/mkmf.rb (init_mkmf): initialize global variables.
* win32/Makefile.sub, bcc32/Makefile.sub (CPP, AR): added.
* bcc32/Makefile.sub (ARCH): fixed to i386.
* win32/Makefile.sub, bcc32/Makefile.sub (miniruby): should not
link EXTOBJS.
* ext/dl/extconf.rb: use try_cpp to cross compile.
* ext/dl/extconf.rb: not modify files in source directory.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-21 10:03:46 -04:00
|
|
|
if $ignore
|
2006-05-26 22:30:10 -04:00
|
|
|
FileUtils.rm_f(extinit.to_a) if $clean
|
2002-09-08 05:08:15 -04:00
|
|
|
Dir.chdir ".."
|
2004-02-17 05:34:31 -05:00
|
|
|
if $clean
|
|
|
|
Dir.rmdir('ext') rescue nil
|
2007-06-15 09:31:54 -04:00
|
|
|
if $extout
|
2007-08-02 22:05:57 -04:00
|
|
|
FileUtils.rm_rf([extout+"/common", extout+"/include/ruby", extout+"/rdoc"])
|
2007-06-15 09:31:54 -04:00
|
|
|
FileUtils.rm_rf(extout+"/"+CONFIG["arch"])
|
|
|
|
if $clean != true
|
|
|
|
FileUtils.rm_rf(extout+"/include/"+CONFIG["arch"])
|
2007-08-02 22:05:57 -04:00
|
|
|
FileUtils.rm_f($mflags.defined?("INSTALLED_LIST")||ENV["INSTALLED_LIST"]||".installed.list")
|
2007-06-15 09:31:54 -04:00
|
|
|
Dir.rmdir(extout+"/include") rescue nil
|
|
|
|
Dir.rmdir(extout) rescue nil
|
|
|
|
end
|
|
|
|
end
|
2004-02-17 05:34:31 -05:00
|
|
|
end
|
2002-09-08 05:08:15 -04:00
|
|
|
exit
|
|
|
|
end
|
|
|
|
|
2006-09-08 15:48:22 -04:00
|
|
|
$extinit ||= ""
|
|
|
|
$extobjs ||= ""
|
|
|
|
$extpath ||= []
|
|
|
|
$extflags ||= ""
|
|
|
|
$extlibs ||= []
|
|
|
|
unless $extlist.empty?
|
|
|
|
$extinit << "\n" unless $extinit.empty?
|
2003-08-11 22:12:48 -04:00
|
|
|
list = $extlist.dup
|
2004-09-02 12:54:35 -04:00
|
|
|
built = []
|
2004-01-07 17:06:38 -05:00
|
|
|
while e = list.shift
|
|
|
|
s,t,i,r = e
|
2004-09-02 12:54:35 -04:00
|
|
|
if r and !(r -= built).empty?
|
2004-01-07 17:06:38 -05:00
|
|
|
l = list.size
|
|
|
|
if (while l > 0; break true if r.include?(list[l-=1][1]) end)
|
|
|
|
list.insert(l + 1, e)
|
|
|
|
end
|
2004-04-15 19:27:12 -04:00
|
|
|
next
|
2003-08-11 22:12:48 -04:00
|
|
|
end
|
2002-09-08 05:08:15 -04:00
|
|
|
f = format("%s/%s.%s", s, i, $LIBEXT)
|
|
|
|
if File.exist?(f)
|
2006-09-08 15:48:22 -04:00
|
|
|
$extinit << " init(Init_#{i}, \"#{t}.so\");\n"
|
|
|
|
$extobjs << "ext/#{f} "
|
2004-09-02 12:54:35 -04:00
|
|
|
built << t
|
2002-09-08 05:08:15 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2006-05-26 22:30:10 -04:00
|
|
|
src = %{\
|
2006-09-08 15:48:22 -04:00
|
|
|
#include "ruby.h"
|
|
|
|
|
2007-05-03 09:19:11 -04:00
|
|
|
#define init(func, name) { \\
|
|
|
|
extern void func _((void)); \\
|
|
|
|
ruby_init_ext(name, func); \\
|
2006-09-08 15:48:22 -04:00
|
|
|
}
|
|
|
|
|
2007-05-03 09:19:11 -04:00
|
|
|
void ruby_init_ext _((const char *name, void (*init)(void)));
|
|
|
|
|
|
|
|
void Init_ext _((void))\n{\n#$extinit}
|
2006-05-26 22:30:10 -04:00
|
|
|
}
|
|
|
|
if !modified?(extinit.c, MTIMES) || IO.read(extinit.c) != src
|
2006-10-09 10:41:24 -04:00
|
|
|
open(extinit.c, "w") {|fe| fe.print src}
|
2002-09-08 05:08:15 -04:00
|
|
|
end
|
|
|
|
|
2006-10-19 11:38:31 -04:00
|
|
|
$extobjs = "ext/#{extinit.o} #{$extobjs}"
|
2002-09-08 05:08:15 -04:00
|
|
|
if RUBY_PLATFORM =~ /m68k-human|beos/
|
2003-08-12 03:55:14 -04:00
|
|
|
$extflags.delete("-L/usr/local/lib")
|
2002-09-08 05:08:15 -04:00
|
|
|
end
|
2003-08-05 23:11:14 -04:00
|
|
|
$extpath.delete("$(topdir)")
|
|
|
|
$extflags = libpathflag($extpath) << " " << $extflags.strip
|
2002-10-22 00:19:26 -04:00
|
|
|
conf = [
|
2006-10-01 11:00:45 -04:00
|
|
|
['LIBRUBY_SO_UPDATE', '$(LIBRUBY_EXTS)'],
|
2005-08-04 11:20:10 -04:00
|
|
|
['SETUP', $setup],
|
|
|
|
[enable_config("shared", $enable_shared) ? 'DLDOBJS' : 'EXTOBJS', $extobjs],
|
2003-08-12 03:55:14 -04:00
|
|
|
['EXTLIBS', $extlibs.join(' ')], ['EXTLDFLAGS', $extflags]
|
2002-10-22 00:19:26 -04:00
|
|
|
].map {|n, v|
|
|
|
|
"#{n}=#{v}" if v and !(v = v.strip).empty?
|
|
|
|
}.compact
|
2006-09-08 15:48:22 -04:00
|
|
|
puts(*conf)
|
2002-10-27 04:04:55 -05:00
|
|
|
$stdout.flush
|
2002-11-03 16:42:14 -05:00
|
|
|
$mflags.concat(conf)
|
2006-05-26 22:30:10 -04:00
|
|
|
else
|
|
|
|
FileUtils.rm_f(extinit.to_a)
|
2002-09-08 05:08:15 -04:00
|
|
|
end
|
* configure.in (XCFLAGS): CFLAGS to comile ruby itself.
* configure.in (LIBEXT): suffix for static libraries.
* configure.in (LIBPATHFLAG): switch template to specify library
path.
* configure.in (LINK_SO): command to link shared objects.
* configure.in (DEFFILE, ARCHFILE): miscellaneous system dependent
files.
* configure.in (EXPORT_PREFIX): prefix to exported symbols on
Windows.
* configure.in (COMMON_LIBS, COMMON_MACROS, COMMON_HEADERS):
libraries, macros and headers used in common.
* configure.in (RUBYW_INSTALL_NAME, rubyw_install_name): GUI mode
excutable name.
* Makefile.in (CFLAGS): append XCFLAGS.
* Makefile.in (PREP): miscellaneous system dependent files.
* Makefile.in (ruby.imp, ext/extinit.o): moved from ext/extmk.rb.
* Makefile.in (fake.rb): CROSS_COMPILING keeps building platform.
* Makefile.in (MAKEFILES): depend on *.in and config.status.
* Makefile.in (parse.c): replace "y.tab.c" with actual name for
byacc.
* ext/extmk.rb, lib/mkmf.rb: integrated.
* ext/extmk.rb: propagate MFLAGS.
* ext/extmk.rb (extmake): make dummy Makefile to clean even if no
Makefile is made.
* lib/mkmf.rb (older): accept multiple file names and Time
objects.
* lib/mkmf.rb (xsystem): split and qoute.
* lib/mkmf.rb (cpp_include): make include directives.
* lib/mkmf.rb (try_func): try wheather specified function is
available.
* lib/mkmf.rb (install_files): default to site-install.
* lib/mkmf.rb (checking_for): added.
* lib/mkmf.rb (find_executable0): just find executable file with
no message.
* lib/mkmf.rb (create_header): output header file is variable.
* lib/mkmf.rb (create_makefile): separate sections.
* lib/mkmf.rb (init_mkmf): initialize global variables.
* win32/Makefile.sub, bcc32/Makefile.sub (CPP, AR): added.
* bcc32/Makefile.sub (ARCH): fixed to i386.
* win32/Makefile.sub, bcc32/Makefile.sub (miniruby): should not
link EXTOBJS.
* ext/dl/extconf.rb: use try_cpp to cross compile.
* ext/dl/extconf.rb: not modify files in source directory.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-21 10:03:46 -04:00
|
|
|
rubies = []
|
2006-10-09 10:41:24 -04:00
|
|
|
%w[RUBY RUBYW STATIC_RUBY].each {|n|
|
|
|
|
r = n
|
2004-04-02 04:00:12 -05:00
|
|
|
if r = arg_config("--"+r.downcase) || config_string(r+"_INSTALL_NAME")
|
2006-09-21 09:58:33 -04:00
|
|
|
rubies << Config.expand(r+=EXEEXT)
|
2005-11-16 09:25:53 -05:00
|
|
|
$mflags << "#{n}=#{r}"
|
2004-04-02 04:00:12 -05:00
|
|
|
end
|
* configure.in (XCFLAGS): CFLAGS to comile ruby itself.
* configure.in (LIBEXT): suffix for static libraries.
* configure.in (LIBPATHFLAG): switch template to specify library
path.
* configure.in (LINK_SO): command to link shared objects.
* configure.in (DEFFILE, ARCHFILE): miscellaneous system dependent
files.
* configure.in (EXPORT_PREFIX): prefix to exported symbols on
Windows.
* configure.in (COMMON_LIBS, COMMON_MACROS, COMMON_HEADERS):
libraries, macros and headers used in common.
* configure.in (RUBYW_INSTALL_NAME, rubyw_install_name): GUI mode
excutable name.
* Makefile.in (CFLAGS): append XCFLAGS.
* Makefile.in (PREP): miscellaneous system dependent files.
* Makefile.in (ruby.imp, ext/extinit.o): moved from ext/extmk.rb.
* Makefile.in (fake.rb): CROSS_COMPILING keeps building platform.
* Makefile.in (MAKEFILES): depend on *.in and config.status.
* Makefile.in (parse.c): replace "y.tab.c" with actual name for
byacc.
* ext/extmk.rb, lib/mkmf.rb: integrated.
* ext/extmk.rb: propagate MFLAGS.
* ext/extmk.rb (extmake): make dummy Makefile to clean even if no
Makefile is made.
* lib/mkmf.rb (older): accept multiple file names and Time
objects.
* lib/mkmf.rb (xsystem): split and qoute.
* lib/mkmf.rb (cpp_include): make include directives.
* lib/mkmf.rb (try_func): try wheather specified function is
available.
* lib/mkmf.rb (install_files): default to site-install.
* lib/mkmf.rb (checking_for): added.
* lib/mkmf.rb (find_executable0): just find executable file with
no message.
* lib/mkmf.rb (create_header): output header file is variable.
* lib/mkmf.rb (create_makefile): separate sections.
* lib/mkmf.rb (init_mkmf): initialize global variables.
* win32/Makefile.sub, bcc32/Makefile.sub (CPP, AR): added.
* bcc32/Makefile.sub (ARCH): fixed to i386.
* win32/Makefile.sub, bcc32/Makefile.sub (miniruby): should not
link EXTOBJS.
* ext/dl/extconf.rb: use try_cpp to cross compile.
* ext/dl/extconf.rb: not modify files in source directory.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-21 10:03:46 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
Dir.chdir ".."
|
2005-04-17 09:57:52 -04:00
|
|
|
unless $destdir.to_s.empty?
|
|
|
|
$mflags.defined?("DESTDIR") or $mflags << "DESTDIR=#{$destdir}"
|
|
|
|
end
|
* configure.in (XCFLAGS): CFLAGS to comile ruby itself.
* configure.in (LIBEXT): suffix for static libraries.
* configure.in (LIBPATHFLAG): switch template to specify library
path.
* configure.in (LINK_SO): command to link shared objects.
* configure.in (DEFFILE, ARCHFILE): miscellaneous system dependent
files.
* configure.in (EXPORT_PREFIX): prefix to exported symbols on
Windows.
* configure.in (COMMON_LIBS, COMMON_MACROS, COMMON_HEADERS):
libraries, macros and headers used in common.
* configure.in (RUBYW_INSTALL_NAME, rubyw_install_name): GUI mode
excutable name.
* Makefile.in (CFLAGS): append XCFLAGS.
* Makefile.in (PREP): miscellaneous system dependent files.
* Makefile.in (ruby.imp, ext/extinit.o): moved from ext/extmk.rb.
* Makefile.in (fake.rb): CROSS_COMPILING keeps building platform.
* Makefile.in (MAKEFILES): depend on *.in and config.status.
* Makefile.in (parse.c): replace "y.tab.c" with actual name for
byacc.
* ext/extmk.rb, lib/mkmf.rb: integrated.
* ext/extmk.rb: propagate MFLAGS.
* ext/extmk.rb (extmake): make dummy Makefile to clean even if no
Makefile is made.
* lib/mkmf.rb (older): accept multiple file names and Time
objects.
* lib/mkmf.rb (xsystem): split and qoute.
* lib/mkmf.rb (cpp_include): make include directives.
* lib/mkmf.rb (try_func): try wheather specified function is
available.
* lib/mkmf.rb (install_files): default to site-install.
* lib/mkmf.rb (checking_for): added.
* lib/mkmf.rb (find_executable0): just find executable file with
no message.
* lib/mkmf.rb (create_header): output header file is variable.
* lib/mkmf.rb (create_makefile): separate sections.
* lib/mkmf.rb (init_mkmf): initialize global variables.
* win32/Makefile.sub, bcc32/Makefile.sub (CPP, AR): added.
* bcc32/Makefile.sub (ARCH): fixed to i386.
* win32/Makefile.sub, bcc32/Makefile.sub (miniruby): should not
link EXTOBJS.
* ext/dl/extconf.rb: use try_cpp to cross compile.
* ext/dl/extconf.rb: not modify files in source directory.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-21 10:03:46 -04:00
|
|
|
puts "making #{rubies.join(', ')}"
|
2002-10-27 04:04:55 -05:00
|
|
|
$stdout.flush
|
2002-11-03 16:42:14 -05:00
|
|
|
$mflags.concat(rubies)
|
2002-12-31 07:31:12 -05:00
|
|
|
|
2005-08-03 19:04:16 -04:00
|
|
|
if $nmake == ?b
|
2006-10-19 11:38:31 -04:00
|
|
|
unless (vars = $mflags.grep(/\A\w+=/n)).empty?
|
2006-10-19 12:03:45 -04:00
|
|
|
open(mkf = "libruby.mk", "wb") do |tmf|
|
|
|
|
tmf.puts("!include Makefile")
|
|
|
|
tmf.puts
|
|
|
|
tmf.puts(*vars.map {|v| v.sub(/=/, " = ")})
|
|
|
|
tmf.puts("PRE_LIBRUBY_UPDATE = del #{mkf}")
|
2006-10-19 11:38:31 -04:00
|
|
|
end
|
2006-10-19 12:03:45 -04:00
|
|
|
$mflags.unshift("-f#{mkf}")
|
|
|
|
vars.each {|flag| flag.sub!(/\A/, "-D")}
|
2006-10-19 11:38:31 -04:00
|
|
|
end
|
2005-08-03 19:04:16 -04:00
|
|
|
end
|
2007-06-10 02:09:40 -04:00
|
|
|
$mflags.unshift("topdir=#$topdir")
|
2003-01-05 02:04:10 -05:00
|
|
|
system($make, *sysquote($mflags)) or exit($?.exitstatus)
|
2002-09-08 05:08:15 -04:00
|
|
|
|
|
|
|
#Local variables:
|
|
|
|
# mode: ruby
|
|
|
|
#end:
|