summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--ext/extmk.rb10
-rw-r--r--lib/mkmf.rb50
3 files changed, 43 insertions, 24 deletions
diff --git a/ChangeLog b/ChangeLog
index 9ee46ad2a8..46be40b48a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Sat Feb 19 10:43:46 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extract_makefile): remove no longer existing installed
+ files.
+
+ * lib/mkmf.rb (install_dirs): return installation directory list.
+
Sat Feb 19 01:28:56 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* ext/bigdecimal/lib/bigdecimal/newton.rb: resolve LoadError.
diff --git a/ext/extmk.rb b/ext/extmk.rb
index 6cd7ed5232..af292624ab 100644
--- a/ext/extmk.rb
+++ b/ext/extmk.rb
@@ -56,9 +56,15 @@ def extract_makefile(makefile, keep = true)
newrb = install_rb(nil, "").collect {|d, *f| f}.flatten.sort
if target_prefix = m[/^target_prefix[ \t]*=[ \t]*\/(.*)/, 1]
target = "#{target_prefix}/#{target}"
- unless (oldrb -= newrb).empty?
- return false
+ end
+ unless oldrb == newrb
+ if $extout
+ newrb.each {|f| installrb.delete(f)}
+ config = CONFIG.dup
+ install_dirs(target_prefix).each {|var, val| config[var] = val}
+ FileUtils.rm_f(installrb.values.collect {|f| Config.expand(f, config)}, verbose: true)
end
+ return false
end
$target = target
/^STATIC_LIB[ \t]*=[ \t]*\S+/ =~ m or $static = nil
diff --git a/lib/mkmf.rb b/lib/mkmf.rb
index a6f77e043c..23d94c7617 100644
--- a/lib/mkmf.rb
+++ b/lib/mkmf.rb
@@ -74,6 +74,32 @@ INSTALL_DIRS = [
[dir_re('sitearchdir'), "$(RUBYARCHDIR)"]
]
+def install_dirs(target_prefix = nil)
+ if $extout
+ dirs = [
+ ['RUBYCOMMONDIR', '$(extout)'],
+ ['RUBYLIBDIR', '$(extout)$(target_prefix)'],
+ ['RUBYARCHDIR', '$(extout)/$(arch)$(target_prefix)'],
+ ['extout', "#$extout"],
+ ['extout_prefix', "#$extout_prefix"],
+ ]
+ elsif $extmk
+ dirs = [
+ ['RUBYCOMMONDIR', '$(rubylibdir)'],
+ ['RUBYLIBDIR', '$(rubylibdir)$(target_prefix)'],
+ ['RUBYARCHDIR', '$(archdir)$(target_prefix)'],
+ ]
+ else
+ dirs = [
+ ['RUBYCOMMONDIR', '$(sitedir)$(target_prefix)'],
+ ['RUBYLIBDIR', '$(sitelibdir)$(target_prefix)'],
+ ['RUBYARCHDIR', '$(sitearchdir)$(target_prefix)'],
+ ]
+ end
+ dirs << ['target_prefix', (target_prefix ? "/#{target_prefix}" : "")]
+ dirs
+end
+
def map_dir(dir, map = nil)
map ||= INSTALL_DIRS
map.inject(dir) {|dir, (orig, new)| dir.gsub(orig, new)}
@@ -896,9 +922,6 @@ def create_makefile(target, srcprefix = nil)
if target.include?('/')
target_prefix, target = File.split(target)
- target_prefix[0,0] = '/'
- else
- target_prefix = ""
end
srcprefix ||= '$(srcdir)'
@@ -961,26 +984,9 @@ OBJS = #{$objs}
TARGET = #{target}
DLLIB = #{dllib}
STATIC_LIB = #{staticlib unless $static.nil?}
+
}
- if $extout
- mfile.print %{
-RUBYCOMMONDIR = $(extout)
-RUBYLIBDIR = $(extout)$(target_prefix)
-RUBYARCHDIR = $(extout)/$(arch)$(target_prefix)
-}
- elsif $extmk
- mfile.print %{
-RUBYCOMMONDIR = $(rubylibdir)
-RUBYLIBDIR = $(rubylibdir)$(target_prefix)
-RUBYARCHDIR = $(archdir)$(target_prefix)
-}
- else
- mfile.print %{
-RUBYCOMMONDIR = $(sitedir)$(target_prefix)
-RUBYLIBDIR = $(sitelibdir)$(target_prefix)
-RUBYARCHDIR = $(sitearchdir)$(target_prefix)
-}
- end
+ install_dirs.each {|d| mfile.print("%-14s= %s\n" % d) if /^[[:upper:]]/ =~ d[0]}
n = ($extout ? '$(RUBYARCHDIR)/' : '') + '$(TARGET).'
mfile.print %{
TARGET_SO = #{($extout ? '$(RUBYARCHDIR)/' : '')}$(DLLIB)