diff options
author | Eric Andersen <andersen@codepoet.org> | 2001-10-24 05:00:29 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2001-10-24 05:00:29 +0000 |
commit | bdfd0d78bc44e73d693510e70087857785b3b521 (patch) | |
tree | 153a573095afac8d8d0ea857759ecabd77fb28b7 /Makefile | |
parent | 9260fc5552a3ee52eb95823aa6689d52a1ffd33c (diff) | |
download | busybox-w32-bdfd0d78bc44e73d693510e70087857785b3b521.tar.gz busybox-w32-bdfd0d78bc44e73d693510e70087857785b3b521.tar.bz2 busybox-w32-bdfd0d78bc44e73d693510e70087857785b3b521.zip |
Major rework of the directory structure and the entire build system.
-Erik
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 311 |
1 files changed, 130 insertions, 181 deletions
@@ -1,6 +1,6 @@ | |||
1 | # Makefile for busybox | 1 | # Makefile for busybox |
2 | # | 2 | # |
3 | # Copyright (C) 1999,2000,2001 Erik Andersen <andersee@debian.org> | 3 | # Copyright (C) 1999,2000,2001 by Erik Andersen <andersee@debian.org> |
4 | # | 4 | # |
5 | # This program is free software; you can redistribute it and/or modify | 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 | 6 | # it under the terms of the GNU General Public License as published by |
@@ -20,12 +20,19 @@ | |||
20 | PROG := busybox | 20 | PROG := busybox |
21 | VERSION := 0.61.pre | 21 | VERSION := 0.61.pre |
22 | BUILDTIME := $(shell TZ=UTC date -u "+%Y.%m.%d-%H:%M%z") | 22 | BUILDTIME := $(shell TZ=UTC date -u "+%Y.%m.%d-%H:%M%z") |
23 | export VERSION | 23 | TOPDIR := ${shell /bin/pwd} |
24 | HOSTCC := gcc | ||
25 | HOSTCFLAGS:= -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer | ||
26 | |||
27 | |||
28 | # What OS are you compiling busybox for? This allows you to include | ||
29 | # OS specific things, syscall overrides, etc. | ||
30 | TARGET_OS := linux | ||
24 | 31 | ||
25 | # With a modern GNU make(1) (highly recommended, that's what all the | 32 | # With a modern GNU make(1) (highly recommended, that's what all the |
26 | # developers use), all of the following configuration values can be | 33 | # developers use), all of the following configuration values can be |
27 | # overridden at the command line. For example: | 34 | # overridden at the command line. For example: |
28 | # make CROSS=powerpc-linux- BB_SRC_DIR=$HOME/busybox PREFIX=/mnt/app | 35 | # make CROSS=powerpc-linux- CONFIG_SRC_DIR=$HOME/busybox PREFIX=/mnt/app |
29 | 36 | ||
30 | # If you want to add some simple compiler switches (like -march=i686), | 37 | # If you want to add some simple compiler switches (like -march=i686), |
31 | # especially from the command line, use this instead of CFLAGS directly. | 38 | # especially from the command line, use this instead of CFLAGS directly. |
@@ -39,18 +46,6 @@ DOSTATIC = false | |||
39 | # Leave this set to `false' for production use. | 46 | # Leave this set to `false' for production use. |
40 | DODEBUG = false | 47 | DODEBUG = false |
41 | 48 | ||
42 | # Setting this to `true' will cause busybox to directly use the system's | ||
43 | # password and group functions. Assuming you use GNU libc, when this is | ||
44 | # `true', you will need to install the /etc/nsswitch.conf configuration file | ||
45 | # and the required libnss_* libraries. This generally makes your embedded | ||
46 | # system quite a bit larger... If you leave this off, busybox will directly use | ||
47 | # the /etc/password, /etc/group files (and your system will be smaller, and I | ||
48 | # will get fewer emails asking about how glibc NSS works). Enabling this adds | ||
49 | # just 1.4k to the binary size (which is a _lot_ less then glibc NSS costs). | ||
50 | # Note that if you want hostname resolution to work with glibc, you still need | ||
51 | # the libnss_* libraries. | ||
52 | USE_SYSTEM_PWD_GRP = true | ||
53 | |||
54 | # This enables compiling with dmalloc ( http://dmalloc.com/ ) | 49 | # This enables compiling with dmalloc ( http://dmalloc.com/ ) |
55 | # which is an excellent public domain mem leak and malloc problem | 50 | # which is an excellent public domain mem leak and malloc problem |
56 | # detector. To enable dmalloc, before running busybox you will | 51 | # detector. To enable dmalloc, before running busybox you will |
@@ -72,17 +67,24 @@ DOEFENCE = false | |||
72 | # larger than 2GB! | 67 | # larger than 2GB! |
73 | DOLFS = false | 68 | DOLFS = false |
74 | 69 | ||
75 | # If you have a "pristine" source directory, point BB_SRC_DIR to it. | 70 | # If you have a "pristine" source directory, point CONFIG_SRC_DIR to it. |
76 | # Experimental and incomplete; tell the mailing list | 71 | # Experimental and incomplete; tell the mailing list |
77 | # <busybox@opensource.lineo.com> if you do or don't like it so far. | 72 | # <busybox@opensource.lineo.com> if you do or don't like it so far. |
78 | BB_SRC_DIR = | 73 | CONFIG_SRC_DIR = |
79 | 74 | ||
80 | # If you are running a cross compiler, you may want to set this | 75 | # If you are running a cross compiler, you may want to set CROSS |
81 | # to something more interesting, like "powerpc-linux-". | 76 | # to something more interesting, like "arm-linux-". |
82 | CROSS = | 77 | CROSS = |
83 | CC = $(CROSS)gcc | 78 | CC = $(CROSS)gcc |
84 | AR = $(CROSS)ar | 79 | AR = $(CROSS)ar |
85 | STRIPTOOL = $(CROSS)strip | 80 | AS = $(CROSS)as |
81 | LD = $(CROSS)ld | ||
82 | NM = $(CROSS)nm | ||
83 | STRIP = $(CROSS)strip | ||
84 | CPP = $(CC) -E | ||
85 | MAKEFILES = $(TOPDIR)/.config | ||
86 | export VERSION BUILDTIME TOPDIR HOSTCC HOSTCFLAGS CROSS CC AR AS LD NM STRIP CPP | ||
87 | |||
86 | 88 | ||
87 | # To compile vs uClibc, just use the compiler wrapper built by uClibc... | 89 | # To compile vs uClibc, just use the compiler wrapper built by uClibc... |
88 | # Everything should compile and work as expected these days... | 90 | # Everything should compile and work as expected these days... |
@@ -107,10 +109,11 @@ STRIPTOOL = $(CROSS)strip | |||
107 | #GCCINCDIR = $(shell gcc -print-search-dirs | sed -ne "s/install: \(.*\)/\1include/gp") | 109 | #GCCINCDIR = $(shell gcc -print-search-dirs | sed -ne "s/install: \(.*\)/\1include/gp") |
108 | 110 | ||
109 | # use '-Os' optimization if available, else use -O2 | 111 | # use '-Os' optimization if available, else use -O2 |
110 | OPTIMIZATION := $(shell if $(CC) -Os -S -o /dev/null -xc /dev/null >/dev/null 2>&1; \ | 112 | OPTIMIZATION := ${shell if $(CC) -Os -S -o /dev/null -xc /dev/null \ |
111 | then echo "-Os"; else echo "-O2" ; fi) | 113 | >/dev/null 2>&1; then echo "-Os"; else echo "-O2" ; fi} |
112 | 114 | ||
113 | WARNINGS=-Wall -Wstrict-prototypes -Wshadow | 115 | WARNINGS=-Wall -Wstrict-prototypes -Wshadow |
116 | CFLAGS = -I $(TOPDIR)/include -I $(TOPDIR)/busybox | ||
114 | ARFLAGS = -r | 117 | ARFLAGS = -r |
115 | 118 | ||
116 | # | 119 | # |
@@ -142,25 +145,14 @@ endif | |||
142 | ifeq ($(strip $(DODEBUG)),true) | 145 | ifeq ($(strip $(DODEBUG)),true) |
143 | CFLAGS += $(WARNINGS) -g -D_GNU_SOURCE | 146 | CFLAGS += $(WARNINGS) -g -D_GNU_SOURCE |
144 | LDFLAGS += -Wl,-warn-common | 147 | LDFLAGS += -Wl,-warn-common |
145 | STRIP = | 148 | STRIPCMD = |
146 | else | 149 | else |
147 | CFLAGS += $(WARNINGS) $(OPTIMIZATION) -fomit-frame-pointer -D_GNU_SOURCE | 150 | CFLAGS += $(WARNINGS) $(OPTIMIZATION) -fomit-frame-pointer -D_GNU_SOURCE |
148 | LDFLAGS += -s -Wl,-warn-common | 151 | LDFLAGS += -s -Wl,-warn-common |
149 | STRIP = $(STRIPTOOL) --remove-section=.note --remove-section=.comment $(PROG) | 152 | STRIPCMD = $(STRIP) --remove-section=.note --remove-section=.comment $(PROG) |
150 | endif | 153 | endif |
151 | ifeq ($(strip $(DOSTATIC)),true) | 154 | ifeq ($(strip $(DOSTATIC)),true) |
152 | LDFLAGS += --static | 155 | LDFLAGS += --static |
153 | # | ||
154 | #use '-ffunction-sections -fdata-sections' and '--gc-sections' (if they | ||
155 | # work) to try and strip out any unused junk. Doesn't do much for me, | ||
156 | # but you may want to give it a shot... | ||
157 | # | ||
158 | #ifeq ($(shell $(CC) -ffunction-sections -fdata-sections -S \ | ||
159 | # -o /dev/null -xc /dev/null 2>/dev/null && $(LD) \ | ||
160 | # --gc-sections -v >/dev/null && echo 1),1) | ||
161 | # CFLAGS += -ffunction-sections -fdata-sections | ||
162 | # LDFLAGS += --gc-sections | ||
163 | #endif | ||
164 | endif | 156 | endif |
165 | 157 | ||
166 | ifndef $(PREFIX) | 158 | ifndef $(PREFIX) |
@@ -169,125 +161,77 @@ endif | |||
169 | 161 | ||
170 | # Additional complications due to support for pristine source dir. | 162 | # Additional complications due to support for pristine source dir. |
171 | # Include files in the build directory should take precedence over | 163 | # Include files in the build directory should take precedence over |
172 | # the copy in BB_SRC_DIR, both during the compilation phase and the | 164 | # the copy in CONFIG_SRC_DIR, both during the compilation phase and the |
173 | # shell script that finds the list of object files. | 165 | # shell script that finds the list of object files. |
174 | # Work in progress by <ldoolitt@recycle.lbl.gov>. | 166 | # Work in progress by <ldoolitt@recycle.lbl.gov>. |
175 | # | 167 | # |
176 | ifneq ($(strip $(BB_SRC_DIR)),) | 168 | ifneq ($(strip $(CONFIG_SRC_DIR)),) |
177 | VPATH = $(BB_SRC_DIR) | 169 | VPATH = $(CONFIG_SRC_DIR) |
178 | endif | 170 | endif |
179 | #ifneq ($(strip $(VPATH)),) | ||
180 | # CFLAGS += -I- -I. $(patsubst %,-I%,$(subst :, ,$(VPATH))) | ||
181 | #endif | ||
182 | |||
183 | # We need to set APPLET_SOURCES to something like | ||
184 | # $(shell busybox.sh Config.h) | ||
185 | # but in a manner that works with VPATH and BB_SRC_DIR. | ||
186 | # Possible ways to approach this: | ||
187 | # | ||
188 | # 1. Explicitly search through .:$(VPATH) for busybox.sh and config.h, | ||
189 | # then $(shell $(BUSYBOX_SH) $(CONFIG_H) $(BB_SRC_DIR)) | ||
190 | # | ||
191 | # 2. Explicity search through .:$(VPATH) for slist.mk, | ||
192 | # then $(shell $(MAKE) -f $(SLIST_MK) VPATH=$(VPATH) BB_SRC_DIR=$(BB_SRC_DIR)) | ||
193 | # | ||
194 | # 3. Create slist.mk in this directory, with commands embedded in | ||
195 | # a $(shell ...) command, and $(MAKE) it immediately. | ||
196 | # | ||
197 | # 4. Use a real rule within this makefile to create a file that sets | ||
198 | # APPLET_SOURCE_LIST, then include that file. Has complications | ||
199 | # with the first trip through the makefile (before processing the | ||
200 | # include) trying to do too much, and a spurious warning the first | ||
201 | # time make is run. | ||
202 | # | ||
203 | # This is option 3: | ||
204 | # | ||
205 | #APPLET_SOURCES = $(shell \ | ||
206 | # echo -e 'all: busybox.sh Config.h\n\t@ $$(SHELL) $$^ $$(BB_SRC_DIR)' >slist.mk; \ | ||
207 | # make -f slist.mk VPATH=$(VPATH) BB_SRC_DIR=$(BB_SRC_DIR) \ | ||
208 | #) | ||
209 | # And option 4: | ||
210 | -include applet_source_list | ||
211 | 171 | ||
212 | OBJECTS = $(APPLET_SOURCES:.c=.o) busybox.o usage.o applets.o | 172 | OBJECTS = $(APPLET_SOURCES:.c=.o) busybox.o usage.o applets.o |
213 | CFLAGS += $(CROSS_CFLAGS) | 173 | CFLAGS += $(CROSS_CFLAGS) |
214 | CFLAGS += -DBB_VER='"$(VERSION)"' | 174 | ifdef CONFIG_INIT_SCRIPT |
215 | CFLAGS += -DBB_BT='"$(BUILDTIME)"' | 175 | CFLAGS += -DINIT_SCRIPT='"$(CONFIG_INIT_SCRIPT)"' |
216 | ifdef BB_INIT_SCRIPT | ||
217 | CFLAGS += -DINIT_SCRIPT='"$(BB_INIT_SCRIPT)"' | ||
218 | endif | 176 | endif |
219 | 177 | ||
220 | ifneq ($(strip $(USE_SYSTEM_PWD_GRP)),true) | 178 | # Put user-supplied flags at the end, where they |
221 | PWD_GRP = pwd_grp | 179 | # have a chance of winning. |
222 | PWD_GRP_DIR = $(BB_SRC_DIR:=/)$(PWD_GRP) | 180 | CFLAGS += $(CFLAGS_EXTRA) |
223 | PWD_LIB = libpwd.a | 181 | |
224 | PWD_CSRC=__getpwent.c pwent.c getpwnam.c getpwuid.c putpwent.c getpw.c \ | 182 | .EXPORT_ALL_VARIABLES: |
225 | fgetpwent.c __getgrent.c grent.c getgrnam.c getgrgid.c fgetgrent.c \ | 183 | |
226 | initgroups.c setgroups.c | 184 | all: do-it-all |
227 | PWD_OBJS=$(patsubst %.c,$(PWD_GRP)/%.o, $(PWD_CSRC)) | 185 | |
228 | ifneq ($(strip $(BB_SRC_DIR)),) | 186 | # |
229 | PWD_CFLAGS = -I- -I. | 187 | # Make "config" the default target if there is no configuration file or |
230 | endif | 188 | # "depend" the target if there is no top-level dependency information. |
231 | PWD_CFLAGS += -I$(PWD_GRP_DIR) | 189 | ifeq (.config,$(wildcard .config)) |
190 | include .config | ||
191 | ifeq (.depend,$(wildcard .depend)) | ||
192 | include .depend | ||
193 | do-it-all: busybox busybox.links doc | ||
232 | else | 194 | else |
233 | CFLAGS += -DUSE_SYSTEM_PWD_GRP | 195 | CONFIGURATION = depend |
196 | do-it-all: depend | ||
234 | endif | 197 | endif |
235 | |||
236 | LIBBB = libbb | ||
237 | LIBBB_LIB = libbb.a | ||
238 | LIBBB_CSRC= ask_confirmation.c chomp.c concat_path_file.c copy_file.c \ | ||
239 | copy_file_chunk.c libc5.c device_open.c error_msg.c \ | ||
240 | error_msg_and_die.c fgets_str.c find_mount_point.c find_pid_by_name.c \ | ||
241 | find_root_device.c full_read.c full_write.c get_console.c \ | ||
242 | get_last_path_component.c get_line_from_file.c gz_open.c human_readable.c \ | ||
243 | isdirectory.c kernel_version.c loop.c mode_string.c module_syscalls.c mtab.c \ | ||
244 | mtab_file.c my_getgrnam.c my_getgrgid.c my_getpwnam.c my_getpwnamegid.c \ | ||
245 | my_getpwuid.c parse_mode.c parse_number.c perror_msg.c perror_msg_and_die.c \ | ||
246 | print_file.c process_escape_sequence.c read_package_field.c recursive_action.c \ | ||
247 | safe_read.c safe_strncpy.c syscalls.c syslog_msg_with_name.c time_string.c \ | ||
248 | trim.c unzip.c vdprintf.c verror_msg.c vperror_msg.c wfopen.c xfuncs.c \ | ||
249 | xgetcwd.c xreadlink.c xregcomp.c interface.c remove_file.c last_char_is.c \ | ||
250 | copyfd.c vherror_msg.c herror_msg.c herror_msg_and_die.c xgethostbyname.c \ | ||
251 | dirname.c make_directory.c create_icmp_socket.c u_signal_names.c arith.c \ | ||
252 | simplify_path.c | ||
253 | LIBBB_OBJS=$(patsubst %.c,$(LIBBB)/%.o, $(LIBBB_CSRC)) | ||
254 | ifeq ($(strip $(BB_SRC_DIR)),) | ||
255 | LIBBB_CFLAGS += -I$(LIBBB) | ||
256 | else | 198 | else |
257 | LIBBB_CFLAGS = -I- -I. -I./$(LIBBB) -I$(BB_SRC_DIR)/$(LIBBB) -I$(BB_SRC_DIR) | 199 | CONFIGURATION = menuconfig |
200 | do-it-all: menuconfig | ||
258 | endif | 201 | endif |
259 | 202 | ||
260 | LIBBB_MSRC=libbb/messages.c | 203 | SUBDIRS =applets archival console-tools editors fileutils findutils init \ |
261 | LIBBB_MESSAGES= full_version name_too_long omitting_directory not_a_directory \ | 204 | miscutils modutils networking pwd_grp shell shellutils sysklogd \ |
262 | memory_exhausted invalid_date invalid_option io_error dash_dash_help \ | 205 | textutils tinylogin util-linux libbb |
263 | write_error too_few_args name_longer_than_foo unknown can_not_create_raw_socket | ||
264 | LIBBB_MOBJ=$(patsubst %,$(LIBBB)/%.o, $(LIBBB_MESSAGES)) | ||
265 | 206 | ||
266 | LIBBB_ARCSRC=libbb/unarchive.c | 207 | bbsubdirs: $(patsubst %, _dir_%, $(SUBDIRS)) |
267 | LIBBB_ARCOBJ= archive_offset seek_sub_file extract_archive unarchive \ | ||
268 | get_header_ar get_header_cpio get_header_tar deb_extract | ||
269 | LIBBB_AROBJS=$(patsubst %,$(LIBBB)/%.o, $(LIBBB_ARCOBJ)) | ||
270 | 208 | ||
209 | $(patsubst %, _dir_%, $(SUBDIRS)) : dummy include/config/MARKER | ||
210 | $(MAKE) CFLAGS="$(CFLAGS)" -C $(patsubst _dir_%, %, $@) | ||
271 | 211 | ||
272 | # Put user-supplied flags at the end, where they | 212 | busybox: bbsubdirs |
273 | # have a chance of winning. | 213 | $(CC) $(LDFLAGS) -o $@ $(shell find $(SUBDIRS) -name \*.a) $(LIBCONFIG_LIB) $(LIBRARIES) |
274 | CFLAGS += $(CFLAGS_EXTRA) | 214 | $(STRIPCMD) |
275 | 215 | ||
276 | .EXPORT_ALL_VARIABLES: | 216 | busybox.links: applets/busybox.mkll |
217 | - $(SHELL) $^ >$@ | ||
218 | |||
219 | install: applets/install.sh busybox busybox.links | ||
220 | $(SHELL) $< $(PREFIX) | ||
277 | 221 | ||
278 | all: applet_source_list busybox busybox.links doc | 222 | install-hardlinks: applets/install.sh busybox busybox.links |
223 | $(SHELL) $< $(PREFIX) --hardlinks | ||
279 | 224 | ||
280 | applet_source_list: busybox.sh Config.h | ||
281 | (echo -n "APPLET_SOURCES := "; CC="$(CC)" BB_SRC_DIR="$(BB_SRC_DIR)" $(SHELL) $^) > $@ | ||
282 | 225 | ||
226 | # Documentation Targets | ||
283 | doc: olddoc | 227 | doc: olddoc |
284 | 228 | ||
285 | # Old Docs... | 229 | # Old Docs... |
286 | olddoc: docs/busybox.pod docs/BusyBox.txt docs/BusyBox.1 docs/BusyBox.html | 230 | olddoc: docs/busybox.pod docs/BusyBox.txt docs/BusyBox.1 docs/BusyBox.html |
287 | 231 | ||
288 | docs/busybox.pod : docs/busybox_header.pod usage.h docs/busybox_footer.pod | 232 | docs/busybox.pod : docs/busybox_header.pod applets/usage.h docs/busybox_footer.pod |
289 | - ( cat docs/busybox_header.pod; \ | 233 | - ( cat docs/busybox_header.pod; \ |
290 | docs/autodocifier.pl usage.h; \ | 234 | docs/autodocifier.pl applets/usage.h; \ |
291 | cat docs/busybox_footer.pod ) > docs/busybox.pod | 235 | cat docs/busybox_footer.pod ) > docs/busybox.pod |
292 | 236 | ||
293 | docs/BusyBox.txt: docs/busybox.pod | 237 | docs/BusyBox.txt: docs/busybox.pod |
@@ -340,86 +284,89 @@ docs/busybox/busyboxdocumentation.html: docs/busybox.sgml | |||
340 | - mkdir -p docs | 284 | - mkdir -p docs |
341 | (cd docs/busybox.lineo.com; sgmltools -b html ../busybox.sgml) | 285 | (cd docs/busybox.lineo.com; sgmltools -b html ../busybox.sgml) |
342 | 286 | ||
287 | # The nifty new buildsystem stuff | ||
288 | scripts/mkdep: scripts/mkdep.c | ||
289 | $(HOSTCC) $(HOSTCFLAGS) -o scripts/mkdep scripts/mkdep.c | ||
343 | 290 | ||
344 | busybox: $(PWD_LIB) $(LIBBB_LIB) $(OBJECTS) | 291 | scripts/split-include: scripts/split-include.c |
345 | $(CC) $(LDFLAGS) -o $@ $(OBJECTS) $(LIBBB_LIB) $(PWD_LIB) $(LIBRARIES) | 292 | $(HOSTCC) $(HOSTCFLAGS) -o scripts/split-include scripts/split-include.c |
346 | $(STRIP) | ||
347 | 293 | ||
348 | # Without VPATH, rule expands to "/bin/sh busybox.mkll Config.h applets.h" | 294 | dep-files: scripts/mkdep #archdep |
349 | # but with VPATH, some or all of those file names are resolved to the | 295 | rm -f .depend .hdepend |
350 | # directories in which they live. | 296 | scripts/mkdep -I $(TOPDIR)/include -- `find $(TOPDIR) -name \*.c -print` >> .depend |
351 | busybox.links: busybox.mkll Config.h applets.h | 297 | scripts/mkdep -I $(TOPDIR)/include -- `find $(TOPDIR) -name \*.h -print` >> .hdepend |
352 | - $(SHELL) $^ >$@ | 298 | $(MAKE) $(patsubst %,_sfdep_%,$(SUBDIRS)) _FASTDEP_ALL_SUB_DIRS="$(SUBDIRS)" |
353 | 299 | ||
354 | nfsmount.o cmdedit.o: %.o: %.h | 300 | depend dep: dep-files |
355 | ash.o hush.o lash.o msh.o: cmdedit.h | 301 | @ echo -e "\n\nNow run 'make' to build BusyBox\n\n" |
356 | $(OBJECTS): %.o: %.c Config.h busybox.h applets.h Makefile | ||
357 | ifeq ($(strip $(BB_SRC_DIR)),) | ||
358 | $(CC) $(CFLAGS) -I. $(patsubst %,-I%,$(subst :, ,$(BB_SRC_DIR))) -c $< -o $*.o | ||
359 | else | ||
360 | $(CC) $(CFLAGS) -I- -I. $(patsubst %,-I%,$(subst :, ,$(BB_SRC_DIR))) -c $< -o $*.o | ||
361 | endif | ||
362 | 302 | ||
363 | $(PWD_OBJS): %.o: %.c Config.h busybox.h applets.h Makefile | 303 | CONFIG_SHELL := ${shell if [ -x "$$BASH" ]; then echo $$BASH; \ |
364 | - mkdir -p $(PWD_GRP) | 304 | else if [ -x /bin/bash ]; then echo /bin/bash; \ |
365 | $(CC) $(CFLAGS) $(PWD_CFLAGS) -c $< -o $*.o | 305 | else echo sh; fi ; fi} |
366 | 306 | ||
367 | $(LIBBB_OBJS): %.o: %.c Config.h busybox.h applets.h Makefile libbb/libbb.h | 307 | include/config/MARKER: scripts/split-include include/config.h |
368 | - mkdir -p $(LIBBB) | 308 | scripts/split-include include/config.h include/config |
369 | $(CC) $(CFLAGS) $(LIBBB_CFLAGS) -c $< -o $*.o | 309 | @ touch include/config/MARKER |
370 | 310 | ||
371 | $(LIBBB_MOBJ): $(LIBBB_MSRC) | 311 | menuconfig: |
372 | - mkdir -p $(LIBBB) | 312 | $(MAKE) -C scripts/lxdialog all |
373 | $(CC) $(CFLAGS) $(LIBBB_CFLAGS) -DL_$(patsubst libbb/%,%,$*) -c $< -o $*.o | 313 | $(CONFIG_SHELL) scripts/Menuconfig sysdeps/$(TARGET_OS)/config.in |
374 | 314 | ||
375 | $(LIBBB_AROBJS): $(LIBBB_ARCSRC) | 315 | config: |
376 | - mkdir -p $(LIBBB) | 316 | $(CONFIG_SHELL) scripts/Configure sysdeps/$(TARGET_OS)/config.in |
377 | $(CC) $(CFLAGS) $(LIBBB_CFLAGS) -DL_$(patsubst libbb/%,%,$*) -c $< -o $*.o | ||
378 | 317 | ||
379 | libpwd.a: $(PWD_OBJS) | 318 | oldconfig: |
380 | $(AR) $(ARFLAGS) $@ $^ | 319 | $(CONFIG_SHELL) scripts/Configure -d sysdeps/$(TARGET_OS)/config.in |
381 | 320 | ||
382 | libbb.a: $(LIBBB_MOBJ) $(LIBBB_AROBJS) $(LIBBB_OBJS) | ||
383 | $(AR) $(ARFLAGS) $@ $^ | ||
384 | 321 | ||
385 | usage.o: usage.h | 322 | ifdef CONFIGURATION |
323 | ..$(CONFIGURATION): | ||
324 | @echo | ||
325 | @echo "You have a bad or nonexistent" .$(CONFIGURATION) ": running 'make" $(CONFIGURATION)"'" | ||
326 | @echo | ||
327 | $(MAKE) $(CONFIGURATION) | ||
328 | @echo | ||
329 | @echo "Successful. Try re-making (ignore the error that follows)" | ||
330 | @echo | ||
331 | exit 1 | ||
386 | 332 | ||
387 | libbb/loop.o: libbb/loop.h | 333 | dummy: |
388 | 334 | ||
389 | libbb/loop.h: mk_loop_h.sh | 335 | else |
390 | @ $(SHELL) $< > $@ | ||
391 | 336 | ||
337 | dummy: | ||
338 | |||
339 | endif | ||
340 | |||
341 | include Rules.mak | ||
342 | |||
343 | # Testing... | ||
392 | test tests: | 344 | test tests: |
393 | # old way of doing it | 345 | # old way of doing it |
394 | #cd tests && $(MAKE) all | 346 | #cd tests && $(MAKE) all |
395 | # new way of doing it | 347 | # new way of doing it |
396 | cd tests && ./tester.sh | 348 | cd tests && ./tester.sh |
397 | 349 | ||
350 | # Cleanup | ||
398 | clean: | 351 | clean: |
399 | - cd tests && $(MAKE) clean | 352 | - $(MAKE) -C tests clean |
353 | - $(MAKE) -C scripts/lxdialog clean | ||
400 | - rm -f docs/BusyBox.txt docs/BusyBox.1 docs/BusyBox.html \ | 354 | - rm -f docs/BusyBox.txt docs/BusyBox.1 docs/BusyBox.html \ |
401 | docs/busybox.lineo.com/BusyBox.html | 355 | docs/busybox.lineo.com/BusyBox.html |
402 | - rm -f docs/busybox.txt docs/busybox.dvi docs/busybox.ps \ | 356 | - rm -f docs/busybox.txt docs/busybox.dvi docs/busybox.ps \ |
403 | docs/busybox.pdf docs/busybox.lineo.com/busybox.html | 357 | docs/busybox.pdf docs/busybox.lineo.com/busybox.html \ |
404 | - rm -f multibuild.log Config.h.orig *.gdb *.elf | 358 | docs/busybox _install pod2htm* *.gdb *.elf *~ core |
405 | - rm -rf docs/busybox _install libpwd.a libbb.a pod2htm* | 359 | - rm -f busybox.links libbb/loop.h .config.old .hdepend |
406 | - rm -f busybox.links libbb/loop.h *~ slist.mk core applet_source_list | 360 | - rm -f scripts/split-include scripts/mkdep .*config.log |
361 | - rm -rf include/config include/config.h | ||
362 | - find -name .\*.flags -o -name .depend -exec rm -f {} \; | ||
407 | - find -name \*.o -exec rm -f {} \; | 363 | - find -name \*.o -exec rm -f {} \; |
364 | - find -name \*.a -exec rm -f {} \; | ||
408 | 365 | ||
409 | distclean: clean | 366 | distclean: clean |
410 | - rm -f busybox applet_source_list | 367 | - rm -f busybox |
411 | - cd tests && $(MAKE) distclean | 368 | - cd tests && $(MAKE) distclean |
412 | 369 | ||
413 | install: install.sh busybox busybox.links | ||
414 | $(SHELL) $< $(PREFIX) | ||
415 | |||
416 | install-hardlinks: install.sh busybox busybox.links | ||
417 | $(SHELL) $< $(PREFIX) --hardlinks | ||
418 | |||
419 | debug_pristine: | ||
420 | @ echo VPATH=\"$(VPATH)\" | ||
421 | @ echo OBJECTS=\"$(OBJECTS)\" | ||
422 | |||
423 | dist release: distclean doc | 370 | dist release: distclean doc |
424 | cd ..; \ | 371 | cd ..; \ |
425 | rm -rf busybox-$(VERSION); \ | 372 | rm -rf busybox-$(VERSION); \ |
@@ -437,6 +384,8 @@ dist release: distclean doc | |||
437 | \ | 384 | \ |
438 | tar -cvzf busybox-$(VERSION).tar.gz busybox-$(VERSION)/; | 385 | tar -cvzf busybox-$(VERSION).tar.gz busybox-$(VERSION)/; |
439 | 386 | ||
387 | |||
388 | |||
440 | .PHONY: tags | 389 | .PHONY: tags |
441 | tags: | 390 | tags: |
442 | ctags -R . | 391 | ctags -R . |