- 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
@./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
echo "CONFIG_FEATURE_SHARED_BUSYBOX=y" >> .config
@./scripts/config/conf -o $(CONFIG_CONFIG_IN)
allnoconfig: scripts/config/conf
@ -207,19 +208,102 @@ all: busybox busybox.links doc
# In this section, we need .config
-include $(top_builddir)/.config.cmd
include $(patsubst %,%/Makefile.in, $(SRC_DIRS))
-include $(top_builddir)/.depend
endif # ifneq ($(strip $(HAVE_DOT_CONFIG)),y)
busybox: .depend $(libraries-y)
$(CC) $(EXTRA_CFLAGS) $(LDFLAGS) -o $@ -Wl,--start-group $(libraries-y) $(LIBRARIES) -Wl,--end-group
-include $(top_builddir)/.config
-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) $@
busybox.links: $(top_srcdir)/applets/busybox.mkll include/bb_config.h $(top_srcdir)/include/applets.h
- $(SHELL) $^ >$@
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)
@echo
@echo
@ -232,8 +316,13 @@ ifeq ($(strip $(CONFIG_FEATURE_SUID)),y)
endif
uninstall: busybox.links
rm -f $(PREFIX)/bin/busybox
for i in `cat busybox.links` ; do rm -f $(PREFIX)$$i; done
$(RM_F) $(PREFIX)/bin/busybox
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
KBUILD_VERBOSE :=
@ -244,13 +333,14 @@ ifdef V
endif
ifneq ($(strip $(KBUILD_VERBOSE)),)
CHECK_VERBOSE := -v
# ARFLAGS+=v
endif
check test: busybox
bindir=$(top_builddir) srcdir=$(top_srcdir)/testsuite \
$(top_srcdir)/testsuite/runtest $(CHECK_VERBOSE)
sizes:
-rm -f busybox
-$(RM_F) busybox
$(MAKE) top_srcdir=$(top_srcdir) top_builddir=$(top_builddir) \
-f $(top_srcdir)/Makefile STRIPCMD=/bin/true
$(NM) --size-sort busybox
@ -278,14 +368,14 @@ docs/BusyBox.1: docs/busybox.pod
docs/BusyBox.html: docs/busybox.net/BusyBox.html
- mkdir -p docs
-@ rm -f docs/BusyBox.html
-@ $(RM_F) docs/BusyBox.html
-@ cp docs/busybox.net/BusyBox.html docs/BusyBox.html
docs/busybox.net/BusyBox.html: docs/busybox.pod
-@ mkdir -p docs/busybox.net
- pod2html --noindex $< > \
docs/busybox.net/BusyBox.html
-@ rm -f pod2htm*
-@ $(RM_F) pod2htm*
# The nifty new buildsystem stuff
scripts/bb_mkdep: $(top_srcdir)/scripts/bb_mkdep.c
@ -302,7 +392,7 @@ endif
depend dep: .depend
.depend: scripts/bb_mkdep $(DEP_INCLUDES)
@rm -f .depend
@$(RM_F) .depend
@mkdir -p include/config
scripts/bb_mkdep -c include/config.h -c include/bb_config.h \
-I $(top_srcdir)/include $(top_srcdir) > $@.tmp
@ -323,22 +413,24 @@ include/bb_config.h: include/config.h
clean:
- $(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 pod2htm* *.gdb *.elf *~ core .*config.log \
docs/BusyBox.txt docs/BusyBox.1 docs/BusyBox.html \
docs/busybox.net/BusyBox.html busybox.links libbb/loop.h \
$(DO_INSTALL_LIBS) $(LIBBUSYBOX_SONAME) \
.config.old busybox
- rm -rf _install testsuite/links
- find . -name .\*.flags -exec rm -f {} \;
- find . -name \*.o -exec rm -f {} \;
- find . -name \*.a -exec rm -f {} \;
- find . -name .\*.flags -exec $(RM_F) {} \;
- find . -name \*.o -exec $(RM_F) {} \;
- find . -name \*.a -exec $(RM_F) {} \;
- find . -name \*.so -exec $(RM_F) {} \;
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
- find . -name .depend -exec rm -f {} \;
rm -f .config .config.old .config.cmd
- find . -name .depend -exec $(RM_F) {} \;
$(RM_F) .config .config.old .config.cmd
release: distclean #doc
cd ..; \
@ -353,7 +445,7 @@ release: distclean #doc
find $(PROG)-$(VERSION)/ -type f \
-name .\#* \
-print \
-exec rm -f {} \; ; \
-exec $(RM_F) {} \; ; \
\
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")
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
@ -125,6 +126,8 @@ endif
CFLAGS+=$(call check_gcc,-funsigned-char,)
CFLAGS+=$(call check_gcc,-mmax-stack-frame=256,)
#--------------------------------------------------------
# Arch specific compiler optimization stuff should go here.
# 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
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
ifeq ($(strip $(TARGET_ARCH)),arm)
OPTIMIZATION+=-fstrict-aliasing
OPTIMIZATION+=$(call check_gcc,-msingle-pic-base,)
endif
ifeq ($(strip $(TARGET_ARCH)),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,-falign-functions=0 -falign-jumps=0 -falign-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
OPTIMIZATIONS:=$(OPTIMIZATION) -fomit-frame-pointer
@ -173,11 +199,17 @@ ifeq ($(strip $(CONFIG_DEBUG)),y)
STRIPCMD:=/bin/true -Not_stripping_since_we_are_debugging
else
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
endif
ifeq ($(strip $(CONFIG_STATIC)),y)
LDFLAGS += --static
#else
# LIBRARIES += -ldl
endif
ifeq ($(strip $(CONFIG_BUILD_LIBBUSYBOX)),y)
CFLAGS_PIC:= -fPIC #-DPIC
endif
ifeq ($(strip $(CONFIG_SELINUX)),y)

View File

@ -10,8 +10,11 @@ APPLETS_DIR:=$(top_builddir)/applets/
endif
srcdir=$(top_srcdir)/applets
APPLET_SRC:=applets.c busybox.c
APPLET_OBJ:= $(patsubst %.c,$(APPLETS_DIR)%.o, $(APPLET_SRC))
APPLET_SRC:= $(patsubst %,$(srcdir)/%,applets.c busybox.c)
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)

View File

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

View File

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

View File

@ -3,8 +3,8 @@
export LC_ALL=POSIX
export LC_CTYPE=POSIX
prefix=$1
if [ "$prefix" = "" ]; then
prefix=${1}
if [ -z "$prefix" ]; then
echo "No installation directory, aborting."
exit 1;
fi
@ -16,7 +16,22 @@ case "$2" in
*) echo "Unknown install option: $2"; exit 1;;
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
mkdir -p $prefix/bin || 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)
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))
$(AR) $(ARFLAGS) $@ $(patsubst %,$(ARCHIVAL_DIR)%, $(ARCHIVAL-y))
$(AR) $(ARFLAGS) $@ $(^)
$(ARCHIVAL_DIR)%.o: $(srcdir)/%.c
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<

