summaryrefslogtreecommitdiff
path: root/mk/vars.mk
blob: b3215a24c61414626cd74bc0fb6256f9ae15ed9f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# This file is part of the OpenADK project. OpenADK is copyrighted
# material, please see the LICENCE file in the top-level directory.

CP=			cp -fpR
INSTALL_DIR=		install -d -m0755
INSTALL_DATA=		install -m0644
INSTALL_BIN=		install -m0755
INSTALL_SCRIPT=		install -m0755
MAKEFLAGS=		$(EXTRA_MAKEFLAGS)
BUILD_USER=		$(shell id -un)
BUILD_GROUP=		$(shell id -gn)
ifneq ($(ADK_DEBUG),)
TARGET_DEBUGGING:=	-g3 -fno-omit-frame-pointer
else
TARGET_DEBUGGING:=	-fomit-frame-pointer
endif
ifeq ($(ADK_SSP),y)
TARGET_SSP:=		-fstack-protector-all
endif
TARGET_CFLAGS:=		$(TARGET_OPTIMIZATION) $(TARGET_CFLAGS_ARCH) $(TARGET_DEBUGGING) $(TARGET_SSP)

BASE_DIR:=		$(TOPDIR)
DISTDIR?=		${BASE_DIR}/dl
BUILD_DIR:=		${BASE_DIR}/build_${CPU_ARCH}
BUILD_DIR_PFX:=		$(BASE_DIR)/build_*
STAGING_PARENT:=	${BASE_DIR}/cross_${CPU_ARCH}
STAGING_PARENT_PFX:=	${BASE_DIR}/cross_*
STAGING_TOOLS:=		${STAGING_PARENT}/host
STAGING_DIR:=		${STAGING_PARENT}/target
TOOLCHAIN_BUILD_DIR=	$(BASE_DIR)/toolchain_build_${CPU_ARCH}
TOOLCHAIN_BUILD_DIR_PFX=$(BASE_DIR)/toolchain_build_*
TOOLS_BUILD_DIR=	$(BASE_DIR)/tools_build
SCRIPT_DIR:=		$(BASE_DIR)/scripts
BIN_DIR:=		$(BASE_DIR)/bin_${DEVICE}
BIN_DIR_PFX:=		$(BASE_DIR)/bin_*
PACKAGE_DIR:=		$(BIN_DIR)/packages
TARGET_DIR:=		$(BASE_DIR)/root_${DEVICE}
TARGET_DIR_PFX:=	$(BASE_DIR)/root_*
TARGET_PATH=		${SCRIPT_DIR}:${STAGING_TOOLS}/bin:${STAGING_DIR}/scripts:${_PATH}
REAL_GNU_TARGET_NAME=	$(CPU_ARCH)-linux-$(ADK_TARGET_SUFFIX)
GNU_TARGET_NAME=	$(CPU_ARCH)-linux
TARGET_CROSS:=		$(STAGING_TOOLS)/bin/$(CPU_ARCH)-linux-$(ADK_TARGET_SUFFIX)-
TOOLCHAIN_SYSROOT:=	$(TOOLCHAIN_BUILD_DIR)/libc_dev
TARGET_COMPILER_PREFIX?=${TARGET_CROSS}
TARGET_CC:=		${TARGET_COMPILER_PREFIX}gcc
TARGET_CXX:=		${TARGET_COMPILER_PREFIX}g++
TARGET_CPPFLAGS+=	-I${STAGING_DIR}/usr/include
TARGET_LDFLAGS+=	-Wl,-O2
PATCH=			${BASH} $(SCRIPT_DIR)/patch.sh
SED:=			sed -i -e
LINUX_DIR:=		$(BUILD_DIR)/linux

TARGET_CONFIGURE_OPTS=	PATH='${TARGET_PATH}' \
			AR=$(TARGET_CROSS)ar \
			AS=$(TARGET_CROSS)as \
			LD=$(TARGET_CROSS)ld \
			NM=$(TARGET_CROSS)nm \
			CC="$(TARGET_CC)" \
			GCC="$(TARGET_CC)" \
			CXX="$(TARGET_CXX)" \
			RANLIB=$(TARGET_CROSS)ranlib
HOST_CONFIGURE_OPTS=	CC_FOR_BUILD='${HOSTCC}' \
			CFLAGS_FOR_BUILD='${HOSTCFLAGS}' \
			CPPFLAGS_FOR_BUILD='${HOSTCPPFLAGS}' \
			LDFLAGS_FOR_BUILD='${HOSTLDFLAGS}'

# invoke ipkg-build with some default options
IPKG_BUILD:=		PATH='${TARGET_PATH}' ${BASH} \
			    ${TOPDIR}/scripts/ipkg-build -c -o 0 -g 0
# where to build (and put) .ipk packages
IPKG_TARGET_DIR:=	$(PACKAGE_DIR)
IPKG:=			IPKG_TMP=$(BUILD_DIR)/tmp \
			IPKG_INSTROOT=$(TARGET_DIR) \
			IPKG_CONF_DIR=$(STAGING_DIR)/etc \
			IPKG_OFFLINE_ROOT=$(TARGET_DIR) \
			${BASH} ${SCRIPT_DIR}/ipkg -force-defaults -force-depends
IPKG_STATE_DIR:=	$(TARGET_DIR)/usr/lib/ipkg

ifeq ($(ADK_NATIVE),y)
RSTRIP:=		prefix=' ' ${BASH} ${SCRIPT_DIR}/rstrip.sh
else
RSTRIP:=		prefix='${TARGET_CROSS}' ${BASH} ${SCRIPT_DIR}/rstrip.sh
endif

EXTRACT_CMD=		mkdir -p ${WRKDIR}; \
			cd ${WRKDIR} && \
			for file in ${FULLDISTFILES}; do case $$file in \
			*.cpio) \
				cat $$file | cpio -i -d --quiet ;; \
			*.tar) \
				tar -xf $$file ;; \
			*.cpio.Z | *.cpio.gz | *.cgz | *.mcz) \
				gzip -dc $$file | cpio -i -d --quiet ;; \
			*.tar.Z | *.tar.gz | *.taz | *.tgz) \
				gzip -dc $$file | tar -xf - ;; \
			*.cpio.bz2 | *.cbz) \
				bzip2 -dc $$file | cpio -i -d --quiet ;; \
			*.tar.bz2 | *.tbz | *.tbz2) \
				bzip2 -dc $$file | tar -xf - ;; \
			*.zip) \
				unzip -qd ${WRKDIR} $$file ;; \
			*) \
				echo "Cannot extract '$$file'" >&2; \
				false ;; \
			esac; done

ifeq ($(VERBOSE),1)
QUIET:=
else
QUIET:=			--quiet
endif
FETCH_CMD?=		wget -t1 --timeout=30 $(QUIET)

include $(TOPDIR)/mk/mirrors.mk