diff options
author | nobody <nobody@localhost> | 2004-10-13 09:42:10 +0000 |
---|---|---|
committer | nobody <nobody@localhost> | 2004-10-13 09:42:10 +0000 |
commit | 8c59a0bf0e9e2d87b0ff273ea3f0bf05bbbf6373 (patch) | |
tree | 1826706cd4fd009fcd14f4f8021005ec8ec0fa59 /busybox/Rules.mak | |
download | busybox-w32-8c59a0bf0e9e2d87b0ff273ea3f0bf05bbbf6373.tar.gz busybox-w32-8c59a0bf0e9e2d87b0ff273ea3f0bf05bbbf6373.tar.bz2 busybox-w32-8c59a0bf0e9e2d87b0ff273ea3f0bf05bbbf6373.zip |
This commit was manufactured by cvs2svn to create tag 'busybox_1_00'.
Diffstat (limited to 'busybox/Rules.mak')
-rw-r--r-- | busybox/Rules.mak | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/busybox/Rules.mak b/busybox/Rules.mak new file mode 100644 index 000000000..d04d4b9f2 --- /dev/null +++ b/busybox/Rules.mak | |||
@@ -0,0 +1,196 @@ | |||
1 | # Rules.make for busybox | ||
2 | # | ||
3 | # Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org> | ||
4 | # | ||
5 | # This program is free software; you can redistribute it and/or modify | ||
6 | # it under the terms of the GNU General Public License as published by | ||
7 | # the Free Software Foundation; either version 2 of the License, or | ||
8 | # (at your option) any later version. | ||
9 | # | ||
10 | # This program is distributed in the hope that it will be useful, | ||
11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
13 | # General Public License for more details. | ||
14 | # | ||
15 | # You should have received a copy of the GNU General Public License | ||
16 | # along with this program; if not, write to the Free Software | ||
17 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
18 | # | ||
19 | |||
20 | #-------------------------------------------------------- | ||
21 | PROG := busybox | ||
22 | VERSION := 1.00 | ||
23 | BUILDTIME := $(shell TZ=UTC date -u "+%Y.%m.%d-%H:%M%z") | ||
24 | |||
25 | |||
26 | #-------------------------------------------------------- | ||
27 | # With a modern GNU make(1) (highly recommended, that's what all the | ||
28 | # developers use), all of the following configuration values can be | ||
29 | # overridden at the command line. For example: | ||
30 | # make CROSS=powerpc-linux- BB_SRC_DIR=$HOME/busybox PREFIX=/mnt/app | ||
31 | #-------------------------------------------------------- | ||
32 | |||
33 | # If you are running a cross compiler, you will want to set 'CROSS' | ||
34 | # to something more interesting... Target architecture is determined | ||
35 | # by asking the CC compiler what arch it compiles things for, so unless | ||
36 | # your compiler is broken, you should not need to specify TARGET_ARCH | ||
37 | CROSS =$(subst ",, $(strip $(CROSS_COMPILER_PREFIX))) | ||
38 | CC = $(CROSS)gcc | ||
39 | AR = $(CROSS)ar | ||
40 | AS = $(CROSS)as | ||
41 | LD = $(CROSS)ld | ||
42 | NM = $(CROSS)nm | ||
43 | STRIP = $(CROSS)strip | ||
44 | CPP = $(CC) -E | ||
45 | # MAKEFILES = $(top_builddir)/.config | ||
46 | |||
47 | # What OS are you compiling busybox for? This allows you to include | ||
48 | # OS specific things, syscall overrides, etc. | ||
49 | TARGET_OS=linux | ||
50 | |||
51 | # Select the compiler needed to build binaries for your development system | ||
52 | HOSTCC = gcc | ||
53 | HOSTCFLAGS= -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer | ||
54 | |||
55 | # Ensure consistent sort order, 'gcc -print-search-dirs' behavior, etc. | ||
56 | LC_ALL:= C | ||
57 | |||
58 | # If you want to add some simple compiler switches (like -march=i686), | ||
59 | # especially from the command line, use this instead of CFLAGS directly. | ||
60 | # For optimization overrides, it's better still to set OPTIMIZATION. | ||
61 | CFLAGS_EXTRA=$(subst ",, $(strip $(EXTRA_CFLAGS_OPTIONS))) | ||
62 | |||
63 | # If you have a "pristine" source directory, point BB_SRC_DIR to it. | ||
64 | # Experimental and incomplete; tell the mailing list | ||
65 | # <busybox@busybox.net> if you do or don't like it so far. | ||
66 | BB_SRC_DIR= | ||
67 | |||
68 | # To compile vs some other alternative libc, you may need to use/adjust | ||
69 | # the following lines to meet your needs... | ||
70 | # | ||
71 | # If you are using Red Hat 6.x with the compatible RPMs (for developing under | ||
72 | # Red Hat 5.x and glibc 2.0) uncomment the following. Be sure to read about | ||
73 | # using the compatible RPMs (compat-*) at http://www.redhat.com ! | ||
74 | #LIBCDIR:=/usr/i386-glibc20-linux | ||
75 | # | ||
76 | # For other libraries, you are on your own. But these may (or may not) help... | ||
77 | #LDFLAGS+=-nostdlib | ||
78 | #LIBRARIES:=$(LIBCDIR)/lib/libc.a -lgcc | ||
79 | #CROSS_CFLAGS+=-nostdinc -I$(LIBCDIR)/include -I$(GCCINCDIR) | ||
80 | #GCCINCDIR:=$(shell gcc -print-search-dirs | sed -ne "s/install: \(.*\)/\1include/gp") | ||
81 | |||
82 | WARNINGS=-Wall -Wstrict-prototypes -Wshadow | ||
83 | CFLAGS=-I$(top_builddir)/include -I$(top_srcdir)/include -I$(srcdir) | ||
84 | ARFLAGS=-r | ||
85 | |||
86 | #-------------------------------------------------------- | ||
87 | export VERSION BUILDTIME TOPDIR HOSTCC HOSTCFLAGS CROSS CC AR AS LD NM STRIP CPP | ||
88 | ifeq ($(strip $(TARGET_ARCH)),) | ||
89 | TARGET_ARCH=$(shell $(CC) -dumpmachine | sed -e s'/-.*//' \ | ||
90 | -e 's/i.86/i386/' \ | ||
91 | -e 's/sparc.*/sparc/' \ | ||
92 | -e 's/arm.*/arm/g' \ | ||
93 | -e 's/m68k.*/m68k/' \ | ||
94 | -e 's/ppc/powerpc/g' \ | ||
95 | -e 's/v850.*/v850/g' \ | ||
96 | -e 's/sh[234]/sh/' \ | ||
97 | -e 's/mips-.*/mips/' \ | ||
98 | -e 's/mipsel-.*/mipsel/' \ | ||
99 | -e 's/cris.*/cris/' \ | ||
100 | ) | ||
101 | endif | ||
102 | |||
103 | # Pull in the user's busybox configuration | ||
104 | ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),) | ||
105 | -include $(top_builddir)/.config | ||
106 | endif | ||
107 | |||
108 | # A nifty macro to make testing gcc features easier | ||
109 | check_gcc=$(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; \ | ||
110 | then echo "$(1)"; else echo "$(2)"; fi) | ||
111 | |||
112 | #-------------------------------------------------------- | ||
113 | # Arch specific compiler optimization stuff should go here. | ||
114 | # Unless you want to override the defaults, do not set anything | ||
115 | # for OPTIMIZATION... | ||
116 | |||
117 | # use '-Os' optimization if available, else use -O2 | ||
118 | OPTIMIZATION= | ||
119 | OPTIMIZATION=${call check_gcc,-Os,-O2} | ||
120 | |||
121 | # Some nice architecture specific optimizations | ||
122 | ifeq ($(strip $(TARGET_ARCH)),arm) | ||
123 | OPTIMIZATION+=-fstrict-aliasing | ||
124 | endif | ||
125 | ifeq ($(strip $(TARGET_ARCH)),i386) | ||
126 | OPTIMIZATION+=$(call check_gcc,-march=i386,) | ||
127 | OPTIMIZATION+=$(call check_gcc,-mpreferred-stack-boundary=2,) | ||
128 | OPTIMIZATION+=$(call check_gcc,-falign-functions=0 -falign-jumps=0 -falign-loops=0,\ | ||
129 | -malign-functions=0 -malign-jumps=0 -malign-loops=0) | ||
130 | endif | ||
131 | OPTIMIZATIONS=$(OPTIMIZATION) -fomit-frame-pointer | ||
132 | |||
133 | # | ||
134 | #-------------------------------------------------------- | ||
135 | # If you're going to do a lot of builds with a non-vanilla configuration, | ||
136 | # it makes sense to adjust parameters above, so you can type "make" | ||
137 | # by itself, instead of following it by the same half-dozen overrides | ||
138 | # every time. The stuff below, on the other hand, is probably less | ||
139 | # prone to casual user adjustment. | ||
140 | # | ||
141 | |||
142 | ifeq ($(strip $(CONFIG_LFS)),y) | ||
143 | # For large file summit support | ||
144 | CFLAGS+=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 | ||
145 | endif | ||
146 | ifeq ($(strip $(CONFIG_DMALLOC)),y) | ||
147 | # For testing mem leaks with dmalloc | ||
148 | CFLAGS+=-DDMALLOC | ||
149 | LIBRARIES:=-ldmalloc | ||
150 | else | ||
151 | ifeq ($(strip $(CONFIG_EFENCE)),y) | ||
152 | LIBRARIES:=-lefence | ||
153 | endif | ||
154 | endif | ||
155 | ifeq ($(strip $(CONFIG_DEBUG)),y) | ||
156 | CFLAGS +=$(WARNINGS) -g -D_GNU_SOURCE | ||
157 | LDFLAGS +=-Wl,-warn-common | ||
158 | STRIPCMD:=/bin/true -Not_stripping_since_we_are_debugging | ||
159 | else | ||
160 | CFLAGS+=$(WARNINGS) $(OPTIMIZATIONS) -D_GNU_SOURCE -DNDEBUG | ||
161 | LDFLAGS += -s -Wl,-warn-common | ||
162 | STRIPCMD:=$(STRIP) --remove-section=.note --remove-section=.comment | ||
163 | endif | ||
164 | ifeq ($(strip $(CONFIG_STATIC)),y) | ||
165 | LDFLAGS += --static | ||
166 | endif | ||
167 | |||
168 | ifeq ($(strip $(PREFIX)),) | ||
169 | PREFIX:=`pwd`/_install | ||
170 | endif | ||
171 | |||
172 | # Additional complications due to support for pristine source dir. | ||
173 | # Include files in the build directory should take precedence over | ||
174 | # the copy in BB_SRC_DIR, both during the compilation phase and the | ||
175 | # shell script that finds the list of object files. | ||
176 | # Work in progress by <ldoolitt@recycle.lbl.gov>. | ||
177 | # | ||
178 | ifneq ($(strip $(BB_SRC_DIR)),) | ||
179 | VPATH:=$(BB_SRC_DIR) | ||
180 | endif | ||
181 | |||
182 | OBJECTS:=$(APPLET_SOURCES:.c=.o) busybox.o usage.o applets.o | ||
183 | CFLAGS += $(CROSS_CFLAGS) | ||
184 | ifdef BB_INIT_SCRIPT | ||
185 | CFLAGS += -DINIT_SCRIPT='"$(BB_INIT_SCRIPT)"' | ||
186 | endif | ||
187 | |||
188 | # Put user-supplied flags at the end, where they | ||
189 | # have a chance of winning. | ||
190 | CFLAGS += $(CFLAGS_EXTRA) | ||
191 | |||
192 | .PHONY: dummy | ||
193 | |||
194 | |||
195 | .EXPORT_ALL_VARIABLES: | ||
196 | |||