aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2006-01-15 14:04:57 +0000
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2006-01-15 14:04:57 +0000
commit7ca61b6f3379bf66b446617b8834d92c13b366dd (patch)
treec0aaacfeb97a9bc74e73f8ff36ecbf1fd173808b /Makefile
parent8c9daa12dcb4c1aa8f0f475896c9cfbcfb38370d (diff)
downloadbusybox-w32-7ca61b6f3379bf66b446617b8834d92c13b366dd.tar.gz
busybox-w32-7ca61b6f3379bf66b446617b8834d92c13b366dd.tar.bz2
busybox-w32-7ca61b6f3379bf66b446617b8834d92c13b366dd.zip
- shared libbusybox.
- IMA compilation option (aka IPO, IPA,..) Please holler if i broke something..
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile128
1 files changed, 110 insertions, 18 deletions
diff --git a/Makefile b/Makefile
index d3630c2ed..0a2a816de 100644
--- a/Makefile
+++ b/Makefile
@@ -185,6 +185,7 @@ randconfig: scripts/config/conf
185allyesconfig: scripts/config/conf 185allyesconfig: scripts/config/conf
186 @./scripts/config/conf -y $(CONFIG_CONFIG_IN) 186 @./scripts/config/conf -y $(CONFIG_CONFIG_IN)
187 sed -i -r -e "s/^(CONFIG_DEBUG|USING_CROSS_COMPILER|CONFIG_STATIC|CONFIG_SELINUX|CONFIG_FEATURE_DEVFS).*/# \1 is not set/" .config 187 sed -i -r -e "s/^(CONFIG_DEBUG|USING_CROSS_COMPILER|CONFIG_STATIC|CONFIG_SELINUX|CONFIG_FEATURE_DEVFS).*/# \1 is not set/" .config
188 echo "CONFIG_FEATURE_SHARED_BUSYBOX=y" >> .config
188 @./scripts/config/conf -o $(CONFIG_CONFIG_IN) 189 @./scripts/config/conf -o $(CONFIG_CONFIG_IN)
189 190
190allnoconfig: scripts/config/conf 191allnoconfig: scripts/config/conf
@@ -207,19 +208,102 @@ all: busybox busybox.links doc
207# In this section, we need .config 208# In this section, we need .config
208-include $(top_builddir)/.config.cmd 209-include $(top_builddir)/.config.cmd
209include $(patsubst %,%/Makefile.in, $(SRC_DIRS)) 210include $(patsubst %,%/Makefile.in, $(SRC_DIRS))
210-include $(top_builddir)/.depend
211 211
212endif # ifneq ($(strip $(HAVE_DOT_CONFIG)),y) 212endif # ifneq ($(strip $(HAVE_DOT_CONFIG)),y)
213 213
214busybox: .depend $(libraries-y) 214-include $(top_builddir)/.config
215 $(CC) $(EXTRA_CFLAGS) $(LDFLAGS) -o $@ -Wl,--start-group $(libraries-y) $(LIBRARIES) -Wl,--end-group 215-include $(top_builddir)/.depend
216
217
218ifeq ($(strip $(CONFIG_BUILD_LIBBUSYBOX)),y)
219
220LD_LIBBUSYBOX:=libbusybox.so
221LIBBUSYBOX_SONAME:=$(LD_LIBBUSYBOX).$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL_VERSION)
222DO_INSTALL_LIBS:=$(LD_LIBBUSYBOX) \
223 $(LD_LIBBUSYBOX).$(MAJOR_VERSION) \
224 $(LD_LIBBUSYBOX).$(MAJOR_VERSION).$(MINOR_VERSION)
225
226ifeq ($(CONFIG_BUILD_AT_ONCE),y)
227# Which parts of the internal libs are requested?
228# Per default we only want what was actually selected.
229ifeq ($(CONFIG_FEATURE_FULL_LIBBUSYBOX),y)
230LIBRARY_DEFINE:=$(LIBRARY_DEFINE-a)
231LIBRARY_SRC :=$(LIBRARY_SRC-a)
232$(LIBBUSYBOX_SONAME): $(LIBRARY_SRC)
233else
234LIBRARY_DEFINE:=$(LIBRARY_DEFINE-y)
235LIBRARY_SRC :=$(LIBRARY_SRC-y)
236$(LIBBUSYBOX_SONAME): $(LIBRARY_SRC)
237endif
238else # CONFIG_BUILD_AT_ONCE
239libbusybox-obj:=archival/libunarchive/libunarchive.a \
240 networking/libiproute/libiproute.a \
241 libpwdgrp/libpwdgrp.a \
242 coreutils/libcoreutils/libcoreutils.a \
243 libbb/libbb.a
244libbusybox-obj:=$(patsubst %,$(top_builddir)/%,$(libbusybox-obj))
245
246$(LIBBUSYBOX_SONAME): $(libbusybox-obj)
247
248LIBRARY_DEFINE:=
249LIBRARY_SRC :=
250endif # CONFIG_BUILD_AT_ONCE
251
252
253$(LIBBUSYBOX_SONAME):
254ifndef MAJOR_VERSION
255 $(error MAJOR_VERSION needed for $@ is not defined)
256endif
257 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(LDFLAGS) -shared \
258 $(CFLAGS_PIC) \
259 -Wl,-soname=$(LD_LIBBUSYBOX).$(MAJOR_VERSION) \
260 -Wl,--enable-new-dtags -Wl,--reduce-memory-overheads \
261 -Wl,-z,combreloc -Wl,-shared -Wl,--as-needed -Wl,--warn-shared-textrel \
262 -o $(@) \
263 -Wl,--start-group -Wl,--whole-archive \
264 $(LIBRARY_DEFINE) $(^) \
265 -Wl,--no-whole-archive -Wl,--end-group
266 $(RM_F) $(DO_INSTALL_LIBS)
267 for i in $(DO_INSTALL_LIBS); do $(LN_S) -v $(@) $$i ; done
268 $(STRIPCMD) $@
269
270endif # ifeq ($(strip $(CONFIG_BUILD_LIBBUSYBOX)),y)
271
272
273ifeq ($(strip $(CONFIG_FEATURE_SHARED_BUSYBOX)),y)
274libraries-y:=$(filter-out $(libbusybox-obj),$(libraries-y))
275LDBUSYBOX:=-L$(top_builddir) -lbusybox
276BUSYBOX_SRC :=
277BUSYBOX_DEFINE:=
278else
279#LDBUSYBOX:=
280BUSYBOX_SRC := $(LIBRARY_SRC)
281BUSYBOX_DEFINE:= $(LIBRARY_DEFINE)
282endif # ifeq ($(strip $(CONFIG_FEATURE_SHARED_BUSYBOX)),y)
283
284
285ifeq ($(strip $(CONFIG_BUILD_AT_ONCE)),y)
286libraries-y:=
287else
288BUSYBOX_SRC:=
289BUSYBOX_DEFINE:=
290APPLET_SRC-y:=
291APPLETS_DEFINE-y:=
292endif
293
294busybox: .depend $(LIBBUSYBOX_SONAME) $(BUSYBOX_SRC) $(libraries-y)
295 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(PROG_CFLAGS) $(LDFLAGS) \
296 -o $@ -Wl,--start-group \
297 $(APPLETS_DEFINE-y) $(APPLET_SRC-y) $(BUSYBOX_DEFINE) $(BUSYBOX_SRC) $(libraries-y) $(LDBUSYBOX) $(LIBRARIES) \
298 -Wl,--end-group
216 $(STRIPCMD) $@ 299 $(STRIPCMD) $@
217 300
218busybox.links: $(top_srcdir)/applets/busybox.mkll include/bb_config.h $(top_srcdir)/include/applets.h 301busybox.links: $(top_srcdir)/applets/busybox.mkll include/bb_config.h $(top_srcdir)/include/applets.h
219 - $(SHELL) $^ >$@ 302 - $(SHELL) $^ >$@
220 303
221install: $(top_srcdir)/applets/install.sh busybox busybox.links 304install: $(top_srcdir)/applets/install.sh busybox busybox.links
222 $(SHELL) $< $(PREFIX) $(INSTALL_OPTS) 305 DO_INSTALL_LIBS="$(strip $(LIBBUSYBOX_SONAME) $(DO_INSTALL_LIBS))" \
306 $(SHELL) $< $(PREFIX) $(INSTALL_OPTS)
223ifeq ($(strip $(CONFIG_FEATURE_SUID)),y) 307ifeq ($(strip $(CONFIG_FEATURE_SUID)),y)
224 @echo 308 @echo
225 @echo 309 @echo
@@ -232,8 +316,13 @@ ifeq ($(strip $(CONFIG_FEATURE_SUID)),y)
232endif 316endif
233 317
234uninstall: busybox.links 318uninstall: busybox.links
235 rm -f $(PREFIX)/bin/busybox 319 $(RM_F) $(PREFIX)/bin/busybox
236 for i in `cat busybox.links` ; do rm -f $(PREFIX)$$i; done 320 for i in `cat busybox.links` ; do $(RM_F) $(PREFIX)$$i; done
321ifneq ($(strip $(DO_INSTALL_LIBS)),n)
322 for i in $(LIBBUSYBOX_SONAME) $(DO_INSTALL_LIBS); do \
323 $(RM_F) $(PREFIX)$$i; \
324 done
325endif
237 326
238# see if we are in verbose mode 327# see if we are in verbose mode
239KBUILD_VERBOSE := 328KBUILD_VERBOSE :=
@@ -244,13 +333,14 @@ ifdef V
244endif 333endif
245ifneq ($(strip $(KBUILD_VERBOSE)),) 334ifneq ($(strip $(KBUILD_VERBOSE)),)
246 CHECK_VERBOSE := -v 335 CHECK_VERBOSE := -v
336# ARFLAGS+=v
247endif 337endif
248check test: busybox 338check test: busybox
249 bindir=$(top_builddir) srcdir=$(top_srcdir)/testsuite \ 339 bindir=$(top_builddir) srcdir=$(top_srcdir)/testsuite \
250 $(top_srcdir)/testsuite/runtest $(CHECK_VERBOSE) 340 $(top_srcdir)/testsuite/runtest $(CHECK_VERBOSE)
251 341
252sizes: 342sizes:
253 -rm -f busybox 343 -$(RM_F) busybox
254 $(MAKE) top_srcdir=$(top_srcdir) top_builddir=$(top_builddir) \ 344 $(MAKE) top_srcdir=$(top_srcdir) top_builddir=$(top_builddir) \
255 -f $(top_srcdir)/Makefile STRIPCMD=/bin/true 345 -f $(top_srcdir)/Makefile STRIPCMD=/bin/true
256 $(NM) --size-sort busybox 346 $(NM) --size-sort busybox
@@ -278,14 +368,14 @@ docs/BusyBox.1: docs/busybox.pod
278 368
279docs/BusyBox.html: docs/busybox.net/BusyBox.html 369docs/BusyBox.html: docs/busybox.net/BusyBox.html
280 - mkdir -p docs 370 - mkdir -p docs
281 -@ rm -f docs/BusyBox.html 371 -@ $(RM_F) docs/BusyBox.html
282 -@ cp docs/busybox.net/BusyBox.html docs/BusyBox.html 372 -@ cp docs/busybox.net/BusyBox.html docs/BusyBox.html
283 373
284docs/busybox.net/BusyBox.html: docs/busybox.pod 374docs/busybox.net/BusyBox.html: docs/busybox.pod
285 -@ mkdir -p docs/busybox.net 375 -@ mkdir -p docs/busybox.net
286 - pod2html --noindex $< > \ 376 - pod2html --noindex $< > \
287 docs/busybox.net/BusyBox.html 377 docs/busybox.net/BusyBox.html
288 -@ rm -f pod2htm* 378 -@ $(RM_F) pod2htm*
289 379
290# The nifty new buildsystem stuff 380# The nifty new buildsystem stuff
291scripts/bb_mkdep: $(top_srcdir)/scripts/bb_mkdep.c 381scripts/bb_mkdep: $(top_srcdir)/scripts/bb_mkdep.c
@@ -302,7 +392,7 @@ endif
302 392
303depend dep: .depend 393depend dep: .depend
304.depend: scripts/bb_mkdep $(DEP_INCLUDES) 394.depend: scripts/bb_mkdep $(DEP_INCLUDES)
305 @rm -f .depend 395 @$(RM_F) .depend
306 @mkdir -p include/config 396 @mkdir -p include/config
307 scripts/bb_mkdep -c include/config.h -c include/bb_config.h \ 397 scripts/bb_mkdep -c include/config.h -c include/bb_config.h \
308 -I $(top_srcdir)/include $(top_srcdir) > $@.tmp 398 -I $(top_srcdir)/include $(top_srcdir) > $@.tmp
@@ -323,22 +413,24 @@ include/bb_config.h: include/config.h
323 413
324clean: 414clean:
325 - $(MAKE) -C scripts/config $@ 415 - $(MAKE) -C scripts/config $@
326 - rm -f docs/busybox.dvi docs/busybox.ps \ 416 - $(RM_F) docs/busybox.dvi docs/busybox.ps \
327 docs/busybox.pod docs/busybox.net/busybox.html \ 417 docs/busybox.pod docs/busybox.net/busybox.html \
328 docs/busybox pod2htm* *.gdb *.elf *~ core .*config.log \ 418 docs/busybox pod2htm* *.gdb *.elf *~ core .*config.log \
329 docs/BusyBox.txt docs/BusyBox.1 docs/BusyBox.html \ 419 docs/BusyBox.txt docs/BusyBox.1 docs/BusyBox.html \
330 docs/busybox.net/BusyBox.html busybox.links libbb/loop.h \ 420 docs/busybox.net/BusyBox.html busybox.links libbb/loop.h \
421 $(DO_INSTALL_LIBS) $(LIBBUSYBOX_SONAME) \
331 .config.old busybox 422 .config.old busybox
332 - rm -rf _install testsuite/links 423 - rm -rf _install testsuite/links
333 - find . -name .\*.flags -exec rm -f {} \; 424 - find . -name .\*.flags -exec $(RM_F) {} \;
334 - find . -name \*.o -exec rm -f {} \; 425 - find . -name \*.o -exec $(RM_F) {} \;
335 - find . -name \*.a -exec rm -f {} \; 426 - find . -name \*.a -exec $(RM_F) {} \;
427 - find . -name \*.so -exec $(RM_F) {} \;
336 428
337distclean: clean 429distclean: clean
338 - rm -f scripts/bb_mkdep 430 - $(RM_F) scripts/bb_mkdep
339 - rm -rf include/config include/config.h include/bb_config.h include/bbconfigopts.h 431 - rm -rf include/config include/config.h include/bb_config.h include/bbconfigopts.h
340 - find . -name .depend -exec rm -f {} \; 432 - find . -name .depend -exec $(RM_F) {} \;
341 rm -f .config .config.old .config.cmd 433 $(RM_F) .config .config.old .config.cmd
342 434
343release: distclean #doc 435release: distclean #doc
344 cd ..; \ 436 cd ..; \
@@ -353,7 +445,7 @@ release: distclean #doc
353 find $(PROG)-$(VERSION)/ -type f \ 445 find $(PROG)-$(VERSION)/ -type f \
354 -name .\#* \ 446 -name .\#* \
355 -print \ 447 -print \
356 -exec rm -f {} \; ; \ 448 -exec $(RM_F) {} \; ; \
357 \ 449 \
358 tar -cvzf $(PROG)-$(VERSION).tar.gz $(PROG)-$(VERSION)/; 450 tar -cvzf $(PROG)-$(VERSION).tar.gz $(PROG)-$(VERSION)/;
359 451