- shared libbusybox.

- IMA compilation option (aka IPO, IPA,..)
Please holler if i broke something..
This commit is contained in:
Bernhard Reutner-Fischer 2006-01-15 14:04:57 +00:00
parent 8c9daa12dc
commit 7ca61b6f33
31 changed files with 515 additions and 172 deletions

128
Makefile
View File

@ -185,6 +185,7 @@ randconfig: scripts/config/conf
allyesconfig: scripts/config/conf allyesconfig: scripts/config/conf
@./scripts/config/conf -y $(CONFIG_CONFIG_IN) @./scripts/config/conf -y $(CONFIG_CONFIG_IN)
sed -i -r -e "s/^(CONFIG_DEBUG|USING_CROSS_COMPILER|CONFIG_STATIC|CONFIG_SELINUX|CONFIG_FEATURE_DEVFS).*/# \1 is not set/" .config sed -i -r -e "s/^(CONFIG_DEBUG|USING_CROSS_COMPILER|CONFIG_STATIC|CONFIG_SELINUX|CONFIG_FEATURE_DEVFS).*/# \1 is not set/" .config
echo "CONFIG_FEATURE_SHARED_BUSYBOX=y" >> .config
@./scripts/config/conf -o $(CONFIG_CONFIG_IN) @./scripts/config/conf -o $(CONFIG_CONFIG_IN)
allnoconfig: scripts/config/conf allnoconfig: scripts/config/conf
@ -207,19 +208,102 @@ all: busybox busybox.links doc
# In this section, we need .config # In this section, we need .config
-include $(top_builddir)/.config.cmd -include $(top_builddir)/.config.cmd
include $(patsubst %,%/Makefile.in, $(SRC_DIRS)) include $(patsubst %,%/Makefile.in, $(SRC_DIRS))
-include $(top_builddir)/.depend
endif # ifneq ($(strip $(HAVE_DOT_CONFIG)),y) endif # ifneq ($(strip $(HAVE_DOT_CONFIG)),y)
busybox: .depend $(libraries-y) -include $(top_builddir)/.config
$(CC) $(EXTRA_CFLAGS) $(LDFLAGS) -o $@ -Wl,--start-group $(libraries-y) $(LIBRARIES) -Wl,--end-group -include $(top_builddir)/.depend
ifeq ($(strip $(CONFIG_BUILD_LIBBUSYBOX)),y)
LD_LIBBUSYBOX:=libbusybox.so
LIBBUSYBOX_SONAME:=$(LD_LIBBUSYBOX).$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL_VERSION)
DO_INSTALL_LIBS:=$(LD_LIBBUSYBOX) \
$(LD_LIBBUSYBOX).$(MAJOR_VERSION) \
$(LD_LIBBUSYBOX).$(MAJOR_VERSION).$(MINOR_VERSION)
ifeq ($(CONFIG_BUILD_AT_ONCE),y)
# Which parts of the internal libs are requested?
# Per default we only want what was actually selected.
ifeq ($(CONFIG_FEATURE_FULL_LIBBUSYBOX),y)
LIBRARY_DEFINE:=$(LIBRARY_DEFINE-a)
LIBRARY_SRC :=$(LIBRARY_SRC-a)
$(LIBBUSYBOX_SONAME): $(LIBRARY_SRC)
else
LIBRARY_DEFINE:=$(LIBRARY_DEFINE-y)
LIBRARY_SRC :=$(LIBRARY_SRC-y)
$(LIBBUSYBOX_SONAME): $(LIBRARY_SRC)
endif
else # CONFIG_BUILD_AT_ONCE
libbusybox-obj:=archival/libunarchive/libunarchive.a \
networking/libiproute/libiproute.a \
libpwdgrp/libpwdgrp.a \
coreutils/libcoreutils/libcoreutils.a \
libbb/libbb.a
libbusybox-obj:=$(patsubst %,$(top_builddir)/%,$(libbusybox-obj))
$(LIBBUSYBOX_SONAME): $(libbusybox-obj)
LIBRARY_DEFINE:=
LIBRARY_SRC :=
endif # CONFIG_BUILD_AT_ONCE
$(LIBBUSYBOX_SONAME):
ifndef MAJOR_VERSION
$(error MAJOR_VERSION needed for $@ is not defined)
endif
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(LDFLAGS) -shared \
$(CFLAGS_PIC) \
-Wl,-soname=$(LD_LIBBUSYBOX).$(MAJOR_VERSION) \
-Wl,--enable-new-dtags -Wl,--reduce-memory-overheads \
-Wl,-z,combreloc -Wl,-shared -Wl,--as-needed -Wl,--warn-shared-textrel \
-o $(@) \
-Wl,--start-group -Wl,--whole-archive \
$(LIBRARY_DEFINE) $(^) \
-Wl,--no-whole-archive -Wl,--end-group
$(RM_F) $(DO_INSTALL_LIBS)
for i in $(DO_INSTALL_LIBS); do $(LN_S) -v $(@) $$i ; done
$(STRIPCMD) $@
endif # ifeq ($(strip $(CONFIG_BUILD_LIBBUSYBOX)),y)
ifeq ($(strip $(CONFIG_FEATURE_SHARED_BUSYBOX)),y)
libraries-y:=$(filter-out $(libbusybox-obj),$(libraries-y))
LDBUSYBOX:=-L$(top_builddir) -lbusybox
BUSYBOX_SRC :=
BUSYBOX_DEFINE:=
else
#LDBUSYBOX:=
BUSYBOX_SRC := $(LIBRARY_SRC)
BUSYBOX_DEFINE:= $(LIBRARY_DEFINE)
endif # ifeq ($(strip $(CONFIG_FEATURE_SHARED_BUSYBOX)),y)
ifeq ($(strip $(CONFIG_BUILD_AT_ONCE)),y)
libraries-y:=
else
BUSYBOX_SRC:=
BUSYBOX_DEFINE:=
APPLET_SRC-y:=
APPLETS_DEFINE-y:=
endif
busybox: .depend $(LIBBUSYBOX_SONAME) $(BUSYBOX_SRC) $(libraries-y)
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(PROG_CFLAGS) $(LDFLAGS) \
-o $@ -Wl,--start-group \
$(APPLETS_DEFINE-y) $(APPLET_SRC-y) $(BUSYBOX_DEFINE) $(BUSYBOX_SRC) $(libraries-y) $(LDBUSYBOX) $(LIBRARIES) \
-Wl,--end-group
$(STRIPCMD) $@ $(STRIPCMD) $@
busybox.links: $(top_srcdir)/applets/busybox.mkll include/bb_config.h $(top_srcdir)/include/applets.h busybox.links: $(top_srcdir)/applets/busybox.mkll include/bb_config.h $(top_srcdir)/include/applets.h
- $(SHELL) $^ >$@ - $(SHELL) $^ >$@
install: $(top_srcdir)/applets/install.sh busybox busybox.links install: $(top_srcdir)/applets/install.sh busybox busybox.links
$(SHELL) $< $(PREFIX) $(INSTALL_OPTS) DO_INSTALL_LIBS="$(strip $(LIBBUSYBOX_SONAME) $(DO_INSTALL_LIBS))" \
$(SHELL) $< $(PREFIX) $(INSTALL_OPTS)
ifeq ($(strip $(CONFIG_FEATURE_SUID)),y) ifeq ($(strip $(CONFIG_FEATURE_SUID)),y)
@echo @echo
@echo @echo
@ -232,8 +316,13 @@ ifeq ($(strip $(CONFIG_FEATURE_SUID)),y)
endif endif
uninstall: busybox.links uninstall: busybox.links
rm -f $(PREFIX)/bin/busybox $(RM_F) $(PREFIX)/bin/busybox
for i in `cat busybox.links` ; do rm -f $(PREFIX)$$i; done for i in `cat busybox.links` ; do $(RM_F) $(PREFIX)$$i; done
ifneq ($(strip $(DO_INSTALL_LIBS)),n)
for i in $(LIBBUSYBOX_SONAME) $(DO_INSTALL_LIBS); do \
$(RM_F) $(PREFIX)$$i; \
done
endif
# see if we are in verbose mode # see if we are in verbose mode
KBUILD_VERBOSE := KBUILD_VERBOSE :=
@ -244,13 +333,14 @@ ifdef V
endif endif
ifneq ($(strip $(KBUILD_VERBOSE)),) ifneq ($(strip $(KBUILD_VERBOSE)),)
CHECK_VERBOSE := -v CHECK_VERBOSE := -v
# ARFLAGS+=v
endif endif
check test: busybox check test: busybox
bindir=$(top_builddir) srcdir=$(top_srcdir)/testsuite \ bindir=$(top_builddir) srcdir=$(top_srcdir)/testsuite \
$(top_srcdir)/testsuite/runtest $(CHECK_VERBOSE) $(top_srcdir)/testsuite/runtest $(CHECK_VERBOSE)
sizes: sizes:
-rm -f busybox -$(RM_F) busybox
$(MAKE) top_srcdir=$(top_srcdir) top_builddir=$(top_builddir) \ $(MAKE) top_srcdir=$(top_srcdir) top_builddir=$(top_builddir) \
-f $(top_srcdir)/Makefile STRIPCMD=/bin/true -f $(top_srcdir)/Makefile STRIPCMD=/bin/true
$(NM) --size-sort busybox $(NM) --size-sort busybox
@ -278,14 +368,14 @@ docs/BusyBox.1: docs/busybox.pod
docs/BusyBox.html: docs/busybox.net/BusyBox.html docs/BusyBox.html: docs/busybox.net/BusyBox.html
- mkdir -p docs - mkdir -p docs
-@ rm -f docs/BusyBox.html -@ $(RM_F) docs/BusyBox.html
-@ cp docs/busybox.net/BusyBox.html docs/BusyBox.html -@ cp docs/busybox.net/BusyBox.html docs/BusyBox.html
docs/busybox.net/BusyBox.html: docs/busybox.pod docs/busybox.net/BusyBox.html: docs/busybox.pod
-@ mkdir -p docs/busybox.net -@ mkdir -p docs/busybox.net
- pod2html --noindex $< > \ - pod2html --noindex $< > \
docs/busybox.net/BusyBox.html docs/busybox.net/BusyBox.html
-@ rm -f pod2htm* -@ $(RM_F) pod2htm*
# The nifty new buildsystem stuff # The nifty new buildsystem stuff
scripts/bb_mkdep: $(top_srcdir)/scripts/bb_mkdep.c scripts/bb_mkdep: $(top_srcdir)/scripts/bb_mkdep.c
@ -302,7 +392,7 @@ endif
depend dep: .depend depend dep: .depend
.depend: scripts/bb_mkdep $(DEP_INCLUDES) .depend: scripts/bb_mkdep $(DEP_INCLUDES)
@rm -f .depend @$(RM_F) .depend
@mkdir -p include/config @mkdir -p include/config
scripts/bb_mkdep -c include/config.h -c include/bb_config.h \ scripts/bb_mkdep -c include/config.h -c include/bb_config.h \
-I $(top_srcdir)/include $(top_srcdir) > $@.tmp -I $(top_srcdir)/include $(top_srcdir) > $@.tmp
@ -323,22 +413,24 @@ include/bb_config.h: include/config.h
clean: clean:
- $(MAKE) -C scripts/config $@ - $(MAKE) -C scripts/config $@
- rm -f docs/busybox.dvi docs/busybox.ps \ - $(RM_F) docs/busybox.dvi docs/busybox.ps \
docs/busybox.pod docs/busybox.net/busybox.html \ docs/busybox.pod docs/busybox.net/busybox.html \
docs/busybox pod2htm* *.gdb *.elf *~ core .*config.log \ docs/busybox pod2htm* *.gdb *.elf *~ core .*config.log \
docs/BusyBox.txt docs/BusyBox.1 docs/BusyBox.html \ docs/BusyBox.txt docs/BusyBox.1 docs/BusyBox.html \
docs/busybox.net/BusyBox.html busybox.links libbb/loop.h \ docs/busybox.net/BusyBox.html busybox.links libbb/loop.h \
$(DO_INSTALL_LIBS) $(LIBBUSYBOX_SONAME) \
.config.old busybox .config.old busybox
- rm -rf _install testsuite/links - rm -rf _install testsuite/links
- find . -name .\*.flags -exec rm -f {} \; - find . -name .\*.flags -exec $(RM_F) {} \;
- find . -name \*.o -exec rm -f {} \; - find . -name \*.o -exec $(RM_F) {} \;
- find . -name \*.a -exec rm -f {} \; - find . -name \*.a -exec $(RM_F) {} \;
- find . -name \*.so -exec $(RM_F) {} \;
distclean: clean distclean: clean
- rm -f scripts/bb_mkdep - $(RM_F) scripts/bb_mkdep
- rm -rf include/config include/config.h include/bb_config.h include/bbconfigopts.h - rm -rf include/config include/config.h include/bb_config.h include/bbconfigopts.h
- find . -name .depend -exec rm -f {} \; - find . -name .depend -exec $(RM_F) {} \;
rm -f .config .config.old .config.cmd $(RM_F) .config .config.old .config.cmd
release: distclean #doc release: distclean #doc
cd ..; \ cd ..; \
@ -353,7 +445,7 @@ release: distclean #doc
find $(PROG)-$(VERSION)/ -type f \ find $(PROG)-$(VERSION)/ -type f \
-name .\#* \ -name .\#* \
-print \ -print \
-exec rm -f {} \; ; \ -exec $(RM_F) {} \; ; \
\ \
tar -cvzf $(PROG)-$(VERSION).tar.gz $(PROG)-$(VERSION)/; tar -cvzf $(PROG)-$(VERSION).tar.gz $(PROG)-$(VERSION)/;

