7 HOSTMAKE
:=$(shell $(CONFIG_SHELL
) -c
"which $(HOSTMAKE)" || type
-p
$(HOSTMAKE
) || echo make
)
9 MAKE1
:=$(HOSTMAKE
) MAKE
="$(firstword $(HOSTMAKE)) -j1"
10 MAKE
:=$(HOSTMAKE
) -j
$(BR2_JLEVEL
)
13 #########################################################################
14 ifeq ($(BR2_TOOLCHAIN_SOURCE
),y
)
18 ifeq ($(BR2_TOOLCHAIN_SYSROOT
),y
)
19 TARGET_CFLAGS
+= $(BR2_SYSROOT
) $(BR2_ISYSROOT
) -I
=/usr
/include
20 TARGET_LDFLAGS
+= $(BR2_SYSROOT
)
22 # for old gcc's, as fallback
23 TARGET_CFLAGS
+= -I
$(STAGING_DIR
)/include
25 TARGET_CFLAGS
+=$(TARGET_OPTIMIZATION
) $(TARGET_DEBUGGING
) \
26 -I
$(STAGING_DIR
)/usr
/include
27 TARGET_LDFLAGS
+=-L
$(STAGING_DIR
)/lib
-L
$(STAGING_DIR
)/usr
/lib
30 CC_TARGET_CPU_SUB_
:=$(strip $(subst ",,$(BR2_bfin_sirevision)))
32 CC_TARGET_CPU_SUB_
:=$(if
$(CC_TARGET_CPU_SUB_
),-$(CC_TARGET_CPU_SUB_
))
35 CC_TARGET_CPU_
:=$(strip $(subst ",,$(BR2_GCC_TARGET_CPU)))
37 CC_TARGET_TUNE_
:=$(strip $(subst ",,$(BR2_GCC_TARGET_TUNE)))
39 CC_TARGET_ARCH_
:=$(strip $(subst ",,$(BR2_GCC_TARGET_ARCH)))
41 CC_TARGET_ABI_
:=$(strip $(subst ",,$(BR2_GCC_TARGET_ABI)))
43 ifneq ($(CC_TARGET_CPU_
),)
44 TARGET_CFLAGS
+=-mcpu
=$(CC_TARGET_CPU_
)$(CC_TARGET_CPU_SUB_
)
46 ifneq ($(CC_TARGET_TUNE_
),)
47 TARGET_CFLAGS
+=-mtune
=$(CC_TARGET_TUNE_
)
49 ifneq ($(CC_TARGET_ARCH_
),)
50 TARGET_CFLAGS
+=-march
=$(CC_TARGET_ARCH_
)
52 ifneq ($(CC_TARGET_ABI_
),)
53 TARGET_CFLAGS
+=-mabi
=$(CC_TARGET_ABI_
)
56 ifneq ($(BR2_PREFER_STATIC_LIB
),y
)
57 ifeq ($(BR2_x86_64
),y
)
58 TARGET_CFLAGS
+=-fPIC
-DPIC
59 endif # PIC for dynamic objects on x86_64
62 ifeq ($(BR2_SOFT_FLOAT
),y
)
63 TARGET_CFLAGS
+=-msoft-float
66 ifeq ($(BR2_THUMB_BINARIES
),y
)
67 TARGET_CFLAGS
+=-mthumb
70 # enable VIS for v9a and v9b
71 ifeq ($(findstring y
,$(BR2_sparc_v9a
)$(BR2_sparc64_v9a
)$(BR2_sparc_v9b
)$(BR2_sparc64_v9b
)),y
)
75 ifeq ($(findstring yy
,$(BR2_mips
)$(BR2_MIPS_ABI64
)),yy
)
76 TARGET_CFLAGS
+=-fno-pic
-mno-abicalls
79 TARGET_CXXFLAGS
=$(TARGET_CFLAGS
)
80 TARGET_FFLAGS
=$(TARGET_CFLAGS
)
81 TARGET_FCFLAGS
=$(TARGET_CFLAGS
)
82 TARGET_F77FLAGS
=$(TARGET_CFLAGS
)
84 # else it's an external toolchain
85 #########################################################################
87 TARGET_CFLAGS
=$(TARGET_OPTIMIZATION
) $(TARGET_DEBUGGING
) -I
$(STAGING_DIR
)/include -I
$(STAGING_DIR
)/usr
/include -I
$(TOOLCHAIN_EXTERNAL_PATH
)/$(TOOLCHAIN_EXTERNAL_PREFIX
)/include
88 TARGET_CXXFLAGS
=$(TARGET_CFLAGS
)
89 TARGET_LDFLAGS
=-L
$(STAGING_DIR
)/lib
-L
$(STAGING_DIR
)/usr
/lib
91 #########################################################################
93 ifeq ($(BR2_ENABLE_SSP
),y
)
94 TARGET_CFLAGS
+=-fstack-protector
-fstack-protector-all
-Wstack-protector
97 ifeq ($(BR2_TOOLCHAIN_SOURCE
),y
)
98 TOOL_BUILD_DIR
=$(BASE_DIR
)/$(TOPDIR_PREFIX
)toolchain_build_
$(ARCH
)$(ARCH_FPU_SUFFIX
)$(TOPDIR_SUFFIX
)
100 # Quotes are needed for spaces et al in path components.
101 TARGET_PATH
="$(TOOL_BUILD_DIR)/bin:$(STAGING_DIR)/bin:$(STAGING_DIR)/usr/bin:$(PATH)"
102 IMAGE
:=$(BINARIES_DIR
)/rootfs.
$(ARCH
)$(ARCH_FPU_SUFFIX
)
103 GNU_TARGET_NAME
=$(OPTIMIZE_FOR_CPU
)-linux
104 REAL_GNU_TARGET_NAME
=$(OPTIMIZE_FOR_CPU
)$(GNU_TARGET_SUFFIX
)
105 TARGET_CROSS
=$(STAGING_DIR
)/usr
/bin
/$(REAL_GNU_TARGET_NAME
)-
106 KERNEL_CROSS
=$(TARGET_CROSS
)
108 TOOLCHAIN_EXTERNAL_PREFIX
:=$(strip $(subst ",, $(BR2_TOOLCHAIN_EXTERNAL_PREFIX)))
110 TOOLCHAIN_EXTERNAL_PATH
:=$(strip $(subst ",, $(BR2_TOOLCHAIN_EXTERNAL_PATH)))
112 TOOL_BUILD_DIR
=$(BASE_DIR
)/$(TOPDIR_PREFIX
)toolchain_build_
$(TOOLCHAIN_EXTERNAL_PREFIX
)
113 TARGET_PATH
="$(STAGING_DIR)/bin:$(TOOL_BUILD_DIR)/bin:$(TOOLCHAIN_EXTERNAL_PATH)/bin:$(PATH)"
114 IMAGE
:=$(BINARIES_DIR
)/rootfs.
$(TOOLCHAIN_EXTERNAL_PREFIX
)-$(DATE
)
116 REAL_GNU_TARGET_NAME
=$(TOOLCHAIN_EXTERNAL_PREFIX
)
117 GNU_TARGET_NAME
=$(TOOLCHAIN_EXTERNAL_PREFIX
)
118 KERNEL_CROSS
=$(TOOLCHAIN_EXTERNAL_PATH
)/bin
/$(TOOLCHAIN_EXTERNAL_PREFIX
)-
119 TARGET_CROSS
=$(TOOLCHAIN_EXTERNAL_PATH
)/bin
/$(TOOLCHAIN_EXTERNAL_PREFIX
)-
121 TARGET_AR
=$(TARGET_CROSS
)ar
122 TARGET_AS
=$(TARGET_CROSS
)as
123 TARGET_CC
=$(TARGET_CROSS
)gcc
124 TARGET_CPP
=$(TARGET_CROSS
)cpp
125 TARGET_CXX
=$(TARGET_CROSS
)g
++
126 ifeq ($(BR2_GCC_VERSION_3_4_6
),y
)
127 TARGET_FC
=$(TARGET_CROSS
)g77
129 TARGET_FC
=$(TARGET_CROSS
)gfortran
131 TARGET_LD
=$(TARGET_CROSS
)ld
132 TARGET_NM
=$(TARGET_CROSS
)nm
133 TARGET_RANLIB
=$(TARGET_CROSS
)ranlib
134 TARGET_OBJCOPY
=$(TARGET_CROSS
)objcopy
135 TARGET_OBJDUMP
=$(TARGET_CROSS
)objdump
136 TARGET_LDCONFIG
=$(TARGET_CROSS
)ldconfig
137 ifeq ($(BR2_STRIP_strip
),y
)
138 STRIP_DISCARD_ALL
:=--discard-all
139 STRIP_STRIP_UNNEEDED
:=--strip-unneeded
140 STRIP_STRIP_ALL
:=--strip-all
141 REMOVE_SECTION_COMMENT
:=--remove-section
=.comment
142 REMOVE_SECTION_NOTE
:=--remove-section
=.note
143 TARGET_STRIP
=$(TARGET_CROSS
)strip
144 STRIPCMD
=$(TARGET_CROSS
)strip $(REMOVE_SECTION_COMMENT
) $(REMOVE_SECTION_NOTE
)
146 ifeq ($(BR2_STRIP_sstrip
),y
)
148 STRIP_STRIP_UNNEEDED
:=
150 REMOVE_SECTION_COMMENT
:=
151 REMOVE_SECTION_NOTE
:=
152 TARGET_STRIP
=$(STAGING_DIR
)/usr
/bin
/$(REAL_GNU_TARGET_NAME
)-sstrip
153 STRIPCMD
=$(TARGET_STRIP
)
155 ifeq ($(BR2_STRIP_none
),y
)
156 TARGET_STRIP
=true
-Not_stripping
157 STRIPCMD
=$(TARGET_STRIP
)
159 INSTALL
=/usr
/bin
/install
160 FLEX
:=$(shell $(CONFIG_SHELL
) -c
'which flex || type -p flex')
161 BISON
:=$(shell $(CONFIG_SHELL
) -c
'which bison || type -p bison')
163 HOST_ARCH
:=$(shell $(HOSTCC
) -dumpmachine | sed
-e s
'/-.*//' \
164 -e
's/sparc.*/sparc/' \
166 -e
's/m68k.*/m68k/' \
167 -e
's/ppc/powerpc/g' \
168 -e
's/v850.*/v850/g' \
170 -e
's/mips-.*/mips/' \
171 -e
's/mipsel-.*/mipsel/' \
172 -e
's/cris.*/cris/' \
173 -e
's/i[3-9]86/i386/' \
175 GNU_HOST_NAME
:=$(HOST_ARCH
)-$(subst ",,$(BR2_GNU_BUILD_SUFFIX))
178 AUTO_CONFIGURE_TARGET
= \
179 $(TARGET_CONFIGURE_OPTS
) \
180 $(TARGET_CONFIGURE_ARGS
) \
181 $(TARGET_CONFIGURE_ENV
) \
182 $(if
$(THIS_SRCDIR
),$(THIS_SRCDIR
)/,.
/)configure \
183 --target
=$(REAL_GNU_TARGET_NAME
) \
184 --host
=$(REAL_GNU_TARGET_NAME
) \
185 --build
=$(GNU_HOST_NAME
)
187 TARGET_CONFIGURE_OPTS
=PATH
=$(TARGET_PATH
) \
190 LD
="$(TARGET_LD) $(TARGET_LDFLAGS)" \
192 CC
="$(TARGET_CC) $(TARGET_CFLAGS)" \
193 GCC
="$(TARGET_CC) $(TARGET_CFLAGS)" \
194 CPP
="$(TARGET_CPP) $(TARGET_CFLAGS)" \
195 CXX
="$(if $(BR2_GCC_CROSS_CXX),$(TARGET_CXX) $(TARGET_CXXFLAGS))" \
196 FC
="$(TARGET_FC) $(TARGET_FCFLAGS)" \
197 RANLIB
="$(TARGET_RANLIB)" \
198 STRIP
="$(TARGET_STRIP)" \
199 OBJCOPY
="$(TARGET_OBJCOPY)" \
200 AR_FOR_BUILD
="$(HOSTAR)" \
201 AS_FOR_BUILD
="$(HOSTAS)" \
202 CC_FOR_BUILD
="$(HOSTCC)" \
203 GCC_FOR_BUILD
="$(HOSTCC)" \
204 CXX_FOR_BUILD
="$(HOSTCXX)" \
205 FC_FOR_BUILD
="$(HOSTFC)" \
206 LD_FOR_BUILD
="$(HOSTLD)" \
207 CFLAGS_FOR_BUILD
="$(HOST_CFLAGS)" \
208 CXXFLAGS_FOR_BUILD
="$(HOST_CXXFLAGS)" \
209 LDFLAGS_FOR_BUILD
="$(HOST_LDFLAGS)" \
210 FCFLAGS_FOR_BUILD
="$(HOST_FCFLAGS)" \
211 AR_FOR_TARGET
="$(TARGET_AR)" \
212 AS_FOR_TARGET
="$(TARGET_AS)" \
213 CC_FOR_TARGET
="$(TARGET_CC)" \
214 LD_FOR_TARGET
="$(TARGET_LD)" \
215 NM_FOR_TARGET
="$(TARGET_NM)" \
216 CXX_FOR_TARGET
="$(if $(BR2_GCC_CROSS_CXX),$(TARGET_CXX))" \
217 DEFAULT_ASSEMBLER
="$(TARGET_AS)" \
218 DEFAULT_LINKER
="$(TARGET_LD)" \
219 PKG_CONFIG_SYSROOT
="$(STAGING_DIR)" \
220 PKG_CONFIG
="$(STAGING_DIR)/usr/bin/pkg-config" \
221 PKG_CONFIG_PATH
="$(STAGING_DIR)/usr/lib/pkgconfig:$(PKG_CONFIG_PATH)" \
222 PKG_CONFIG_ALLOW_SYSTEM_CFLAGS
=1 \
223 PKG_CONFIG_ALLOW_SYSTEM_LIBS
=1 \
224 STAGING_DIR
="$(STAGING_DIR)"
226 TARGET_CONFIGURE_ENV
:=\
227 CFLAGS
="$(TARGET_CFLAGS)" \
228 LDFLAGS
="$(TARGET_LDFLAGS)" \
229 CXXFLAGS
="$(if $(BR2_GCC_CROSS_CXX),$(TARGET_CXXFLAGS))" \
230 FFLAGS
="$(TARGET_FFLAGS)" \
231 FCFLAGS
="$(TARGET_FCFLAGS)" \
232 F77FLAGS
="$(TARGET_F77FLAGS)" \
234 HOST_CONFIGURE_OPTS
=PATH
=$(TARGET_PATH
) \
237 LD
="$(HOSTLD) $(HOST_LDFLAGS)" \
239 CC
="$(HOSTCC) $(HOST_CFLAGS)" \
240 GCC
="$(HOSTCC) $(HOST_CFLAGS)" \
241 CXX
="$(HOSTCXX) $(HOST_CXXFLAGS)" \
242 CPP
="$(HOSTCPP) $(HOST_CFLAGS)" \
243 AR_FOR_BUILD
="$(HOSTAR)" \
244 AS_FOR_BUILD
="$(HOSTAS)" \
245 CC_FOR_BUILD
="$(HOSTCC)" \
246 GCC_FOR_BUILD
="$(HOSTCC)" \
247 CPP_FOR_BUILD
="$(HOSTCPP)" \
248 CXX_FOR_BUILD
="$(HOSTCXX)" \
249 LD_FOR_BUILD
="$(HOSTLD)" \
250 FC_FOR_BUILD
="$(HOSTFC)" \
251 CFLAGS_FOR_BUILD
="$(HOST_CFLAGS)" \
252 CXXFLAGS_FOR_BUILD
="$(HOST_CXXFLAGS)" \
253 LDFLAGS_FOR_BUILD
="$(HOST_LDFLAGS)" \
254 FCFLAGS_FOR_BUILD
="$(HOST_FCFLAGS)" \
255 AR_FOR_TARGET
="$(TARGET_AR)" \
256 AS_FOR_TARGET
="$(TARGET_AS)" \
257 CC_FOR_TARGET
="$(TARGET_CC)" \
258 CPP_FOR_TARGET
="$(TARGET_CPP)" \
259 LD_FOR_TARGET
="$(TARGET_LD)" \
260 NM_FOR_TARGET
="$(TARGET_NM)" \
261 CXX_FOR_TARGET
="$(if $(BR2_GCC_CROSS_CXX),$(TARGET_CXX))" \
262 RANLIB_FOR_TARGET
="$(TARGET_RANLIB)" \
263 STRIP_FOR_TARGET
="$(TARGET_STRIP)" \
264 OBJCOPY_FOR_TARGET
="$(TARGET_OBJCOPY)" \
265 OBJDUMP_FOR_TARGET
="$(TARGET_OBJDUMP)" \
266 DEFAULT_ASSEMBLER
="$(TARGET_AS)" \
267 DEFAULT_LINKER
="$(TARGET_LD)" \
268 ORIGINAL_AS_FOR_TARGET
="$(TARGET_AS)" \
269 ORIGINAL_LD_FOR_TARGET
="$(TARGET_LD)" \
270 ORIGINAL_NM_FOR_TARGET
="$(TARGET_NM)" \
271 ORIGINAL_OBJDUMP_FOR_TARGET
="$(TARGET_OBJDUMP)"
273 #######################################################################
274 # settings we need to pass to configure
276 # does unaligned access trap?
277 BR2_AC_CV_TRAP_CHECK
=ac_cv_lbl_unaligned_fail
=yes
279 BR2_AC_CV_TRAP_CHECK
=ac_cv_lbl_unaligned_fail
=no
281 ifeq ($(BR2_x86_64
),y
)
282 BR2_AC_CV_TRAP_CHECK
=ac_cv_lbl_unaligned_fail
=no
285 BR2_AC_CV_TRAP_CHECK
=ac_cv_lbl_unaligned_fail
=no
288 BR2_AC_CV_TRAP_CHECK
=ac_cv_lbl_unaligned_fail
=no
290 ifeq ($(BR2_powerpc
)$(BR2_ENDIAN
),yBIG
)
291 BR2_AC_CV_TRAP_CHECK
=ac_cv_lbl_unaligned_fail
=no
294 ifeq ($(BR2_ENDIAN
),"BIG")
295 BR2_AC_CV_C_BIGENDIAN
=ac_cv_c_bigendian
=yes
297 BR2_AC_CV_C_BIGENDIAN
=ac_cv_c_bigendian
=no
300 # uClibc's config symbols reside in BR2__UCLIBC_${uclibc_config_sym}=${val}
301 # Does malloc return live pointer for malloc(0) ?
302 ifeq ($(BR2__UCLIBC_MALLOC_GLIBC_COMPAT
),y
)
303 BR2_AC_CV_FUNC_MALLOC_0_NONNULL
=ac_cv_func_malloc_0_nonnull
=yes \
304 gl_cv_func_malloc_0_nonnull
=yes \
305 ac_cv_func_realloc_0_nonnull
=yes
307 BR2_AC_CV_FUNC_MALLOC_0_NONNULL
=ac_cv_func_malloc_0_nonnull
=no \
308 gl_cv_func_malloc_0_nonnull
=no \
309 ac_cv_func_realloc_0_nonnull
=no
312 ifeq ($(findstring y
,$(BR2__UCLIBC_UCLIBC_SUSV3_LEGACY
)$(BR2__UCLIBC_UCLIBC_SUSV3_LEGACY_MACROS
)),y
)
313 BR2_AC_CV_SUSV3_LEGACY
=
316 TARGET_CONFIGURE_ARGS
= \
317 $(BR2_AC_CV_TRAP_CHECK
) \
318 ac_cv_func_mmap_fixed_mapped
=yes \
319 ac_cv_func_memcmp_working
=yes \
320 $(BR2_AC_CV_FUNC_MALLOC_0_NONNULL
) \
321 ac_cv_type_mode_t
=yes \
322 ac_cv_prog_LEX
="$(FLEX)" \
323 ac_cv_prog_YACC
="$(BISON) $($(PKG)_BISON_FLAGS)" \
324 $(BR2_AC_CV_C_BIGENDIAN
)
326 #######################################################################
328 #ifneq ($(BR2_GCC_CROSS_CXX),y)
329 #TARGET_CONFIGURE_OPTS+=CXX=""
337 ifeq ($(BR2_PACKAGE_TINYX
),y
)
340 ifeq ($(BR2_PACKAGE_XORG
),y
)
343 ifeq ($(BR2_PACKAGE_XORG7
),y
)
344 XSERVER
+=xserver_xorg-server
346 ifeq ($(BR2_PACKAGE_XGGI
),y
)
350 X11_PREFIX
:=$(strip $(subst ",, $(BR2_X11_PREFIX)))
353 include package
/Makefile.autotools.in