View File

@ -2,27 +2,20 @@
#
# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
#
# This program is free software; you can redistribute it and/or modify
# 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
# Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
#
LIBUNARCHIVE_AR:=libunarchive.a
ifndef $(LIBUNARCHIVE_DIR)
LIBUNARCHIVE_DIR:=$(top_builddir)/archival/libunarchive/
LIBUNARCHIVE_DIR:=$(top_builddir)/archival/libunarchive
endif
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:= \
\
data_skip.o \
@ -74,12 +67,17 @@ LIBUNARCHIVE-$(CONFIG_FEATURE_TAR_COMPRESS) += decompress_uncompress.o
LIBUNARCHIVE-$(CONFIG_UNCOMPRESS) += decompress_uncompress.o
LIBUNARCHIVE-$(CONFIG_UNZIP) += $(GUNZIP_FILES)
libraries-y+=$(LIBUNARCHIVE_DIR)$(LIBUNARCHIVE_AR)
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 $@ $<

View File

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

View File

@ -81,7 +81,12 @@ COREUTILS-$(CONFIG_WHO) += who.o
COREUTILS-$(CONFIG_WHOAMI) += whoami.o
COREUTILS-$(CONFIG_YES) += yes.o
COREUTILS-y:=$(sort $(COREUTILS-y))
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))
$(AR) $(ARFLAGS) $@ $(patsubst %,$(COREUTILS_DIR)%, $(COREUTILS-y))

