forked from macports/macports-ports
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Portfile
246 lines (211 loc) · 9.34 KB
/
Portfile
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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:filetype=tcl:et:sw=4:ts=4:sts=4
PortSystem 1.0
PortGroup select 1.0
PortGroup compiler_blacklist_versions 1.0
name gcc48
# Whenever this port is bumped for version/revision, please revbump dragonegg-3.4-gcc-4.8
epoch 2
version 4.8.5
revision 2
platforms darwin
categories lang
maintainers nomaintainer
# an exception in the license allows dependents to not be GPL
license {GPL-3+ Permissive}
description The GNU compiler collection
long_description The GNU compiler collection, including front ends for \
C, C++, Objective-C, Objective-C++, Fortran and Java.
homepage http://gcc.gnu.org/
master_sites ftp://ftp.funet.fi/pub/mirrors/sources.redhat.com/pub/gcc/releases/gcc-${version}/ \
ftp://ftp.gwdg.de/pub/linux/gcc/releases/gcc-${version}/ \
ftp://gcc.ftp.nluug.nl/mirror/languages/gcc/releases/gcc-${version}/ \
ftp://gcc.gnu.org/pub/gcc/releases/gcc-${version}/ \
gnu:gcc/gcc-${version}
distname gcc-${version}
use_bzip2 yes
checksums rmd160 98e84aa59bd668c4ab58afea9c7a2d1cc0c6ef7e \
sha256 22fb1e7e0f68a63cee631d85b20461d1ea6bda162f03096350e38c8d427ecf23
depends_lib port:cctools \
path:lib/pkgconfig/cloog-isl.pc:cloog \
port:gmp \
port:isl14 \
port:ld64 \
path:lib/libgcc/libgcc_s.1.dylib:libgcc \
port:libiconv \
port:libmpc \
port:mpfr
depends_run port:gcc_select \
port:libgcc6
depends_skip_archcheck-append gcc_select ld64 cctools
license_noconflict gmp mpfr ppl libmpc
# Handle OS X deployment targets correctly (GCC PR target/63810
# <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63810>).
patchfiles-append macosx-version-min.patch
# Don't link with "-flat_namespace -undefined suppress" on Yosemite and
# later (#45483).
patchfiles-append yosemite-libtool.patch
# See https://trac.macports.org/ticket/52393
patchfiles-append patch-gcc-texi.diff
# See https://trac.macports.org/ticket/53662
patchfiles-append patch-libisl.diff
post-extract {
xinstall -d -m 0755 ${build.dir}/gcc
ln -s ${prefix}/libexec/isl14/include/isl ${build.dir}/gcc
}
set major [join [lrange [split ${version} .-] 0 1] .]
platform darwin {
configure.pre_args-append --build=${build_arch}-apple-darwin${os.major}
}
configure.dir ${workpath}/build
configure.cmd ${worksrcpath}/configure
configure.args --enable-languages=c,c++,objc,obj-c++,lto,fortran,java \
--libdir=${prefix}/lib/${name} \
--includedir=${prefix}/include/${name} \
--infodir=${prefix}/share/info \
--mandir=${prefix}/share/man \
--datarootdir=${prefix}/share/gcc-${major} \
--with-local-prefix=${prefix} \
--with-system-zlib \
--disable-nls \
--program-suffix=-mp-${major} \
--with-gxx-include-dir=${prefix}/include/${name}/c++/ \
--with-gmp=${prefix} \
--with-mpfr=${prefix} \
--with-mpc=${prefix} \
--with-isl=${prefix}/libexec/isl14 --disable-isl-version-check \
--with-cloog=${prefix} --disable-cloog-version-check \
--enable-stage1-checking \
--disable-multilib \
--enable-lto \
--enable-libstdcxx-time \
--with-build-config=bootstrap-debug \
--with-as=${prefix}/bin/as \
--with-ld=${prefix}/bin/ld \
--with-ar=${prefix}/bin/ar \
--with-bugurl=https://trac.macports.org/newticket
# see https://lists.macports.org/pipermail/macports-dev/2017-August/036209.html
# --disable-tls does not limit functionality
# it only determines how std::call_once works
configure.args-append \
--disable-tls
configure.env-append \
AR_FOR_TARGET=${prefix}/bin/ar \
AS_FOR_TARGET=${prefix}/bin/as \
LD_FOR_TARGET=${prefix}/bin/ld \
NM_FOR_TARGET=${prefix}/bin/nm \
OBJDUMP_FOR_TARGET=${prefix}/bin/objdump \
RANLIB_FOR_TARGET=${prefix}/bin/ranlib \
STRIP_FOR_TARGET=${prefix}/bin/strip \
OTOOL=${prefix}/bin/otool \
OTOOL64=${prefix}/bin/otool
if {${os.platform} eq "darwin" && ${os.major} > 16} {
depends_lib
depends_run
archive_sites
pre-fetch {
ui_error "${name} is not supported on macOS High Sierra and newer"
return -code error {unsupported platform}
}
}
pre-configure {
configure.args-append --with-pkgversion="MacPorts ${name} ${version}_${revision}${portvariants}"
if {${configure.sdkroot} ne ""} {
# We should be using --with-build-sysroot here. Using --with-sysroot
# changes the behavior of the installed gcc to look in that sysroot
# by default instead of /. Using --with-build-sysroot is supposed
# to be used during the build but not impact the installed product.
# Unfortunately, the build fails because the value doesn't get
# plumbed everywhere it is supposed to.
#
# https://trac.macports.org/ticket/53726
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79885
#
# Note that macports toolchains will fail to compile gcc unless
# the DevSDK is installed due to another gcc build system bug:
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80203
configure.args-append --with-sysroot="${configure.sdkroot}"
}
# TODO: Remove when base automatically creates configure.dir (2.2.1?).
file mkdir ${configure.dir}
}
# http://trac.macports.org/ticket/29067
compiler.blacklist-append gcc-4.0
# http://trac.macports.org/ticket/29104
compiler.blacklist-append {llvm-gcc-4.2 < 2336.1}
# Recent versions of Clang emit inconsistent DWARF CIE version
# information, causing bootstrap comparison failures (#47410). The
# offending compilers are:
# - Apple LLVM 6.1.0 (clang-602.0.49)
# - clang-3.7 @3.7-r234122
# - clang-3.6 @3.6.0_0
# - clang-3.5 @3.5.1_3
pre-configure {
if {(${configure.compiler} eq "clang"
&& [compiler_blacklist_versions._version_matches clang >= 602.0.49])
|| [string match {macports-clang-3.[567]} ${configure.compiler}]} {
configure.args-append --with-build-config=bootstrap-debug
}
}
# "-stdlib" would be passed on to the bootstrap compiler if present
configure.cxx_stdlib
build.dir ${configure.dir}
build.target bootstrap-lean
use_parallel_build yes
destroot.target install install-info-host
post-destroot {
file delete ${destroot}${prefix}/share/info/dir
foreach file [glob ${destroot}${prefix}/share/{info,man/man7}/*] {
set extension [file extension ${file}]
set newfile [regsub "${extension}$" ${file} "-mp-${major}${extension}"]
file rename ${file} ${newfile}
}
foreach dylib {libgcc_ext.10.4.dylib libgcc_ext.10.5.dylib libgcc_s.1.dylib libgfortran.3.dylib libquadmath.0.dylib libstdc++.6.dylib libobjc-gnu.4.dylib libgomp.1.dylib libitm.1.dylib libssp.0.dylib libasan.0.dylib libatomic.1.dylib} {
# Different OS versions (e.g. Leopard) or architectures (e.g. PPC) don't produce all the dylibs
# https://trac.macports.org/ticket/40098
# https://trac.macports.org/ticket/40100
if {[file exists ${destroot}${prefix}/lib/${name}/${dylib}]} {
delete ${destroot}${prefix}/lib/${name}/${dylib}
ln -s ${prefix}/lib/libgcc/${dylib} ${destroot}${prefix}/lib/${name}/${dylib}
}
if {[variant_isset universal]} {
foreach archdir [glob ${destroot}${prefix}/lib/${name}/*/] {
if {[file exists ${archdir}/${dylib}]} {
delete ${archdir}/${dylib}
ln -s ${prefix}/lib/libgcc/${dylib} ${archdir}/${dylib}
}
}
}
}
move ${destroot}${prefix}/lib/${name}/pkgconfig/libgcj-${major}.pc ${destroot}${prefix}/lib/pkgconfig/
}
select.group gcc
select.file ${filespath}/mp-${name}
platform powerpc {
configure.universal_archs ppc ppc64
}
platform i386 {
configure.universal_archs i386 x86_64
}
variant universal {
configure.args-delete --disable-multilib
}
# the generated compiler doesn't accept -arch
configure.env-append \
CPP="${configure.cc} -E" \
CXXCPP="${configure.cxx} -E"
build.env-append \
CPP="${configure.cc} -E" \
CXXCPP="${configure.cxx} -E"
configure.cc-append [get_canonical_archflags]
configure.cc_archflags
configure.cxx-append ${configure.cxx_archflags}
configure.cxx_archflags
configure.objc_archflags
configure.ld_archflags
configure.universal_cflags
configure.universal_cxxflags
configure.universal_ldflags
configure.universal_args
livecheck.type regex
livecheck.url http://ftp.gnu.org/gnu/gcc/
livecheck.regex gcc-(${major}\\.\[0-9.\]+)/