blob: ec145085aec39e0dda6cc7a0b202e93571d7d946 (
plain)
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
|
class Cctools < Formula
homepage "https://opensource.apple.com/"
if MacOS.version >= :snow_leopard
url "https://opensource.apple.com/tarballs/cctools/cctools-855.tar.gz"
sha1 "b6997939aa9f4f3c4ac70ec819e719330dcd7bcb"
else
# 806 (from Xcode 4.1) is the latest version that supports Tiger or PowerPC
url "https://opensource.apple.com/tarballs/cctools/cctools-806.tar.gz"
sha1 "e4f9a7ee0eef930e81d50b6b7300b8ddc1c7b341"
end
bottle do
cellar :any
sha1 "1acad163d4a245f5bd7ad2668cc87a5c9102163a" => :yosemite
sha1 "2629465c3d063d3a108adc987bbaa910a49db5f4" => :mavericks
sha1 "b5ccf7ea27f82e7eb8aeed1e327079c8a07434fb" => :mountain_lion
end
depends_on :ld64
keg_only :provided_by_osx,
"This package duplicates tools shipped by Xcode."
if MacOS.version >= :snow_leopard
option "with-llvm", "Build with LTO support"
depends_on "llvm" => :optional
# These patches apply to cctools 855, for newer OSes
patch :p0 do
url "https://trac.macports.org/export/129741/trunk/dports/devel/cctools/files/cctools-829-lto.patch"
sha1 "b774fb58dbc0e1b5ad9c6a5d6e35d4207018a338"
end
patch :p0 do
url "https://trac.macports.org/export/129741/trunk/dports/devel/cctools/files/PR-37520.patch"
sha1 "338faf38ee7eca09185f6eab30cc01b0ad2253ae"
end
patch :p0 do
url "https://trac.macports.org/export/129741/trunk/dports/devel/cctools/files/cctools-839-static-dis_info.patch"
sha1 "125b42ddc081b70d1ef03a340feb1e827eb36cea"
end
# Fix building libtool with LTO disabled
patch do
url "https://gist.githubusercontent.com/mistydemeo/9fc5589d568d2fc45fb5/raw/c752d5c4567809c10b14d623b6c2d7416211b33a/libtool-no-lto.diff"
sha1 "f4750ffad99d034e874972e67e57841dd4225065"
end
# strnlen patch only needed on Snow Leopard
if MacOS.version == :snow_leopard
patch :p0 do
url "https://trac.macports.org/export/129741/trunk/dports/devel/cctools/files/snowleopard-strnlen.patch"
sha1 "31c083b056d4510702484436fc66f24cc8635060"
end
end
else
depends_on "cctools-headers" => :build
# This set of patches only applies to cctools 806, for older OSes
patch :p0 do
url "https://trac.macports.org/export/103959/trunk/dports/devel/cctools/files/cctools-806-lto.patch"
sha1 "f8a2059a4730119687d2ba6a5d9e7b49b66840e8"
end
patch :p0 do
url "https://trac.macports.org/export/103959/trunk/dports/devel/cctools/files/PR-9087924.patch"
sha1 "1e5040370944a84e06bd983ea9f4e544a2ea7236"
end
patch :p0 do
url "https://trac.macports.org/export/103959/trunk/dports/devel/cctools/files/PR-9830754.patch"
sha1 "65b8e2f7a877716fec82fcd2cd0c6c34adfdece3"
end
# Despite the patch name this is needed on 806 too
patch :p0 do
url "https://trac.macports.org/export/103985/trunk/dports/devel/cctools/files/cctools-822-no-lto.patch"
sha1 "e58ee836dde4693e90a39579c20df45f067d75a1"
end
patch :p0 do
url "https://trac.macports.org/export/103959/trunk/dports/devel/cctools/files/PR-11136237.patch"
sha1 "88c045c08161d14241b7d51437b3ba77093d573a"
end
patch :p0 do
url "https://trac.macports.org/export/103959/trunk/dports/devel/cctools/files/PR-12475288.patch"
sha1 "3d6cb1ff1443b8c1c68c21c9808833537f7ce48d"
end
end
def install
ENV.j1 # see https://github.com/mistydemeo/tigerbrew/issues/102
if build.with? "llvm"
inreplace "libstuff/lto.c", "@@LLVM_LIBDIR@@", Formula["llvm"].opt_lib
end
args = %W[
RC_ProjectSourceVersion=#{version}
USE_DEPENDENCY_FILE=NO
BUILD_DYLIBS=NO
CC=#{ENV.cc}
CXX=#{ENV.cxx}
LTO=#{"-DLTO_SUPPORT" if build.with? "llvm"}
RC_CFLAGS=#{ENV.cflags}
TRIE=
RC_OS="macos"
DSTROOT=#{prefix}
]
# Fixes build with gcc-4.2: https://trac.macports.org/ticket/43745
args << "SDK=-std=gnu99"
if Hardware::CPU.intel?
archs = "i386 x86_64"
else
archs = "ppc i386 x86_64"
end
args << "RC_ARCHS=#{archs}"
system "make", "install_tools", *args
# cctools installs into a /-style prefix in the supplied DSTROOT,
# so need to move the files into the standard paths.
# Also merge the /usr and /usr/local trees.
man.install Dir["#{prefix}/usr/local/man/*"]
prefix.install Dir["#{prefix}/usr/local/*"]
bin.install Dir["#{prefix}/usr/bin/*"]
(include/"mach-o").install Dir["#{prefix}/usr/include/mach-o/*"]
man1.install Dir["#{prefix}/usr/share/man/man1/*"]
man3.install Dir["#{prefix}/usr/share/man/man3/*"]
man5.install Dir["#{prefix}/usr/share/man/man5/*"]
# These install locations changed between 806 and 855
if MacOS.version >= :snow_leopard
(libexec/"as").install Dir["#{prefix}/usr/libexec/as/*"]
else
(libexec/"gcc/darwin").install Dir["#{prefix}/usr/libexec/gcc/darwin/*"]
share.install Dir["#{prefix}/usr/share/gprof.*"]
end
end
def caveats; <<-EOS.undent
cctools's version of ld was not built.
EOS
end
test do
assert shell_output("#{bin}/otool -L #{bin}/install_name_tool").include? "/usr/lib/libSystem.B.dylib"
end
end
|