View File

@ -81,7 +81,8 @@ CFLAGS_EXTRA=$(subst ",, $(strip $(EXTRA_CFLAGS_OPTIONS)))
#GCCINCDIR:=$(shell gcc -print-search-dirs | sed -ne "s/install: \(.*\)/\1include/gp") #GCCINCDIR:=$(shell gcc -print-search-dirs | sed -ne "s/install: \(.*\)/\1include/gp")
WARNINGS=-Wall -Wstrict-prototypes -Wshadow WARNINGS=-Wall -Wstrict-prototypes -Wshadow
CFLAGS=-I$(top_builddir)/include -I$(top_srcdir)/include -I$(srcdir) CFLAGS+=-I$(top_builddir)/include -I$(top_srcdir)/include -I$(srcdir)
ARFLAGS=cru ARFLAGS=cru
@ -125,6 +126,8 @@ endif
CFLAGS+=$(call check_gcc,-funsigned-char,) CFLAGS+=$(call check_gcc,-funsigned-char,)
CFLAGS+=$(call check_gcc,-mmax-stack-frame=256,)
#-------------------------------------------------------- #--------------------------------------------------------
# Arch specific compiler optimization stuff should go here. # Arch specific compiler optimization stuff should go here.
# Unless you want to override the defaults, do not set anything # Unless you want to override the defaults, do not set anything
@ -133,15 +136,38 @@ CFLAGS+=$(call check_gcc,-funsigned-char,)
# use '-Os' optimization if available, else use -O2 # use '-Os' optimization if available, else use -O2
OPTIMIZATION:=$(call check_gcc,-Os,-O2) OPTIMIZATION:=$(call check_gcc,-Os,-O2)
ifeq ($(CONFIG_BUILD_AT_ONCE),y)
# gcc 2.95 exits with 0 for "unrecognized option"
ifeq ($(strip $(shell [ $(CC_MAJOR) -ge 3 ] ; echo $$?)),0)
OPTIMIZATION+=$(call check_gcc,-combine,)
endif
OPTIMIZATION+=$(call check_gcc,-funit-at-a-time,)
PROG_CFLAGS+=$(call check_gcc,-fwhole-program,)
endif # CONFIG_BUILD_AT_ONCE
# Some nice architecture specific optimizations # Some nice architecture specific optimizations
ifeq ($(strip $(TARGET_ARCH)),arm) ifeq ($(strip $(TARGET_ARCH)),arm)
OPTIMIZATION+=-fstrict-aliasing OPTIMIZATION+=-fstrict-aliasing
OPTIMIZATION+=$(call check_gcc,-msingle-pic-base,)
endif endif
ifeq ($(strip $(TARGET_ARCH)),i386) ifeq ($(strip $(TARGET_ARCH)),i386)
OPTIMIZATION+=$(call check_gcc,-march=i386,) OPTIMIZATION+=$(call check_gcc,-march=i386,)
# gcc-4.0 and older seem to suffer from these
ifneq ($(strip $(shell [ $(CC_MAJOR) -ge 4 -a $(CC_MINOR) -ge 1 ] ; echo $$?)),0)
OPTIMIZATION+=$(call check_gcc,-mpreferred-stack-boundary=2,) OPTIMIZATION+=$(call check_gcc,-mpreferred-stack-boundary=2,)
OPTIMIZATION+=$(call check_gcc,-falign-functions=0 -falign-jumps=0 -falign-loops=0,\ OPTIMIZATION+=$(call check_gcc,-falign-functions=0 -falign-jumps=0 -falign-loops=0,\
-malign-functions=0 -malign-jumps=0 -malign-loops=0) -malign-functions=0 -malign-jumps=0 -malign-loops=0)
endif # gcc-4.0 and older
# gcc-4.1 and beyond seem to benefit from these
ifeq ($(strip $(shell [ $(CC_MAJOR) -ge 4 -a $(CC_MINOR) -ge 1 ] ; echo $$?)),0)
# turn off flags which hurt -Os
OPTIMIZATION+=$(call check_gcc,-fno-tree-loop-optimize,)
OPTIMIZATION+=$(call check_gcc,-fno-tree-dominator-opts,)
OPTIMIZATION+=$(call check_gcc,-fno-strength-reduce,)
OPTIMIZATION+=$(call check_gcc,-fno-branch-count-reg,)
endif # gcc-4.1 and beyond
endif endif
OPTIMIZATIONS:=$(OPTIMIZATION) -fomit-frame-pointer OPTIMIZATIONS:=$(OPTIMIZATION) -fomit-frame-pointer
@ -173,11 +199,17 @@ ifeq ($(strip $(CONFIG_DEBUG)),y)
STRIPCMD:=/bin/true -Not_stripping_since_we_are_debugging STRIPCMD:=/bin/true -Not_stripping_since_we_are_debugging
else else
CFLAGS+=$(WARNINGS) $(OPTIMIZATIONS) -D_GNU_SOURCE -DNDEBUG CFLAGS+=$(WARNINGS) $(OPTIMIZATIONS) -D_GNU_SOURCE -DNDEBUG
LDFLAGS += -Wl,-warn-common LDFLAGS += -Wl,-warn-common -Wl,--sort-common
STRIPCMD:=$(STRIP) -s --remove-section=.note --remove-section=.comment STRIPCMD:=$(STRIP) -s --remove-section=.note --remove-section=.comment
endif endif
ifeq ($(strip $(CONFIG_STATIC)),y) ifeq ($(strip $(CONFIG_STATIC)),y)
LDFLAGS += --static LDFLAGS += --static
#else
# LIBRARIES += -ldl
endif
ifeq ($(strip $(CONFIG_BUILD_LIBBUSYBOX)),y)
CFLAGS_PIC:= -fPIC #-DPIC
endif endif
ifeq ($(strip $(CONFIG_SELINUX)),y) ifeq ($(strip $(CONFIG_SELINUX)),y)

View File

@ -10,8 +10,11 @@ APPLETS_DIR:=$(top_builddir)/applets/
endif endif
srcdir=$(top_srcdir)/applets srcdir=$(top_srcdir)/applets
APPLET_SRC:=applets.c busybox.c APPLET_SRC:= $(patsubst %,$(srcdir)/%,applets.c busybox.c)
APPLET_OBJ:= $(patsubst %.c,$(APPLETS_DIR)%.o, $(APPLET_SRC)) APPLET_OBJ:= $(patsubst $(srcdir)/%.c,$(APPLETS_DIR)%.o, $(APPLET_SRC))
APPLET_SRC-y+=$(APPLET_SRC)
APPLET_SRC-a+=$(APPLET_SRC)
libraries-y+=$(APPLETS_DIR)$(APPLETS_AR) libraries-y+=$(APPLETS_DIR)$(APPLETS_AR)

View File

@ -265,7 +265,7 @@ static void parse_config_file(void)
} }
/* Now get the the user/group info. */ /* Now get the the user/group info. */
s = (char *) bb_skip_whitespace(e); s = (char *) bb_skip_whitespace(e);
/* Note: We require whitespace between the mode and the /* Note: We require whitespace between the mode and the

View File

@ -11,7 +11,7 @@
#define setlocale(x,y) #define setlocale(x,y)
#endif #endif
const char *bb_applet_name; const char *bb_applet_name __attribute__((externally_visible));
#ifdef CONFIG_FEATURE_INSTALLER #ifdef CONFIG_FEATURE_INSTALLER
/* /*

View File

@ -3,8 +3,8 @@
export LC_ALL=POSIX export LC_ALL=POSIX
export LC_CTYPE=POSIX export LC_CTYPE=POSIX
prefix=$1 prefix=${1}
if [ "$prefix" = "" ]; then if [ -z "$prefix" ]; then
echo "No installation directory, aborting." echo "No installation directory, aborting."
exit 1; exit 1;
fi fi
@ -16,7 +16,22 @@ case "$2" in
*) echo "Unknown install option: $2"; exit 1;; *) echo "Unknown install option: $2"; exit 1;;
esac esac
if [ "$DO_INSTALL_LIBS" != "n" ]; then
# get the target dir for the libs
# This is an incomplete/incorrect list for now
case $(uname -m) in
x86_64|ppc64*|sparc64*|ia64*|hppa*64*) libdir=/lib64 ;;
*) libdir=/lib ;;
esac
mkdir -p $prefix/$libdir || exit 1
for i in $DO_INSTALL_LIBS; do
rm -f $prefix/$libdir/$i || exit 1
if [ -f $i ]; then
install -m 644 $i $prefix/$libdir/ || exit 1
fi
done
fi
rm -f $prefix/bin/busybox || exit 1 rm -f $prefix/bin/busybox || exit 1
mkdir -p $prefix/bin || exit 1 mkdir -p $prefix/bin || exit 1
install -m 755 busybox $prefix/bin/busybox || exit 1 install -m 755 busybox $prefix/bin/busybox || exit 1

View File

@ -27,8 +27,13 @@ ARCHIVAL-$(CONFIG_UNZIP) += unzip.o
libraries-y+=$(ARCHIVAL_DIR)$(ARCHIVAL_AR) libraries-y+=$(ARCHIVAL_DIR)$(ARCHIVAL_AR)
ARCHIVAL_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(ARCHIVAL-y))
ARCHIVAL_SRC-a:=$(wildcard $(srcdir)/*.c)
APPLET_SRC-y+=$(ARCHIVAL_SRC-y)
APPLET_SRC-a+=$(ARCHIVAL_SRC-a)
$(ARCHIVAL_DIR)$(ARCHIVAL_AR): $(patsubst %,$(ARCHIVAL_DIR)%, $(ARCHIVAL-y)) $(ARCHIVAL_DIR)$(ARCHIVAL_AR): $(patsubst %,$(ARCHIVAL_DIR)%, $(ARCHIVAL-y))
$(AR) $(ARFLAGS) $@ $(patsubst %,$(ARCHIVAL_DIR)%, $(ARCHIVAL-y)) $(AR) $(ARFLAGS) $@ $(^)
$(ARCHIVAL_DIR)%.o: $(srcdir)/%.c $(ARCHIVAL_DIR)%.o: $(srcdir)/%.c
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $< $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<

View File

@ -2,27 +2,20 @@
# #
# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org> # Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
# #
# This program is free software; you can redistribute it and/or modify # Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# #
LIBUNARCHIVE_AR:=libunarchive.a LIBUNARCHIVE_AR:=libunarchive.a
ifndef $(LIBUNARCHIVE_DIR) ifndef $(LIBUNARCHIVE_DIR)
LIBUNARCHIVE_DIR:=$(top_builddir)/archival/libunarchive/ LIBUNARCHIVE_DIR:=$(top_builddir)/archival/libunarchive
endif endif
srcdir=$(top_srcdir)/archival/libunarchive srcdir=$(top_srcdir)/archival/libunarchive
LIBUNARCHIVE-obj:=$(LIBUNARCHIVE_DIR)/$(LIBUNARCHIVE_AR)
LIBUNARCHIVE-pic:=$(LIBUNARCHIVE_DIR)/$(subst .a,-pic.a,$(LIBUNARCHIVE_AR))
libraries-y+=$(LIBUNARCHIVE-obj)
LIBUNARCHIVE-y:= \ LIBUNARCHIVE-y:= \
\ \
data_skip.o \ data_skip.o \
@ -74,12 +67,17 @@ LIBUNARCHIVE-$(CONFIG_FEATURE_TAR_COMPRESS) += decompress_uncompress.o
LIBUNARCHIVE-$(CONFIG_UNCOMPRESS) += decompress_uncompress.o LIBUNARCHIVE-$(CONFIG_UNCOMPRESS) += decompress_uncompress.o
LIBUNARCHIVE-$(CONFIG_UNZIP) += $(GUNZIP_FILES) LIBUNARCHIVE-$(CONFIG_UNZIP) += $(GUNZIP_FILES)
libraries-y+=$(LIBUNARCHIVE_DIR)$(LIBUNARCHIVE_AR)
LIBUNARCHIVE-y:=$(sort $(LIBUNARCHIVE-y)) LIBUNARCHIVE-y:=$(sort $(LIBUNARCHIVE-y))
$(LIBUNARCHIVE_DIR)$(LIBUNARCHIVE_AR): $(patsubst %,$(LIBUNARCHIVE_DIR)%, $(LIBUNARCHIVE-y))
$(AR) $(ARFLAGS) $@ $(patsubst %,$(LIBUNARCHIVE_DIR)%, $(LIBUNARCHIVE-y))
$(LIBUNARCHIVE_DIR)%.o: $(srcdir)/%.c LIBUNARCHIVE_SRC-y:=$(patsubst %,$(srcdir)/%,$(subst .o,.c,$(LIBUNARCHIVE-y)))
LIBUNARCHIVE_SRC-a:=$(wildcard $(srcdir)/*.c)
LIBRARY_SRC-y+=$(LIBUNARCHIVE_SRC-y)
LIBRARY_SRC-a+=$(LIBUNARCHIVE_SRC-a)
$(LIBUNARCHIVE_DIR)/$(LIBUNARCHIVE_AR): $(patsubst %,$(LIBUNARCHIVE_DIR)/%,$(LIBUNARCHIVE-y))
$(AR) $(ARFLAGS) $(@) $(^)
$(LIBUNARCHIVE_DIR)/%.o: $(srcdir)/%.c
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $< $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<

View File

@ -10,22 +10,26 @@ CONSOLETOOLS_DIR:=$(top_builddir)/console-tools/
endif endif
srcdir=$(top_srcdir)/console-tools srcdir=$(top_srcdir)/console-tools
CONSOLETOOLS_DIR-y:= CONSOLETOOLS-y:=
CONSOLETOOLS_DIR-$(CONFIG_CHVT) += chvt.o CONSOLETOOLS-$(CONFIG_CHVT) += chvt.o
CONSOLETOOLS_DIR-$(CONFIG_CLEAR) += clear.o CONSOLETOOLS-$(CONFIG_CLEAR) += clear.o
CONSOLETOOLS_DIR-$(CONFIG_DEALLOCVT) += deallocvt.o CONSOLETOOLS-$(CONFIG_DEALLOCVT) += deallocvt.o
CONSOLETOOLS_DIR-$(CONFIG_DUMPKMAP) += dumpkmap.o CONSOLETOOLS-$(CONFIG_DUMPKMAP) += dumpkmap.o
CONSOLETOOLS_DIR-$(CONFIG_SETCONSOLE) += setconsole.o CONSOLETOOLS-$(CONFIG_SETCONSOLE) += setconsole.o
CONSOLETOOLS_DIR-$(CONFIG_LOADFONT) += loadfont.o CONSOLETOOLS-$(CONFIG_LOADFONT) += loadfont.o
CONSOLETOOLS_DIR-$(CONFIG_LOADKMAP) += loadkmap.o CONSOLETOOLS-$(CONFIG_LOADKMAP) += loadkmap.o
CONSOLETOOLS_DIR-$(CONFIG_OPENVT) += openvt.o CONSOLETOOLS-$(CONFIG_OPENVT) += openvt.o
CONSOLETOOLS_DIR-$(CONFIG_RESET) += reset.o CONSOLETOOLS-$(CONFIG_RESET) += reset.o
CONSOLETOOLS_DIR-$(CONFIG_SETKEYCODES) += setkeycodes.o CONSOLETOOLS-$(CONFIG_SETKEYCODES) += setkeycodes.o
libraries-y+=$(CONSOLETOOLS_DIR)$(CONSOLETOOLS_AR) libraries-y+=$(CONSOLETOOLS_DIR)$(CONSOLETOOLS_AR)
CONSOLETOOLS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(CONSOLETOOLS-y))
CONSOLETOOLS_SRC-a:=$(wildcard $(srcdir)/*.c)
APPLET_SRC-y+=$(CONSOLETOOLS_SRC-y)
APPLET_SRC-a+=$(CONSOLETOOLS_SRC-a)
$(CONSOLETOOLS_DIR)$(CONSOLETOOLS_AR): $(patsubst %,$(CONSOLETOOLS_DIR)%, $(CONSOLETOOLS_DIR-y)) $(CONSOLETOOLS_DIR)$(CONSOLETOOLS_AR): $(patsubst %,$(CONSOLETOOLS_DIR)%, $(CONSOLETOOLS-y))
$(AR) $(ARFLAGS) $@ $(patsubst %,$(CONSOLETOOLS_DIR)%, $(CONSOLETOOLS_DIR-y)) $(AR) $(ARFLAGS) $@ $(patsubst %,$(CONSOLETOOLS_DIR)%, $(CONSOLETOOLS-y))
$(CONSOLETOOLS_DIR)%.o: $(srcdir)/%.c $(CONSOLETOOLS_DIR)%.o: $(srcdir)/%.c
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $< $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<

View File

@ -81,7 +81,12 @@ COREUTILS-$(CONFIG_WHO) += who.o
COREUTILS-$(CONFIG_WHOAMI) += whoami.o COREUTILS-$(CONFIG_WHOAMI) += whoami.o
COREUTILS-$(CONFIG_YES) += yes.o COREUTILS-$(CONFIG_YES) += yes.o
COREUTILS-y:=$(sort $(COREUTILS-y))
libraries-y+=$(COREUTILS_DIR)$(COREUTILS_AR) libraries-y+=$(COREUTILS_DIR)$(COREUTILS_AR)
COREUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(COREUTILS-y))
COREUTILS_SRC-a:=$(wildcard $(srcdir)/*.c)
APPLET_SRC-y+=$(COREUTILS_SRC-y)
APPLET_SRC-a+=$(COREUTILS_SRC-a)
$(COREUTILS_DIR)$(COREUTILS_AR): $(patsubst %,$(COREUTILS_DIR)%, $(COREUTILS-y)) $(COREUTILS_DIR)$(COREUTILS_AR): $(patsubst %,$(COREUTILS_DIR)%, $(COREUTILS-y))
$(AR) $(ARFLAGS) $@ $(patsubst %,$(COREUTILS_DIR)%, $(COREUTILS-y)) $(AR) $(ARFLAGS) $@ $(patsubst %,$(COREUTILS_DIR)%, $(COREUTILS-y))

View File

@ -2,36 +2,51 @@
# #
# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org> # Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
# #
# This program is free software; you can redistribute it and/or modify # Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# #
LIBCOREUTILS_AR:=libcoreutils.a LIBCOREUTILS_AR:=libcoreutils.a
ifndef $(LIBCOREUTILS_DIR) ifndef $(LIBCOREUTILS_DIR)
LIBCOREUTILS_DIR:=$(top_builddir)/coreutils/libcoreutils/ LIBCOREUTILS_DIR:=$(top_builddir)/coreutils/libcoreutils
endif endif
srcdir=$(top_srcdir)/coreutils/libcoreutils srcdir=$(top_srcdir)/coreutils/libcoreutils
LIBCOREUTILS_SRC:= cp_mv_stat.c getopt_mk_fifo_nod.c LIBCOREUTILS_ALL_SRC:= cp_mv_stat.c getopt_mk_fifo_nod.c
LIBCOREUTILS_OBJS=$(patsubst %.c,$(LIBCOREUTILS_DIR)%.o, $(LIBCOREUTILS_SRC)) LIBCOREUTILS-y:=
LIBCOREUTILS-$(CONFIG_MKFIFO) += getopt_mk_fifo_nod.o
LIBCOREUTILS-$(CONFIG_MKNOD) += getopt_mk_fifo_nod.o
LIBCOREUTILS-$(CONFIG_INSTALL) += cp_mv_stat.o
LIBCOREUTILS-$(CONFIG_CP) += cp_mv_stat.o
LIBCOREUTILS-$(CONFIG_MV) += cp_mv_stat.o
libraries-y+=$(LIBCOREUTILS_DIR)$(LIBCOREUTILS_AR) LIBCOREUTILS-y:=$(sort $(LIBCOREUTILS-y))
$(LIBCOREUTILS_DIR)$(LIBCOREUTILS_AR): $(LIBCOREUTILS_OBJS) LIBCOREUTILS_SRC-y:=$(patsubst %,$(srcdir)/%,$(subst .o,.c,$(LIBCOREUTILS-y)))
$(AR) $(ARFLAGS) $@ $(LIBCOREUTILS_OBJS) LIBCOREUTILS_SRC-a:=$(wildcard $(srcdir)/*.c)
LIBRARY_SRC-y+=$(LIBCOREUTILS_SRC-y)
LIBRARY_SRC-a+=$(LIBCOREUTILS_SRC-a)
$(LIBCOREUTILS_DIR)%.o: $(srcdir)/%.c LIBCOREUTILS-multi-obj:=$(LIBCOREUTILS_DIR)/$(subst .a,-multi.o,$(LIBCOREUTILS_AR))
LIBCOREUTILS-multi-pic:=$(LIBCOREUTILS_DIR)/$(subst .a,-pic.o,$(LIBCOREUTILS_AR))
# We do not need to build an empty non-pic object/archive
ifneq ($(strip $(LIBCOREUTILS-y)),)
libraries-y+=$(LIBCOREUTILS_DIR)/$(LIBCOREUTILS_AR)
endif
# If we are building libbusybox.so _and_ we will use it ourselves then we
# keep it as small as possible
ifeq ($(strip $(CONFIG_FEATURE_SHARED_BUSYBOX)),y)
ifneq ($(strip $(LIBIPROUTE-y)),)
libraries-m+=$(LIBCOREUTILS-multi-pic)
endif
endif
LIBCOREUTILS_OBJS=$(patsubst %,$(LIBCOREUTILS_DIR)/%, $(LIBCOREUTILS-y))
$(LIBCOREUTILS_DIR)/$(LIBCOREUTILS_AR): $(patsubst %,$(LIBCOREUTILS_DIR)/%,$(LIBCOREUTILS-y))
$(AR) $(ARFLAGS) $(@) $(^)
$(LIBCOREUTILS_DIR)/%.o: $(srcdir)/%.c
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $< $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<

View File

@ -19,6 +19,10 @@ DEBIANUTILS-$(CONFIG_START_STOP_DAEMON) += start_stop_daemon.o
DEBIANUTILS-$(CONFIG_WHICH) += which.o DEBIANUTILS-$(CONFIG_WHICH) += which.o
libraries-y+=$(DEBIANUTILS_DIR)$(DEBIANUTILS_AR) libraries-y+=$(DEBIANUTILS_DIR)$(DEBIANUTILS_AR)
DEBIANUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(DEBIANUTILS-y))
DEBIANUTILS_SRC-a:=$(wildcard $(srcdir)/*.c)
APPLET_SRC-y+=$(DEBIANUTILS_SRC-y)
APPLET_SRC-a+=$(DEBIANUTILS_SRC-a)
$(DEBIANUTILS_DIR)$(DEBIANUTILS_AR): $(patsubst %,$(DEBIANUTILS_DIR)%, $(DEBIANUTILS-y)) $(DEBIANUTILS_DIR)$(DEBIANUTILS_AR): $(patsubst %,$(DEBIANUTILS_DIR)%, $(DEBIANUTILS-y))
$(AR) $(ARFLAGS) $@ $(patsubst %,$(DEBIANUTILS_DIR)%, $(DEBIANUTILS-y)) $(AR) $(ARFLAGS) $@ $(patsubst %,$(DEBIANUTILS_DIR)%, $(DEBIANUTILS-y))

View File

@ -62,8 +62,19 @@ E2FSPROGS-$(CONFIG_LSATTR) += lsattr.o $(E2P_OBJS)
E2FSPROGS-$(CONFIG_MKE2FS) += mke2fs.o util.o $(E2P_OBJS) $(BLKID_OBJS) $(EXT2FS_OBJS) $(UUID_OBJS) E2FSPROGS-$(CONFIG_MKE2FS) += mke2fs.o util.o $(E2P_OBJS) $(BLKID_OBJS) $(EXT2FS_OBJS) $(UUID_OBJS)
E2FSPROGS-$(CONFIG_TUNE2FS) += tune2fs.o util.o $(E2P_OBJS) $(BLKID_OBJS) $(EXT2FS_OBJS) $(UUID_OBJS) E2FSPROGS-$(CONFIG_TUNE2FS) += tune2fs.o util.o $(E2P_OBJS) $(BLKID_OBJS) $(EXT2FS_OBJS) $(UUID_OBJS)
libraries-y+=$(E2FSPROGS_DIR)/$(E2FSPROGS_AR) E2FSPROGS-y:=$(sort $(E2FSPROGS-y))
libraries-y+=$(E2FSPROGS_DIR)/$(E2FSPROGS_AR)
E2FSPROGS_SRC-y:=$(patsubst %.o,$(E2FSPROGS_SRC)/%.c,$(E2FSPROGS-y))
E2FSPROGS_SRC-a:=$(wildcard $(E2FSPROGS_SRC)/*.c) $(patsubst %,$(E2FSPROGS_SRC)/%,$(BLKID_SRCS) $(E2P_SRCS) $(EXT2FS_SRCS) $(UUID_SRCS))
APPLET_SRC-y+=$(E2FSPROGS_CFLAGS) $(E2FSPROGS_SRC-y)
APPLET_SRC-a+=$(E2FSPROGS_CFLAGS) $(E2FSPROGS_SRC-a)
# XXX: FIXME: change .c to include their stuff relative to $(E2FSPROGS_SRC)
E2FSPROGS_TMP_KLUDGE:=$(patsubst %,-I$(E2FSPROGS_SRC)/%,blkid e2fsck e2p ext2fs uuid)
APPLETS_DEFINE-y+=$(E2FSPROGS_CFLAGS) -I$(E2FSPROGS_SRC) $(E2FSPROGS_TMP_KLUDGE)
APPLETS_DEFINE-a+=$(E2FSPROGS_CFLAGS) -I$(E2FSPROGS_SRC) $(E2FSPROGS_TMP_KLUDGE)
$(E2FSPROGS_DIR)/$(E2FSPROGS_AR): $(patsubst %,$(E2FSPROGS_DIR)/%, $(E2FSPROGS-y)) $(E2FSPROGS_DIR)/$(E2FSPROGS_AR): $(patsubst %,$(E2FSPROGS_DIR)/%, $(E2FSPROGS-y))
$(AR) $(ARFLAGS) $@ $(patsubst %,$(E2FSPROGS_DIR)/%, $(E2FSPROGS-y)) $(AR) $(ARFLAGS) $@ $(patsubst %,$(E2FSPROGS_DIR)/%, $(E2FSPROGS-y))

View File

@ -15,16 +15,19 @@ EDITOR-$(CONFIG_AWK) += awk.o
EDITOR-$(CONFIG_PATCH) += patch.o EDITOR-$(CONFIG_PATCH) += patch.o
EDITOR-$(CONFIG_SED) += sed.o EDITOR-$(CONFIG_SED) += sed.o
EDITOR-$(CONFIG_VI) += vi.o EDITOR-$(CONFIG_VI) += vi.o
EDITOR_SRC:= $(EDITOR-y)
EDITOR_OBJ:= $(patsubst %.c,$(EDITOR_DIR)%.o, $(EDITOR_SRC))
libraries-y+=$(EDITOR_DIR)$(EDITOR_AR) libraries-y+=$(EDITOR_DIR)$(EDITOR_AR)
EDITOR_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(EDITOR-y))
EDITOR_SRC-a:=$(wildcard $(srcdir)/*.c)
APPLET_SRC-y+=$(EDITOR_SRC-y)
APPLET_SRC-a+=$(EDITOR_SRC-a)
needlibm-y:= needlibm-y:=
needlibm-$(CONFIG_FEATURE_AWK_MATH) := y needlibm-$(CONFIG_FEATURE_AWK_MATH) := y
ifeq ($(needlibm-y),y) ifeq ($(needlibm-y),y)
LIBRARIES += -lm LIBRARIES := -lm $(filter-out -lm,$(LIBRARIES))
endif endif
$(EDITOR_DIR)$(EDITOR_AR): $(patsubst %,$(EDITOR_DIR)%, $(EDITOR-y)) $(EDITOR_DIR)$(EDITOR_AR): $(patsubst %,$(EDITOR_DIR)%, $(EDITOR-y))

View File

@ -17,6 +17,11 @@ FINDUTILS-$(CONFIG_XARGS) += xargs.o
libraries-y+=$(FINDUTILS_DIR)$(FINDUTILS_AR) libraries-y+=$(FINDUTILS_DIR)$(FINDUTILS_AR)
FINDUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(FINDUTILS-y))
FINDUTILS_SRC-a:=$(wildcard $(srcdir)/*.c)
APPLET_SRC-y+=$(FINDUTILS_SRC-y)
APPLET_SRC-a+=$(FINDUTILS_SRC-a)
$(FINDUTILS_DIR)$(FINDUTILS_AR): $(patsubst %,$(FINDUTILS_DIR)%, $(FINDUTILS-y)) $(FINDUTILS_DIR)$(FINDUTILS_AR): $(patsubst %,$(FINDUTILS_DIR)%, $(FINDUTILS-y))
$(AR) $(ARFLAGS) $@ $(patsubst %,$(FINDUTILS_DIR)%, $(FINDUTILS-y)) $(AR) $(ARFLAGS) $@ $(patsubst %,$(FINDUTILS_DIR)%, $(FINDUTILS-y))

View File

@ -86,7 +86,7 @@
#define MAX(a,b) (((a)>(b))?(a):(b)) #define MAX(a,b) (((a)>(b))?(a):(b))
#endif #endif
extern void bb_show_usage(void) __attribute__ ((noreturn)); extern void bb_show_usage(void) __attribute__ ((noreturn, externally_visible));
extern void bb_error_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))); extern void bb_error_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2)));
extern void bb_error_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2))); extern void bb_error_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2)));
extern void bb_perror_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))); extern void bb_perror_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2)));

View File

@ -17,16 +17,16 @@ INIT-$(CONFIG_MESG) += mesg.o
INIT-$(CONFIG_POWEROFF) += poweroff.o INIT-$(CONFIG_POWEROFF) += poweroff.o
INIT-$(CONFIG_REBOOT) += reboot.o INIT-$(CONFIG_REBOOT) += reboot.o
ifeq ($(CONFIG_HALT), y) ifeq ($(strip $(CONFIG_HALT)),y)
CONFIG_INIT_SHARED=y CONFIG_INIT_SHARED=y
else else
ifeq ($(CONFIG_INIT), y) ifeq ($(strip $(CONFIG_INIT)),y)
CONFIG_INIT_SHARED=y CONFIG_INIT_SHARED=y
else else
ifeq ($(CONFIG_POWEROFF), y) ifeq ($(strip $(CONFIG_POWEROFF)),y)
CONFIG_INIT_SHARED=y CONFIG_INIT_SHARED=y
else else
ifeq ($(CONFIG_REBOOT), y) ifeq ($(strip $(CONFIG_REBOOT)),y)
CONFIG_INIT_SHARED=y CONFIG_INIT_SHARED=y
else else
CONFIG_INIT_SHARED=n CONFIG_INIT_SHARED=n
@ -35,12 +35,17 @@ endif
endif endif
endif endif
ifeq ($(CONFIG_INIT_SHARED), y) ifeq ($(strip $(CONFIG_INIT_SHARED)),y)
INIT-$(CONFIG_INIT_SHARED) += init_shared.o INIT-$(CONFIG_INIT_SHARED) += init_shared.o
endif endif
libraries-y+=$(INIT_DIR)$(INIT_AR) libraries-y+=$(INIT_DIR)$(INIT_AR)
INIT_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(INIT-y))
INIT_SRC-a:=$(wildcard $(srcdir)/*.c)
APPLET_SRC-y+=$(INIT_SRC-y)
APPLET_SRC-a+=$(INIT_SRC-a)
$(INIT_DIR)$(INIT_AR): $(patsubst %,$(INIT_DIR)%, $(INIT-y)) $(INIT_DIR)$(INIT_AR): $(patsubst %,$(INIT_DIR)%, $(INIT-y))
$(AR) $(ARFLAGS) $@ $(patsubst %,$(INIT_DIR)%, $(INIT-y)) $(AR) $(ARFLAGS) $@ $(patsubst %,$(INIT_DIR)%, $(INIT-y))

View File

@ -4,13 +4,13 @@
# #
# Licensed under the GPL v2, see the file LICENSE in this tarball. # Licensed under the GPL v2, see the file LICENSE in this tarball.
LIBBB_AR:=libbb.a
ifndef $(LIBBB_DIR) ifndef $(LIBBB_DIR)
LIBBB_DIR:=$(top_builddir)/libbb/ LIBBB_DIR:=$(top_builddir)/libbb
endif endif
srcdir=$(top_srcdir)/libbb srcdir=$(top_srcdir)/libbb
LIBBB_SRC-y:= \ LIBBB-n:=
LIBBB-y:= \
bb_asprintf.c ask_confirmation.c change_identity.c chomp.c \ bb_asprintf.c ask_confirmation.c change_identity.c chomp.c \
compare_string_array.c concat_path_file.c copy_file.c copyfd.c \ compare_string_array.c concat_path_file.c copy_file.c copyfd.c \
correct_password.c create_icmp_socket.c create_icmp6_socket.c \ correct_password.c create_icmp_socket.c create_icmp6_socket.c \
@ -36,10 +36,14 @@ LIBBB_SRC-y:= \
warn_ignoring_args.c concat_subpath_file.c vfork_daemon_rexec.c \ warn_ignoring_args.c concat_subpath_file.c vfork_daemon_rexec.c \
bb_echo.c bb_do_delay.c bb_echo.c bb_do_delay.c
LIBBB_SRC-$(CONFIG_FEATURE_SHADOWPASSWDS)+= pwd2spwd.c # conditionally compiled objects:
LIBBB-$(CONFIG_FEATURE_SHADOWPASSWDS)+=pwd2spwd.c
LIBBB-$(CONFIG_FEATURE_MTAB_SUPPORT)+= mtab.c
LIBBB_OBJS=$(patsubst %.c,$(LIBBB_DIR)%.o, $(LIBBB_SRC-y))
LIBBB-y:=$(patsubst %,$(srcdir)/%,$(LIBBB-y))
# 1:N objects
LIBBB_MSRC0:=$(srcdir)/messages.c LIBBB_MSRC0:=$(srcdir)/messages.c
LIBBB_MOBJ0:=full_version.o \ LIBBB_MOBJ0:=full_version.o \
memory_exhausted.o invalid_date.o io_error.o \ memory_exhausted.o invalid_date.o io_error.o \
@ -49,65 +53,90 @@ LIBBB_MOBJ0:=full_version.o \
securetty_file.o motd_file.o \ securetty_file.o motd_file.o \
msg_standard_input.o msg_standard_output.o shell_file.o \ msg_standard_input.o msg_standard_output.o shell_file.o \
bb_dev_null.o bb_common_bufsiz1.o bb_dev_null.o bb_common_bufsiz1.o
LIBBB_MOBJ0:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ0))
$(LIBBB_MOBJ0):$(LIBBB_MSRC0)
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -o $@ -c $<
LIBBB_MSRC1:=$(srcdir)/xfuncs.c LIBBB_MSRC1:=$(srcdir)/xfuncs.c
LIBBB_MOBJ1:=xmalloc.o xrealloc.o xcalloc.o xstrdup.o xstrndup.o \ LIBBB_MOBJ1:=xmalloc.o xrealloc.o xcalloc.o xstrdup.o xstrndup.o \
xfopen.o xopen.o xread.o xread_all.o xread_char.o \ xfopen.o xopen.o xread.o xread_all.o xread_char.o \
xferror.o xferror_stdout.o xfflush_stdout.o strlen.o xferror.o xferror_stdout.o xfflush_stdout.o strlen.o
LIBBB_MOBJ1:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ1))
$(LIBBB_MOBJ1):$(LIBBB_MSRC1)
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -o $@ -c $<
LIBBB_MSRC2:=$(srcdir)/printf.c LIBBB_MSRC2:=$(srcdir)/printf.c
LIBBB_MOBJ2:=bb_vfprintf.o bb_vprintf.o bb_fprintf.o bb_printf.o LIBBB_MOBJ2:=bb_vfprintf.o bb_vprintf.o bb_fprintf.o bb_printf.o
LIBBB_MOBJ2:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ2))
$(LIBBB_MOBJ2):$(LIBBB_MSRC2)
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -o $@ -c $<
LIBBB_MSRC3:=$(srcdir)/xgetularg.c LIBBB_MSRC3:=$(srcdir)/xgetularg.c
LIBBB_MOBJ3:=xgetularg_bnd_sfx.o xgetlarg_bnd_sfx.o getlarg10_sfx.o \ LIBBB_MOBJ3:=xgetularg_bnd_sfx.o xgetlarg_bnd_sfx.o getlarg10_sfx.o \
xgetularg_bnd.o xgetularg10_bnd.o xgetularg10.o xgetularg_bnd.o xgetularg10_bnd.o xgetularg10.o
LIBBB_MOBJ3:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ3))
$(LIBBB_MOBJ3):$(LIBBB_MSRC3)
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -o $@ -c $<
LIBBB_MSRC4:=$(srcdir)/safe_strtol.c LIBBB_MSRC4:=$(srcdir)/safe_strtol.c
LIBBB_MOBJ4:=safe_strtoi.o safe_strtod.o safe_strtol.o safe_strtoul.o LIBBB_MOBJ4:=safe_strtoi.o safe_strtod.o safe_strtol.o safe_strtoul.o
LIBBB_MOBJ4:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ4))
$(LIBBB_MOBJ4):$(LIBBB_MSRC4)
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -o $@ -c $<
LIBBB_MSRC5:=$(srcdir)/bb_pwd.c LIBBB_MSRC5:=$(srcdir)/bb_pwd.c
LIBBB_MOBJ5:=bb_xgetpwnam.o bb_xgetgrnam.o bb_getgrgid.o bb_getpwuid.o \ LIBBB_MOBJ5:=bb_xgetpwnam.o bb_xgetgrnam.o bb_getgrgid.o bb_getpwuid.o \
bb_getug.o get_ug_id.o bb_getug.o get_ug_id.o
LIBBB_MOBJ5:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ5))
$(LIBBB_MOBJ5):$(LIBBB_MSRC5)
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -o $@ -c $<
LIBBB_MSRC6:=$(srcdir)/llist.c LIBBB_MSRC6:=$(srcdir)/llist.c
LIBBB_MOBJ6:=llist_add_to.o llist_add_to_end.o llist_free_one.o llist_free.o LIBBB_MOBJ6:=llist_add_to.o llist_add_to_end.o llist_free_one.o llist_free.o
LIBBB_MOBJ6:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ6))
$(LIBBB_MOBJ6):$(LIBBB_MSRC6)
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -o $@ -c $<
LIBBB_MOBJS0=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ0))
LIBBB_MOBJS1=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ1))
LIBBB_MOBJS2=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ2))
LIBBB_MOBJS3=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ3))
LIBBB_MOBJS4=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ4))
LIBBB_MOBJS5=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ5))
LIBBB_MOBJS6=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ6))
libraries-y+=$(LIBBB_DIR)$(LIBBB_AR) # We need the names of the object files built from MSRC for the L_ defines
LIBBB_ALL_MOBJ:=$(LIBBB_MOBJ0) $(LIBBB_MOBJ1) $(LIBBB_MOBJ2) $(LIBBB_MOBJ3) $(LIBBB_MOBJ4) $(LIBBB_MOBJ5) $(LIBBB_MOBJ6)
$(LIBBB_DIR)$(LIBBB_AR): $(LIBBB_OBJS) $(LIBBB_MOBJS0) $(LIBBB_MOBJS1) \ LIBBB_ALL_MSRC:=$(LIBBB_MSRC0) $(LIBBB_MSRC1) $(LIBBB_MSRC2) $(LIBBB_MSRC3) \
$(LIBBB_MOBJS2) $(LIBBB_MOBJS3) $(LIBBB_MOBJS4) $(LIBBB_MOBJS5) \ $(LIBBB_MSRC4) $(LIBBB_MSRC5) $(LIBBB_MSRC6)
$(LIBBB_MOBJS6)
$(AR) $(ARFLAGS) $(@) $(LIBBB_OBJS) $(^)
$(LIBBB_DIR)%.o: $(srcdir)/%.c LIBBB-y:=$(sort $(LIBBB-y) $(LIBBB_ALL_MSRC))
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<
$(LIBBB_MOBJS0): $(LIBBB_MSRC0) LIBBB_AR:=$(LIBBB_DIR)/libbb.a
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@ libraries-y+=$(LIBBB_AR)
$(LIBBB_MOBJS1): $(LIBBB_MSRC1) needcrypt-y:=
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@ ifneq ($(findstring $(srcdir)/pw_encrypt.c,$(LIBBB-y)),)
needcrypt-y:=y
else
ifneq ($(findstring $(srcdir)/correct_password.c,$(LIBBB-y)),)
needcrypt-y:=y
endif
endif
$(LIBBB_MOBJS2): $(LIBBB_MSRC2) ifeq ($(needcrypt-y),y)
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@ LIBRARIES := -lcrypt $(filter-out -lcrypt,$(LIBRARIES))
endif
$(LIBBB_MOBJS3): $(LIBBB_MSRC3) # all 1:1 objects
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@ LIBBB_OBJS:=$(patsubst $(srcdir)/%.c,$(LIBBB_DIR)/%.o, $(LIBBB-y))
$(LIBBB_DIR)/%.o: $(srcdir)/%.c
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -o $@ -c $<
$(LIBBB_MOBJS4): $(LIBBB_MSRC4)
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@
$(LIBBB_MOBJS5): $(LIBBB_MSRC5) LIBBB_SRC-a:=$(wildcard $(srcdir)/*.c)
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@ LIBRARY_SRC-y+=$(LIBBB-y)
LIBRARY_SRC-a+=$(LIBBB_SRC-a)
$(LIBBB_MOBJS6): $(LIBBB_MSRC6) # all defines needed for 1:N objects
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@ LIBBB_DEFINE-y:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(LIBBB_ALL_MOBJ))))
LIBRARY_DEFINE-y+=$(LIBBB_DEFINE-y)
LIBRARY_DEFINE-a+=$(LIBBB_DEFINE-y)
$(LIBBB_AR): $(LIBBB_OBJS) $(LIBBB_ALL_MOBJ)
$(AR) $(ARFLAGS) $(@) $(^)

View File

@ -48,11 +48,12 @@ extern struct mntent *find_mount_point(const char *name, const char *table)
mountDevice = s.st_dev; mountDevice = s.st_dev;
if ((mountTable = setmntent(table ? : bb_path_mtab_file, "r")) == 0) if ((mountTable = setmntent(table ? table : bb_path_mtab_file, "r")) == 0)
return 0; return 0;
while ((mountEntry = getmntent(mountTable)) != 0) { while ((mountEntry = getmntent(mountTable)) != 0) {
if (strcmp(name, mountEntry->mnt_dir) == 0
if(strcmp(name, mountEntry->mnt_dir) == 0
|| strcmp(name, mountEntry->mnt_fsname) == 0) /* String match. */ || strcmp(name, mountEntry->mnt_fsname) == 0) /* String match. */
break; break;
if (stat(mountEntry->mnt_fsname, &s) == 0 && s.st_rdev == mountDevice) /* Match the device. */ if (stat(mountEntry->mnt_fsname, &s) == 0 && s.st_rdev == mountDevice) /* Match the device. */

