source: trunk/toolchain/gcc/common.mk @ 25705

Last change on this file since 25705 was 25705, checked in by kaloz, 6 years ago

We use different toolchain directories for different
ARM archs, so we should set the default arch of gcc
to reflect this.

This enables EABI support for armv4 CPUs.

Signed-off-by: Jochen Friedrich <jochen@…>

File size: 5.7 KB
Line 
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
21include $(TOPDIR)/rules.mk
22
23PKG_NAME:=gcc
24GCC_VERSION:=$(call qstrip,$(CONFIG_GCC_VERSION))
25PKG_VERSION:=$(firstword $(subst +, ,$(GCC_VERSION)))
26GCC_DIR:=$(PKG_NAME)-$(PKG_VERSION)
27
28ifdef 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)
38else
39ifeq ($(CONFIG_GCC_VERSION),"linaro")
40    PKG_REV:=4.5-2011.02-0
41    PKG_VERSION:=4.5.2
42    PKG_SOURCE_URL:=http://launchpad.net/gcc-linaro/4.5/4.5-2011.02-0/+download/
43    PKG_SOURCE:=$(PKG_NAME)-linaro-$(PKG_REV).tar.bz2
44    PKG_MD5SUM:=d93199c1296e053f57fcc7888b54d488
45    GCC_DIR:=gcc-linaro-$(PKG_REV)
46    HOST_BUILD_DIR:=$(BUILD_DIR_TOOLCHAIN)/$(GCC_DIR)
47else
48  PKG_SOURCE_URL:=@GNU/gcc/gcc-$(PKG_VERSION)
49  PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
50
51  ifeq ($(PKG_VERSION),4.3.3)
52    PKG_MD5SUM:=cc3c5565fdb9ab87a05ddb106ba0bd1f
53  endif
54  ifeq ($(PKG_VERSION),4.3.5)
55    PKG_MD5SUM:=e588cfde3bf323f82918589b94f14a15
56  endif
57  ifeq ($(PKG_VERSION),4.4.1)
58    PKG_MD5SUM:=927eaac3d44b22f31f9c83df82f26436
59  endif
60  ifeq ($(PKG_VERSION),4.4.5)
61    PKG_MD5SUM:=44b3192c4c584b9be5243d9e8e7e0ed1
62  endif
63  ifeq ($(PKG_VERSION),4.5.2)
64  PKG_MD5SUM:=d6559145853fbaaa0fd7556ed93bce9a
65  endif
66endif
67endif
68
69PATCH_DIR=../patches/$(GCC_VERSION)
70
71BUGURL=https://dev.openwrt.org/
72
73include $(INCLUDE_DIR)/toolchain-build.mk
74
75HOST_SOURCE_DIR:=$(HOST_BUILD_DIR)
76ifeq ($(GCC_VARIANT),minimal)
77  GCC_BUILD_DIR:=$(HOST_BUILD_DIR)-$(GCC_VARIANT)
78else
79  HOST_BUILD_DIR:=$(HOST_BUILD_DIR)-$(GCC_VARIANT)
80  GCC_BUILD_DIR:=$(HOST_BUILD_DIR)
81endif
82
83HOST_STAMP_PREPARED:=$(HOST_BUILD_DIR)/.prepared
84HOST_STAMP_BUILT:=$(GCC_BUILD_DIR)/.built
85HOST_STAMP_CONFIGURED:=$(GCC_BUILD_DIR)/.configured
86HOST_STAMP_INSTALLED:=$(STAGING_DIR_HOST)/stamp/.gcc_$(GCC_VARIANT)_installed
87
88SEP:=,
89TARGET_LANGUAGES:="c$(if $(CONFIG_INSTALL_LIBSTDCPP),$(SEP)c++)$(if $(CONFIG_INSTALL_LIBGCJ),$(SEP)java)"
90
91export libgcc_cv_fixed_point=no
92ifdef CONFIG_USE_UCLIBC
93  export glibcxx_cv_c99_math_tr1=no
94endif
95
96GCC_CONFIGURE:= \
97        SHELL="$(BASH)" \
98        $(HOST_SOURCE_DIR)/configure \
99                --prefix=$(TOOLCHAIN_DIR) \
100                --build=$(GNU_HOST_NAME) \
101                --host=$(GNU_HOST_NAME) \
102                --target=$(REAL_GNU_TARGET_NAME) \
103                --with-gnu-ld \
104                --enable-target-optspace \
105                --disable-libgomp \
106                --disable-libmudflap \
107                --disable-multilib \
108                --disable-nls \
109                $(GRAPHITE_CONFIGURE) \
110                $(if $(CONFIG_GCC_USE_GRAPHITE),--with-host-libstdcxx=-lstdc++) \
111                $(SOFT_FLOAT_CONFIG_OPTION) \
112                $(call qstrip,$(CONFIG_EXTRA_GCC_CONFIG_OPTIONS)) \
113                $(if $(CONFIG_mips64)$(CONFIG_mips64el),--with-arch=mips64 --with-abi=64) \
114                $(if $(CONFIG_GCC_VERSION_LLVM),--enable-llvm=$(BUILD_DIR_BASE)/host/llvm) \
115                $(if $(CONFIG_GCC_VERSION_4_3_3_CS)$(CONFIG_GCC_VERSION_4_4_1_CS),--enable-poison-system-directories)
116
117ifneq ($(CONFIG_GCC_VERSION_4_4)$(CONFIG_GCC_VERSION_4_5),)
118  ifneq ($(CONFIG_mips)$(CONFIG_mipsel),)
119    GCC_CONFIGURE += --with-mips-plt
120  endif
121endif
122
123ifeq ($(CONFIG_GCC_LLVM),)
124  GCC_BUILD_TARGET_LIBGCC:=y
125  GCC_CONFIGURE+= \
126                --with-gmp=$(TOPDIR)/staging_dir/host \
127                --with-mpfr=$(TOPDIR)/staging_dir/host \
128                --disable-decimal-float
129endif
130
131ifneq ($(CONFIG_GCC_VERSION_4_5),)
132  GCC_BUILD_TARGET_LIBGCC:=y
133  GCC_CONFIGURE+= \
134                --with-gmp=$(TOPDIR)/staging_dir/host \
135                --with-mpc=$(TOPDIR)/staging_dir/host \
136                --with-mpfr=$(TOPDIR)/staging_dir/host \
137                --disable-decimal-float
138endif
139
140ifneq ($(CONFIG_SSP_SUPPORT),)
141  GCC_CONFIGURE+= \
142                --enable-libssp
143else
144  GCC_CONFIGURE+= \
145                --disable-libssp
146endif
147
148ifneq ($(CONFIG_EXTRA_TARGET_ARCH),)
149  GCC_CONFIGURE+= \
150                --enable-biarch \
151                --enable-targets=$(call qstrip,$(CONFIG_EXTRA_TARGET_ARCH_NAME))-linux-$(TARGET_SUFFIX)
152endif
153
154ifdef CONFIG_sparc
155  GCC_CONFIGURE+= --enable-targets=all
156endif
157
158ifeq ($(LIBC),uClibc)
159  GCC_CONFIGURE+= \
160                --disable-__cxa_atexit
161else
162  GCC_CONFIGURE+= \
163                --enable-__cxa_atexit
164endif
165
166ifdef CONFIG_powerpc
167  TARGET_CFLAGS := $(patsubst -Os,-O2,$(TARGET_CFLAGS))
168endif
169
170ifneq ($(GCC_ARCH),)
171  GCC_CONFIGURE+= --with-arch=$(GCC_ARCH)
172endif
173
174GCC_MAKE:= \
175        export SHELL="$(BASH)"; \
176        $(MAKE) $(TOOLCHAIN_JOBS) \
177                CFLAGS_FOR_TARGET="$(TARGET_CFLAGS)" \
178                CXXFLAGS_FOR_TARGET="$(TARGET_CFLAGS)"
179
180define Host/Prepare
181        mkdir -p $(GCC_BUILD_DIR)
182endef
183
184define Host/Configure
185        (cd $(GCC_BUILD_DIR) && rm -f config.cache; \
186                $(GCC_CONFIGURE) \
187        );
188endef
189
190define Host/Clean
191        rm -rf \
192                $(STAGING_DIR_HOST)/stamp/.gcc_* \
193                $(STAGING_DIR_HOST)/stamp/.binutils_* \
194                $(GCC_BUILD_DIR) \
195                $(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME) \
196                $(TOOLCHAIN_DIR)/$(REAL_GNU_TARGET_NAME) \
197                $(TOOLCHAIN_DIR)/bin/$(REAL_GNU_TARGET_NAME)-gc* \
198                $(TOOLCHAIN_DIR)/bin/$(REAL_GNU_TARGET_NAME)-c*
199endef
Note: See TracBrowser for help on using the repository browser.