View File

@ -2,36 +2,51 @@
#
# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
#
# This program is free software; you can redistribute it and/or modify
# 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
# Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
#
LIBCOREUTILS_AR:=libcoreutils.a
ifndef $(LIBCOREUTILS_DIR)
LIBCOREUTILS_DIR:=$(top_builddir)/coreutils/libcoreutils/
LIBCOREUTILS_DIR:=$(top_builddir)/coreutils/libcoreutils
endif
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)
$(AR) $(ARFLAGS) $@ $(LIBCOREUTILS_OBJS)
LIBCOREUTILS_SRC-y:=$(patsubst %,$(srcdir)/%,$(subst .o,.c,$(LIBCOREUTILS-y)))
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 $@ $<

View File

@ -19,6 +19,10 @@ DEBIANUTILS-$(CONFIG_START_STOP_DAEMON) += start_stop_daemon.o
DEBIANUTILS-$(CONFIG_WHICH) += which.o
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))
$(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_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))
$(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_SED) += sed.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)
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-$(CONFIG_FEATURE_AWK_MATH) := y
ifeq ($(needlibm-y),y)
LIBRARIES += -lm
LIBRARIES := -lm $(filter-out -lm,$(LIBRARIES))
endif
$(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)
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))
$(AR) $(ARFLAGS) $@ $(patsubst %,$(FINDUTILS_DIR)%, $(FINDUTILS-y))

View File

