| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420 | # This file is part of the OpenADK project. OpenADK is copyrighted# material, please see the LICENCE file in the top-level directory.CP=			cp -fpRINSTALL_DIR=		install -d -m0755INSTALL_DATA=		install -m0644INSTALL_BIN=		install -m0755INSTALL_SCRIPT=		install -m0755MAKEFLAGS=		$(EXTRA_MAKEFLAGS)BUILD_USER=		$(shell id -un)BUILD_GROUP=		$(shell id -gn)ADK_SUFFIX:=		${ADK_TARGET_SYSTEM}_${ADK_TARGET_LIBC}_${ADK_TARGET_CPU_ARCH}ifneq ($(ADK_TARGET_FLOAT),)ADK_SUFFIX:=		$(ADK_SUFFIX)_$(ADK_TARGET_FLOAT)endififneq ($(ADK_TARGET_ABI),)ADK_SUFFIX:=		$(ADK_SUFFIX)_$(ADK_TARGET_ABI)endififeq ($(ADK_TARGET_WITH_MMU),)ADK_SUFFIX:=		$(ADK_SUFFIX)_nommuendif# some global dirsBASE_DIR:=		$(ADK_TOPDIR)ifeq ($(ADK_DL_DIR),)DL_DIR?=		$(BASE_DIR)/dlelseDL_DIR?=		$(ADK_DL_DIR)endifSCRIPT_DIR:=		$(BASE_DIR)/scriptsSTAGING_HOST_DIR:=	${BASE_DIR}/host_${GNU_HOST_NAME}HOST_BUILD_DIR:=	${BASE_DIR}/host_build_${GNU_HOST_NAME}TOOLCHAIN_DIR:=		${BASE_DIR}/toolchain_${ADK_SUFFIX}# dirs for cleandirFW_DIR_PFX:=		$(BASE_DIR)/firmwareBUILD_DIR_PFX:=		$(BASE_DIR)/build_*STAGING_PKG_DIR_PFX:=	${BASE_DIR}/pkg_*STAGING_TARGET_DIR_PFX:=${BASE_DIR}/target_*TOOLCHAIN_DIR_PFX=	$(BASE_DIR)/toolchain_*STAGING_HOST_DIR_PFX:=	${BASE_DIR}/host_*TARGET_DIR_PFX:=	$(BASE_DIR)/root_*TARGET_DIR:=		$(BASE_DIR)/root_${ADK_SUFFIX}FW_DIR:=		$(BASE_DIR)/firmware/${ADK_SUFFIX}BUILD_DIR:=		${BASE_DIR}/build_${ADK_SUFFIX}STAGING_TARGET_DIR:=	${BASE_DIR}/target_${ADK_SUFFIX}STAGING_PKG_DIR:=	${BASE_DIR}/pkg_${ADK_SUFFIX}STAGING_HOST2TARGET:=	../../target_${ADK_SUFFIX}TOOLCHAIN_BUILD_DIR=	$(BASE_DIR)/toolchain_build_${ADK_SUFFIX}PACKAGE_DIR:=		$(FW_DIR)/packagesSCRIPT_TARGET_DIR:=	${STAGING_TARGET_DIR}/scripts# PATH variablesTARGET_PATH=		${SCRIPT_DIR}:${STAGING_TARGET_DIR}/scripts:${TOOLCHAIN_DIR}/usr/bin:${STAGING_HOST_DIR}/usr/bin:${_PATH}HOST_PATH=		${SCRIPT_DIR}:${TOOLCHAIN_DIR}/usr/bin:${STAGING_HOST_DIR}/usr/bin:${_PATH}AUTOTOOL_PATH=		${TOOLCHAIN_DIR}/usr/bin:${STAGING_HOST_DIR}/usr/bin:${STAGING_TARGET_DIR}/scripts:${_PATH}ifeq ($(ADK_DISABLE_HONOUR_CFLAGS),)GCC_CHECK:=		GCC_HONOUR_COPTS=2elseGCC_CHECK:=endififeq ($(ADK_TARGET_UCLINUX),y)ADK_TARGET_LINUXTYPE:=	uclinuxelseADK_TARGET_LINUXTYPE:=	linuxendifGNU_TARGET_NAME:=	$(ADK_TARGET_CPU_ARCH)-$(ADK_VENDOR)-$(ADK_TARGET_LINUXTYPE)-$(ADK_TARGET_SUFFIX)ifeq ($(ADK_TARGET_ARCH_C6X),y)GNU_TARGET_NAME:=	$(ADK_TARGET_CPU_ARCH)-$(ADK_TARGET_LINUXTYPE)endifTARGET_CROSS:=		$(TOOLCHAIN_DIR)/usr/bin/$(GNU_TARGET_NAME)-TARGET_COMPILER_PREFIX?=${TARGET_CROSS}CONFIGURE_TRIPLE:=	--build=${GNU_HOST_NAME} \			--host=${GNU_TARGET_NAME} \			--target=${GNU_TARGET_NAME}ifneq ($(strip ${ADK_USE_CCACHE}),)TARGET_COMPILER_PREFIX=$(STAGING_HOST_DIR)/usr/bin/ccache ${TARGET_CROSS}endif# target toolsTARGET_CC:=		${TARGET_COMPILER_PREFIX}gcc# use a gcc wrapper for coldfire/arm uclinux supportifeq ($(ADK_TARGET_UCLINUX),y)ifeq ($(ADK_TARGET_ARCH_M68K),y)TARGET_CC:=		adk-uclinux-gccendififeq ($(ADK_TARGET_ARCH_ARM),y)TARGET_CC:=		adk-uclinux-gccendifendifTARGET_CXX:=		${TARGET_COMPILER_PREFIX}g++TARGET_LD:=		${TARGET_COMPILER_PREFIX}ldTARGET_AR:=		${TARGET_COMPILER_PREFIX}arTARGET_RANLIB:=		${TARGET_COMPILER_PREFIX}ranlibifneq ($(ADK_TARGET_ABI_CFLAGS),)TARGET_CC+=		$(ADK_TARGET_ABI_CFLAGS)TARGET_CXX+=		$(ADK_TARGET_ABI_CFLAGS)endifTARGET_CPPFLAGS:=	TARGET_CFLAGS:=		-fwrapv -fno-ident -fhonour-coptsTARGET_CXXFLAGS:=	-fwrapv -fno-ident -fhonour-coptsTARGET_LDFLAGS:=	-L$(STAGING_TARGET_DIR)/lib -L$(STAGING_TARGET_DIR)/usr/lib \			-Wl,-O1 -Wl,-rpath -Wl,/usr/lib \			-Wl,-rpath-link -Wl,${STAGING_TARGET_DIR}/usr/lib# for archiectures where gcc --with-cpu matches -mcpu=ifneq ($(ADK_TARGET_GCC_CPU),)ifeq ($(ADK_CPU_ARC700),y)TARGET_CFLAGS+=		-mcpu=ARC700TARGET_CXXFLAGS+=	-mcpu=ARC700elseTARGET_CFLAGS+=		-mcpu=$(ADK_TARGET_GCC_CPU)TARGET_CXXFLAGS+=	-mcpu=$(ADK_TARGET_GCC_CPU)endifendif# for archiectures where gcc --with-arch matches -march=ifneq ($(ADK_TARGET_GCC_ARCH),)TARGET_CFLAGS+=		-march=$(ADK_TARGET_GCC_ARCH)TARGET_CXXFLAGS+=	-march=$(ADK_TARGET_GCC_ARCH)endififneq ($(ADK_TARGET_CPU_FLAGS),)TARGET_CFLAGS+=		$(ADK_TARGET_CPU_FLAGS)TARGET_CXXFLAGS+=	$(ADK_TARGET_CPU_FLAGS)endififneq ($(ADK_TARGET_FPU),)TARGET_CFLAGS+=		-mfpu=$(ADK_TARGET_FPU)TARGET_CXXFLAGS+=	-mfpu=$(ADK_TARGET_FPU)endififneq ($(ADK_TARGET_FLOAT),)ifeq ($(ADK_TARGET_ARCH_ARM),y)TARGET_CFLAGS+=		-mfloat-abi=$(ADK_TARGET_FLOAT)TARGET_CXXFLAGS+=	-mfloat-abi=$(ADK_TARGET_FLOAT)endififeq ($(ADK_TARGET_ARCH_MIPS),y)TARGET_CFLAGS+=		-m$(ADK_TARGET_FLOAT)-floatTARGET_CXXFLAGS+=	-m$(ADK_TARGET_FLOAT)-floatendifendififeq ($(ADK_TARGET_ARCH_ARM),y)ifeq ($(ADK_TARGET_BINFMT_FLAT),y)TARGET_CFLAGS+=		-Wl,-elf2fltTARGET_CXXFLAGS+=	-Wl,-elf2fltendifendififeq ($(ADK_TARGET_ARCH_BFIN),y)ifeq ($(ADK_TARGET_BINFMT_FLAT),y)TARGET_LDFLAGS+=	-elf2fltendififeq ($(ADK_TARGET_BINFMT_FLAT_SEP_DATA),y)TARGET_CFLAGS+=		-msep-dataTARGET_CXXFLAGS+=	-msep-dataendifendififeq ($(ADK_TARGET_ARCH_M68K),y)ifeq ($(ADK_TARGET_BINFMT_FLAT),y)TARGET_LDFLAGS+=	-elf2fltendififeq ($(ADK_TARGET_BINFMT_FLAT_SEP_DATA),y)TARGET_CFLAGS+=		-msep-dataTARGET_CXXFLAGS+=	-msep-dataendifendififeq ($(ADK_TARGET_LIB_MUSL),y)# use -static-libgcc by default only for muslTARGET_CFLAGS+=		-static-libgccTARGET_CXXFLAGS+=	-static-libgccTARGET_LDFLAGS+=	-static-libgccendif# security optimization, see http://www.akkadia.org/drepper/dsohowto.pdfifneq ($(ADK_TARGET_USE_LD_RELRO),)TARGET_LDFLAGS+=	-Wl,-z,relroendififneq ($(ADK_TARGET_USE_LD_BIND_NOW),)TARGET_LDFLAGS+=	-Wl,-z,nowendif# needed for musl ppc ifeq ($(ADK_TARGET_ARCH_PPC),y)ifeq ($(ADK_TARGET_LIB_MUSL),y)TARGET_LDFLAGS+=	-Wl,--secure-pltendifendififeq ($(ADK_TARGET_USE_STATIC_LIBS),y)TARGET_CFLAGS+=		-staticTARGET_CXXFLAGS+=	-staticTARGET_LDFLAGS+=	-staticendififneq ($(ADK_TARGET_USE_SSP),)TARGET_CFLAGS+=		-fstack-protector-all --param=ssp-buffer-size=4TARGET_CXXFLAGS+=	-fstack-protector-all --param=ssp-buffer-size=4TARGET_LDFLAGS+=	-fstack-protector-allendififneq ($(ADK_TARGET_USE_LD_GC),)TARGET_CFLAGS+=		-fdata-sections -ffunction-sectionsTARGET_CXXFLAGS+=	-fdata-sections -ffunction-sectionsTARGET_LDFLAGS+=	-Wl,--gc-sectionsendififneq ($(ADK_TARGET_USE_LTO),)TARGET_CFLAGS+=		-fltoTARGET_CXXFLAGS+=	-fltoTARGET_LDFLAGS+=	-fltoendif# performance optimization, see http://www.akkadia.org/drepper/dsohowto.pdfifneq ($(ADK_TARGET_USE_GNU_HASHSTYLE),)TARGET_LDFLAGS+=	-Wl,--hash-style=gnuendififeq ($(ADK_TARGET_ARCH_MICROBLAZE),y)TARGET_CFLAGS+=		-mxl-barrel-shiftTARGET_CXXFLAGS+=	-mxl-barrel-shiftendififeq ($(ADK_TARGET_ARCH_XTENSA),y)TARGET_CFLAGS+=		-mlongcalls -mtext-section-literalsTARGET_CXXFLAGS+=	-mlongcalls -mtext-section-literalsendif# add configured cflags for optimizationTARGET_CFLAGS+=		$(ADK_TARGET_CFLAGS_OPT)TARGET_CXXFLAGS+=	$(ADK_TARGET_CFLAGS_OPT)# always add debug informationTARGET_CFLAGS+=		-g3TARGET_CXXFLAGS+=	-g3ifneq ($(ADK_DEBUG),)TARGET_CFLAGS+=		-fno-omit-frame-pointerTARGET_CXXFLAGS+=	-fno-omit-frame-pointerTARGET_CFLAGS+=		-funwind-tables -fasynchronous-unwind-tablesTARGET_CXXFLAGS+=	-funwind-tables -fasynchronous-unwind-tableselseTARGET_CPPFLAGS+=	-DNDEBUGTARGET_CFLAGS+=		-fomit-frame-pointerTARGET_CXXFLAGS+=	-fomit-frame-pointer# stop generating eh_frame stuffTARGET_CFLAGS+=		-fno-unwind-tables -fno-asynchronous-unwind-tablesTARGET_CXXFLAGS+=	-fno-unwind-tables -fno-asynchronous-unwind-tablesendififeq ($(ADK_TARGET_ARCH_ARM),y)ifeq ($(ADK_TARGET_CPU_WITH_NEON),y)TARGET_CFLAGS+=		-funsafe-math-optimizationsTARGET_CXXFLAGS+=	-funsafe-math-optimizationsendififeq ($(ADK_TARGET_ARCH_ARM_WITH_THUMB),y)TARGET_CFLAGS+=		-mthumb -Wa,-mimplicit-it=thumbTARGET_CXXFLAGS+=	-mthumb -Wa,-mimplicit-it=thumbelseTARGET_CFLAGS+=		-marmTARGET_CXXFLAGS+=	-marmendifendif# host compiler and linker flagsHOST_CPPFLAGS:=		-I$(STAGING_HOST_DIR)/usr/includeHOST_CFLAGS:=		-O0 -g0HOST_CXXFLAGS:=		-O0 -g0HOST_LDFLAGS:=		-L$(STAGING_HOST_DIR)/usr/lib -Wl,-rpath -Wl,${STAGING_HOST_DIR}/usr/libPATCH=			PATH='${HOST_PATH}' ${BASH} $(SCRIPT_DIR)/patch.shPATCHP0=		PATH='${HOST_PATH}' patch -p0ifeq ($(ADK_STATIC_TOOLCHAIN),y)HOST_STATIC_CFLAGS:=   -static -Wl,-staticHOST_STATIC_CXXFLAGS:= -static -Wl,-staticHOST_STATIC_LDFLAGS:=  -Wl,-staticHOST_STATIC_LLDFLAGS:= -all-staticendifSED:=			PATH='${HOST_PATH}' sed -i -eXZ:=			PATH='${HOST_PATH}' xzLINUX_DIR:=		$(BUILD_DIR)/linuxKERNEL_MODULE_FLAGS:=	ARCH=${ADK_TARGET_ARCH} \			PREFIX=/usr \			KERNEL_PATH=${LINUX_DIR} \			KERNELDIR=${LINUX_DIR} \			KERNEL_DIR=${LINUX_DIR} \			CROSS_COMPILE="${TARGET_CROSS}" \			CFLAGS_MODULE="-fhonour-copts" \			V=1COMMON_ENV=		CONFIG_SHELL='$(strip ${SHELL})' \			AUTOM4TE='${STAGING_HOST_DIR}/usr/bin/autom4te' \			M4='${STAGING_HOST_DIR}/usr/bin/m4' \			LIBTOOLIZE='${STAGING_HOST_DIR}/usr/bin/libtoolize -q' \			VERBOSE=1			TARGET_ENV=		AR='$(TARGET_CROSS)ar' \			AS='$(TARGET_CROSS)as' \			LD='$(TARGET_CROSS)ld' \			NM='$(TARGET_CROSS)nm' \			RANLIB='$(TARGET_CROSS)ranlib' \			STRIP='$(TARGET_CROSS)strip' \			OBJCOPY='$(TARGET_CROSS)objcopy' \			CC='$(TARGET_CC)' \			GCC='$(TARGET_CC)' \			CXX='$(TARGET_CXX)' \			CROSS='$(TARGET_CROSS)' \			CROSS_COMPILE='$(TARGET_CROSS)' \			CFLAGS='$(TARGET_CFLAGS)' \			CXXFLAGS='$(TARGET_CXXFLAGS)' \			CPPFLAGS='$(TARGET_CPPFLAGS)' \			LDFLAGS='$(TARGET_LDFLAGS)' \			CC_FOR_BUILD='$(HOST_CC)' \			CXX_FOR_BUILD='$(HOST_CXX)' \			CPPFLAGS_FOR_BUILD='$(HOST_CPPFLAGS)' \			CFLAGS_FOR_BUILD='$(HOST_CFLAGS)' \			CXXFLAGS_FOR_BUILD='$(HOST_CXXFLAGS)' \			LDFLAGS_FOR_BUILD='$(HOST_LDFLAGS)' \			LIBS_FOR_BUILD='$(HOST_LIBS)'HOST_ENV=		CC='$(HOST_CC)' \			CXX='$(HOST_CXX)' \			CPPFLAGS='$(HOST_CPPFLAGS)' \			CFLAGS='$(HOST_CFLAGS)' \			CXXFLAGS='$(HOST_CXXFLAGS)' \			LDFLAGS='$(HOST_LDFLAGS)'PKG_SUFFIX:=		$(strip $(subst ",, $(ADK_PACKAGE_SUFFIX)))ifeq ($(ADK_TARGET_PACKAGE_IPKG),y)PKG_BUILD:=		PATH='${HOST_PATH}' \			${BASH} ${SCRIPT_DIR}/ipkg-buildPKG_INSTALL:=		PATH='${HOST_PATH}' \			IPKG_TMP=$(BUILD_DIR)/tmp \			IPKG_INSTROOT=$(TARGET_DIR) \			IPKG_CONF_DIR=$(STAGING_TARGET_DIR)/etc \			IPKG_OFFLINE_ROOT=$(TARGET_DIR) \			BIN_DIR=$(STAGING_HOST_DIR)/usr/bin \			${BASH} ${SCRIPT_DIR}/ipkg \			-force-defaults -force-depends installPKG_STATE_DIR:=		$(TARGET_DIR)/usr/lib/ipkgendififeq ($(ADK_TARGET_PACKAGE_OPKG),y)PKG_BUILD:=		PATH='${HOST_PATH}' \			${BASH} ${SCRIPT_DIR}/ipkg-buildPKG_INSTALL:=		PATH='${HOST_PATH}' \			IPKG_TMP=$(BUILD_DIR)/tmp \			IPKG_INSTROOT=$(TARGET_DIR) \			IPKG_CONF_DIR=$(STAGING_TARGET_DIR)/etc \			IPKG_OFFLINE_ROOT=$(TARGET_DIR) \			BIN_DIR=$(STAGING_HOST_DIR)/usr/bin \			${BASH} ${SCRIPT_DIR}/ipkg \			-force-defaults -force-depends installPKG_STATE_DIR:=		$(TARGET_DIR)/usr/lib/opkgendififeq ($(ADK_TARGET_PACKAGE_TXZ),y)PKG_BUILD:=		PATH='${HOST_PATH}' ${BASH} ${SCRIPT_DIR}/tarpkg buildPKG_INSTALL:=		PKG_INSTROOT='$(TARGET_DIR)' \			PATH='${HOST_PATH}' ${BASH} ${SCRIPT_DIR}/tarpkg installPKG_STATE_DIR:=		$(TARGET_DIR)/usr/lib/pkgendifRSTRIP:=		PATH="$(TARGET_PATH)" prefix='${TARGET_CROSS}' ${BASH} ${SCRIPT_DIR}/rstrip.shSTATCMD:=$(shell if stat -qs .>/dev/null 2>&1; then echo 'stat -f %z';else echo 'stat -c %s';fi)	EXTRACT_CMD=		PATH='${HOST_PATH}'; mkdir -p ${WRKDIR}; \			cd ${WRKDIR} && \			for file in ${FULLDISTFILES}; do case $$file in \			*.cpio) \				cat $$file | cpio -i -d ;; \			*.tar) \				tar -xf $$file ;; \			*.cpio.Z | *.cpio.gz | *.cgz | *.mcz) \				gzip -dc $$file | cpio -i -d ;; \			*.tar.xz | *.txz) \				xz -dc $$file | tar -xf - ;; \			*.tar.Z | *.tar.gz | *.taz | *.tgz) \				gzip -dc $$file | tar -xf - ;; \			*.cpio.bz2 | *.cbz) \				bzip2 -dc $$file | cpio -i -d ;; \			*.tar.bz2 | *.tbz | *.tbz2) \				bzip2 -dc $$file | tar -xf - ;; \			*.zip) \				cat $$file | cpio -id -H zip ;; \			*.arm|*.jar|*.ids.gz) \				mkdir ${WRKBUILD}; cp $$file ${WRKBUILD} ;; \			*.bin) \				sh $$file --force --auto-accept ;; \			*) \				echo "Cannot extract '$$file'" >&2; \				false ;; \			esac; doneifeq ($(ADK_VERBOSE),1)QUIET:=elseQUIET:=			--quietendifFETCH_CMD?=		PATH='${HOST_PATH}' wget --timeout=$(ADK_WGET_TIMEOUT) -t 3 --no-check-certificate $(QUIET)ifneq (,$(filter CYGWIN%,${OStype}))EXEEXT:=		.exeendifinclude $(ADK_TOPDIR)/mk/mirrors.mk
 |