1# 2# Copyright (C) 2006-2007 OpenWrt.org 3# 4# This is free software, licensed under the GNU General Public License v2. 5# See /LICENSE for more information. 6# 7 8ifneq ($(__rules_inc),1) 9__rules_inc=1 10 11ifeq ($(DUMP),) 12 -include $(TOPDIR)/.config 13endif 14include $(TOPDIR)/include/debug.mk 15include $(TOPDIR)/include/verbose.mk 16 17TMP_DIR:=$(TOPDIR)/tmp 18 19export SHELL=/usr/bin/env bash -c '. $(TOPDIR)/include/shell.sh; eval "$$2"' -- 20 21define qstrip 22$(strip $(subst ",,$(1))) 23endef 24#")) 25 26empty:= 27space:= $(empty) $(empty) 28merge=$(subst $(space),,$(1)) 29confvar=$(call merge,$(foreach v,$(1),$(if $($(v)),y,n))) 30 31_SINGLE=MAKEFLAGS=$(space) 32ARCH:=$(call qstrip,$(shell echo $(CONFIG_ARCH) | sed -e 's/i[3-9]86/i386/')) 33BOARD:=$(call qstrip,$(CONFIG_TARGET_BOARD)) 34TARGET_OPTIMIZATION:=$(call qstrip,$(CONFIG_TARGET_OPTIMIZATION)) 35BUILD_SUFFIX:=$(call qstrip,$(CONFIG_BUILD_SUFFIX)) 36GCCV:=$(call qstrip,$(CONFIG_GCC_VERSION)) 37SUBDIR:=$(patsubst $(TOPDIR)/%,%,${CURDIR}) 38 39OPTIMIZE_FOR_CPU=$(ARCH) 40 41DL_DIR:=$(if $(call qstrip,$(CONFIG_DOWNLOAD_FOLDER)),$(call qstrip,$(CONFIG_DOWNLOAD_FOLDER)),$(TOPDIR)/dl) 42BIN_DIR:=$(TOPDIR)/bin 43INCLUDE_DIR:=$(TOPDIR)/include 44SCRIPT_DIR:=$(TOPDIR)/scripts 45BUILD_DIR_BASE:=$(TOPDIR)/build_dir 46BUILD_DIR:=$(BUILD_DIR_BASE)/$(ARCH)$(if $(BUILD_SUFFIX),_$(BUILD_SUFFIX)) 47BUILD_DIR_HOST:=$(BUILD_DIR_BASE)/host 48BUILD_DIR_TOOLCHAIN:=$(BUILD_DIR_BASE)/toolchain-$(ARCH)_gcc$(GCCV) 49STAGING_DIR:=$(TOPDIR)/staging_dir/$(ARCH) 50STAGING_DIR_HOST:=$(TOPDIR)/staging_dir/host 51TOOLCHAIN_DIR:=/opt/brcm/hndtools-$(ARCH)-uclibc-$(GCCV) 52#TOOLCHAIN_DIR:=$(TOPDIR)/staging_dir/toolchain-$(ARCH)_gcc$(GCCV) 53PACKAGE_DIR:=$(BIN_DIR)/packages/$(ARCH) 54STAMP_DIR:=$(BUILD_DIR)/stamp 55STAMP_DIR_HOST=$(BUILD_DIR_HOST)/stamp 56TARGET_DIR:=$(BUILD_DIR)/root-$(BOARD) 57IPKG_STATE_DIR:=$(TARGET_DIR)/usr/lib/ipkg 58 59ifeq ($(CONFIG_NATIVE_TOOLCHAIN),) 60 -include $(TOOLCHAIN_DIR)/info.mk 61 REAL_GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-linux-uclibc$(if $(CONFIG_EABI_SUPPORT),gnueabi) 62 GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-linux 63 TARGET_CROSS:=$(if $(TARGET_CROSS),$(TARGET_CROSS),$(OPTIMIZE_FOR_CPU)-linux-uclibc$(if $(CONFIG_EABI_SUPPORT),gnueabi)-) 64endif 65 66TARGET_PATH:=$(TOOLCHAIN_DIR)/bin:$(STAGING_DIR_HOST)/bin:$(STAGING_DIR)/host/bin:$(PATH) 67TARGET_CFLAGS:=$(TARGET_OPTIMIZATION) -fhonour-copts 68TARGET_CPPFLAGS:=-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include 69TARGET_LDFLAGS:=-L$(TOOLCHAIN_DIR)/lib -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib 70 71ifeq ($(CONFIG_SOFT_FLOAT),y) 72SOFT_FLOAT_CONFIG_OPTION:=--with-float=soft 73TARGET_CFLAGS+=-msoft-float 74else 75SOFT_FLOAT_CONFIG_OPTION:= 76endif 77 78export PATH:=$(TARGET_PATH) 79export STAGING_DIR 80export GCC_HONOUR_COPTS:=0 81 82PKG_CONFIG:=$(STAGING_DIR_HOST)/bin/pkg-config 83 84export PKG_CONFIG 85 86ifeq ($(CONFIG_LINUX_2_4),y) 87 KERNEL:=2.4 88else 89 KERNEL:=2.6 90endif 91LINUX_HEADERS_DIR:=$(BUILD_DIR_TOOLCHAIN)/linux 92 93HOSTCC:=gcc 94HOST_CFLAGS:=-O2 -I$(STAGING_DIR_HOST)/include 95HOST_LDFLAGS:=-L$(STAGING_DIR_HOST)/lib 96 97TARGET_CC:=$(TARGET_CROSS)gcc 98#STRIP:=$(STAGING_DIR_HOST)/bin/sstrip 99STRIP:=strip 100PATCH:=$(SCRIPT_DIR)/patch-kernel.sh 101#SED:=$(STAGING_DIR_HOST)/bin/sed -i -e 102SED:=sed -i -e 103CP:=cp -fpR 104 105INSTALL_BIN:=install -m0755 106INSTALL_DIR:=install -d -m0755 107INSTALL_DATA:=install -m0644 108INSTALL_CONF:=install -m0600 109 110ifneq ($(CONFIG_CCACHE),) 111 # FIXME: move this variable to a better location 112 export CCACHE_DIR=$(STAGING_DIR)/ccache 113 TARGET_CC:= ccache $(TARGET_CC) 114endif 115 116TARGET_CONFIGURE_OPTS:= \ 117 AR=$(TARGET_CROSS)ar \ 118 AS="$(TARGET_CC) -c $(TARGET_CFLAGS)" \ 119 LD=$(TARGET_CROSS)ld \ 120 NM=$(TARGET_CROSS)nm \ 121 CC="$(TARGET_CC)" \ 122 GCC="$(TARGET_CC)" \ 123 CXX=$(TARGET_CROSS)g++ \ 124 RANLIB=$(TARGET_CROSS)ranlib \ 125 STRIP=$(TARGET_CROSS)strip \ 126 OBJCOPY=$(TARGET_CROSS)objcopy \ 127 OBJDUMP=$(TARGET_CROSS)objdump \ 128 SIZE=$(TARGET_CROSS)size 129 130# strip an entire directory 131ifneq ($(CONFIG_BUILD_DEVELOPER_SYSTEM),) 132 RSTRIP:=: 133else 134 RSTRIP:= \ 135 NM="$(TARGET_CROSS)nm" \ 136 STRIP="$(STRIP)" \ 137 STRIP_KMOD="$(TARGET_CROSS)strip --strip-unneeded --remove-section=.comment" \ 138 $(SCRIPT_DIR)/rstrip.sh 139endif 140 141ifeq ($(CONFIG_ENABLE_LOCALE),true) 142 DISABLE_NLS:= 143else 144 DISABLE_NLS:=--disable-nls 145endif 146 147ifneq ($(CONFIG_LARGEFILE),y) 148 DISABLE_LARGEFILE= --disable-largefile 149endif 150 151ifeq ($(CONFIG_TAR_VERBOSITY),y) 152 TAR_OPTIONS:=-xvf - 153else 154 TAR_OPTIONS:=-xf - 155endif 156 157define shvar 158V_$(subst .,_,$(subst -,_,$(subst /,_,$(1)))) 159endef 160 161define shexport 162$(call shvar,$(1))=$$(call $(1)) 163export $(call shvar,$(1)) 164endef 165 166# file extension 167ext=$(word $(words $(subst ., ,$(1))),$(subst ., ,$(1))) 168 169all: 170FORCE: ; 171.PHONY: FORCE 172 173endif #__rules_inc 174