View File

@ -6,10 +6,15 @@
LIBPWDGRP_AR:=libpwdgrp.a LIBPWDGRP_AR:=libpwdgrp.a
ifndef $(LIBPWDGRP_DIR) ifndef $(LIBPWDGRP_DIR)
LIBPWDGRP_DIR:=$(top_builddir)/libpwdgrp/ LIBPWDGRP_DIR:=$(top_builddir)/libpwdgrp
endif endif
srcdir=$(top_srcdir)/libpwdgrp srcdir=$(top_srcdir)/libpwdgrp
LIBPWDGRP-obj:=$(LIBPWDGRP_DIR)/$(LIBPWDGRP_AR)
LIBPWDGRP-pic:=$(LIBPWDGRP_DIR)/$(subst .a,-pic.o,$(LIBPWDGRP_AR))
libraries-y+=$(LIBPWDGRP_DIR)/$(LIBPWDGRP_AR)
libraries-m+=$(LIBPWDGRP-multi-pic)
LIBPWDGRP_MSRC0:=$(srcdir)/pwd_grp.c LIBPWDGRP_MSRC0:=$(srcdir)/pwd_grp.c
LIBPWDGRP_MOBJ0-$(CONFIG_USE_BB_PWD_GRP):= fgetpwent_r.o fgetgrent_r.o \ LIBPWDGRP_MOBJ0-$(CONFIG_USE_BB_PWD_GRP):= fgetpwent_r.o fgetgrent_r.o \
@ -17,19 +22,29 @@ LIBPWDGRP_MOBJ0-$(CONFIG_USE_BB_PWD_GRP):= fgetpwent_r.o fgetgrent_r.o \
getgrgid_r.o getpwuid.o getgrgid.o getpwnam.o getgrnam.o getpw.o \ getgrgid_r.o getpwuid.o getgrgid.o getpwnam.o getgrnam.o getpw.o \
getpwent_r.o getgrent_r.o getpwent.o getgrent.o \ getpwent_r.o getgrent_r.o getpwent.o getgrent.o \
initgroups.o putpwent.o putgrent.o initgroups.o putpwent.o putgrent.o
LIBPWDGRP_MOBJS0=$(patsubst %,$(LIBPWDGRP_DIR)%, $(LIBPWDGRP_MOBJ0-y)) LIBPWDGRP_MOBJS0=$(patsubst %,$(LIBPWDGRP_DIR)/%, $(LIBPWDGRP_MOBJ0-y))
LIBPWDGRP_MSRC1:=$(srcdir)/pwd_grp.c LIBPWDGRP_MSRC1:=$(srcdir)/pwd_grp.c
LIBPWDGRP_MOBJ1-$(CONFIG_USE_BB_PWD_GRP):= __parsepwent.o __parsegrent.o \ LIBPWDGRP_MOBJ1-$(CONFIG_USE_BB_PWD_GRP):= __parsepwent.o __parsegrent.o \
__pgsreader.o fgetspent_r.o fgetspent.o sgetspent_r.o getspnam_r.o \ __pgsreader.o fgetspent_r.o fgetspent.o sgetspent_r.o getspnam_r.o \
getspnam.o getspent_r.o getspent.o sgetspent.o \ getspnam.o getspent_r.o getspent.o sgetspent.o \
putspent.o __parsespent.o # getspuid_r.o getspuid.o putspent.o __parsespent.o # getspuid_r.o getspuid.o
LIBPWDGRP_MOBJS1=$(patsubst %,$(LIBPWDGRP_DIR)%, $(LIBPWDGRP_MOBJ1-y)) LIBPWDGRP_MOBJS1=$(patsubst %,$(LIBPWDGRP_DIR)/%, $(LIBPWDGRP_MOBJ1-y))
libraries-y+=$(LIBPWDGRP_DIR)$(LIBPWDGRP_AR) LIBPWDGRP_DEFINE0-y:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(LIBPWDGRP_MOBJS0))))
LIBPWDGRP_DEFINE1-y:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(LIBPWDGRP_MOBJS1))))
$(LIBPWDGRP_DIR)$(LIBPWDGRP_AR): $(LIBPWDGRP_MOBJS0) $(LIBPWDGRP_MOBJS1) LIBPWDGRP_SRC-y:=$(LIBPWDGRP_MSRC0)
$(AR) $(ARFLAGS) $@ $(LIBPWDGRP_MOBJS0) $(LIBPWDGRP_MOBJS1)
LIBRARY_SRC-y+=$(LIBPWDGRP_SRC-y)
LIBRARY_SRC-a+=$(LIBPWDGRP_SRC-y)
LIBRARY_DEFINE-y+=$(LIBPWDGRP_DEFINE0-y) $(LIBPWDGRP_DEFINE1-y)
LIBRARY_DEFINE-a+=$(LIBPWDGRP_DEFINE0-y) $(LIBPWDGRP_DEFINE1-y)
$(LIBPWDGRP_DIR)/$(LIBPWDGRP_AR): $(LIBPWDGRP_MOBJS0) $(LIBPWDGRP_MOBJS1)
$(AR) $(ARFLAGS) $(@) $(^)
$(LIBPWDGRP_MOBJS0): $(LIBPWDGRP_MSRC0) $(LIBPWDGRP_MOBJS0): $(LIBPWDGRP_MSRC0)
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@ $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@

