blob: 65a256d6684d869c6dc69dbc607e2d349bdf72c3 [file] [log] [blame]
gwt.team.knorton127a2562006-12-11 06:08:59 +00001#!/usr/bin/env ruby
2require 'ostruct';
3
4$CONFIG = OpenStruct.new
5$CONFIG.root = File.dirname(__FILE__)
6$CONFIG.frameworks = "#{$CONFIG.root}/Frameworks"
7
8class Framework
9 attr_reader :libs,:id
10 def initialize(framework)
11 @path = "#{$CONFIG.frameworks}/#{framework}.framework/Versions/Current/#{framework}"
12 reload
13 puts @libs.inspect
14 end
15
16 def id=(name)
17 system(
18 "install_name_tool",
19 "-id",
20 name,
21 @path)
22 reload
23 end
24
25 def get_install_name(lib)
26 return @libs[lib]
27 end
28
29 def set_install_name(lib,val)
30 puts "lib=#{lib}/#{@libs[lib]}, val=#{val}"
31 system(
32 "install_name_tool",
33 "-change",
34 @libs[lib],
35 val,
36 @path)
37 reload
38 end
39
40 private
41 def reload
42 @libs = IO.popen("otool -L '#{@path}'") { |fh|
43 fh.readline
44 if fh.readline =~ /([^(]*)/
45 @id = $1.strip
46 else
47 raise "Unable to read otool of framework (#{@path})"
48 end
49 fh.inject({}) { |coll,line|
50 if line =~ /(\w+)\.framework/
51 name = $1
52 if line =~ /([^(]*)/
53 coll.update(name => $1.strip)
54 else
55 raise "Unable to read otool of framework (#{@path})"
56 end
57 end
58 coll
59 }
60 }.freeze
61 end
62end
63
64def create_frameworks
65 ["WebKit","WebCore","JavaScriptCore"].map { |name|
66 Framework.new(name)
67 }
68end
69
70def localize_install_names
71 wk_fr, wc_fr, js_fr = create_frameworks
72 wk_id, wc_id, js_id = "gwt/WebKit.framework", "gwt/WebCore.framework", "gwt/JavaScriptCore.framework"
73
74 js_fr.id = js_id
75
76 wc_fr.id = wc_id
77 wc_fr.set_install_name "JavaScriptCore", js_id
78
79 wk_fr.id = wk_id
80 wk_fr.set_install_name "JavaScriptCore", js_id
81 wk_fr.set_install_name "WebCore", wc_id
82end
83
84localize_install_names