source: freewrt/rules.mk@ ac4f67e

freewrt_1_0 freewrt_2_0
Last change on this file since ac4f67e was ac4f67e, checked in by Thorsten Glaser <tg@…>, 19 years ago

move the export line from prereq.mk to rules.mk and remove SHELL from it
since that's special (always use ${BASH} if you must) according to TFM

git-svn-id: svn://www.freewrt.org/trunk/freewrt@341 afb5a338-a214-0410-bd46-81f09a774fd1

  • Property mode set to 100644
File size: 4.4 KB
Line 
1# $FreeWRT$
2
3include $(TOPDIR)/lbin/prereq.mk
4export BASH HOSTCC HOSTCFLAGS LC_ALL MAKE OStype PATH
5include $(TOPDIR)/.config
6
7ifeq ($(V),)
8V= 5
9endif
10
11
12ifneq ($(V),0)
13TRACE:= echo "---> "
14START_TRACE:= echo -n "---> "
15END_TRACE:= echo
16else
17START_TRACE:= :
18END_TRACE:= :
19TRACE:= :
20endif
21
22ifeq (${shell [ "$(V)" -ge 5 ] && echo 1},)
23CMD_TRACE:= :
24PKG_TRACE:= :
25else
26CMD_TRACE:= echo -n
27PKG_TRACE:= echo "------> "
28endif
29
30ifeq (${shell [ "$(V)" -ge 10 ] && echo 1},)
31EXTRA_MAKEFLAGS:= -s
32MAKE_TRACE:= >/dev/null 2>&1 || { echo "Build failed. Please re-run make with V=99 to see what's going on"; false; }
33else
34MAKE_TRACE:=
35EXTRA_MAKEFLAGS:=
36TRACE:= :
37PKG_TRACE:= :
38CMD_TRACE:= :
39START_TRACE:= :
40END_TRACE:= :
41endif
42
43ifeq (${shell [ "$(V)" -ge 90 ] && echo 1},)
44SET_DASHX:= :
45else
46SET_DASHX:= set -x
47endif
48
49CP= cp -fpR
50INSTALL_DIR= install -d -m0755
51INSTALL_DATA= install -m0644
52INSTALL_BIN= install -m0755
53MAKEFLAGS= -j$(BR2_JLEVEL) V=$(V) $(EXTRA_MAKEFLAGS)
54# Strip off the annoying quoting
55ARCH:= $(strip $(subst ",, $(BR2_ARCH)))
56WGET:= $(strip $(subst ",, $(BR2_WGET)))
57TARGET_OPTIMIZATION:= $(strip $(subst ",, $(BR2_TARGET_OPTIMIZATION)))
58#"))"))"))"))")) # for vim's broken syntax highlighting :)
59
60TARGET_CFLAGS:= $(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING)
61OPTIMIZE_FOR_CPU= $(ARCH)
62
63BASE_DIR:= $(TOPDIR)
64DL_DIR:= $(BASE_DIR)/dl
65BUILD_DIR:= $(BASE_DIR)/build_$(ARCH)$(ARCH_FPU_SUFFIX)
66STAGING_DIR:= $(BASE_DIR)/staging_dir_$(ARCH)$(ARCH_FPU_SUFFIX)
67TOOLCHAIN_BUILD_DIR= $(BASE_DIR)/toolchain_build_$(ARCH)$(ARCH_FPU_SUFFIX)
68TOOLCHAIN_STAMP_DIR:= $(STAGING_DIR)/stamp
69TOOLS_DIR= $(BASE_DIR)/tools
70TOOLS_BUILD_DIR= $(BASE_DIR)/tools_build
71TOOLS_STAMP_DIR:= $(STAGING_DIR)/stamp
72SCRIPT_DIR:= $(BASE_DIR)/scripts
73BIN_DIR:= $(BASE_DIR)/bin
74LBIN_DIR:= $(BASE_DIR)/lbin
75PACKAGE_DIR:= $(BIN_DIR)/packages
76STAMP_DIR:= $(BUILD_DIR)/stamp
77TARGET_DIR:= $(BUILD_DIR)/root
78TARGET_PATH= $(LBIN_DIR):$(STAGING_DIR)/usr/bin:$(STAGING_DIR)/bin:$(_PATH)
79IMAGE:= $(BUILD_DIR)/root_fs_$(ARCH)$(ARCH_FPU_SUFFIX)
80REAL_GNU_TARGET_NAME= $(OPTIMIZE_FOR_CPU)-linux-uclibc
81GNU_TARGET_NAME= $(OPTIMIZE_FOR_CPU)-linux
82KERNEL_CROSS:= $(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-
83TARGET_CROSS:= $(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-
84TARGET_CC:= $(TARGET_CROSS)gcc
85STRIP:= $(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-strip
86PATCH= $(SCRIPT_DIR)/patch-kernel.sh
87SED:= $(STAGING_DIR)/bin/sed -i -e
88LINUX_DIR:= $(BUILD_DIR)/linux
89LINUX_HEADERS_DIR:= $(TOOLCHAIN_BUILD_DIR)/linux
90
91
92HOST_ARCH:= $(shell $(HOSTCC) -dumpmachine | sed -e s'/-.*//' \
93 -e 's/sparc.*/sparc/' \
94 -e 's/arm.*/arm/g' \
95 -e 's/m68k.*/m68k/' \
96 -e 's/ppc/powerpc/g' \
97 -e 's/v850.*/v850/g' \
98 -e 's/sh[234]/sh/' \
99 -e 's/mips-.*/mips/' \
100 -e 's/mipsel-.*/mipsel/' \
101 -e 's/cris.*/cris/' \
102 -e 's/i[3-9]86/i386/' \
103 )
104
105TARGET_CONFIGURE_OPTS= PATH=$(TARGET_PATH) \
106 AR=$(TARGET_CROSS)ar \
107 AS=$(TARGET_CROSS)as \
108 LD=$(TARGET_CROSS)ld \
109 NM=$(TARGET_CROSS)nm \
110 CC=$(TARGET_CROSS)gcc \
111 GCC=$(TARGET_CROSS)gcc \
112 CXX=$(TARGET_CROSS)g++ \
113 RANLIB=$(TARGET_CROSS)ranlib
114
115# invoke ipkg-build with some default options
116IPKG_BUILD:= PATH="$(TARGET_PATH)" ipkg-build -c -o 0 -g 0
117# where to build (and put) .ipk packages
118IPKG_TARGET_DIR:= $(PACKAGE_DIR)
119IPKG:= IPKG_TMP=$(BUILD_DIR)/tmp IPKG_INSTROOT=$(TARGET_DIR) IPKG_CONF_DIR=$(STAGING_DIR)/etc IPKG_OFFLINE_ROOT=$(BUILD_DIR)/root $(SCRIPT_DIR)/ipkg -force-defaults -force-depends
120IPKG_STATE_DIR:= $(TARGET_DIR)/usr/lib/ipkg
121
122RSTRIP:= STRIP="$(STRIP)" $(SCRIPT_DIR)/rstrip.sh
123RSTRIP_KMOD:= STRIP="$(TARGET_CROSS)strip --strip-unneeded --remove-section=.comment" $(SCRIPT_DIR)/rstrip.sh
124
125# XXX derive these from BR2_* vars
126UNAME_S:= Linux
127UNAME_R:= 2.4.32
128UNAME_M:= mips
129
130export UNAME_S UNAME_R UNAME_M
131
132ifeq (${OStype},Linux)
133MKPASSWD:= $(STAGING_DIR)/bin/mkpasswd -H md5
134else
135MKPASSWD:= encrypt -m
136endif
137
138EXTRACT_CMD= mkdir -p ${WRKDIR}; \
139 cd ${WRKDIR} && \
140 for file in ${DISTFILES}; do case $$file in \
141 *.cpio | *.tar) \
142 tar xf $$file ;; \
143 *.cpio.Z | *.cpio.gz | *.cgz | *.mcz | \
144 *.tar.Z | *.tar.gz | *.taz | *.tgz) \
145 tar xzf $$file ;; \
146 *.cpio.bz2 | *.cbz | *.tar.bz2 | *.tbz | *.tbz2) \
147 bzip2 -dc $$file | cpio -mid ;; \
148 *.zip) \
149 unzip -d ${WRKDIR} $$file ;; \
150 *) \
151 echo "Cannot extract '$$file'" >&2; \
152 false ;; \
153 esac; done
154
155_show:
156 @echo '$($(show))'
Note: See TracBrowser for help on using the repository browser.