diff options
author | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2006-01-15 14:04:57 +0000 |
---|---|---|
committer | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2006-01-15 14:04:57 +0000 |
commit | 7ca61b6f3379bf66b446617b8834d92c13b366dd (patch) | |
tree | c0aaacfeb97a9bc74e73f8ff36ecbf1fd173808b /Makefile | |
parent | 8c9daa12dcb4c1aa8f0f475896c9cfbcfb38370d (diff) | |
download | busybox-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-- | Makefile | 128 |
1 files changed, 110 insertions, 18 deletions
@@ -185,6 +185,7 @@ randconfig: scripts/config/conf | |||
185 | allyesconfig: scripts/config/conf | 185 | allyesconfig: 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 | ||
190 | allnoconfig: scripts/config/conf | 191 | allnoconfig: 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 |
209 | include $(patsubst %,%/Makefile.in, $(SRC_DIRS)) | 210 | include $(patsubst %,%/Makefile.in, $(SRC_DIRS)) |
210 | -include $(top_builddir)/.depend | ||
211 | 211 | ||
212 | endif # ifneq ($(strip $(HAVE_DOT_CONFIG)),y) | 212 | endif # ifneq ($(strip $(HAVE_DOT_CONFIG)),y) |
213 | 213 | ||
214 | busybox: .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 | |||
218 | ifeq ($(strip $(CONFIG_BUILD_LIBBUSYBOX)),y) | ||
219 | |||
220 | LD_LIBBUSYBOX:=libbusybox.so | ||
221 | LIBBUSYBOX_SONAME:=$(LD_LIBBUSYBOX).$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL_VERSION) | ||
222 | DO_INSTALL_LIBS:=$(LD_LIBBUSYBOX) \ | ||
223 | $(LD_LIBBUSYBOX).$(MAJOR_VERSION) \ | ||
224 | $(LD_LIBBUSYBOX).$(MAJOR_VERSION).$(MINOR_VERSION) | ||
225 | |||
226 | ifeq ($(CONFIG_BUILD_AT_ONCE),y) | ||
227 | # Which parts of the internal libs are requested? | ||
228 | # Per default we only want what was actually selected. | ||
229 | ifeq ($(CONFIG_FEATURE_FULL_LIBBUSYBOX),y) | ||
230 | LIBRARY_DEFINE:=$(LIBRARY_DEFINE-a) | ||
231 | LIBRARY_SRC :=$(LIBRARY_SRC-a) | ||
232 | $(LIBBUSYBOX_SONAME): $(LIBRARY_SRC) | ||
233 | else | ||
234 | LIBRARY_DEFINE:=$(LIBRARY_DEFINE-y) | ||
235 | LIBRARY_SRC :=$(LIBRARY_SRC-y) | ||
236 | $(LIBBUSYBOX_SONAME): $(LIBRARY_SRC) | ||
237 | endif | ||
238 | else # CONFIG_BUILD_AT_ONCE | ||
239 | libbusybox-obj:=archival/libunarchive/libunarchive.a \ | ||
240 | networking/libiproute/libiproute.a \ | ||
241 | libpwdgrp/libpwdgrp.a \ | ||
242 | coreutils/libcoreutils/libcoreutils.a \ | ||
243 | libbb/libbb.a | ||
244 | libbusybox-obj:=$(patsubst %,$(top_builddir)/%,$(libbusybox-obj)) | ||
245 | |||
246 | $(LIBBUSYBOX_SONAME): $(libbusybox-obj) | ||
247 | |||
248 | LIBRARY_DEFINE:= | ||
249 | LIBRARY_SRC := | ||
250 | endif # CONFIG_BUILD_AT_ONCE | ||
251 | |||
252 | |||
253 | $(LIBBUSYBOX_SONAME): | ||
254 | ifndef MAJOR_VERSION | ||
255 | $(error MAJOR_VERSION needed for $@ is not defined) | ||
256 | endif | ||
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 | |||
270 | endif # ifeq ($(strip $(CONFIG_BUILD_LIBBUSYBOX)),y) | ||
271 | |||
272 | |||
273 | ifeq ($(strip $(CONFIG_FEATURE_SHARED_BUSYBOX)),y) | ||
274 | libraries-y:=$(filter-out $(libbusybox-obj),$(libraries-y)) | ||
275 | LDBUSYBOX:=-L$(top_builddir) -lbusybox | ||
276 | BUSYBOX_SRC := | ||
277 | BUSYBOX_DEFINE:= | ||
278 | else | ||
279 | #LDBUSYBOX:= | ||
280 | BUSYBOX_SRC := $(LIBRARY_SRC) | ||
281 | BUSYBOX_DEFINE:= $(LIBRARY_DEFINE) | ||
282 | endif # ifeq ($(strip $(CONFIG_FEATURE_SHARED_BUSYBOX)),y) | ||
283 | |||
284 | |||
285 | ifeq ($(strip $(CONFIG_BUILD_AT_ONCE)),y) | ||
286 | libraries-y:= | ||
287 | else | ||
288 | BUSYBOX_SRC:= | ||
289 | BUSYBOX_DEFINE:= | ||
290 | APPLET_SRC-y:= | ||
291 | APPLETS_DEFINE-y:= | ||
292 | endif | ||
293 | |||
294 | busybox: .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 | ||
218 | busybox.links: $(top_srcdir)/applets/busybox.mkll include/bb_config.h $(top_srcdir)/include/applets.h | 301 | busybox.links: $(top_srcdir)/applets/busybox.mkll include/bb_config.h $(top_srcdir)/include/applets.h |
219 | - $(SHELL) $^ >$@ | 302 | - $(SHELL) $^ >$@ |
220 | 303 | ||
221 | install: $(top_srcdir)/applets/install.sh busybox busybox.links | 304 | install: $(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) | ||
223 | ifeq ($(strip $(CONFIG_FEATURE_SUID)),y) | 307 | ifeq ($(strip $(CONFIG_FEATURE_SUID)),y) |
224 | @echo | 308 | @echo |
225 | @echo | 309 | @echo |
@@ -232,8 +316,13 @@ ifeq ($(strip $(CONFIG_FEATURE_SUID)),y) | |||
232 | endif | 316 | endif |
233 | 317 | ||
234 | uninstall: busybox.links | 318 | uninstall: 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 |
321 | ifneq ($(strip $(DO_INSTALL_LIBS)),n) | ||
322 | for i in $(LIBBUSYBOX_SONAME) $(DO_INSTALL_LIBS); do \ | ||
323 | $(RM_F) $(PREFIX)$$i; \ | ||
324 | done | ||
325 | endif | ||
237 | 326 | ||
238 | # see if we are in verbose mode | 327 | # see if we are in verbose mode |
239 | KBUILD_VERBOSE := | 328 | KBUILD_VERBOSE := |
@@ -244,13 +333,14 @@ ifdef V | |||
244 | endif | 333 | endif |
245 | ifneq ($(strip $(KBUILD_VERBOSE)),) | 334 | ifneq ($(strip $(KBUILD_VERBOSE)),) |
246 | CHECK_VERBOSE := -v | 335 | CHECK_VERBOSE := -v |
336 | # ARFLAGS+=v | ||
247 | endif | 337 | endif |
248 | check test: busybox | 338 | check 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 | ||
252 | sizes: | 342 | sizes: |
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 | ||
279 | docs/BusyBox.html: docs/busybox.net/BusyBox.html | 369 | docs/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 | ||
284 | docs/busybox.net/BusyBox.html: docs/busybox.pod | 374 | docs/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 |
291 | scripts/bb_mkdep: $(top_srcdir)/scripts/bb_mkdep.c | 381 | scripts/bb_mkdep: $(top_srcdir)/scripts/bb_mkdep.c |
@@ -302,7 +392,7 @@ endif | |||
302 | 392 | ||
303 | depend dep: .depend | 393 | depend 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 | ||
324 | clean: | 414 | clean: |
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 | ||
337 | distclean: clean | 429 | distclean: 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 | ||
343 | release: distclean #doc | 435 | release: 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 | ||