From 94d17c1f1fbacf7dffcdbbe508b37c7719ba6778 Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 6 Aug 2003 03:11:14 +0000 Subject: * ext/extmk.rb (extmake): pass LIBPATH to make ruby. [ruby-dev:21137] * ext/extmk.rb (extmake): set library name as source file name in Init_ext(). [ruby-dev:21137] * lib/mkmf.rb (Logging::postpone): postpone logging messages after heading message as the result of the block. * lib/mkmf.rb (macro_defined?): append newline to src unless ended with it. * lib/mkmf.rb (have_library): allow nil function name to just append a library. (ruby-bugs:PR#1083) * lib/mkmf.rb (pkg_config): should append additional libraries to $libs but not $LIBS. [ruby-dev:21137] * ext/io/wait/extconf.rb: check DOSISH macro instead of platform. * ext/digest/sha1/extconf.rb: have_library already appends library name. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4337 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 24 +++++++++++++++++++++ ext/digest/sha1/extconf.rb | 1 - ext/extmk.rb | 22 +++++++++++++------- ext/io/wait/extconf.rb | 2 +- lib/mkmf.rb | 52 +++++++++++++++++++++++++++++++++------------- 5 files changed, 78 insertions(+), 23 deletions(-) diff --git a/ChangeLog b/ChangeLog index 03186f9694..59f1536491 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,27 @@ +Wed Aug 6 12:11:10 2003 Nobuyoshi Nakada + + * ext/extmk.rb (extmake): pass LIBPATH to make ruby. [ruby-dev:21137] + + * ext/extmk.rb (extmake): set library name as source file name in + Init_ext(). [ruby-dev:21137] + + * lib/mkmf.rb (Logging::postpone): postpone logging messages after + heading message as the result of the block. + + * lib/mkmf.rb (macro_defined?): append newline to src unless ended + with it. + + * lib/mkmf.rb (have_library): allow nil function name to just + append a library. (ruby-bugs:PR#1083) + + * lib/mkmf.rb (pkg_config): should append additional libraries to + $libs but not $LIBS. [ruby-dev:21137] + + * ext/io/wait/extconf.rb: check DOSISH macro instead of platform. + + * ext/digest/sha1/extconf.rb: have_library already appends library + name. + Wed Aug 6 04:58:32 2003 NAKAMURA Usaku * ext/Setup*: add io/wait and openssl. diff --git a/ext/digest/sha1/extconf.rb b/ext/digest/sha1/extconf.rb index d5b7e06d9c..c249a415ed 100644 --- a/ext/digest/sha1/extconf.rb +++ b/ext/digest/sha1/extconf.rb @@ -12,7 +12,6 @@ dir_config("openssl") if !with_config("bundled-sha1") && have_library("crypto") && have_header("openssl/sha.h") $objs << "sha1ossl.#{$OBJEXT}" - $libs << " -lcrypto" else $objs << "sha1.#{$OBJEXT}" << "sha1hl.#{$OBJEXT}" end diff --git a/ext/extmk.rb b/ext/extmk.rb index 68274efde6..eb2a277600 100644 --- a/ext/extmk.rb +++ b/ext/extmk.rb @@ -101,10 +101,12 @@ def extmake(target) if $static $extflags ||= "" $extlibs ||= "" - $extflags += " " + $DLDFLAGS if $DLDFLAGS - $extflags += " " + $LDFLAGS unless $LDFLAGS == "" - $extlibs += " " + $libs unless $libs == "" - $extlibs += " " + $LOCAL_LIBS unless $LOCAL_LIBS == "" + $extpath ||= [] + $extflags += " " + $DLDFLAGS unless $DLDFLAGS.empty? + $extflags += " " + $LDFLAGS unless $LDFLAGS.empty? + libs = ($libs.split+$LOCAL_LIBS.split).uniq + $extlibs = [$extlibs, *libs].join(" ") unless libs.empty? + $extpath |= $LIBPATH end ensure Dir.chdir dir @@ -212,7 +214,7 @@ File::makedirs('ext') Dir::chdir('ext') ext_prefix = "#{$top_srcdir}/ext" -Dir.glob("#{ext_prefix}/**/MANIFEST") do |d| +Dir.glob("#{ext_prefix}/*/**/MANIFEST") do |d| d = File.dirname(d) d.slice!(0, ext_prefix.length + 1) extmake(d) or exit(1) @@ -229,12 +231,16 @@ if $extlist.size > 0 for s,t,i in $extlist f = format("%s/%s.%s", s, i, $LIBEXT) if File.exist?(f) - $extinit += "\tInit_#{i}();\n\trb_provide(\"#{t}.so\");\n" + $extinit += "\tinit(Init_#{i}, \"#{t}.so\");\n" $extobjs += "ext/#{f} " end end - src = "void Init_ext() {\n#$extinit}\n" + src = < 0 if RUBY_PLATFORM =~ /m68k-human|beos/ $extlibs.gsub!("-L/usr/local/lib", "") if $extlibs end + $extpath.delete("$(topdir)") + $extflags = libpathflag($extpath) << " " << $extflags.strip conf = [ ['SETUP', $setup], ['EXTOBJS', $extobjs], ['EXTLIBS', $extlibs], ['EXTLDFLAGS', $extflags] diff --git a/ext/io/wait/extconf.rb b/ext/io/wait/extconf.rb index a766ccbe6f..ea7dc9f6cf 100644 --- a/ext/io/wait/extconf.rb +++ b/ext/io/wait/extconf.rb @@ -1,7 +1,7 @@ require 'mkmf' target = "io/wait" -unless /djgpp|mswin|mingw|human/ =~ RUBY_PLATFORM +unless macro_defined?("DOSISH", "#include ") fionread = %w[sys/ioctl.h sys/filio.h].find do |h| checking_for("FIONREAD") {macro_defined?("FIONREAD", "#include <#{h}>\n")} end diff --git a/lib/mkmf.rb b/lib/mkmf.rb index 80c1651994..5d63277db7 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -144,6 +144,22 @@ module Logging @log = nil end end + + def self::postpone + tmplog = "mkmftmp.log" + open do + log, *save = @log, @logfile, @orgout, @orgerr + @log, @logfile, @orgout, @orgerr = nil, tmplog, log, log + begin + log.print(open {yield}) + @log.close + File::open(tmplog) {|t| FileUtils.copy_stream(t, log)} + ensure + @log, @logfile, @orgout, @orgerr = log, *save + rm_f tmplog + end + end + end end def xsystem command @@ -184,7 +200,7 @@ def create_tmpsrc(src) end def try_do(src, command) - src += "\n" unless /\n\z/ =~ src + src = src.sub(/[^\n]\z/, "\\&\n") create_tmpsrc(src) xsystem(command) ensure @@ -318,7 +334,7 @@ SRC end def egrep_cpp(pat, src, opt="") - src += "\n" unless /\n\z/ =~ src + src = src.sub(/[^\n]\z/, "\\&\n") create_tmpsrc(src) xpopen(cpp_command('', opt)) do |f| if Regexp === pat @@ -345,6 +361,7 @@ ensure end def macro_defined?(macro, src, opt="") + src = src.sub(/[^\n]\z/, "\\&\n") try_cpp(src + <<"SRC", opt) #ifndef #{macro} # error @@ -418,23 +435,30 @@ def checking_for(m) f = caller[0][/in `(.*)'$/, 1] and f << ": " #` for vim m = "checking for #{m}... " message "%s", m - Logging::message "%s%s--------------------\n", f, m - r = yield - message(a = r ? "yes\n" : "no\n") - Logging::message "-------------------- %s\n", a + a = r = nil + Logging::postpone do + r = yield + a = r ? "yes\n" : "no\n" + "#{f}#{m}-------------------- #{a}\n" + end + message(a) + Logging::message "--------------------\n\n" r end def have_library(lib, func="main") - checking_for "#{func}() in -l#{lib}" do - libs = append_library($libs, lib) - if func && func != "" && COMMON_LIBS.include?(lib) - true - elsif try_func(func, libs) - $libs = libs + func &&= ((m = "#{func}() in "; func) unless func.empty?) + checking_for "#{m}-l#{lib}" do + if COMMON_LIBS.include?(lib) true else - false + libs = append_library($libs, lib) + if !func || try_func(func, libs) + $libs = libs + true + else + false + end end end end @@ -630,7 +654,7 @@ def pkg_config(pkg) libs = `#{$PKGCONFIG} --libs-only-l #{pkg}`.chomp $CFLAGS += " " << cflags $LDFLAGS += " " << ldflags - $LIBS += " " << libs + $libs += " " << libs Logging::message "package configuration for %s\n", pkg Logging::message "cflags: %s\nldflags: %s\nlibs: %s\n\n", cflags, ldflags, libs -- cgit v1.2.3