-
Notifications
You must be signed in to change notification settings - Fork 1
/
mulle-clang-project.rb
98 lines (88 loc) · 3.23 KB
/
mulle-clang-project.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
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
class MulleClangProject < Formula
desc "Objective-C compiler for the mulle-objc runtime"
homepage "https://github.com/mulle-cc/mulle-clang-project"
license "BSD-3-Clause"
version "14.0.6.2"
# revision 1
head "https://github.com/mulle-cc/mulle-clang-project.git", branch: "mulle/14.0.6"
#
# MEMO:
# 0. Replace 14.0.6.0 with x.0.0.0 your version number (and check vendor)
# 1. Create a release on github
# 2. Download the tar.gz file from github like so
# `curl -O -L "https://github.com/mulle-cc/mulle-clang-project/archive/14.0.6.0.tar.gz"`
# 3. Run shasum over it `shasum -a 256 -b 13.0.0.i1.tar.gz`
# 4. Remove bottle urls
#
url "https://github.com/mulle-cc/mulle-clang-project/archive/refs/tags/14.0.6.2.tar.gz"
sha256 "299ebbdeafa4f5699f35b87b921f7222097d64f6b56d5e417633bf0419726833"
def vendor
"mulle-clang 14.0.6.2 (runtime-load-version: 17)"
end
#
# MEMO:
# For each OS X version, create bottles with:
#
# `brew uninstall mulle-objc/software/mulle-clang-project`
# `brew install --formula --build-bottle mulle-clang-project.rb`
# Now it gets retarded:
# `brew tap-new mulle-objc/software`
# `cp mulle-clang-project.rb /usr/local/Homebrew/Library/Taps/mulle-objc/homebrew-software/Formula/`
# `brew bottle mulle-objc/software/mulle-clang-project`
# `mv ./mulle-clang--14.0.6.0.monterey.bottle.tar.gz ./mulle-clang-project-14.0.6.0.monterey.bottle.tar.gz`
#
# scp -i ~/.ssh/id_rsa_hetzner_pw \
# ./mulle-clang-14.0.6.0.monterey.bottle.tar.gz \
# [email protected]:public_html/_site/bottles/
#
bottle do
# "#{root_url}/#{name}-#{version}.#{tag}.bottle.#{revision}.tar.gz"
# root_url "https://www.mulle-kybernetik.com/bottles"
root_url "https://github.com/mulle-cc/mulle-clang-project/releases/download/14.0.6.2"
sha256 cellar: :any, monterey: "d9fe5d0177b19e74885bddf4ea4c9fcffd453a937ebeeee2116196e6b905cc54"
sha256 cellar: :any, big_sur: "c9f575ca3854f4b2cbeb6bf780a74f881356dbd02149f6af81a34f4f231f4907"
end
#
# MEMO:
# Change llvm to proper version
#
# depends_on 'llvm@9' => :build
depends_on 'cmake' => :build
depends_on 'ninja' => :build
#
# homebrew llvm is built with polly, but cmake doesn't pick it up
# for some reason
# DOESN'T WORK ANYMORE, presumably because LLVM builds cmake itself
#
# def install
# if "#{vendor}".empty?
# raise "vendor is empty"
# end
# compiler_rt doesn't build on macos
def install
mkdir "build" do
args = std_cmake_args
args << '-DLLVM_ENABLE_PROJECTS=libcxxabi;libcxx;clang'
args << '-DCMAKE_BUILD_TYPE=Release'
args << '-DCLANG_VENDOR=mulle'
args << '-DCMAKE_INSTALL_MESSAGE=LAZY'
args << "-DCMAKE_INSTALL_PREFIX='#{prefix}/root'"
args << '../llvm'
system "cmake", "-G", "Ninja", *args
system "ninja", "install"
end
bin.install_symlink "#{prefix}/root/bin/clang" => "mulle-clang"
bin.install_symlink "#{prefix}/root/bin/scan-build" => "mulle-scan-build"
end
def caveats
str = <<~EOS
To use mulle-clang inside homebrew formulae, you need a shim.
See:
https://github.com/mulle-objc/mulle-clang-homebrew
EOS
str
end
test do
system "#{bin}/mulle-clang", "--help"
end
end