aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2006-01-15 14:04:57 +0000
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2006-01-15 14:04:57 +0000
commit7ca61b6f3379bf66b446617b8834d92c13b366dd (patch)
treec0aaacfeb97a9bc74e73f8ff36ecbf1fd173808b
parent8c9daa12dcb4c1aa8f0f475896c9cfbcfb38370d (diff)
downloadbusybox-w32-7ca61b6f3379bf66b446617b8834d92c13b366dd.tar.gz
busybox-w32-7ca61b6f3379bf66b446617b8834d92c13b366dd.tar.bz2
busybox-w32-7ca61b6f3379bf66b446617b8834d92c13b366dd.zip
- shared libbusybox.
- IMA compilation option (aka IPO, IPA,..) Please holler if i broke something..
-rw-r--r--Makefile128
-rw-r--r--Rules.mak36
-rw-r--r--applets/Makefile.in7
-rw-r--r--applets/applets.c2
-rw-r--r--applets/busybox.c2
-rwxr-xr-xapplets/install.sh19
-rw-r--r--archival/Makefile.in7
-rw-r--r--archival/libunarchive/Makefile.in34
-rw-r--r--console-tools/Makefile.in30
-rw-r--r--coreutils/Makefile.in5
-rw-r--r--coreutils/libcoreutils/Makefile.in55
-rw-r--r--debianutils/Makefile.in4
-rw-r--r--e2fsprogs/Makefile.in11
-rw-r--r--editors/Makefile.in9
-rw-r--r--findutils/Makefile.in5
-rw-r--r--include/libbb.h2
-rw-r--r--init/Makefile.in15
-rw-r--r--libbb/Makefile.in95
-rw-r--r--libbb/find_mount_point.c5
-rw-r--r--libpwdgrp/Makefile.in27
-rw-r--r--loginutils/Makefile.in7
-rw-r--r--miscutils/Makefile.in7
-rw-r--r--modutils/Makefile.in5
-rw-r--r--networking/Makefile.in12
-rw-r--r--networking/libiproute/Makefile.in45
-rw-r--r--networking/udhcp/Makefile.in30
-rw-r--r--procps/Makefile.in5
-rw-r--r--shell/Makefile.in5
-rw-r--r--sysdeps/linux/Config.in60
-rw-r--r--sysklogd/Makefile.in5
-rw-r--r--util-linux/Makefile.in6
31 files changed, 514 insertions, 171 deletions
diff --git a/Makefile b/Makefile
index d3630c2ed..0a2a816de 100644
--- a/Makefile
+++ b/Makefile
@@ -185,6 +185,7 @@ randconfig: scripts/config/conf
185allyesconfig: scripts/config/conf 185allyesconfig: scripts/config/conf
186 @./scripts/config/conf -y $(CONFIG_CONFIG_IN) 186 @./scripts/config/conf -y $(CONFIG_CONFIG_IN)
187 sed -i -r -e "s/^(CONFIG_DEBUG|USING_CROSS_COMPILER|CONFIG_STATIC|CONFIG_SELINUX|CONFIG_FEATURE_DEVFS).*/# \1 is not set/" .config 187 sed -i -r -e "s/^(CONFIG_DEBUG|USING_CROSS_COMPILER|CONFIG_STATIC|CONFIG_SELINUX|CONFIG_FEATURE_DEVFS).*/# \1 is not set/" .config
188 echo "CONFIG_FEATURE_SHARED_BUSYBOX=y" >> .config
188 @./scripts/config/conf -o $(CONFIG_CONFIG_IN) 189 @./scripts/config/conf -o $(CONFIG_CONFIG_IN)
189 190
190allnoconfig: scripts/config/conf 191allnoconfig: scripts/config/conf
@@ -207,19 +208,102 @@ all: busybox busybox.links doc
207# In this section, we need .config 208# In this section, we need .config
208-include $(top_builddir)/.config.cmd 209-include $(top_builddir)/.config.cmd
209include $(patsubst %,%/Makefile.in, $(SRC_DIRS)) 210include $(patsubst %,%/Makefile.in, $(SRC_DIRS))
210-include $(top_builddir)/.depend
211 211
212endif # ifneq ($(strip $(HAVE_DOT_CONFIG)),y) 212endif # ifneq ($(strip $(HAVE_DOT_CONFIG)),y)
213 213
214busybox: .depend $(libraries-y) 214-include $(top_builddir)/.config
215 $(CC) $(EXTRA_CFLAGS) $(LDFLAGS) -o $@ -Wl,--start-group $(libraries-y) $(LIBRARIES) -Wl,--end-group 215-include $(top_builddir)/.depend
216
217
218ifeq ($(strip $(CONFIG_BUILD_LIBBUSYBOX)),y)
219
220LD_LIBBUSYBOX:=libbusybox.so
221LIBBUSYBOX_SONAME:=$(LD_LIBBUSYBOX).$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL_VERSION)
222DO_INSTALL_LIBS:=$(LD_LIBBUSYBOX) \
223 $(LD_LIBBUSYBOX).$(MAJOR_VERSION) \
224 $(LD_LIBBUSYBOX).$(MAJOR_VERSION).$(MINOR_VERSION)
225
226ifeq ($(CONFIG_BUILD_AT_ONCE),y)
227# Which parts of the internal libs are requested?
228# Per default we only want what was actually selected.
229ifeq ($(CONFIG_FEATURE_FULL_LIBBUSYBOX),y)
230LIBRARY_DEFINE:=$(LIBRARY_DEFINE-a)
231LIBRARY_SRC :=$(LIBRARY_SRC-a)
232$(LIBBUSYBOX_SONAME): $(LIBRARY_SRC)
233else
234LIBRARY_DEFINE:=$(LIBRARY_DEFINE-y)
235LIBRARY_SRC :=$(LIBRARY_SRC-y)
236$(LIBBUSYBOX_SONAME): $(LIBRARY_SRC)
237endif
238else # CONFIG_BUILD_AT_ONCE
239libbusybox-obj:=archival/libunarchive/libunarchive.a \
240 networking/libiproute/libiproute.a \
241 libpwdgrp/libpwdgrp.a \
242 coreutils/libcoreutils/libcoreutils.a \
243 libbb/libbb.a
244libbusybox-obj:=$(patsubst %,$(top_builddir)/%,$(libbusybox-obj))
245
246$(LIBBUSYBOX_SONAME): $(libbusybox-obj)
247
248LIBRARY_DEFINE:=
249LIBRARY_SRC :=
250endif # CONFIG_BUILD_AT_ONCE
251
252
253$(LIBBUSYBOX_SONAME):
254ifndef MAJOR_VERSION
255 $(error MAJOR_VERSION needed for $@ is not defined)
256endif
257 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(LDFLAGS) -shared \
258 $(CFLAGS_PIC) \
259 -Wl,-soname=$(LD_LIBBUSYBOX).$(MAJOR_VERSION) \
260 -Wl,--enable-new-dtags -Wl,--reduce-memory-overheads \
261 -Wl,-z,combreloc -Wl,-shared -Wl,--as-needed -Wl,--warn-shared-textrel \
262 -o $(@) \
263 -Wl,--start-group -Wl,--whole-archive \
264 $(LIBRARY_DEFINE) $(^) \
265 -Wl,--no-whole-archive -Wl,--end-group
266 $(RM_F) $(DO_INSTALL_LIBS)
267 for i in $(DO_INSTALL_LIBS); do $(LN_S) -v $(@) $$i ; done
268 $(STRIPCMD) $@
269
270endif # ifeq ($(strip $(CONFIG_BUILD_LIBBUSYBOX)),y)
271
272
273ifeq ($(strip $(CONFIG_FEATURE_SHARED_BUSYBOX)),y)
274libraries-y:=$(filter-out $(libbusybox-obj),$(libraries-y))
275LDBUSYBOX:=-L$(top_builddir) -lbusybox
276BUSYBOX_SRC :=
277BUSYBOX_DEFINE:=
278else
279#LDBUSYBOX:=
280BUSYBOX_SRC := $(LIBRARY_SRC)
281BUSYBOX_DEFINE:= $(LIBRARY_DEFINE)
282endif # ifeq ($(strip $(CONFIG_FEATURE_SHARED_BUSYBOX)),y)
283
284
285ifeq ($(strip $(CONFIG_BUILD_AT_ONCE)),y)
286libraries-y:=
287else
288BUSYBOX_SRC:=
289BUSYBOX_DEFINE:=
290APPLET_SRC-y:=
291APPLETS_DEFINE-y:=
292endif
293
294busybox: .depend $(LIBBUSYBOX_SONAME) $(BUSYBOX_SRC) $(libraries-y)
295 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(PROG_CFLAGS) $(LDFLAGS) \
296 -o $@ -Wl,--start-group \
297 $(APPLETS_DEFINE-y) $(APPLET_SRC-y) $(BUSYBOX_DEFINE) $(BUSYBOX_SRC) $(libraries-y) $(LDBUSYBOX) $(LIBRARIES) \
298 -Wl,--end-group
216 $(STRIPCMD) $@ 299 $(STRIPCMD) $@
217 300
218busybox.links: $(top_srcdir)/applets/busybox.mkll include/bb_config.h $(top_srcdir)/include/applets.h 301busybox.links: $(top_srcdir)/applets/busybox.mkll include/bb_config.h $(top_srcdir)/include/applets.h
219 - $(SHELL) $^ >$@ 302 - $(SHELL) $^ >$@
220 303
221install: $(top_srcdir)/applets/install.sh busybox busybox.links 304install: $(top_srcdir)/applets/install.sh busybox busybox.links
222 $(SHELL) $< $(PREFIX) $(INSTALL_OPTS) 305 DO_INSTALL_LIBS="$(strip $(LIBBUSYBOX_SONAME) $(DO_INSTALL_LIBS))" \
306 $(SHELL) $< $(PREFIX) $(INSTALL_OPTS)
223ifeq ($(strip $(CONFIG_FEATURE_SUID)),y) 307ifeq ($(strip $(CONFIG_FEATURE_SUID)),y)
224 @echo 308 @echo
225 @echo 309 @echo
@@ -232,8 +316,13 @@ ifeq ($(strip $(CONFIG_FEATURE_SUID)),y)
232endif 316endif
233 317
234uninstall: busybox.links 318uninstall: busybox.links
235 rm -f $(PREFIX)/bin/busybox 319 $(RM_F) $(PREFIX)/bin/busybox
236 for i in `cat busybox.links` ; do rm -f $(PREFIX)$$i; done 320 for i in `cat busybox.links` ; do $(RM_F) $(PREFIX)$$i; done
321ifneq ($(strip $(DO_INSTALL_LIBS)),n)
322 for i in $(LIBBUSYBOX_SONAME) $(DO_INSTALL_LIBS); do \
323 $(RM_F) $(PREFIX)$$i; \
324 done
325endif
237 326
238# see if we are in verbose mode 327# see if we are in verbose mode
239KBUILD_VERBOSE := 328KBUILD_VERBOSE :=
@@ -244,13 +333,14 @@ ifdef V
244endif 333endif
245ifneq ($(strip $(KBUILD_VERBOSE)),) 334ifneq ($(strip $(KBUILD_VERBOSE)),)
246 CHECK_VERBOSE := -v 335 CHECK_VERBOSE := -v
336# ARFLAGS+=v
247endif 337endif
248check test: busybox 338check test: busybox
249 bindir=$(top_builddir) srcdir=$(top_srcdir)/testsuite \ 339 bindir=$(top_builddir) srcdir=$(top_srcdir)/testsuite \
250 $(top_srcdir)/testsuite/runtest $(CHECK_VERBOSE) 340 $(top_srcdir)/testsuite/runtest $(CHECK_VERBOSE)
251 341
252sizes: 342sizes:
253 -rm -f busybox 343 -$(RM_F) busybox
254 $(MAKE) top_srcdir=$(top_srcdir) top_builddir=$(top_builddir) \ 344 $(MAKE) top_srcdir=$(top_srcdir) top_builddir=$(top_builddir) \
255 -f $(top_srcdir)/Makefile STRIPCMD=/bin/true 345 -f $(top_srcdir)/Makefile STRIPCMD=/bin/true
256 $(NM) --size-sort busybox 346 $(NM) --size-sort busybox
@@ -278,14 +368,14 @@ docs/BusyBox.1: docs/busybox.pod
278 368
279docs/BusyBox.html: docs/busybox.net/BusyBox.html 369docs/BusyBox.html: docs/busybox.net/BusyBox.html
280 - mkdir -p docs 370 - mkdir -p docs
281 -@ rm -f docs/BusyBox.html 371 -@ $(RM_F) docs/BusyBox.html
282 -@ cp docs/busybox.net/BusyBox.html docs/BusyBox.html 372 -@ cp docs/busybox.net/BusyBox.html docs/BusyBox.html
283 373
284docs/busybox.net/BusyBox.html: docs/busybox.pod 374docs/busybox.net/BusyBox.html: docs/busybox.pod
285 -@ mkdir -p docs/busybox.net 375 -@ mkdir -p docs/busybox.net
286 - pod2html --noindex $< > \ 376 - pod2html --noindex $< > \
287 docs/busybox.net/BusyBox.html 377 docs/busybox.net/BusyBox.html
288 -@ rm -f pod2htm* 378 -@ $(RM_F) pod2htm*
289 379
290# The nifty new buildsystem stuff 380# The nifty new buildsystem stuff
291scripts/bb_mkdep: $(top_srcdir)/scripts/bb_mkdep.c 381scripts/bb_mkdep: $(top_srcdir)/scripts/bb_mkdep.c
@@ -302,7 +392,7 @@ endif
302 392
303depend dep: .depend 393depend dep: .depend
304.depend: scripts/bb_mkdep $(DEP_INCLUDES) 394.depend: scripts/bb_mkdep $(DEP_INCLUDES)
305 @rm -f .depend 395 @$(RM_F) .depend
306 @mkdir -p include/config 396 @mkdir -p include/config
307 scripts/bb_mkdep -c include/config.h -c include/bb_config.h \ 397 scripts/bb_mkdep -c include/config.h -c include/bb_config.h \
308 -I $(top_srcdir)/include $(top_srcdir) > $@.tmp 398 -I $(top_srcdir)/include $(top_srcdir) > $@.tmp
@@ -323,22 +413,24 @@ include/bb_config.h: include/config.h
323 413
324clean: 414clean:
325 - $(MAKE) -C scripts/config $@ 415 - $(MAKE) -C scripts/config $@
326 - rm -f docs/busybox.dvi docs/busybox.ps \ 416 - $(RM_F) docs/busybox.dvi docs/busybox.ps \
327 docs/busybox.pod docs/busybox.net/busybox.html \ 417 docs/busybox.pod docs/busybox.net/busybox.html \
328 docs/busybox pod2htm* *.gdb *.elf *~ core .*config.log \ 418 docs/busybox pod2htm* *.gdb *.elf *~ core .*config.log \
329 docs/BusyBox.txt docs/BusyBox.1 docs/BusyBox.html \ 419 docs/BusyBox.txt docs/BusyBox.1 docs/BusyBox.html \
330 docs/busybox.net/BusyBox.html busybox.links libbb/loop.h \ 420 docs/busybox.net/BusyBox.html busybox.links libbb/loop.h \
421 $(DO_INSTALL_LIBS) $(LIBBUSYBOX_SONAME) \
331 .config.old busybox 422 .config.old busybox
332 - rm -rf _install testsuite/links 423 - rm -rf _install testsuite/links
333 - find . -name .\*.flags -exec rm -f {} \; 424 - find . -name .\*.flags -exec $(RM_F) {} \;
334 - find . -name \*.o -exec rm -f {} \; 425 - find . -name \*.o -exec $(RM_F) {} \;
335 - find . -name \*.a -exec rm -f {} \; 426 - find . -name \*.a -exec $(RM_F) {} \;
427 - find . -name \*.so -exec $(RM_F) {} \;
336 428
337distclean: clean 429distclean: clean
338 - rm -f scripts/bb_mkdep 430 - $(RM_F) scripts/bb_mkdep
339 - rm -rf include/config include/config.h include/bb_config.h include/bbconfigopts.h 431 - rm -rf include/config include/config.h include/bb_config.h include/bbconfigopts.h
340 - find . -name .depend -exec rm -f {} \; 432 - find . -name .depend -exec $(RM_F) {} \;
341 rm -f .config .config.old .config.cmd 433 $(RM_F) .config .config.old .config.cmd
342 434
343release: distclean #doc 435release: distclean #doc
344 cd ..; \ 436 cd ..; \
@@ -353,7 +445,7 @@ release: distclean #doc
353 find $(PROG)-$(VERSION)/ -type f \ 445 find $(PROG)-$(VERSION)/ -type f \
354 -name .\#* \ 446 -name .\#* \
355 -print \ 447 -print \
356 -exec rm -f {} \; ; \ 448 -exec $(RM_F) {} \; ; \
357 \ 449 \
358 tar -cvzf $(PROG)-$(VERSION).tar.gz $(PROG)-$(VERSION)/; 450 tar -cvzf $(PROG)-$(VERSION).tar.gz $(PROG)-$(VERSION)/;
359 451
diff --git a/Rules.mak b/Rules.mak
index b142ee41f..df3c22e7d 100644
--- a/Rules.mak
+++ b/Rules.mak
@@ -81,7 +81,8 @@ CFLAGS_EXTRA=$(subst ",, $(strip $(EXTRA_CFLAGS_OPTIONS)))
81#GCCINCDIR:=$(shell gcc -print-search-dirs | sed -ne "s/install: \(.*\)/\1include/gp") 81#GCCINCDIR:=$(shell gcc -print-search-dirs | sed -ne "s/install: \(.*\)/\1include/gp")
82 82
83WARNINGS=-Wall -Wstrict-prototypes -Wshadow 83WARNINGS=-Wall -Wstrict-prototypes -Wshadow
84CFLAGS=-I$(top_builddir)/include -I$(top_srcdir)/include -I$(srcdir) 84CFLAGS+=-I$(top_builddir)/include -I$(top_srcdir)/include -I$(srcdir)
85
85ARFLAGS=cru 86ARFLAGS=cru
86 87
87 88
@@ -125,6 +126,8 @@ endif
125 126
126CFLAGS+=$(call check_gcc,-funsigned-char,) 127CFLAGS+=$(call check_gcc,-funsigned-char,)
127 128
129CFLAGS+=$(call check_gcc,-mmax-stack-frame=256,)
130
128#-------------------------------------------------------- 131#--------------------------------------------------------
129# Arch specific compiler optimization stuff should go here. 132# Arch specific compiler optimization stuff should go here.
130# Unless you want to override the defaults, do not set anything 133# Unless you want to override the defaults, do not set anything
@@ -133,15 +136,38 @@ CFLAGS+=$(call check_gcc,-funsigned-char,)
133# use '-Os' optimization if available, else use -O2 136# use '-Os' optimization if available, else use -O2
134OPTIMIZATION:=$(call check_gcc,-Os,-O2) 137OPTIMIZATION:=$(call check_gcc,-Os,-O2)
135 138
139ifeq ($(CONFIG_BUILD_AT_ONCE),y)
140# gcc 2.95 exits with 0 for "unrecognized option"
141ifeq ($(strip $(shell [ $(CC_MAJOR) -ge 3 ] ; echo $$?)),0)
142 OPTIMIZATION+=$(call check_gcc,-combine,)
143endif
144OPTIMIZATION+=$(call check_gcc,-funit-at-a-time,)
145PROG_CFLAGS+=$(call check_gcc,-fwhole-program,)
146endif # CONFIG_BUILD_AT_ONCE
147
136# Some nice architecture specific optimizations 148# Some nice architecture specific optimizations
137ifeq ($(strip $(TARGET_ARCH)),arm) 149ifeq ($(strip $(TARGET_ARCH)),arm)
138 OPTIMIZATION+=-fstrict-aliasing 150 OPTIMIZATION+=-fstrict-aliasing
151 OPTIMIZATION+=$(call check_gcc,-msingle-pic-base,)
139endif 152endif
140ifeq ($(strip $(TARGET_ARCH)),i386) 153ifeq ($(strip $(TARGET_ARCH)),i386)
141 OPTIMIZATION+=$(call check_gcc,-march=i386,) 154 OPTIMIZATION+=$(call check_gcc,-march=i386,)
155# gcc-4.0 and older seem to suffer from these
156ifneq ($(strip $(shell [ $(CC_MAJOR) -ge 4 -a $(CC_MINOR) -ge 1 ] ; echo $$?)),0)
142 OPTIMIZATION+=$(call check_gcc,-mpreferred-stack-boundary=2,) 157 OPTIMIZATION+=$(call check_gcc,-mpreferred-stack-boundary=2,)
143 OPTIMIZATION+=$(call check_gcc,-falign-functions=0 -falign-jumps=0 -falign-loops=0,\ 158 OPTIMIZATION+=$(call check_gcc,-falign-functions=0 -falign-jumps=0 -falign-loops=0,\
144 -malign-functions=0 -malign-jumps=0 -malign-loops=0) 159 -malign-functions=0 -malign-jumps=0 -malign-loops=0)
160endif # gcc-4.0 and older
161
162# gcc-4.1 and beyond seem to benefit from these
163ifeq ($(strip $(shell [ $(CC_MAJOR) -ge 4 -a $(CC_MINOR) -ge 1 ] ; echo $$?)),0)
164 # turn off flags which hurt -Os
165 OPTIMIZATION+=$(call check_gcc,-fno-tree-loop-optimize,)
166 OPTIMIZATION+=$(call check_gcc,-fno-tree-dominator-opts,)
167 OPTIMIZATION+=$(call check_gcc,-fno-strength-reduce,)
168
169 OPTIMIZATION+=$(call check_gcc,-fno-branch-count-reg,)
170endif # gcc-4.1 and beyond
145endif 171endif
146OPTIMIZATIONS:=$(OPTIMIZATION) -fomit-frame-pointer 172OPTIMIZATIONS:=$(OPTIMIZATION) -fomit-frame-pointer
147 173
@@ -173,11 +199,17 @@ ifeq ($(strip $(CONFIG_DEBUG)),y)
173 STRIPCMD:=/bin/true -Not_stripping_since_we_are_debugging 199 STRIPCMD:=/bin/true -Not_stripping_since_we_are_debugging
174else 200else
175 CFLAGS+=$(WARNINGS) $(OPTIMIZATIONS) -D_GNU_SOURCE -DNDEBUG 201 CFLAGS+=$(WARNINGS) $(OPTIMIZATIONS) -D_GNU_SOURCE -DNDEBUG
176 LDFLAGS += -Wl,-warn-common 202 LDFLAGS += -Wl,-warn-common -Wl,--sort-common
177 STRIPCMD:=$(STRIP) -s --remove-section=.note --remove-section=.comment 203 STRIPCMD:=$(STRIP) -s --remove-section=.note --remove-section=.comment
178endif 204endif
179ifeq ($(strip $(CONFIG_STATIC)),y) 205ifeq ($(strip $(CONFIG_STATIC)),y)
180 LDFLAGS += --static 206 LDFLAGS += --static
207#else
208# LIBRARIES += -ldl
209endif
210
211ifeq ($(strip $(CONFIG_BUILD_LIBBUSYBOX)),y)
212 CFLAGS_PIC:= -fPIC #-DPIC
181endif 213endif
182 214
183ifeq ($(strip $(CONFIG_SELINUX)),y) 215ifeq ($(strip $(CONFIG_SELINUX)),y)
diff --git a/applets/Makefile.in b/applets/Makefile.in
index 511652a93..80b6da0b1 100644
--- a/applets/Makefile.in
+++ b/applets/Makefile.in
@@ -10,8 +10,11 @@ APPLETS_DIR:=$(top_builddir)/applets/
10endif 10endif
11srcdir=$(top_srcdir)/applets 11srcdir=$(top_srcdir)/applets
12 12
13APPLET_SRC:=applets.c busybox.c 13APPLET_SRC:= $(patsubst %,$(srcdir)/%,applets.c busybox.c)
14APPLET_OBJ:= $(patsubst %.c,$(APPLETS_DIR)%.o, $(APPLET_SRC)) 14APPLET_OBJ:= $(patsubst $(srcdir)/%.c,$(APPLETS_DIR)%.o, $(APPLET_SRC))
15
16APPLET_SRC-y+=$(APPLET_SRC)
17APPLET_SRC-a+=$(APPLET_SRC)
15 18
16libraries-y+=$(APPLETS_DIR)$(APPLETS_AR) 19libraries-y+=$(APPLETS_DIR)$(APPLETS_AR)
17 20
diff --git a/applets/applets.c b/applets/applets.c
index dde75f236..de1a871e0 100644
--- a/applets/applets.c
+++ b/applets/applets.c
@@ -265,7 +265,7 @@ static void parse_config_file(void)
265 } 265 }
266 266
267 /* Now get the the user/group info. */ 267 /* Now get the the user/group info. */
268 268
269 s = (char *) bb_skip_whitespace(e); 269 s = (char *) bb_skip_whitespace(e);
270 270
271 /* Note: We require whitespace between the mode and the 271 /* Note: We require whitespace between the mode and the
diff --git a/applets/busybox.c b/applets/busybox.c
index 90ea2bdce..3d7a0fd0b 100644
--- a/applets/busybox.c
+++ b/applets/busybox.c
@@ -11,7 +11,7 @@
11#define setlocale(x,y) 11#define setlocale(x,y)
12#endif 12#endif
13 13
14const char *bb_applet_name; 14const char *bb_applet_name __attribute__((externally_visible));
15 15
16#ifdef CONFIG_FEATURE_INSTALLER 16#ifdef CONFIG_FEATURE_INSTALLER
17/* 17/*
diff --git a/applets/install.sh b/applets/install.sh
index 2fcd2ae6e..cc6c1fa49 100755
--- a/applets/install.sh
+++ b/applets/install.sh
@@ -3,8 +3,8 @@
3export LC_ALL=POSIX 3export LC_ALL=POSIX
4export LC_CTYPE=POSIX 4export LC_CTYPE=POSIX
5 5
6prefix=$1 6prefix=${1}
7if [ "$prefix" = "" ]; then 7if [ -z "$prefix" ]; then
8 echo "No installation directory, aborting." 8 echo "No installation directory, aborting."
9 exit 1; 9 exit 1;
10fi 10fi
@@ -16,7 +16,22 @@ case "$2" in
16 *) echo "Unknown install option: $2"; exit 1;; 16 *) echo "Unknown install option: $2"; exit 1;;
17esac 17esac
18 18
19if [ "$DO_INSTALL_LIBS" != "n" ]; then
20 # get the target dir for the libs
21 # This is an incomplete/incorrect list for now
22 case $(uname -m) in
23 x86_64|ppc64*|sparc64*|ia64*|hppa*64*) libdir=/lib64 ;;
24 *) libdir=/lib ;;
25 esac
19 26
27 mkdir -p $prefix/$libdir || exit 1
28 for i in $DO_INSTALL_LIBS; do
29 rm -f $prefix/$libdir/$i || exit 1
30 if [ -f $i ]; then
31 install -m 644 $i $prefix/$libdir/ || exit 1
32 fi
33 done
34fi
20rm -f $prefix/bin/busybox || exit 1 35rm -f $prefix/bin/busybox || exit 1
21mkdir -p $prefix/bin || exit 1 36mkdir -p $prefix/bin || exit 1
22install -m 755 busybox $prefix/bin/busybox || exit 1 37install -m 755 busybox $prefix/bin/busybox || exit 1
diff --git a/archival/Makefile.in b/archival/Makefile.in
index f4ec6794e..735b659e0 100644
--- a/archival/Makefile.in
+++ b/archival/Makefile.in
@@ -27,8 +27,13 @@ ARCHIVAL-$(CONFIG_UNZIP) += unzip.o
27 27
28libraries-y+=$(ARCHIVAL_DIR)$(ARCHIVAL_AR) 28libraries-y+=$(ARCHIVAL_DIR)$(ARCHIVAL_AR)
29 29
30ARCHIVAL_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(ARCHIVAL-y))
31ARCHIVAL_SRC-a:=$(wildcard $(srcdir)/*.c)
32APPLET_SRC-y+=$(ARCHIVAL_SRC-y)
33APPLET_SRC-a+=$(ARCHIVAL_SRC-a)
34
30$(ARCHIVAL_DIR)$(ARCHIVAL_AR): $(patsubst %,$(ARCHIVAL_DIR)%, $(ARCHIVAL-y)) 35$(ARCHIVAL_DIR)$(ARCHIVAL_AR): $(patsubst %,$(ARCHIVAL_DIR)%, $(ARCHIVAL-y))
31 $(AR) $(ARFLAGS) $@ $(patsubst %,$(ARCHIVAL_DIR)%, $(ARCHIVAL-y)) 36 $(AR) $(ARFLAGS) $@ $(^)
32 37
33$(ARCHIVAL_DIR)%.o: $(srcdir)/%.c 38$(ARCHIVAL_DIR)%.o: $(srcdir)/%.c
34 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $< 39 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<
diff --git a/archival/libunarchive/Makefile.in b/archival/libunarchive/Makefile.in
index 98fd76c12..99eb6386d 100644
--- a/archival/libunarchive/Makefile.in
+++ b/archival/libunarchive/Makefile.in
@@ -2,27 +2,20 @@
2# 2#
3# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org> 3# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
4# 4#
5# This program is free software; you can redistribute it and/or modify 5# Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
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# 6#
19 7
20LIBUNARCHIVE_AR:=libunarchive.a 8LIBUNARCHIVE_AR:=libunarchive.a
21ifndef $(LIBUNARCHIVE_DIR) 9ifndef $(LIBUNARCHIVE_DIR)
22LIBUNARCHIVE_DIR:=$(top_builddir)/archival/libunarchive/ 10LIBUNARCHIVE_DIR:=$(top_builddir)/archival/libunarchive
23endif 11endif
24srcdir=$(top_srcdir)/archival/libunarchive 12srcdir=$(top_srcdir)/archival/libunarchive
25 13
14LIBUNARCHIVE-obj:=$(LIBUNARCHIVE_DIR)/$(LIBUNARCHIVE_AR)
15LIBUNARCHIVE-pic:=$(LIBUNARCHIVE_DIR)/$(subst .a,-pic.a,$(LIBUNARCHIVE_AR))
16
17libraries-y+=$(LIBUNARCHIVE-obj)
18
26LIBUNARCHIVE-y:= \ 19LIBUNARCHIVE-y:= \
27\ 20\
28 data_skip.o \ 21 data_skip.o \
@@ -74,12 +67,17 @@ LIBUNARCHIVE-$(CONFIG_FEATURE_TAR_COMPRESS) += decompress_uncompress.o
74LIBUNARCHIVE-$(CONFIG_UNCOMPRESS) += decompress_uncompress.o 67LIBUNARCHIVE-$(CONFIG_UNCOMPRESS) += decompress_uncompress.o
75LIBUNARCHIVE-$(CONFIG_UNZIP) += $(GUNZIP_FILES) 68LIBUNARCHIVE-$(CONFIG_UNZIP) += $(GUNZIP_FILES)
76 69
77libraries-y+=$(LIBUNARCHIVE_DIR)$(LIBUNARCHIVE_AR)
78 70
79LIBUNARCHIVE-y:=$(sort $(LIBUNARCHIVE-y)) 71LIBUNARCHIVE-y:=$(sort $(LIBUNARCHIVE-y))
80$(LIBUNARCHIVE_DIR)$(LIBUNARCHIVE_AR): $(patsubst %,$(LIBUNARCHIVE_DIR)%, $(LIBUNARCHIVE-y))
81 $(AR) $(ARFLAGS) $@ $(patsubst %,$(LIBUNARCHIVE_DIR)%, $(LIBUNARCHIVE-y))
82 72
83$(LIBUNARCHIVE_DIR)%.o: $(srcdir)/%.c 73LIBUNARCHIVE_SRC-y:=$(patsubst %,$(srcdir)/%,$(subst .o,.c,$(LIBUNARCHIVE-y)))
74LIBUNARCHIVE_SRC-a:=$(wildcard $(srcdir)/*.c)
75LIBRARY_SRC-y+=$(LIBUNARCHIVE_SRC-y)
76LIBRARY_SRC-a+=$(LIBUNARCHIVE_SRC-a)
77
78$(LIBUNARCHIVE_DIR)/$(LIBUNARCHIVE_AR): $(patsubst %,$(LIBUNARCHIVE_DIR)/%,$(LIBUNARCHIVE-y))
79 $(AR) $(ARFLAGS) $(@) $(^)
80
81$(LIBUNARCHIVE_DIR)/%.o: $(srcdir)/%.c
84 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $< 82 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<
85 83
diff --git a/console-tools/Makefile.in b/console-tools/Makefile.in
index 46cf524be..87858cd8e 100644
--- a/console-tools/Makefile.in
+++ b/console-tools/Makefile.in
@@ -10,22 +10,26 @@ CONSOLETOOLS_DIR:=$(top_builddir)/console-tools/
10endif 10endif
11srcdir=$(top_srcdir)/console-tools 11srcdir=$(top_srcdir)/console-tools
12 12
13CONSOLETOOLS_DIR-y:= 13CONSOLETOOLS-y:=
14CONSOLETOOLS_DIR-$(CONFIG_CHVT) += chvt.o 14CONSOLETOOLS-$(CONFIG_CHVT) += chvt.o
15CONSOLETOOLS_DIR-$(CONFIG_CLEAR) += clear.o 15CONSOLETOOLS-$(CONFIG_CLEAR) += clear.o
16CONSOLETOOLS_DIR-$(CONFIG_DEALLOCVT) += deallocvt.o 16CONSOLETOOLS-$(CONFIG_DEALLOCVT) += deallocvt.o
17CONSOLETOOLS_DIR-$(CONFIG_DUMPKMAP) += dumpkmap.o 17CONSOLETOOLS-$(CONFIG_DUMPKMAP) += dumpkmap.o
18CONSOLETOOLS_DIR-$(CONFIG_SETCONSOLE) += setconsole.o 18CONSOLETOOLS-$(CONFIG_SETCONSOLE) += setconsole.o
19CONSOLETOOLS_DIR-$(CONFIG_LOADFONT) += loadfont.o 19CONSOLETOOLS-$(CONFIG_LOADFONT) += loadfont.o
20CONSOLETOOLS_DIR-$(CONFIG_LOADKMAP) += loadkmap.o 20CONSOLETOOLS-$(CONFIG_LOADKMAP) += loadkmap.o
21CONSOLETOOLS_DIR-$(CONFIG_OPENVT) += openvt.o 21CONSOLETOOLS-$(CONFIG_OPENVT) += openvt.o
22CONSOLETOOLS_DIR-$(CONFIG_RESET) += reset.o 22CONSOLETOOLS-$(CONFIG_RESET) += reset.o
23CONSOLETOOLS_DIR-$(CONFIG_SETKEYCODES) += setkeycodes.o 23CONSOLETOOLS-$(CONFIG_SETKEYCODES) += setkeycodes.o
24 24
25libraries-y+=$(CONSOLETOOLS_DIR)$(CONSOLETOOLS_AR) 25libraries-y+=$(CONSOLETOOLS_DIR)$(CONSOLETOOLS_AR)
26CONSOLETOOLS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(CONSOLETOOLS-y))
27CONSOLETOOLS_SRC-a:=$(wildcard $(srcdir)/*.c)
28APPLET_SRC-y+=$(CONSOLETOOLS_SRC-y)
29APPLET_SRC-a+=$(CONSOLETOOLS_SRC-a)
26 30
27$(CONSOLETOOLS_DIR)$(CONSOLETOOLS_AR): $(patsubst %,$(CONSOLETOOLS_DIR)%, $(CONSOLETOOLS_DIR-y)) 31$(CONSOLETOOLS_DIR)$(CONSOLETOOLS_AR): $(patsubst %,$(CONSOLETOOLS_DIR)%, $(CONSOLETOOLS-y))
28 $(AR) $(ARFLAGS) $@ $(patsubst %,$(CONSOLETOOLS_DIR)%, $(CONSOLETOOLS_DIR-y)) 32 $(AR) $(ARFLAGS) $@ $(patsubst %,$(CONSOLETOOLS_DIR)%, $(CONSOLETOOLS-y))
29 33
30$(CONSOLETOOLS_DIR)%.o: $(srcdir)/%.c 34$(CONSOLETOOLS_DIR)%.o: $(srcdir)/%.c
31 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $< 35 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<
diff --git a/coreutils/Makefile.in b/coreutils/Makefile.in
index 9dc604b1a..54ccf921f 100644
--- a/coreutils/Makefile.in
+++ b/coreutils/Makefile.in
@@ -81,7 +81,12 @@ COREUTILS-$(CONFIG_WHO) += who.o
81COREUTILS-$(CONFIG_WHOAMI) += whoami.o 81COREUTILS-$(CONFIG_WHOAMI) += whoami.o
82COREUTILS-$(CONFIG_YES) += yes.o 82COREUTILS-$(CONFIG_YES) += yes.o
83 83
84COREUTILS-y:=$(sort $(COREUTILS-y))
84libraries-y+=$(COREUTILS_DIR)$(COREUTILS_AR) 85libraries-y+=$(COREUTILS_DIR)$(COREUTILS_AR)
86COREUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(COREUTILS-y))
87COREUTILS_SRC-a:=$(wildcard $(srcdir)/*.c)
88APPLET_SRC-y+=$(COREUTILS_SRC-y)
89APPLET_SRC-a+=$(COREUTILS_SRC-a)
85 90
86$(COREUTILS_DIR)$(COREUTILS_AR): $(patsubst %,$(COREUTILS_DIR)%, $(COREUTILS-y)) 91$(COREUTILS_DIR)$(COREUTILS_AR): $(patsubst %,$(COREUTILS_DIR)%, $(COREUTILS-y))
87 $(AR) $(ARFLAGS) $@ $(patsubst %,$(COREUTILS_DIR)%, $(COREUTILS-y)) 92 $(AR) $(ARFLAGS) $@ $(patsubst %,$(COREUTILS_DIR)%, $(COREUTILS-y))
diff --git a/coreutils/libcoreutils/Makefile.in b/coreutils/libcoreutils/Makefile.in
index fe66c8243..1f0c19e73 100644
--- a/coreutils/libcoreutils/Makefile.in
+++ b/coreutils/libcoreutils/Makefile.in
@@ -2,36 +2,51 @@
2# 2#
3# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org> 3# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
4# 4#
5# This program is free software; you can redistribute it and/or modify 5# Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
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# 6#
19 7
20LIBCOREUTILS_AR:=libcoreutils.a 8LIBCOREUTILS_AR:=libcoreutils.a
21ifndef $(LIBCOREUTILS_DIR) 9ifndef $(LIBCOREUTILS_DIR)
22LIBCOREUTILS_DIR:=$(top_builddir)/coreutils/libcoreutils/ 10LIBCOREUTILS_DIR:=$(top_builddir)/coreutils/libcoreutils
23endif 11endif
24srcdir=$(top_srcdir)/coreutils/libcoreutils 12srcdir=$(top_srcdir)/coreutils/libcoreutils
25 13
26LIBCOREUTILS_SRC:= cp_mv_stat.c getopt_mk_fifo_nod.c 14LIBCOREUTILS_ALL_SRC:= cp_mv_stat.c getopt_mk_fifo_nod.c
15
16LIBCOREUTILS-y:=
17LIBCOREUTILS-$(CONFIG_MKFIFO) += getopt_mk_fifo_nod.o
18LIBCOREUTILS-$(CONFIG_MKNOD) += getopt_mk_fifo_nod.o
19LIBCOREUTILS-$(CONFIG_INSTALL) += cp_mv_stat.o
20LIBCOREUTILS-$(CONFIG_CP) += cp_mv_stat.o
21LIBCOREUTILS-$(CONFIG_MV) += cp_mv_stat.o
22
23LIBCOREUTILS-y:=$(sort $(LIBCOREUTILS-y))
24
25LIBCOREUTILS_SRC-y:=$(patsubst %,$(srcdir)/%,$(subst .o,.c,$(LIBCOREUTILS-y)))
26LIBCOREUTILS_SRC-a:=$(wildcard $(srcdir)/*.c)
27LIBRARY_SRC-y+=$(LIBCOREUTILS_SRC-y)
28LIBRARY_SRC-a+=$(LIBCOREUTILS_SRC-a)
27 29
28LIBCOREUTILS_OBJS=$(patsubst %.c,$(LIBCOREUTILS_DIR)%.o, $(LIBCOREUTILS_SRC)) 30LIBCOREUTILS-multi-obj:=$(LIBCOREUTILS_DIR)/$(subst .a,-multi.o,$(LIBCOREUTILS_AR))
31LIBCOREUTILS-multi-pic:=$(LIBCOREUTILS_DIR)/$(subst .a,-pic.o,$(LIBCOREUTILS_AR))
32
33# We do not need to build an empty non-pic object/archive
34ifneq ($(strip $(LIBCOREUTILS-y)),)
35libraries-y+=$(LIBCOREUTILS_DIR)/$(LIBCOREUTILS_AR)
36endif
37# If we are building libbusybox.so _and_ we will use it ourselves then we
38# keep it as small as possible
39ifeq ($(strip $(CONFIG_FEATURE_SHARED_BUSYBOX)),y)
40ifneq ($(strip $(LIBIPROUTE-y)),)
41libraries-m+=$(LIBCOREUTILS-multi-pic)
42endif
43endif
29 44
30libraries-y+=$(LIBCOREUTILS_DIR)$(LIBCOREUTILS_AR) 45LIBCOREUTILS_OBJS=$(patsubst %,$(LIBCOREUTILS_DIR)/%, $(LIBCOREUTILS-y))
31 46
32$(LIBCOREUTILS_DIR)$(LIBCOREUTILS_AR): $(LIBCOREUTILS_OBJS) 47$(LIBCOREUTILS_DIR)/$(LIBCOREUTILS_AR): $(patsubst %,$(LIBCOREUTILS_DIR)/%,$(LIBCOREUTILS-y))
33 $(AR) $(ARFLAGS) $@ $(LIBCOREUTILS_OBJS) 48 $(AR) $(ARFLAGS) $(@) $(^)
34 49
35$(LIBCOREUTILS_DIR)%.o: $(srcdir)/%.c 50$(LIBCOREUTILS_DIR)/%.o: $(srcdir)/%.c
36 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $< 51 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<
37 52
diff --git a/debianutils/Makefile.in b/debianutils/Makefile.in
index c0185f4aa..4a715d0d8 100644
--- a/debianutils/Makefile.in
+++ b/debianutils/Makefile.in
@@ -19,6 +19,10 @@ DEBIANUTILS-$(CONFIG_START_STOP_DAEMON) += start_stop_daemon.o
19DEBIANUTILS-$(CONFIG_WHICH) += which.o 19DEBIANUTILS-$(CONFIG_WHICH) += which.o
20 20
21libraries-y+=$(DEBIANUTILS_DIR)$(DEBIANUTILS_AR) 21libraries-y+=$(DEBIANUTILS_DIR)$(DEBIANUTILS_AR)
22DEBIANUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(DEBIANUTILS-y))
23DEBIANUTILS_SRC-a:=$(wildcard $(srcdir)/*.c)
24APPLET_SRC-y+=$(DEBIANUTILS_SRC-y)
25APPLET_SRC-a+=$(DEBIANUTILS_SRC-a)
22 26
23$(DEBIANUTILS_DIR)$(DEBIANUTILS_AR): $(patsubst %,$(DEBIANUTILS_DIR)%, $(DEBIANUTILS-y)) 27$(DEBIANUTILS_DIR)$(DEBIANUTILS_AR): $(patsubst %,$(DEBIANUTILS_DIR)%, $(DEBIANUTILS-y))
24 $(AR) $(ARFLAGS) $@ $(patsubst %,$(DEBIANUTILS_DIR)%, $(DEBIANUTILS-y)) 28 $(AR) $(ARFLAGS) $@ $(patsubst %,$(DEBIANUTILS_DIR)%, $(DEBIANUTILS-y))
diff --git a/e2fsprogs/Makefile.in b/e2fsprogs/Makefile.in
index 181ec7033..c492c6779 100644
--- a/e2fsprogs/Makefile.in
+++ b/e2fsprogs/Makefile.in
@@ -62,8 +62,19 @@ E2FSPROGS-$(CONFIG_LSATTR) += lsattr.o $(E2P_OBJS)
62E2FSPROGS-$(CONFIG_MKE2FS) += mke2fs.o util.o $(E2P_OBJS) $(BLKID_OBJS) $(EXT2FS_OBJS) $(UUID_OBJS) 62E2FSPROGS-$(CONFIG_MKE2FS) += mke2fs.o util.o $(E2P_OBJS) $(BLKID_OBJS) $(EXT2FS_OBJS) $(UUID_OBJS)
63E2FSPROGS-$(CONFIG_TUNE2FS) += tune2fs.o util.o $(E2P_OBJS) $(BLKID_OBJS) $(EXT2FS_OBJS) $(UUID_OBJS) 63E2FSPROGS-$(CONFIG_TUNE2FS) += tune2fs.o util.o $(E2P_OBJS) $(BLKID_OBJS) $(EXT2FS_OBJS) $(UUID_OBJS)
64 64
65E2FSPROGS-y:=$(sort $(E2FSPROGS-y))
66
65libraries-y+=$(E2FSPROGS_DIR)/$(E2FSPROGS_AR) 67libraries-y+=$(E2FSPROGS_DIR)/$(E2FSPROGS_AR)
68E2FSPROGS_SRC-y:=$(patsubst %.o,$(E2FSPROGS_SRC)/%.c,$(E2FSPROGS-y))
69E2FSPROGS_SRC-a:=$(wildcard $(E2FSPROGS_SRC)/*.c) $(patsubst %,$(E2FSPROGS_SRC)/%,$(BLKID_SRCS) $(E2P_SRCS) $(EXT2FS_SRCS) $(UUID_SRCS))
70APPLET_SRC-y+=$(E2FSPROGS_CFLAGS) $(E2FSPROGS_SRC-y)
71APPLET_SRC-a+=$(E2FSPROGS_CFLAGS) $(E2FSPROGS_SRC-a)
72
73# XXX: FIXME: change .c to include their stuff relative to $(E2FSPROGS_SRC)
74E2FSPROGS_TMP_KLUDGE:=$(patsubst %,-I$(E2FSPROGS_SRC)/%,blkid e2fsck e2p ext2fs uuid)
66 75
76APPLETS_DEFINE-y+=$(E2FSPROGS_CFLAGS) -I$(E2FSPROGS_SRC) $(E2FSPROGS_TMP_KLUDGE)
77APPLETS_DEFINE-a+=$(E2FSPROGS_CFLAGS) -I$(E2FSPROGS_SRC) $(E2FSPROGS_TMP_KLUDGE)
67 78
68$(E2FSPROGS_DIR)/$(E2FSPROGS_AR): $(patsubst %,$(E2FSPROGS_DIR)/%, $(E2FSPROGS-y)) 79$(E2FSPROGS_DIR)/$(E2FSPROGS_AR): $(patsubst %,$(E2FSPROGS_DIR)/%, $(E2FSPROGS-y))
69 $(AR) $(ARFLAGS) $@ $(patsubst %,$(E2FSPROGS_DIR)/%, $(E2FSPROGS-y)) 80 $(AR) $(ARFLAGS) $@ $(patsubst %,$(E2FSPROGS_DIR)/%, $(E2FSPROGS-y))
diff --git a/editors/Makefile.in b/editors/Makefile.in
index 01fb8b527..114d6200d 100644
--- a/editors/Makefile.in
+++ b/editors/Makefile.in
@@ -15,16 +15,19 @@ EDITOR-$(CONFIG_AWK) += awk.o
15EDITOR-$(CONFIG_PATCH) += patch.o 15EDITOR-$(CONFIG_PATCH) += patch.o
16EDITOR-$(CONFIG_SED) += sed.o 16EDITOR-$(CONFIG_SED) += sed.o
17EDITOR-$(CONFIG_VI) += vi.o 17EDITOR-$(CONFIG_VI) += vi.o
18EDITOR_SRC:= $(EDITOR-y)
19EDITOR_OBJ:= $(patsubst %.c,$(EDITOR_DIR)%.o, $(EDITOR_SRC))
20 18
21libraries-y+=$(EDITOR_DIR)$(EDITOR_AR) 19libraries-y+=$(EDITOR_DIR)$(EDITOR_AR)
22 20
21EDITOR_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(EDITOR-y))
22EDITOR_SRC-a:=$(wildcard $(srcdir)/*.c)
23APPLET_SRC-y+=$(EDITOR_SRC-y)
24APPLET_SRC-a+=$(EDITOR_SRC-a)
25
23needlibm-y:= 26needlibm-y:=
24needlibm-$(CONFIG_FEATURE_AWK_MATH) := y 27needlibm-$(CONFIG_FEATURE_AWK_MATH) := y
25 28
26ifeq ($(needlibm-y),y) 29ifeq ($(needlibm-y),y)
27 LIBRARIES += -lm 30 LIBRARIES := -lm $(filter-out -lm,$(LIBRARIES))
28endif 31endif
29 32
30$(EDITOR_DIR)$(EDITOR_AR): $(patsubst %,$(EDITOR_DIR)%, $(EDITOR-y)) 33$(EDITOR_DIR)$(EDITOR_AR): $(patsubst %,$(EDITOR_DIR)%, $(EDITOR-y))
diff --git a/findutils/Makefile.in b/findutils/Makefile.in
index 2dcb702e8..418f43a38 100644
--- a/findutils/Makefile.in
+++ b/findutils/Makefile.in
@@ -17,6 +17,11 @@ FINDUTILS-$(CONFIG_XARGS) += xargs.o
17 17
18libraries-y+=$(FINDUTILS_DIR)$(FINDUTILS_AR) 18libraries-y+=$(FINDUTILS_DIR)$(FINDUTILS_AR)
19 19
20FINDUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(FINDUTILS-y))
21FINDUTILS_SRC-a:=$(wildcard $(srcdir)/*.c)
22APPLET_SRC-y+=$(FINDUTILS_SRC-y)
23APPLET_SRC-a+=$(FINDUTILS_SRC-a)
24
20$(FINDUTILS_DIR)$(FINDUTILS_AR): $(patsubst %,$(FINDUTILS_DIR)%, $(FINDUTILS-y)) 25$(FINDUTILS_DIR)$(FINDUTILS_AR): $(patsubst %,$(FINDUTILS_DIR)%, $(FINDUTILS-y))
21 $(AR) $(ARFLAGS) $@ $(patsubst %,$(FINDUTILS_DIR)%, $(FINDUTILS-y)) 26 $(AR) $(ARFLAGS) $@ $(patsubst %,$(FINDUTILS_DIR)%, $(FINDUTILS-y))
22 27
diff --git a/include/libbb.h b/include/libbb.h
index e9a828c52..2e697a350 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -86,7 +86,7 @@
86#define MAX(a,b) (((a)>(b))?(a):(b)) 86#define MAX(a,b) (((a)>(b))?(a):(b))
87#endif 87#endif
88 88
89extern void bb_show_usage(void) __attribute__ ((noreturn)); 89extern void bb_show_usage(void) __attribute__ ((noreturn, externally_visible));
90extern void bb_error_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))); 90extern void bb_error_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2)));
91extern void bb_error_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2))); 91extern void bb_error_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2)));
92extern void bb_perror_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))); 92extern void bb_perror_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2)));
diff --git a/init/Makefile.in b/init/Makefile.in
index 5b3d9eaf0..02d379445 100644
--- a/init/Makefile.in
+++ b/init/Makefile.in
@@ -17,16 +17,16 @@ INIT-$(CONFIG_MESG) += mesg.o
17INIT-$(CONFIG_POWEROFF) += poweroff.o 17INIT-$(CONFIG_POWEROFF) += poweroff.o
18INIT-$(CONFIG_REBOOT) += reboot.o 18INIT-$(CONFIG_REBOOT) += reboot.o
19 19
20ifeq ($(CONFIG_HALT), y) 20ifeq ($(strip $(CONFIG_HALT)),y)
21CONFIG_INIT_SHARED=y 21CONFIG_INIT_SHARED=y
22else 22else
23ifeq ($(CONFIG_INIT), y) 23ifeq ($(strip $(CONFIG_INIT)),y)
24CONFIG_INIT_SHARED=y 24CONFIG_INIT_SHARED=y
25else 25else
26ifeq ($(CONFIG_POWEROFF), y) 26ifeq ($(strip $(CONFIG_POWEROFF)),y)
27CONFIG_INIT_SHARED=y 27CONFIG_INIT_SHARED=y
28else 28else
29ifeq ($(CONFIG_REBOOT), y) 29ifeq ($(strip $(CONFIG_REBOOT)),y)
30CONFIG_INIT_SHARED=y 30CONFIG_INIT_SHARED=y
31else 31else
32CONFIG_INIT_SHARED=n 32CONFIG_INIT_SHARED=n
@@ -35,12 +35,17 @@ endif
35endif 35endif
36endif 36endif
37 37
38ifeq ($(CONFIG_INIT_SHARED), y) 38ifeq ($(strip $(CONFIG_INIT_SHARED)),y)
39INIT-$(CONFIG_INIT_SHARED) += init_shared.o 39INIT-$(CONFIG_INIT_SHARED) += init_shared.o
40endif 40endif
41 41
42libraries-y+=$(INIT_DIR)$(INIT_AR) 42libraries-y+=$(INIT_DIR)$(INIT_AR)
43 43
44INIT_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(INIT-y))
45INIT_SRC-a:=$(wildcard $(srcdir)/*.c)
46APPLET_SRC-y+=$(INIT_SRC-y)
47APPLET_SRC-a+=$(INIT_SRC-a)
48
44$(INIT_DIR)$(INIT_AR): $(patsubst %,$(INIT_DIR)%, $(INIT-y)) 49$(INIT_DIR)$(INIT_AR): $(patsubst %,$(INIT_DIR)%, $(INIT-y))
45 $(AR) $(ARFLAGS) $@ $(patsubst %,$(INIT_DIR)%, $(INIT-y)) 50 $(AR) $(ARFLAGS) $@ $(patsubst %,$(INIT_DIR)%, $(INIT-y))
46 51
diff --git a/libbb/Makefile.in b/libbb/Makefile.in
index 91698a919..bb3790a58 100644
--- a/libbb/Makefile.in
+++ b/libbb/Makefile.in
@@ -4,13 +4,13 @@
4# 4#
5# Licensed under the GPL v2, see the file LICENSE in this tarball. 5# Licensed under the GPL v2, see the file LICENSE in this tarball.
6 6
7LIBBB_AR:=libbb.a
8ifndef $(LIBBB_DIR) 7ifndef $(LIBBB_DIR)
9LIBBB_DIR:=$(top_builddir)/libbb/ 8LIBBB_DIR:=$(top_builddir)/libbb
10endif 9endif
11srcdir=$(top_srcdir)/libbb 10srcdir=$(top_srcdir)/libbb
12 11
13LIBBB_SRC-y:= \ 12LIBBB-n:=
13LIBBB-y:= \
14 bb_asprintf.c ask_confirmation.c change_identity.c chomp.c \ 14 bb_asprintf.c ask_confirmation.c change_identity.c chomp.c \
15 compare_string_array.c concat_path_file.c copy_file.c copyfd.c \ 15 compare_string_array.c concat_path_file.c copy_file.c copyfd.c \
16 correct_password.c create_icmp_socket.c create_icmp6_socket.c \ 16 correct_password.c create_icmp_socket.c create_icmp6_socket.c \
@@ -36,10 +36,14 @@ LIBBB_SRC-y:= \
36 warn_ignoring_args.c concat_subpath_file.c vfork_daemon_rexec.c \ 36 warn_ignoring_args.c concat_subpath_file.c vfork_daemon_rexec.c \
37 bb_echo.c bb_do_delay.c 37 bb_echo.c bb_do_delay.c
38 38
39LIBBB_SRC-$(CONFIG_FEATURE_SHADOWPASSWDS)+= pwd2spwd.c 39# conditionally compiled objects:
40LIBBB-$(CONFIG_FEATURE_SHADOWPASSWDS)+=pwd2spwd.c
41LIBBB-$(CONFIG_FEATURE_MTAB_SUPPORT)+= mtab.c
40 42
41LIBBB_OBJS=$(patsubst %.c,$(LIBBB_DIR)%.o, $(LIBBB_SRC-y))
42 43
44LIBBB-y:=$(patsubst %,$(srcdir)/%,$(LIBBB-y))
45
46# 1:N objects
43LIBBB_MSRC0:=$(srcdir)/messages.c 47LIBBB_MSRC0:=$(srcdir)/messages.c
44LIBBB_MOBJ0:=full_version.o \ 48LIBBB_MOBJ0:=full_version.o \
45 memory_exhausted.o invalid_date.o io_error.o \ 49 memory_exhausted.o invalid_date.o io_error.o \
@@ -49,65 +53,90 @@ LIBBB_MOBJ0:=full_version.o \
49 securetty_file.o motd_file.o \ 53 securetty_file.o motd_file.o \
50 msg_standard_input.o msg_standard_output.o shell_file.o \ 54 msg_standard_input.o msg_standard_output.o shell_file.o \
51 bb_dev_null.o bb_common_bufsiz1.o 55 bb_dev_null.o bb_common_bufsiz1.o
56LIBBB_MOBJ0:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ0))
57$(LIBBB_MOBJ0):$(LIBBB_MSRC0)
58 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -o $@ -c $<
52 59
53LIBBB_MSRC1:=$(srcdir)/xfuncs.c 60LIBBB_MSRC1:=$(srcdir)/xfuncs.c
54LIBBB_MOBJ1:=xmalloc.o xrealloc.o xcalloc.o xstrdup.o xstrndup.o \ 61LIBBB_MOBJ1:=xmalloc.o xrealloc.o xcalloc.o xstrdup.o xstrndup.o \
55 xfopen.o xopen.o xread.o xread_all.o xread_char.o \ 62 xfopen.o xopen.o xread.o xread_all.o xread_char.o \
56 xferror.o xferror_stdout.o xfflush_stdout.o strlen.o 63 xferror.o xferror_stdout.o xfflush_stdout.o strlen.o
64LIBBB_MOBJ1:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ1))
65$(LIBBB_MOBJ1):$(LIBBB_MSRC1)
66 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -o $@ -c $<
57 67
58LIBBB_MSRC2:=$(srcdir)/printf.c 68LIBBB_MSRC2:=$(srcdir)/printf.c
59LIBBB_MOBJ2:=bb_vfprintf.o bb_vprintf.o bb_fprintf.o bb_printf.o 69LIBBB_MOBJ2:=bb_vfprintf.o bb_vprintf.o bb_fprintf.o bb_printf.o
70LIBBB_MOBJ2:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ2))
71$(LIBBB_MOBJ2):$(LIBBB_MSRC2)
72 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -o $@ -c $<
60 73
61LIBBB_MSRC3:=$(srcdir)/xgetularg.c 74LIBBB_MSRC3:=$(srcdir)/xgetularg.c
62LIBBB_MOBJ3:=xgetularg_bnd_sfx.o xgetlarg_bnd_sfx.o getlarg10_sfx.o \ 75LIBBB_MOBJ3:=xgetularg_bnd_sfx.o xgetlarg_bnd_sfx.o getlarg10_sfx.o \
63 xgetularg_bnd.o xgetularg10_bnd.o xgetularg10.o 76 xgetularg_bnd.o xgetularg10_bnd.o xgetularg10.o
77LIBBB_MOBJ3:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ3))
78$(LIBBB_MOBJ3):$(LIBBB_MSRC3)
79 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -o $@ -c $<
64 80
65LIBBB_MSRC4:=$(srcdir)/safe_strtol.c 81LIBBB_MSRC4:=$(srcdir)/safe_strtol.c
66LIBBB_MOBJ4:=safe_strtoi.o safe_strtod.o safe_strtol.o safe_strtoul.o 82LIBBB_MOBJ4:=safe_strtoi.o safe_strtod.o safe_strtol.o safe_strtoul.o
83LIBBB_MOBJ4:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ4))
84$(LIBBB_MOBJ4):$(LIBBB_MSRC4)
85 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -o $@ -c $<
67 86
68LIBBB_MSRC5:=$(srcdir)/bb_pwd.c 87LIBBB_MSRC5:=$(srcdir)/bb_pwd.c
69LIBBB_MOBJ5:=bb_xgetpwnam.o bb_xgetgrnam.o bb_getgrgid.o bb_getpwuid.o \ 88LIBBB_MOBJ5:=bb_xgetpwnam.o bb_xgetgrnam.o bb_getgrgid.o bb_getpwuid.o \
70 bb_getug.o get_ug_id.o 89 bb_getug.o get_ug_id.o
90LIBBB_MOBJ5:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ5))
91$(LIBBB_MOBJ5):$(LIBBB_MSRC5)
92 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -o $@ -c $<
71 93
72LIBBB_MSRC6:=$(srcdir)/llist.c 94LIBBB_MSRC6:=$(srcdir)/llist.c
73LIBBB_MOBJ6:=llist_add_to.o llist_add_to_end.o llist_free_one.o llist_free.o 95LIBBB_MOBJ6:=llist_add_to.o llist_add_to_end.o llist_free_one.o llist_free.o
96LIBBB_MOBJ6:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ6))
97$(LIBBB_MOBJ6):$(LIBBB_MSRC6)
98 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -o $@ -c $<
74 99
75LIBBB_MOBJS0=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ0))
76LIBBB_MOBJS1=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ1))
77LIBBB_MOBJS2=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ2))
78LIBBB_MOBJS3=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ3))
79LIBBB_MOBJS4=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ4))
80LIBBB_MOBJS5=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ5))
81LIBBB_MOBJS6=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ6))
82 100
83libraries-y+=$(LIBBB_DIR)$(LIBBB_AR) 101# We need the names of the object files built from MSRC for the L_ defines
102LIBBB_ALL_MOBJ:=$(LIBBB_MOBJ0) $(LIBBB_MOBJ1) $(LIBBB_MOBJ2) $(LIBBB_MOBJ3) $(LIBBB_MOBJ4) $(LIBBB_MOBJ5) $(LIBBB_MOBJ6)
84 103
85$(LIBBB_DIR)$(LIBBB_AR): $(LIBBB_OBJS) $(LIBBB_MOBJS0) $(LIBBB_MOBJS1) \ 104LIBBB_ALL_MSRC:=$(LIBBB_MSRC0) $(LIBBB_MSRC1) $(LIBBB_MSRC2) $(LIBBB_MSRC3) \
86 $(LIBBB_MOBJS2) $(LIBBB_MOBJS3) $(LIBBB_MOBJS4) $(LIBBB_MOBJS5) \ 105 $(LIBBB_MSRC4) $(LIBBB_MSRC5) $(LIBBB_MSRC6)
87 $(LIBBB_MOBJS6)
88 $(AR) $(ARFLAGS) $(@) $(LIBBB_OBJS) $(^)
89 106
90$(LIBBB_DIR)%.o: $(srcdir)/%.c 107LIBBB-y:=$(sort $(LIBBB-y) $(LIBBB_ALL_MSRC))
91 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<
92 108
93$(LIBBB_MOBJS0): $(LIBBB_MSRC0) 109LIBBB_AR:=$(LIBBB_DIR)/libbb.a
94 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@ 110libraries-y+=$(LIBBB_AR)
95 111
96$(LIBBB_MOBJS1): $(LIBBB_MSRC1) 112needcrypt-y:=
97 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@ 113ifneq ($(findstring $(srcdir)/pw_encrypt.c,$(LIBBB-y)),)
114needcrypt-y:=y
115else
116ifneq ($(findstring $(srcdir)/correct_password.c,$(LIBBB-y)),)
117needcrypt-y:=y
118endif
119endif
120
121ifeq ($(needcrypt-y),y)
122 LIBRARIES := -lcrypt $(filter-out -lcrypt,$(LIBRARIES))
123endif
98 124
99$(LIBBB_MOBJS2): $(LIBBB_MSRC2) 125# all 1:1 objects
100 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@ 126LIBBB_OBJS:=$(patsubst $(srcdir)/%.c,$(LIBBB_DIR)/%.o, $(LIBBB-y))
127$(LIBBB_DIR)/%.o: $(srcdir)/%.c
128 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -o $@ -c $<
101 129
102$(LIBBB_MOBJS3): $(LIBBB_MSRC3)
103 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@
104 130
105$(LIBBB_MOBJS4): $(LIBBB_MSRC4) 131LIBBB_SRC-a:=$(wildcard $(srcdir)/*.c)
106 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@ 132LIBRARY_SRC-y+=$(LIBBB-y)
133LIBRARY_SRC-a+=$(LIBBB_SRC-a)
107 134
108$(LIBBB_MOBJS5): $(LIBBB_MSRC5) 135# all defines needed for 1:N objects
109 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@ 136LIBBB_DEFINE-y:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(LIBBB_ALL_MOBJ))))
137LIBRARY_DEFINE-y+=$(LIBBB_DEFINE-y)
138LIBRARY_DEFINE-a+=$(LIBBB_DEFINE-y)
110 139
111$(LIBBB_MOBJS6): $(LIBBB_MSRC6) 140$(LIBBB_AR): $(LIBBB_OBJS) $(LIBBB_ALL_MOBJ)
112 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@ 141 $(AR) $(ARFLAGS) $(@) $(^)
113 142
diff --git a/libbb/find_mount_point.c b/libbb/find_mount_point.c
index eec738aea..4d27b4809 100644
--- a/libbb/find_mount_point.c
+++ b/libbb/find_mount_point.c
@@ -48,11 +48,12 @@ extern struct mntent *find_mount_point(const char *name, const char *table)
48 mountDevice = s.st_dev; 48 mountDevice = s.st_dev;
49 49
50 50
51 if ((mountTable = setmntent(table ? : bb_path_mtab_file, "r")) == 0) 51 if ((mountTable = setmntent(table ? table : bb_path_mtab_file, "r")) == 0)
52 return 0; 52 return 0;
53 53
54 while ((mountEntry = getmntent(mountTable)) != 0) { 54 while ((mountEntry = getmntent(mountTable)) != 0) {
55 if (strcmp(name, mountEntry->mnt_dir) == 0 55
56 if(strcmp(name, mountEntry->mnt_dir) == 0
56 || strcmp(name, mountEntry->mnt_fsname) == 0) /* String match. */ 57 || strcmp(name, mountEntry->mnt_fsname) == 0) /* String match. */
57 break; 58 break;
58 if (stat(mountEntry->mnt_fsname, &s) == 0 && s.st_rdev == mountDevice) /* Match the device. */ 59 if (stat(mountEntry->mnt_fsname, &s) == 0 && s.st_rdev == mountDevice) /* Match the device. */
diff --git a/libpwdgrp/Makefile.in b/libpwdgrp/Makefile.in
index 99674804c..550611681 100644
--- a/libpwdgrp/Makefile.in
+++ b/libpwdgrp/Makefile.in
@@ -6,10 +6,15 @@
6 6
7LIBPWDGRP_AR:=libpwdgrp.a 7LIBPWDGRP_AR:=libpwdgrp.a
8ifndef $(LIBPWDGRP_DIR) 8ifndef $(LIBPWDGRP_DIR)
9LIBPWDGRP_DIR:=$(top_builddir)/libpwdgrp/ 9LIBPWDGRP_DIR:=$(top_builddir)/libpwdgrp
10endif 10endif
11srcdir=$(top_srcdir)/libpwdgrp 11srcdir=$(top_srcdir)/libpwdgrp
12 12
13LIBPWDGRP-obj:=$(LIBPWDGRP_DIR)/$(LIBPWDGRP_AR)
14LIBPWDGRP-pic:=$(LIBPWDGRP_DIR)/$(subst .a,-pic.o,$(LIBPWDGRP_AR))
15
16libraries-y+=$(LIBPWDGRP_DIR)/$(LIBPWDGRP_AR)
17libraries-m+=$(LIBPWDGRP-multi-pic)
13 18
14LIBPWDGRP_MSRC0:=$(srcdir)/pwd_grp.c 19LIBPWDGRP_MSRC0:=$(srcdir)/pwd_grp.c
15LIBPWDGRP_MOBJ0-$(CONFIG_USE_BB_PWD_GRP):= fgetpwent_r.o fgetgrent_r.o \ 20LIBPWDGRP_MOBJ0-$(CONFIG_USE_BB_PWD_GRP):= fgetpwent_r.o fgetgrent_r.o \
@@ -17,19 +22,29 @@ LIBPWDGRP_MOBJ0-$(CONFIG_USE_BB_PWD_GRP):= fgetpwent_r.o fgetgrent_r.o \
17 getgrgid_r.o getpwuid.o getgrgid.o getpwnam.o getgrnam.o getpw.o \ 22 getgrgid_r.o getpwuid.o getgrgid.o getpwnam.o getgrnam.o getpw.o \
18 getpwent_r.o getgrent_r.o getpwent.o getgrent.o \ 23 getpwent_r.o getgrent_r.o getpwent.o getgrent.o \
19 initgroups.o putpwent.o putgrent.o 24 initgroups.o putpwent.o putgrent.o
20LIBPWDGRP_MOBJS0=$(patsubst %,$(LIBPWDGRP_DIR)%, $(LIBPWDGRP_MOBJ0-y)) 25LIBPWDGRP_MOBJS0=$(patsubst %,$(LIBPWDGRP_DIR)/%, $(LIBPWDGRP_MOBJ0-y))
21 26
22LIBPWDGRP_MSRC1:=$(srcdir)/pwd_grp.c 27LIBPWDGRP_MSRC1:=$(srcdir)/pwd_grp.c
23LIBPWDGRP_MOBJ1-$(CONFIG_USE_BB_PWD_GRP):= __parsepwent.o __parsegrent.o \ 28LIBPWDGRP_MOBJ1-$(CONFIG_USE_BB_PWD_GRP):= __parsepwent.o __parsegrent.o \
24 __pgsreader.o fgetspent_r.o fgetspent.o sgetspent_r.o getspnam_r.o \ 29 __pgsreader.o fgetspent_r.o fgetspent.o sgetspent_r.o getspnam_r.o \
25 getspnam.o getspent_r.o getspent.o sgetspent.o \ 30 getspnam.o getspent_r.o getspent.o sgetspent.o \
26 putspent.o __parsespent.o # getspuid_r.o getspuid.o 31 putspent.o __parsespent.o # getspuid_r.o getspuid.o
27LIBPWDGRP_MOBJS1=$(patsubst %,$(LIBPWDGRP_DIR)%, $(LIBPWDGRP_MOBJ1-y)) 32LIBPWDGRP_MOBJS1=$(patsubst %,$(LIBPWDGRP_DIR)/%, $(LIBPWDGRP_MOBJ1-y))
33
34LIBPWDGRP_DEFINE0-y:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(LIBPWDGRP_MOBJS0))))
35LIBPWDGRP_DEFINE1-y:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(LIBPWDGRP_MOBJS1))))
36
37LIBPWDGRP_SRC-y:=$(LIBPWDGRP_MSRC0)
38
39LIBRARY_SRC-y+=$(LIBPWDGRP_SRC-y)
40LIBRARY_SRC-a+=$(LIBPWDGRP_SRC-y)
41
42LIBRARY_DEFINE-y+=$(LIBPWDGRP_DEFINE0-y) $(LIBPWDGRP_DEFINE1-y)
43LIBRARY_DEFINE-a+=$(LIBPWDGRP_DEFINE0-y) $(LIBPWDGRP_DEFINE1-y)
28 44
29libraries-y+=$(LIBPWDGRP_DIR)$(LIBPWDGRP_AR)
30 45
31$(LIBPWDGRP_DIR)$(LIBPWDGRP_AR): $(LIBPWDGRP_MOBJS0) $(LIBPWDGRP_MOBJS1) 46$(LIBPWDGRP_DIR)/$(LIBPWDGRP_AR): $(LIBPWDGRP_MOBJS0) $(LIBPWDGRP_MOBJS1)
32 $(AR) $(ARFLAGS) $@ $(LIBPWDGRP_MOBJS0) $(LIBPWDGRP_MOBJS1) 47 $(AR) $(ARFLAGS) $(@) $(^)
33 48
34$(LIBPWDGRP_MOBJS0): $(LIBPWDGRP_MSRC0) 49$(LIBPWDGRP_MOBJS0): $(LIBPWDGRP_MSRC0)
35 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@ 50 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@
diff --git a/loginutils/Makefile.in b/loginutils/Makefile.in
index c17865732..a2cfd8a67 100644
--- a/loginutils/Makefile.in
+++ b/loginutils/Makefile.in
@@ -24,6 +24,11 @@ LOGINUTILS-$(CONFIG_DELGROUP) += delgroup.o
24 24
25libraries-y+=$(LOGINUTILS_DIR)$(LOGINUTILS_AR) 25libraries-y+=$(LOGINUTILS_DIR)$(LOGINUTILS_AR)
26 26
27LOGINUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(LOGINUTILS-y))
28LOGINUTILS_SRC-a:=$(wildcard $(srcdir)/*.c)
29APPLET_SRC-y+=$(LOGINUTILS_SRC-y)
30APPLET_SRC-a+=$(LOGINUTILS_SRC-a)
31
27needcrypt-y:= 32needcrypt-y:=
28needcrypt-$(CONFIG_LOGIN) := y 33needcrypt-$(CONFIG_LOGIN) := y
29needcrypt-$(CONFIG_PASSWD) := y 34needcrypt-$(CONFIG_PASSWD) := y
@@ -33,7 +38,7 @@ needcrypt-$(CONFIG_VLOCK) := y
33 38
34 39
35ifeq ($(needcrypt-y),y) 40ifeq ($(needcrypt-y),y)
36 LIBRARIES += -lcrypt 41 LIBRARIES := -lcrypt $(filter-out -lcrypt,$(LIBRARIES))
37endif 42endif
38 43
39$(LOGINUTILS_DIR)$(LOGINUTILS_AR): $(patsubst %,$(LOGINUTILS_DIR)%, $(LOGINUTILS-y)) 44$(LOGINUTILS_DIR)$(LOGINUTILS_AR): $(patsubst %,$(LOGINUTILS_DIR)%, $(LOGINUTILS-y))
diff --git a/miscutils/Makefile.in b/miscutils/Makefile.in
index 5bd522c11..6cd2b022c 100644
--- a/miscutils/Makefile.in
+++ b/miscutils/Makefile.in
@@ -33,11 +33,16 @@ MISCUTILS-$(CONFIG_WATCHDOG) += watchdog.o
33 33
34libraries-y+=$(MISCUTILS_DIR)$(MISCUTILS_AR) 34libraries-y+=$(MISCUTILS_DIR)$(MISCUTILS_AR)
35 35
36MISCUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(MISCUTILS-y))
37MISCUTILS_SRC-a:=$(wildcard $(srcdir)/*.c)
38APPLET_SRC-y+=$(MISCUTILS_SRC-y)
39APPLET_SRC-a+=$(MISCUTILS_SRC-a)
40
36needlibm-y:= 41needlibm-y:=
37needlibm-$(CONFIG_DC) := y 42needlibm-$(CONFIG_DC) := y
38 43
39ifeq ($(needlibm-y),y) 44ifeq ($(needlibm-y),y)
40 LIBRARIES += -lm 45 LIBRARIES := -lm $(filter-out -lm,$(LIBRARIES))
41endif 46endif
42 47
43$(MISCUTILS_DIR)$(MISCUTILS_AR): $(patsubst %,$(MISCUTILS_DIR)%, $(MISCUTILS-y)) 48$(MISCUTILS_DIR)$(MISCUTILS_AR): $(patsubst %,$(MISCUTILS_DIR)%, $(MISCUTILS-y))
diff --git a/modutils/Makefile.in b/modutils/Makefile.in
index df754afd2..f9934816e 100644
--- a/modutils/Makefile.in
+++ b/modutils/Makefile.in
@@ -18,6 +18,11 @@ MODUTILS-$(CONFIG_RMMOD) += rmmod.o
18 18
19libraries-y+=$(MODUTILS_DIR)$(MODUTILS_AR) 19libraries-y+=$(MODUTILS_DIR)$(MODUTILS_AR)
20 20
21MODUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(MODUTILS-y))
22MODUTILS_SRC-a:=$(wildcard $(srcdir)/*.c)
23APPLET_SRC-y+=$(MODUTILS_SRC-y)
24APPLET_SRC-a+=$(MODUTILS_SRC-a)
25
21$(MODUTILS_DIR)$(MODUTILS_AR): $(patsubst %,$(MODUTILS_DIR)%, $(MODUTILS-y)) 26$(MODUTILS_DIR)$(MODUTILS_AR): $(patsubst %,$(MODUTILS_DIR)%, $(MODUTILS-y))
22 $(AR) $(ARFLAGS) $@ $(patsubst %,$(MODUTILS_DIR)%, $(MODUTILS-y)) 27 $(AR) $(ARFLAGS) $@ $(patsubst %,$(MODUTILS_DIR)%, $(MODUTILS-y))
23 28
diff --git a/networking/Makefile.in b/networking/Makefile.in
index 376ecea63..2263acc00 100644
--- a/networking/Makefile.in
+++ b/networking/Makefile.in
@@ -9,6 +9,7 @@ ifndef $(NETWORKING_DIR)
9NETWORKING_DIR:=$(top_builddir)/networking/ 9NETWORKING_DIR:=$(top_builddir)/networking/
10endif 10endif
11srcdir=$(top_srcdir)/networking 11srcdir=$(top_srcdir)/networking
12
12NETWORKING-y:= 13NETWORKING-y:=
13NETWORKING-$(CONFIG_ARPING) += arping.o 14NETWORKING-$(CONFIG_ARPING) += arping.o
14NETWORKING-$(CONFIG_ETHER_WAKE) += ether-wake.o 15NETWORKING-$(CONFIG_ETHER_WAKE) += ether-wake.o
@@ -41,13 +42,22 @@ NETWORKING-$(CONFIG_VCONFIG) += vconfig.o
41NETWORKING-$(CONFIG_WGET) += wget.o 42NETWORKING-$(CONFIG_WGET) += wget.o
42NETWORKING-$(CONFIG_ZCIP) += zcip.o 43NETWORKING-$(CONFIG_ZCIP) += zcip.o
43 44
45NETWORKING-y:=$(sort $(NETWORKING-y))
44libraries-y+=$(NETWORKING_DIR)$(NETWORKING_AR) 46libraries-y+=$(NETWORKING_DIR)$(NETWORKING_AR)
45 47
48NETWORKING_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(NETWORKING-y))
49NETWORKING_SRC-a:=$(wildcard $(srcdir)/*.c)
50APPLET_SRC-y+=$(NETWORKING_SRC-y)
51APPLET_SRC-a+=$(NETWORKING_SRC-a)
52
53LIBRARY_DEFINE-y+= -I$(top_srcdir)/networking
54LIBRARY_DEFINE-a+= -I$(top_srcdir)/networking
55
46needcrypt-y:= 56needcrypt-y:=
47needcrypt-$(CONFIG_FEATURE_HTTPD_AUTH_MD5) := y 57needcrypt-$(CONFIG_FEATURE_HTTPD_AUTH_MD5) := y
48 58
49ifeq ($(needcrypt-y),y) 59ifeq ($(needcrypt-y),y)
50 LIBRARIES += -lcrypt 60 LIBRARIES := -lcrypt $(filter-out -lcrypt,$(LIBRARIES))
51endif 61endif
52 62
53$(NETWORKING_DIR)$(NETWORKING_AR): $(patsubst %,$(NETWORKING_DIR)%, $(NETWORKING-y)) 63$(NETWORKING_DIR)$(NETWORKING_AR): $(patsubst %,$(NETWORKING_DIR)%, $(NETWORKING-y))
diff --git a/networking/libiproute/Makefile.in b/networking/libiproute/Makefile.in
index a28af4611..37d556dd9 100644
--- a/networking/libiproute/Makefile.in
+++ b/networking/libiproute/Makefile.in
@@ -2,27 +2,16 @@
2# 2#
3# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org> 3# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
4# 4#
5# This program is free software; you can redistribute it and/or modify 5# Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
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# 6#
19 7
20LIBIPROUTE_AR:=libiproute.a 8LIBIPROUTE_AR:=libiproute.a
21ifndef $(LIBIPROUTE_DIR) 9ifndef $(LIBIPROUTE_DIR)
22LIBIPROUTE_DIR:=$(top_builddir)/networking/libiproute/ 10LIBIPROUTE_DIR:=$(top_builddir)/networking/libiproute
23endif 11endif
24srcdir=$(top_srcdir)/networking/libiproute 12srcdir=$(top_srcdir)/networking/libiproute
25 13
14LIBIPROUTE-y:=
26LIBIPROUTE-$(CONFIG_IP) += \ 15LIBIPROUTE-$(CONFIG_IP) += \
27 ip_parse_common_args.o \ 16 ip_parse_common_args.o \
28 ipaddress.o \ 17 ipaddress.o \
@@ -74,11 +63,31 @@ LIBIPROUTE-$(CONFIG_IPTUNNEL) += \
74 rt_names.o \ 63 rt_names.o \
75 utils.o 64 utils.o
76 65
77libraries-y+=$(LIBIPROUTE_DIR)$(LIBIPROUTE_AR) 66LIBIPROUTE-y:=$(sort $(LIBIPROUTE-y))
67
68LIBIPROUTE_SRC-y:=$(patsubst %,$(srcdir)/%,$(subst .o,.c,$(LIBIPROUTE-y)))
69LIBIPROUTE_SRC-a:=$(wildcard $(srcdir)/*.c)
70LIBRARY_SRC-y+=$(LIBIPROUTE_SRC-y)
71LIBRARY_SRC-a+=$(LIBIPROUTE_SRC-a)
72
73LIBIPROUTE-obj:=$(LIBIPROUTE_DIR)/$(LIBIPROUTE_AR)
74
75# We do not need to build an empty non-pic object/archive
76ifneq ($(strip $(LIBIPROUTE-y)),)
77libraries-y+=$(LIBIPROUTE_DIR)/$(LIBIPROUTE_AR)
78endif
79
80# If we are building libbusybox.so _and_ we will use it ourselves then we
81# keep it as small as possible
82ifeq ($(strip $(CONFIG_FEATURE_SHARED_BUSYBOX)),y)
83ifneq ($(strip $(LIBIPROUTE-y)),)
84libraries-m+=$(LIBIPROUTE-multi-pic)
85endif
86endif
78 87
79$(LIBIPROUTE_DIR)$(LIBIPROUTE_AR): $(patsubst %,$(LIBIPROUTE_DIR)%, $(LIBIPROUTE-y)) 88$(LIBIPROUTE_DIR)/$(LIBIPROUTE_AR): $(patsubst %,$(LIBIPROUTE_DIR)/%,$(LIBIPROUTE-y))
80 $(AR) $(ARFLAGS) $@ $(patsubst %,$(LIBIPROUTE_DIR)%, $(LIBIPROUTE-y)) 89 $(AR) $(ARFLAGS) $@ $(^)
81 90
82$(LIBIPROUTE_DIR)%.o: $(srcdir)/%.c 91$(LIBIPROUTE_DIR)/%.o: $(srcdir)/%.c
83 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $< 92 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<
84 93
diff --git a/networking/udhcp/Makefile.in b/networking/udhcp/Makefile.in
index ac9be5c57..8573a2fc4 100644
--- a/networking/udhcp/Makefile.in
+++ b/networking/udhcp/Makefile.in
@@ -2,19 +2,7 @@
2# 2#
3# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org> 3# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
4# 4#
5# This program is free software; you can redistribute it and/or modify 5# Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
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# 6#
19 7
20UDHCP_AR:=udhcp.a 8UDHCP_AR:=udhcp.a
@@ -24,10 +12,10 @@ endif
24srcdir=$(top_srcdir)/networking/udhcp 12srcdir=$(top_srcdir)/networking/udhcp
25 13
26#ok, so I forgot how to do an or, but this is a quick and dirty hack 14#ok, so I forgot how to do an or, but this is a quick and dirty hack
27ifeq ($(CONFIG_UDHCPC), y) 15ifeq ($(strip $(CONFIG_UDHCPC)),y)
28CONFIG_UDHCP_SHARED=y 16CONFIG_UDHCP_SHARED=y
29else 17else
30ifeq ($(CONFIG_UDHCPD), y) 18ifeq ($(strip $(CONFIG_UDHCPD)),y)
31CONFIG_UDHCP_SHARED=y 19CONFIG_UDHCP_SHARED=y
32else 20else
33CONFIG_UDHCP_SHARED=n 21CONFIG_UDHCP_SHARED=n
@@ -42,10 +30,20 @@ UDHCP-$(CONFIG_UDHCPC) += dhcpc.c clientpacket.c clientsocket.c \
42UDHCP-$(CONFIG_UDHCPD) += dhcpd.c arpping.c files.c leases.c \ 30UDHCP-$(CONFIG_UDHCPD) += dhcpd.c arpping.c files.c leases.c \
43 serverpacket.c static_leases.c 31 serverpacket.c static_leases.c
44UDHCP-$(CONFIG_DUMPLEASES) += dumpleases.c 32UDHCP-$(CONFIG_DUMPLEASES) += dumpleases.c
45UDHCP_OBJS=$(patsubst %.c,$(UDHCP_DIR)%.o, $(UDHCP-y)) 33UDHCP_OBJS:=$(patsubst %.c,$(UDHCP_DIR)%.o, $(UDHCP-y))
46 34
47libraries-y+=$(UDHCP_DIR)$(UDHCP_AR) 35libraries-y+=$(UDHCP_DIR)$(UDHCP_AR)
48 36
37UDHCP-y:=$(patsubst %,$(srcdir)/%,$(UDHCP-y))
38UDHCP-a:=$(wildcard $(srcdir)/*.c)
39APPLET_SRC-y+=$(UDHCP-y)
40APPLET_SRC-a+=$(UDHCP-a)
41
42UDHCP_INCLUDES:=$(srcdir)
43
44APPLETS_DEFINE-y+=-DIN_BUSYBOX -I$(UDHCP_INCLUDES)
45APPLETS_DEFINE-a+=-DIN_BUSYBOX -I$(UDHCP_INCLUDES)
46
49$(UDHCP_DIR)$(UDHCP_AR): $(UDHCP_OBJS) 47$(UDHCP_DIR)$(UDHCP_AR): $(UDHCP_OBJS)
50 $(AR) $(ARFLAGS) $@ $(UDHCP_OBJS) 48 $(AR) $(ARFLAGS) $@ $(UDHCP_OBJS)
51 49
diff --git a/procps/Makefile.in b/procps/Makefile.in
index 782944e8f..b7eb7dca1 100644
--- a/procps/Makefile.in
+++ b/procps/Makefile.in
@@ -23,6 +23,11 @@ PROCPS-$(CONFIG_FUSER) += fuser.o
23 23
24libraries-y+=$(PROCPS_DIR)$(PROCPS_AR) 24libraries-y+=$(PROCPS_DIR)$(PROCPS_AR)
25 25
26PROCPS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(PROCPS-y))
27PROCPS_SRC-a:=$(wildcard $(srcdir)/*.c)
28APPLET_SRC-y+=$(PROCPS_SRC-y)
29APPLET_SRC-a+=$(PROCPS_SRC-a)
30
26$(PROCPS_DIR)$(PROCPS_AR): $(patsubst %,$(PROCPS_DIR)%, $(PROCPS-y)) 31$(PROCPS_DIR)$(PROCPS_AR): $(patsubst %,$(PROCPS_DIR)%, $(PROCPS-y))
27 $(AR) $(ARFLAGS) $@ $(patsubst %,$(PROCPS_DIR)%, $(PROCPS-y)) 32 $(AR) $(ARFLAGS) $@ $(patsubst %,$(PROCPS_DIR)%, $(PROCPS-y))
28 33
diff --git a/shell/Makefile.in b/shell/Makefile.in
index db01a152a..f61f90a1a 100644
--- a/shell/Makefile.in
+++ b/shell/Makefile.in
@@ -19,6 +19,11 @@ SHELLT-$(CONFIG_FEATURE_COMMAND_EDITING) += cmdedit.o
19 19
20libraries-y+=$(SHELL_DIR)$(SHELL_AR) 20libraries-y+=$(SHELL_DIR)$(SHELL_AR)
21 21
22SHELLT_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(SHELLT-y))
23SHELLT_SRC-a:=$(wildcard $(srcdir)/*.c)
24APPLET_SRC-y+=$(SHELLT_SRC-y)
25APPLET_SRC-a+=$(SHELLT_SRC-a)
26
22$(SHELL_DIR)$(SHELL_AR): $(patsubst %,$(SHELL_DIR)%, $(SHELLT-y)) 27$(SHELL_DIR)$(SHELL_AR): $(patsubst %,$(SHELL_DIR)%, $(SHELLT-y))
23 $(AR) $(ARFLAGS) $@ $(patsubst %,$(SHELL_DIR)%, $(SHELLT-y)) 28 $(AR) $(ARFLAGS) $@ $(patsubst %,$(SHELL_DIR)%, $(SHELLT-y))
24 29
diff --git a/sysdeps/linux/Config.in b/sysdeps/linux/Config.in
index 3501ff767..1b87c1251 100644
--- a/sysdeps/linux/Config.in
+++ b/sysdeps/linux/Config.in
@@ -164,6 +164,35 @@ config CONFIG_STATIC
164 164
165 Most people will leave this set to 'N'. 165 Most people will leave this set to 'N'.
166 166
167config CONFIG_BUILD_LIBBUSYBOX
168 bool "Build shared libbusybox"
169 default y
170 help
171 Build a shared library libbusybox.so which contains all
172 libraries used inside busybox.
173
174config CONFIG_FEATURE_FULL_LIBBUSYBOX
175 bool "Feature-complete libbusybox"
176 default n if !CONFIG_FEATURE_SHARED_BUSYBOX
177 depends on CONFIG_BUILD_LIBBUSYBOX
178 help
179 Build a libbusybox with the complete feature-set, disregarding
180 the actually selected config.
181
182 Normally, libbusybox will only contain the features which are
183 used by busybox itself. If you plan to write a separate
184 standalone application which uses libbusybox say 'Y'.
185
186 Say 'N' if in doubt.
187
188config CONFIG_FEATURE_SHARED_BUSYBOX
189 bool "Use shared libbusybox for busybox"
190 default y if CONFIG_BUILD_LIBBUSYBOX
191 depends on !CONFIG_STATIC && CONFIG_BUILD_LIBBUSYBOX
192 help
193 Use libbusybox.so also for busybox itself.
194 You need to have a working dynamic linker to use this variant.
195
167config CONFIG_LFS 196config CONFIG_LFS
168 bool "Build with Large File Support (for accessing files > 2 GB)" 197 bool "Build with Large File Support (for accessing files > 2 GB)"
169 default n 198 default n
@@ -203,6 +232,25 @@ config EXTRA_CFLAGS_OPTIONS
203 if you want to add some simple compiler switches (like -march=i686), 232 if you want to add some simple compiler switches (like -march=i686),
204 or check for warnings using -Werror, just those options here. 233 or check for warnings using -Werror, just those options here.
205 234
235config CONFIG_BUILD_AT_ONCE
236 bool "Compile all sources at once"
237 default n
238 help
239 Normally each source-file is compiled with one invocation of
240 the compiler.
241 If you set this option, all sources are compiled at once.
242 This gives the compiler more opportunities to optimize which can
243 result in smaller and/or faster binaries.
244
245 Setting this option will consume alot of memory, e.g. if you
246 enable all applets with all features, gcc uses more than 300MB
247 RAM during compilation of busybox.
248
249 This option is most likely only beneficial for newer compilers
250 such as gcc-4.1 and above.
251
252 Say 'N' unless you know what you are doing.
253
206config CONFIG_FEATURE_SUSv2 254config CONFIG_FEATURE_SUSv2
207 bool "Enable features that are in SuSv2 but not SuSv3?" 255 bool "Enable features that are in SuSv2 but not SuSv3?"
208 default y 256 default y
@@ -216,7 +264,9 @@ config CONFIG_FEATURE_SUSv2_OBSOLETE
216 depends on CONFIG_FEATURE_SUSv2 264 depends on CONFIG_FEATURE_SUSv2
217 default y 265 default y
218 help 266 help
219 Disables support for numeric arguments in fold. 267 Enable pre- SuSv2 features which are deprecated in SuSv2 and
268 above.
269 Disables support for e.g. numeric arguments in fold.
220 270
221endmenu 271endmenu
222 272
@@ -264,26 +314,24 @@ config PREFIX
264 help 314 help
265 Define your directory to install BusyBox files/subdirs in. 315 Define your directory to install BusyBox files/subdirs in.
266 316
267
268
269endmenu 317endmenu
270 318
271source archival/Config.in 319source archival/Config.in
272source coreutils/Config.in 320source coreutils/Config.in
273source console-tools/Config.in 321source console-tools/Config.in
274source debianutils/Config.in 322source debianutils/Config.in
275source e2fsprogs/Config.in
276source editors/Config.in 323source editors/Config.in
277source findutils/Config.in 324source findutils/Config.in
278source init/Config.in 325source init/Config.in
279source loginutils/Config.in 326source loginutils/Config.in
280source miscutils/Config.in 327source e2fsprogs/Config.in
281source modutils/Config.in 328source modutils/Config.in
329source util-linux/Config.in
330source miscutils/Config.in
282source networking/Config.in 331source networking/Config.in
283source procps/Config.in 332source procps/Config.in
284source shell/Config.in 333source shell/Config.in
285source sysklogd/Config.in 334source sysklogd/Config.in
286source util-linux/Config.in
287 335
288menu 'Debugging Options' 336menu 'Debugging Options'
289 337
diff --git a/sysklogd/Makefile.in b/sysklogd/Makefile.in
index e6d47f6b5..2b913f784 100644
--- a/sysklogd/Makefile.in
+++ b/sysklogd/Makefile.in
@@ -18,6 +18,11 @@ SYSKLOGD-$(CONFIG_SYSLOGD) += syslogd.o
18 18
19libraries-y+=$(SYSKLOGD_DIR)$(SYSKLOGD_AR) 19libraries-y+=$(SYSKLOGD_DIR)$(SYSKLOGD_AR)
20 20
21SYSKLOGD_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(SYSKLOGD-y))
22SYSKLOGD_SRC-a:=$(wildcard $(srcdir)/*.c)
23APPLET_SRC-y+=$(SYSKLOGD_SRC-y)
24APPLET_SRC-a+=$(SYSKLOGD_SRC-a)
25
21$(SYSKLOGD_DIR)$(SYSKLOGD_AR): $(patsubst %,$(SYSKLOGD_DIR)%, $(SYSKLOGD-y)) 26$(SYSKLOGD_DIR)$(SYSKLOGD_AR): $(patsubst %,$(SYSKLOGD_DIR)%, $(SYSKLOGD-y))
22 $(AR) $(ARFLAGS) $@ $(patsubst %,$(SYSKLOGD_DIR)%, $(SYSKLOGD-y)) 27 $(AR) $(ARFLAGS) $@ $(patsubst %,$(SYSKLOGD_DIR)%, $(SYSKLOGD-y))
23 28
diff --git a/util-linux/Makefile.in b/util-linux/Makefile.in
index 176930246..de7e210ba 100644
--- a/util-linux/Makefile.in
+++ b/util-linux/Makefile.in
@@ -37,8 +37,14 @@ UTILLINUX-$(CONFIG_SWAPONOFF) +=swaponoff.o
37UTILLINUX-$(CONFIG_SWITCH_ROOT) +=switch_root.o 37UTILLINUX-$(CONFIG_SWITCH_ROOT) +=switch_root.o
38UTILLINUX-$(CONFIG_UMOUNT) +=umount.o 38UTILLINUX-$(CONFIG_UMOUNT) +=umount.o
39 39
40
40libraries-y+=$(UTILLINUX_DIR)$(UTILLINUX_AR) 41libraries-y+=$(UTILLINUX_DIR)$(UTILLINUX_AR)
41 42
43UTILLINUX_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(UTILLINUX-y))
44UTILLINUX_SRC-a:=$(wildcard $(srcdir)/*.c)
45APPLET_SRC-y+=$(UTILLINUX_SRC-y)
46APPLET_SRC-a+=$(UTILLINUX_SRC-a)
47
42$(UTILLINUX_DIR)$(UTILLINUX_AR): $(patsubst %,$(UTILLINUX_DIR)%, $(UTILLINUX-y)) 48$(UTILLINUX_DIR)$(UTILLINUX_AR): $(patsubst %,$(UTILLINUX_DIR)%, $(UTILLINUX-y))
43 $(AR) $(ARFLAGS) $@ $(patsubst %,$(UTILLINUX_DIR)%, $(UTILLINUX-y)) 49 $(AR) $(ARFLAGS) $@ $(patsubst %,$(UTILLINUX_DIR)%, $(UTILLINUX-y))
44 50