Root/
Source at commit 5653439 created 13 years 7 months ago. By florian, [toolchain] add support for gcc-4.5.1 | |
---|---|
1 | # |
2 | # Copyright (C) 2002-2003 Erik Andersen <andersen@uclibc.org> |
3 | # Copyright (C) 2004 Manuel Novoa III <mjn3@uclibc.org> |
4 | # Copyright (C) 2005-2006 Felix Fietkau <nbd@openwrt.org> |
5 | # Copyright (C) 2006-2010 OpenWrt.org |
6 | # |
7 | # This program is free software; you can redistribute it and/or modify |
8 | # it under the terms of the GNU General Public License as published by |
9 | # the Free Software Foundation; either version 2 of the License, or |
10 | # (at your option) any later version. |
11 | # |
12 | # This program is distributed in the hope that it will be useful, |
13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
15 | # General Public License for more details. |
16 | # |
17 | # You should have received a copy of the GNU General Public License |
18 | # along with this program; if not, write to the Free Software |
19 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
20 | |
21 | include $(TOPDIR)/rules.mk |
22 | |
23 | PKG_NAME:=gcc |
24 | GCC_VERSION:=$(call qstrip,$(CONFIG_GCC_VERSION)) |
25 | PKG_VERSION:=$(firstword $(subst +, ,$(GCC_VERSION))) |
26 | GCC_DIR:=$(PKG_NAME)-$(PKG_VERSION) |
27 | |
28 | ifdef CONFIG_GCC_VERSION_LLVM |
29 | PKG_SOURCE_VERSION:=c98c494b72ff875884c0c7286be67f16f9f6d7ab |
30 | PKG_REV:=83504 |
31 | GCC_DIR:=llvm-gcc-4.2-r$(PKG_REV) |
32 | PKG_VERSION:=4.2.1 |
33 | PKG_SOURCE:=$(GCC_DIR).tar.gz |
34 | PKG_SOURCE_PROTO:=git |
35 | PKG_SOURCE_URL:=git://repo.or.cz/llvm-gcc-4.2.git |
36 | PKG_SOURCE_SUBDIR:=$(GCC_DIR) |
37 | HOST_BUILD_DIR:=$(BUILD_DIR_TOOLCHAIN)/$(GCC_DIR) |
38 | else |
39 | PKG_SOURCE_URL:=@GNU/gcc/gcc-$(PKG_VERSION) |
40 | PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 |
41 | |
42 | ifeq ($(PKG_VERSION),3.4.6) |
43 | PKG_MD5SUM:=4a21ac777d4b5617283ce488b808da7b |
44 | endif |
45 | ifeq ($(PKG_VERSION),4.1.2) |
46 | PKG_MD5SUM:=a4a3eb15c96030906d8494959eeda23c |
47 | endif |
48 | ifeq ($(PKG_VERSION),4.2.4) |
49 | PKG_MD5SUM:=d79f553e7916ea21c556329eacfeaa16 |
50 | endif |
51 | ifeq ($(PKG_VERSION),4.3.3) |
52 | PKG_MD5SUM:=cc3c5565fdb9ab87a05ddb106ba0bd1f |
53 | endif |
54 | ifeq ($(PKG_VERSION),4.3.4) |
55 | PKG_MD5SUM:=60df63222dbffd53ca11492a2545044f |
56 | endif |
57 | ifeq ($(PKG_VERSION),4.3.5) |
58 | PKG_MD5SUM:=e588cfde3bf323f82918589b94f14a15 |
59 | endif |
60 | ifeq ($(PKG_VERSION),4,4,1) |
61 | PKG_MD5SUM:=927eaac3d44b22f31f9c83df82f26436 |
62 | endif |
63 | ifeq ($(PKG_VERSION),4.4.2) |
64 | PKG_MD5SUM:=70f5ac588a79e3c9901d5b34f58d896d |
65 | endif |
66 | ifeq ($(PKG_VERSION),4.4.3) |
67 | PKG_MD5SUM:=fe1ca818fc6d2caeffc9051fe67ff103 |
68 | endif |
69 | ifeq ($(PKG_VERSION),4.4.4) |
70 | PKG_MD5SUM:=7ff5ce9e5f0b088ab48720bbd7203530 |
71 | endif |
72 | ifeq ($(PKG_VERSION),4.5.0) |
73 | PKG_MD5SUM:=ff27b7c4a5d5060c8a8543a44abca31f |
74 | endif |
75 | ifeq ($(PKG_VERSION),4.5.1) |
76 | PKG_MD5SUM:=48231a8e33ed6e058a341c53b819de1a |
77 | endif |
78 | endif |
79 | |
80 | PATCH_DIR=../patches/$(GCC_VERSION) |
81 | |
82 | BUGURL=https://dev.openwrt.org/ |
83 | |
84 | include $(INCLUDE_DIR)/toolchain-build.mk |
85 | |
86 | HOST_SOURCE_DIR:=$(HOST_BUILD_DIR) |
87 | ifeq ($(GCC_VARIANT),minimal) |
88 | GCC_BUILD_DIR:=$(HOST_BUILD_DIR)-$(GCC_VARIANT) |
89 | else |
90 | HOST_BUILD_DIR:=$(HOST_BUILD_DIR)-$(GCC_VARIANT) |
91 | GCC_BUILD_DIR:=$(HOST_BUILD_DIR) |
92 | endif |
93 | |
94 | HOST_STAMP_PREPARED:=$(HOST_BUILD_DIR)/.prepared |
95 | HOST_STAMP_BUILT:=$(GCC_BUILD_DIR)/.built |
96 | HOST_STAMP_CONFIGURED:=$(GCC_BUILD_DIR)/.configured |
97 | HOST_STAMP_INSTALLED:=$(STAGING_DIR_HOST)/stamp/.gcc_$(GCC_VARIANT)_installed |
98 | |
99 | SEP:=, |
100 | TARGET_LANGUAGES:="c$(if $(CONFIG_INSTALL_LIBSTDCPP),$(SEP)c++)$(if $(CONFIG_INSTALL_LIBGCJ),$(SEP)java)" |
101 | |
102 | export libgcc_cv_fixed_point=no |
103 | |
104 | GCC_CONFIGURE:= \ |
105 | SHELL="$(BASH)" \ |
106 | $(HOST_SOURCE_DIR)/configure \ |
107 | --prefix=$(TOOLCHAIN_DIR)/usr \ |
108 | --build=$(GNU_HOST_NAME) \ |
109 | --host=$(GNU_HOST_NAME) \ |
110 | --target=$(REAL_GNU_TARGET_NAME) \ |
111 | --with-gnu-ld \ |
112 | --enable-target-optspace \ |
113 | --disable-libgomp \ |
114 | --disable-libmudflap \ |
115 | --disable-multilib \ |
116 | --disable-nls \ |
117 | $(GRAPHITE_CONFIGURE) \ |
118 | $(if $(CONFIG_GCC_USE_GRAPHITE),--with-host-libstdcxx=-lstdc++) \ |
119 | $(SOFT_FLOAT_CONFIG_OPTION) \ |
120 | $(call qstrip,$(CONFIG_EXTRA_GCC_CONFIG_OPTIONS)) \ |
121 | $(if $(CONFIG_mips64)$(CONFIG_mips64el),--with-arch=mips64 --with-abi=64) \ |
122 | $(if $(CONFIG_GCC_VERSION_LLVM),--enable-llvm=$(BUILD_DIR_BASE)/host/llvm) \ |
123 | $(if $(CONFIG_GCC_VERSION_4_3_3_CS)$(CONFIG_GCC_VERSION_4_4_1_CS)$(CONFIG_GCC_VERSION_4_4_3_CS),--enable-poison-system-directories) |
124 | |
125 | ifneq ($(CONFIG_GCC_VERSION_4_3)$(CONFIG_GCC_VERSION_4_4)$(CONFIG_GCC_VERSION_4_5),) |
126 | GCC_BUILD_TARGET_LIBGCC:=y |
127 | GCC_CONFIGURE+= \ |
128 | --with-gmp=$(TOPDIR)/staging_dir/host \ |
129 | --with-mpfr=$(TOPDIR)/staging_dir/host \ |
130 | --disable-decimal-float |
131 | endif |
132 | |
133 | ifneq ($(CONFIG_GCC_VERSION_4_5),) |
134 | GCC_BUILD_TARGET_LIBGCC:=y |
135 | GCC_CONFIGURE+= \ |
136 | --with-gmp=$(TOPDIR)/staging_dir/host \ |
137 | --with-mpc=$(TOPDIR)/staging_dir/host \ |
138 | --with-mpfr=$(TOPDIR)/staging_dir/host \ |
139 | --disable-decimal-float |
140 | endif |
141 | |
142 | ifneq ($(CONFIG_SSP_SUPPORT),) |
143 | GCC_CONFIGURE+= \ |
144 | --enable-libssp |
145 | else |
146 | GCC_CONFIGURE+= \ |
147 | --disable-libssp |
148 | endif |
149 | |
150 | ifneq ($(CONFIG_EXTRA_TARGET_ARCH),) |
151 | GCC_CONFIGURE+= \ |
152 | --enable-biarch \ |
153 | --enable-targets=$(call qstrip,$(CONFIG_EXTRA_TARGET_ARCH_NAME))-linux-$(TARGET_SUFFIX) |
154 | endif |
155 | |
156 | ifeq ($(LIBC),uClibc) |
157 | GCC_CONFIGURE+= \ |
158 | --disable-__cxa_atexit |
159 | else |
160 | GCC_CONFIGURE+= \ |
161 | --enable-__cxa_atexit |
162 | endif |
163 | |
164 | ifdef CONFIG_powerpc |
165 | TARGET_CFLAGS := $(patsubst -Os,-O2,$(TARGET_CFLAGS)) |
166 | endif |
167 | |
168 | GCC_MAKE:= \ |
169 | export SHELL="$(BASH)"; \ |
170 | $(MAKE) \ |
171 | CFLAGS_FOR_TARGET="$(TARGET_CFLAGS)" \ |
172 | CXXFLAGS_FOR_TARGET="$(TARGET_CFLAGS)" |
173 | |
174 | define Host/Prepare |
175 | mkdir -p $(GCC_BUILD_DIR) |
176 | endef |
177 | |
178 | define Host/Configure |
179 | (cd $(GCC_BUILD_DIR) && rm -f config.cache; \ |
180 | $(GCC_CONFIGURE) \ |
181 | ); |
182 | endef |
183 | |
184 | define Host/Clean |
185 | rm -rf \ |
186 | $(STAGING_DIR_HOST)/stamp/.gcc_* \ |
187 | $(STAGING_DIR_HOST)/stamp/.binutils_* \ |
188 | $(GCC_BUILD_DIR) \ |
189 | $(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME) \ |
190 | $(TOOLCHAIN_DIR)/usr/$(REAL_GNU_TARGET_NAME) \ |
191 | $(TOOLCHAIN_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-gc* \ |
192 | $(TOOLCHAIN_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-c* |
193 | endef |
194 |