summaryrefslogtreecommitdiff
path: root/lib/mkmf.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mkmf.rb')
-rw-r--r--lib/mkmf.rb30
1 files changed, 21 insertions, 9 deletions
diff --git a/lib/mkmf.rb b/lib/mkmf.rb
index 9adaafc065..f4f84a6d71 100644
--- a/lib/mkmf.rb
+++ b/lib/mkmf.rb
@@ -1726,6 +1726,7 @@ INSTALL = #{config_string('INSTALL', &possible_command) || '@$(RUBY) -run -e ins
INSTALL_PROG = #{config_string('INSTALL_PROG') || '$(INSTALL) -m 0755'}
INSTALL_DATA = #{config_string('INSTALL_DATA') || '$(INSTALL) -m 0644'}
COPY = #{config_string('CP', &possible_command) || '@$(RUBY) -run -e cp -- -v'}
+TOUCH = exit >
#### End of system configuration section. ####
@@ -1742,6 +1743,11 @@ preload = #{defined?($preload) && $preload ? $preload.join(' ') : ''}
end
mk
end
+
+def timestamp_file(name)
+ name = name.gsub(/(\$[({]|[})])|(\/+)|[^-.\w]+/) {$1 ? "" : $2 ? ".-." : "_"}
+ "./.#{name}.time"
+end
# :startdoc:
# creates a stub Makefile.
@@ -2003,18 +2009,20 @@ static: $(STATIC_LIB)#{$extout ? " install-rb" : ""}
if target
f = "$(DLLIB)"
dest = "#{dir}/#{f}"
- mfile.puts dir, "install-so: #{dest}"
+ mfile.puts dest
if $extout
mfile.print "clean-so::\n"
- mfile.print "\t@-$(RM) #{fseprepl[dest]}\n"
- mfile.print "\t@-$(RMDIRS) #{fseprepl[dir]}#{$ignore_error}\n"
+ mfile.print "\t-$(Q)$(RM) #{fseprepl[dest]}\n"
+ mfile.print "\t-$(Q)$(RMDIRS) #{fseprepl[dir]}#{$ignore_error}\n"
else
- mfile.print "#{dest}: #{f}\n\t@-$(MAKEDIRS) $(@D#{sep})\n"
+ mfile.print "#{dest}: #{f}\n\t-$(Q)$(MAKEDIRS) $(@D#{sep})\n"
mfile.print "\t$(INSTALL_PROG) #{fseprepl[f]} $(@D#{sep})\n"
if defined?($installed_list)
mfile.print "\t@echo #{dir}/#{File.basename(f)}>>$(INSTALLED_LIST)\n"
end
end
+ mfile.print "clean-static::\n"
+ mfile.print "\t-$(Q)$(RM) $(STATIC_LIB)\n"
else
mfile.puts "Makefile"
end
@@ -2027,7 +2035,7 @@ static: $(STATIC_LIB)#{$extout ? " install-rb" : ""}
for dir, *files in files
unless dirs.include?(dir)
dirs << dir
- mfile.print "pre-install-rb#{sfx}: #{dir}\n"
+ mfile.print "pre-install-rb#{sfx}: #{timestamp_file(dir)}\n"
end
for f in files
dest = "#{dir}/#{File.basename(f)}"
@@ -2056,7 +2064,10 @@ static: $(STATIC_LIB)#{$extout ? " install-rb" : ""}
end
end
dirs.unshift(sodir) if target and !dirs.include?(sodir)
- dirs.each {|d| mfile.print "#{d}:\n\t$(Q) $(MAKEDIRS) $@\n"}
+ dirs.each do |d|
+ t = timestamp_file(d)
+ mfile.print "#{t}:\n\t$(Q) $(MAKEDIRS) #{d}\n\t$(Q) $(TOUCH) $@\n"
+ end
mfile.print <<-SITEINSTALL
@@ -2089,10 +2100,11 @@ site-install-rb: install-rb
mfile.print "$(RUBYARCHDIR)/" if $extout
mfile.print "$(DLLIB): "
mfile.print "$(DEFFILE) " if makedef
- mfile.print "$(OBJS) Makefile\n"
+ mfile.print "$(OBJS) Makefile"
+ mfile.print " #{timestamp_file('$(RUBYARCHDIR)')}" if $extout
+ mfile.print "\n"
mfile.print "\t$(ECHO) linking shared-object #{target_prefix.sub(/\A\/(.*)/, '\1/')}$(DLLIB)\n"
- mfile.print "\t@-$(RM) $(@#{sep})\n"
- mfile.print "\t@-$(MAKEDIRS) $(@D)\n" if $extout
+ mfile.print "\t-$(Q)$(RM) $(@#{sep})\n"
link_so = LINK_SO.gsub(/^/, "\t$(Q) ")
if srcs.any?(&%r"\.(?:#{CXX_EXT.join('|')})\z".method(:===))
link_so = link_so.sub(/\bLDSHARED\b/, '\&XX')