forked from lotia/homebrew-versions
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgcc45.rb
More file actions
126 lines (105 loc) · 4.52 KB
/
gcc45.rb
File metadata and controls
126 lines (105 loc) · 4.52 KB
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
require 'formula'
class Gcc45 < Formula
homepage 'http://gcc.gnu.org'
url 'http://ftpmirror.gnu.org/gcc/gcc-4.5.3/gcc-4.5.3.tar.bz2'
mirror 'http://ftp.gnu.org/gnu/gcc/gcc-4.5.3/gcc-4.5.3.tar.bz2'
sha1 '73c45dfda5eef6b124be53e56828b5925198cc1b'
option 'enable-cxx', 'Build the g++ compiler'
option 'enable-fortran', 'Build the gfortran compiler'
option 'enable-java', 'Buld the gcj compiler'
option 'enable-objc', 'Enable Objective-C language support'
option 'enable-objcxx', 'Enable Objective-C++ language support'
option 'enable-all-languages', 'Enable all compilers and languages, except Ada'
option 'enable-nls', 'Build with native language support'
option 'enable-profiled-build', 'Make use of profile guided optimization when bootstrapping GCC'
option 'enable-multilib', 'Build with multilib support'
depends_on 'gmp'
depends_on 'libmpc'
depends_on 'mpfr'
depends_on 'ecj' if build.include? 'enable-java' or build.include? 'enable-all-languages'
def install
# Force 64-bit on systems that use it. Build failures reported for some
# systems when this is not done.
ENV.m64 if MacOS.prefer_64_bit?
# GCC will suffer build errors if forced to use a particular linker.
ENV.delete 'LD'
# This is required on systems running a version newer than 10.6, and
# it's probably a good idea regardless.
#
# https://trac.macports.org/ticket/27237
ENV.append 'CXXFLAGS', '-U_GLIBCXX_DEBUG -U_GLIBCXX_DEBUG_PEDANTIC'
gmp = Formula.factory 'gmp'
mpfr = Formula.factory 'mpfr'
libmpc = Formula.factory 'libmpc'
# Sandbox the GCC lib, libexec and include directories so they don't wander
# around telling small children there is no Santa Claus. This results in a
# partially keg-only brew following suggestions outlined in the "How to
# install multiple versions of GCC" section of the GCC FAQ:
# http://gcc.gnu.org/faq.html#multiple
gcc_prefix = prefix + 'gcc'
args = [
# Sandbox everything...
"--prefix=#{gcc_prefix}",
# ...except the stuff in share...
"--datarootdir=#{share}",
# ...and the binaries...
"--bindir=#{bin}",
# ...which are tagged with a suffix to distinguish them.
"--program-suffix=-#{version.to_s.slice(/\d\.\d/)}",
"--with-gmp=#{gmp.prefix}",
"--with-mpfr=#{mpfr.prefix}",
"--with-mpc=#{libmpc.prefix}",
"--with-system-zlib",
"--enable-stage1-checking",
"--enable-plugin",
"--disable-lto"
]
args << '--disable-nls' unless build.include? 'enable-nls'
if build.include? 'enable-all-languages'
# Everything but Ada, which requires a pre-existing GCC Ada compiler
# (gnat) to bootstrap.
languages = %w[c c++ fortran java objc obj-c++]
else
# The C compiler is always built, but additional defaults can be added
# here.
languages = %w[c]
languages << 'c++' if build.include? 'enable-cxx'
languages << 'fortran' if build.include? 'enable-fortran'
languages << 'java' if build.include? 'enable-java'
languages << 'objc' if build.include? 'enable-objc'
languages << 'obj-c++' if build.include? 'enable-objcxx'
end
if build.include? 'enable-java' or build.include? 'enable-all-languages'
ecj = Formula.factory 'ecj'
args << "--with-ecj-jar=#{ecj.opt_prefix}/share/java/ecj.jar"
end
if build.include? 'enable-multilib'
args << '--enable-multilib'
else
args << '--disable-multilib'
end
mkdir 'build' do
unless MacOS::CLT.installed?
# For Xcode-only systems, we need to tell the sysroot path.
# 'native-system-header's will be appended
args << "--with-native-system-header-dir=/usr/include"
args << "--with-sysroot=#{MacOS.sdk_path}"
end
system '../configure', "--enable-languages=#{languages.join(',')}", *args
if build.include? 'enable-profiled-build'
# Takes longer to build, may bug out. Provided for those who want to
# optimise all the way to 11.
system 'make profiledbootstrap'
else
system 'make bootstrap'
end
# At this point `make check` could be invoked to run the testsuite. The
# deja-gnu formula must be installed in order to do this.
system 'make install'
# `make install` neglects to transfer an essential plugin header file.
Pathname.new(Dir[gcc_prefix.join *%w[** plugin include config]].first).install '../gcc/config/darwin-sections.def'
# Remove conflicting manpages in man7
man7.rmtree
end
end
end