aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2006-03-01 22:54:48 +0000
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2006-03-01 22:54:48 +0000
commit5d26126b9e8fd6c6f5098dbaa2e5b9e2901749bf (patch)
tree233c051da862595b6e473e832051708e2d9803cb
parent12c2429a4242a157217c5bc9673a531fa1e1de61 (diff)
downloadbusybox-w32-5d26126b9e8fd6c6f5098dbaa2e5b9e2901749bf.tar.gz
busybox-w32-5d26126b9e8fd6c6f5098dbaa2e5b9e2901749bf.tar.bz2
busybox-w32-5d26126b9e8fd6c6f5098dbaa2e5b9e2901749bf.zip
- fixes parallel builds (make -j)
- use less resources for the buildsystem itself
-rw-r--r--INSTALL21
-rw-r--r--Makefile347
-rw-r--r--Rules.mak314
-rw-r--r--applets/Makefile.in20
-rwxr-xr-xapplets/install.sh3
-rw-r--r--archival/Makefile.in16
-rw-r--r--archival/libunarchive/Makefile.in96
-rw-r--r--console-tools/Makefile.in27
-rw-r--r--coreutils/Makefile.in16
-rw-r--r--coreutils/libcoreutils/Makefile.in44
-rw-r--r--debianutils/Makefile.in14
-rw-r--r--e2fsprogs/Makefile.in55
-rw-r--r--editors/Makefile.in35
-rw-r--r--findutils/Makefile.in15
-rw-r--r--init/Makefile.in15
-rw-r--r--libbb/Makefile.in102
-rw-r--r--libpwdgrp/Makefile.in54
-rw-r--r--loginutils/Makefile.in19
-rw-r--r--miscutils/Makefile.in27
-rw-r--r--modutils/Makefile.in15
-rw-r--r--networking/Makefile.in29
-rw-r--r--networking/libiproute/Makefile.in110
-rw-r--r--networking/udhcp/Makefile.in93
-rw-r--r--procps/Makefile.in14
-rw-r--r--scripts/config/Makefile10
-rw-r--r--shell/Makefile.in26
-rw-r--r--sysklogd/Makefile.in14
-rw-r--r--util-linux/Makefile.in85
28 files changed, 796 insertions, 840 deletions
diff --git a/INSTALL b/INSTALL
index c7165dec2..d5e9ae343 100644
--- a/INSTALL
+++ b/INSTALL
@@ -72,6 +72,13 @@ also configure a standaone install capability into the busybox base applet,
72and then install such links at runtime with one of "busybox --install" (for 72and then install such links at runtime with one of "busybox --install" (for
73hardlinks) or "busybox --install -s" (for symlinks). 73hardlinks) or "busybox --install -s" (for symlinks).
74 74
75If you built busybox as shared object which uses libbusybox.so and have not
76yet installed the binary but want to run tests, then set your LD_LIBRARY_PATH
77accordingly before running the executable:
78
79 export LD_LIBRARY_PATH=`pwd`
80 ./busybox
81
75Building out-of-tree: 82Building out-of-tree:
76===================== 83=====================
77 84
@@ -80,8 +87,13 @@ Building from a read-only source tree, or to building multiple
80configurations from the same source directory, requires the ability to 87configurations from the same source directory, requires the ability to
81put the temporary files somewhere else. 88put the temporary files somewhere else.
82 89
83To build out of tree, use the O=$BUILDPATH option during the configuration 90To build out of tree, cd to the empty directory and do this instead:
84step, as in: 91
92 make -f /path/to/source/Makefile allyesconfig
93 make
94 make install
95
96Alternately, use the O=$BUILDPATH option during the configuration step, as in:
85 97
86 make O=/some/empty/directory allyesconfig 98 make O=/some/empty/directory allyesconfig
87 cd /some/empty/directory 99 cd /some/empty/directory
@@ -90,11 +102,6 @@ step, as in:
90 102
91(Note, O= requires an absolute path.) 103(Note, O= requires an absolute path.)
92 104
93Alternately, cd to the empty directory and do this instead:
94
95 make top_srcdir=/path/to/source -f /path/to/source/Makefile allyesconfig
96 make
97 make install
98 105
99More Information: 106More Information:
100================= 107=================
diff --git a/Makefile b/Makefile
index 39a45c588..95a948fe6 100644
--- a/Makefile
+++ b/Makefile
@@ -10,16 +10,15 @@
10#-------------------------------------------------------------- 10#--------------------------------------------------------------
11noconfig_targets := menuconfig config oldconfig randconfig \ 11noconfig_targets := menuconfig config oldconfig randconfig \
12 defconfig allyesconfig allnoconfig allbareconfig \ 12 defconfig allyesconfig allnoconfig allbareconfig \
13 clean distclean \
14 release tags 13 release tags
15 14
16# the toplevel sourcedir 15# the toplevel sourcedir
17ifndef top_srcdir 16ifndef top_srcdir
18top_srcdir=$(CURDIR) 17top_srcdir:=$(shell cd $(dir $(firstword $(MAKEFILE_LIST))) && pwd)
19endif 18endif
20# toplevel directory of the object-tree 19# toplevel directory of the object-tree
21ifndef top_builddir 20ifndef top_builddir
22top_builddir=$(CURDIR) 21top_builddir:=$(CURDIR)
23endif 22endif
24 23
25export srctree=$(top_srcdir) 24export srctree=$(top_srcdir)
@@ -34,79 +33,102 @@ SRC_DIRS:=$(patsubst %,$(top_srcdir)/%,$(DIRS))
34 33
35# That's our default target when none is given on the command line 34# That's our default target when none is given on the command line
36.PHONY: _all 35.PHONY: _all
37_all:
38 36
39CONFIG_CONFIG_IN = $(top_srcdir)/Config.in 37_all: all
40 38
41ifeq ($(KBUILD_SRC),) 39# see if we are in verbose mode
40ifdef VERBOSE
41 CHECK_VERBOSE := -v
42 PACKAGE_BE_VERBOSE := $(VERBOSE)
43endif
44ifdef V
45 CHECK_VERBOSE := -v
46 PACKAGE_BE_VERBOSE := $(V)
47endif
42 48
43ifdef O 49ifdef O
44 ifeq ("$(origin O)", "command line") 50 ifeq ("$(origin O)", "command line")
45 KBUILD_OUTPUT := $(O) 51 PACKAGE_OUTPUTDIR := $(shell cd $(O) && pwd)
46 top_builddir := $(O) 52 top_builddir := $(PACKAGE_OUTPUTDIR)
47 endif 53 endif
48else 54else
49# If no alternate output-dir was specified, we build in cwd 55# If no alternate output-dir was specified, we build in cwd
50# We are using KBUILD_OUTPUT nevertheless to make sure that we create 56 PACKAGE_OUTPUTDIR := $(top_builddir)
51# Rules.mak and the toplevel Makefile, in case they don't exist.
52 KBUILD_OUTPUT := $(top_builddir)
53endif 57endif
54 58
55ifneq ($(strip $(HAVE_DOT_CONFIG)),y) 59#######################################################################
56# pull in OS specific commands like cp, mkdir, etc. early 60# Try to workaround bugs in make
61
62# Workaround for bugs in make-3.80
63# eval is broken if it is in a conditional
64
65#$ cat 3.80-eval-in-cond.mak
66#all:: ; @echo it
67#define Y
68# all:: ; @echo worked
69#endef
70#ifdef BAR
71#$(eval $(Y))
72#endif
73#$ make -f 3.80-eval-in-cond.mak
74#it
75#$ make -f 3.80-eval-in-cond.mak BAR=set
76#3.80-eval-in-cond.mak:5: *** missing `endif'. Stop.
77
78# This was fixed in December 2003.
79define check_gcc
80$(eval $(1)+=$(if $(2),$(if $(shell $(CC) $(2) -S -o /dev/null -xc /dev/null > /dev/null 2>&1 && echo y),$(2),$(if $(3),$(3))),$(if $(3),$(3))))
81endef
82
83define check_ld
84$(eval $(1)+=$(if $(2),$(if $(shell $(LD) $(2) -o /dev/null -b binary /dev/null > /dev/null 2>&1 && echo y),$(shell echo \-Wl,$(2)),$(if $(3),$(3))),$(if $(3),$(3))))
85endef
86
87#######################################################################
88
89
57-include $(top_srcdir)/Rules.mak 90-include $(top_srcdir)/Rules.mak
58endif
59 91
60# All object directories. 92# Handle building out of tree
61OBJ_DIRS := $(DIRS) 93ifneq ($(top_builddir),$(top_srcdir))
62all_tree := $(patsubst %,$(top_builddir)/%,$(OBJ_DIRS) scripts scripts/config include) 94all_tree := $(patsubst %,$(top_builddir)/%,$(DIRS) scripts scripts/config include include/config)
63all_tree: $(all_tree)
64$(all_tree): 95$(all_tree):
65 @mkdir -p "$@" 96 @mkdir -p "$@"
66 97
67ifneq ($(KBUILD_OUTPUT),) 98saved-output := $(PACKAGE_OUTPUTDIR)
68# Invoke a second make in the output directory, passing relevant variables 99
69# Check that the output directory actually exists 100$(if $(wildcard $(PACKAGE_OUTPUTDIR)),, \
70saved-output := $(KBUILD_OUTPUT)
71KBUILD_OUTPUT := $(shell cd $(KBUILD_OUTPUT) && /bin/pwd)
72$(if $(wildcard $(KBUILD_OUTPUT)),, \
73 $(error output directory "$(saved-output)" does not exist)) 101 $(error output directory "$(saved-output)" does not exist))
74 102
75.PHONY: $(MAKECMDGOALS) 103.PHONY: $(MAKECMDGOALS)
76 104
77$(filter-out _all,$(MAKECMDGOALS)) _all: $(KBUILD_OUTPUT)/Rules.mak $(KBUILD_OUTPUT)/Makefile all_tree 105$(PACKAGE_OUTPUTDIR)/Rules.mak:
78 $(Q)$(MAKE) -C $(KBUILD_OUTPUT) \
79 top_srcdir=$(top_srcdir) \
80 top_builddir=$(top_builddir) \
81 KBUILD_SRC=$(top_srcdir) \
82 -f $(CURDIR)/Makefile $@
83
84$(KBUILD_OUTPUT)/Rules.mak:
85 @echo > $@ 106 @echo > $@
86 @echo top_srcdir=$(top_srcdir) >> $@ 107 @echo top_srcdir=$(top_srcdir) >> $@
87 @echo top_builddir=$(KBUILD_OUTPUT) >> $@ 108 @echo top_builddir=$(PACKAGE_OUTPUTDIR) >> $@
88 @echo include $(top_srcdir)/Rules.mak >> $@ 109 @echo include $$\(top_srcdir\)/Rules.mak >> $@
89 110
90$(KBUILD_OUTPUT)/Makefile: 111$(PACKAGE_OUTPUTDIR)/Makefile:
91 @echo > $@ 112 @echo > $@
92 @echo top_srcdir=$(top_srcdir) >> $@ 113 @echo top_srcdir=$(top_srcdir) >> $@
93 @echo top_builddir=$(KBUILD_OUTPUT) >> $@ 114 @echo top_builddir=$(PACKAGE_OUTPUTDIR) >> $@
94 @echo KBUILD_SRC='$$(top_srcdir)' >> $@ 115 @echo PACKAGE_SOURCEDIR='$$(top_srcdir)' >> $@
95 @echo include '$$(KBUILD_SRC)'/Makefile >> $@ 116 @echo include '$$(PACKAGE_SOURCEDIR)'/Makefile >> $@
96 117
97# Leave processing to above invocation of make
98skip-makefile := 1
99endif # ifneq ($(KBUILD_OUTPUT),)
100endif # ifeq ($(KBUILD_SRC),)
101 118
102ifeq ($(skip-makefile),) 119buildtree := $(all_tree) $(PACKAGE_OUTPUTDIR)/Rules.mak $(PACKAGE_OUTPUTDIR)/Makefile
103 120
104# We only need a copy of the Makefile for the config targets and reuse 121# We only need a copy of the Makefile for the config targets and reuse
105# the rest from the source directory, i.e. we do not cp ALL_MAKEFILES. 122# the rest from the source directory, i.e. we do not cp ALL_MAKEFILES.
106scripts/config/Makefile: $(top_srcdir)/scripts/config/Makefile 123scripts/config/Makefile: $(top_srcdir)/scripts/config/Makefile | $(buildtree)
107 cp $< $@ 124 @cp $(top_srcdir)/scripts/config/Makefile $@
108 125
109_all: all 126else
127all_tree := include/config
128$(all_tree):
129 @mkdir -p "$@"
130buildtree := $(all_tree)
131endif # ifneq ($(PACKAGE_OUTPUTDIR),$(top_srcdir))
110 132
111help: 133help:
112 @echo 'Cleaning:' 134 @echo 'Cleaning:'
@@ -137,37 +159,42 @@ help:
137 @echo ' release - create a distribution tarball' 159 @echo ' release - create a distribution tarball'
138 @echo ' sizes - show size of all enabled busybox symbols' 160 @echo ' sizes - show size of all enabled busybox symbols'
139 @echo 161 @echo
140 162 @echo 'Make flags:'
141 163 @echo ' V=<number> - print verbose make output (default: unset)'
142include $(top_srcdir)/Rules.mak 164 @echo ' 0 print CC invocations'
165 @echo ' 1'
166 @echo ' 2 also print when make enters a directory'
167 @echo ' 3 also verbosely print shell invocations'
143 168
144ifneq ($(strip $(HAVE_DOT_CONFIG)),y) 169ifneq ($(strip $(HAVE_DOT_CONFIG)),y)
145
146# Default target if none was requested explicitly 170# Default target if none was requested explicitly
147all: defconfig menuconfig 171all: defconfig menuconfig ;
148 172
173ifneq ($(filter-out $(noconfig_targets),$(MAKECMDGOALS)),)
149# warn if no configuration exists and we are asked to build a non-config target 174# warn if no configuration exists and we are asked to build a non-config target
150.config: 175.config:
151 @echo "" 176 @echo ""
152 @echo "No $(top_builddir)/$@ found!" 177 @echo "No $(top_builddir)/$@ found!"
153 @echo "Please refer to 'make help', section Configuration." 178 @echo "Please refer to 'make help', section Configuration."
154 @echo "" 179 @echo ""
155 @exit 1 180 @exit 1
181else
182# Avoid implicit rule to kick in by using an empty command
183.config: $(buildtree) ;
184endif
185endif # ifneq ($(strip $(HAVE_DOT_CONFIG)),y)
186
156 187
157# configuration 188# configuration
158# --------------------------------------------------------------------------- 189# ---------------------------------------------------------------------------
159 190
191CONFIG_CONFIG_IN = $(top_srcdir)/Config.in
192
160scripts/config/conf: scripts/config/Makefile 193scripts/config/conf: scripts/config/Makefile
161 $(Q)$(MAKE) -C scripts/config conf 194 $(Q)$(MAKE) -C scripts/config conf
162 -@if [ ! -f .config ] ; then \
163 touch .config; \
164 fi
165 195
166scripts/config/mconf: scripts/config/Makefile 196scripts/config/mconf: scripts/config/Makefile
167 $(Q)$(MAKE) -C scripts/config ncurses conf mconf 197 $(Q)$(MAKE) -C scripts/config ncurses conf mconf
168 -@if [ ! -f .config ] ; then \
169 touch .config; \
170 fi
171 198
172menuconfig: scripts/config/mconf 199menuconfig: scripts/config/mconf
173 @./scripts/config/mconf $(CONFIG_CONFIG_IN) 200 @./scripts/config/mconf $(CONFIG_CONFIG_IN)
@@ -183,7 +210,7 @@ randconfig: scripts/config/conf
183 210
184allyesconfig: scripts/config/conf 211allyesconfig: scripts/config/conf
185 @./scripts/config/conf -y $(CONFIG_CONFIG_IN) 212 @./scripts/config/conf -y $(CONFIG_CONFIG_IN)
186 sed -i -r -e "s/^(USING_CROSS_COMPILER)=.*/# \1 is not set/" .config 213 @$(SED) -i -r -e "s/^(USING_CROSS_COMPILER)=.*/# \1 is not set/" .config
187 @./scripts/config/conf -o $(CONFIG_CONFIG_IN) 214 @./scripts/config/conf -o $(CONFIG_CONFIG_IN)
188 215
189allnoconfig: scripts/config/conf 216allnoconfig: scripts/config/conf
@@ -195,33 +222,68 @@ allnoconfig: scripts/config/conf
195 222
196defconfig: scripts/config/conf 223defconfig: scripts/config/conf
197 @./scripts/config/conf -y $(CONFIG_CONFIG_IN) 224 @./scripts/config/conf -y $(CONFIG_CONFIG_IN)
198 sed -i -r -e "s/^(USING_CROSS_COMPILER|CONFIG_(DEBUG.*|STATIC|SELINUX|BUILD_(AT_ONCE|LIBBUSYBOX)|FEATURE_(DEVFS|FULL_LIBBUSYBOX|SHARED_BUSYBOX|MTAB_SUPPORT|CLEAN_UP|UDHCP_DEBUG)|INSTALL_NO_USR))=.*/# \1 is not set/" .config 225 @$(SED) -i -r -e "s/^(USING_CROSS_COMPILER|CONFIG_(DEBUG.*|STATIC|SELINUX|BUILD_(AT_ONCE|LIBBUSYBOX)|FEATURE_(DEVFS|FULL_LIBBUSYBOX|SHARED_BUSYBOX|MTAB_SUPPORT|CLEAN_UP|UDHCP_DEBUG)|INSTALL_NO_USR))=.*/# \1 is not set/" .config
199 @./scripts/config/conf -o $(CONFIG_CONFIG_IN) 226 @./scripts/config/conf -o $(CONFIG_CONFIG_IN)
200 227
201
202allbareconfig: scripts/config/conf 228allbareconfig: scripts/config/conf
203 @./scripts/config/conf -y $(CONFIG_CONFIG_IN) 229 @./scripts/config/conf -y $(CONFIG_CONFIG_IN)
204 @sed -i -r -e "s/^(USING_CROSS_COMPILER|CONFIG_(DEBUG|STATIC|SELINUX|DEVFSD|NC_GAPING_SECURITY_HOLE|BUILD_AT_ONCE)).*/# \1 is not set/" .config 230 @$(SED) -i -r -e "s/^(USING_CROSS_COMPILER|CONFIG_(DEBUG|STATIC|SELINUX|DEVFSD|NC_GAPING_SECURITY_HOLE|BUILD_AT_ONCE)).*/# \1 is not set/" .config
205 @sed -i -e "/FEATURE/s/=.*//;/^[^#]/s/.*FEATURE.*/# \0 is not set/;" .config 231 @$(SED) -i -e "/FEATURE/s/=.*//;/^[^#]/s/.*FEATURE.*/# \0 is not set/;" .config
206 @echo "CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y" >> .config 232 @echo "CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y" >> .config
207 @./scripts/config/conf -o $(CONFIG_CONFIG_IN) 233 @./scripts/config/conf -o $(CONFIG_CONFIG_IN)
208 234
209else # ifneq ($(strip $(HAVE_DOT_CONFIG)),y) 235ifeq ($(strip $(HAVE_DOT_CONFIG)),y)
210
211all: busybox busybox.links doc
212 236
213# In this section, we need .config 237# Load all Config.in
214-include $(top_builddir)/.config.cmd 238-include $(top_builddir)/.config.cmd
215include $(patsubst %,%/Makefile.in, $(SRC_DIRS))
216 239
217endif # ifneq ($(strip $(HAVE_DOT_CONFIG)),y) 240endif # ifeq ($(strip $(HAVE_DOT_CONFIG)),y)
241
242# convert $(DIRS) to upper case. Use sed instead of tr since we're already
243# depending on it.
244DIRS_UPPER:=$(shell echo $(DIRS) | $(SED) 'h;y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/')
245
246# First populate the variables ..._OBJ-y ...OBJ-m et al
247$(foreach d,$(DIRS_UPPER),$(eval $(notdir $(d))-y:=))
248$(foreach d,$(DIRS_UPPER),$(eval $(notdir $(d))-m:=))
249
250include $(patsubst %,%/Makefile.in,$(SRC_DIRS))
218 251
219-include $(top_builddir)/.config 252# Then we need the dependencies for ..._OBJ
253define dir_pattern.o
254ifeq ($(os),.os)
255# write patterns for both .os and .o
256$(if $($(1)_OBJ.os),$($(1)_OBJ.os:.os=.o): $(top_builddir)/$(2)/%.o: $(top_srcdir)/$(2)/%.c)
257endif
258$(if $($(1)_OBJ$(os)),$($(1)_OBJ$(os)): $(top_builddir)/$(2)/%$(os): $(top_srcdir)/$(2)/%.c)
259$(if $($(1)_OBJ),$($(1)_OBJ): $(top_builddir)/$(2)/%.o: $(top_srcdir)/$(2)/%.c)
260
261lib-obj-y+=$($(1)_OBJ) $($(1)_OBJ.o) $($(1)_OBJ.os)
262lib-mobj-y+=$($(1)_MOBJ.o) $($(1)_MOBJ.os)
263bin-obj-y+=$($(1)_OBJ:.os=.o) $($(1)_OBJ.o:.os=.o) $($(1)_OBJ.os:.os=.o)
264bin-mobj-y+=$($(1)_MOBJ.o:.osm=.om) $($(1)_MOBJ.os:.osm=.om)
265endef
266# The actual directory patterns for .o*
267$(foreach d,$(DIRS),$(eval $(call dir_pattern.o,$(subst /,_,$(d)),$(d))))
268
269ifeq ($(strip $(HAVE_DOT_CONFIG)),y)
270# Finally pull in the dependencies (headers and other includes) of the
271# individual object files
220-include $(top_builddir)/.depend 272-include $(top_builddir)/.depend
221 273
222 274
275# Everything is set.
276
277all: busybox busybox.links doc ;
278
279# Two modes of operation: legacy and IMA
280# Legacy mode builds each object through an individual invocation of CC
281# IMA compiles all sources at once (aka IPO aka IPA etc.)
282
223ifeq ($(strip $(CONFIG_BUILD_AT_ONCE)),y) 283ifeq ($(strip $(CONFIG_BUILD_AT_ONCE)),y)
224libraries-y:= 284# We are not building .o
285bin-obj-y:=
286bin-mobj-y:=
225# Which parts of the internal libs are requested? 287# Which parts of the internal libs are requested?
226# Per default we only want what was actually selected. 288# Per default we only want what was actually selected.
227# -a denotes all while -y denotes the selected ones. 289# -a denotes all while -y denotes the selected ones.
@@ -237,19 +299,26 @@ APPLETS_DEFINE:=$(APPLETS_DEFINE-y)
237else # CONFIG_BUILD_AT_ONCE 299else # CONFIG_BUILD_AT_ONCE
238# no --combine, build archives out of the individual .o 300# no --combine, build archives out of the individual .o
239# This was the old way the binary was built. 301# This was the old way the binary was built.
240libbusybox-obj:=archival/libunarchive/libunarchive.a \ 302libbusybox-obj:=$(archival_libunarchive_OBJ$(os)) \
241 networking/libiproute/libiproute.a \ 303 $(networking_libiproute_OBJ$(os)) \
242 libpwdgrp/libpwdgrp.a \ 304 $(libpwdgrp_MOBJ$(os)) \
243 coreutils/libcoreutils/libcoreutils.a \ 305 $(coreutils_libcoreutils_OBJ$(os)) \
244 libbb/libbb.a 306 $(libbb_OBJ$(os)) $(libbb_MOBJ$(os))
245libbusybox-obj:=$(patsubst %,$(top_builddir)/%,$(libbusybox-obj))
246 307
247ifeq ($(strip $(CONFIG_FEATURE_SHARED_BUSYBOX)),y) 308ifeq ($(strip $(CONFIG_FEATURE_SHARED_BUSYBOX)),y)
248# linking against libbusybox, so don't build the .a already contained in the .so 309# linking against libbusybox, so don't build the .o already contained in the .so
249libraries-y:=$(filter-out $(libbusybox-obj),$(libraries-y)) 310bin-obj-y:=$(filter-out $(libbusybox-obj) $(libbusybox-obj:.os=.o),$(bin-obj-y))
311bin-mobj-y:=$(filter-out $(libbusybox-obj) $(libbusybox-obj:.osm=.om),$(bin-mobj-y))
250endif # CONFIG_FEATURE_SHARED_BUSYBOX 312endif # CONFIG_FEATURE_SHARED_BUSYBOX
251endif # CONFIG_BUILD_AT_ONCE 313endif # CONFIG_BUILD_AT_ONCE
252 314
315# build an .a to keep .hash et al small
316$(if $(bin-obj-y)$(bin-mobj-y),$(eval applets.a:=$(bin-obj-y) $(bin-mobj-y)))
317ifdef applets.a
318applets.a: $(applets.a)
319 $(do_ar)
320bin-obj.a=applets.a
321endif
253 322
254ifeq ($(strip $(CONFIG_BUILD_LIBBUSYBOX)),y) 323ifeq ($(strip $(CONFIG_BUILD_LIBBUSYBOX)),y)
255LD_LIBBUSYBOX:=libbusybox.so 324LD_LIBBUSYBOX:=libbusybox.so
@@ -258,9 +327,11 @@ DO_INSTALL_LIBS:=$(LD_LIBBUSYBOX) \
258 $(LD_LIBBUSYBOX).$(MAJOR_VERSION) \ 327 $(LD_LIBBUSYBOX).$(MAJOR_VERSION) \
259 $(LD_LIBBUSYBOX).$(MAJOR_VERSION).$(MINOR_VERSION) 328 $(LD_LIBBUSYBOX).$(MAJOR_VERSION).$(MINOR_VERSION)
260 329
330endif # CONFIG_BUILD_LIBBUSYBOX
331
261ifeq ($(strip $(CONFIG_BUILD_AT_ONCE)),y) 332ifeq ($(strip $(CONFIG_BUILD_AT_ONCE)),y)
262ifneq ($(strip $(CONFIG_FEATURE_SHARED_BUSYBOX)),y) 333ifneq ($(strip $(CONFIG_FEATURE_SHARED_BUSYBOX)),y)
263# --combine but not linking against libbusybox, so compile all 334# --combine but not linking against libbusybox, so compile lib*.c
264BUSYBOX_SRC := $(LIBRARY_SRC) 335BUSYBOX_SRC := $(LIBRARY_SRC)
265BUSYBOX_DEFINE:= $(LIBRARY_DEFINE) 336BUSYBOX_DEFINE:= $(LIBRARY_DEFINE)
266endif # !CONFIG_FEATURE_SHARED_BUSYBOX 337endif # !CONFIG_FEATURE_SHARED_BUSYBOX
@@ -268,7 +339,7 @@ $(LIBBUSYBOX_SONAME): $(LIBRARY_SRC)
268else # CONFIG_BUILD_AT_ONCE 339else # CONFIG_BUILD_AT_ONCE
269$(LIBBUSYBOX_SONAME): $(libbusybox-obj) 340$(LIBBUSYBOX_SONAME): $(libbusybox-obj)
270endif # CONFIG_BUILD_AT_ONCE 341endif # CONFIG_BUILD_AT_ONCE
271endif # CONFIG_BUILD_LIBBUSYBOX 342
272 343
273ifeq ($(strip $(CONFIG_FEATURE_SHARED_BUSYBOX)),y) 344ifeq ($(strip $(CONFIG_FEATURE_SHARED_BUSYBOX)),y)
274LDBUSYBOX:=-L$(top_builddir) -lbusybox 345LDBUSYBOX:=-L$(top_builddir) -lbusybox
@@ -279,24 +350,27 @@ $(LIBBUSYBOX_SONAME):
279ifndef MAJOR_VERSION 350ifndef MAJOR_VERSION
280 $(error MAJOR_VERSION needed for $@ is not defined) 351 $(error MAJOR_VERSION needed for $@ is not defined)
281endif 352endif
282 $(do_link) $(LIB_CFLAGS) $(LIB_LDFLAGS) \ 353 $(do_link) $(LIB_CFLAGS) $(LIB_LDFLAGS) $(CFLAGS_COMBINE) \
283 -Wl,-soname=$(LD_LIBBUSYBOX).$(MAJOR_VERSION) \ 354 -Wl,-soname=$(LD_LIBBUSYBOX).$(MAJOR_VERSION) \
284 -Wl,-z,combreloc $(LIB_LDFLAGS) \ 355 -Wl,-z,combreloc $(LIB_LDFLAGS) \
285 -o $(@) \ 356 -o $(@) \
286 -Wl,--start-group -Wl,--whole-archive \ 357 -Wl,--start-group \
287 $(LIBRARY_DEFINE) $(^) \ 358 $(LIBRARY_DEFINE) $(^) \
288 -Wl,--no-whole-archive -Wl,--end-group 359 -Wl,--end-group
289 $(RM_F) $(DO_INSTALL_LIBS) 360 @rm -f $(DO_INSTALL_LIBS)
290 for i in $(DO_INSTALL_LIBS); do $(LN_S) -v $(@) $$i ; done 361 @for i in $(DO_INSTALL_LIBS); do ln -s $(@) $$i ; done
291 $(do_strip) 362 $(do_strip)
292 363
293endif # ifeq ($(strip $(CONFIG_BUILD_LIBBUSYBOX)),y) 364endif # ifeq ($(strip $(CONFIG_BUILD_LIBBUSYBOX)),y)
294 365
295busybox: .depend $(LIBBUSYBOX_SONAME) $(BUSYBOX_SRC) $(libraries-y) 366busybox: $(top_builddir)/.depend $(LIBBUSYBOX_SONAME) $(BUSYBOX_SRC) $(APPLET_SRC) $(bin-obj.a)
296 $(do_link) $(PROG_CFLAGS) \ 367 $(do_link) $(PROG_CFLAGS) $(PROG_LDFLAGS) $(CFLAGS_COMBINE) \
297 -o $@ -Wl,--start-group \ 368 $(foreach f,$(^:.o=.c),$(CFLAGS-$(notdir $(patsubst %/$,%,$(dir $(f))))-$(notdir $(f)))) \
369 $(CFLAGS-$(@)) \
370 -o $@ -Wl,--start-group \
298 $(APPLETS_DEFINE) $(APPLET_SRC) \ 371 $(APPLETS_DEFINE) $(APPLET_SRC) \
299 $(BUSYBOX_DEFINE) $(BUSYBOX_SRC) $(libraries-y) \ 372 $(BUSYBOX_DEFINE) $(BUSYBOX_SRC) \
373 $(bin-obj.a) \
300 $(LDBUSYBOX) $(LIBRARIES) \ 374 $(LDBUSYBOX) $(LIBRARIES) \
301 -Wl,--end-group 375 -Wl,--end-group
302 $(do_strip) 376 $(do_strip)
@@ -305,7 +379,7 @@ busybox.links: $(top_srcdir)/applets/busybox.mkll include/bb_config.h $(top_srcd
305 $(Q)-$(SHELL) $^ >$@ 379 $(Q)-$(SHELL) $^ >$@
306 380
307install: $(top_srcdir)/applets/install.sh busybox busybox.links 381install: $(top_srcdir)/applets/install.sh busybox busybox.links
308 DO_INSTALL_LIBS="$(strip $(LIBBUSYBOX_SONAME) $(DO_INSTALL_LIBS))" \ 382 $(Q)DO_INSTALL_LIBS="$(strip $(LIBBUSYBOX_SONAME) $(DO_INSTALL_LIBS))" \
309 $(SHELL) $< $(PREFIX) $(INSTALL_OPTS) 383 $(SHELL) $< $(PREFIX) $(INSTALL_OPTS)
310ifeq ($(strip $(CONFIG_FEATURE_SUID)),y) 384ifeq ($(strip $(CONFIG_FEATURE_SUID)),y)
311 @echo 385 @echo
@@ -319,44 +393,33 @@ ifeq ($(strip $(CONFIG_FEATURE_SUID)),y)
319endif 393endif
320 394
321uninstall: busybox.links 395uninstall: busybox.links
322 $(RM_F) $(PREFIX)/bin/busybox 396 rm -f $(PREFIX)/bin/busybox
323 for i in `cat busybox.links` ; do $(RM_F) $(PREFIX)$$i; done 397 for i in `cat busybox.links` ; do rm -f $(PREFIX)$$i; done
324ifneq ($(strip $(DO_INSTALL_LIBS)),n) 398ifneq ($(strip $(DO_INSTALL_LIBS)),n)
325 for i in $(LIBBUSYBOX_SONAME) $(DO_INSTALL_LIBS); do \ 399 for i in $(LIBBUSYBOX_SONAME) $(DO_INSTALL_LIBS); do \
326 $(RM_F) $(PREFIX)$$i; \ 400 rm -f $(PREFIX)$$i; \
327 done 401 done
328endif 402endif
329 403
330# see if we are in verbose mode
331KBUILD_VERBOSE :=
332ifdef V
333 ifeq ("$(origin V)", "command line")
334 KBUILD_VERBOSE := $(V)
335 endif
336endif
337ifneq ($(strip $(KBUILD_VERBOSE)),)
338 CHECK_VERBOSE := -v
339# ARFLAGS+=v
340endif
341check test: busybox 404check test: busybox
342 bindir=$(top_builddir) srcdir=$(top_srcdir)/testsuite \ 405 bindir=$(top_builddir) srcdir=$(top_srcdir)/testsuite \
343 $(top_srcdir)/testsuite/runtest $(CHECK_VERBOSE) 406 $(top_srcdir)/testsuite/runtest $(CHECK_VERBOSE)
344 407
345sizes: 408sizes:
346 -$(RM_F) busybox 409 -rm -f busybox
347 $(MAKE) top_srcdir=$(top_srcdir) top_builddir=$(top_builddir) \ 410 $(MAKE) top_srcdir=$(top_srcdir) top_builddir=$(top_builddir) \
348 -f $(top_srcdir)/Makefile STRIPCMD=/bin/true 411 -f $(top_srcdir)/Makefile STRIPCMD=/bin/true
349 $(NM) --size-sort busybox 412 $(NM) --size-sort busybox
350 413
351# Documentation Targets 414# Documentation Targets
352doc: docs/busybox.pod docs/BusyBox.txt docs/BusyBox.1 docs/BusyBox.html 415doc: docs/busybox.pod docs/BusyBox.txt docs/BusyBox.1 docs/BusyBox.html ;
353 416
354docs/busybox.pod : $(top_srcdir)/docs/busybox_header.pod $(top_srcdir)/include/usage.h $(top_srcdir)/docs/busybox_footer.pod $(top_srcdir)/docs/autodocifier.pl 417docs/busybox.pod : $(top_srcdir)/docs/busybox_header.pod $(top_srcdir)/include/usage.h $(top_srcdir)/docs/busybox_footer.pod $(top_srcdir)/docs/autodocifier.pl
355 $(disp_doc) 418 $(disp_doc)
356 $(Q)-mkdir -p docs 419 $(Q)-mkdir -p docs
357 $(Q)-( cat $(top_srcdir)/docs/busybox_header.pod; \ 420 $(Q)-( cat $(top_srcdir)/docs/busybox_header.pod ; \
358 $(top_srcdir)/docs/autodocifier.pl $(top_srcdir)/include/usage.h; \ 421 $(top_srcdir)/docs/autodocifier.pl $(top_srcdir)/include/usage.h ; \
359 cat $(top_srcdir)/docs/busybox_footer.pod ) > docs/busybox.pod 422 cat $(top_srcdir)/docs/busybox_footer.pod ; ) > docs/busybox.pod
360 423
361docs/BusyBox.txt: docs/busybox.pod 424docs/BusyBox.txt: docs/busybox.pod
362 $(disp_doc) 425 $(disp_doc)
@@ -372,18 +435,18 @@ docs/BusyBox.1: docs/busybox.pod
372docs/BusyBox.html: docs/busybox.net/BusyBox.html 435docs/BusyBox.html: docs/busybox.net/BusyBox.html
373 $(disp_doc) 436 $(disp_doc)
374 $(Q)-mkdir -p docs 437 $(Q)-mkdir -p docs
375 $(Q)-$(RM_F) docs/BusyBox.html 438 $(Q)-rm -f docs/BusyBox.html
376 $(Q)-cp docs/busybox.net/BusyBox.html docs/BusyBox.html 439 $(Q)-cp docs/busybox.net/BusyBox.html docs/BusyBox.html
377 440
378docs/busybox.net/BusyBox.html: docs/busybox.pod 441docs/busybox.net/BusyBox.html: docs/busybox.pod
379 $(Q)-mkdir -p docs/busybox.net 442 $(Q)-mkdir -p docs/busybox.net
380 $(Q)-pod2html --noindex $< > \ 443 $(Q)-pod2html --noindex $< > \
381 docs/busybox.net/BusyBox.html 444 docs/busybox.net/BusyBox.html
382 $(Q)-$(RM_F) pod2htm* 445 $(Q)-rm -f pod2htm*
383 446
384# The nifty new buildsystem stuff 447# The nifty new dependency stuff
385scripts/bb_mkdep: $(top_srcdir)/scripts/bb_mkdep.c 448scripts/bb_mkdep: $(top_srcdir)/scripts/bb_mkdep.c
386 $(Q)$(HOSTCC) $(HOSTCFLAGS) -o $@ $< 449 $(do_link.h)
387 450
388DEP_INCLUDES := include/bb_config.h 451DEP_INCLUDES := include/bb_config.h
389 452
@@ -395,63 +458,65 @@ include/bbconfigopts.h: .config
395 $(Q)$(top_srcdir)/scripts/config/mkconfigs > $@ 458 $(Q)$(top_srcdir)/scripts/config/mkconfigs > $@
396endif 459endif
397 460
398depend dep: .depend 461depend dep: $(top_builddir)/.depend ;
399.depend: scripts/bb_mkdep $(DEP_INCLUDES) 462$(top_builddir)/.depend: $(buildtree) scripts/bb_mkdep $(DEP_INCLUDES)
400 $(disp_gen) 463 $(disp_gen)
401 $(Q)$(RM_F) .depend 464 $(Q)rm -f .depend
402 $(Q)mkdir -p include/config 465 $(Q)scripts/bb_mkdep $(MKDEP_ARGS) \
403 $(Q)scripts/bb_mkdep -I $(top_srcdir)/include $(top_srcdir) > $@.tmp 466 -I $(top_srcdir)/include $(top_srcdir) > $@.tmp
404 $(Q)mv $@.tmp $@ 467 $(Q)mv $@.tmp $@
405 468
406include/bb_config.h: .config 469include/bb_config.h: .config
407 @if [ ! -x $(top_builddir)/scripts/config/conf ] ; then \ 470 $(disp_gen)
408 $(MAKE) -C scripts/config conf; \
409 fi;
410 @$(top_builddir)/scripts/config/conf -o $(CONFIG_CONFIG_IN) 471 @$(top_builddir)/scripts/config/conf -o $(CONFIG_CONFIG_IN)
411 472
473endif # ifeq ($(strip $(HAVE_DOT_CONFIG)),y)
474
412clean: 475clean:
413 - $(MAKE) -C scripts/config $@ 476 - rm -f docs/busybox.dvi docs/busybox.ps \
414 - $(RM_F) docs/busybox.dvi docs/busybox.ps \
415 docs/busybox.pod docs/busybox.net/busybox.html \ 477 docs/busybox.pod docs/busybox.net/busybox.html \
416 docs/busybox pod2htm* *.gdb *.elf *~ core .*config.log \ 478 docs/busybox pod2htm* *.gdb *.elf *~ core .*config.log \
417 docs/BusyBox.txt docs/BusyBox.1 docs/BusyBox.html \ 479 docs/BusyBox.txt docs/BusyBox.1 docs/BusyBox.html \
418 docs/busybox.net/BusyBox.html busybox.links \ 480 docs/busybox.net/BusyBox.html busybox.links \
419 $(DO_INSTALL_LIBS) $(LIBBUSYBOX_SONAME) \ 481 $(DO_INSTALL_LIBS) $(LIBBUSYBOX_SONAME) \
420 .config.old busybox 482 .config.old busybox
421 - rm -rf _install testsuite/links 483 - rm -r -f _install testsuite/links
422 - find . -name .\*.flags -exec $(RM_F) {} \; 484 - find . -name .\*.flags -exec rm -f {} \;
423 - find . -name \*.o -exec $(RM_F) {} \; 485 - find . -name \*.o -exec rm -f {} \;
424 - find . -name \*.a -exec $(RM_F) {} \; 486 - find . -name \*.om -exec rm -f {} \;
425 - find . -name \*.so -exec $(RM_F) {} \; 487 - find . -name \*.os -exec rm -f {} \;
488 - find . -name \*.a -exec rm -f {} \;
426 489
427distclean: clean 490distclean: clean
428 - $(RM_F) scripts/bb_mkdep 491 - $(MAKE) -C scripts/config clean
429 - rm -rf include/config $(DEP_INCLUDES) 492 - rm -f scripts/bb_mkdep
430 - find . -name .depend'*' -exec $(RM_F) {} \; 493 - rm -r -f include/config $(DEP_INCLUDES)
431 $(RM_F) .config .config.old .config.cmd 494 - find . -name .depend'*' -exec rm -f {} \;
495 rm -f .config .config.old .config.cmd
432 496
433release: distclean #doc 497release: distclean #doc
434 cd ..; \ 498 cd ..; \
435 rm -rf $(PROG)-$(VERSION); \ 499 rm -r -f $(PROG)-$(VERSION); \
436 cp -a busybox $(PROG)-$(VERSION); \ 500 cp -a busybox $(PROG)-$(VERSION); \
437 \ 501 \
438 find $(PROG)-$(VERSION)/ -type d \ 502 find $(PROG)-$(VERSION)/ -type d \
439 -name .svn \ 503 -name .svn \
440 -print \ 504 -print \
441 -exec rm -rf {} \; ; \ 505 -exec rm -r -f {} \; ; \
442 \ 506 \
443 find $(PROG)-$(VERSION)/ -type f \ 507 find $(PROG)-$(VERSION)/ -type f \
444 -name .\#* \ 508 -name .\#* \
445 -print \ 509 -print \
446 -exec $(RM_F) {} \; ; \ 510 -exec rm -f {} \; ; \
447 \ 511 \
448 tar -cvzf $(PROG)-$(VERSION).tar.gz $(PROG)-$(VERSION)/; 512 tar -cvzf $(PROG)-$(VERSION).tar.gz $(PROG)-$(VERSION)/;
449 513
450tags: 514tags:
451 ctags -R . 515 ctags -R .
452 516
453 517# keep these in sync with noconfig_targets above!
454endif # ifeq ($(skip-makefile),) 518.PHONY: dummy subdirs check test depend dep buildtree \
455 519 menuconfig config oldconfig randconfig \
456.PHONY: dummy subdirs release distclean clean config oldconfig \ 520 defconfig allyesconfig allnoconfig allbareconfig \
457 menuconfig tags check test depend dep buildtree 521 clean distclean \
522 release tags
diff --git a/Rules.mak b/Rules.mak
index ab6e311c6..60812a57e 100644
--- a/Rules.mak
+++ b/Rules.mak
@@ -10,6 +10,12 @@ ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),)
10-include $(top_builddir)/.config 10-include $(top_builddir)/.config
11endif 11endif
12 12
13ifeq ($(MAKELEVEL),0)
14ifeq ($(HAVE_DOT_CONFIG),y)
15rules-mak-rules:=0
16endif
17endif
18
13#-------------------------------------------------------- 19#--------------------------------------------------------
14PROG := busybox 20PROG := busybox
15MAJOR_VERSION :=1 21MAJOR_VERSION :=1
@@ -30,8 +36,9 @@ BUILDTIME := $(shell TZ=UTC date -u "+%Y.%m.%d-%H:%M%z")
30# If you are running a cross compiler, you will want to set 'CROSS' 36# If you are running a cross compiler, you will want to set 'CROSS'
31# to something more interesting... Target architecture is determined 37# to something more interesting... Target architecture is determined
32# by asking the CC compiler what arch it compiles things for, so unless 38# by asking the CC compiler what arch it compiles things for, so unless
33# your compiler is broken, you should not need to specify TARGET_ARCH 39# your compiler is broken, you should not need to specify __TARGET_ARCH
34CROSS =$(subst ",, $(strip $(CROSS_COMPILER_PREFIX))) 40CROSS =$(subst ",, $(strip $(CROSS_COMPILER_PREFIX)))
41#")
35CC = $(CROSS)gcc 42CC = $(CROSS)gcc
36AR = $(CROSS)ar 43AR = $(CROSS)ar
37AS = $(CROSS)as 44AS = $(CROSS)as
@@ -39,16 +46,19 @@ LD = $(CROSS)ld
39NM = $(CROSS)nm 46NM = $(CROSS)nm
40STRIP = $(CROSS)strip 47STRIP = $(CROSS)strip
41CPP = $(CC) -E 48CPP = $(CC) -E
42# MAKEFILES = $(top_builddir)/.config 49SED ?= sed
43RM = rm 50AWK ?= awk
44RM_F = $(RM) -f 51
45LN = ln 52
46LN_S = $(LN) -s 53ifdef PACKAGE_BE_VERBOSE
47MKDIR = mkdir 54PACKAGE_BE_VERBOSE := $(shell echo $(PACKAGE_BE_VERBOSE) | $(SED) "s/[[:alpha:]]*//g")
48MKDIR_P = $(MKDIR) -p 55endif
49MV = mv
50CP = cp
51 56
57# for make V=3 and above make $(shell) invocations verbose
58ifeq ($(if $(strip $(PACKAGE_BE_VERBOSE)),$(shell test $(PACKAGE_BE_VERBOSE) -gt 2 ; echo $$?),1),0)
59 SHELL+=-x
60 MKDEP_ARGS:=-w
61endif
52 62
53# What OS are you compiling busybox for? This allows you to include 63# What OS are you compiling busybox for? This allows you to include
54# OS specific things, syscall overrides, etc. 64# OS specific things, syscall overrides, etc.
@@ -63,8 +73,9 @@ LC_ALL:= C
63 73
64# If you want to add some simple compiler switches (like -march=i686), 74# If you want to add some simple compiler switches (like -march=i686),
65# especially from the command line, use this instead of CFLAGS directly. 75# especially from the command line, use this instead of CFLAGS directly.
66# For optimization overrides, it's better still to set OPTIMIZATION. 76# For optimization overrides, it's better still to set OPTIMIZATIONS.
67CFLAGS_EXTRA=$(subst ",, $(strip $(EXTRA_CFLAGS_OPTIONS))) 77CFLAGS_EXTRA=$(subst ",, $(strip $(EXTRA_CFLAGS_OPTIONS)))
78#")
68 79
69# To compile vs some other alternative libc, you may need to use/adjust 80# To compile vs some other alternative libc, you may need to use/adjust
70# the following lines to meet your needs... 81# the following lines to meet your needs...
@@ -81,20 +92,50 @@ CFLAGS_EXTRA=$(subst ",, $(strip $(EXTRA_CFLAGS_OPTIONS)))
81#GCCINCDIR:=$(shell gcc -print-search-dirs | sed -ne "s/install: \(.*\)/\1include/gp") 92#GCCINCDIR:=$(shell gcc -print-search-dirs | sed -ne "s/install: \(.*\)/\1include/gp")
82 93
83WARNINGS=-Wall -Wstrict-prototypes -Wshadow 94WARNINGS=-Wall -Wstrict-prototypes -Wshadow
84CFLAGS+=-I$(top_builddir)/include -I$(top_srcdir)/include -I$(srcdir) 95CFLAGS+=-I$(top_builddir)/include -I$(top_srcdir)/include
85 96
86ARFLAGS=cru 97ARFLAGS=cru
87 98
88 99
100
101# Get the CC MAJOR/MINOR version
89# gcc centric. Perhaps fiddle with findstring gcc,$(CC) for the rest 102# gcc centric. Perhaps fiddle with findstring gcc,$(CC) for the rest
90# get the CC MAJOR/MINOR version
91CC_MAJOR:=$(shell printf "%02d" $(shell echo __GNUC__ | $(CC) -E -xc - | tail -n 1)) 103CC_MAJOR:=$(shell printf "%02d" $(shell echo __GNUC__ | $(CC) -E -xc - | tail -n 1))
92CC_MINOR:=$(shell printf "%02d" $(shell echo __GNUC_MINOR__ | $(CC) -E -xc - | tail -n 1)) 104CC_MINOR:=$(shell printf "%02d" $(shell echo __GNUC_MINOR__ | $(CC) -E -xc - | tail -n 1))
93 105
106# Note: spaces are significant here!
107# Check if CC version is equal to given MAJOR,MINOR. Returns empty if false.
108define cc_eq
109$(shell [ $(CC_MAJOR) -eq $(1) -a $(CC_MINOR) -eq $(2) ] && echo y)
110endef
111# Check if CC version is greater or equal than given MAJOR,MINOR
112define cc_ge
113$(shell [ $(CC_MAJOR) -ge $(1) -a $(CC_MINOR) -ge $(2) ] && echo y)
114endef
115# Check if CC version is less or equal than given MAJOR,MINOR
116define cc_le
117$(shell [ $(CC_MAJOR) -le $(1) -a $(CC_MINOR) -le $(2) ] && echo y)
118endef
119
120# Workaround bugs in make-3.80 for eval in conditionals
121define is_eq
122$(shell [ $(1) = $(2) ] 2> /dev/null && echo y)
123endef
124define is_neq
125$(shell [ $(1) != $(2) ] 2> /dev/null && echo y)
126endef
127
94#-------------------------------------------------------- 128#--------------------------------------------------------
95export VERSION BUILDTIME HOSTCC HOSTCFLAGS CROSS CC AR AS LD NM STRIP CPP 129export VERSION BUILDTIME HOSTCC HOSTCFLAGS CROSS CC AR AS LD NM STRIP CPP
96ifeq ($(strip $(TARGET_ARCH)),) 130
97TARGET_ARCH:=$(shell $(CC) -dumpmachine | sed -e s'/-.*//' \ 131# TARGET_ARCH and TARGET_MACH will be passed verbatim to CC with recent
132# versions of make, so we use __TARGET_ARCH here.
133# Current builtin rules looks like that:
134# COMPILE.s = $(AS) $(ASFLAGS) $(TARGET_MACH)
135# COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
136
137ifeq ($(strip $(__TARGET_ARCH)),)
138__TARGET_ARCH:=$(shell $(CC) -dumpmachine | sed -e s'/-.*//' \
98 -e 's/i.86/i386/' \ 139 -e 's/i.86/i386/' \
99 -e 's/sparc.*/sparc/' \ 140 -e 's/sparc.*/sparc/' \
100 -e 's/arm.*/arm/g' \ 141 -e 's/arm.*/arm/g' \
@@ -108,70 +149,60 @@ TARGET_ARCH:=$(shell $(CC) -dumpmachine | sed -e s'/-.*//' \
108 ) 149 )
109endif 150endif
110 151
111# A nifty macro to make testing gcc features easier 152$(call check_gcc,CFLAGS,-funsigned-char,)
112check_gcc=$(shell \ 153$(call check_gcc,CFLAGS,-mmax-stack-frame=256,)
113 if [ "$(1)" != "" ]; then \
114 if $(CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; \
115 then echo "$(1)"; else echo "$(2)"; fi \
116 fi)
117
118# A not very robust macro to check for available ld flags
119check_ld=$(shell \
120 if [ "x$(1)" != "x" ]; then \
121 $(LD) --help | grep -q "\$(1)" && echo "-Wl,$(1)" ; \
122 fi)
123
124CFLAGS+=$(call check_gcc,-funsigned-char,)
125
126CFLAGS+=$(call check_gcc,-mmax-stack-frame=256,)
127 154
128#-------------------------------------------------------- 155#--------------------------------------------------------
129# Arch specific compiler optimization stuff should go here. 156# Arch specific compiler optimization stuff should go here.
130# Unless you want to override the defaults, do not set anything 157# Unless you want to override the defaults, do not set anything
131# for OPTIMIZATION... 158# for OPTIMIZATIONS...
132 159
133# use '-Os' optimization if available, else use -O2 160# use '-Os' optimization if available, else use -O2
134OPTIMIZATION:=$(call check_gcc,-Os,-O2) 161$(call check_gcc,OPTIMIZATIONS,-Os,-O2)
135 162
136ifeq ($(CONFIG_BUILD_AT_ONCE),y)
137# gcc 2.95 exits with 0 for "unrecognized option" 163# gcc 2.95 exits with 0 for "unrecognized option"
138ifeq ($(strip $(shell [ $(CC_MAJOR) -ge 3 ] ; echo $$?)),0) 164$(if $(call is_eq,$(CONFIG_BUILD_AT_ONCE),y),\
139 OPTIMIZATION+=$(call check_gcc,--combine,) 165 $(if $(call cc_ge,3,0),\
140endif 166 $(call check_gcc,CFLAGS_COMBINE,--combine,)))
141OPTIMIZATION+=$(call check_gcc,-funit-at-a-time,)
142PROG_CFLAGS+=$(call check_gcc,-fwhole-program,)
143endif # CONFIG_BUILD_AT_ONCE
144 167
145LIB_LDFLAGS:=$(call check_ld,--enable-new-dtags,) 168$(if $(call is_eq,$(CONFIG_BUILD_AT_ONCE),y),\
146#LIB_LDFLAGS+=$(call check_ld,--reduce-memory-overheads,) 169 $(call check_gcc,OPTIMIZATIONS,-funit-at-a-time,))
147#LIB_LDFLAGS+=$(call check_ld,--as-needed,)
148#LIB_LDFLAGS+=$(call check_ld,--warn-shared-textrel,)
149 170
171# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25795
172#$(if $(call is_eq,$(CONFIG_BUILD_AT_ONCE),y),\
173# $(call check_gcc,PROG_CFLAGS,-fwhole-program,))
174
175$(call check_ld,LIB_LDFLAGS,--enable-new-dtags,)
176#$(call check_ld,LIB_LDFLAGS,--reduce-memory-overheads,)
177#$(call check_ld,LIB_LDFLAGS,--as-needed,)
178#$(call check_ld,LIB_LDFLAGS,--warn-shared-textrel,)
179
180$(call check_ld,PROG_LDFLAGS,--gc-sections,)
150 181
151# Some nice architecture specific optimizations 182# Some nice architecture specific optimizations
152ifeq ($(strip $(TARGET_ARCH)),arm) 183ifeq ($(__TARGET_ARCH),arm)
153 OPTIMIZATION+=-fstrict-aliasing 184 OPTIMIZATIONS+=-fstrict-aliasing
154endif 185endif # arm
155ifeq ($(strip $(TARGET_ARCH)),i386) 186
156 OPTIMIZATION+=$(call check_gcc,-march=i386,) 187$(if $(call is_eq,$(__TARGET_ARCH),i386),\
188 $(call check_gcc,OPTIMIZATIONS,-march=i386,))
189
157# gcc-4.0 and older seem to suffer from these 190# gcc-4.0 and older seem to suffer from these
158ifneq ($(strip $(shell [ $(CC_MAJOR) -ge 4 -a $(CC_MINOR) -ge 1 ] ; echo $$?)),0) 191$(if $(call cc_le,4,0),\
159 OPTIMIZATION+=$(call check_gcc,-mpreferred-stack-boundary=2,) 192 $(call check_gcc,OPTIMIZATIONS,-mpreferred-stack-boundary=2,)\
160 OPTIMIZATION+=$(call check_gcc,-falign-functions=0 -falign-jumps=0 -falign-loops=0,\ 193 $(call check_gcc,OPTIMIZATIONS,-falign-functions=0 -falign-jumps=0 -falign-loops=0,\
161 -malign-functions=0 -malign-jumps=0 -malign-loops=0) 194 -malign-functions=0 -malign-jumps=0 -malign-loops=0))
162endif # gcc-4.0 and older
163 195
164# gcc-4.1 and beyond seem to benefit from these 196# gcc-4.1 and beyond seem to benefit from these
165ifeq ($(strip $(shell [ $(CC_MAJOR) -ge 4 -a $(CC_MINOR) -ge 1 ] ; echo $$?)),0) 197# turn off flags which hurt -Os
166 # turn off flags which hurt -Os 198$(if $(call cc_ge,4,1),\
167 OPTIMIZATION+=$(call check_gcc,-fno-tree-loop-optimize,) 199 $(call check_gcc,OPTIMIZATIONS,-fno-tree-loop-optimize,)\
168 OPTIMIZATION+=$(call check_gcc,-fno-tree-dominator-opts,) 200 $(call check_gcc,OPTIMIZATIONS,-fno-tree-dominator-opts,)\
169 OPTIMIZATION+=$(call check_gcc,-fno-strength-reduce,) 201 $(call check_gcc,OPTIMIZATIONS,-fno-strength-reduce,)\
170 202\
171 OPTIMIZATION+=$(call check_gcc,-fno-branch-count-reg,) 203 $(call check_gcc,OPTIMIZATIONS,-fno-branch-count-reg,))
172endif # gcc-4.1 and beyond 204
173endif 205$(call check_gcc,OPTIMIZATIONS,-fomit-frame-pointer,)
174OPTIMIZATIONS:=$(OPTIMIZATION) $(call check_gcc,-fomit-frame-pointer,)
175 206
176# 207#
177#-------------------------------------------------------- 208#--------------------------------------------------------
@@ -182,40 +213,40 @@ OPTIMIZATIONS:=$(OPTIMIZATION) $(call check_gcc,-fomit-frame-pointer,)
182# prone to casual user adjustment. 213# prone to casual user adjustment.
183# 214#
184 215
185ifeq ($(strip $(CONFIG_LFS)),y) 216ifeq ($(CONFIG_LFS),y)
186 # For large file summit support 217 # For large file summit support
187 CFLAGS+=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 218 CFLAGS+=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
188endif 219endif
189ifeq ($(strip $(CONFIG_DMALLOC)),y) 220ifeq ($(CONFIG_DMALLOC),y)
190 # For testing mem leaks with dmalloc 221 # For testing mem leaks with dmalloc
191 CFLAGS+=-DDMALLOC 222 CFLAGS+=-DDMALLOC
192 LIBRARIES:=-ldmalloc 223 LIBRARIES:=-ldmalloc
193else 224else
194 ifeq ($(strip $(CONFIG_EFENCE)),y) 225 ifeq ($(CONFIG_EFENCE),y)
195 LIBRARIES:=-lefence 226 LIBRARIES:=-lefence
196 endif 227 endif
197endif 228endif
198ifeq ($(strip $(CONFIG_DEBUG)),y) 229
230$(if $(call is_eq,$(CONFIG_DEBUG),y),\
231 $(call check_ld,LDFLAGS,--warn-common,),\
232 $(call check_ld,LDFLAGS,--warn-common,)$(call check_ld,LDFLAGS,--sort-common,))
233ifeq ($(CONFIG_DEBUG),y)
199 CFLAGS +=$(WARNINGS) -g -D_GNU_SOURCE 234 CFLAGS +=$(WARNINGS) -g -D_GNU_SOURCE
200 LDFLAGS += $(call check_ld,--warn-common,)
201 STRIPCMD:=/bin/true -Not_stripping_since_we_are_debugging 235 STRIPCMD:=/bin/true -Not_stripping_since_we_are_debugging
202else 236else
203 CFLAGS+=$(WARNINGS) $(OPTIMIZATIONS) -D_GNU_SOURCE -DNDEBUG 237 CFLAGS+=$(WARNINGS) $(OPTIMIZATIONS) -D_GNU_SOURCE -DNDEBUG
204 LDFLAGS += $(call check_ld,--warn-common,)
205 LDFLAGS += $(call check_ld,--sort-common,)
206 STRIPCMD:=$(STRIP) -s --remove-section=.note --remove-section=.comment 238 STRIPCMD:=$(STRIP) -s --remove-section=.note --remove-section=.comment
207endif 239endif
208ifeq ($(strip $(CONFIG_STATIC)),y) 240$(if $(call is_eq,$(CONFIG_STATIC),y),\
209 PROG_CFLAGS += $(call check_gcc,-static,) 241 $(call check_gcc,PROG_CFLAGS,-static,))
210endif 242
211CFLAGS_SHARED += $(call check_gcc,-shared,) 243$(call check_gcc,CFLAGS_SHARED,-shared,)
212LIB_CFLAGS+=$(CFLAGS_SHARED) 244LIB_CFLAGS+=$(CFLAGS_SHARED)
213 245
214ifeq ($(strip $(CONFIG_BUILD_LIBBUSYBOX)),y) 246$(if $(call is_eq,$(CONFIG_BUILD_LIBBUSYBOX),y),\
215 CFLAGS_PIC:= $(call check_gcc,-fPIC,) 247 $(call check_gcc,CFLAGS_PIC,-fPIC,))
216endif
217 248
218ifeq ($(strip $(CONFIG_SELINUX)),y) 249ifeq ($(CONFIG_SELINUX),y)
219 LIBRARIES += -lselinux 250 LIBRARIES += -lselinux
220endif 251endif
221 252
@@ -223,14 +254,6 @@ ifeq ($(strip $(PREFIX)),)
223 PREFIX:=`pwd`/_install 254 PREFIX:=`pwd`/_install
224endif 255endif
225 256
226# Additional complications due to support for pristine source dir.
227# Include files in the build directory should take precedence over
228# the copy in top_srcdir, both during the compilation phase and the
229# shell script that finds the list of object files.
230# Work in progress by <ldoolitt@recycle.lbl.gov>.
231
232
233OBJECTS:=$(APPLET_SOURCES:.c=.o) busybox.o usage.o applets.o
234CFLAGS += $(CROSS_CFLAGS) 257CFLAGS += $(CROSS_CFLAGS)
235ifdef BB_INIT_SCRIPT 258ifdef BB_INIT_SCRIPT
236 CFLAGS += -DINIT_SCRIPT='"$(BB_INIT_SCRIPT)"' 259 CFLAGS += -DINIT_SCRIPT='"$(BB_INIT_SCRIPT)"'
@@ -252,59 +275,118 @@ ifeq ($(strip $(CONFIG_INSTALL_APPLET_DONT)),y)
252INSTALL_OPTS= 275INSTALL_OPTS=
253endif 276endif
254 277
278
279#------------------------------------------------------------
280# object extensions
281
282# object potentially used in shared object
283ifeq ($(strip $(CONFIG_BUILD_LIBBUSYBOX)),y)
284# single-object extension
285os:=.os
286# multi-object extension
287om:=.osm
288else
289os:=.o
290om:=.om
291endif
292
255#------------------------------------------------------------ 293#------------------------------------------------------------
256# Make the output nice and tight 294# Make the output nice and tight
257MAKEFLAGS += --no-print-directory 295
296# for make V=2 and above, do print directory
297ifneq ($(shell test -n "$(strip $(PACKAGE_BE_VERBOSE))" && test $(PACKAGE_BE_VERBOSE) -gt 1 ; echo $$?),0)
298 MAKEFLAGS += --no-print-directory
299endif
300
301export MAKEOVERRIDES
258export MAKE_IS_SILENT=n 302export MAKE_IS_SILENT=n
259ifneq ($(findstring s,$(MAKEFLAGS)),) 303ifneq ($(findstring s,$(MAKEFLAGS)),)
260export MAKE_IS_SILENT=y 304export MAKE_IS_SILENT=y
261SECHO := @-false
262DISP := sil 305DISP := sil
263Q := @ 306Q := @
264else 307else
265ifneq ($(V)$(VERBOSE),) 308ifneq ($(V)$(VERBOSE),)
266SECHO := @-false
267DISP := ver 309DISP := ver
268Q := 310Q :=
269else 311else
270SECHO := @echo
271DISP := pur 312DISP := pur
272Q := @ 313Q := @
273endif 314endif
274endif 315endif
275 316
276show_objs = $(subst $(top_builddir)/,,$(subst ../,,$@)) 317define show_objs
277pur_disp_compile.c = echo " "CC $(show_objs) 318 $(subst $(top_builddir)/,,$(subst ../,,$@))
278pur_disp_compile.h = echo " "HOSTCC $(show_objs) 319endef
279pur_disp_strip = echo " "STRIP $(show_objs) 320pur_disp_compile.c = @echo " "CC $(show_objs) ;
280pur_disp_link = echo " "LINK $(show_objs) 321pur_disp_compile.h = @echo " "HOSTCC $(show_objs) ;
281pur_disp_ar = echo " "AR $(ARFLAGS) $(show_objs) 322pur_disp_strip = @echo " "STRIP $(show_objs) ;
282sil_disp_compile.c = true 323pur_disp_link = @echo " "LINK $(show_objs) ;
283sil_disp_compile.h = true 324pur_disp_link.h = @echo " "HOSTLINK $(show_objs) ;
284sil_disp_strip = true 325pur_disp_ar = @echo " "AR $(ARFLAGS) $(show_objs) ;
285sil_disp_link = true 326pur_disp_gen = @echo " "GEN $@ ;
286sil_disp_ar = true 327pur_disp_doc = @echo " "DOC $(subst docs/,,$@) ;
287ver_disp_compile.c = echo $(cmd_compile.c) 328pur_disp_bin = @echo " "BIN $(show_objs) ;
288ver_disp_compile.h = echo $(cmd_compile.h) 329sil_disp_compile.c = @
289ver_disp_strip = echo $(cmd_strip) 330sil_disp_compile.h = @
290ver_disp_link = echo $(cmd_link) 331sil_disp_strip = @
291ver_disp_ar = echo $(cmd_ar) 332sil_disp_link = @
333sil_disp_link.h = @
334sil_disp_ar = @
335sil_disp_gen = @
336sil_disp_doc = @
337sil_disp_bin = @
338ver_disp_compile.c =
339ver_disp_compile.h =
340ver_disp_strip =
341ver_disp_link =
342ver_disp_link.h =
343ver_disp_ar =
344ver_disp_gen =
345ver_disp_doc =
346ver_disp_bin =
292disp_compile.c = $($(DISP)_disp_compile.c) 347disp_compile.c = $($(DISP)_disp_compile.c)
293disp_compile.h = $($(DISP)_disp_compile.h) 348disp_compile.h = $($(DISP)_disp_compile.h)
294disp_strip = $($(DISP)_disp_strip) 349disp_strip = $($(DISP)_disp_strip)
295disp_link = $($(DISP)_disp_link) 350disp_link = $($(DISP)_disp_link)
351disp_link.h = $($(DISP)_disp_link.h)
296disp_ar = $($(DISP)_disp_ar) 352disp_ar = $($(DISP)_disp_ar)
297disp_gen = $(SECHO) " "GEN $@ ; true 353disp_gen = $($(DISP)_disp_gen)
298disp_doc = $(SECHO) " "DOC $(subst docs/,,$@) ; true 354disp_doc = $($(DISP)_disp_doc)
299cmd_compile.c = $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $< 355disp_bin = $($(DISP)_disp_bin)
356# CFLAGS-dir == $(CFLAGS-$(notdir $(@D)))
357# CFLAGS-dir-file.o == $(CFLAGS-$(notdir $(@D))-$(notdir $(@F)))
358# CFLAGS-dir-file.c == $(CFLAGS-$(notdir $(<D))-$(notdir $(<F)))
359# all prerequesites == $(foreach fil,$^,$(CFLAGS-$(notdir $(patsubst %/$,%,$(dir $(fil))))-$(notdir $(fil))))
360cmd_compile.c = $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -I$(srcdir) -c -o $@ $< \
361 $(foreach f,$^,$(CFLAGS-$(notdir $(patsubst %/$,%,$(dir $(f))))-$(notdir $(f)))) \
362 $(CFLAGS-$(notdir $(@D))-$(notdir $(@F))) \
363 $(CFLAGS-$(notdir $(@D)))
364cmd_compile.m = $(cmd_compile.c) -DL_$(patsubst %$(suffix $(notdir $@)),%,$(notdir $@))
300cmd_compile.h = $(HOSTCC) $(HOSTCFLAGS) -c -o $@ $< 365cmd_compile.h = $(HOSTCC) $(HOSTCFLAGS) -c -o $@ $<
301cmd_strip = $(STRIPCMD) $@ 366cmd_strip = $(STRIPCMD) $@
302cmd_link = $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(LDFLAGS) 367cmd_link = $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -I$(srcdir) $(LDFLAGS)
368cmd_link.h = $(HOSTCC) $(HOSTCFLAGS) $(HOST_LDFLAGS) $^ -o $@
303cmd_ar = $(AR) $(ARFLAGS) $@ $^ 369cmd_ar = $(AR) $(ARFLAGS) $@ $^
304compile.c = @$(disp_compile.c) ; $(cmd_compile.c) 370compile.c = $(disp_compile.c) $(cmd_compile.c)
305compile.h = @$(disp_compile.h) ; $(cmd_compile.h) 371compile.m = $(disp_compile.c) $(cmd_compile.m)
306do_strip = @$(disp_strip) ; $(cmd_strip) 372compile.h = $(disp_compile.h) $(cmd_compile.h)
307do_link = @$(disp_link) ; $(cmd_link) 373do_strip = $(disp_strip) $(cmd_strip)
308do_ar = @$(disp_ar) ; $(cmd_ar) 374do_link = $(disp_link) $(cmd_link)
375do_link.h = $(disp_link.h) $(cmd_link.h)
376do_ar = $(disp_ar) $(cmd_ar)
377
378ifdef rules-mak-rules
379.SUFFIXES: .c .S .o .os .om .osm .oS .so .a .s .i .E
380
381# generic rules
382%.o: %.c ; $(compile.c)
383%.os: %.c ; $(compile.c) $(CFLAGS_PIC)
384%.o: ; $(compile.c)
385%.os: ; $(compile.c) $(CFLAGS_PIC)
386%.om: ; $(compile.m)
387%.osm: ; $(compile.m) $(CFLAGS_PIC)
388
389endif # rules-mak-rules
309 390
310.PHONY: dummy 391.PHONY: dummy
392
diff --git a/applets/Makefile.in b/applets/Makefile.in
index 02bcda93b..64aefc017 100644
--- a/applets/Makefile.in
+++ b/applets/Makefile.in
@@ -4,23 +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
7APPLETS_AR:=applets.a
8ifndef $(APPLETS_DIR)
9APPLETS_DIR:=$(top_builddir)/applets/
10endif
11srcdir=$(top_srcdir)/applets 7srcdir=$(top_srcdir)/applets
8objdir=$(top_builddir)/applets
12 9
13APPLET_SRC:= $(patsubst %,$(srcdir)/%,applets.c busybox.c version.c) 10APPLETS_SRC:= $(patsubst %,$(srcdir)/%,applets.c busybox.c version.c)
14APPLET_OBJ:= $(patsubst $(srcdir)/%.c,$(APPLETS_DIR)%.o, $(APPLET_SRC))
15 11
16APPLET_SRC-y+=$(APPLET_SRC) 12APPLET_SRC-y+=$(APPLETS_SRC)
17APPLET_SRC-a+=$(APPLET_SRC) 13APPLET_SRC-a+=$(APPLETS_SRC)
18 14
19libraries-y+=$(APPLETS_DIR)$(APPLETS_AR) 15applets_OBJ:=$(patsubst $(srcdir)/%.c,$(objdir)/%.o,$(APPLETS_SRC))
20 16
21$(APPLETS_DIR)$(APPLETS_AR): $(APPLET_OBJ)
22 $(do_ar)
23
24$(APPLET_OBJ): $(top_builddir)/.config
25$(APPLET_OBJ): $(APPLETS_DIR)%.o: $(srcdir)/%.c
26 $(compile.c)
diff --git a/applets/install.sh b/applets/install.sh
index 2c643f2f2..0173e7a44 100755
--- a/applets/install.sh
+++ b/applets/install.sh
@@ -28,7 +28,8 @@ if [ "$DO_INSTALL_LIBS" != "n" ]; then
28 for i in $DO_INSTALL_LIBS; do 28 for i in $DO_INSTALL_LIBS; do
29 rm -f $prefix/$libdir/$i || exit 1 29 rm -f $prefix/$libdir/$i || exit 1
30 if [ -f $i ]; then 30 if [ -f $i ]; then
31 install -m 644 $i $prefix/$libdir/ || exit 1 31 cp -a $i $prefix/$libdir/ || exit 1
32 chmod 0644 $prefix/$libdir/$i || exit 1
32 fi 33 fi
33 done 34 done
34fi 35fi
diff --git a/archival/Makefile.in b/archival/Makefile.in
index ee284ad7a..6a2979e67 100644
--- a/archival/Makefile.in
+++ b/archival/Makefile.in
@@ -4,14 +4,9 @@
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
7ARCHIVAL_AR:=archival.a
8ifndef $(ARCHIVAL_DIR)
9ARCHIVAL_DIR:=$(top_builddir)/archival/
10endif
11srcdir=$(top_srcdir)/archival 7srcdir=$(top_srcdir)/archival
8objdir=$(top_builddir)/archival
12 9
13ARCHIVAL-y:=
14ARCHIVAL-$(CONFIG_APT_GET) +=
15ARCHIVAL-$(CONFIG_AR) += ar.o 10ARCHIVAL-$(CONFIG_AR) += ar.o
16ARCHIVAL-$(CONFIG_BUNZIP2) += bunzip2.o 11ARCHIVAL-$(CONFIG_BUNZIP2) += bunzip2.o
17ARCHIVAL-$(CONFIG_UNLZMA) += unlzma.o 12ARCHIVAL-$(CONFIG_UNLZMA) += unlzma.o
@@ -26,17 +21,10 @@ ARCHIVAL-$(CONFIG_TAR) += tar.o
26ARCHIVAL-$(CONFIG_UNCOMPRESS) += uncompress.o 21ARCHIVAL-$(CONFIG_UNCOMPRESS) += uncompress.o
27ARCHIVAL-$(CONFIG_UNZIP) += unzip.o 22ARCHIVAL-$(CONFIG_UNZIP) += unzip.o
28 23
29ifneq ($(strip $(ARCHIVAL-y)),)
30libraries-y+=$(ARCHIVAL_DIR)$(ARCHIVAL_AR)
31endif
32
33ARCHIVAL_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(ARCHIVAL-y)) 24ARCHIVAL_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(ARCHIVAL-y))
34ARCHIVAL_SRC-a:=$(wildcard $(srcdir)/*.c) 25ARCHIVAL_SRC-a:=$(wildcard $(srcdir)/*.c)
35APPLET_SRC-y+=$(ARCHIVAL_SRC-y) 26APPLET_SRC-y+=$(ARCHIVAL_SRC-y)
36APPLET_SRC-a+=$(ARCHIVAL_SRC-a) 27APPLET_SRC-a+=$(ARCHIVAL_SRC-a)
37 28
38$(ARCHIVAL_DIR)$(ARCHIVAL_AR): $(patsubst %,$(ARCHIVAL_DIR)%, $(ARCHIVAL-y)) 29archival_OBJ:= $(patsubst %,$(objdir)/%,$(ARCHIVAL-y))
39 $(do_ar)
40 30
41$(ARCHIVAL_DIR)%.o: $(srcdir)/%.c
42 $(compile.c)
diff --git a/archival/libunarchive/Makefile.in b/archival/libunarchive/Makefile.in
index 265079c10..75d761036 100644
--- a/archival/libunarchive/Makefile.in
+++ b/archival/libunarchive/Makefile.in
@@ -3,83 +3,71 @@
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# Licensed under the GPL v2 or later, see the file LICENSE in this tarball. 5# Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
6#
7 6
8LIBUNARCHIVE_AR:=libunarchive.a
9ifndef $(LIBUNARCHIVE_DIR)
10LIBUNARCHIVE_DIR:=$(top_builddir)/archival/libunarchive
11endif
12srcdir=$(top_srcdir)/archival/libunarchive 7srcdir=$(top_srcdir)/archival/libunarchive
13 8objdir=$(top_builddir)/archival/libunarchive
14LIBUNARCHIVE-obj:=$(LIBUNARCHIVE_DIR)/$(LIBUNARCHIVE_AR)
15LIBUNARCHIVE-pic:=$(LIBUNARCHIVE_DIR)/$(subst .a,-pic.a,$(LIBUNARCHIVE_AR))
16
17libraries-y+=$(LIBUNARCHIVE-obj)
18 9
19LIBUNARCHIVE-y:= \ 10LIBUNARCHIVE-y:= \
20\ 11\
21 data_skip.o \ 12 data_skip \
22 data_extract_all.o \ 13 data_extract_all \
23 data_extract_to_stdout.o \ 14 data_extract_to_stdout \
24 data_extract_to_buffer.o \ 15 data_extract_to_buffer \
25\ 16\
26 filter_accept_all.o \ 17 filter_accept_all \
27 filter_accept_list.o \ 18 filter_accept_list \
28 filter_accept_reject_list.o \ 19 filter_accept_reject_list \
29\ 20\
30 header_skip.o \ 21 header_skip \
31 header_list.o \ 22 header_list \
32 header_verbose_list.o \ 23 header_verbose_list \
33\ 24\
34 archive_xread_all.o \ 25 archive_xread_all \
35 archive_xread_all_eof.o \ 26 archive_xread_all_eof \
36\ 27\
37 seek_by_char.o \ 28 seek_by_char \
38 seek_by_jump.o \ 29 seek_by_jump \
39\ 30\
40 data_align.o \ 31 data_align \
41 find_list_entry.o \ 32 find_list_entry \
42 open_transformer.o \ 33 open_transformer \
43 init_handle.o 34 init_handle
44 35
45GUNZIP_FILES:= check_header_gzip.o decompress_unzip.o 36GUNZIP_FILES:= check_header_gzip decompress_unzip
46DPKG_FILES:= \ 37DPKG_FILES:= \
47 get_header_ar.o \ 38 get_header_ar \
48 unpack_ar_archive.o \ 39 unpack_ar_archive \
49 get_header_tar.o \ 40 get_header_tar \
50 filter_accept_list_reassign.o 41 filter_accept_list_reassign
51 42
52LIBUNARCHIVE-$(CONFIG_AR) += get_header_ar.o unpack_ar_archive.o 43LIBUNARCHIVE-$(CONFIG_AR) += get_header_ar unpack_ar_archive
53LIBUNARCHIVE-$(CONFIG_BUNZIP2) += decompress_bunzip2.o 44LIBUNARCHIVE-$(CONFIG_BUNZIP2) += decompress_bunzip2
54LIBUNARCHIVE-$(CONFIG_UNLZMA) += decompress_unlzma.o 45LIBUNARCHIVE-$(CONFIG_UNLZMA) += decompress_unlzma
55LIBUNARCHIVE-$(CONFIG_CPIO) += get_header_cpio.o 46LIBUNARCHIVE-$(CONFIG_CPIO) += get_header_cpio
56LIBUNARCHIVE-$(CONFIG_DPKG) += $(DPKG_FILES) 47LIBUNARCHIVE-$(CONFIG_DPKG) += $(DPKG_FILES)
57LIBUNARCHIVE-$(CONFIG_DPKG_DEB) += $(DPKG_FILES) 48LIBUNARCHIVE-$(CONFIG_DPKG_DEB) += $(DPKG_FILES)
58LIBUNARCHIVE-$(CONFIG_FEATURE_DEB_TAR_GZ) += $(GUNZIP_FILES) get_header_tar_gz.o 49LIBUNARCHIVE-$(CONFIG_FEATURE_DEB_TAR_GZ) += $(GUNZIP_FILES) get_header_tar_gz
59LIBUNARCHIVE-$(CONFIG_FEATURE_DEB_TAR_BZ2) += decompress_bunzip2.o get_header_tar_bz2.o 50LIBUNARCHIVE-$(CONFIG_FEATURE_DEB_TAR_BZ2) += decompress_bunzip2 get_header_tar_bz2
60LIBUNARCHIVE-$(CONFIG_FEATURE_DEB_TAR_LZMA) += decompress_unlzma.o get_header_tar_lzma.o 51LIBUNARCHIVE-$(CONFIG_FEATURE_DEB_TAR_LZMA) += decompress_unlzma get_header_tar_lzma
61LIBUNARCHIVE-$(CONFIG_GUNZIP) += $(GUNZIP_FILES) 52LIBUNARCHIVE-$(CONFIG_GUNZIP) += $(GUNZIP_FILES)
62LIBUNARCHIVE-$(CONFIG_FEATURE_GUNZIP_UNCOMPRESS) += decompress_uncompress.o 53LIBUNARCHIVE-$(CONFIG_FEATURE_GUNZIP_UNCOMPRESS) += decompress_uncompress
63LIBUNARCHIVE-$(CONFIG_RPM2CPIO) += $(GUNZIP_FILES) get_header_cpio.o 54LIBUNARCHIVE-$(CONFIG_RPM2CPIO) += $(GUNZIP_FILES) get_header_cpio
64LIBUNARCHIVE-$(CONFIG_RPM) += $(GUNZIP_FILES) get_header_cpio.o 55LIBUNARCHIVE-$(CONFIG_RPM) += $(GUNZIP_FILES) get_header_cpio
65LIBUNARCHIVE-$(CONFIG_TAR) += get_header_tar.o 56LIBUNARCHIVE-$(CONFIG_TAR) += get_header_tar
66LIBUNARCHIVE-$(CONFIG_FEATURE_TAR_BZIP2) += decompress_bunzip2.o get_header_tar_bz2.o 57LIBUNARCHIVE-$(CONFIG_FEATURE_TAR_BZIP2) += decompress_bunzip2 get_header_tar_bz2
67LIBUNARCHIVE-$(CONFIG_FEATURE_TAR_LZMA) += decompress_unlzma.o get_header_tar_lzma.o 58LIBUNARCHIVE-$(CONFIG_FEATURE_TAR_LZMA) += decompress_unlzma get_header_tar_lzma
68LIBUNARCHIVE-$(CONFIG_FEATURE_TAR_GZIP) += $(GUNZIP_FILES) get_header_tar_gz.o 59LIBUNARCHIVE-$(CONFIG_FEATURE_TAR_GZIP) += $(GUNZIP_FILES) get_header_tar_gz
69LIBUNARCHIVE-$(CONFIG_FEATURE_TAR_COMPRESS) += decompress_uncompress.o 60LIBUNARCHIVE-$(CONFIG_FEATURE_TAR_COMPRESS) += decompress_uncompress
70LIBUNARCHIVE-$(CONFIG_UNCOMPRESS) += decompress_uncompress.o 61LIBUNARCHIVE-$(CONFIG_UNCOMPRESS) += decompress_uncompress
71LIBUNARCHIVE-$(CONFIG_UNZIP) += $(GUNZIP_FILES) 62LIBUNARCHIVE-$(CONFIG_UNZIP) += $(GUNZIP_FILES)
72 63
73 64
74LIBUNARCHIVE-y:=$(sort $(LIBUNARCHIVE-y)) 65LIBUNARCHIVE-y:=$(sort $(LIBUNARCHIVE-y))
75 66
76LIBUNARCHIVE_SRC-y:=$(patsubst %,$(srcdir)/%,$(subst .o,.c,$(LIBUNARCHIVE-y))) 67LIBUNARCHIVE_SRC-y:=$(patsubst %,$(srcdir)/%.c,$(LIBUNARCHIVE-y))
77LIBUNARCHIVE_SRC-a:=$(wildcard $(srcdir)/*.c) 68LIBUNARCHIVE_SRC-a:=$(wildcard $(srcdir)/*.c)
78LIBRARY_SRC-y+=$(LIBUNARCHIVE_SRC-y) 69LIBRARY_SRC-y+=$(LIBUNARCHIVE_SRC-y)
79LIBRARY_SRC-a+=$(LIBUNARCHIVE_SRC-a) 70LIBRARY_SRC-a+=$(LIBUNARCHIVE_SRC-a)
80 71
81$(LIBUNARCHIVE_DIR)/$(LIBUNARCHIVE_AR): $(patsubst %,$(LIBUNARCHIVE_DIR)/%,$(LIBUNARCHIVE-y)) 72archival_libunarchive_OBJ$(os):=$(patsubst %,$(objdir)/%$(os),$(LIBUNARCHIVE-y))
82 $(do_ar)
83 73
84$(LIBUNARCHIVE_DIR)/%.o: $(srcdir)/%.c
85 $(compile.c)
diff --git a/console-tools/Makefile.in b/console-tools/Makefile.in
index f14e338e1..e10bc4f78 100644
--- a/console-tools/Makefile.in
+++ b/console-tools/Makefile.in
@@ -4,34 +4,25 @@
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
7CONSOLETOOLS_AR:=console-tools.a
8ifndef $(CONSOLETOOLS_DIR)
9CONSOLETOOLS_DIR:=$(top_builddir)/console-tools/
10endif
11srcdir=$(top_srcdir)/console-tools 7srcdir=$(top_srcdir)/console-tools
8objdir=$(top_builddir)/console-tools
12 9
13CONSOLETOOLS-y:=
14CONSOLETOOLS-$(CONFIG_CHVT) += chvt.o 10CONSOLETOOLS-$(CONFIG_CHVT) += chvt.o
15CONSOLETOOLS-$(CONFIG_CLEAR) += clear.o 11CONSOLETOOLS-$(CONFIG_CLEAR) += clear.o
16CONSOLETOOLS-$(CONFIG_DEALLOCVT) += deallocvt.o 12CONSOLETOOLS-$(CONFIG_DEALLOCVT) += deallocvt.o
17CONSOLETOOLS-$(CONFIG_DUMPKMAP) += dumpkmap.o 13CONSOLETOOLS-$(CONFIG_DUMPKMAP) += dumpkmap.o
18CONSOLETOOLS-$(CONFIG_SETCONSOLE) += setconsole.o 14CONSOLETOOLS-$(CONFIG_SETCONSOLE) += setconsole.o
19CONSOLETOOLS-$(CONFIG_LOADFONT) += loadfont.o 15CONSOLETOOLS-$(CONFIG_LOADFONT) += loadfont.o
20CONSOLETOOLS-$(CONFIG_LOADKMAP) += loadkmap.o 16CONSOLETOOLS-$(CONFIG_LOADKMAP) += loadkmap.o
21CONSOLETOOLS-$(CONFIG_OPENVT) += openvt.o 17CONSOLETOOLS-$(CONFIG_OPENVT) += openvt.o
22CONSOLETOOLS-$(CONFIG_RESET) += reset.o 18CONSOLETOOLS-$(CONFIG_RESET) += reset.o
23CONSOLETOOLS-$(CONFIG_SETKEYCODES) += setkeycodes.o 19CONSOLETOOLS-$(CONFIG_SETKEYCODES) += setkeycodes.o
24 20
25ifneq ($(strip $(CONSOLETOOLS-y)),) 21
26libraries-y+=$(CONSOLETOOLS_DIR)$(CONSOLETOOLS_AR)
27endif
28CONSOLETOOLS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(CONSOLETOOLS-y)) 22CONSOLETOOLS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(CONSOLETOOLS-y))
29CONSOLETOOLS_SRC-a:=$(wildcard $(srcdir)/*.c) 23CONSOLETOOLS_SRC-a:=$(wildcard $(srcdir)/*.c)
30APPLET_SRC-y+=$(CONSOLETOOLS_SRC-y) 24APPLET_SRC-y+=$(CONSOLETOOLS_SRC-y)
31APPLET_SRC-a+=$(CONSOLETOOLS_SRC-a) 25APPLET_SRC-a+=$(CONSOLETOOLS_SRC-a)
32 26
33$(CONSOLETOOLS_DIR)$(CONSOLETOOLS_AR): $(patsubst %,$(CONSOLETOOLS_DIR)%, $(CONSOLETOOLS-y)) 27console-tools_OBJ:= $(patsubst %,$(objdir)/%,$(CONSOLETOOLS-y))
34 $(do_ar)
35 28
36$(CONSOLETOOLS_DIR)%.o: $(srcdir)/%.c
37 $(compile.c)
diff --git a/coreutils/Makefile.in b/coreutils/Makefile.in
index 2ab256c15..eee64a995 100644
--- a/coreutils/Makefile.in
+++ b/coreutils/Makefile.in
@@ -4,13 +4,9 @@
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
7COREUTILS_AR:=coreutils.a
8ifndef $(COREUTILS_DIR)
9COREUTILS_DIR:=$(top_builddir)/coreutils/
10endif
11srcdir=$(top_srcdir)/coreutils 7srcdir=$(top_srcdir)/coreutils
8objdir=$(top_builddir)/coreutils
12 9
13COREUTILS-y:=
14COREUTILS-$(CONFIG_BASENAME) += basename.o 10COREUTILS-$(CONFIG_BASENAME) += basename.o
15COREUTILS-$(CONFIG_CAL) += cal.o 11COREUTILS-$(CONFIG_CAL) += cal.o
16COREUTILS-$(CONFIG_CAT) += cat.o 12COREUTILS-$(CONFIG_CAT) += cat.o
@@ -82,18 +78,12 @@ COREUTILS-$(CONFIG_WHOAMI) += whoami.o
82COREUTILS-$(CONFIG_YES) += yes.o 78COREUTILS-$(CONFIG_YES) += yes.o
83 79
84COREUTILS-y:=$(sort $(COREUTILS-y)) 80COREUTILS-y:=$(sort $(COREUTILS-y))
85 81COREUTILS-m:=$(sort $(COREUTILS-m))
86ifneq ($(strip $(COREUTILS-y)),)
87libraries-y+=$(COREUTILS_DIR)$(COREUTILS_AR)
88endif
89 82
90COREUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(COREUTILS-y)) 83COREUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(COREUTILS-y))
91COREUTILS_SRC-a:=$(wildcard $(srcdir)/*.c) 84COREUTILS_SRC-a:=$(wildcard $(srcdir)/*.c)
92APPLET_SRC-y+=$(COREUTILS_SRC-y) 85APPLET_SRC-y+=$(COREUTILS_SRC-y)
93APPLET_SRC-a+=$(COREUTILS_SRC-a) 86APPLET_SRC-a+=$(COREUTILS_SRC-a)
94 87
95$(COREUTILS_DIR)$(COREUTILS_AR): $(patsubst %,$(COREUTILS_DIR)%, $(COREUTILS-y)) 88coreutils_OBJ:= $(patsubst %,$(objdir)/%,$(COREUTILS-y))
96 $(do_ar)
97 89
98$(COREUTILS_DIR)%.o: $(srcdir)/%.c
99 $(compile.c)
diff --git a/coreutils/libcoreutils/Makefile.in b/coreutils/libcoreutils/Makefile.in
index 092019124..700341c97 100644
--- a/coreutils/libcoreutils/Makefile.in
+++ b/coreutils/libcoreutils/Makefile.in
@@ -3,49 +3,21 @@
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# Licensed under the GPL v2 or later, see the file LICENSE in this tarball. 5# Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
6#
7 6
8LIBCOREUTILS_AR:=libcoreutils.a
9ifndef $(LIBCOREUTILS_DIR)
10LIBCOREUTILS_DIR:=$(top_builddir)/coreutils/libcoreutils
11endif
12srcdir=$(top_srcdir)/coreutils/libcoreutils 7srcdir=$(top_srcdir)/coreutils/libcoreutils
8objdir=$(top_builddir)/coreutils/libcoreutils
13 9
14LIBCOREUTILS_ALL_SRC:= cp_mv_stat.c getopt_mk_fifo_nod.c 10LIBCOREUTILS-$(CONFIG_MKFIFO) += getopt_mk_fifo_nod
15 11LIBCOREUTILS-$(CONFIG_MKNOD) += getopt_mk_fifo_nod
16LIBCOREUTILS-y:= 12LIBCOREUTILS-$(CONFIG_INSTALL) += cp_mv_stat
17LIBCOREUTILS-$(CONFIG_MKFIFO) += getopt_mk_fifo_nod.o 13LIBCOREUTILS-$(CONFIG_CP) += cp_mv_stat
18LIBCOREUTILS-$(CONFIG_MKNOD) += getopt_mk_fifo_nod.o 14LIBCOREUTILS-$(CONFIG_MV) += cp_mv_stat
19LIBCOREUTILS-$(CONFIG_INSTALL) += cp_mv_stat.o
20LIBCOREUTILS-$(CONFIG_CP) += cp_mv_stat.o
21LIBCOREUTILS-$(CONFIG_MV) += cp_mv_stat.o
22 15
23LIBCOREUTILS-y:=$(sort $(LIBCOREUTILS-y)) 16LIBCOREUTILS-y:=$(sort $(LIBCOREUTILS-y))
24 17
25LIBCOREUTILS_SRC-y:=$(patsubst %,$(srcdir)/%,$(subst .o,.c,$(LIBCOREUTILS-y))) 18LIBCOREUTILS_SRC-y:=$(patsubst %,$(srcdir)/%.c,$(LIBCOREUTILS-y))
26LIBCOREUTILS_SRC-a:=$(wildcard $(srcdir)/*.c) 19LIBCOREUTILS_SRC-a:=$(wildcard $(srcdir)/*.c)
27LIBRARY_SRC-y+=$(LIBCOREUTILS_SRC-y) 20LIBRARY_SRC-y+=$(LIBCOREUTILS_SRC-y)
28LIBRARY_SRC-a+=$(LIBCOREUTILS_SRC-a) 21LIBRARY_SRC-a+=$(LIBCOREUTILS_SRC-a)
29 22
30LIBCOREUTILS-multi-obj:=$(LIBCOREUTILS_DIR)/$(subst .a,-multi.o,$(LIBCOREUTILS_AR)) 23coreutils_libcoreutils_OBJ$(os):=$(patsubst %,$(objdir)/%$(os),$(LIBCOREUTILS-y))
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
44
45LIBCOREUTILS_OBJS=$(patsubst %,$(LIBCOREUTILS_DIR)/%, $(LIBCOREUTILS-y))
46
47$(LIBCOREUTILS_DIR)/$(LIBCOREUTILS_AR): $(patsubst %,$(LIBCOREUTILS_DIR)/%,$(LIBCOREUTILS-y))
48 $(do_ar)
49
50$(LIBCOREUTILS_DIR)/%.o: $(srcdir)/%.c
51 $(compile.c)
diff --git a/debianutils/Makefile.in b/debianutils/Makefile.in
index 2983565b8..ffdb7abdc 100644
--- a/debianutils/Makefile.in
+++ b/debianutils/Makefile.in
@@ -4,13 +4,9 @@
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
7DEBIANUTILS_AR:=debianutils.a
8ifndef $(DEBIANUTILS_DIR)
9DEBIANUTILS_DIR:=$(top_builddir)/debianutils/
10endif
11srcdir=$(top_srcdir)/debianutils 7srcdir=$(top_srcdir)/debianutils
8objdir=$(top_builddir)/debianutils
12 9
13DEBIANUTILS-y:=
14DEBIANUTILS-$(CONFIG_MKTEMP) += mktemp.o 10DEBIANUTILS-$(CONFIG_MKTEMP) += mktemp.o
15DEBIANUTILS-$(CONFIG_PIPE_PROGRESS) += pipe_progress.o 11DEBIANUTILS-$(CONFIG_PIPE_PROGRESS) += pipe_progress.o
16DEBIANUTILS-$(CONFIG_READLINK) += readlink.o 12DEBIANUTILS-$(CONFIG_READLINK) += readlink.o
@@ -18,16 +14,10 @@ DEBIANUTILS-$(CONFIG_RUN_PARTS) += run_parts.o
18DEBIANUTILS-$(CONFIG_START_STOP_DAEMON) += start_stop_daemon.o 14DEBIANUTILS-$(CONFIG_START_STOP_DAEMON) += start_stop_daemon.o
19DEBIANUTILS-$(CONFIG_WHICH) += which.o 15DEBIANUTILS-$(CONFIG_WHICH) += which.o
20 16
21ifneq ($(strip $(DEBIANUTILS-y)),)
22libraries-y+=$(DEBIANUTILS_DIR)$(DEBIANUTILS_AR)
23endif
24DEBIANUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(DEBIANUTILS-y)) 17DEBIANUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(DEBIANUTILS-y))
25DEBIANUTILS_SRC-a:=$(wildcard $(srcdir)/*.c) 18DEBIANUTILS_SRC-a:=$(wildcard $(srcdir)/*.c)
26APPLET_SRC-y+=$(DEBIANUTILS_SRC-y) 19APPLET_SRC-y+=$(DEBIANUTILS_SRC-y)
27APPLET_SRC-a+=$(DEBIANUTILS_SRC-a) 20APPLET_SRC-a+=$(DEBIANUTILS_SRC-a)
28 21
29$(DEBIANUTILS_DIR)$(DEBIANUTILS_AR): $(patsubst %,$(DEBIANUTILS_DIR)%, $(DEBIANUTILS-y)) 22debianutils_OBJ:= $(patsubst %,$(objdir)/%,$(DEBIANUTILS-y))
30 $(do_ar)
31 23
32$(DEBIANUTILS_DIR)%.o: $(srcdir)/%.c
33 $(compile.c)
diff --git a/e2fsprogs/Makefile.in b/e2fsprogs/Makefile.in
index e4cfdf545..8a46af113 100644
--- a/e2fsprogs/Makefile.in
+++ b/e2fsprogs/Makefile.in
@@ -4,12 +4,8 @@
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
7E2FSPROGS_AR:=e2fsprogs.a 7srcdir:=$(top_srcdir)/e2fsprogs
8 8objdir:=$(top_builddir)/e2fsprogs
9E2FSPROGS_DIR:=$(top_builddir)/e2fsprogs
10E2FSPROGS_SRC:=$(top_srcdir)/e2fsprogs
11
12E2FSPROGS_CFLAGS := -include $(E2FSPROGS_SRC)/e2fsbb.h
13 9
14BLKID_SRC := cache.c dev.c devname.c devno.c blkid_getsize.c \ 10BLKID_SRC := cache.c dev.c devname.c devno.c blkid_getsize.c \
15 probe.c read.c resolve.c save.c tag.c 11 probe.c read.c resolve.c save.c tag.c
@@ -39,22 +35,23 @@ UUID_SRC := compare.c gen_uuid.c pack.c parse.c unpack.c unparse.c \
39UUID_SRCS := $(patsubst %,uuid/%, $(UUID_SRC)) 35UUID_SRCS := $(patsubst %,uuid/%, $(UUID_SRC))
40UUID_OBJS := $(patsubst %.c,%.o, $(UUID_SRCS)) 36UUID_OBJS := $(patsubst %.c,%.o, $(UUID_SRCS))
41 37
38
42# for building out-of-tree we need to make sure that the directories to hold 39# for building out-of-tree we need to make sure that the directories to hold
43# the object tree are created 40# the object tree are created
44$(patsubst %,$(E2FSPROGS_DIR)/%, blkid e2fsck e2p ext2fs uuid): 41$(patsubst %,$(objdir)/%, blkid e2fsck e2p ext2fs uuid):
45 @mkdir -p "$@" 42 @mkdir -p "$@"
46 43
47# make sure that the directories are order-only prerequisites. Otherwise we 44# make sure that the directories are order-only prerequisites. Otherwise we
48# may have object files created after the timestamp of the directory was 45# may have object files created after the timestamp of the directory was
49# updated which would lead to spurious rebuilds (as some of the dentries 46# updated which would lead to spurious rebuilds (as some of the dentries
50# may be older than the dir itself). 47# may be older than the dir itself).
51$(patsubst %,$(E2FSPROGS_DIR)/%, $(BLKID_OBJS)):|$(E2FSPROGS_DIR)/blkid 48$(patsubst %,$(objdir)/%,$(BLKID_OBJS)): $(objdir)/blkid/%.o: $(srcdir)/%.c|$(objdir)/blkid
52$(patsubst %,$(E2FSPROGS_DIR)/%, $(E2FSCK_OBJS)):|$(E2FSPROGS_DIR)/e2fsck 49$(patsubst %,$(objdir)/%,$(E2FSCK_OBJS)):$(objdir)/e2fsck/%.o:$(srcdir)/%.c|$(objdir)/e2fsck
53$(patsubst %,$(E2FSPROGS_DIR)/%, $(E2P_OBJS)):|$(E2FSPROGS_DIR)/e2p 50$(patsubst %,$(objdir)/%,$(E2P_OBJS)): $(objdir)/e2p/%.o: $(srcdir)/%.c|$(objdir)/e2p
54$(patsubst %,$(E2FSPROGS_DIR)/%, $(EXT2FS_OBJS)):|$(E2FSPROGS_DIR)/ext2fs 51$(patsubst %,$(objdir)/%,$(EXT2FS_OBJS)):$(objdir)/ext2fs/%.o:$(srcdir)/%.c|$(objdir)/ext2fs
55$(patsubst %,$(E2FSPROGS_DIR)/%, $(UUID_OBJS)):|$(E2FSPROGS_DIR)/uuid 52$(patsubst %,$(objdir)/%,$(UUID_OBJS)): $(objdir)/uuid/%.o: $(srcdir)/%.c|$(objdir)/uuid
53
56 54
57E2FSPROGS-y:=
58E2FSPROGS-$(CONFIG_CHATTR) += chattr.o $(E2P_OBJS) 55E2FSPROGS-$(CONFIG_CHATTR) += chattr.o $(E2P_OBJS)
59E2FSPROGS-$(CONFIG_E2FSCK) += e2fsck.o util.o $(BLKID_OBJS) $(EXT2FS_OBJS) $(UUID_OBJS) 56E2FSPROGS-$(CONFIG_E2FSCK) += e2fsck.o util.o $(BLKID_OBJS) $(EXT2FS_OBJS) $(UUID_OBJS)
60E2FSPROGS-$(CONFIG_FSCK) += fsck.o util.o $(BLKID_OBJS) $(UUID_OBJS) 57E2FSPROGS-$(CONFIG_FSCK) += fsck.o util.o $(BLKID_OBJS) $(UUID_OBJS)
@@ -63,24 +60,26 @@ E2FSPROGS-$(CONFIG_MKE2FS) += mke2fs.o util.o $(E2P_OBJS) $(BLKID_OBJS) $(EX
63E2FSPROGS-$(CONFIG_TUNE2FS) += tune2fs.o util.o $(E2P_OBJS) $(BLKID_OBJS) $(EXT2FS_OBJS) $(UUID_OBJS) 60E2FSPROGS-$(CONFIG_TUNE2FS) += tune2fs.o util.o $(E2P_OBJS) $(BLKID_OBJS) $(EXT2FS_OBJS) $(UUID_OBJS)
64 61
65E2FSPROGS-y:=$(sort $(E2FSPROGS-y)) 62E2FSPROGS-y:=$(sort $(E2FSPROGS-y))
66 63ifneq ($(E2FSPROGS-y),)
67ifneq ($(strip $(E2FSPROGS-y)),) 64CFLAGS-e2fsprogs := -include $(srcdir)/e2fsbb.h
68libraries-y+=$(E2FSPROGS_DIR)/$(E2FSPROGS_AR)
69endif 65endif
70 66
71E2FSPROGS_SRC-y:=$(patsubst %.o,$(E2FSPROGS_SRC)/%.c,$(E2FSPROGS-y)) 67E2FSPROGS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(E2FSPROGS-y))
72E2FSPROGS_SRC-a:=$(wildcard $(E2FSPROGS_SRC)/*.c) $(patsubst %,$(E2FSPROGS_SRC)/%,$(BLKID_SRCS) $(E2P_SRCS) $(EXT2FS_SRCS) $(UUID_SRCS)) 68E2FSPROGS_SRC-a:=$(wildcard $(srcdir)/*.c) $(patsubst %,$(srcdir)/%,$(BLKID_SRCS) $(E2P_SRCS) $(EXT2FS_SRCS) $(UUID_SRCS))
73APPLET_SRC-y+=$(E2FSPROGS_CFLAGS) $(E2FSPROGS_SRC-y) 69APPLET_SRC-y+=$(E2FSPROGS_SRC-y)
74APPLET_SRC-a+=$(E2FSPROGS_CFLAGS) $(E2FSPROGS_SRC-a) 70APPLET_SRC-a+=$(E2FSPROGS_SRC-a)
71
72$(warning FIXME: change .c to include their stuff relative to $(srcdir))
73E2FSPROGS_TMP_KLUDGE:=$(patsubst %,-I$(srcdir)/%,blkid e2fsck e2p ext2fs uuid)
74CFLAGS-blkid=$(E2FSPROGS_TMP_KLUDGE) $(CFLAGS-e2fsprogs)
75CFLAGS-e2fsck=$(E2FSPROGS_TMP_KLUDGE) $(CFLAGS-e2fsprogs)
76CFLAGS-e2p=$(E2FSPROGS_TMP_KLUDGE) $(CFLAGS-e2fsprogs)
77CFLAGS-ext2fs=$(E2FSPROGS_TMP_KLUDGE) $(CFLAGS-e2fsprogs)
78CFLAGS-uuid=$(E2FSPROGS_TMP_KLUDGE) $(CFLAGS-e2fsprogs)
75 79
76# XXX: FIXME: change .c to include their stuff relative to $(E2FSPROGS_SRC)
77E2FSPROGS_TMP_KLUDGE:=$(patsubst %,-I$(E2FSPROGS_SRC)/%,blkid e2fsck e2p ext2fs uuid)
78 80
79APPLETS_DEFINE-y+=$(E2FSPROGS_CFLAGS) -I$(E2FSPROGS_SRC) $(E2FSPROGS_TMP_KLUDGE) 81APPLETS_DEFINE-y+=$(CFLAGS-e2fsprogs) -I$(srcdir) $(E2FSPROGS_TMP_KLUDGE)
80APPLETS_DEFINE-a+=$(E2FSPROGS_CFLAGS) -I$(E2FSPROGS_SRC) $(E2FSPROGS_TMP_KLUDGE) 82APPLETS_DEFINE-a+=$(CFLAGS-e2fsprogs) -I$(srcdir) $(E2FSPROGS_TMP_KLUDGE)
81 83
82$(E2FSPROGS_DIR)/$(E2FSPROGS_AR): $(patsubst %,$(E2FSPROGS_DIR)/%, $(E2FSPROGS-y)) 84e2fsprogs_OBJ:= $(patsubst %,$(objdir)/%,$(E2FSPROGS-y))
83 $(do_ar)
84 85
85$(E2FSPROGS_DIR)/%.o: $(subst $(top_builddir),$(top_srcdir),$(E2FSPROGS_DIR)/%.c)
86 $(compile.c) $(E2FSPROGS_CFLAGS)
diff --git a/editors/Makefile.in b/editors/Makefile.in
index 805017dcc..19d8bf8e6 100644
--- a/editors/Makefile.in
+++ b/editors/Makefile.in
@@ -4,36 +4,25 @@
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
7EDITOR_AR:=editors.a
8ifndef $(EDITOR_DIR)
9EDITOR_DIR:=$(top_builddir)/editors/
10endif
11srcdir=$(top_srcdir)/editors 7srcdir=$(top_srcdir)/editors
8objdir=$(top_builddir)/editors
12 9
13EDITOR-y:= 10EDITORS-$(CONFIG_AWK) += awk.o
14EDITOR-$(CONFIG_AWK) += awk.o 11EDITORS-$(CONFIG_PATCH) += patch.o
15EDITOR-$(CONFIG_PATCH) += patch.o 12EDITORS-$(CONFIG_SED) += sed.o
16EDITOR-$(CONFIG_SED) += sed.o 13EDITORS-$(CONFIG_VI) += vi.o
17EDITOR-$(CONFIG_VI) += vi.o
18
19ifneq ($(strip $(EDITOR-y)),)
20libraries-y+=$(EDITOR_DIR)$(EDITOR_AR)
21endif
22
23EDITOR_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(EDITOR-y))
24EDITOR_SRC-a:=$(wildcard $(srcdir)/*.c)
25APPLET_SRC-y+=$(EDITOR_SRC-y)
26APPLET_SRC-a+=$(EDITOR_SRC-a)
27 14
28needlibm-y:= 15needlibm-y:=
29needlibm-$(CONFIG_FEATURE_AWK_MATH) := y 16needlibm-$(CONFIG_FEATURE_AWK_MATH) := y
30 17
31ifeq ($(needlibm-y),y) 18ifeq ($(needlibm-y),y)
32 LIBRARIES := -lm $(filter-out -lm,$(LIBRARIES)) 19 LIBRARIES := $(filter-out -lm,$(LIBRARIES)) -lm
33endif 20endif
34 21
35$(EDITOR_DIR)$(EDITOR_AR): $(patsubst %,$(EDITOR_DIR)%, $(EDITOR-y)) 22EDITOR_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(EDITORS-y))
36 $(do_ar) 23EDITOR_SRC-a:=$(wildcard $(srcdir)/*.c)
24APPLET_SRC-y+=$(EDITOR_SRC-y)
25APPLET_SRC-a+=$(EDITOR_SRC-a)
26
27editors_OBJ:= $(patsubst %,$(objdir)/%,$(EDITORS-y))
37 28
38$(EDITOR_DIR)%.o: $(srcdir)/%.c
39 $(compile.c)
diff --git a/findutils/Makefile.in b/findutils/Makefile.in
index 25a2d38d3..d268f987d 100644
--- a/findutils/Makefile.in
+++ b/findutils/Makefile.in
@@ -4,28 +4,17 @@
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
7FINDUTILS_AR:=findutils.a
8ifndef $(FINDUTILS_DIR)
9FINDUTILS_DIR:=$(top_builddir)/findutils/
10endif
11srcdir=$(top_srcdir)/findutils 7srcdir=$(top_srcdir)/findutils
8objdir=$(top_builddir)/findutils
12 9
13FINDUTILS-y:=
14FINDUTILS-$(CONFIG_FIND) += find.o 10FINDUTILS-$(CONFIG_FIND) += find.o
15FINDUTILS-$(CONFIG_GREP) += grep.o 11FINDUTILS-$(CONFIG_GREP) += grep.o
16FINDUTILS-$(CONFIG_XARGS) += xargs.o 12FINDUTILS-$(CONFIG_XARGS) += xargs.o
17 13
18ifneq ($(strip $(FINDUTILS-y)),)
19libraries-y+=$(FINDUTILS_DIR)$(FINDUTILS_AR)
20endif
21
22FINDUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(FINDUTILS-y)) 14FINDUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(FINDUTILS-y))
23FINDUTILS_SRC-a:=$(wildcard $(srcdir)/*.c) 15FINDUTILS_SRC-a:=$(wildcard $(srcdir)/*.c)
24APPLET_SRC-y+=$(FINDUTILS_SRC-y) 16APPLET_SRC-y+=$(FINDUTILS_SRC-y)
25APPLET_SRC-a+=$(FINDUTILS_SRC-a) 17APPLET_SRC-a+=$(FINDUTILS_SRC-a)
26 18
27$(FINDUTILS_DIR)$(FINDUTILS_AR): $(patsubst %,$(FINDUTILS_DIR)%, $(FINDUTILS-y)) 19findutils_OBJ:= $(patsubst %,$(objdir)/%,$(FINDUTILS-y))
28 $(do_ar)
29 20
30$(FINDUTILS_DIR)%.o: $(srcdir)/%.c
31 $(compile.c)
diff --git a/init/Makefile.in b/init/Makefile.in
index a48ead446..a07c2189b 100644
--- a/init/Makefile.in
+++ b/init/Makefile.in
@@ -4,13 +4,9 @@
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
7INIT_AR:=init.a
8ifndef $(INIT_DIR)
9INIT_DIR:=$(top_builddir)/init/
10endif
11srcdir=$(top_srcdir)/init 7srcdir=$(top_srcdir)/init
8objdir=$(top_builddir)/init
12 9
13INIT-y:=
14INIT-$(CONFIG_HALT) += halt.o 10INIT-$(CONFIG_HALT) += halt.o
15INIT-$(CONFIG_INIT) += init.o 11INIT-$(CONFIG_INIT) += init.o
16INIT-$(CONFIG_MESG) += mesg.o 12INIT-$(CONFIG_MESG) += mesg.o
@@ -27,17 +23,10 @@ endif
27 23
28INIT-$(CONFIG_INIT_SHARED) += init_shared.o 24INIT-$(CONFIG_INIT_SHARED) += init_shared.o
29 25
30ifneq ($(strip $(INIT-y)),)
31libraries-y+=$(INIT_DIR)$(INIT_AR)
32endif
33
34INIT_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(INIT-y)) 26INIT_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(INIT-y))
35INIT_SRC-a:=$(wildcard $(srcdir)/*.c) 27INIT_SRC-a:=$(wildcard $(srcdir)/*.c)
36APPLET_SRC-y+=$(INIT_SRC-y) 28APPLET_SRC-y+=$(INIT_SRC-y)
37APPLET_SRC-a+=$(INIT_SRC-a) 29APPLET_SRC-a+=$(INIT_SRC-a)
38 30
39$(INIT_DIR)$(INIT_AR): $(patsubst %,$(INIT_DIR)%, $(INIT-y)) 31init_OBJ:= $(patsubst %,$(objdir)/%,$(INIT-y))
40 $(do_ar)
41 32
42$(INIT_DIR)%.o: $(srcdir)/%.c
43 $(compile.c)
diff --git a/libbb/Makefile.in b/libbb/Makefile.in
index 51a162e3d..3828a42db 100644
--- a/libbb/Makefile.in
+++ b/libbb/Makefile.in
@@ -4,10 +4,8 @@
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
7ifndef $(LIBBB_DIR)
8LIBBB_DIR:=$(top_builddir)/libbb
9endif
10srcdir=$(top_srcdir)/libbb 7srcdir=$(top_srcdir)/libbb
8objdir=$(top_builddir)/libbb
11 9
12LIBBB-n:= 10LIBBB-n:=
13LIBBB-y:= \ 11LIBBB-y:= \
@@ -20,7 +18,7 @@ LIBBB-y:= \
20 herror_msg.c herror_msg_and_die.c \ 18 herror_msg.c herror_msg_and_die.c \
21 human_readable.c inet_common.c inode_hash.c isdirectory.c \ 19 human_readable.c inet_common.c inode_hash.c isdirectory.c \
22 kernel_version.c last_char_is.c login.c loop.c \ 20 kernel_version.c last_char_is.c login.c loop.c \
23 make_directory.c md5.c mode_string.c mtab.c mtab_file.c \ 21 make_directory.c md5.c mode_string.c mtab_file.c \
24 obscure.c parse_mode.c parse_number.c perror_msg.c \ 22 obscure.c parse_mode.c parse_number.c perror_msg.c \
25 perror_msg_and_die.c print_file.c get_console.c \ 23 perror_msg_and_die.c print_file.c get_console.c \
26 process_escape_sequence.c procps.c qmodule.c \ 24 process_escape_sequence.c procps.c qmodule.c \
@@ -47,81 +45,76 @@ LIBBB-$(CONFIG_SU)+= correct_password.c
47LIBBB-$(CONFIG_LOGIN)+= correct_password.c 45LIBBB-$(CONFIG_LOGIN)+= correct_password.c
48 46
49 47
50LIBBB-y:=$(patsubst %,$(srcdir)/%,$(LIBBB-y)) 48LIBBB-y:=$(patsubst %,$(srcdir)/%,$(LIBBB-y) $(LIBBB-m))
51 49
52# 1:N objects 50# 1:N objects
53LIBBB_MSRC0:=$(srcdir)/messages.c 51LIBBB_MSRC0:=$(srcdir)/messages.c
54LIBBB_MOBJ0:=full_version.o \ 52LIBBB_M0:=full_version \
55 memory_exhausted.o invalid_date.o io_error.o \ 53 memory_exhausted invalid_date io_error \
56 read_error.o write_error.o name_longer_than_foo.o unknown.o \ 54 read_error write_error name_longer_than_foo unknown \
57 can_not_create_raw_socket.o perm_denied_are_you_root.o \ 55 can_not_create_raw_socket perm_denied_are_you_root \
58 shadow_file.o passwd_file.o group_file.o gshadow_file.o nologin_file.o \ 56 shadow_file passwd_file group_file gshadow_file nologin_file \
59 securetty_file.o motd_file.o \ 57 securetty_file motd_file \
60 msg_standard_input.o msg_standard_output.o shell_file.o \ 58 msg_standard_input msg_standard_output shell_file \
61 bb_dev_null.o bb_common_bufsiz1.o 59 bb_dev_null bb_common_bufsiz1
62LIBBB_MOBJ0:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ0)) 60LIBBB_MOBJ0:=$(patsubst %,$(objdir)/%$(om),$(LIBBB_M0))
63$(LIBBB_MOBJ0):$(LIBBB_MSRC0) 61$(LIBBB_MOBJ0):$(LIBBB_MSRC0)
64 $(compile.c) -DL_$(notdir $*)
65 62
66LIBBB_MSRC1:=$(srcdir)/xfuncs.c 63LIBBB_MSRC1:=$(srcdir)/xfuncs.c
67LIBBB_MOBJ1:=xmalloc.o xrealloc.o xcalloc.o xstrdup.o xstrndup.o \ 64LIBBB_M1:=xmalloc xrealloc xcalloc xstrdup xstrndup \
68 xfopen.o xopen.o xread.o xread_all.o xread_char.o \ 65 xfopen xopen xread xread_all xread_char \
69 xferror.o xferror_stdout.o xfflush_stdout.o strlen.o 66 xferror xferror_stdout xfflush_stdout strlen
70LIBBB_MOBJ1:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ1)) 67LIBBB_MOBJ1:=$(patsubst %,$(objdir)/%$(om),$(LIBBB_M1))
71$(LIBBB_MOBJ1):$(LIBBB_MSRC1) 68$(LIBBB_MOBJ1):$(LIBBB_MSRC1)
72 $(compile.c) -DL_$(notdir $*)
73 69
74LIBBB_MSRC2:=$(srcdir)/printf.c 70LIBBB_MSRC2:=$(srcdir)/printf.c
75LIBBB_MOBJ2:=bb_vfprintf.o bb_vprintf.o bb_fprintf.o bb_printf.o 71LIBBB_M2:=bb_vfprintf bb_vprintf bb_fprintf bb_printf
76LIBBB_MOBJ2:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ2)) 72LIBBB_MOBJ2:=$(patsubst %,$(objdir)/%$(om),$(LIBBB_M2))
77$(LIBBB_MOBJ2):$(LIBBB_MSRC2) 73$(LIBBB_MOBJ2):$(LIBBB_MSRC2)
78 $(compile.c) -DL_$(notdir $*)
79 74
80LIBBB_MSRC3:=$(srcdir)/xgetularg.c 75LIBBB_MSRC3:=$(srcdir)/xgetularg.c
81LIBBB_MOBJ3:=xgetularg_bnd_sfx.o xgetlarg_bnd_sfx.o getlarg10_sfx.o \ 76LIBBB_M3:=xgetularg_bnd_sfx xgetlarg_bnd_sfx getlarg10_sfx \
82 xgetularg_bnd.o xgetularg10_bnd.o xgetularg10.o 77 xgetularg_bnd xgetularg10_bnd xgetularg10
83LIBBB_MOBJ3:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ3)) 78LIBBB_MOBJ3:=$(patsubst %,$(objdir)/%$(om),$(LIBBB_M3))
84$(LIBBB_MOBJ3):$(LIBBB_MSRC3) 79$(LIBBB_MOBJ3):$(LIBBB_MSRC3)
85 $(compile.c) -DL_$(notdir $*)
86 80
87LIBBB_MSRC4:=$(srcdir)/safe_strtol.c 81LIBBB_MSRC4:=$(srcdir)/safe_strtol.c
88LIBBB_MOBJ4:=safe_strtoi.o safe_strtod.o safe_strtol.o safe_strtoul.o 82LIBBB_M4:=safe_strtoi safe_strtod safe_strtol safe_strtoul
89LIBBB_MOBJ4:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ4)) 83LIBBB_MOBJ4:=$(patsubst %,$(objdir)/%$(om),$(LIBBB_M4))
90$(LIBBB_MOBJ4):$(LIBBB_MSRC4) 84$(LIBBB_MOBJ4):$(LIBBB_MSRC4)
91 $(compile.c) -DL_$(notdir $*)
92 85
93LIBBB_MSRC5:=$(srcdir)/bb_pwd.c 86LIBBB_MSRC5:=$(srcdir)/bb_pwd.c
94LIBBB_MOBJ5:=bb_xgetpwnam.o bb_xgetgrnam.o bb_getgrgid.o bb_getpwuid.o \ 87LIBBB_M5:=bb_xgetpwnam bb_xgetgrnam bb_getgrgid bb_getpwuid \
95 bb_getug.o get_ug_id.o 88 bb_getug get_ug_id
96LIBBB_MOBJ5:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ5)) 89LIBBB_MOBJ5:=$(patsubst %,$(objdir)/%$(om),$(LIBBB_M5))
97$(LIBBB_MOBJ5):$(LIBBB_MSRC5) 90$(LIBBB_MOBJ5):$(LIBBB_MSRC5)
98 $(compile.c) -DL_$(notdir $*)
99 91
100LIBBB_MSRC6:=$(srcdir)/llist.c 92LIBBB_MSRC6:=$(srcdir)/llist.c
101LIBBB_MOBJ6:=llist_add_to.o llist_add_to_end.o llist_free_one.o llist_free.o 93LIBBB_M6:=llist_add_to llist_add_to_end llist_free_one llist_free
102LIBBB_MOBJ6:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ6)) 94LIBBB_MOBJ6:=$(patsubst %,$(objdir)/%$(om),$(LIBBB_M6))
103$(LIBBB_MOBJ6):$(LIBBB_MSRC6) 95$(LIBBB_MOBJ6):$(LIBBB_MSRC6)
104 $(compile.c) -DL_$(notdir $*)
105 96
106 97
107# We need the names of the object files built from MSRC for the L_ defines 98# We need the names of the object files built from MSRC for the L_ defines
108LIBBB_ALL_MOBJ:=$(LIBBB_MOBJ0) $(LIBBB_MOBJ1) $(LIBBB_MOBJ2) $(LIBBB_MOBJ3) $(LIBBB_MOBJ4) $(LIBBB_MOBJ5) $(LIBBB_MOBJ6) 99LIBBB_ALL_MDEFS:=$(LIBBB_M0) $(LIBBB_M1) $(LIBBB_M2) $(LIBBB_M3) $(LIBBB_M4) $(LIBBB_M5) $(LIBBB_M6)
100
101# All multi objects
102libbb_MOBJ$(os):=$(LIBBB_MOBJ0) $(LIBBB_MOBJ1) $(LIBBB_MOBJ2) $(LIBBB_MOBJ3) $(LIBBB_MOBJ4) $(LIBBB_MOBJ5) $(LIBBB_MOBJ6)
109 103
110LIBBB_ALL_MSRC:=$(LIBBB_MSRC0) $(LIBBB_MSRC1) $(LIBBB_MSRC2) $(LIBBB_MSRC3) \ 104LIBBB_ALL_MSRC:=$(LIBBB_MSRC0) $(LIBBB_MSRC1) $(LIBBB_MSRC2) $(LIBBB_MSRC3) \
111 $(LIBBB_MSRC4) $(LIBBB_MSRC5) $(LIBBB_MSRC6) 105 $(LIBBB_MSRC4) $(LIBBB_MSRC5) $(LIBBB_MSRC6)
112 106
113LIBBB-y:=$(sort $(LIBBB-y) $(LIBBB_ALL_MSRC)) 107LIBBB-y:=$(sort $(LIBBB-y))
114
115LIBBB_AR:=$(LIBBB_DIR)/libbb.a
116libraries-y+=$(LIBBB_AR)
117 108
118needcrypt-y:= 109needcrypt-y:=
119ifneq ($(findstring $(srcdir)/pw_encrypt.c,$(LIBBB-y)),) 110ifneq ($(findstring $(srcdir)/pw_encrypt.c,$(LIBBB-y)),)
120needcrypt-y:=y 111needcrypt-y:=y
121else 112endif
122ifneq ($(findstring $(srcdir)/correct_password.c,$(LIBBB-y)),) 113ifneq ($(findstring $(srcdir)/correct_password.c,$(LIBBB-y)),)
123needcrypt-y:=y 114needcrypt-y:=y
124endif 115endif
116ifeq ($(CONFIG_FEATURE_FULL_LIBBUSYBOX),y)
117needcrypt-y:=y
125endif 118endif
126 119
127ifeq ($(needcrypt-y),y) 120ifeq ($(needcrypt-y),y)
@@ -129,18 +122,27 @@ ifeq ($(needcrypt-y),y)
129endif 122endif
130 123
131# all 1:1 objects 124# all 1:1 objects
132LIBBB_OBJS:=$(patsubst $(srcdir)/%.c,$(LIBBB_DIR)/%.o, $(LIBBB-y)) 125libbb_OBJ$(os):=$(patsubst $(srcdir)/%.c,$(objdir)/%$(os),$(LIBBB-y))
133$(LIBBB_DIR)/%.o: $(srcdir)/%.c
134 $(compile.c)
135 126
127LIBBB_SRC-y:=$(sort $(LIBBB-y) $(LIBBB_ALL_MSRC))
136LIBBB_SRC-a:=$(wildcard $(srcdir)/*.c) 128LIBBB_SRC-a:=$(wildcard $(srcdir)/*.c)
137LIBRARY_SRC-y+=$(LIBBB-y) 129LIBRARY_SRC-y+=$(LIBBB_SRC-y)
138LIBRARY_SRC-a+=$(LIBBB_SRC-a) 130LIBRARY_SRC-a+=$(LIBBB_SRC-a)
139 131
140# all defines needed for 1:N objects 132# all defines needed for 1:N objects
141LIBBB_DEFINE-y:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(LIBBB_ALL_MOBJ)))) 133LIBBB_DEFINE-y:=$(patsubst %,-DL_%,$(LIBBB_ALL_MDEFS))
142LIBRARY_DEFINE-y+=$(LIBBB_DEFINE-y) 134LIBRARY_DEFINE-y+=$(LIBBB_DEFINE-y)
143LIBRARY_DEFINE-a+=$(LIBBB_DEFINE-y) 135LIBRARY_DEFINE-a+=$(LIBBB_DEFINE-y)
144 136
145$(LIBBB_AR): $(LIBBB_OBJS) $(LIBBB_ALL_MOBJ) 137ifeq ($(om),.osm)
146 $(do_ar) 138# XXX FIXME:
139# also create a pattern for the non-shared case
140$(LIBBB_MOBJ0:.osm=.om): $(LIBBB_MSRC0)
141$(LIBBB_MOBJ1:.osm=.om): $(LIBBB_MSRC1)
142$(LIBBB_MOBJ2:.osm=.om): $(LIBBB_MSRC2)
143$(LIBBB_MOBJ3:.osm=.om): $(LIBBB_MSRC3)
144$(LIBBB_MOBJ4:.osm=.om): $(LIBBB_MSRC4)
145$(LIBBB_MOBJ5:.osm=.om): $(LIBBB_MSRC5)
146$(LIBBB_MOBJ6:.osm=.om): $(LIBBB_MSRC6)
147endif
148
diff --git a/libpwdgrp/Makefile.in b/libpwdgrp/Makefile.in
index c74a768c1..93c4634a2 100644
--- a/libpwdgrp/Makefile.in
+++ b/libpwdgrp/Makefile.in
@@ -4,35 +4,28 @@
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
7LIBPWDGRP_AR:=libpwdgrp.a
8ifndef $(LIBPWDGRP_DIR)
9LIBPWDGRP_DIR:=$(top_builddir)/libpwdgrp
10endif
11srcdir=$(top_srcdir)/libpwdgrp 7srcdir=$(top_srcdir)/libpwdgrp
12 8objdir=$(top_builddir)/libpwdgrp
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)
18 9
19LIBPWDGRP_MSRC0:=$(srcdir)/pwd_grp.c 10LIBPWDGRP_MSRC0:=$(srcdir)/pwd_grp.c
20LIBPWDGRP_MOBJ0-$(CONFIG_USE_BB_PWD_GRP):= fgetpwent_r.o fgetgrent_r.o \ 11LIBPWDGRP_M0-$(CONFIG_USE_BB_PWD_GRP):= fgetpwent_r fgetgrent_r \
21 fgetpwent.o fgetgrent.o getpwnam_r.o getgrnam_r.o getpwuid_r.o \ 12 fgetpwent fgetgrent getpwnam_r getgrnam_r getpwuid_r \
22 getgrgid_r.o getpwuid.o getgrgid.o getpwnam.o getgrnam.o getpw.o \ 13 getgrgid_r getpwuid getgrgid getpwnam getgrnam getpw \
23 getpwent_r.o getgrent_r.o getpwent.o getgrent.o \ 14 getpwent_r getgrent_r getpwent getgrent \
24 initgroups.o putpwent.o putgrent.o 15 initgroups putpwent putgrent
25LIBPWDGRP_MOBJS0=$(patsubst %,$(LIBPWDGRP_DIR)/%, $(LIBPWDGRP_MOBJ0-y)) 16LIBPWDGRP_MOBJ0=$(patsubst %,$(objdir)/%$(om),$(LIBPWDGRP_M0-y))
17$(LIBPWDGRP_MOBJ0): $(LIBPWDGRP_MSRC0)
26 18
27LIBPWDGRP_MSRC1:=$(srcdir)/pwd_grp.c 19LIBPWDGRP_MSRC1:=$(srcdir)/pwd_grp.c
28LIBPWDGRP_MOBJ1-$(CONFIG_USE_BB_PWD_GRP):= __parsepwent.o __parsegrent.o \ 20LIBPWDGRP_M1-$(CONFIG_USE_BB_PWD_GRP):= __parsepwent __parsegrent \
29 __pgsreader.o fgetspent_r.o fgetspent.o sgetspent_r.o getspnam_r.o \ 21 __pgsreader fgetspent_r fgetspent sgetspent_r getspnam_r \
30 getspnam.o getspent_r.o getspent.o sgetspent.o \ 22 getspnam getspent_r getspent sgetspent \
31 putspent.o __parsespent.o # getspuid_r.o getspuid.o 23 putspent __parsespent # getspuid_r getspuid
32LIBPWDGRP_MOBJS1=$(patsubst %,$(LIBPWDGRP_DIR)/%, $(LIBPWDGRP_MOBJ1-y)) 24LIBPWDGRP_MOBJ1=$(patsubst %,$(objdir)/%$(om),$(LIBPWDGRP_M1-y))
25$(LIBPWDGRP_MOBJ1): $(LIBPWDGRP_MSRC1)
33 26
34LIBPWDGRP_DEFINE0-y:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(LIBPWDGRP_MOBJS0)))) 27LIBPWDGRP_DEFINE0-y:=$(patsubst %,-DL_%,$(LIBPWDGRP_M0-y))
35LIBPWDGRP_DEFINE1-y:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(LIBPWDGRP_MOBJS1)))) 28LIBPWDGRP_DEFINE1-y:=$(patsubst %,-DL_%,$(LIBPWDGRP_M1-y))
36 29
37LIBPWDGRP_SRC-y:=$(LIBPWDGRP_MSRC0) 30LIBPWDGRP_SRC-y:=$(LIBPWDGRP_MSRC0)
38 31
@@ -42,12 +35,11 @@ LIBRARY_SRC-a+=$(LIBPWDGRP_SRC-y)
42LIBRARY_DEFINE-y+=$(LIBPWDGRP_DEFINE0-y) $(LIBPWDGRP_DEFINE1-y) 35LIBRARY_DEFINE-y+=$(LIBPWDGRP_DEFINE0-y) $(LIBPWDGRP_DEFINE1-y)
43LIBRARY_DEFINE-a+=$(LIBPWDGRP_DEFINE0-y) $(LIBPWDGRP_DEFINE1-y) 36LIBRARY_DEFINE-a+=$(LIBPWDGRP_DEFINE0-y) $(LIBPWDGRP_DEFINE1-y)
44 37
38libpwdgrp_MOBJ$(os):=$(LIBPWDGRP_MOBJ0) $(LIBPWDGRP_MOBJ1)
45 39
46$(LIBPWDGRP_DIR)/$(LIBPWDGRP_AR): $(LIBPWDGRP_MOBJS0) $(LIBPWDGRP_MOBJS1) 40ifeq ($(om),.osm)
47 $(do_ar) 41# XXX FIXME:
48 42# also create a pattern for the non-shared case
49$(LIBPWDGRP_MOBJS0): $(LIBPWDGRP_MSRC0) 43$(LIBPWDGRP_MOBJ0:.osm=.om): $(LIBPWDGRP_MSRC0)
50 $(compile.c) -DL_$(notdir $*) 44$(LIBPWDGRP_MOBJ1:.osm=.om): $(LIBPWDGRP_MSRC1)
51 45endif
52$(LIBPWDGRP_MOBJS1): $(LIBPWDGRP_MSRC1)
53 $(compile.c) -DL_$(notdir $*)
diff --git a/loginutils/Makefile.in b/loginutils/Makefile.in
index c11bbfc03..f09b6d2a6 100644
--- a/loginutils/Makefile.in
+++ b/loginutils/Makefile.in
@@ -4,13 +4,9 @@
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
7LOGINUTILS_AR:=loginutils.a
8ifndef LOGINUTILS_DIR
9LOGINUTILS_DIR:=$(top_builddir)/loginutils/
10endif
11srcdir=$(top_srcdir)/loginutils 7srcdir=$(top_srcdir)/loginutils
8objdir=$(top_builddir)/loginutils
12 9
13LOGINUTILS-y:=
14LOGINUTILS-$(CONFIG_ADDGROUP) += addgroup.o 10LOGINUTILS-$(CONFIG_ADDGROUP) += addgroup.o
15LOGINUTILS-$(CONFIG_ADDUSER) += adduser.o 11LOGINUTILS-$(CONFIG_ADDUSER) += adduser.o
16LOGINUTILS-$(CONFIG_GETTY) += getty.o 12LOGINUTILS-$(CONFIG_GETTY) += getty.o
@@ -22,9 +18,6 @@ LOGINUTILS-$(CONFIG_VLOCK) += vlock.o
22LOGINUTILS-$(CONFIG_DELUSER) += deluser.o 18LOGINUTILS-$(CONFIG_DELUSER) += deluser.o
23LOGINUTILS-$(CONFIG_DELGROUP) += delgroup.o 19LOGINUTILS-$(CONFIG_DELGROUP) += delgroup.o
24 20
25ifneq ($(strip $(LOGINUTILS-y)),)
26libraries-y+=$(LOGINUTILS_DIR)$(LOGINUTILS_AR)
27endif
28 21
29LOGINUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(LOGINUTILS-y)) 22LOGINUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(LOGINUTILS-y))
30LOGINUTILS_SRC-a:=$(wildcard $(srcdir)/*.c) 23LOGINUTILS_SRC-a:=$(wildcard $(srcdir)/*.c)
@@ -37,14 +30,12 @@ needcrypt-$(CONFIG_PASSWD) := y
37needcrypt-$(CONFIG_SU) := y 30needcrypt-$(CONFIG_SU) := y
38needcrypt-$(CONFIG_SULOGIN) := y 31needcrypt-$(CONFIG_SULOGIN) := y
39needcrypt-$(CONFIG_VLOCK) := y 32needcrypt-$(CONFIG_VLOCK) := y
40 33ifeq ($(needcrypt-m),y)
41 34needcrypt-y:=y
35endif
42ifeq ($(needcrypt-y),y) 36ifeq ($(needcrypt-y),y)
43 LIBRARIES := -lcrypt $(filter-out -lcrypt,$(LIBRARIES)) 37 LIBRARIES := -lcrypt $(filter-out -lcrypt,$(LIBRARIES))
44endif 38endif
45 39
46$(LOGINUTILS_DIR)$(LOGINUTILS_AR): $(patsubst %,$(LOGINUTILS_DIR)%, $(LOGINUTILS-y)) 40loginutils_OBJ:= $(patsubst %,$(objdir)/%,$(LOGINUTILS-y))
47 $(do_ar)
48 41
49$(LOGINUTILS_DIR)%.o: $(srcdir)/%.c
50 $(compile.c)
diff --git a/miscutils/Makefile.in b/miscutils/Makefile.in
index a0b6b7233..e431f48ef 100644
--- a/miscutils/Makefile.in
+++ b/miscutils/Makefile.in
@@ -4,13 +4,9 @@
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
7MISCUTILS_AR:=miscutils.a
8ifndef $(MISCUTILS_DIR)
9MISCUTILS_DIR:=$(top_builddir)/miscutils/
10endif
11srcdir=$(top_srcdir)/miscutils 7srcdir=$(top_srcdir)/miscutils
8objdir=$(top_builddir)/miscutils
12 9
13MISCUTILS-y:=
14MISCUTILS-$(CONFIG_ADJTIMEX) += adjtimex.o 10MISCUTILS-$(CONFIG_ADJTIMEX) += adjtimex.o
15MISCUTILS-$(CONFIG_CROND) += crond.o 11MISCUTILS-$(CONFIG_CROND) += crond.o
16MISCUTILS-$(CONFIG_CRONTAB) += crontab.o 12MISCUTILS-$(CONFIG_CRONTAB) += crontab.o
@@ -31,8 +27,13 @@ MISCUTILS-$(CONFIG_STRINGS) += strings.o
31MISCUTILS-$(CONFIG_TIME) += time.o 27MISCUTILS-$(CONFIG_TIME) += time.o
32MISCUTILS-$(CONFIG_WATCHDOG) += watchdog.o 28MISCUTILS-$(CONFIG_WATCHDOG) += watchdog.o
33 29
34ifneq ($(strip $(MISCUTILS-y)),) 30needlibm-y:=
35libraries-y+=$(MISCUTILS_DIR)$(MISCUTILS_AR) 31needlibm-$(CONFIG_DC) := y
32ifeq ($(needlibm-m),y)
33needlibm-y:=y
34endif
35ifeq ($(needlibm-y),y)
36 LIBRARIES := $(filter-out -lm,$(LIBRARIES)) -lm
36endif 37endif
37 38
38MISCUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(MISCUTILS-y)) 39MISCUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(MISCUTILS-y))
@@ -40,15 +41,5 @@ MISCUTILS_SRC-a:=$(wildcard $(srcdir)/*.c)
40APPLET_SRC-y+=$(MISCUTILS_SRC-y) 41APPLET_SRC-y+=$(MISCUTILS_SRC-y)
41APPLET_SRC-a+=$(MISCUTILS_SRC-a) 42APPLET_SRC-a+=$(MISCUTILS_SRC-a)
42 43
43needlibm-y:= 44miscutils_OBJ:= $(patsubst %,$(objdir)/%,$(MISCUTILS-y))
44needlibm-$(CONFIG_DC) := y
45
46ifeq ($(needlibm-y),y)
47 LIBRARIES := -lm $(filter-out -lm,$(LIBRARIES))
48endif
49
50$(MISCUTILS_DIR)$(MISCUTILS_AR): $(patsubst %,$(MISCUTILS_DIR)%, $(MISCUTILS-y))
51 $(do_ar)
52 45
53$(MISCUTILS_DIR)%.o: $(srcdir)/%.c
54 $(compile.c)
diff --git a/modutils/Makefile.in b/modutils/Makefile.in
index 5c7c9238e..fc7e4ff8e 100644
--- a/modutils/Makefile.in
+++ b/modutils/Makefile.in
@@ -4,29 +4,18 @@
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
7MODUTILS_AR:=modutils.a
8ifndef $(MODUTILS_DIR)
9MODUTILS_DIR:=$(top_builddir)/modutils/
10endif
11srcdir=$(top_srcdir)/modutils 7srcdir=$(top_srcdir)/modutils
8objdir=$(top_builddir)/modutils
12 9
13MODUTILS-y:=
14MODUTILS-$(CONFIG_INSMOD) += insmod.o 10MODUTILS-$(CONFIG_INSMOD) += insmod.o
15MODUTILS-$(CONFIG_LSMOD) += lsmod.o 11MODUTILS-$(CONFIG_LSMOD) += lsmod.o
16MODUTILS-$(CONFIG_MODPROBE) += modprobe.o 12MODUTILS-$(CONFIG_MODPROBE) += modprobe.o
17MODUTILS-$(CONFIG_RMMOD) += rmmod.o 13MODUTILS-$(CONFIG_RMMOD) += rmmod.o
18 14
19ifneq ($(strip $(MODUTILS-y)),)
20libraries-y+=$(MODUTILS_DIR)$(MODUTILS_AR)
21endif
22
23MODUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(MODUTILS-y)) 15MODUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(MODUTILS-y))
24MODUTILS_SRC-a:=$(wildcard $(srcdir)/*.c) 16MODUTILS_SRC-a:=$(wildcard $(srcdir)/*.c)
25APPLET_SRC-y+=$(MODUTILS_SRC-y) 17APPLET_SRC-y+=$(MODUTILS_SRC-y)
26APPLET_SRC-a+=$(MODUTILS_SRC-a) 18APPLET_SRC-a+=$(MODUTILS_SRC-a)
27 19
28$(MODUTILS_DIR)$(MODUTILS_AR): $(patsubst %,$(MODUTILS_DIR)%, $(MODUTILS-y)) 20modutils_OBJ:= $(patsubst %,$(objdir)/%,$(MODUTILS-y))
29 $(do_ar)
30 21
31$(MODUTILS_DIR)%.o: $(srcdir)/%.c
32 $(compile.c)
diff --git a/networking/Makefile.in b/networking/Makefile.in
index 650fc1a4a..0f607eb80 100644
--- a/networking/Makefile.in
+++ b/networking/Makefile.in
@@ -4,13 +4,9 @@
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
7NETWORKING_AR:=networking.a
8ifndef $(NETWORKING_DIR)
9NETWORKING_DIR:=$(top_builddir)/networking/
10endif
11srcdir=$(top_srcdir)/networking 7srcdir=$(top_srcdir)/networking
8objdir=$(top_builddir)/networking
12 9
13NETWORKING-y:=
14NETWORKING-$(CONFIG_ARPING) += arping.o 10NETWORKING-$(CONFIG_ARPING) += arping.o
15NETWORKING-$(CONFIG_DNSD) += dnsd.o 11NETWORKING-$(CONFIG_DNSD) += dnsd.o
16NETWORKING-$(CONFIG_ETHER_WAKE) += ether-wake.o 12NETWORKING-$(CONFIG_ETHER_WAKE) += ether-wake.o
@@ -44,8 +40,15 @@ NETWORKING-$(CONFIG_WGET) += wget.o
44NETWORKING-$(CONFIG_ZCIP) += zcip.o 40NETWORKING-$(CONFIG_ZCIP) += zcip.o
45 41
46NETWORKING-y:=$(sort $(NETWORKING-y)) 42NETWORKING-y:=$(sort $(NETWORKING-y))
47ifneq ($(strip $(NETWORKING-y)),) 43NETWORKING-m:=$(sort $(NETWORKING-m))
48libraries-y+=$(NETWORKING_DIR)$(NETWORKING_AR) 44
45needcrypt-y:=
46needcrypt-$(CONFIG_FEATURE_HTTPD_AUTH_MD5) := y
47ifeq ($(needcrypt-m),y)
48needcrypt-y:=y
49endif
50ifeq ($(needcrypt-y),y)
51 LIBRARIES := -lcrypt $(filter-out -lcrypt,$(LIBRARIES))
49endif 52endif
50 53
51NETWORKING_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(NETWORKING-y)) 54NETWORKING_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(NETWORKING-y))
@@ -56,15 +59,5 @@ APPLET_SRC-a+=$(NETWORKING_SRC-a)
56LIBRARY_DEFINE-y+= -I$(top_srcdir)/networking 59LIBRARY_DEFINE-y+= -I$(top_srcdir)/networking
57LIBRARY_DEFINE-a+= -I$(top_srcdir)/networking 60LIBRARY_DEFINE-a+= -I$(top_srcdir)/networking
58 61
59needcrypt-y:= 62networking_OBJ:= $(patsubst %,$(objdir)/%,$(NETWORKING-y))
60needcrypt-$(CONFIG_FEATURE_HTTPD_AUTH_MD5) := y
61
62ifeq ($(needcrypt-y),y)
63 LIBRARIES := -lcrypt $(filter-out -lcrypt,$(LIBRARIES))
64endif
65
66$(NETWORKING_DIR)$(NETWORKING_AR): $(patsubst %,$(NETWORKING_DIR)%, $(NETWORKING-y))
67 $(do_ar)
68 63
69$(NETWORKING_DIR)%.o: $(srcdir)/%.c
70 $(compile.c)
diff --git a/networking/libiproute/Makefile.in b/networking/libiproute/Makefile.in
index 6b7bd900c..99fa22e9d 100644
--- a/networking/libiproute/Makefile.in
+++ b/networking/libiproute/Makefile.in
@@ -5,88 +5,66 @@
5# Licensed under the GPL v2 or later, see the file LICENSE in this tarball. 5# Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
6# 6#
7 7
8LIBIPROUTE_AR:=libiproute.a
9ifndef $(LIBIPROUTE_DIR)
10LIBIPROUTE_DIR:=$(top_builddir)/networking/libiproute
11endif
12srcdir=$(top_srcdir)/networking/libiproute 8srcdir=$(top_srcdir)/networking/libiproute
9objdir=$(top_builddir)/networking/libiproute
13 10
14LIBIPROUTE-y:=
15LIBIPROUTE-$(CONFIG_IP) += \ 11LIBIPROUTE-$(CONFIG_IP) += \
16 ip_parse_common_args.o \ 12 ip_parse_common_args \
17 ipaddress.o \ 13 ipaddress \
18 iplink.o \ 14 iplink \
19 iproute.o \ 15 iproute \
20 iptunnel.o \ 16 iptunnel \
21 libnetlink.o \ 17 libnetlink \
22 ll_addr.o \ 18 ll_addr \
23 ll_map.o \ 19 ll_map \
24 ll_proto.o \ 20 ll_proto \
25 ll_types.o \ 21 ll_types \
26 rt_names.o \ 22 rt_names \
27 rtm_map.o \ 23 rtm_map \
28 utils.o 24 utils
29 25
30LIBIPROUTE-$(CONFIG_IPADDR) += \ 26LIBIPROUTE-$(CONFIG_IPADDR) += \
31 ip_parse_common_args.o \ 27 ip_parse_common_args \
32 ipaddress.o \ 28 ipaddress \
33 libnetlink.o \ 29 libnetlink \
34 ll_addr.o \ 30 ll_addr \
35 ll_map.o \ 31 ll_map \
36 ll_types.o \ 32 ll_types \
37 rt_names.o \ 33 rt_names \
38 utils.o 34 utils
39 35
40LIBIPROUTE-$(CONFIG_IPLINK) += \ 36LIBIPROUTE-$(CONFIG_IPLINK) += \
41 ip_parse_common_args.o \ 37 ip_parse_common_args \
42 ipaddress.o \ 38 ipaddress \
43 iplink.o \ 39 iplink \
44 libnetlink.o \ 40 libnetlink \
45 ll_addr.o \ 41 ll_addr \
46 ll_map.o \ 42 ll_map \
47 ll_types.o \ 43 ll_types \
48 rt_names.o \ 44 rt_names \
49 utils.o 45 utils
50 46
51LIBIPROUTE-$(CONFIG_IPROUTE) += \ 47LIBIPROUTE-$(CONFIG_IPROUTE) += \
52 ip_parse_common_args.o \ 48 ip_parse_common_args \
53 iproute.o \ 49 iproute \
54 libnetlink.o \ 50 libnetlink \
55 ll_map.o \ 51 ll_map \
56 rt_names.o \ 52 rt_names \
57 rtm_map.o \ 53 rtm_map \
58 utils.o 54 utils
59 55
60LIBIPROUTE-$(CONFIG_IPTUNNEL) += \ 56LIBIPROUTE-$(CONFIG_IPTUNNEL) += \
61 ip_parse_common_args.o \ 57 ip_parse_common_args \
62 iptunnel.o \ 58 iptunnel \
63 rt_names.o \ 59 rt_names \
64 utils.o 60 utils
65 61
66LIBIPROUTE-y:=$(sort $(LIBIPROUTE-y)) 62LIBIPROUTE-y:=$(sort $(LIBIPROUTE-y))
67 63
68LIBIPROUTE_SRC-y:=$(patsubst %,$(srcdir)/%,$(subst .o,.c,$(LIBIPROUTE-y))) 64LIBIPROUTE_SRC-y:=$(patsubst %,$(srcdir)/%.c,$(LIBIPROUTE-y))
69LIBIPROUTE_SRC-a:=$(wildcard $(srcdir)/*.c) 65LIBIPROUTE_SRC-a:=$(wildcard $(srcdir)/*.c)
70LIBRARY_SRC-y+=$(LIBIPROUTE_SRC-y) 66LIBRARY_SRC-y+=$(LIBIPROUTE_SRC-y)
71LIBRARY_SRC-a+=$(LIBIPROUTE_SRC-a) 67LIBRARY_SRC-a+=$(LIBIPROUTE_SRC-a)
72 68
73LIBIPROUTE-obj:=$(LIBIPROUTE_DIR)/$(LIBIPROUTE_AR) 69networking_libiproute_OBJ$(os):=$(patsubst %,$(objdir)/%$(os),$(LIBIPROUTE-y))
74 70
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
87
88$(LIBIPROUTE_DIR)/$(LIBIPROUTE_AR): $(patsubst %,$(LIBIPROUTE_DIR)/%,$(LIBIPROUTE-y))
89 $(do_ar)
90
91$(LIBIPROUTE_DIR)/%.o: $(srcdir)/%.c
92 $(compile.c)
diff --git a/networking/udhcp/Makefile.in b/networking/udhcp/Makefile.in
index df32247c6..ca00b647d 100644
--- a/networking/udhcp/Makefile.in
+++ b/networking/udhcp/Makefile.in
@@ -3,13 +3,9 @@
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# Licensed under the GPL v2 or later, see the file LICENSE in this tarball. 5# Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
6#
7 6
8UDHCP_AR:=udhcp.a
9ifndef $(UDHCP_DIR)
10UDHCP_DIR:=$(top_builddir)/networking/udhcp/
11endif
12srcdir=$(top_srcdir)/networking/udhcp 7srcdir=$(top_srcdir)/networking/udhcp
8objdir=$(top_builddir)/networking/udhcp
13 9
14#ok, so I forgot how to do an or, but this is a quick and dirty hack 10#ok, so I forgot how to do an or, but this is a quick and dirty hack
15ifeq ($(strip $(CONFIG_UDHCPC)),y) 11ifeq ($(strip $(CONFIG_UDHCPC)),y)
@@ -22,32 +18,73 @@ CONFIG_UDHCP_SHARED=n
22endif 18endif
23endif 19endif
24 20
25UDHCP-y:= 21UDHCP__SHARED_FILES:=common.c options.c packet.c pidfile.c signalpipe.c socket.c
26UDHCP-$(CONFIG_UDHCP_SHARED) += common.c options.c packet.c pidfile.c \ 22UDHCP__UDHCPC_FILES:=dhcpc.c clientpacket.c clientsocket.c script.c
27 signalpipe.c socket.c 23UDHCP__UDHCPD_FILES:=dhcpd.c arpping.c files.c leases.c serverpacket.c \
28UDHCP-$(CONFIG_UDHCPC) += dhcpc.c clientpacket.c clientsocket.c \ 24 static_leases.c
29 script.c 25UDHCP__DUMPLEASES_FILES:=dumpleases.c
30UDHCP-$(CONFIG_UDHCPD) += dhcpd.c arpping.c files.c leases.c \ 26
31 serverpacket.c static_leases.c 27UDHCP-$(CONFIG_UDHCP_SHARED) += $(UDHCP__SHARED_FILES)
32UDHCP-$(CONFIG_DUMPLEASES) += dumpleases.c 28UDHCP-$(CONFIG_UDHCPC) += $(UDHCP__UDHCPC_FILES)
33UDHCP_OBJS:=$(patsubst %.c,$(UDHCP_DIR)%.o, $(UDHCP-y)) 29UDHCP-$(CONFIG_UDHCPD) += $(UDHCP__UDHCPD_FILES)
34 30UDHCP-$(CONFIG_DUMPLEASES) += $(UDHCP__DUMPLEASES_FILES)
35ifneq ($(strip $(UDHCP-y)),)
36libraries-y+=$(UDHCP_DIR)$(UDHCP_AR)
37endif
38 31
39UDHCP-y:=$(patsubst %,$(srcdir)/%,$(UDHCP-y)) 32UDHCP_SRC-y:=$(patsubst %,$(srcdir)/%,$(UDHCP-y))
40UDHCP-a:=$(wildcard $(srcdir)/*.c) 33UDHCP_SRC-a:=$(wildcard $(srcdir)/*.c)
41APPLET_SRC-y+=$(UDHCP-y) 34APPLET_SRC-y+=$(UDHCP_SRC-y)
42APPLET_SRC-a+=$(UDHCP-a) 35APPLET_SRC-a+=$(UDHCP_SRC-a)
43 36
44UDHCP_INCLUDES:=$(srcdir) 37UDHCP_INCLUDES:=$(srcdir)
45 38
46APPLETS_DEFINE-y+=-DIN_BUSYBOX -I$(UDHCP_INCLUDES) 39#APPLETS_DEFINE-y+= -I$(UDHCP_INCLUDES) -DIN_BUSYBOX
47APPLETS_DEFINE-a+=-DIN_BUSYBOX -I$(UDHCP_INCLUDES) 40#APPLETS_DEFINE-a+= -I$(UDHCP_INCLUDES) -DIN_BUSYBOX
41
42CFLAGS-udhcp:= -I$(UDHCP_INCLUDES)
43
44# bug in make-3.80 prevents this:
45#define udhcp__flags
46#CFLAGS-udhcp-$(1):=-DIN_BUSYBOX
47#endef
48#
49#ifeq ($(CONFIG_UDHCP_SHARED),y)
50#$(foreach f,$(UDHCP__SHARED_FILES),$(eval $(call udhcp__flags,$(f))))
51#endif
52#ifeq ($(CONFIG_UDHCPC),y)
53#$(foreach f,$(UDHCP__UDHCPC_FILES),$(eval $(call udhcp__flags,$(f))))
54#endif
55#ifeq ($(CONFIG_UDHCPD),y)
56#$(foreach f,$(UDHCP__UDHCPD_FILES),$(eval $(call udhcp__flags,$(f))))
57#endif
58#ifeq ($(CONFIG_DUMPLEASES),y)
59#$(foreach f,$(UDHCP__DUMPLEASES_FILES),$(eval $(call udhcp__flags,$(f))))
60#endif
61
62ifeq ($(CONFIG_UDHCP_SHARED),y)
63CFLAGS-udhcp-common.c:=-DIN_BUSYBOX
64CFLAGS-udhcp-options.c:=-DIN_BUSYBOX
65CFLAGS-udhcp-packet.c:=-DIN_BUSYBOX
66CFLAGS-udhcp-pidfile.c:=-DIN_BUSYBOX
67CFLAGS-udhcp-signalpipe.c:=-DIN_BUSYBOX
68CFLAGS-udhcp-socket.c:=-DIN_BUSYBOX
69endif
70ifeq ($(CONFIG_UDHCPC),y)
71CFLAGS-udhcp-dhcpc.c:=-DIN_BUSYBOX
72CFLAGS-udhcp-clientpacket.c:=-DIN_BUSYBOX
73CFLAGS-udhcp-clientsocket.c:=-DIN_BUSYBOX
74CFLAGS-udhcp-script.c:=-DIN_BUSYBOX
75endif
76ifeq ($(CONFIG_UDHCPD),y)
77CFLAGS-udhcp-dhcpd.c:=-DIN_BUSYBOX
78CFLAGS-udhcp-arpping.c:=-DIN_BUSYBOX
79CFLAGS-udhcp-files.c:=-DIN_BUSYBOX
80CFLAGS-udhcp-leases.c:=-DIN_BUSYBOX
81CFLAGS-udhcp-serverpacket.c:=-DIN_BUSYBOX
82CFLAGS-udhcp-static_leases.c:=-DIN_BUSYBOX
83endif
84ifeq ($(CONFIG_DUMPLEASES),y)
85CFLAGS-udhcp-dumpleases.c:=-DIN_BUSYBOX
86endif
87
48 88
49$(UDHCP_DIR)$(UDHCP_AR): $(UDHCP_OBJS) 89networking_udhcp_OBJ:=$(patsubst %.c,$(objdir)/%.o,$(UDHCP-y))
50 $(do_ar)
51 90
52$(UDHCP_OBJS): $(UDHCP_DIR)%.o : $(srcdir)/%.c
53 $(compile.c) -DIN_BUSYBOX
diff --git a/procps/Makefile.in b/procps/Makefile.in
index 261c49b02..32314c3c5 100644
--- a/procps/Makefile.in
+++ b/procps/Makefile.in
@@ -4,13 +4,9 @@
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
7PROCPS_AR:=procps.a
8ifndef $(PROCPS_DIR)
9PROCPS_DIR:=$(top_builddir)/procps/
10endif
11srcdir=$(top_srcdir)/procps 7srcdir=$(top_srcdir)/procps
8objdir=$(top_builddir)/procps
12 9
13PROCPS-y:=
14PROCPS-$(CONFIG_FREE) += free.o 10PROCPS-$(CONFIG_FREE) += free.o
15PROCPS-$(CONFIG_KILL) += kill.o 11PROCPS-$(CONFIG_KILL) += kill.o
16PROCPS-$(CONFIG_PIDOF) += pidof.o 12PROCPS-$(CONFIG_PIDOF) += pidof.o
@@ -21,17 +17,11 @@ PROCPS-$(CONFIG_TOP) += top.o
21PROCPS-$(CONFIG_UPTIME) += uptime.o 17PROCPS-$(CONFIG_UPTIME) += uptime.o
22PROCPS-$(CONFIG_FUSER) += fuser.o 18PROCPS-$(CONFIG_FUSER) += fuser.o
23 19
24ifneq ($(strip $(PROCPS-y)),)
25libraries-y+=$(PROCPS_DIR)$(PROCPS_AR)
26endif
27 20
28PROCPS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(PROCPS-y)) 21PROCPS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(PROCPS-y))
29PROCPS_SRC-a:=$(wildcard $(srcdir)/*.c) 22PROCPS_SRC-a:=$(wildcard $(srcdir)/*.c)
30APPLET_SRC-y+=$(PROCPS_SRC-y) 23APPLET_SRC-y+=$(PROCPS_SRC-y)
31APPLET_SRC-a+=$(PROCPS_SRC-a) 24APPLET_SRC-a+=$(PROCPS_SRC-a)
32 25
33$(PROCPS_DIR)$(PROCPS_AR): $(patsubst %,$(PROCPS_DIR)%, $(PROCPS-y)) 26procps_OBJ:= $(patsubst %,$(objdir)/%,$(PROCPS-y))
34 $(do_ar)
35 27
36$(PROCPS_DIR)%.o: $(srcdir)/%.c
37 $(compile.c)
diff --git a/scripts/config/Makefile b/scripts/config/Makefile
index c1cda3e2a..8983ee5f3 100644
--- a/scripts/config/Makefile
+++ b/scripts/config/Makefile
@@ -50,22 +50,20 @@ MCONF_OBJS = $(patsubst %.c,%.o, $(MCONF_SRC) $(LXD_SRC))
50SHARED_OBJS = $(patsubst %.c,%.o, $(SHARED_SRC)) 50SHARED_OBJS = $(patsubst %.c,%.o, $(SHARED_SRC))
51 51
52conf: $(CONF_OBJS) $(SHARED_OBJS) 52conf: $(CONF_OBJS) $(SHARED_OBJS)
53 $(SECHO) " "HOSTCC $@ ; true 53 $(do_link.h)
54 $(Q)$(HOSTCC) $(NATIVE_LDFLAGS) $^ -o $@
55 54
56mconf: $(MCONF_OBJS) $(SHARED_OBJS) 55mconf: $(MCONF_OBJS) $(SHARED_OBJS)
57 $(SECHO) " "HOSTCC $@ ; true 56 $(do_link.h) $(LIBS)
58 $(Q)$(HOSTCC) $(NATIVE_LDFLAGS) $^ -o $@ $(LIBS)
59 57
60$(CONF_OBJS): %.o : $(srcdir)/%.c $(SHARED_DEPS) 58$(CONF_OBJS): %.o : $(srcdir)/%.c $(SHARED_DEPS)
61 $(compile.h) -I. 59 $(compile.h) -I.
62 60
63$(MCONF_OBJS): %.o : $(srcdir)/%.c $(SHARED_DEPS) 61$(MCONF_OBJS): %.o : $(srcdir)/%.c $(SHARED_DEPS)
64 @[ -d $(@D) ] || mkdir -v $(@D) 62 @[ -d $(@D) ] || mkdir $(@D)
65 $(compile.h) $(HOSTNCURSES) -I. 63 $(compile.h) $(HOSTNCURSES) -I.
66 64
67lkc_defs.h: $(srcdir)/lkc_proto.h 65lkc_defs.h: $(srcdir)/lkc_proto.h
68 @sed < $< > $@ 's/P(\([^,]*\),.*/#define \1 (\*\1_p)/' 66 @$(SED) < $< > $@ 's/P(\([^,]*\),.*/#define \1 (\*\1_p)/'
69 67
70### 68###
71# The following requires flex/bison 69# The following requires flex/bison
diff --git a/shell/Makefile.in b/shell/Makefile.in
index fcd93f345..43e2acd09 100644
--- a/shell/Makefile.in
+++ b/shell/Makefile.in
@@ -4,30 +4,20 @@
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
7SHELL_AR:=shell.a
8ifndef $(SHELL_DIR)
9SHELL_DIR:=$(top_builddir)/shell/
10endif
11srcdir=$(top_srcdir)/shell 7srcdir=$(top_srcdir)/shell
8objdir=$(top_builddir)/shell
12 9
13SHELLT-y:= 10SHELL-$(CONFIG_ASH) += ash.o
14SHELLT-$(CONFIG_ASH) += ash.o 11SHELL-$(CONFIG_HUSH) += hush.o
15SHELLT-$(CONFIG_HUSH) += hush.o 12SHELL-$(CONFIG_LASH) += lash.o
16SHELLT-$(CONFIG_LASH) += lash.o 13SHELL-$(CONFIG_MSH) += msh.o
17SHELLT-$(CONFIG_MSH) += msh.o 14SHELL-$(CONFIG_FEATURE_COMMAND_EDITING) += cmdedit.o
18SHELLT-$(CONFIG_FEATURE_COMMAND_EDITING) += cmdedit.o
19 15
20ifneq ($(strip $(SHELLT-y)),)
21libraries-y+=$(SHELL_DIR)$(SHELL_AR)
22endif
23 16
24SHELLT_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(SHELLT-y)) 17SHELLT_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(SHELL-y))
25SHELLT_SRC-a:=$(wildcard $(srcdir)/*.c) 18SHELLT_SRC-a:=$(wildcard $(srcdir)/*.c)
26APPLET_SRC-y+=$(SHELLT_SRC-y) 19APPLET_SRC-y+=$(SHELLT_SRC-y)
27APPLET_SRC-a+=$(SHELLT_SRC-a) 20APPLET_SRC-a+=$(SHELLT_SRC-a)
28 21
29$(SHELL_DIR)$(SHELL_AR): $(patsubst %,$(SHELL_DIR)%, $(SHELLT-y)) 22shell_OBJ:= $(patsubst %,$(objdir)/%,$(SHELL-y))
30 $(do_ar)
31 23
32$(SHELL_DIR)%.o: $(srcdir)/%.c
33 $(compile.c)
diff --git a/sysklogd/Makefile.in b/sysklogd/Makefile.in
index 83f77be90..d1f274110 100644
--- a/sysklogd/Makefile.in
+++ b/sysklogd/Makefile.in
@@ -4,29 +4,19 @@
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
7SYSKLOGD_AR:=sysklogd.a
8ifndef $(SYSKLOGD_DIR)
9SYSKLOGD_DIR:=$(top_builddir)/sysklogd/
10endif
11srcdir=$(top_srcdir)/sysklogd 7srcdir=$(top_srcdir)/sysklogd
8objdir=$(top_builddir)/sysklogd
12 9
13SYSKLOGD-y:=
14SYSKLOGD-$(CONFIG_KLOGD) += klogd.o 10SYSKLOGD-$(CONFIG_KLOGD) += klogd.o
15SYSKLOGD-$(CONFIG_LOGGER) += logger.o 11SYSKLOGD-$(CONFIG_LOGGER) += logger.o
16SYSKLOGD-$(CONFIG_LOGREAD) += logread.o 12SYSKLOGD-$(CONFIG_LOGREAD) += logread.o
17SYSKLOGD-$(CONFIG_SYSLOGD) += syslogd.o 13SYSKLOGD-$(CONFIG_SYSLOGD) += syslogd.o
18 14
19ifneq ($(strip $(SYSKLOGD-y)),)
20libraries-y+=$(SYSKLOGD_DIR)$(SYSKLOGD_AR)
21endif
22 15
23SYSKLOGD_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(SYSKLOGD-y)) 16SYSKLOGD_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(SYSKLOGD-y))
24SYSKLOGD_SRC-a:=$(wildcard $(srcdir)/*.c) 17SYSKLOGD_SRC-a:=$(wildcard $(srcdir)/*.c)
25APPLET_SRC-y+=$(SYSKLOGD_SRC-y) 18APPLET_SRC-y+=$(SYSKLOGD_SRC-y)
26APPLET_SRC-a+=$(SYSKLOGD_SRC-a) 19APPLET_SRC-a+=$(SYSKLOGD_SRC-a)
27 20
28$(SYSKLOGD_DIR)$(SYSKLOGD_AR): $(patsubst %,$(SYSKLOGD_DIR)%, $(SYSKLOGD-y)) 21sysklogd_OBJ:= $(patsubst %,$(objdir)/%,$(SYSKLOGD-y))
29 $(do_ar)
30 22
31$(SYSKLOGD_DIR)%.o: $(srcdir)/%.c
32 $(compile.c)
diff --git a/util-linux/Makefile.in b/util-linux/Makefile.in
index f6a50b7f7..031c798a0 100644
--- a/util-linux/Makefile.in
+++ b/util-linux/Makefile.in
@@ -4,62 +4,47 @@
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
7UTILLINUX_AR:=util-linux.a
8ifndef $(UTILLINUX_DIR)
9UTILLINUX_DIR:=$(top_builddir)/util-linux/
10endif
11srcdir=$(top_srcdir)/util-linux 7srcdir=$(top_srcdir)/util-linux
12 8objdir=$(top_builddir)/util-linux
13UTILLINUX-y:= 9
14UTILLINUX-$(CONFIG_DMESG) +=dmesg.o 10UTIL-LINUX-$(CONFIG_DMESG) +=dmesg.o
15UTILLINUX-$(CONFIG_FBSET) +=fbset.o 11UTIL-LINUX-$(CONFIG_FBSET) +=fbset.o
16UTILLINUX-$(CONFIG_FDFLUSH) +=fdflush.o 12UTIL-LINUX-$(CONFIG_FDFLUSH) +=fdflush.o
17UTILLINUX-$(CONFIG_FDFORMAT) +=fdformat.o 13UTIL-LINUX-$(CONFIG_FDFORMAT) +=fdformat.o
18UTILLINUX-$(CONFIG_FDISK) +=fdisk.o 14UTIL-LINUX-$(CONFIG_FDISK) +=fdisk.o
19UTILLINUX-$(CONFIG_FREERAMDISK) +=freeramdisk.o 15UTIL-LINUX-$(CONFIG_FREERAMDISK) +=freeramdisk.o
20UTILLINUX-$(CONFIG_FSCK_MINIX) +=fsck_minix.o 16UTIL-LINUX-$(CONFIG_FSCK_MINIX) +=fsck_minix.o
21UTILLINUX-$(CONFIG_GETOPT) +=getopt.o 17UTIL-LINUX-$(CONFIG_GETOPT) +=getopt.o
22UTILLINUX-$(CONFIG_HEXDUMP) +=hexdump.o 18UTIL-LINUX-$(CONFIG_HEXDUMP) +=hexdump.o
23UTILLINUX-$(CONFIG_HWCLOCK) +=hwclock.o 19UTIL-LINUX-$(CONFIG_HWCLOCK) +=hwclock.o
24UTILLINUX-$(CONFIG_IPCRM) +=ipcrm.o 20UTIL-LINUX-$(CONFIG_IPCRM) +=ipcrm.o
25UTILLINUX-$(CONFIG_IPCS) +=ipcs.o 21UTIL-LINUX-$(CONFIG_IPCS) +=ipcs.o
26UTILLINUX-$(CONFIG_LOSETUP) +=losetup.o 22UTIL-LINUX-$(CONFIG_LOSETUP) +=losetup.o
27UTILLINUX-$(CONFIG_MDEV) +=mdev.o 23UTIL-LINUX-$(CONFIG_MDEV) +=mdev.o
28UTILLINUX-$(CONFIG_MKFS_MINIX) +=mkfs_minix.o 24UTIL-LINUX-$(CONFIG_MKFS_MINIX) +=mkfs_minix.o
29UTILLINUX-$(CONFIG_MKSWAP) +=mkswap.o 25UTIL-LINUX-$(CONFIG_MKSWAP) +=mkswap.o
30UTILLINUX-$(CONFIG_MORE) +=more.o 26UTIL-LINUX-$(CONFIG_MORE) +=more.o
31UTILLINUX-$(CONFIG_MOUNT) +=mount.o 27UTIL-LINUX-$(CONFIG_MOUNT) +=mount.o
32UTILLINUX-$(CONFIG_FEATURE_MOUNT_NFS) +=nfsmount.o 28UTIL-LINUX-$(CONFIG_FEATURE_MOUNT_NFS) +=nfsmount.o
33UTILLINUX-$(CONFIG_PIVOT_ROOT) +=pivot_root.o 29UTIL-LINUX-$(CONFIG_PIVOT_ROOT) +=pivot_root.o
34UTILLINUX-$(CONFIG_RDATE) +=rdate.o 30UTIL-LINUX-$(CONFIG_RDATE) +=rdate.o
35UTILLINUX-$(CONFIG_READPROFILE) +=readprofile.o 31UTIL-LINUX-$(CONFIG_READPROFILE) +=readprofile.o
36UTILLINUX-$(CONFIG_SETARCH) +=setarch.o 32UTIL-LINUX-$(CONFIG_SETARCH) +=setarch.o
37UTILLINUX-$(CONFIG_SWAPONOFF) +=swaponoff.o 33UTIL-LINUX-$(CONFIG_SWAPONOFF) +=swaponoff.o
38UTILLINUX-$(CONFIG_SWITCH_ROOT) +=switch_root.o 34UTIL-LINUX-$(CONFIG_SWITCH_ROOT) +=switch_root.o
39UTILLINUX-$(CONFIG_UMOUNT) +=umount.o 35UTIL-LINUX-$(CONFIG_UMOUNT) +=umount.o
40 36
41ifneq ($(strip $(UTILLINUX-y)),) 37
42libraries-y+=$(UTILLINUX_DIR)$(UTILLINUX_AR) 38UTILLINUX_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(UTIL-LINUX-y))
43endif
44
45UTILLINUX_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(UTILLINUX-y))
46UTILLINUX_SRC-a:=$(wildcard $(srcdir)/*.c) 39UTILLINUX_SRC-a:=$(wildcard $(srcdir)/*.c)
47APPLET_SRC-y+=$(UTILLINUX_SRC-y) 40APPLET_SRC-y+=$(UTILLINUX_SRC-y)
48APPLET_SRC-a+=$(UTILLINUX_SRC-a) 41APPLET_SRC-a+=$(UTILLINUX_SRC-a)
49 42
50$(UTILLINUX_DIR)$(UTILLINUX_AR): $(patsubst %,$(UTILLINUX_DIR)%, $(UTILLINUX-y))
51 $(do_ar)
52
53$(UTILLINUX_DIR)%.o: $(srcdir)/%.c
54 $(compile.c)
55
56ifneq ($(strip $(CONFIG_LFS)),y) 43ifneq ($(strip $(CONFIG_LFS)),y)
57ifeq ($(strip $(FDISK_SUPPORT_LARGE_DISKS)),y) 44ifeq ($(strip $(FDISK_SUPPORT_LARGE_DISKS)),y)
58 45CFLAGS-util-linux-fdisk.c := -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
59$(UTILLINUX_DIR)fdisk.o: $(srcdir)/fdisk.c
60 $(CC) $(CFLAGS) \
61 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 \
62 $(EXTRA_CFLAGS) -c -o $@ $<
63
64endif 46endif
65endif 47endif
48
49util-linux_OBJ:= $(patsubst %,$(objdir)/%,$(UTIL-LINUX-y))
50