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