View File

@ -24,6 +24,11 @@ LOGINUTILS-$(CONFIG_DELGROUP) += delgroup.o
libraries-y+=$(LOGINUTILS_DIR)$(LOGINUTILS_AR) libraries-y+=$(LOGINUTILS_DIR)$(LOGINUTILS_AR)
LOGINUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(LOGINUTILS-y))
LOGINUTILS_SRC-a:=$(wildcard $(srcdir)/*.c)
APPLET_SRC-y+=$(LOGINUTILS_SRC-y)
APPLET_SRC-a+=$(LOGINUTILS_SRC-a)
needcrypt-y:= needcrypt-y:=
needcrypt-$(CONFIG_LOGIN) := y needcrypt-$(CONFIG_LOGIN) := y
needcrypt-$(CONFIG_PASSWD) := y needcrypt-$(CONFIG_PASSWD) := y
@ -33,7 +38,7 @@ needcrypt-$(CONFIG_VLOCK) := y
ifeq ($(needcrypt-y),y) ifeq ($(needcrypt-y),y)
LIBRARIES += -lcrypt LIBRARIES := -lcrypt $(filter-out -lcrypt,$(LIBRARIES))
endif endif
$(LOGINUTILS_DIR)$(LOGINUTILS_AR): $(patsubst %,$(LOGINUTILS_DIR)%, $(LOGINUTILS-y)) $(LOGINUTILS_DIR)$(LOGINUTILS_AR): $(patsubst %,$(LOGINUTILS_DIR)%, $(LOGINUTILS-y))

View File

@ -33,11 +33,16 @@ MISCUTILS-$(CONFIG_WATCHDOG) += watchdog.o
libraries-y+=$(MISCUTILS_DIR)$(MISCUTILS_AR) libraries-y+=$(MISCUTILS_DIR)$(MISCUTILS_AR)
MISCUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(MISCUTILS-y))
MISCUTILS_SRC-a:=$(wildcard $(srcdir)/*.c)
APPLET_SRC-y+=$(MISCUTILS_SRC-y)
APPLET_SRC-a+=$(MISCUTILS_SRC-a)
needlibm-y:= needlibm-y:=
needlibm-$(CONFIG_DC) := y needlibm-$(CONFIG_DC) := y
ifeq ($(needlibm-y),y) ifeq ($(needlibm-y),y)
LIBRARIES += -lm LIBRARIES := -lm $(filter-out -lm,$(LIBRARIES))
endif endif
$(MISCUTILS_DIR)$(MISCUTILS_AR): $(patsubst %,$(MISCUTILS_DIR)%, $(MISCUTILS-y)) $(MISCUTILS_DIR)$(MISCUTILS_AR): $(patsubst %,$(MISCUTILS_DIR)%, $(MISCUTILS-y))

View File

@ -18,6 +18,11 @@ MODUTILS-$(CONFIG_RMMOD) += rmmod.o
libraries-y+=$(MODUTILS_DIR)$(MODUTILS_AR) libraries-y+=$(MODUTILS_DIR)$(MODUTILS_AR)
MODUTILS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(MODUTILS-y))
MODUTILS_SRC-a:=$(wildcard $(srcdir)/*.c)
APPLET_SRC-y+=$(MODUTILS_SRC-y)
APPLET_SRC-a+=$(MODUTILS_SRC-a)
$(MODUTILS_DIR)$(MODUTILS_AR): $(patsubst %,$(MODUTILS_DIR)%, $(MODUTILS-y)) $(MODUTILS_DIR)$(MODUTILS_AR): $(patsubst %,$(MODUTILS_DIR)%, $(MODUTILS-y))
$(AR) $(ARFLAGS) $@ $(patsubst %,$(MODUTILS_DIR)%, $(MODUTILS-y)) $(AR) $(ARFLAGS) $@ $(patsubst %,$(MODUTILS_DIR)%, $(MODUTILS-y))

View File

@ -9,6 +9,7 @@ ifndef $(NETWORKING_DIR)
NETWORKING_DIR:=$(top_builddir)/networking/ NETWORKING_DIR:=$(top_builddir)/networking/
endif endif
srcdir=$(top_srcdir)/networking srcdir=$(top_srcdir)/networking
NETWORKING-y:= NETWORKING-y:=
NETWORKING-$(CONFIG_ARPING) += arping.o NETWORKING-$(CONFIG_ARPING) += arping.o
NETWORKING-$(CONFIG_ETHER_WAKE) += ether-wake.o NETWORKING-$(CONFIG_ETHER_WAKE) += ether-wake.o
@ -41,13 +42,22 @@ NETWORKING-$(CONFIG_VCONFIG) += vconfig.o
NETWORKING-$(CONFIG_WGET) += wget.o NETWORKING-$(CONFIG_WGET) += wget.o
NETWORKING-$(CONFIG_ZCIP) += zcip.o NETWORKING-$(CONFIG_ZCIP) += zcip.o
NETWORKING-y:=$(sort $(NETWORKING-y))
libraries-y+=$(NETWORKING_DIR)$(NETWORKING_AR) libraries-y+=$(NETWORKING_DIR)$(NETWORKING_AR)
NETWORKING_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(NETWORKING-y))
NETWORKING_SRC-a:=$(wildcard $(srcdir)/*.c)
APPLET_SRC-y+=$(NETWORKING_SRC-y)
APPLET_SRC-a+=$(NETWORKING_SRC-a)
LIBRARY_DEFINE-y+= -I$(top_srcdir)/networking
LIBRARY_DEFINE-a+= -I$(top_srcdir)/networking
needcrypt-y:= needcrypt-y:=
needcrypt-$(CONFIG_FEATURE_HTTPD_AUTH_MD5) := y needcrypt-$(CONFIG_FEATURE_HTTPD_AUTH_MD5) := y
ifeq ($(needcrypt-y),y) ifeq ($(needcrypt-y),y)
LIBRARIES += -lcrypt LIBRARIES := -lcrypt $(filter-out -lcrypt,$(LIBRARIES))
endif endif
$(NETWORKING_DIR)$(NETWORKING_AR): $(patsubst %,$(NETWORKING_DIR)%, $(NETWORKING-y)) $(NETWORKING_DIR)$(NETWORKING_AR): $(patsubst %,$(NETWORKING_DIR)%, $(NETWORKING-y))

View File

@ -2,27 +2,16 @@
# #
# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org> # Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
# #
# This program is free software; you can redistribute it and/or modify # Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# #
LIBIPROUTE_AR:=libiproute.a LIBIPROUTE_AR:=libiproute.a
ifndef $(LIBIPROUTE_DIR) ifndef $(LIBIPROUTE_DIR)
LIBIPROUTE_DIR:=$(top_builddir)/networking/libiproute/ LIBIPROUTE_DIR:=$(top_builddir)/networking/libiproute
endif endif
srcdir=$(top_srcdir)/networking/libiproute srcdir=$(top_srcdir)/networking/libiproute
LIBIPROUTE-y:=
LIBIPROUTE-$(CONFIG_IP) += \ LIBIPROUTE-$(CONFIG_IP) += \
ip_parse_common_args.o \ ip_parse_common_args.o \
ipaddress.o \ ipaddress.o \
@ -74,11 +63,31 @@ LIBIPROUTE-$(CONFIG_IPTUNNEL) += \
rt_names.o \ rt_names.o \
utils.o utils.o
libraries-y+=$(LIBIPROUTE_DIR)$(LIBIPROUTE_AR) LIBIPROUTE-y:=$(sort $(LIBIPROUTE-y))
$(LIBIPROUTE_DIR)$(LIBIPROUTE_AR): $(patsubst %,$(LIBIPROUTE_DIR)%, $(LIBIPROUTE-y)) LIBIPROUTE_SRC-y:=$(patsubst %,$(srcdir)/%,$(subst .o,.c,$(LIBIPROUTE-y)))
$(AR) $(ARFLAGS) $@ $(patsubst %,$(LIBIPROUTE_DIR)%, $(LIBIPROUTE-y)) LIBIPROUTE_SRC-a:=$(wildcard $(srcdir)/*.c)
LIBRARY_SRC-y+=$(LIBIPROUTE_SRC-y)
LIBRARY_SRC-a+=$(LIBIPROUTE_SRC-a)
$(LIBIPROUTE_DIR)%.o: $(srcdir)/%.c LIBIPROUTE-obj:=$(LIBIPROUTE_DIR)/$(LIBIPROUTE_AR)
# We do not need to build an empty non-pic object/archive
ifneq ($(strip $(LIBIPROUTE-y)),)
libraries-y+=$(LIBIPROUTE_DIR)/$(LIBIPROUTE_AR)
endif
# If we are building libbusybox.so _and_ we will use it ourselves then we
# keep it as small as possible
ifeq ($(strip $(CONFIG_FEATURE_SHARED_BUSYBOX)),y)
ifneq ($(strip $(LIBIPROUTE-y)),)
libraries-m+=$(LIBIPROUTE-multi-pic)
endif
endif
$(LIBIPROUTE_DIR)/$(LIBIPROUTE_AR): $(patsubst %,$(LIBIPROUTE_DIR)/%,$(LIBIPROUTE-y))
$(AR) $(ARFLAGS) $@ $(^)
$(LIBIPROUTE_DIR)/%.o: $(srcdir)/%.c
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $< $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<

View File

@ -2,19 +2,7 @@
# #
# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org> # Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
# #
# This program is free software; you can redistribute it and/or modify # Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# #
UDHCP_AR:=udhcp.a UDHCP_AR:=udhcp.a
@ -24,10 +12,10 @@ endif
srcdir=$(top_srcdir)/networking/udhcp srcdir=$(top_srcdir)/networking/udhcp
#ok, so I forgot how to do an or, but this is a quick and dirty hack #ok, so I forgot how to do an or, but this is a quick and dirty hack
ifeq ($(CONFIG_UDHCPC), y) ifeq ($(strip $(CONFIG_UDHCPC)),y)
CONFIG_UDHCP_SHARED=y CONFIG_UDHCP_SHARED=y
else else
ifeq ($(CONFIG_UDHCPD), y) ifeq ($(strip $(CONFIG_UDHCPD)),y)
CONFIG_UDHCP_SHARED=y CONFIG_UDHCP_SHARED=y
else else
CONFIG_UDHCP_SHARED=n CONFIG_UDHCP_SHARED=n
@ -42,10 +30,20 @@ UDHCP-$(CONFIG_UDHCPC) += dhcpc.c clientpacket.c clientsocket.c \
UDHCP-$(CONFIG_UDHCPD) += dhcpd.c arpping.c files.c leases.c \ UDHCP-$(CONFIG_UDHCPD) += dhcpd.c arpping.c files.c leases.c \
serverpacket.c static_leases.c serverpacket.c static_leases.c
UDHCP-$(CONFIG_DUMPLEASES) += dumpleases.c UDHCP-$(CONFIG_DUMPLEASES) += dumpleases.c
UDHCP_OBJS=$(patsubst %.c,$(UDHCP_DIR)%.o, $(UDHCP-y)) UDHCP_OBJS:=$(patsubst %.c,$(UDHCP_DIR)%.o, $(UDHCP-y))
libraries-y+=$(UDHCP_DIR)$(UDHCP_AR) libraries-y+=$(UDHCP_DIR)$(UDHCP_AR)
UDHCP-y:=$(patsubst %,$(srcdir)/%,$(UDHCP-y))
UDHCP-a:=$(wildcard $(srcdir)/*.c)
APPLET_SRC-y+=$(UDHCP-y)
APPLET_SRC-a+=$(UDHCP-a)
UDHCP_INCLUDES:=$(srcdir)
APPLETS_DEFINE-y+=-DIN_BUSYBOX -I$(UDHCP_INCLUDES)
APPLETS_DEFINE-a+=-DIN_BUSYBOX -I$(UDHCP_INCLUDES)
$(UDHCP_DIR)$(UDHCP_AR): $(UDHCP_OBJS) $(UDHCP_DIR)$(UDHCP_AR): $(UDHCP_OBJS)
$(AR) $(ARFLAGS) $@ $(UDHCP_OBJS) $(AR) $(ARFLAGS) $@ $(UDHCP_OBJS)

View File

@ -23,6 +23,11 @@ PROCPS-$(CONFIG_FUSER) += fuser.o
libraries-y+=$(PROCPS_DIR)$(PROCPS_AR) libraries-y+=$(PROCPS_DIR)$(PROCPS_AR)
PROCPS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(PROCPS-y))
PROCPS_SRC-a:=$(wildcard $(srcdir)/*.c)
APPLET_SRC-y+=$(PROCPS_SRC-y)
APPLET_SRC-a+=$(PROCPS_SRC-a)
$(PROCPS_DIR)$(PROCPS_AR): $(patsubst %,$(PROCPS_DIR)%, $(PROCPS-y)) $(PROCPS_DIR)$(PROCPS_AR): $(patsubst %,$(PROCPS_DIR)%, $(PROCPS-y))
$(AR) $(ARFLAGS) $@ $(patsubst %,$(PROCPS_DIR)%, $(PROCPS-y)) $(AR) $(ARFLAGS) $@ $(patsubst %,$(PROCPS_DIR)%, $(PROCPS-y))

View File

@ -19,6 +19,11 @@ SHELLT-$(CONFIG_FEATURE_COMMAND_EDITING) += cmdedit.o
libraries-y+=$(SHELL_DIR)$(SHELL_AR) libraries-y+=$(SHELL_DIR)$(SHELL_AR)
SHELLT_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(SHELLT-y))
SHELLT_SRC-a:=$(wildcard $(srcdir)/*.c)
APPLET_SRC-y+=$(SHELLT_SRC-y)
APPLET_SRC-a+=$(SHELLT_SRC-a)
$(SHELL_DIR)$(SHELL_AR): $(patsubst %,$(SHELL_DIR)%, $(SHELLT-y)) $(SHELL_DIR)$(SHELL_AR): $(patsubst %,$(SHELL_DIR)%, $(SHELLT-y))
$(AR) $(ARFLAGS) $@ $(patsubst %,$(SHELL_DIR)%, $(SHELLT-y)) $(AR) $(ARFLAGS) $@ $(patsubst %,$(SHELL_DIR)%, $(SHELLT-y))

View File

@ -164,6 +164,35 @@ config CONFIG_STATIC
Most people will leave this set to 'N'. Most people will leave this set to 'N'.
config CONFIG_BUILD_LIBBUSYBOX
bool "Build shared libbusybox"
default y
help
Build a shared library libbusybox.so which contains all
libraries used inside busybox.
config CONFIG_FEATURE_FULL_LIBBUSYBOX
bool "Feature-complete libbusybox"
default n if !CONFIG_FEATURE_SHARED_BUSYBOX
depends on CONFIG_BUILD_LIBBUSYBOX
help
Build a libbusybox with the complete feature-set, disregarding
the actually selected config.
Normally, libbusybox will only contain the features which are
used by busybox itself. If you plan to write a separate
standalone application which uses libbusybox say 'Y'.
Say 'N' if in doubt.
config CONFIG_FEATURE_SHARED_BUSYBOX
bool "Use shared libbusybox for busybox"
default y if CONFIG_BUILD_LIBBUSYBOX
depends on !CONFIG_STATIC && CONFIG_BUILD_LIBBUSYBOX
help
Use libbusybox.so also for busybox itself.
You need to have a working dynamic linker to use this variant.
config CONFIG_LFS config CONFIG_LFS
bool "Build with Large File Support (for accessing files > 2 GB)" bool "Build with Large File Support (for accessing files > 2 GB)"
default n default n
@ -203,6 +232,25 @@ config EXTRA_CFLAGS_OPTIONS
if you want to add some simple compiler switches (like -march=i686), if you want to add some simple compiler switches (like -march=i686),
or check for warnings using -Werror, just those options here. or check for warnings using -Werror, just those options here.
config CONFIG_BUILD_AT_ONCE
bool "Compile all sources at once"
default n
help
Normally each source-file is compiled with one invocation of
the compiler.
If you set this option, all sources are compiled at once.
This gives the compiler more opportunities to optimize which can
result in smaller and/or faster binaries.
Setting this option will consume alot of memory, e.g. if you
enable all applets with all features, gcc uses more than 300MB
RAM during compilation of busybox.
This option is most likely only beneficial for newer compilers
such as gcc-4.1 and above.
Say 'N' unless you know what you are doing.
config CONFIG_FEATURE_SUSv2 config CONFIG_FEATURE_SUSv2
bool "Enable features that are in SuSv2 but not SuSv3?" bool "Enable features that are in SuSv2 but not SuSv3?"
default y default y
@ -216,7 +264,9 @@ config CONFIG_FEATURE_SUSv2_OBSOLETE
depends on CONFIG_FEATURE_SUSv2 depends on CONFIG_FEATURE_SUSv2
default y default y
help help
Disables support for numeric arguments in fold. Enable pre- SuSv2 features which are deprecated in SuSv2 and
above.
Disables support for e.g. numeric arguments in fold.
endmenu endmenu
@ -264,26 +314,24 @@ config PREFIX
help help
Define your directory to install BusyBox files/subdirs in. Define your directory to install BusyBox files/subdirs in.
endmenu endmenu
source archival/Config.in source archival/Config.in
source coreutils/Config.in source coreutils/Config.in
source console-tools/Config.in source console-tools/Config.in
source debianutils/Config.in source debianutils/Config.in
source e2fsprogs/Config.in
source editors/Config.in source editors/Config.in
source findutils/Config.in source findutils/Config.in
source init/Config.in source init/Config.in
source loginutils/Config.in source loginutils/Config.in
source miscutils/Config.in source e2fsprogs/Config.in
source modutils/Config.in source modutils/Config.in
source util-linux/Config.in
source miscutils/Config.in
source networking/Config.in source networking/Config.in
source procps/Config.in source procps/Config.in
source shell/Config.in source shell/Config.in
source sysklogd/Config.in source sysklogd/Config.in
source util-linux/Config.in
menu 'Debugging Options' menu 'Debugging Options'

View File

@ -18,6 +18,11 @@ SYSKLOGD-$(CONFIG_SYSLOGD) += syslogd.o
libraries-y+=$(SYSKLOGD_DIR)$(SYSKLOGD_AR) libraries-y+=$(SYSKLOGD_DIR)$(SYSKLOGD_AR)
SYSKLOGD_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(SYSKLOGD-y))
SYSKLOGD_SRC-a:=$(wildcard $(srcdir)/*.c)
APPLET_SRC-y+=$(SYSKLOGD_SRC-y)
APPLET_SRC-a+=$(SYSKLOGD_SRC-a)
$(SYSKLOGD_DIR)$(SYSKLOGD_AR): $(patsubst %,$(SYSKLOGD_DIR)%, $(SYSKLOGD-y)) $(SYSKLOGD_DIR)$(SYSKLOGD_AR): $(patsubst %,$(SYSKLOGD_DIR)%, $(SYSKLOGD-y))
$(AR) $(ARFLAGS) $@ $(patsubst %,$(SYSKLOGD_DIR)%, $(SYSKLOGD-y)) $(AR) $(ARFLAGS) $@ $(patsubst %,$(SYSKLOGD_DIR)%, $(SYSKLOGD-y))

View File

@ -37,8 +37,14 @@ UTILLINUX-$(CONFIG_SWAPONOFF) +=swaponoff.o
UTILLINUX-$(CONFIG_SWITCH_ROOT) +=switch_root.o UTILLINUX-$(CONFIG_SWITCH_ROOT) +=switch_root.o
UTILLINUX-$(CONFIG_UMOUNT) +=umount.o UTILLINUX-$(CONFIG_UMOUNT) +=umount.o
libraries-y+=$(UTILLINUX_DIR)$(UTILLINUX_AR) libraries-y+=$(UTILLINUX_DIR)$(UTILLINUX_AR)
UTILLINUX_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(UTILLINUX-y))
UTILLINUX_SRC-a:=$(wildcard $(srcdir)/*.c)
APPLET_SRC-y+=$(UTILLINUX_SRC-y)
APPLET_SRC-a+=$(UTILLINUX_SRC-a)
$(UTILLINUX_DIR)$(UTILLINUX_AR): $(patsubst %,$(UTILLINUX_DIR)%, $(UTILLINUX-y)) $(UTILLINUX_DIR)$(UTILLINUX_AR): $(patsubst %,$(UTILLINUX_DIR)%, $(UTILLINUX-y))
$(AR) $(ARFLAGS) $@ $(patsubst %,$(UTILLINUX_DIR)%, $(UTILLINUX-y)) $(AR) $(ARFLAGS) $@ $(patsubst %,$(UTILLINUX_DIR)%, $(UTILLINUX-y))