1ifeq ($(SRCBASE),) 2 # ..../src/router/ 3 # (directory of the last (this) makefile) 4 export TOP := $(shell cd $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))) && pwd) 5 6 # ..../src/ 7 export SRCBASE := $(shell (cd $(TOP)/.. && pwd)) 8 export SRCBASEDIR := $(shell (cd $(TOP)/.. && pwd | sed 's/.*release\///g')) 9else 10 export TOP := $(SRCBASE)/router 11endif 12 13-include $(TOP)/.config 14include $(SRCBASE)/profile.mak 15include $(SRCBASE)/target.mak 16include $(SRCBASE)/platform.mak 17 18ifeq ($(or $(PLATFORM),$(CROSS_COMPILE),$(CONFIGURE),$(ARCH),$(HOST)),) 19$(error Define Platform-specific definitions in platform.mak) 20endif 21 22export BUILD := $(shell (gcc -dumpmachine)) 23export HOSTCC := gcc 24 25export PLT := $(ARCH) 26export TOOLCHAIN := $(shell cd $(dir $(shell which $(CROSS_COMPILE)gcc))/.. && pwd -P) 27 28export CC := $(CROSS_COMPILE)gcc 29export GCC := $(CROSS_COMPILE)gcc 30export CXX := $(CROSS_COMPILE)g++ 31export AR := $(CROSS_COMPILE)ar 32export AS := $(CROSS_COMPILE)as 33export LD := $(CROSS_COMPILE)ld 34export NM := $(CROSS_COMPILE)nm 35export OBJCOPY := $(CROSS_COMPILE)objcopy 36export OBJDUMP := $(CROSS_COMPILE)objdump 37export RANLIB := $(CROSS_COMPILE)ranlib 38export READELF ?= $(CROSS_COMPILE)readelf 39export STRIPX := $(CROSS_COMPILE)strip -x 40ifeq ($(RTCONFIG_BCMARM),y) 41export STRIP := $(CROSS_COMPILE)strip 42else 43export STRIP := $(CROSS_COMPILE)strip -R .note -R .comment 44endif 45export SIZE := $(CROSS_COMPILE)size 46 47# Determine kernel version 48SCMD=sed -e 's,[^=]*=[ ]*\([^ ]*\).*,\1,' 49KVERSION:= $(shell grep '^VERSION[ ]*=' $(LINUXDIR)/Makefile|$(SCMD)) 50KPATCHLEVEL:= $(shell grep '^PATCHLEVEL[ ]*=' $(LINUXDIR)/Makefile|$(SCMD)) 51KSUBLEVEL:= $(shell grep '^SUBLEVEL[ ]*=' $(LINUXDIR)/Makefile|$(SCMD)) 52KEXTRAVERSION:= $(shell grep '^EXTRAVERSION[ ]*=' $(LINUXDIR)/Makefile|$(SCMD)) 53LINUX_KERNEL=$(KVERSION).$(KPATCHLEVEL).$(KSUBLEVEL)$(KEXTRAVERSION) 54LINUX_KERNEL_VERSION=$(shell expr $(KVERSION) \* 65536 + $(KPATCHLEVEL) \* 256 + $(KSUBLEVEL)) 55ifeq ($(LINUX_KERNEL),) 56$(error Empty LINUX_KERNEL variable) 57endif 58export LINUX_KERNEL 59 60 61include $(SRCBASE)/target.mak 62 63export LIBDIR := $(TOOLCHAIN)/lib 64export USRLIBDIR := $(TOOLCHAIN)/usr/lib 65 66export PLATFORMDIR := $(TOP)/$(PLATFORM) 67export INSTALLDIR := $(PLATFORMDIR)/install 68export TARGETDIR := $(PLATFORMDIR)/target 69export STAGEDIR := $(PLATFORMDIR)/stage 70export PKG_CONFIG_SYSROOT_DIR := $(STAGEDIR) 71export PKG_CONFIG_PATH := $(STAGEDIR)/usr/lib/pkgconfig:$(STAGEDIR)/etc/lib/pkgconfig 72 73export EXTRACFLAGS += -DLINUX_KERNEL_VERSION=$(LINUX_KERNEL_VERSION) $(if $(STAGING_DIR),--sysroot=$(STAGING_DIR)) 74 75CPTMP = @[ -d $(TOP)/dbgshare ] && cp $@ $(TOP)/dbgshare/ || true 76 77 78ifeq ($(CONFIG_RALINK),y) 79# Move to platform.mak 80else ifeq ($(CONFIG_QCA),y) 81# Move to platform.mak 82else # CONFIG_RALINK != y && CONFIG_QCA != y 83# Broadcom SoC 84ifeq ($(CONFIG_LINUX26),y) 85ifeq ($(RTCONFIG_BCMWL6),y) 86ifneq ($(RTCONFIG_BCMARM),y) 87# e.g. RT-AC66U 88export KERNELCC := /opt/brcm/K26/hndtools-mipsel-linux-uclibc-4.2.3/bin/mipsel-linux-uclibc-gcc 89else # RTCONFIG_BCMARM = y 90export KERNELCC := $(CC) 91endif 92else # RTCONFIG_BCMWL6 != y 93export KERNELCC := $(CC) 94endif 95else # CONFIG_LINUX26 != y 96export KERNELCC := $(CC)-3.4.6 97endif 98 99ifeq ($(RTCONFIG_BCMWL6),y) 100ifneq ($(RTCONFIG_BCMARM),y) 101# e.g. RT-AC66U 102export KERNELLD := /opt/brcm/K26/hndtools-mipsel-linux-uclibc-4.2.3/bin/mipsel-linux-uclibc-ld 103else # RTCONFIG_BCMARM = y 104export KERNELLD := $(LD) 105endif 106else # RTCONFIG_BCMWL6 != y 107export KERNELLD := $(LD) 108endif 109endif 110 111ifeq ($(KERNELCC),) 112export KERNELCC := $(CC) 113endif 114ifeq ($(KERNELLD),) 115export KERNELLD := $(LD) 116endif 117 118# ifneq ($(STATIC),1) 119# SIZECHECK = @$(SRCBASE)/btools/sizehistory.pl $@ $(TOMATO_PROFILE_L)_$(notdir $@) 120# else 121SIZECHECK = @$(SIZE) $@ 122# endif 123