ruby-changes:44158
From: nobu <ko1@a...>
Date: Sat, 24 Sep 2016 22:26:28 +0900 (JST)
Subject: [ruby-changes:44158] nobu:r56230 (trunk): install extra libraries
nobu 2016-09-24 22:26:21 +0900 (Sat, 24 Sep 2016) New Revision: 56230 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=56230 Log: install extra libraries * ext/extmk.rb (extract_makefile, extmake, configuration): store extra libraries to be installed. * tool/rbinstall.rb (ext-arch): install extra libraries. * ext/zlib/extconf.rb: install zlib if built. Modified files: trunk/ChangeLog trunk/ext/extmk.rb trunk/ext/zlib/extconf.rb trunk/tool/rbinstall.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 56229) +++ ChangeLog (revision 56230) @@ -1,3 +1,12 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Sat Sep 24 22:26:20 2016 Nobuyoshi Nakada <nobu@r...> + + * ext/extmk.rb (extract_makefile, extmake, configuration): store + extra libraries to be installed. + + * tool/rbinstall.rb (ext-arch): install extra libraries. + + * ext/zlib/extconf.rb: install zlib if built. + Sat Sep 24 14:24:55 2016 Kazuhiro NISHIYAMA <zn@m...> * spec/README: update URL. Index: ext/zlib/extconf.rb =================================================================== --- ext/zlib/extconf.rb (revision 56229) +++ ext/zlib/extconf.rb (revision 56230) @@ -21,11 +21,27 @@ else https://github.com/ruby/ruby/blob/trunk/ext/zlib/extconf.rb#L21 zsrc = dirs.max_by {|x| x.scan(/\d+/).map(&:to_i)} end if zsrc + addconf = [ + "ZSRC = $(srcdir)/#{File.basename(zsrc)}\n", + "all:\n", + ] $INCFLAGS << " -I$(ZSRC)" if $mswin or $mingw $libs = append_library($libs, "zdll") dll = "zlib1.dll" + $extso << dll + addconf.push( + "ZIMPLIB = zdll.lib\n", + "$(TARGET_SO): $(ZIMPLIB)\n", + "$(ZIMPLIB):\n", + "\t$(MAKE) -f $(ZSRC)/win32/Makefile.#{$nmake ? 'msc' : 'gcc'} TOP=$(ZSRC) $@\n", + "install-so: $(topdir)/#{dll}", + "$(topdir)/#{dll}: $(ZIMPLIB)\n", + "\t$(Q) $(COPY) #{dll} $(@D)\n", + ) end + Logging.message "using zlib in #{zsrc}\n" + $defs << "-DHAVE_ZLIB_H" have_zlib = true end end @@ -82,17 +98,7 @@ if have_zlib https://github.com/ruby/ruby/blob/trunk/ext/zlib/extconf.rb#L98 create_makefile('zlib') {|conf| if zsrc - conf << "ZSRC = $(srcdir)/#{File.basename(zsrc)}\n" - conf << "all:\n" - if $mingw or $mswin - conf << "ZIMPLIB = zdll.lib\n" - conf << "$(TARGET_SO): $(ZIMPLIB)\n" - conf << "$(ZIMPLIB):\n" - conf << "\t$(MAKE) -f $(ZSRC)/win32/Makefile.#{$nmake ? 'msc' : 'gcc'} TOP=$(ZSRC) $@\n" - conf << "install-so: $(topdir)/#{dll}" - conf << "$(topdir)/#{dll}: $(ZIMPLIB)\n" - conf << "\t$(Q) $(COPY) #{dll} $(@D)\n" - end + conf.concat addconf if addconf end conf } Index: ext/extmk.rb =================================================================== --- ext/extmk.rb (revision 56229) +++ ext/extmk.rb (revision 56230) @@ -81,6 +81,7 @@ def extract_makefile(makefile, keep = tr https://github.com/ruby/ruby/blob/trunk/ext/extmk.rb#L81 m = File.read(makefile) s = m[/^CLEANFILES[ \t]*=[ \t](.*)/, 1] and $cleanfiles = s.split s = m[/^DISTCLEANFILES[ \t]*=[ \t](.*)/, 1] and $distcleanfiles = s.split + s = m[/^EXTSO[ \t]*=[ \t](.*)/, 1] and $extso = s.split if !(target = m[/^TARGET[ \t]*=[ \t]*(\S*)/, 1]) return keep end @@ -165,6 +166,7 @@ def extmake(target, basedir = (maybestat https://github.com/ruby/ruby/blob/trunk/ext/extmk.rb#L166 $preload = nil $objs = [] $srcs = [] + $extso = [] $compiled[target] = false makefile = "./Makefile" static = $static @@ -552,6 +554,10 @@ extend Module.new { https://github.com/ruby/ruby/blob/trunk/ext/extmk.rb#L554 def timestamp_file(name, target_prefix = nil) super.sub(%r[/\.extout\.(?:-\.)?], '/.') end + + def configuration(srcdir) + super << "EXTSO #{['=', $extso].join(' ')}\n" + end } dir = Dir.pwd @@ -560,12 +566,14 @@ Dir::chdir('ext') https://github.com/ruby/ruby/blob/trunk/ext/extmk.rb#L566 hdrdir = $hdrdir $hdrdir = ($top_srcdir = relative_from(srcdir, $topdir = "..")) + "/include" +extso = [] fails = [] exts.each do |d| $static = $force_static ? true : $static_ext[d] if $ignore or !$nodynamic or $static result = extmake(d) or abort + extso |= $extso fails << result unless result == true end end @@ -608,6 +616,7 @@ gems.each do |d| https://github.com/ruby/ruby/blob/trunk/ext/extmk.rb#L616 $extout = extout.dup @gemname = d[%r{\A[^/]+}] extmake(d, 'gems') + extso |= $extso end $extout = extout Dir.chdir('../ext') @@ -745,6 +754,7 @@ if $configure_only and $command_output https://github.com/ruby/ruby/blob/trunk/ext/extmk.rb#L754 mf.macro "gems", gems mf.macro "EXTOBJS", $extlist.empty? ? ["dmyext.#{$OBJEXT}"] : ["ext/extinit.#{$OBJEXT}", *$extobjs] mf.macro "EXTLIBS", $extlibs + mf.macro "EXTSO", extso mf.macro "EXTLDFLAGS", $extflags.split submakeopts = [] if enable_config("shared", $enable_shared) @@ -797,6 +807,9 @@ if $configure_only and $command_output https://github.com/ruby/ruby/blob/trunk/ext/extmk.rb#L807 mf.puts "#{d[0..-2]}#{tgt}:\n\t$(Q)#{submake} $(MFLAGS) V=$(V) $(@F)" end end + mf.puts "\n""extso:\n" + mf.puts "\t@echo EXTSO=$(EXTSO)" + mf.puts "\n""note:\n" unless fails.empty? mf.puts %Q<\t@echo "*** Following extensions failed to configure:"> Index: tool/rbinstall.rb =================================================================== --- tool/rbinstall.rb (revision 56229) +++ tool/rbinstall.rb (revision 56230) @@ -389,6 +389,15 @@ install?(:ext, :arch, :'ext-arch') do https://github.com/ruby/ruby/blob/trunk/tool/rbinstall.rb#L389 install_recursive("#{$extout}/#{CONFIG['arch']}", archlibdir, :no_install => noinst, :mode => $prog_mode, :strip => $strip) prepare "extension objects", sitearchlibdir prepare "extension objects", vendorarchlibdir + if extso = File.read("exts.mk")[/^EXTSO[ \t]*=[ \t]*((?:.*\\\n)*.*)/, 1] and + !(extso = extso.gsub(/\\\n/, '').split).empty? + libpathenv = CONFIG["LIBPATHENV"] + dest = CONFIG[!libpathenv || libpathenv == "PATH" ? "bindir" : "libdir"] + prepare "external libraries", dest + for file in extso + install file, dest, :mode => $prog_mode + end + end end install?(:ext, :arch, :hdr, :'arch-hdr') do prepare "extension headers", archhdrdir -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/