source: trunk/rules.mk @ 8558

Last change on this file since 8558 was 8558, checked in by nbd, 10 years ago

clean up recursive dependency handling, use timestamp.pl again, because it saves memory and execution time

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.8 KB
Line 
1#
2# Copyright (C) 2006 OpenWrt.org
3#
4# This is free software, licensed under the GNU General Public License v2.
5# See /LICENSE for more information.
6#
7
8ifeq ($(DUMP),)
9  -include $(TOPDIR)/.config
10endif
11include $(TOPDIR)/include/debug.mk
12include $(TOPDIR)/include/verbose.mk
13
14TMP_DIR:=$(TOPDIR)/tmp
15
16include $(TOPDIR)/include/target.mk
17
18export SHELL=/usr/bin/env bash -c '. $(TOPDIR)/include/shell.sh; eval "$$2"' --
19
20define qstrip
21$(strip $(subst ",,$(1)))
22endef
23#"))
24
25ARCH:=$(call qstrip,$(CONFIG_ARCH))
26TARGET_OPTIMIZATION:=$(call qstrip,$(CONFIG_TARGET_OPTIMIZATION))
27BUILD_SUFFIX:=$(call qstrip,$(CONFIG_BUILD_SUFFIX))
28GCCV:=$(call qstrip,$(CONFIG_GCC_VERSION))
29SUBDIR:=$(patsubst $(TOPDIR)/%,%,${CURDIR})
30
31OPTIMIZE_FOR_CPU:=$(ARCH)
32
33DL_DIR:=$(TOPDIR)/dl
34BIN_DIR:=$(TOPDIR)/bin
35INCLUDE_DIR:=$(TOPDIR)/include
36SCRIPT_DIR:=$(TOPDIR)/scripts
37BUILD_DIR_BASE:=$(TOPDIR)/build_dir
38BUILD_DIR:=$(BUILD_DIR_BASE)/$(ARCH)$(if $(BUILD_SUFFIX),_$(BUILD_SUFFIX))
39BUILD_DIR_HOST:=$(BUILD_DIR_BASE)/host
40BUILD_DIR_TOOLCHAIN:=$(BUILD_DIR_BASE)/toolchain-$(ARCH)
41STAGING_DIR:=$(TOPDIR)/staging_dir/$(ARCH)
42STAGING_DIR_HOST:=$(TOPDIR)/staging_dir/host
43TOOLCHAIN_DIR:=$(TOPDIR)/staging_dir/toolchain-$(ARCH)_gcc$(GCCV)
44PACKAGE_DIR:=$(BIN_DIR)/packages/$(TARGET)
45STAMP_DIR:=$(BUILD_DIR)/stamp
46STAMP_DIR_HOST=$(BUILD_DIR_HOST)/stamp
47TARGET_DIR:=$(BUILD_DIR)/root-$(BOARD)
48IPKG_STATE_DIR:=$(TARGET_DIR)/usr/lib/ipkg
49
50ifeq ($(CONFIG_NATIVE_TOOLCHAIN),)
51  -include $(TOOLCHAIN_DIR)/info.mk
52  REAL_GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-linux-uclibc
53  GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-linux
54  TARGET_CROSS?=$(OPTIMIZE_FOR_CPU)-linux-uclibc-
55endif
56
57TARGET_PATH:=$(TOOLCHAIN_DIR)/bin:$(STAGING_DIR_HOST)/bin:$(STAGING_DIR)/usr/bin:$(PATH)
58TARGET_CFLAGS:=$(TARGET_OPTIMIZATION) -fhonour-copts
59
60export PATH:=$(TARGET_PATH)
61
62LINUX_HEADERS_DIR:=$(BUILD_DIR_TOOLCHAIN)/linux
63
64HOSTCC:=gcc
65HOST_CFLAGS:=-O2 -I$(STAGING_DIR_HOST)/include
66HOST_LDFLAGS:=-L$(STAGING_DIR_HOST)/lib
67
68TARGET_CC:=$(TARGET_CROSS)gcc
69STRIP:=$(STAGING_DIR_HOST)/bin/sstrip
70PATCH:=$(SCRIPT_DIR)/patch-kernel.sh
71SED:=$(STAGING_DIR_HOST)/bin/sed -i -e
72CP:=cp -fpR
73
74INSTALL_BIN:=install -m0755
75INSTALL_DIR:=install -d -m0755
76INSTALL_DATA:=install -m0644
77INSTALL_CONF:=install -m0600
78
79ifneq ($(CONFIG_CCACHE),)
80  # FIXME: move this variable to a better location
81  export CCACHE_DIR=$(STAGING_DIR)/ccache
82  TARGET_CC:= ccache $(TARGET_CC)
83endif
84
85EXTRA_CPPFLAGS := -I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include
86EXTRA_CFLAGS := $(EXTRA_CPPFLAGS)
87EXTRA_LDFLAGS := -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib
88
89TARGET_CONFIGURE_OPTS:= \
90  AR=$(TARGET_CROSS)ar \
91  AS="$(TARGET_CC) -c $(TARGET_CFLAGS)" \
92  LD=$(TARGET_CROSS)ld \
93  NM=$(TARGET_CROSS)nm \
94  CC="$(TARGET_CC)" \
95  GCC="$(TARGET_CC)" \
96  CXX=$(TARGET_CROSS)g++ \
97  RANLIB=$(TARGET_CROSS)ranlib \
98  STRIP=$(TARGET_CROSS)strip \
99  OBJCOPY=$(TARGET_CROSS)objcopy \
100        OBJDUMP=$(TARGET_CROSS)objdump \
101        SIZE=$(TARGET_CROSS)size
102
103# strip an entire directory
104RSTRIP:= \
105  NM="$(TARGET_CROSS)nm" \
106  STRIP="$(STRIP)" \
107  STRIP_KMOD="$(TARGET_CROSS)strip --strip-unneeded --remove-section=.comment" \
108  $(SCRIPT_DIR)/rstrip.sh
109
110# where to build (and put) .ipk packages
111IPKG:= \
112  PATH="$(STAGING_DIR_HOST)/bin:$(PATH)" \
113  IPKG_TMP=$(TMP_DIR)/ipkg \
114  IPKG_INSTROOT=$(TARGET_DIR) \
115  IPKG_CONF_DIR=$(STAGING_DIR)/etc \
116  IPKG_OFFLINE_ROOT=$(TARGET_DIR) \
117  $(SCRIPT_DIR)/ipkg -force-defaults -force-depends
118
119# invoke ipkg-build with some default options
120IPKG_BUILD:= \
121  ipkg-build -c -o 0 -g 0
122
123ifeq ($(CONFIG_ENABLE_LOCALE),true)
124  DISABLE_NLS:=
125else
126  DISABLE_NLS:=--disable-nls
127endif
128
129ifneq ($(CONFIG_LARGEFILE),y)
130  DISABLE_LARGEFILE= --disable-largefile
131endif
132
133ifeq ($(CONFIG_TAR_VERBOSITY),y)
134  TAR_OPTIONS:=-xvf -
135else
136  TAR_OPTIONS:=-xf -
137endif
138
139define shvar
140V_$(subst .,_,$(subst -,_,$(subst /,_,$(1))))
141endef
142
143define shexport
144$(call shvar,$(1))=$$(call $(1))
145export $(call shvar,$(1))
146endef
147
148all:
149FORCE: ;
150.PHONY: FORCE
Note: See TracBrowser for help on using the repository browser.