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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
require 'formula'
def build_clang?; ARGV.include? '--with-clang'; end
def build_all_targets?; ARGV.include? '--all-targets'; end
def build_analyzer?; ARGV.include? '--analyzer'; end
def build_universal?; ARGV.build_universal?; end
def build_shared?; ARGV.include? '--shared'; end
def build_rtti?; ARGV.include? '--rtti'; end
def build_jit?; ARGV.include? '--jit'; end
class Clang < Formula
homepage 'http://llvm.org/'
url 'http://llvm.org/releases/3.0/clang-3.0.tar.gz'
md5 '43350706ae6cf05d0068885792ea0591'
head 'http://llvm.org/git/clang.git'
end
class Llvm < Formula
homepage 'http://llvm.org/'
url 'http://llvm.org/releases/3.0/llvm-3.0.tar.gz'
md5 'a8e5f5f1c1adebae7b4a654c376a6005'
head 'http://llvm.org/git/llvm.git'
bottle do
sha1 'f6feaab7d1e4f45cd5f0b63d465e65f491fcc27c' => :lion
sha1 '0b4a9baac5cd07192f992ef3621371e9cde3979a' => :snowleopard
end
def patches
# changes the link options for the shared library build
# to use the preferred way to build libraries in Mac OS X
# Reported upstream: http://llvm.org/bugs/show_bug.cgi?id=8985
DATA if build_shared?
end
def options
[['--with-clang', 'Build clang'],
['--analyzer', 'Build clang analyzer'],
['--shared', 'Build shared library'],
['--all-targets', 'Build all target backends'],
['--rtti', 'Build with RTTI information'],
['--universal', 'Build both i386 and x86_64 architectures'],
['--jit', 'Build with Just In Time (JIT) compiler functionality']]
end
def install
if build_shared? && build_universal?
onoe "Cannot specify both shared and universal (will not build)"
exit 1
end
Clang.new("clang").brew { clang_dir.install Dir['*'] } if build_clang? or build_analyzer?
if build_universal?
ENV['UNIVERSAL'] = '1'
ENV['UNIVERSAL_ARCH'] = 'i386 x86_64'
end
ENV['REQUIRES_RTTI'] = '1' if build_rtti?
configure_options = [
"--prefix=#{prefix}",
"--enable-optimized",
# As of LLVM 3.0, the only bindings offered are for OCaml and attempting
# to build these when Homebrew's OCaml is installed results in errors.
#
# See issue #8947 for details.
"--enable-bindings=none"
]
if build_all_targets?
configure_options << "--enable-targets=all"
else
configure_options << "--enable-targets=host-only"
end
configure_options << "--enable-shared" if build_shared?
configure_options << "--enable-jit" if build_jit?
system "./configure", *configure_options
system "make" # separate steps required, otherwise the build fails
system "make install"
cd clang_dir do
system "make install"
bin.install 'tools/scan-build/set-xcode-analyzer'
end if build_clang? or build_analyzer?
cd clang_dir do
bin.install 'tools/scan-build/scan-build'
bin.install 'tools/scan-build/ccc-analyzer'
bin.install 'tools/scan-build/c++-analyzer'
bin.install 'tools/scan-build/sorttable.js'
bin.install 'tools/scan-build/scanview.css'
bin.install 'tools/scan-view/scan-view'
bin.install 'tools/scan-view/ScanView.py'
bin.install 'tools/scan-view/Reporter.py'
bin.install 'tools/scan-view/startfile.py'
bin.install 'tools/scan-view/Resources'
end if build_analyzer?
end
def test
system "#{bin}/llvm-config", "--version"
end
def caveats; <<-EOS.undent
If you already have LLVM installed, then "brew upgrade llvm" might not work.
Instead, try:
brew rm llvm && brew install llvm
EOS
end
def clang_dir
buildpath/'tools/clang'
end
end
__END__
diff --git i/Makefile.rules w/Makefile.rules
index 5fc77a5..a6baaf4 100644
--- i/Makefile.rules
+++ w/Makefile.rules
@@ -507,7 +507,7 @@ ifeq ($(HOST_OS),Darwin)
# Get "4" out of 10.4 for later pieces in the makefile.
DARWIN_MAJVERS := $(shell echo $(DARWIN_VERSION)| sed -E 's/10.([0-9]).*/\1/')
- LoadableModuleOptions := -Wl,-flat_namespace -Wl,-undefined,suppress
+ LoadableModuleOptions := -Wl,-undefined,dynamic_lookup
SharedLinkOptions := -dynamiclib
ifneq ($(ARCH),ARM)
SharedLinkOptions += -mmacosx-version-min=$(DARWIN_VERSION)
|