@ -86,7 +86,7 @@
#define MAX(a,b) (((a)>(b))?(a):(b))
#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_and_die(const char *s, ...) __attribute__ ((noreturn, 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_REBOOT) += reboot.o
ifeq ($(CONFIG_HALT), y)
ifeq ($(strip $(CONFIG_HALT)),y)
CONFIG_INIT_SHARED=y
else
ifeq ($(CONFIG_INIT), y)
ifeq ($(strip $(CONFIG_INIT)),y)
CONFIG_INIT_SHARED=y
else
ifeq ($(CONFIG_POWEROFF), y)
ifeq ($(strip $(CONFIG_POWEROFF)),y)
CONFIG_INIT_SHARED=y
else
ifeq ($(CONFIG_REBOOT), y)
ifeq ($(strip $(CONFIG_REBOOT)),y)
CONFIG_INIT_SHARED=y
else
CONFIG_INIT_SHARED=n
@ -35,12 +35,17 @@ endif
endif
endif
ifeq ($(CONFIG_INIT_SHARED), y)
ifeq ($(strip $(CONFIG_INIT_SHARED)),y)
INIT-$(CONFIG_INIT_SHARED) += init_shared.o
endif
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))
$(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.
LIBBB_AR:=libbb.a
ifndef $(LIBBB_DIR)
LIBBB_DIR:=$(top_builddir)/libbb/
LIBBB_DIR:=$(top_builddir)/libbb
endif
srcdir=$(top_srcdir)/libbb
LIBBB_SRC-y:= \
LIBBB-n:=
LIBBB-y:= \
bb_asprintf.c ask_confirmation.c change_identity.c chomp.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 \
@ -36,10 +36,14 @@ LIBBB_SRC-y:= \
warn_ignoring_args.c concat_subpath_file.c vfork_daemon_rexec.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_MOBJ0:=full_version.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 \
msg_standard_input.o msg_standard_output.o shell_file.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_MOBJ1:=xmalloc.o xrealloc.o xcalloc.o xstrdup.o xstrndup.o \
xfopen.o xopen.o xread.o xread_all.o xread_char.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_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_MOBJ3:=xgetularg_bnd_sfx.o xgetlarg_bnd_sfx.o getlarg10_sfx.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_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_MOBJ5:=bb_xgetpwnam.o bb_xgetgrnam.o bb_getgrgid.o bb_getpwuid.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_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_MOBJS2) $(LIBBB_MOBJS3) $(LIBBB_MOBJS4) $(LIBBB_MOBJS5) \
$(LIBBB_MOBJS6)
$(AR) $(ARFLAGS) $(@) $(LIBBB_OBJS) $(^)
LIBBB_ALL_MSRC:=$(LIBBB_MSRC0) $(LIBBB_MSRC1) $(LIBBB_MSRC2) $(LIBBB_MSRC3) \
$(LIBBB_MSRC4) $(LIBBB_MSRC5) $(LIBBB_MSRC6)
$(LIBBB_DIR)%.o: $(srcdir)/%.c
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<
LIBBB-y:=$(sort $(LIBBB-y) $(LIBBB_ALL_MSRC))
$(LIBBB_MOBJS0): $(LIBBB_MSRC0)
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@
LIBBB_AR:=$(LIBBB_DIR)/libbb.a
libraries-y+=$(LIBBB_AR)
$(LIBBB_MOBJS1): $(LIBBB_MSRC1)
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@
needcrypt-y:=
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)
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@
ifeq ($(needcrypt-y),y)
LIBRARIES := -lcrypt $(filter-out -lcrypt,$(LIBRARIES))
endif
$(LIBBB_MOBJS3): $(LIBBB_MSRC3)
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@
# all 1:1 objects
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)
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@
LIBBB_SRC-a:=$(wildcard $(srcdir)/*.c)
LIBRARY_SRC-y+=$(LIBBB-y)
LIBRARY_SRC-a+=$(LIBBB_SRC-a)
$(LIBBB_MOBJS6): $(LIBBB_MSRC6)
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@
# all defines needed for 1:N objects
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;
if ((mountTable = setmntent(table ? : bb_path_mtab_file, "r")) == 0)
if ((mountTable = setmntent(table ? table : bb_path_mtab_file, "r")) == 0)
return 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. */
break;
if (stat(mountEntry->mnt_fsname, &s) == 0 && s.st_rdev == mountDevice) /* Match the device. */

View File

@ -6,10 +6,15 @@
LIBPWDGRP_AR:=libpwdgrp.a
ifndef $(LIBPWDGRP_DIR)
LIBPWDGRP_DIR:=$(top_builddir)/libpwdgrp/
LIBPWDGRP_DIR:=$(top_builddir)/libpwdgrp
endif
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_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 \
getpwent_r.o getgrent_r.o getpwent.o getgrent.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_MOBJ1-$(CONFIG_USE_BB_PWD_GRP):= __parsepwent.o __parsegrent.o \
__pgsreader.o fgetspent_r.o fgetspent.o sgetspent_r.o getspnam_r.o \
getspnam.o getspent_r.o getspent.o sgetspent.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)
$(AR) $(ARFLAGS) $@ $(LIBPWDGRP_MOBJS0) $(LIBPWDGRP_MOBJS1)
LIBPWDGRP_SRC-y:=$(LIBPWDGRP_MSRC0)
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)
$(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)
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-$(CONFIG_LOGIN) := y
needcrypt-$(CONFIG_PASSWD) := y
@ -33,7 +38,7 @@ needcrypt-$(CONFIG_VLOCK) := y
ifeq ($(needcrypt-y),y)
LIBRARIES += -lcrypt
LIBRARIES := -lcrypt $(filter-out -lcrypt,$(LIBRARIES))
endif
$(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)
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-$(CONFIG_DC) := y
ifeq ($(needlibm-y),y)
LIBRARIES += -lm
LIBRARIES := -lm $(filter-out -lm,$(LIBRARIES))
endif
$(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)
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))
$(AR) $(ARFLAGS) $@ $(patsubst %,$(MODUTILS_DIR)%, $(MODUTILS-y))

View File

