[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]