update openssl to latest stable version
[openadk.git] / mk / vars.mk
blob170580396be0f03da3849172cb393270d385165d
1 # This file is part of the OpenADK project. OpenADK is copyrighted
2 # material, please see the LICENCE file in the top-level directory.
4 CP= cp -fpR
5 INSTALL_DIR= install -d -m0755
6 INSTALL_DATA= install -m0644
7 INSTALL_BIN= install -m0755
8 INSTALL_SCRIPT= install -m0755
9 MAKEFLAGS= $(EXTRA_MAKEFLAGS)
10 BUILD_USER= $(shell id -un)
11 BUILD_GROUP= $(shell id -gn)
12 ADK_SUFFIX:= ${ADK_TARGET_SYSTEM}_${ADK_TARGET_LIBC}_${ADK_TARGET_CPU_ARCH}
13 ifneq ($(ADK_TARGET_FLOAT),)
14 ADK_SUFFIX:= $(ADK_SUFFIX)_$(ADK_TARGET_FLOAT)
15 endif
16 ifneq ($(ADK_TARGET_ABI),)
17 ADK_SUFFIX:= $(ADK_SUFFIX)_$(ADK_TARGET_ABI)
18 endif
19 ifneq ($(ADK_TARGET_CPU_TYPE),)
20 ADK_SUFFIX:= $(ADK_SUFFIX)_$(ADK_TARGET_CPU_TYPE)
21 endif
22 ifeq ($(ADK_TARGET_WITH_MMU),)
23 ADK_SUFFIX:= $(ADK_SUFFIX)_nommu
24 endif
26 # some global dirs
27 BASE_DIR:= $(ADK_TOPDIR)
28 ifeq ($(ADK_DL_DIR),)
29 DL_DIR?= $(BASE_DIR)/dl
30 else
31 DL_DIR?= $(ADK_DL_DIR)
32 endif
33 SCRIPT_DIR:= $(BASE_DIR)/scripts
34 STAGING_HOST_DIR:= ${BASE_DIR}/host_${GNU_HOST_NAME}
35 HOST_BUILD_DIR:= ${BASE_DIR}/host_build_${GNU_HOST_NAME}
36 TOOLCHAIN_DIR:= ${BASE_DIR}/toolchain_${ADK_SUFFIX}
38 # dirs for cleandir
39 FW_DIR_PFX:= $(BASE_DIR)/firmware
40 BUILD_DIR_PFX:= $(BASE_DIR)/build_*
41 STAGING_PKG_DIR_PFX:= ${BASE_DIR}/pkg_*
42 STAGING_TARGET_DIR_PFX:=${BASE_DIR}/target_*
43 TOOLCHAIN_DIR_PFX= $(BASE_DIR)/toolchain_*
44 STAGING_HOST_DIR_PFX:= ${BASE_DIR}/host_*
45 TARGET_DIR_PFX:= $(BASE_DIR)/root_*
47 TARGET_DIR:= $(BASE_DIR)/root_${ADK_SUFFIX}
48 FW_DIR:= $(BASE_DIR)/firmware/${ADK_SUFFIX}
49 BUILD_DIR:= ${BASE_DIR}/build_${ADK_SUFFIX}
50 STAGING_TARGET_DIR:= ${BASE_DIR}/target_${ADK_SUFFIX}
51 STAGING_PKG_DIR:= ${BASE_DIR}/pkg_${ADK_SUFFIX}
52 STAGING_HOST2TARGET:= ../../target_${ADK_SUFFIX}
53 TOOLCHAIN_BUILD_DIR= $(BASE_DIR)/toolchain_build_${ADK_SUFFIX}
54 PACKAGE_DIR:= $(FW_DIR)/packages
55 SCRIPT_TARGET_DIR:= ${STAGING_TARGET_DIR}/scripts
57 # PATH variables
58 TARGET_PATH= ${SCRIPT_DIR}:${STAGING_TARGET_DIR}/scripts:${TOOLCHAIN_DIR}/usr/bin:${STAGING_HOST_DIR}/usr/bin:${_PATH}
59 HOST_PATH= ${SCRIPT_DIR}:${TOOLCHAIN_DIR}/usr/bin:${STAGING_HOST_DIR}/usr/bin:${_PATH}
60 AUTOTOOL_PATH= ${TOOLCHAIN_DIR}/usr/bin:${STAGING_HOST_DIR}/usr/bin:${STAGING_TARGET_DIR}/scripts:${_PATH}
62 ifeq ($(ADK_DISABLE_HONOUR_CFLAGS),)
63 GCC_CHECK:= GCC_HONOUR_COPTS=2
64 else
65 GCC_CHECK:=
66 endif
68 ifeq ($(ADK_TARGET_UCLINUX),y)
69 ADK_TARGET_LINUXTYPE:= uclinux
70 else
71 ADK_TARGET_LINUXTYPE:= linux
72 endif
74 GNU_TARGET_NAME:= $(ADK_TARGET_CPU_ARCH)-$(ADK_VENDOR)-$(ADK_TARGET_LINUXTYPE)-$(ADK_TARGET_SUFFIX)
75 ifeq ($(ADK_TARGET_ARCH_C6X),y)
76 GNU_TARGET_NAME:= $(ADK_TARGET_CPU_ARCH)-$(ADK_TARGET_LINUXTYPE)
77 endif
78 TARGET_CROSS:= $(TOOLCHAIN_DIR)/usr/bin/$(GNU_TARGET_NAME)-
79 TARGET_COMPILER_PREFIX?=${TARGET_CROSS}
80 CONFIGURE_TRIPLE:= --build=${GNU_HOST_NAME} \
81 --host=${GNU_TARGET_NAME} \
82 --target=${GNU_TARGET_NAME}
84 ifneq ($(strip ${ADK_USE_CCACHE}),)
85 TARGET_COMPILER_PREFIX=$(STAGING_HOST_DIR)/usr/bin/ccache ${TARGET_CROSS}
86 endif
88 # target tools
89 TARGET_CC:= ${TARGET_COMPILER_PREFIX}gcc
91 # use a gcc wrapper for coldfire/arm uclinux support
92 ifeq ($(ADK_TARGET_UCLINUX),y)
93 ifeq ($(ADK_TARGET_ARCH_M68K),y)
94 TARGET_CC:= adk-uclinux-gcc
95 endif
96 ifeq ($(ADK_TARGET_ARCH_ARM),y)
97 TARGET_CC:= adk-uclinux-gcc
98 endif
99 endif
101 TARGET_CXX:= ${TARGET_COMPILER_PREFIX}g++
102 TARGET_LD:= ${TARGET_COMPILER_PREFIX}ld
103 TARGET_AR:= ${TARGET_COMPILER_PREFIX}ar
104 TARGET_RANLIB:= ${TARGET_COMPILER_PREFIX}ranlib
106 ifneq ($(ADK_TARGET_ABI_CFLAGS),)
107 TARGET_CC+= $(ADK_TARGET_ABI_CFLAGS)
108 TARGET_CXX+= $(ADK_TARGET_ABI_CFLAGS)
109 endif
111 TARGET_CPPFLAGS:=
112 TARGET_CFLAGS:= -fwrapv -fno-ident
113 TARGET_CXXFLAGS:= -fwrapv -fno-ident
114 TARGET_LDFLAGS:= -L$(STAGING_TARGET_DIR)/lib -L$(STAGING_TARGET_DIR)/usr/lib \
115 -Wl,-O1 -Wl,-rpath -Wl,/usr/lib \
116 -Wl,-rpath-link -Wl,${STAGING_TARGET_DIR}/usr/lib
118 ifeq ($(ADK_DISABLE_HONOUR_CFLAGS),)
119 TARGET_CFLAGS+= -fhonour-copts
120 TARGET_CXXFLAGS+= -fhonour-copts
121 endif
123 # for architectures where gcc --with-cpu matches -mcpu=
124 ifneq ($(ADK_TARGET_GCC_CPU),)
125 ifeq ($(ADK_CPU_ARC700),y)
126 TARGET_CFLAGS+= -mcpu=ARC700
127 TARGET_CXXFLAGS+= -mcpu=ARC700
128 else
129 TARGET_CFLAGS+= -mcpu=$(ADK_TARGET_GCC_CPU)
130 TARGET_CXXFLAGS+= -mcpu=$(ADK_TARGET_GCC_CPU)
131 endif
132 endif
134 # for archiectures where gcc --with-arch matches -march=
135 ifneq ($(ADK_TARGET_GCC_ARCH),)
136 TARGET_CFLAGS+= -march=$(ADK_TARGET_GCC_ARCH)
137 TARGET_CXXFLAGS+= -march=$(ADK_TARGET_GCC_ARCH)
138 endif
140 ifneq ($(ADK_TARGET_CPU_FLAGS),)
141 TARGET_CFLAGS+= $(ADK_TARGET_CPU_FLAGS)
142 TARGET_CXXFLAGS+= $(ADK_TARGET_CPU_FLAGS)
143 endif
145 ifneq ($(ADK_TARGET_FPU),)
146 TARGET_CFLAGS+= -mfpu=$(ADK_TARGET_FPU)
147 TARGET_CXXFLAGS+= -mfpu=$(ADK_TARGET_FPU)
148 endif
150 ifneq ($(ADK_TARGET_FLOAT),)
151 ifeq ($(ADK_TARGET_ARCH_ARM),y)
152 TARGET_CFLAGS+= -mfloat-abi=$(ADK_TARGET_FLOAT)
153 TARGET_CXXFLAGS+= -mfloat-abi=$(ADK_TARGET_FLOAT)
154 endif
155 ifeq ($(ADK_TARGET_ARCH_MIPS),y)
156 TARGET_CFLAGS+= -m$(ADK_TARGET_FLOAT)-float
157 TARGET_CXXFLAGS+= -m$(ADK_TARGET_FLOAT)-float
158 endif
159 endif
161 ifeq ($(ADK_TARGET_ARCH_ARM),y)
162 ifeq ($(ADK_TARGET_BINFMT_FLAT),y)
163 TARGET_CFLAGS+= -Wl,-elf2flt
164 TARGET_CXXFLAGS+= -Wl,-elf2flt
165 endif
166 endif
168 ifeq ($(ADK_TARGET_ARCH_BFIN),y)
169 ifeq ($(ADK_TARGET_BINFMT_FLAT),y)
170 TARGET_LDFLAGS+= -elf2flt
171 endif
172 ifeq ($(ADK_TARGET_BINFMT_FLAT_SEP_DATA),y)
173 TARGET_CFLAGS+= -msep-data
174 TARGET_CXXFLAGS+= -msep-data
175 endif
176 endif
178 ifeq ($(ADK_TARGET_ARCH_H8300),y)
179 TARGET_CFLAGS+= -mh
180 ifeq ($(ADK_TARGET_BINFMT_FLAT),y)
181 TARGET_CFLAGS+= -Wl,-elf2flt
182 TARGET_CXXFLAGS+= -Wl,-elf2flt
183 endif
184 ifeq ($(ADK_TARGET_BINFMT_FLAT_SEP_DATA),y)
185 TARGET_CFLAGS+= -msep-data
186 TARGET_CXXFLAGS+= -msep-data
187 endif
188 endif
190 ifeq ($(ADK_TARGET_ARCH_M68K),y)
191 ifeq ($(ADK_TARGET_BINFMT_FLAT),y)
192 TARGET_LDFLAGS+= -elf2flt
193 endif
194 ifeq ($(ADK_TARGET_BINFMT_FLAT_SEP_DATA),y)
195 TARGET_CFLAGS+= -msep-data
196 TARGET_CXXFLAGS+= -msep-data
197 endif
198 endif
200 ifeq ($(ADK_TARGET_LIB_MUSL),y)
201 # use -static-libgcc by default only for musl
202 TARGET_CFLAGS+= -static-libgcc
203 TARGET_CXXFLAGS+= -static-libgcc
204 TARGET_LDFLAGS+= -static-libgcc
205 endif
207 # security optimization, see http://www.akkadia.org/drepper/dsohowto.pdf
208 ifneq ($(ADK_TARGET_USE_LD_RELRO),)
209 TARGET_LDFLAGS+= -Wl,-z,relro
210 endif
211 ifneq ($(ADK_TARGET_USE_LD_BIND_NOW),)
212 TARGET_LDFLAGS+= -Wl,-z,now
213 endif
215 # needed for musl ppc
216 ifeq ($(ADK_TARGET_ARCH_PPC),y)
217 ifeq ($(ADK_TARGET_LIB_MUSL),y)
218 TARGET_LDFLAGS+= -Wl,--secure-plt
219 endif
220 endif
222 ifeq ($(ADK_TARGET_USE_STATIC_LIBS),y)
223 TARGET_CFLAGS+= -static
224 TARGET_CXXFLAGS+= -static
225 TARGET_LDFLAGS+= -static
226 endif
228 ifneq ($(ADK_TARGET_USE_SSP),)
229 TARGET_CFLAGS+= -fstack-protector-all --param=ssp-buffer-size=4
230 TARGET_CXXFLAGS+= -fstack-protector-all --param=ssp-buffer-size=4
231 TARGET_LDFLAGS+= -fstack-protector-all
232 endif
234 ifneq ($(ADK_TARGET_USE_LD_GC),)
235 TARGET_CFLAGS+= -fdata-sections -ffunction-sections
236 TARGET_CXXFLAGS+= -fdata-sections -ffunction-sections
237 TARGET_LDFLAGS+= -Wl,--gc-sections
238 endif
240 ifneq ($(ADK_TARGET_USE_LTO),)
241 TARGET_CFLAGS+= -flto
242 TARGET_CXXFLAGS+= -flto
243 TARGET_LDFLAGS+= -flto
244 endif
246 # performance optimization, see http://www.akkadia.org/drepper/dsohowto.pdf
247 ifneq ($(ADK_TARGET_USE_GNU_HASHSTYLE),)
248 TARGET_LDFLAGS+= -Wl,--hash-style=gnu
249 endif
251 ifeq ($(ADK_TARGET_ARCH_MICROBLAZE),y)
252 TARGET_CFLAGS+= -mxl-barrel-shift
253 TARGET_CXXFLAGS+= -mxl-barrel-shift
254 endif
255 ifeq ($(ADK_TARGET_ARCH_XTENSA),y)
256 TARGET_CFLAGS+= -mlongcalls -mtext-section-literals
257 TARGET_CXXFLAGS+= -mlongcalls -mtext-section-literals
258 endif
260 # add configured compiler flags for optimization
261 TARGET_CFLAGS+= $(ADK_TARGET_CFLAGS_OPT)
262 TARGET_CXXFLAGS+= $(ADK_TARGET_CFLAGS_OPT)
264 # add compiler flags for debug information
265 ifeq ($(ADK_BUILD_WITH_DEBUG),y)
266 TARGET_CFLAGS+= -g3
267 TARGET_CXXFLAGS+= -g3
268 endif
270 ifneq ($(ADK_DEBUG),)
271 TARGET_CFLAGS+= -fno-omit-frame-pointer
272 TARGET_CXXFLAGS+= -fno-omit-frame-pointer
273 TARGET_CFLAGS+= -funwind-tables -fasynchronous-unwind-tables
274 TARGET_CXXFLAGS+= -funwind-tables -fasynchronous-unwind-tables
275 else
276 TARGET_CPPFLAGS+= -DNDEBUG
277 TARGET_CFLAGS+= -fomit-frame-pointer
278 TARGET_CXXFLAGS+= -fomit-frame-pointer
279 # stop generating eh_frame stuff
280 TARGET_CFLAGS+= -fno-unwind-tables -fno-asynchronous-unwind-tables
281 TARGET_CXXFLAGS+= -fno-unwind-tables -fno-asynchronous-unwind-tables
282 endif
284 ifeq ($(ADK_TARGET_ARCH_ARM),y)
285 ifeq ($(ADK_TARGET_ARCH_ARM_WITH_NEON),y)
286 TARGET_CFLAGS+= -funsafe-math-optimizations
287 TARGET_CXXFLAGS+= -funsafe-math-optimizations
288 endif
289 ifeq ($(ADK_TARGET_ARCH_ARM_WITH_THUMB),y)
290 TARGET_CFLAGS+= -mthumb -Wa,-mimplicit-it=thumb
291 TARGET_CXXFLAGS+= -mthumb -Wa,-mimplicit-it=thumb
292 else
293 TARGET_CFLAGS+= -marm
294 TARGET_CXXFLAGS+= -marm
295 endif
296 endif
298 # host compiler and linker flags
299 HOST_CPPFLAGS:= -I$(STAGING_HOST_DIR)/usr/include
300 HOST_LDFLAGS:= -L$(STAGING_HOST_DIR)/usr/lib -Wl,-rpath -Wl,${STAGING_HOST_DIR}/usr/lib
302 PATCH= PATH='${HOST_PATH}' ${BASH} $(SCRIPT_DIR)/patch.sh
303 PATCHP0= PATH='${HOST_PATH}' patch -p0
305 ifeq ($(ADK_STATIC_TOOLCHAIN),y)
306 HOST_STATIC_CFLAGS:= -static -Wl,-static
307 HOST_STATIC_CXXFLAGS:= -static -Wl,-static
308 HOST_STATIC_LDFLAGS:= -Wl,-static
309 HOST_STATIC_LLDFLAGS:= -all-static
310 endif
312 SED:= PATH='${HOST_PATH}' sed -i -e
313 XZ:= PATH='${HOST_PATH}' xz
314 LINUX_DIR:= $(BUILD_DIR)/linux
315 KERNEL_MODULE_FLAGS:= ARCH=${ADK_TARGET_ARCH} \
316 PREFIX=/usr \
317 KERNEL_PATH=${LINUX_DIR} \
318 KERNELDIR=${LINUX_DIR} \
319 KERNEL_DIR=${LINUX_DIR} \
320 CROSS_COMPILE="${TARGET_CROSS}" \
321 CFLAGS_MODULE="-fhonour-copts" \
324 COMMON_ENV= CONFIG_SHELL='$(strip ${SHELL})' \
325 AUTOM4TE='${STAGING_HOST_DIR}/usr/bin/autom4te' \
326 M4='${STAGING_HOST_DIR}/usr/bin/m4' \
327 LIBTOOLIZE='${STAGING_HOST_DIR}/usr/bin/libtoolize -q' \
328 VERBOSE=1
330 TARGET_ENV= AR='$(TARGET_CROSS)ar' \
331 AS='$(TARGET_CROSS)as' \
332 LD='$(TARGET_CROSS)ld' \
333 NM='$(TARGET_CROSS)nm' \
334 RANLIB='$(TARGET_CROSS)ranlib' \
335 STRIP='$(TARGET_CROSS)strip' \
336 OBJCOPY='$(TARGET_CROSS)objcopy' \
337 CC='$(TARGET_CC)' \
338 GCC='$(TARGET_CC)' \
339 CXX='$(TARGET_CXX)' \
340 CROSS='$(TARGET_CROSS)' \
341 CROSS_COMPILE='$(TARGET_CROSS)' \
342 CFLAGS='$(TARGET_CFLAGS)' \
343 CXXFLAGS='$(TARGET_CXXFLAGS)' \
344 CPPFLAGS='$(TARGET_CPPFLAGS)' \
345 LDFLAGS='$(TARGET_LDFLAGS)' \
346 CC_FOR_BUILD='$(HOST_CC)' \
347 CXX_FOR_BUILD='$(HOST_CXX)' \
348 CPPFLAGS_FOR_BUILD='$(HOST_CPPFLAGS)' \
349 CFLAGS_FOR_BUILD='$(HOST_CFLAGS)' \
350 CXXFLAGS_FOR_BUILD='$(HOST_CXXFLAGS)' \
351 LDFLAGS_FOR_BUILD='$(HOST_LDFLAGS)' \
352 LIBS_FOR_BUILD='$(HOST_LIBS)'
354 HOST_ENV= CC='$(HOST_CC)' \
355 CXX='$(HOST_CXX)' \
356 CPPFLAGS='$(HOST_CPPFLAGS)' \
357 CFLAGS='$(HOST_CFLAGS)' \
358 CXXFLAGS='$(HOST_CXXFLAGS)' \
359 LDFLAGS='$(HOST_LDFLAGS)'
361 PKG_SUFFIX:= $(strip $(subst ",, $(ADK_PACKAGE_SUFFIX)))
363 ifeq ($(ADK_TARGET_PACKAGE_IPKG),y)
364 PKG_BUILD:= PATH='${HOST_PATH}' \
365 ${BASH} ${SCRIPT_DIR}/ipkg-build
366 PKG_INSTALL:= PATH='${HOST_PATH}' \
367 IPKG_TMP=$(BUILD_DIR)/tmp \
368 IPKG_INSTROOT=$(TARGET_DIR) \
369 IPKG_CONF_DIR=$(STAGING_TARGET_DIR)/etc \
370 IPKG_OFFLINE_ROOT=$(TARGET_DIR) \
371 BIN_DIR=$(STAGING_HOST_DIR)/usr/bin \
372 ${BASH} ${SCRIPT_DIR}/ipkg \
373 -force-defaults -force-depends install
374 PKG_STATE_DIR:= $(TARGET_DIR)/usr/lib/ipkg
375 endif
377 ifeq ($(ADK_TARGET_PACKAGE_OPKG),y)
378 PKG_BUILD:= PATH='${HOST_PATH}' \
379 ${BASH} ${SCRIPT_DIR}/ipkg-build
380 PKG_INSTALL:= PATH='${HOST_PATH}' \
381 IPKG_TMP=$(BUILD_DIR)/tmp \
382 IPKG_INSTROOT=$(TARGET_DIR) \
383 IPKG_CONF_DIR=$(STAGING_TARGET_DIR)/etc \
384 IPKG_OFFLINE_ROOT=$(TARGET_DIR) \
385 BIN_DIR=$(STAGING_HOST_DIR)/usr/bin \
386 ${BASH} ${SCRIPT_DIR}/ipkg \
387 -force-defaults -force-depends install
388 PKG_STATE_DIR:= $(TARGET_DIR)/usr/lib/opkg
389 endif
391 ifeq ($(ADK_TARGET_PACKAGE_TXZ),y)
392 PKG_BUILD:= PATH='${HOST_PATH}' ${BASH} ${SCRIPT_DIR}/tarpkg build
393 PKG_INSTALL:= PKG_INSTROOT='$(TARGET_DIR)' \
394 PATH='${HOST_PATH}' ${BASH} ${SCRIPT_DIR}/tarpkg install
395 PKG_STATE_DIR:= $(TARGET_DIR)/usr/lib/pkg
396 endif
398 RSTRIP:= PATH="$(TARGET_PATH)" prefix='${TARGET_CROSS}' ${BASH} ${SCRIPT_DIR}/rstrip.sh
400 STATCMD:=$(shell if stat -qs .>/dev/null 2>&1; then echo 'stat -f %z';else echo 'stat -c %s';fi)
402 EXTRACT_CMD= PATH='${HOST_PATH}'; mkdir -p ${WRKDIR}; \
403 cd ${WRKDIR} && \
404 for file in ${FULLDISTFILES}; do case $$file in \
405 *.cpio) \
406 cat $$file | cpio -i -d ;; \
407 *.tar) \
408 tar -xf $$file ;; \
409 *.cpio.Z | *.cpio.gz | *.cgz | *.mcz) \
410 gzip -dc $$file | cpio -i -d ;; \
411 *.tar.xz | *.txz) \
412 xz -dc $$file | tar -xf - ;; \
413 *.tar.Z | *.tar.gz | *.taz | *.tgz) \
414 gzip -dc $$file | tar -xf - ;; \
415 *.cpio.bz2 | *.cbz) \
416 bzip2 -dc $$file | cpio -i -d ;; \
417 *.tar.bz2 | *.tbz | *.tbz2) \
418 bzip2 -dc $$file | tar -xf - ;; \
419 *.zip) \
420 cat $$file | cpio -id -H zip ;; \
421 *.arm|*.jar|*.ids.gz) \
422 mkdir ${WRKBUILD}; cp $$file ${WRKBUILD} ;; \
423 *.bin) \
424 sh $$file --force --auto-accept ;; \
425 *) \
426 echo "Cannot extract '$$file'" >&2; \
427 false ;; \
428 esac; done
430 ifeq ($(ADK_VERBOSE),1)
431 QUIET:=
432 else
433 QUIET:= --quiet
434 endif
435 FETCH_CMD?= PATH='${HOST_PATH}' wget --timeout=$(ADK_WGET_TIMEOUT) -t 3 --no-check-certificate $(QUIET)
437 ifneq (,$(filter CYGWIN%,${OStype}))
438 EXEEXT:= .exe
439 endif
441 include $(ADK_TOPDIR)/mk/mirrors.mk