@ -9,6 +9,7 @@ ifndef $(NETWORKING_DIR)
NETWORKING_DIR:=$(top_builddir)/networking/
endif
srcdir=$(top_srcdir)/networking
NETWORKING-y:=
NETWORKING-$(CONFIG_ARPING) += arping.o
NETWORKING-$(CONFIG_ETHER_WAKE) += ether-wake.o
@ -41,13 +42,22 @@ NETWORKING-$(CONFIG_VCONFIG) += vconfig.o
NETWORKING-$(CONFIG_WGET) += wget.o
NETWORKING-$(CONFIG_ZCIP) += zcip.o
NETWORKING-y:=$(sort $(NETWORKING-y))
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-$(CONFIG_FEATURE_HTTPD_AUTH_MD5) := y
ifeq ($(needcrypt-y),y)
LIBRARIES += -lcrypt
LIBRARIES := -lcrypt $(filter-out -lcrypt,$(LIBRARIES))
endif
$(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>
#
# This program is free software; you can redistribute it and/or modify
# 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
# Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
#
LIBIPROUTE_AR:=libiproute.a
ifndef $(LIBIPROUTE_DIR)
LIBIPROUTE_DIR:=$(top_builddir)/networking/libiproute/
LIBIPROUTE_DIR:=$(top_builddir)/networking/libiproute
endif
srcdir=$(top_srcdir)/networking/libiproute
LIBIPROUTE-y:=
LIBIPROUTE-$(CONFIG_IP) += \
ip_parse_common_args.o \
ipaddress.o \
@ -74,11 +63,31 @@ LIBIPROUTE-$(CONFIG_IPTUNNEL) += \
rt_names.o \
utils.o
libraries-y+=$(LIBIPROUTE_DIR)$(LIBIPROUTE_AR)
LIBIPROUTE-y:=$(sort $(LIBIPROUTE-y))
$(LIBIPROUTE_DIR)$(LIBIPROUTE_AR): $(patsubst %,$(LIBIPROUTE_DIR)%, $(LIBIPROUTE-y))
$(AR) $(ARFLAGS) $@ $(patsubst %,$(LIBIPROUTE_DIR)%, $(LIBIPROUTE-y))
LIBIPROUTE_SRC-y:=$(patsubst %,$(srcdir)/%,$(subst .o,.c,$(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 $@ $<

View File

@ -2,19 +2,7 @@
#
# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
#
# This program is free software; you can redistribute it and/or modify
# 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
# Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
#
UDHCP_AR:=udhcp.a
@ -24,10 +12,10 @@ endif
srcdir=$(top_srcdir)/networking/udhcp
#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
else
ifeq ($(CONFIG_UDHCPD), y)
ifeq ($(strip $(CONFIG_UDHCPD)),y)
CONFIG_UDHCP_SHARED=y
else
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 \
serverpacket.c static_leases.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)
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)
$(AR) $(ARFLAGS) $@ $(UDHCP_OBJS)

View File

@ -23,6 +23,11 @@ PROCPS-$(CONFIG_FUSER) += fuser.o
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))
$(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)
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))
$(AR) $(ARFLAGS) $@ $(patsubst %,$(SHELL_DIR)%, $(SHELLT-y))

View File

@ -164,6 +164,35 @@ config CONFIG_STATIC
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
bool "Build with Large File Support (for accessing files > 2 GB)"
default n
@ -203,6 +232,25 @@ config EXTRA_CFLAGS_OPTIONS
if you want to add some simple compiler switches (like -march=i686),
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
bool "Enable features that are in SuSv2 but not SuSv3?"
default y
@ -216,7 +264,9 @@ config CONFIG_FEATURE_SUSv2_OBSOLETE
depends on CONFIG_FEATURE_SUSv2
default y
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
@ -264,26 +314,24 @@ config PREFIX
help
Define your directory to install BusyBox files/subdirs in.
endmenu
source archival/Config.in
source coreutils/Config.in
source console-tools/Config.in
source debianutils/Config.in
source e2fsprogs/Config.in
source editors/Config.in
source findutils/Config.in
source init/Config.in
source loginutils/Config.in
source miscutils/Config.in
source e2fsprogs/Config.in
source modutils/Config.in
source util-linux/Config.in
source miscutils/Config.in
source networking/Config.in
source procps/Config.in
source shell/Config.in
source sysklogd/Config.in
source util-linux/Config.in
menu 'Debugging Options'

View File

@ -18,6 +18,11 @@ SYSKLOGD-$(CONFIG_SYSLOGD) += syslogd.o
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))
$(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_UMOUNT) +=umount.o
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))
$(AR) $(ARFLAGS) $@ $(patsubst %,$(UTILLINUX_DIR)%, $(UTILLINUX-y))