source: trunk/rules.mk @ 8558

Last change on this file since 8558 was 8558, checked in by nbd, 9 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.