1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/ext/aix_ld.rb
matz 3db12e8b23 Initial revision
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
1998-01-16 12:13:05 +00:00

73 lines
1.4 KiB
Ruby

#! /usr/local/bin/ruby
def older(file1, file2)
if !File.exist?(file1) then
return TRUE
end
if !File.exist?(file2) then
return FALSE
end
if File.mtime(file1) < File.mtime(file2)
return TRUE
end
return FALSE
end
target = ARGV.shift
unless target =~ /\.so/
STDERR.printf "wrong suffix specified\n"
exit 1
end
base = File.basename(target, ".so")
entry="Init_#{base}"
ldargs = "-e#{entry} -bI:../ruby.imp -bM:SRE -T512 -H512 -lc"
def uniq(data)
last=nil
data.delete_if do |name|
if last == name
TRUE
else
last = name
FALSE
end
end
end
def extract(nm, out)
data = nm.readlines.collect{|line|
line = line.split
case line[1]
when "B", "D", "T"
line[2]
else
next
end
}.sort!
uniq(data)
exp = open(out, "w")
for line in data
exp.printf "%s\n", line
end
exp.close
nm.close
end
if older("../ruby.imp", "../../miniruby")
# nm = open("|/usr/ccs/bin/nm -Bex ../../*.o")
# nm = open("|/usr/ccs/bin/nm -Bex ../../*.o")
nm = open("|nm ../../*.o")
extract(nm, "../ruby.imp")
end
objs = Dir["*.o"].join(" ")
#nm = open("|/usr/ccs/bin/nm -Bex #{objs}")
nm = open("|nm #{objs}")
extract(nm, "#{base}.exp")
#system format("/usr/ccs/bin/ld %s %s ",ldargs,ARGV.join(' '))
#system "/bin/rm -f #{base}.exp"
#system "chmod o-rwx ${base}.so"
p format("/usr/ccs/bin/ld %s %s ",ldargs,ARGV.join(' '))
p "/bin/rm -f #{base}.exp"
p "chmod o-rwx ${base}.so"