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