diff options
Diffstat (limited to 'ext/extmk.rb')
| -rwxr-xr-x | ext/extmk.rb | 62 |
1 files changed, 30 insertions, 32 deletions
diff --git a/ext/extmk.rb b/ext/extmk.rb index 8b6b365a99..f5244f72c8 100755 --- a/ext/extmk.rb +++ b/ext/extmk.rb @@ -8,8 +8,6 @@ module Gem RbConfig::CONFIG end end -# only needs Gem::Platform -require 'rubygems/platform' # :stopdoc: $extension = nil @@ -36,13 +34,16 @@ DUMMY_SIGNATURE = "***DUMMY MAKEFILE***" srcdir = File.dirname(File.dirname(__FILE__)) unless defined?(CROSS_COMPILING) and CROSS_COMPILING - $:.replace([File.expand_path("lib", srcdir), Dir.pwd]) + $:.replace([Dir.pwd, File.expand_path("lib", srcdir)]) end -$:.unshift(srcdir) require 'rbconfig' +# only needs Gem::Platform +require 'rubygems/platform' + $topdir = "." $top_srcdir = srcdir +$extmk = true inplace = File.identical?($top_srcdir, $topdir) $" << "mkmf.rb" @@ -138,14 +139,6 @@ def extract_makefile(makefile, keep = true) true end -def create_makefile(target, srcprefix = nil) - if $static and target.include?("/") - base = File.basename(target) - $defs << "-DInit_#{base}=Init_#{target.tr('/', '_')}" - end - super -end - def extmake(target, basedir = 'ext', maybestatic = true) FileUtils.mkpath target unless File.directory?(target) begin @@ -173,8 +166,6 @@ def extmake(target, basedir = 'ext', maybestatic = true) $mdir = target $srcdir = File.join($top_srcdir, basedir, $mdir) $preload = nil - $objs = [] - $srcs = [] $extso = [] makefile = "./Makefile" static = $static @@ -208,7 +199,7 @@ def extmake(target, basedir = 'ext', maybestatic = true) begin $extconf_h = nil ok &&= extract_makefile(makefile) - old_objs = $objs + old_objs = $objs || [] old_cleanfiles = $distcleanfiles | $cleanfiles conf = ["#{$srcdir}/makefile.rb", "#{$srcdir}/extconf.rb"].find {|f| File.exist?(f)} if (!ok || ($extconf_h && !File.exist?($extconf_h)) || @@ -271,6 +262,8 @@ def extmake(target, basedir = 'ext', maybestatic = true) unless $destdir.to_s.empty? or $mflags.defined?("DESTDIR") args += ["DESTDIR=" + relative_from($destdir, "../"+prefix)] end + $objs ||= [] + $srcs ||= [] if $static and ok and !$objs.empty? and !noinstall args += ["static"] $extlist.push [(maybestatic ? $static : false), target, $target, $preload] @@ -566,6 +559,7 @@ extend Module.new { if $static and (target = args.first).include?("/") base = File.basename(target) $defs << "-DInit_#{base}=Init_#{target.tr('/', '_')}" + $defs << "-DInitVM_#{base}=InitVM_#{target.tr('/', '_')}" end return super end @@ -584,7 +578,8 @@ extend Module.new { } end - gemlib = File.directory?("#{$top_srcdir}/#{@ext_prefix}/#{@gemname}/lib") + conf = yield conf if block + if conf.any? {|s| /^TARGET *= *\S/ =~ s} conf << %{ gem_platform = #{Gem::Platform.local} @@ -597,6 +592,7 @@ gem = #{@gemname} build_complete = $(TARGET_GEM_DIR)/gem.build_complete install-so: build_complete clean-so:: clean-build_complete +$(build_complete) $(OBJS): $(TARGET_SO_DIR_TIMESTAMP) build_complete: $(build_complete) $(build_complete): $(TARGET_SO) @@ -617,23 +613,25 @@ gemspec: $(gemspec) clean-gemspec: -$(Q)$(RM) $(gemspec) -} - - if gemlib - conf << %{ -install-rb: gemlib -clean-rb:: clean-gemlib LN_S = #{config_string('LN_S')} CP_R = #{config_string('CP')} -r - -gemlib = $(TARGET_TOPDIR)/gems/$(gem)/lib -gemlib:#{%{ $(gemlib)\n$(gemlib): $(gem_srcdir)/lib} if $nmake} - $(Q) #{@inplace ? '$(NULLCMD) ' : ''}$(RUBY) $(top_srcdir)/tool/ln_sr.rb -q -f -T $(gem_srcdir)/lib $(gemlib) - -clean-gemlib: - $(Q) $(#{@inplace ? 'NULLCMD' : 'RM_RF'}) $(gemlib) } + unless @inplace + %w[bin lib].each do |d| + next unless File.directory?("#{$top_srcdir}/#{@ext_prefix}/#{@gemname}/#{d}") + conf << %{ +install-rb: gem#{d} +clean-rb:: clean-gem#{d} + +gem#{d} = $(TARGET_TOPDIR)/gems/$(gem)/#{d} +gem#{d}:#{%{ $(gem#{d})\n$(gem#{d}): $(gem_srcdir)/#{d}} if $nmake} + $(Q) $(RUBY) $(top_srcdir)/tool/ln_sr.rb -q -f -T $(gem_srcdir)/#{d} $(gem#{d}) + +clean-gem#{d}: + $(Q) $(RM_RF) $(gem#{d}) +} + end end end @@ -817,9 +815,9 @@ begin if $gnumake == "yes" submake = "$(MAKE) -C $(@D)" else - submake = "cd $(@D) && " - config_string("exec") {|str| submake << str << " "} - submake << "$(MAKE)" + submake = ["cd", (sep ? "$(@D:/=#{sep})" : "$(@D)"), "&&"] + config_string("exec") {|str| submake << str} + submake = (submake << "$(MAKE)").join(" ") end targets.each do |tgt| exts.each do |d| |
