4 MAKE1:=$(MAKE) MAKE="$(firstword $(MAKE)) -j1"
5 MAKE:=$(MAKE) -j$(BR2_JLEVEL)
7 # Strip off the annoying quoting
8 ARCH:=$(strip $(subst ",, $(BR2_ARCH)))
10 WGET:=$(strip $(subst ",, $(BR2_WGET)))
12 SVN:=$(strip $(subst ",, $(BR2_SVN)))
14 ZCAT:=$(strip $(subst ",, $(BR2_ZCAT)))
16 BZCAT:=$(strip $(subst ",, $(BR2_BZCAT)))
18 TAR_OPTIONS=$(subst ",, $(BR2_TAR_OPTIONS)) -xf
22 ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
23 TARGET_CFLAGS=$(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) \
24 -I$(STAGING_DIR)/usr/include
25 TARGET_LDFLAGS=-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib
27 ifeq ($(BR2_TOOLCHAIN_SYSROOT),y)
28 TARGET_CFLAGS+= $(BR2_SYSROOT) $(BR2_ISYSROOT)
29 #TARGET_LDFLAGS=-Wl,$(BR2_SYSROOT)
32 ifneq ($(BR2_PREFER_STATIC_LIB),y)
33 ifeq ($(BR2_x86_64),y)
34 TARGET_CFLAGS+=-fPIC -DPIC
35 endif # PIC for dynamic objects on x86_64
38 ifeq ($(BR2_SOFT_FLOAT),y)
39 TARGET_CFLAGS+=-msoft-float
43 # else it's an external toolchain
44 #########################################################################
46 TARGET_CFLAGS=$(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) -I$(STAGING_DIR)/include -I$(STAGING_DIR)/usr/include -I$(TOOLCHAIN_EXTERNAL_PATH)/$(TOOLCHAIN_EXTERNAL_PREFIX)/include
47 TARGET_LDFLAGS=-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib
49 #########################################################################
66 HOSTAR:=$(shell which $(HOSTAR) || type -p $(HOSTAR) || echo ar)
67 HOSTAS:=$(shell which $(HOSTAS) || type -p $(HOSTAS) || echo as)
68 HOSTCC:=$(shell which $(HOSTCC) || type -p $(HOSTCC) || echo gcc)
69 HOSTCXX:=$(shell which $(HOSTCXX) || type -p $(HOSTCXX) || echo g++)
70 HOSTLD:=$(shell which $(HOSTLD) || type -p $(HOSTLD) || echo ld)
71 ifndef CFLAGS_FOR_BUILD
72 CFLAGS_FOR_BUILD:="-g -O2"
76 BASE_DIR:=$(shell pwd)
78 TOPDIR_PREFIX:=$(strip $(subst ",, $(BR2_TOPDIR_PREFIX)))_
80 TOPDIR_SUFFIX:=_$(strip $(subst ",, $(BR2_TOPDIR_SUFFIX)))
82 ifeq ($(TOPDIR_PREFIX),_)
85 ifeq ($(TOPDIR_SUFFIX),_)
89 DL_DIR=$(strip $(subst ",, $(BR2_DL_DIR)))
92 DL_DIR:=$(BASE_DIR)/dl
94 #PATCH_DIR=$(BASE_DIR)/sources/patches
95 BUILD_DIR:=$(BASE_DIR)/$(TOPDIR_PREFIX)build_$(ARCH)$(ARCH_FPU_SUFFIX)$(TOPDIR_SUFFIX)
96 TARGET_DIR:=$(BUILD_DIR)/root
98 GNU_TARGET_SUFFIX:=-$(strip $(subst ",, $(BR2_GNU_TARGET_SUFFIX)))
101 STAGING_DIR:=$(strip $(subst ",, $(BR2_STAGING_DIR)))
103 ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
104 TOOL_BUILD_DIR=$(BASE_DIR)/$(TOPDIR_PREFIX)toolchain_build_$(ARCH)$(ARCH_FPU_SUFFIX)$(TOPDIR_SUFFIX)
106 # Quotes are needed for spaces et al in path components.
107 TARGET_PATH="$(TOOL_BUILD_DIR)/bin:$(STAGING_DIR)/bin:$(STAGING_DIR)/usr/bin:$(PATH)"
108 IMAGE:=$(BASE_DIR)/rootfs.$(ARCH)$(ARCH_FPU_SUFFIX)
109 GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-linux
110 REAL_GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)$(GNU_TARGET_SUFFIX)
111 TARGET_CROSS=$(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-
112 KERNEL_CROSS=$(TARGET_CROSS)
114 TOOLCHAIN_EXTERNAL_PREFIX:=$(strip $(subst ",, $(BR2_TOOLCHAIN_EXTERNAL_PREFIX)))
116 TOOLCHAIN_EXTERNAL_PATH:=$(strip $(subst ",, $(BR2_TOOLCHAIN_EXTERNAL_PATH)))
118 TOOL_BUILD_DIR=$(BASE_DIR)/$(TOPDIR_PREFIX)toolchain_build_$(TOOLCHAIN_EXTERNAL_PREFIX)
119 TARGET_PATH="$(STAGING_DIR)/bin:$(TOOL_BUILD_DIR)/bin:$(TOOLCHAIN_EXTERNAL_PATH)/bin:$(PATH)"
120 IMAGE:=$(BASE_DIR)/rootfs.$(TOOLCHAIN_EXTERNAL_PREFIX)
121 REAL_GNU_TARGET_NAME=$(TOOLCHAIN_EXTERNAL_PREFIX)
122 GNU_TARGET_NAME=$(TOOLCHAIN_EXTERNAL_PREFIX)
123 KERNEL_CROSS=$(TOOLCHAIN_EXTERNAL_PATH)/bin/$(TOOLCHAIN_EXTERNAL_PREFIX)-
124 TARGET_CROSS=$(TOOLCHAIN_EXTERNAL_PATH)/bin/$(TOOLCHAIN_EXTERNAL_PREFIX)-
126 TARGET_CC=$(TARGET_CROSS)gcc
127 TARGET_CXX=$(TARGET_CROSS)g++
128 TARGET_RANLIB=$(TARGET_CROSS)ranlib
129 STRIP=$(TARGET_CROSS)strip --remove-section=.comment --remove-section=.note
130 INSTALL=/usr/bin/install
133 HOST_ARCH:=$(shell $(HOSTCC) -dumpmachine | sed -e s'/-.*//' \
134 -e 's/sparc.*/sparc/' \
136 -e 's/m68k.*/m68k/' \
137 -e 's/ppc/powerpc/g' \
138 -e 's/v850.*/v850/g' \
140 -e 's/mips-.*/mips/' \
141 -e 's/mipsel-.*/mipsel/' \
142 -e 's/cris.*/cris/' \
143 -e 's/i[3-9]86/i386/' \
145 GNU_HOST_NAME:=$(HOST_ARCH)-$(subst ",,$(BR2_GNU_BUILD_SUFFIX))
147 TARGET_CONFIGURE_OPTS=PATH=$(TARGET_PATH) \
148 AR=$(TARGET_CROSS)ar \
149 AS=$(TARGET_CROSS)as \
150 LD=$(TARGET_CROSS)ld \
151 NM=$(TARGET_CROSS)nm \
152 CC=$(TARGET_CROSS)gcc \
153 GCC=$(TARGET_CROSS)gcc \
154 CXX=$(TARGET_CROSS)g++ \
155 CPP=$(TARGET_CROSS)cpp \
156 RANLIB=$(TARGET_CROSS)ranlib \
157 STRIP=$(TARGET_CROSS)strip \
158 OBJCOPY=$(TARGET_CROSS)objcopy \
159 CFLAGS="$(TARGET_CFLAGS)" \
160 LDFLAGS="$(TARGET_LDFLAGS)" \
161 AR_FOR_BUILD="$(HOSTAR)" \
162 AS_FOR_BUILD="$(HOSTAS)" \
163 CC_FOR_BUILD="$(HOSTCC)" \
164 CXX_FOR_BUILD="$(HOSTCXX)" \
165 LD_FOR_BUILD="$(HOSTLD)" \
166 CFLAGS_FOR_BUILD="$(HOST_CFLAGS)" \
167 LDFLAGS_FOR_BUILD="$(HOST_LDFLAGS)" \
168 PKG_CONFIG_SYSROOT="$(STAGING_DIR)" \
169 PKG_CONFIG="$(STAGING_DIR)/usr/bin/pkg-config"
171 HOST_CONFIGURE_OPTS=PATH=$(TARGET_PATH) \
172 AR_FOR_BUILD="$(HOSTAR)" \
173 AS_FOR_BUILD="$(HOSTAS)" \
174 CC_FOR_BUILD="$(HOSTCC)" \
175 GCC_FOR_BUILD="$(HOSTCC)" \
176 CXX_FOR_BUILD="$(HOSTCXX)" \
177 LD_FOR_BUILD="$(HOSTLD)" \
178 CFLAGS_FOR_BUILD="$(HOST_CFLAGS)" \
179 CXXFLAGS_FOR_BUILD="$(HOST_CXXFLAGS)" \
180 LDFLAGS_FOR_BUILD="$(HOST_LDFLAGS)" \
181 AR_FOR_TARGET=$(TARGET_CROSS)ar \
182 AS_FOR_TARGET=$(TARGET_CROSS)as \
183 LD_FOR_TARGET=$(TARGET_CROSS)ld \
184 NM_FOR_TARGET=$(TARGET_CROSS)nm \
185 RANLIB_FOR_TARGET=$(TARGET_CROSS)ranlib \
186 STRIP_FOR_TARGET=$(TARGET_CROSS)strip \
187 OBJCOPY_FOR_TARGET=$(TARGET_CROSS)objcopy
189 #######################################################################
190 # settings we need to pass to configure
192 # does unaligned access trap?
193 BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=yes
195 BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
197 ifeq ($(BR2_x86_64),y)
198 BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
201 BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
204 BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
206 ifeq ($(BR2_powerpc)$(BR2_ENDIAN),yBIG)
207 BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
210 ifeq ($(BR2_ENDIAN),"BIG")
211 BR2_AC_CV_C_BIGENDIAN=ac_cv_c_bigendian=yes
213 BR2_AC_CV_C_BIGENDIAN=ac_cv_c_bigendian=no
216 TARGET_CONFIGURE_ARGS= \
217 $(BR2_AC_CV_TRAP_CHECK) \
218 ac_cv_func_mmap_fixed_mapped=yes \
219 ac_cv_func_memcmp_working=yes \
220 $(BR2_AC_CV_C_BIGENDIAN)
222 #######################################################################
224 ifeq ($(BR2_ENABLE_LOCALE),y)
227 DISABLE_NLS:=--disable-nls
230 ifneq ($(BR2_LARGEFILE),y)
231 DISABLE_LARGEFILE= --disable-largefile
234 ifneq ($(BR2_INET_IPV6),y)
235 DISABLE_IPV6= --disable-ipv6
238 ifeq ($(BR2_INSTALL_LIBSTDCPP),)
239 TARGET_CONFIGURE_OPTS+=CXX=""
247 ifeq ($(strip $(BR2_PACKAGE_TINYX)),y)
250 ifeq ($(strip $(BR2_PACKAGE_XORG)),y)
253 ifeq ($(strip $(BR2_PACKAGE_XGGI)),y)