forked from rubinius/rubinius
/
build.rb
67 lines (53 loc) · 1.43 KB
/
build.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
def llvm_configure
case Rubinius::BUILD_CONFIG[:llvm]
when :svn, :prebuilt
"vendor/llvm/Release/bin/llvm-config"
when :config
Rubinius::BUILD_CONFIG[:llvm_configure]
else
raise "Tried to use LLVM unconfigure!"
end
end
def build_perl
Rubinius::BUILD_CONFIG[:build_perl]
end
def llvm_flags
return [] unless LLVM_ENABLE
return @llvm_flags if defined?(@llvm_flags)
case Rubinius::BUILD_CONFIG[:llvm]
when :svn, :prebuilt
@llvm_flags = ["-Ivendor/llvm/include"]
else
@llvm_flags = []
end
@llvm_flags += `#{build_perl} #{llvm_configure} --cflags`.split(/\s+/)
@llvm_flags.delete_if { |e| e.index("-O") == 0 }
@llvm_flags
end
def llvm_link_flags
return "" unless LLVM_ENABLE
flags = `#{build_perl} #{llvm_configure} --ldflags`.strip
flags.sub!(%r[-L/([a-zA-Z])/], '-L\1:/') if Rubinius::BUILD_CONFIG[:windows]
flags
end
def llvm_lib_files
return [] unless LLVM_ENABLE
files = `#{build_perl} #{llvm_configure} --libfiles`.split(/\s+/)
files.select do |f|
f.sub!(%r[^/([a-zA-Z])/], '\1:/') if Rubinius::BUILD_CONFIG[:windows]
File.file? f
end
end
def llvm_version
`#{build_perl} #{llvm_configure} --version`.strip
end
def host_triple
Rubinius::BUILD_CONFIG[:host]
end
def gcc_major_version
`#{$CC} -dumpversion`.strip.split(".")[0,2].join(".")
end
def llvm_config_flags
"--build=#{host_triple} --host=#{host_triple} " \
"--enable-optimized --enable-targets=host-only"
end