summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter S. Mazinger <ps.m@gmx.net>2005-10-25 22:17:39 +0000
committerPeter S. Mazinger <ps.m@gmx.net>2005-10-25 22:17:39 +0000
commita80fc77b658a7883df95ac41ad83ac9ff7c8ff07 (patch)
tree3edbcb812b876e0ba1424b229d50e9c04a2b0d4a
parent7ce8f67d27885ea6b1cba2c43e5edc9f1dc17f0f (diff)
All Makefile.in's. Only arm/i386/mips/powerpc/x86_64 are done, the other archs lack proper crt1. The Makefiles in extra/scripts are intended to be linked into each dir, where it is necessary to build locally.
-rw-r--r--Makefile.in392
-rw-r--r--Makefile.libs109
-rw-r--r--Makerules265
-rw-r--r--Rules.mak5
-rw-r--r--extra/scripts/Makefile.libs.lvl113
-rw-r--r--extra/scripts/Makefile.libs.lvl213
-rw-r--r--extra/scripts/Makefile.objs.lvl213
-rw-r--r--extra/scripts/Makefile.objs.lvl313
-rw-r--r--extra/scripts/Makefile.objs.lvl413
-rw-r--r--ldso/Makefile.in45
-rw-r--r--ldso/ldso/Makefile.in39
-rw-r--r--ldso/libdl/Makefile.in57
-rw-r--r--libc/Makefile.in57
-rw-r--r--libc/inet/Makefile.in72
-rw-r--r--libc/inet/rpc/Makefile.in50
-rw-r--r--libc/misc/Makefile.in36
-rw-r--r--libc/misc/assert/Makefile.in26
-rw-r--r--libc/misc/ctype/Makefile.in56
-rw-r--r--libc/misc/dirent/Makefile.in28
-rw-r--r--libc/misc/error/Makefile.in25
-rw-r--r--libc/misc/file/Makefile.in27
-rw-r--r--libc/misc/fnmatch/Makefile.in24
-rw-r--r--libc/misc/ftw/Makefile.in38
-rw-r--r--libc/misc/glob/Makefile.in30
-rw-r--r--libc/misc/gnu/Makefile.in26
-rw-r--r--libc/misc/internals/Makefile.in41
-rw-r--r--libc/misc/intl/Makefile.in33
-rw-r--r--libc/misc/locale/Makefile.in61
-rw-r--r--libc/misc/mntent/Makefile.in26
-rw-r--r--libc/misc/pthread/Makefile.in26
-rw-r--r--libc/misc/regex/Makefile.in26
-rw-r--r--libc/misc/search/Makefile.in66
-rw-r--r--libc/misc/statfs/Makefile.in28
-rw-r--r--libc/misc/syslog/Makefile.in26
-rw-r--r--libc/misc/sysvipc/Makefile.in62
-rw-r--r--libc/misc/time/Makefile.in69
-rw-r--r--libc/misc/ttyent/Makefile.in25
-rw-r--r--libc/misc/utmp/Makefile.in26
-rw-r--r--libc/misc/wchar/Makefile.in49
-rw-r--r--libc/misc/wctype/Makefile.in50
-rw-r--r--libc/misc/wordexp/Makefile.in25
-rw-r--r--libc/pwd_grp/Makefile.in48
-rw-r--r--libc/signal/Makefile.in36
-rw-r--r--libc/stdio/Makefile.in143
-rw-r--r--libc/stdlib/Makefile.in122
-rw-r--r--libc/stdlib/malloc-simple/Makefile.in31
-rw-r--r--libc/stdlib/malloc-standard/Makefile.in33
-rw-r--r--libc/stdlib/malloc/Makefile.in42
-rw-r--r--libc/string/Makefile.in95
-rw-r--r--libc/string/arm/Makefile.in28
-rw-r--r--libc/string/frv/Makefile.in28
-rw-r--r--libc/string/generic/Makefile.in34
-rw-r--r--libc/string/i386/Makefile.in36
-rw-r--r--libc/string/mips/Makefile.in27
-rw-r--r--libc/string/powerpc/Makefile.in34
-rw-r--r--libc/string/sh64/Makefile.in28
-rw-r--r--libc/string/sparc/Makefile.in28
-rw-r--r--libc/string/x86_64/Makefile.in28
-rw-r--r--libc/sysdeps/Makefile.in8
-rw-r--r--libc/sysdeps/linux/Makefile.in10
-rw-r--r--libc/sysdeps/linux/arm/Makefile.in38
-rw-r--r--libc/sysdeps/linux/common/Makefile.in52
-rw-r--r--libc/sysdeps/linux/i386/Makefile.in39
-rw-r--r--libc/sysdeps/linux/mips/Makefile.in42
-rw-r--r--libc/sysdeps/linux/powerpc/Makefile.in38
-rw-r--r--libc/sysdeps/linux/x86_64/Makefile.in38
-rw-r--r--libc/termios/Makefile.in41
-rw-r--r--libc/unistd/Makefile.in51
-rw-r--r--libcrypt/Makefile.in29
-rw-r--r--libintl/Makefile.in40
-rw-r--r--libm/Makefile.in86
-rw-r--r--libm/powerpc/Makefile.in25
-rw-r--r--libnsl/Makefile.in29
-rw-r--r--libpthread/Makefile.in57
-rw-r--r--libpthread/linuxthreads/Makefile.in59
-rw-r--r--libpthread/linuxthreads/sysdeps/sh64/Makefile.in33
-rw-r--r--libpthread/linuxthreads_db/Makefile.in33
-rw-r--r--libresolv/Makefile.in29
-rw-r--r--librt/Makefile.in29
-rw-r--r--libutil/Makefile.in30
80 files changed, 3476 insertions, 292 deletions
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 000000000..95479231d
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,392 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+#--------------------------------------------------------------
+# You shouldn't need to mess with anything beyond this point...
+#--------------------------------------------------------------
+noconfig_targets := menuconfig config oldconfig randconfig \
+ defconfig allyesconfig allnoconfig clean distclean \
+ release tags
+
+TOPDIR=./
+
+top_srcdir=$(TOPDIR)
+top_builddir=./
+include $(top_builddir)Rules.mak
+
+# need to have libc.so built, before we can build the others
+ifeq ($(HAVE_SHARED),y)
+PRE_DIRS = ldso libc
+DIRS = ldso libcrypt libresolv libnsl libutil librt
+else
+PRE_DIRS = libc
+DIRS = libcrypt libresolv libnsl libutil librt
+endif
+ifeq ($(UCLIBC_HAS_FLOATS),y)
+ DIRS += libm
+endif
+ifeq ($(UCLIBC_HAS_THREADS),y)
+ DIRS += libpthread
+endif
+ifeq ($(UCLIBC_HAS_GETTEXT_AWARENESS),y)
+ DIRS += libintl
+endif
+
+ifeq ($(HAVE_DOT_CONFIG),y)
+
+all: finished
+
+# In this section, we need .config
+-include .config.cmd
+
+finished: subdirs
+ $(SECHO)
+ $(SECHO) Finally finished compiling ...
+ $(SECHO)
+
+include/bits/uClibc_config.h: .config
+ @if [ ! -x $(top_builddir)extra/config/conf ] ; then \
+ $(MAKE) -C $(top_builddir)extra/config conf; \
+ fi
+ $(RM) -r $(top_builddir)include/bits
+ $(INSTALL) -d $(top_builddir)include/bits
+ @$(top_builddir)extra/config/conf -o $(top_srcdir)extra/Configs/Config.in
+
+# For the moment, we have to keep re-running this target
+# because the fix includes scripts rely on pre-processers
+# in order to generate the headers correctly :(. That
+# means we can't use the $(HOSTCC) in order to get the
+# correct output.
+ifeq ($(ARCH_HAS_MMU),y)
+export header_extra_args =
+else
+export header_extra_args = -n
+endif
+headers: $(top_srcdir)include/bits/uClibc_config.h
+ @$(SHELL_SET_X); \
+ $(top_srcdir)extra/scripts/fix_includes.sh \
+ -k $(KERNEL_SOURCE) -t $(TARGET_ARCH) \
+ $(header_extra_args)
+ @cd $(top_builddir)include/bits; \
+ set -e; \
+ for i in `ls ../../libc/sysdeps/linux/common/bits/*.h` ; do \
+ $(LN) -fs $$i .; \
+ done; \
+ if [ -d ../../libc/sysdeps/linux/$(TARGET_ARCH)/bits ] ; then \
+ for i in `ls ../../libc/sysdeps/linux/$(TARGET_ARCH)/bits/*.h` ; do \
+ $(LN) -fs $$i .; \
+ done; \
+ fi
+ @cd $(top_builddir)include/sys; \
+ set -e; \
+ for i in `ls ../../libc/sysdeps/linux/common/sys/*.h` ; do \
+ $(LN) -fs $$i .; \
+ done; \
+ if [ -d ../../libc/sysdeps/linux/$(TARGET_ARCH)/sys ] ; then \
+ for i in `ls ../../libc/sysdeps/linux/$(TARGET_ARCH)/sys/*.h` ; do \
+ $(LN) -fs $$i .; \
+ done; \
+ fi
+ @cd $(top_builddir); \
+ set -e; \
+ $(SHELL_SET_X); \
+ TOPDIR=. CC="$(CC)" /bin/sh extra/scripts/gen_bits_syscall_h.sh > include/bits/sysnum.h.new; \
+ if cmp include/bits/sysnum.h include/bits/sysnum.h.new >/dev/null 2>&1; then \
+ $(RM) include/bits/sysnum.h.new; \
+ else \
+ $(RM) include/bits/sysnum.h; \
+ mv -f include/bits/sysnum.h.new include/bits/sysnum.h; \
+ fi
+ifeq ($(UCLIBC_HAS_THREADS),y)
+ $(MAKE) -C libpthread threads_headers
+endif
+ $(MAKE) -C libc/sysdeps/linux/common common_headers
+ $(MAKE) -C libc/sysdeps/linux/$(TARGET_ARCH) arch_headers
+
+# Command used to download source code
+WGET:=wget --passive-ftp
+
+LOCALE_DATA_FILENAME:=uClibc-locale-030818.tgz
+
+pregen: headers
+ifeq ($(UCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA),y)
+ (cd $(top_builddir)extra/locale; \
+ if [ ! -f $(LOCALE_DATA_FILENAME) ] ; then \
+ $(WGET) http://www.uclibc.org/downloads/$(LOCALE_DATA_FILENAME) ; \
+ fi )
+endif
+ifeq ($(UCLIBC_PREGENERATED_LOCALE_DATA),y)
+ (cd $(top_builddir)extra/locale; zcat $(LOCALE_DATA_FILENAME) | tar -xvf -)
+ $(MAKE) -C $(top_srcdir)extra/locale pregen
+endif
+
+pre_subdirs: $(patsubst %, _pre_dir_%, $(PRE_DIRS))
+$(patsubst %, _pre_dir_%, $(PRE_DIRS)): pregen
+ $(MAKE) -C $(patsubst _pre_dir_%, %, $@)
+
+subdirs: $(patsubst %, _dir_%, $(DIRS))
+$(patsubst %, _dir_%, $(DIRS)): pre_subdirs
+ $(MAKE) -C $(patsubst _dir_%, %, $@)
+
+install: install_runtime install_dev finished2
+
+
+RUNTIME_PREFIX_LIB_FROM_DEVEL_PREFIX_LIB=$(shell $(top_srcdir)extra/scripts/relative_path.sh $(DEVEL_PREFIX)lib $(RUNTIME_PREFIX)lib)
+
+# Installs header files.
+install_headers:
+ $(INSTALL) -d $(PREFIX)$(DEVEL_PREFIX)include
+ if [ "$(KERNEL_SOURCE)" == "$(DEVEL_PREFIX)" ] ; then \
+ extra_exclude="--exclude include/linux --exclude include/asm'*'" ; \
+ else \
+ extra_exclude="" ; \
+ fi ; \
+ tar -chf - include --exclude .svn --exclude CVS $$extra_exclude \
+ | tar -xf - -C $(PREFIX)$(DEVEL_PREFIX)
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/ssp-internal.h
+ifneq ($(UCLIBC_HAS_FLOATS),y)
+ # Remove floating point related headers since float support is disabled.
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/complex.h
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/fpu_control.h
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/ieee754.h
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/math.h
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/tgmath.h
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/bits/uClibc_fpmax.h
+endif
+ifneq ($(UCLIBC_HAS_WCHAR),y)
+ # Remove wide char headers since wide char support is disabled.
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/wctype.h
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/wchar.h
+endif
+ifneq ($(UCLIBC_HAS_LOCALE),y)
+ # Remove iconv header since locale support is disabled.
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/iconv.h
+endif
+ifneq ($(UCLIBC_HAS_GLIBC_CUSTOM_PRINTF),y)
+ # Remove printf header since custom print specifier support is disabled.
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/printf.h
+endif
+ifneq ($(UCLIBC_HAS_XLOCALE),y)
+ # Remove xlocale header since extended locale support is disabled.
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/xlocale.h
+endif
+ifneq ($(UCLIBC_HAS_GETTEXT_AWARENESS),y)
+ # Remove libintl header since gettext support is disabled.
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/libintl.h
+endif
+ifneq ($(UCLIBC_HAS_REGEX),y)
+ # Remove regex headers since regex support is disabled.
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/regex.h
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/regexp.h
+endif
+ifneq ($(UCLIBC_HAS_WORDEXP),y)
+ # Remove wordexp header since wordexp support is disabled.
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/wordexp.h
+endif
+ifneq ($(UCLIBC_HAS_FTW),y)
+ # Remove ftw header since ftw support is disabled.
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/ftw.h
+endif
+ifneq ($(UCLIBC_HAS_GLOB),y)
+ # Remove glob header since glob support is disabled.
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/glob.h
+endif
+ifneq ($(UCLIBC_HAS_GNU_GETOPT),y)
+ # Remove getopt header since gnu getopt support is disabled.
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/getopt.h
+endif
+ifneq ($(HAS_SHADOW),y)
+ # Remove shadow header since shadow password support is disabled.
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/shadow.h
+endif
+ifneq ($(PTHREADS_DEBUG_SUPPORT),y)
+ # Remove thread_db header since thread debug support is disabled.
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/thread_db.h
+endif
+ifneq ($(UCLIBC_HAS_THREADS),y)
+ # Remove pthread headers since thread support is disabled.
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/*thread*.h
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/semaphore.h
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/bits/*thread*.h
+endif
+ -@for i in `find $(PREFIX)$(DEVEL_PREFIX) -type d` ; do \
+ chmod 755 $$i; chmod 644 $$i/*.h > /dev/null 2>&1; \
+ done
+ -find $(PREFIX)$(DEVEL_PREFIX) -name .svn | xargs $(RM) -r
+ -chown -R `id | sed 's/^uid=\([0-9]*\).*gid=\([0-9]*\).*$$/\1:\2/'` $(PREFIX)$(DEVEL_PREFIX)
+
+# Installs development library links.
+install_dev: install_headers
+ $(INSTALL) -d $(PREFIX)$(DEVEL_PREFIX)lib
+ -$(INSTALL) -m 644 lib/*.[ao] $(PREFIX)$(DEVEL_PREFIX)lib/
+ifeq ($(HAVE_SHARED),y)
+ for i in `find lib/ -type l -name 'lib[a-zA-Z]*.so' | \
+ sed -e 's/lib\///'` ; do \
+ $(LN) -sf $(RUNTIME_PREFIX_LIB_FROM_DEVEL_PREFIX_LIB)$$i.$(MAJOR_VERSION) \
+ $(PREFIX)$(DEVEL_PREFIX)lib/$$i; \
+ done
+ if [ -f $(top_builddir)lib/libc.so -a -f $(PREFIX)$(RUNTIME_PREFIX)lib/$(SHARED_MAJORNAME) ] ; then \
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)lib/libc.so; \
+ sed -e '/^GROUP/d' $(top_builddir)lib/libc.so > $(PREFIX)$(DEVEL_PREFIX)lib/libc.so; \
+ fi
+ifeq ($(COMPAT_ATEXIT),y)
+ if [ -f $(top_builddir)lib/libc.so -a -f $(PREFIX)$(RUNTIME_PREFIX)lib/$(SHARED_MAJORNAME) ] ; then \
+ echo "GROUP ( $(DEVEL_PREFIX)lib/$(NONSHARED_LIBNAME) $(RUNTIME_PREFIX)lib/$(SHARED_MAJORNAME) )" \
+ >> $(PREFIX)$(DEVEL_PREFIX)lib/libc.so; \
+ fi
+else
+ if [ -f $(top_builddir)lib/libc.so -a -f $(PREFIX)$(RUNTIME_PREFIX)lib/$(SHARED_MAJORNAME) ] ; then \
+ echo "GROUP ( $(RUNTIME_PREFIX)lib/$(SHARED_MAJORNAME) $(DEVEL_PREFIX)lib/$(NONSHARED_LIBNAME) )" \
+ >> $(PREFIX)$(DEVEL_PREFIX)lib/libc.so; \
+ fi
+endif
+ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
+ $(LN) -sf $(RUNTIME_PREFIX_LIB_FROM_DEVEL_PREFIX_LIB)libthread_db.so.1 \
+ $(PREFIX)$(DEVEL_PREFIX)lib/libthread_db.so
+endif
+# # If we build shared libraries then the static libs are PIC...
+# # Make _pic.a symlinks to make mklibs.py and similar tools happy.
+ if [ -d lib ] ; then \
+ for i in `find lib/ -type f -name 'lib*.a' | sed -e 's/lib\///'` ; do \
+ $(LN) -sf $$i $(PREFIX)$(DEVEL_PREFIX)lib/`echo $$i \
+ | sed -e 's/\.a$$/_pic.a/'`; \
+ done ; \
+ fi
+endif
+
+# Installs run-time libraries
+install_runtime:
+ifeq ($(HAVE_SHARED),y)
+ $(INSTALL) -d $(PREFIX)$(RUNTIME_PREFIX)lib
+ $(INSTALL) -m 644 lib/lib*-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so \
+ $(PREFIX)$(RUNTIME_PREFIX)lib
+ cp -dRf lib/*.so.* $(PREFIX)$(RUNTIME_PREFIX)lib
+ @if [ -x lib/ld-uClibc-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so ] ; then \
+ set -e; \
+ $(SHELL_SET_X); \
+ $(INSTALL) -m 755 lib/ld-uClibc-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so \
+ $(PREFIX)$(RUNTIME_PREFIX)lib; \
+ fi
+endif
+
+utils:
+ $(MAKE) CROSS="$(CROSS)" CC="$(CC)" -C utils
+
+# Installs helper applications, such as 'ldd' and 'ldconfig'
+install_utils: utils
+ $(MAKE) CROSS="$(CROSS)" CC="$(CC)" -C utils install
+
+finished2:
+ $(SECHO)
+ $(SECHO) Finished installing ...
+ $(SECHO)
+
+else # ifeq ($(HAVE_DOT_CONFIG),y)
+
+all: menuconfig
+
+# configuration
+# ---------------------------------------------------------------------------
+extra/config/conf:
+ $(MAKE) -C extra/config conf
+
+extra/config/mconf:
+ $(MAKE) -C extra/config ncurses mconf
+
+menuconfig: extra/config/mconf
+ $(RM) -r include/bits
+ $(INSTALL) -d include/bits
+ @./extra/config/mconf extra/Configs/Config.in
+ $(MAKE) headers
+
+config: extra/config/conf
+ $(RM) -r include/bits
+ $(INSTALL) -d include/bits
+ @./extra/config/conf extra/Configs/Config.in
+
+oldconfig: extra/config/conf
+ $(RM) -r include/bits
+ $(INSTALL) -d include/bits
+ @./extra/config/conf -o extra/Configs/Config.in
+
+randconfig: extra/config/conf
+ $(RM) -r include/bits
+ $(INSTALL) -d include/bits
+ @./extra/config/conf -r extra/Configs/Config.in
+
+allyesconfig: extra/config/conf
+ $(RM) -r include/bits
+ $(INSTALL) -d include/bits
+ @./extra/config/conf -y extra/Configs/Config.in
+ sed -i -e "s/^DODEBUG=.*/# DODEBUG is not set/" .config
+ sed -i -e "s/^DOASSERTS=.*/# DOASSERTS is not set/" .config
+ sed -i -e "s/^SUPPORT_LD_DEBUG_EARLY=.*/# SUPPORT_LD_DEBUG_EARLY is not set/" .config
+ sed -i -e "s/^SUPPORT_LD_DEBUG=.*/# SUPPORT_LD_DEBUG is not set/" .config
+ sed -i -e "s/^UCLIBC_MJN3_ONLY=.*/# UCLIBC_MJN3_ONLY is not set/" .config
+ @./extra/config/conf -o extra/Configs/Config.in
+
+allnoconfig: extra/config/conf
+ $(RM) -r include/bits
+ $(INSTALL) -d include/bits
+ @./extra/config/conf -n extra/Configs/Config.in
+
+defconfig: extra/config/conf
+ $(RM) -r include/bits
+ $(INSTALL) -d include/bits
+ @./extra/config/conf -d extra/Configs/Config.in
+
+clean:
+ @$(RM) -r lib include/bits
+ $(RM) lib*/*.a ldso/*/*.a
+ $(RM) libc/misc/locale/locale_data.c
+ $(RM) libc/misc/internals/interp.c
+ $(RM) include/fpu_control.h
+ $(MAKE) -C extra/locale clean
+ $(MAKE) -C ldso ldso_headers_clean
+ $(MAKE) -C libpthread threads_headers_clean
+ $(MAKE) -C test clean
+ $(MAKE) -C utils clean
+ @set -e; \
+ for i in `(cd $(top_builddir)libc/sysdeps/linux/common/sys; ls *.h)` ; do \
+ $(RM) include/sys/$$i; \
+ done; \
+ if [ -d libc/sysdeps/linux/$(TARGET_ARCH)/sys ] ; then \
+ for i in `(cd libc/sysdeps/linux/$(TARGET_ARCH)/sys; ls *.h)` ; do \
+ $(RM) include/sys/$$i; \
+ done; \
+ fi
+ @$(RM) include/linux include/asm*
+ @if [ -d libc/sysdeps/linux/$(TARGET_ARCH) ]; then \
+ $(MAKE) -C libc/sysdeps/linux/$(TARGET_ARCH) clean; \
+ fi
+ -find . \( -name \*.o -o -name \*.os -o -name \*.oS \) -exec $(RM) {} \;
+
+distclean: clean
+ -find . \( -name core -o -name \*.orig -o -name \*~ -o -name .\#\* \) -exec $(RM) {} \;
+ $(RM) .config .config.old .config.cmd
+ $(RM) extra/locale/*.txt
+ $(MAKE) -C extra clean
+
+release: distclean
+ cd ..; \
+ $(RM) -r uClibc-$(VERSION); \
+ cp -dRf uClibc uClibc-$(VERSION); \
+ find uClibc-$(VERSION)/ -type f \
+ -name .\#* -exec $(RM) -r {} \; ; \
+ find uClibc-$(VERSION)/ -type d \
+ -name .svn -exec $(RM) -r {} \; ; \
+ \
+ tar -cvzf uClibc-$(VERSION).tar.gz uClibc-$(VERSION)/
+
+endif # ifeq ($(HAVE_DOT_CONFIG),y)
+
+include $(top_srcdir)Makerules
+
+check:
+ $(MAKE) -C test
+
+.PHONY: dummy subdirs release distclean clean config oldconfig menuconfig utils
diff --git a/Makefile.libs b/Makefile.libs
deleted file mode 100644
index 970127076..000000000
--- a/Makefile.libs
+++ /dev/null
@@ -1,109 +0,0 @@
-# Makefile for uClibc
-#
-# Copyright (C) 2002-2003 Erik Andersen <andersen@uclibc.org>
-#
-# Licensed under LGPL v2.1, see the file COPYING.LIB in this tarball for details.
-#
-
-#LIB_NAME:=libsome
-
-ifneq ($(strip $(LIB_NAME)),)
-
-ifeq ($(strip $(srcdir)),)
-srcdir=$(top_srcdir)$(LIB_NAME)
-endif
-ifeq ($(strip $($(LIB_NAME)_DIR)),)
-$(LIB_NAME)_DIR:=$(top_builddir)$(LIB_NAME)
-endif
-ifeq ($(strip $($(LIB_NAME)_FULL_NAME)),)
-$(LIB_NAME)_FULL_NAME:=$(LIB_NAME)-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so
-endif
-
-ifeq ($(strip $($(LIB_NAME)_SRC)),)
-ifeq ($(strip $($(LIB_NAME)_MSRC)),)
-$(LIB_NAME)_SRC:=$(wildcard $(srcdir)/*.c)
-endif
-endif
-ifeq ($(strip $($(LIB_NAME)_OBJ)),)
-$(LIB_NAME)_OBJ:=$(patsubst $(srcdir)/%.c,$($(LIB_NAME)_DIR)/%.o,$($(LIB_NAME)_SRC))
-endif
-$(LIB_NAME)_OBJ_PIC:=$(patsubst %.o,%.os,$($(LIB_NAME)_OBJ))
-
-$(LIB_NAME)_MOBJ_PIC:=$(patsubst %.o,%.os,$($(LIB_NAME)_MOBJ))
-
-$(LIB_NAME)_SOBJ_PIC:=$(patsubst %.o,%.os,$($(LIB_NAME)_SOBJ))
-
-#libso-y+=$(top_builddir)lib/$(LIB_NAME).so
-#liba-y+=$(top_builddir)lib/$(LIB_NAME).a
-#libclean-y+=$(LIB_NAME)_clean
-
-$($(LIB_NAME)_OBJ): %.o : %.c
- $(compile.c)
-
-$($(LIB_NAME)_OBJ_PIC): %.os : %.c
- $(compile.c) $(PICFLAG)
-
-$($(LIB_NAME)_MOBJ): $($(LIB_NAME)_MSRC)
- $(compile.m)
-
-$($(LIB_NAME)_MOBJ_PIC): $($(LIB_NAME)_MSRC)
- $(compile.m) $(PICFLAG)
-
-$($(LIB_NAME)_SOBJ): %.o : %.S
- $(compile.S)
-
-$($(LIB_NAME)_SOBJ_PIC): %.os : %.S
- $(compile.S) $(PICFLAG)
-
-# this should be changed to .os after libc/misc/internals/ is done
-libc:=$(top_builddir)lib/libc.so
-interp:=$(top_builddir)libc/misc/internals/interp.o
-ifeq ($(strip $(EXTRA_LINK_LIBS)),)
-#EXTRA_LINK_LIBS:=$(interp) -L$(top_builddir)lib -lc $(LDADD_LIBFLOAT) $(LIBGCC)
-EXTRA_LINK_LIBS:=$(interp) $(libc) $(LDADD_LIBFLOAT) $(LIBGCC)
-endif
-
-$(top_builddir)lib/$(LIB_NAME).so: $($(LIB_NAME)_DIR)/$(LIB_NAME)_pic.a $(interp) $(libc)
- $(INSTALL) -d $(top_builddir)lib
- $(RM) $@ $@.$(MAJOR_VERSION) $(top_builddir)lib/$($(LIB_NAME)_FULL_NAME)
- $(LD) $(LDFLAGS) $(EXTRA_LINK_OPTS) -soname=$(notdir $@).$(MAJOR_VERSION) \
- -o $(top_builddir)lib/$($(LIB_NAME)_FULL_NAME) $(SHARED_START_FILES) \
- --whole-archive $(firstword $^) --no-whole-archive \
- $(EXTRA_LINK_LIBS) $(SHARED_END_FILES)
- $(LN) -sf $($(LIB_NAME)_FULL_NAME) $@.$(MAJOR_VERSION)
- $(LN) -sf $($(LIB_NAME)_FULL_NAME) $@
-
-$(top_builddir)lib/$(LIB_NAME).so1: $($(LIB_NAME)_OBJ_PIC) $($(LIB_NAME)_MOBJ_PIC) $($(LIB_NAME)_SOBJ_PIC) $($(LIB_NAME)_SO_ADD)
- $(INSTALL) -d $(top_builddir)lib
- $(RM) $@ $@.$(MAJOR_VERSION) $(top_builddir)lib/$($(LIB_NAME)_FULL_NAME)
- $(LD) $(LDFLAGS) $(EXTRA_LINK_OPTS) -soname=$(notdir $@).$(MAJOR_VERSION) \
- -o $(top_builddir)lib/$($(LIB_NAME)_FULL_NAME) $(SHARED_START_FILES) $^ \
- $(EXTRA_LINK_LIBS) $(SHARED_END_FILES)
- $(LN) -sf $($(LIB_NAME)_FULL_NAME) $@.$(MAJOR_VERSION)
- $(LN) -sf $($(LIB_NAME)_FULL_NAME) $@
-
-$($(LIB_NAME)_DIR)/$(LIB_NAME)_pic.a: $($(LIB_NAME)_OBJ_PIC) $($(LIB_NAME)_MOBJ_PIC) $($(LIB_NAME)_SOBJ_PIC) $($(LIB_NAME)_SO_ADD)
-ifneq ($(strip $(STRIP_FLAGS)),)
- $(STRIPTOOL) $(STRIP_FLAGS) $^
-else
- $(STRIPTOOL) -x -R .note -R .comment $^
-endif
- $(AR) $(ARFLAGS) $@ $^
-
-ifeq ($(DOPIC),y)
-$(top_builddir)lib/$(LIB_NAME).a: $($(LIB_NAME)_DIR)/$(LIB_NAME)_pic.a
- $(RM) $@
- cp $< $@
-else
-$(top_builddir)lib/$(LIB_NAME).a: $($(LIB_NAME)_OBJ) $($(LIB_NAME)_MOBJ) $($(LIB_NAME)_SOBJ) $($(LIB_NAME)_A_ADD)
- $(RM) $@
- $(STRIPTOOL) -x -R .note -R .comment $^
- $(AR) $(ARFLAGS) $@ $^
-endif
-
-$(LIB_NAME)_clean:
- rm -f $($(LIB_NAME)_DIR)/*.{o,os,a}
-
-endif
-
-include $(top_srcdir)Makerules
diff --git a/Makerules b/Makerules
index e165bf531..36bee2840 100644
--- a/Makerules
+++ b/Makerules
@@ -1,34 +1,263 @@
#
# Licensed under LGPL v2.1, see the file COPYING.LIB in this tarball for details.
#
-.SUFFIXES: .c .S .o .os .so .a .s .i
-ifndef top_srcdir
-top_srcdir=$(CURDIR)
-endif
+.SUFFIXES: .c .S .o .os .oS .so .a .s .i
-ifndef top_builddir
-top_builddir=$(CURDIR)
+ifeq ($(DOPIC),y)
+lib-a-y: $(lib-a-pic-y)
+else
+lib-a-y: $(lib-a-y)
endif
+lib-so-y: $(lib-so-y)
-top_srcdir:=$(shell echo "$(top_srcdir)/" | sed -e 's://:/:')
-top_builddir:=$(shell echo "$(top_builddir)/" | sed -e 's://:/:')
-
+# order is important, the stripping uses STRIP_FLAGS for lib-so, but not for lib-a
ifeq ($(HAVE_SHARED),y)
.LIBPATTERNS: "lib%.so"
-libs: libso-y liba-y
+libs: lib-so-y lib-a-y
else
.LIBPATTERNS: "lib%.a"
-libs: liba-y
+libs: lib-a-y
endif
-libso-y: $(libso-y)
-liba-y: $(liba-y)
-libclean-y: $(libclean-y)
+crt-y: $(crt-y)
+other-y: $(other-y)
+objclean-y: $(objclean-y)
+
+lib-multi-y: $(lib-multi-y)
+ifeq ($(DOPIC),y)
+lib-nomulti-y: $(lib-nomulti-y:.o=.os)
+else
+lib-nomulti-y: $(lib-nomulti-y) $(lib-nomulti-y:.o=.os)
+endif
-compile.c=$(CC) -c $< -o $@ $(CPPFLAGS) $(CFLAGS) $(ARCH_CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$@) $(CFLAGS-$<)
-compile.S=$(compile.c) $(S_CPPFLAGS) $(ASFLAGS) $(ARCH_ASFLAGS) $(ASFLAGS-$(suffix $@)) $(ASFLAGS-$@) $(ASFLAGS-$<)
+libc-nonshared-y: $(libc-nonshared-y)
+
+$(top_builddir)lib/$(NONSHARED_LIBNAME): $(libc-nonshared-y)
+ $(INSTALL) -d $(top_builddir)lib
+ $(AR) $(ARFLAGS) $@ $^
+
+compile.c=$(CC) -c $< -o $@ $(CPPFLAGS) $(CFLAGS) $(ARCH_CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(notdir $@)) $(CFLAGS-$(notdir $<))
+compile.S=$(compile.c) $(S_CPPFLAGS) $(ASFLAGS) $(ARCH_ASFLAGS) $(ASFLAGS-$(suffix $@)) $(ASFLAGS-$(notdir $@)) $(ASFLAGS-$(notdir $<))
compile.m=$(compile.c) -DL_$(patsubst %$(suffix $(notdir $@)),%,$(notdir $@))
-.PHONY: clean
-clean: libclean-y
+#compile.i=$(compile.m) -E
+
+compile-m=$(CC) $^ -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ARCH_CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(notdir $@)) $(CFLAGS-$(notdir $<)) $(S_CPPFLAGS) $(ASFLAGS) $(ARCH_ASFLAGS) $(ASFLAGS-$(suffix $@)) $(ASFLAGS-$(notdir $@)) $(ASFLAGS-$(notdir $<)) $(CFLAGS-multi-y)
+
+CFLAGS-.os+=$(PICFLAG)
+
+%.o: %.c
+ $(compile.c)
+
+%.os: %.c
+ $(compile.c)
+
+%.oS: %.c
+ $(compile.c) -DSHARED
+
+%.o: %.S
+ $(compile.S)
+
+%.os: %.S
+ $(compile.S)
+
+#ifeq ($(HAVE_ELF),y)
+CRT=crt1
+#else
+#CRT=crt0.o
+#endif
+
+CRTS=$(top_builddir)lib/$(CRT).o $(top_builddir)lib/S$(CRT).o
+
+$(top_builddir)lib/$(CRT).o: $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/$(CRT).S
+ $(INSTALL) -d $(dir $@)
+ $(compile.S) -DL_$(patsubst %$(suffix $(notdir $@)),%,$(notdir $@))
+ $(STRIPTOOL) -x -R .note -R .comment $@
+
+$(top_builddir)lib/S$(CRT).o: $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/$(CRT).S
+ $(INSTALL) -d $(dir $@)
+ $(compile.S) $(PIEFLAG) -DL_$(patsubst %$(suffix $(notdir $@)),%,$(notdir $@))
+ $(STRIPTOOL) -x -R .note -R .comment $@
+
+CTOR_TARGETS=$(top_builddir)lib/crti.o $(top_builddir)lib/crtn.o
+
+ifeq ($(UCLIBC_CTOR_DTOR),y)
+$(top_builddir)lib/crti.o: $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/crti.S
+ $(INSTALL) -d $(dir $@)
+ $(compile.S) $(PICFLAG) $(SSP_DISABLE_FLAGS)
+
+$(top_builddir)lib/crtn.o: $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/crtn.S
+ $(INSTALL) -d $(dir $@)
+ $(compile.S) $(PICFLAG) $(SSP_DISABLE_FLAGS)
+else
+$(CTOR_TARGETS):
+ $(INSTALL) -d $(top_builddir)lib
+ $(AR) $(ARFLAGS) $@
+endif
+
+$(crt-y): $(CRTS) $(CTOR_TARGETS)
+
+.PHONY: clean headers dummy create
+clean: objclean-y headers_clean-y
+headers: $(headers-y)
+
+headers_clean-y: $(headers_clean-y)
+
+ifneq ($(strip $(LIB_NAME)),)
+
+ifeq ($(strip $($(LIB_NAME)_FULL_NAME)),)
+$(LIB_NAME)_FULL_NAME:=$(LIB_NAME)-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so
+endif
+
+ifeq ($(DOPIC),y)
+$(LIB_NAME)-a-y: $($(LIB_NAME)-a-pic-y)
+else
+$(LIB_NAME)-a-y: $($(LIB_NAME)-a-y)
+endif
+$(LIB_NAME)-so-y: $($(LIB_NAME)-so-y)
+
+ifeq ($(HAVE_SHARED),y)
+objs: $(LIB_NAME)-a-y $(LIB_NAME)-so-y
+else
+objs: $(LIB_NAME)-a-y
+endif
+
+$($(LIB_NAME)_OUT)/$(LIB_NAME).o $($(LIB_NAME)_OUT)/$(LIB_NAME).os: $($(LIB_NAME)-multi-y)
+ $(compile-m)
+
+libc=$(top_builddir)lib/libc.so
+interp=$(top_builddir)libc/misc/internals/interp.os
+ifeq ($(strip $(EXTRA_LINK_LIBS)),)
+#EXTRA_LINK_LIBS:=$(interp) -L$(top_builddir)lib -lc $(LDADD_LIBFLOAT) $(LIBGCC)
+EXTRA_LINK_LIBS:=$(interp) $(libc) $(LDADD_LIBFLOAT) $(LIBGCC)
+endif
+
+ifneq ($(strip $(LIB_NAME)),libc)
+ifneq ($(strip $(LIB_NAME)),ld-uClibc)
+$(top_builddir)lib/$(LIB_NAME).so: $($(LIB_NAME)_OUT)/$(LIB_NAME)_so.a $(interp) $(libc)
+else
+$(top_builddir)lib/$(LIB_NAME).so: $($(LIB_NAME)_OUT)/$(LIB_NAME)_so.a
+endif
+else
+$(top_builddir)lib/$(LIB_NAME).so: $($(LIB_NAME)_OUT)/$(LIB_NAME)_so.a $(interp)
+endif
+ $(INSTALL) -d $(dir $@)
+ $(RM) $@ $@.$(MAJOR_VERSION) $(top_builddir)lib/$($(LIB_NAME)_FULL_NAME)
+ $(LD) $(LDFLAGS) $(EXTRA_LINK_OPTS) -soname=$(notdir $@).$(MAJOR_VERSION) \
+ -o $(top_builddir)lib/$($(LIB_NAME)_FULL_NAME) $(SHARED_START_FILES) \
+ --whole-archive $(firstword $^) --no-whole-archive \
+ $(EXTRA_LINK_LIBS) $(SHARED_END_FILES)
+ $(LN) -sf $($(LIB_NAME)_FULL_NAME) $@.$(MAJOR_VERSION)
+ifneq ($(strip $(LIB_NAME)),libc)
+ifneq ($(strip $(LIB_NAME)),ld-uClibc)
+ $(LN) -sf $($(LIB_NAME)_FULL_NAME) $@
+endif
+else
+ echo "/* GNU ld script" > $@
+ echo " * Use the shared library, but some functions are only in" >> $@
+ echo " * the static library, so try that secondarily. */" >> $@
+ifeq ($(COMPAT_ATEXIT),y)
+ echo "GROUP ( $(top_builddir)lib/$(NONSHARED_LIBNAME) $(top_builddir)lib/$(SHARED_MAJORNAME) )" >> $@
+else
+ echo "GROUP ( $(top_builddir)lib/$(SHARED_MAJORNAME) $(top_builddir)lib/$(NONSHARED_LIBNAME) )" >> $@
+endif
+endif
+
+$(top_builddir)lib/$(LIB_NAME).so.notused: $($(LIB_NAME)-so-y)
+ifneq ($(strip $(STRIP_FLAGS)),)
+ $(STRIPTOOL) $(STRIP_FLAGS) $^
+else
+ $(STRIPTOOL) -x -R .note -R .comment $^
+endif
+ $(INSTALL) -d $(dir $@)
+ $(RM) $@ $@.$(MAJOR_VERSION) $(top_builddir)lib/$($(LIB_NAME)_FULL_NAME)
+ $(LD) $(LDFLAGS) $(EXTRA_LINK_OPTS) -soname=$(notdir $@).$(MAJOR_VERSION) \
+ -o $(top_builddir)lib/$($(LIB_NAME)_FULL_NAME) $(SHARED_START_FILES) $^ \
+ $(EXTRA_LINK_LIBS) $(SHARED_END_FILES)
+ $(LN) -sf $($(LIB_NAME)_FULL_NAME) $@.$(MAJOR_VERSION)
+ifneq ($(strip $(LIB_NAME)),libc)
+ $(LN) -sf $($(LIB_NAME)_FULL_NAME) $@
+else
+ echo "/* GNU ld script" > $@
+ echo " * Use the shared library, but some functions are only in" >> $@
+ echo " * the static library, so try that secondarily. */" >> $@
+ifeq ($(COMPAT_ATEXIT),y)
+ echo "GROUP ( $(top_builddir)lib/$(NONSHARED_LIBNAME) $(top_builddir)lib/$(SHARED_MAJORNAME) )" >> $@
+else
+ echo "GROUP ( $(top_builddir)lib/$(SHARED_MAJORNAME) $(top_builddir)lib/$(NONSHARED_LIBNAME) )" >> $@
+endif
+endif
+
+ifeq ($(DOMULTI),y)
+
+$($(LIB_NAME)_OUT)/$(LIB_NAME)_so.a: $($(LIB_NAME)_OUT)/$(LIB_NAME).os $($(LIB_NAME)-nomulti-y:.o=.os)
+ $(RM) $@
+ifneq ($(strip $(STRIP_FLAGS)),)
+ $(STRIPTOOL) $(STRIP_FLAGS) $^
+else
+ $(STRIPTOOL) -x -R .note -R .comment $^
+endif
+ $(AR) $(ARFLAGS) $@ $^
+
+ifeq ($(DOPIC),y)
+$(top_builddir)lib/$(LIB_NAME).a: $($(LIB_NAME)_OUT)/$(LIB_NAME).os $($(LIB_NAME)-nomulti-y:.o=.os)
+else
+$(top_builddir)lib/$(LIB_NAME).a: $($(LIB_NAME)_OUT)/$(LIB_NAME).o $($(LIB_NAME)-nomulti-y)
+endif
+ $(INSTALL) -d $(dir $@)
+ $(RM) $@
+ $(STRIPTOOL) -x -R .note -R .comment $^
+ $(AR) $(ARFLAGS) $@ $^
+
+else # DOMULTI
+
+$($(LIB_NAME)_OUT)/$(LIB_NAME)_so.a: $($(LIB_NAME)-so-y)
+ $(RM) $@
+ifneq ($(strip $(STRIP_FLAGS)),)
+ $(STRIPTOOL) $(STRIP_FLAGS) $^
+else
+ $(STRIPTOOL) -x -R .note -R .comment $^
+endif
+ $(AR) $(ARFLAGS) $@ $^
+
+ifeq ($(DOPIC),y)
+$(top_builddir)lib/$(LIB_NAME).a: $($(LIB_NAME)-a-pic-y)
+else
+$(top_builddir)lib/$(LIB_NAME).a: $($(LIB_NAME)-a-y)
+endif
+ $(INSTALL) -d $(dir $@)
+ $(RM) $@
+ $(STRIPTOOL) -x -R .note -R .comment $^
+ $(AR) $(ARFLAGS) $@ $^
+
+endif # DOMULTI
+
+$(LIB_NAME)_clean:
+ rm -f $($(LIB_NAME)_OUT)/*.{o,os,a}
+
+else # LIB_NAME
+
+ifeq ($(DOPIC),y)
+libc-a-y: $(libc-a-pic-y)
+libc-nomulti-y: $(libc-nomulti-y:.o=.os)
+else
+libc-a-y: $(libc-a-y)
+libc-nomulti-y: $(libc-nomulti-y) $(libc-nomulti-y:.o=.os)
+endif
+libc-so-y: $(libc-so-y)
+
+libc-multi-y: $(libc-multi-y)
+ $(compile-m)
+
+ifeq ($(HAVE_SHARED),y)
+objs: libc-a-y libc-so-y crt-y other-y
+else
+objs: libc-a-y crt-y other-y
+endif
+
+# only for local multi testing
+libc.o libc.os: $(libc-multi-y)
+ $(compile-m)
+
+endif # LIB_NAME
diff --git a/Rules.mak b/Rules.mak
index 866febae0..c738a2831 100644
--- a/Rules.mak
+++ b/Rules.mak
@@ -340,9 +340,10 @@ endif
else
# psm: the next 2 are probably incorrect, the generic header will
# win over the arch specific one
-PTINC := -I$(PTDIR)/sysdeps/pthread \
- -I$(PTDIR)/sysdeps/$(TARGET_ARCH)
+PTINC := -I$(PTDIR)/sysdeps/$(TARGET_ARCH) \
+ -I$(PTDIR)/sysdeps/pthread
endif
+CFLAGS+=$(PTINC)
endif
ifeq ($(UCLIBC_BUILD_RELRO),y)
diff --git a/extra/scripts/Makefile.libs.lvl1 b/extra/scripts/Makefile.libs.lvl1
new file mode 100644
index 000000000..e1fda52df
--- /dev/null
+++ b/extra/scripts/Makefile.libs.lvl1
@@ -0,0 +1,13 @@
+# Makefile for uClibc
+#
+# Licensed under LGPL v2.1, see the file COPYING.LIB in this tarball for details.
+#
+
+TOPDIR=../
+
+top_srcdir=$(TOPDIR)
+top_builddir=../
+include $(top_builddir)Rules.mak
+all: libs
+include Makefile.in
+include $(top_srcdir)Makerules
diff --git a/extra/scripts/Makefile.libs.lvl2 b/extra/scripts/Makefile.libs.lvl2
new file mode 100644
index 000000000..fc3b4f1d0
--- /dev/null
+++ b/extra/scripts/Makefile.libs.lvl2
@@ -0,0 +1,13 @@
+# Makefile for uClibc
+#
+# Licensed under LGPL v2.1, see the file COPYING.LIB in this tarball for details.
+#
+
+TOPDIR=../../
+
+top_srcdir=$(TOPDIR)
+top_builddir=../../
+include $(top_builddir)Rules.mak
+all: libs
+include Makefile.in
+include $(top_srcdir)Makerules
diff --git a/extra/scripts/Makefile.objs.lvl2 b/extra/scripts/Makefile.objs.lvl2
new file mode 100644
index 000000000..8a961e4dc
--- /dev/null
+++ b/extra/scripts/Makefile.objs.lvl2
@@ -0,0 +1,13 @@
+# Makefile for uClibc
+#
+# Licensed under LGPL v2.1, see the file COPYING.LIB in this tarball for details.
+#
+
+TOPDIR=../../
+
+top_srcdir=$(TOPDIR)
+top_builddir=../../
+all: objs
+include $(top_builddir)Rules.mak
+include Makefile.in
+include $(top_srcdir)Makerules
diff --git a/extra/scripts/Makefile.objs.lvl3 b/extra/scripts/Makefile.objs.lvl3
new file mode 100644
index 000000000..b78cba738
--- /dev/null
+++ b/extra/scripts/Makefile.objs.lvl3
@@ -0,0 +1,13 @@
+# Makefile for uClibc
+#
+# Licensed under LGPL v2.1, see the file COPYING.LIB in this tarball for details.
+#
+
+TOPDIR=../../../
+
+top_srcdir=$(TOPDIR)
+top_builddir=../../../
+all: objs
+include $(top_builddir)Rules.mak
+include Makefile.in
+include $(top_srcdir)Makerules
diff --git a/extra/scripts/Makefile.objs.lvl4 b/extra/scripts/Makefile.objs.lvl4
new file mode 100644
index 000000000..65a8bf6bf
--- /dev/null
+++ b/extra/scripts/Makefile.objs.lvl4
@@ -0,0 +1,13 @@
+# Makefile for uClibc
+#
+# Licensed under LGPL v2.1, see the file COPYING.LIB in this tarball for details.
+#
+
+TOPDIR=../../../../
+
+top_srcdir=$(TOPDIR)
+top_builddir=../../../../
+all: objs
+include $(top_builddir)Rules.mak
+include Makefile.in
+include $(top_srcdir)Makerules
diff --git a/ldso/Makefile.in b/ldso/Makefile.in
new file mode 100644
index 000000000..8d3c5fcda
--- /dev/null
+++ b/ldso/Makefile.in
@@ -0,0 +1,45 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+DIRS=$(shell if test -f $(top_builddir)lib/libc.so ; then echo "ldso libdl" ; else echo "ldso" ; fi)
+
+libs: subdirs
+
+LN_HEADERS := $(patsubst %, include/%, elf.h)
+LN_ARCH_HEADERS := $(patsubst %, include/%, dl-startup.h dl-syscalls.h dl-sysdep.h dl-debug.h)
+HEADERS := $(LN_HEADERS) $(LN_ARCH_HEADERS) include/dl-progname.h
+
+headers-y+=ldso_headers
+
+ldso_headers: $(HEADERS)
+
+$(LN_HEADERS):
+ $(LN) -sf $(top_builddir)../$@ $@
+
+$(LN_ARCH_HEADERS):
+ $(LN) -sf ../ldso/$(TARGET_ARCH)/$(patsubst include/%,%,$@) $@
+
+include/dl-progname.h:
+ echo '#include "$(TARGET_ARCH)/elfinterp.c"' > $@
+
+headers_clean-y+=ldso_headers_clean
+
+ldso_headers_clean:
+ $(RM) $(HEADERS)
+
+clean: subdirs_clean ldso_headers_clean
+
+subdirs: $(patsubst %, _dir_%, $(DIRS))
+subdirs_clean: $(patsubst %, _dirclean_%, $(DIRS))
+
+$(patsubst %, _dir_%, $(DIRS)): ldso_headers
+ $(MAKE) -C $(patsubst _dir_%, %, $@)
+
+$(patsubst %, _dirclean_%, $(DIRS)): dummy
+ $(MAKE) -C $(patsubst _dirclean_%, %, $@) clean
+
+.PHONY: dummy
diff --git a/ldso/ldso/Makefile.in b/ldso/ldso/Makefile.in
index a272e771b..2ba7e2f71 100644
--- a/ldso/ldso/Makefile.in
+++ b/ldso/ldso/Makefile.in
@@ -1,13 +1,13 @@
# Makefile for uClibc
#
-# Licensed under LGPL v2.1, see the file COPYING.LIB in this tarball for details.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#
-
-LIB_NAME:=ld-uClibc
# psm: I do not know if the order of includes is relevant
# to be sure I have put them first
-CFLAGS:=-I$(top_srcdir)ldso/include -I. $(CFLAGS) $(PICFLAG) $(SSP_DISABLE_FLAGS)
+CFLAGS:=-I$(top_builddir)ldso/include -I. $(CFLAGS) $(PICFLAG) $(SSP_DISABLE_FLAGS)
CFLAGS+=-DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" -DUCLIBC_LDSO=\"$(UCLIBC_LDSO)\"
@@ -39,21 +39,32 @@ ifeq ($(SUPPORT_LD_DEBUG),y)
LDFLAGS:=$(LDFLAGS_NOSTRIP)
endif
-srcdir=$(top_srcdir)ldso/ldso
-$(LIB_NAME)_DIR:=$(top_builddir)ldso/ldso
+# useless, only 1 source file
+DOMULTI=n
+
+LIB_NAME:=ld-uClibc
-$(LIB_NAME)_SRC:=$(srcdir)/ldso.c
+ld-uClibc_DIR:=$(top_srcdir)ldso/ldso
+ld-uClibc_OUT:=$(top_builddir)ldso/ldso
-$(LIB_NAME)_SSRC:=$(wildcard $(srcdir)/$(TARGET_ARCH)/*.S)
-$(LIB_NAME)_SOBJ:=$(patsubst $(srcdir)/$(TARGET_ARCH)/%.S,$($(LIB_NAME)_DIR)/$(TARGET_ARCH)/%.o,$($(LIB_NAME)_SSRC))
+ld-uClibc_SRC:=$(ld-uClibc_DIR)/ldso.c
+ld-uClibc_OBJ:=$(patsubst $(ld-uClibc_DIR)/%.c,$(ld-uClibc_OUT)/%.o,$(ld-uClibc_SRC))
+
+ld-uClibc_SSRC:=$(wildcard $(ld-uClibc_DIR)/$(TARGET_ARCH)/*.S)
+ld-uClibc_SOBJ:=$(patsubst $(ld-uClibc_DIR)/$(TARGET_ARCH)/%.S,$(ld-uClibc_OUT)/$(TARGET_ARCH)/%.o,$(ld-uClibc_SSRC))
+
+ld-uClibc_OBJS:=$(ld-uClibc_OBJ) $(ld-uClibc_SOBJ)
EXTRA_LINK_OPTS:=-e _start -z now -Bsymbolic --export-dynamic --sort-common --discard-locals --discard-all --no-undefined
EXTRA_LINK_LIBS:=$(LIBGCC) # $(LDADD_LIBFLOAT)
-libso-$(HAVE_SHARED)+=$(top_builddir)lib/$(LIB_NAME).so
-libclean-y+=$(LIB_NAME)_clean $(LIB_NAME)_arch_clean
+ld-uClibc-so-$(HAVE_SHARED):=$(ld-uClibc_OBJS:.o=.os)
+
+#ld-uClibc-multi-$(HAVE_SHARED):=$(ld-uClibc_SRC)
+
+objclean-y+=ld-uClibc_clean ld-uClibc_arch_clean
-$(LIB_NAME)_arch_clean:
- $(RM) $($(LIB_NAME)_DIR)/*/*.{o,os}
+ld-uClibc_arch_clean:
+ $(RM) $(ld-uClibc_OUT)/*/*.{o,os}
-include $(top_srcdir)Makefile.libs
+lib-so-$(HAVE_SHARED)+=$(top_builddir)lib/ld-uClibc.so
diff --git a/ldso/libdl/Makefile.in b/ldso/libdl/Makefile.in
index 389484e9b..24a53422e 100644
--- a/ldso/libdl/Makefile.in
+++ b/ldso/libdl/Makefile.in
@@ -1,12 +1,13 @@
# Makefile.in for uClibc
#
-# Licensed under LGPL v2.1, see the file COPYING.LIB in this tarball for details.
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#
-
-LIB_NAME:=libdl
# psm: I do not know if the order of includes is relevant
-# to be sure I added them first
+# to be sure I added them first, Jocke please cleanup if needed
CFLAGS:=-I$(top_builddir)ldso/include -I$(top_builddir)ldso/ldso $(CFLAGS) $(SSP_ALL_CFLAGS)
CFLAGS+=-DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\"
@@ -20,33 +21,39 @@ ifeq ($(TARGET_ARCH),mips)
CFLAGS:=$(CFLAGS:-O0=-O1)
endif
-CFLAGS-.os=-DSHARED
-# we adapt CFLAGS, because libdl.a has an additional object
-ifeq ($(DOPIC),y)
-CFLAGS-.o=$(PICFLAG)
-resolv:=$(top_builddir)ldso/ldso/$(TARGET_ARCH)/resolve.os
-else
-resolv:=$(top_builddir)ldso/ldso/$(TARGET_ARCH)/resolve.o
-endif
+# useless, only 1 source file
+DOMULTI=n
+
+LIB_NAME:=libdl
EXTRA_LINK_OPTS:=-fini dl_cleanup
+# keep in sync w/ Makerules
+EXTRA_LINK_LIBS:=$(top_builddir)libc/misc/internals/interp.os $(top_builddir)lib/libc.so $(LIBGCC) $(top_builddir)lib/$(UCLIBC_LDSO)
+
+libdl_DIR:=$(top_srcdir)ldso/libdl
+libdl_OUT:=$(top_builddir)ldso/libdl
+
+libdl_SRC:=$(libdl_DIR)/libdl.c
+libdl_OBJ:=$(patsubst $(libdl_DIR)/%.c,$(libdl_OUT)/%.o,$(libdl_SRC))
-# we need for all cases a "full" libdl.a the pic version used to build libdl.so misses $(resolv)
-# because it is linked against ld.so
-DOPIC=n
+# use other suffixes, so that it does not pick up the multi rule from Makerules
+$(libdl_OUT)/libdl.oS: $(libdl_DIR)/libdl.c
+ $(compile.c) -DSHARED
-srcdir=$(top_srcdir)ldso/$(LIB_NAME)
-$(LIB_NAME)_DIR:=$(top_builddir)ldso/$(LIB_NAME)
+resolve:=$(top_builddir)ldso/ldso/$(TARGET_ARCH)/resolve.o
-$(LIB_NAME)_SRC:=$(srcdir)/libdl.c
+libdl-a-$(HAVE_SHARED):=$(libdl_OBJ) $(resolve)
+libdl-a-pic-$(HAVE_SHARED):=$(libdl_OBJ:.o=.os) $(resolve:.o=.os)
+libdl-so-$(HAVE_SHARED):=$(libdl_OBJ:.o=.oS)
-$(LIB_NAME)_A_ADD:=$(resolv)
+# we enable this although no use of multi, else libdl.o gets empty sources
+libdl-multi-$(HAVE_SHARED):=$(libdl_SRC)
-libso-$(HAVE_SHARED)+=$(top_builddir)lib/$(LIB_NAME).so
-liba-$(HAVE_SHARED)+=$(top_builddir)lib/$(LIB_NAME).a
-libclean-y+=$(LIB_NAME)_clean
+objclean-y+=libdl_clean libdl_extra_clean
-include $(top_srcdir)Makefile.libs
+libdl_extra_clean:
+ $(RM) $(libdl_OUT)/*.oS
-# !!! these lines have to come after including Makefile.libs !!!
-EXTRA_LINK_LIBS+=$(top_builddir)lib/$(UCLIBC_LDSO)
+lib-a-$(HAVE_SHARED)+=$(top_builddir)lib/libdl.a
+lib-a-pic-$(HAVE_SHARED)+=$(top_builddir)lib/libdl.a
+lib-so-$(HAVE_SHARED)+=$(top_builddir)lib/libdl.so
diff --git a/libc/Makefile.in b/libc/Makefile.in
new file mode 100644
index 000000000..33a1070d9
--- /dev/null
+++ b/libc/Makefile.in
@@ -0,0 +1,57 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+DOMULTI=n
+
+# we have SHARED_MAJORNAME=libc.so.$(MAJOR_VERSION) defined in Rules.mak
+LIB_NAME:=libc
+
+libc_DIR:=$(top_srcdir)libc
+libc_OUT:=$(top_builddir)libc
+
+libc_FULL_NAME:=libuClibc-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so
+
+#DIRS:=misc pwd_grp stdio string termios inet signal stdlib sysdeps unistd
+
+# this comes first, so duplicate removal works correctly
+include $(libc_DIR)/sysdeps/Makefile.in
+
+include $(libc_DIR)/misc/Makefile.in
+include $(libc_DIR)/pwd_grp/Makefile.in
+include $(libc_DIR)/stdio/Makefile.in
+include $(libc_DIR)/string/Makefile.in
+include $(libc_DIR)/termios/Makefile.in
+include $(libc_DIR)/inet/Makefile.in
+include $(libc_DIR)/signal/Makefile.in
+include $(libc_DIR)/stdlib/Makefile.in
+include $(libc_DIR)/unistd/Makefile.in
+
+# Check if the target architecture has a version script for
+# libc, and if so, include it when linking.
+VERSION_SCRIPT:=${shell if [ -f $(libc_DIR)/sysdeps/linux/$(TARGET_ARCH)/libc.map ] ; then \
+ echo "--version-script $(libc_DIR)/sysdeps/linux/$(TARGET_ARCH)/libc.map"; fi}
+
+EXTRA_LINK_OPTS:=$(VERSION_SCRIPT) -init __uClibc_init
+EXTRA_LINK_LIBS:=$(libc_OUT)/misc/internals/interp.os $(top_builddir)lib/$(UCLIBC_LDSO) $(LIBGCC) # $(LDADD_LIBFLOAT)
+
+ifeq ($(DOPIC),y)
+libc-a-y: $(libc-a-pic-y)
+else
+libc-a-y: $(libc-a-y)
+endif
+
+libc-so-y: $(libc-so-y)
+
+crt-y: $(crt-y)
+other-y: $(other-y)
+
+objclean-y+=libc_clean
+
+lib-a-y+=$(top_builddir)lib/libc.a
+lib-a-pic-y+=$(top_builddir)lib/libc.a
+lib-so-y+=$(top_builddir)lib/libc.so $(top_builddir)lib/$(NONSHARED_LIBNAME) crt-y
diff --git a/libc/inet/Makefile.in b/libc/inet/Makefile.in
new file mode 100644
index 000000000..0b5ea7cc3
--- /dev/null
+++ b/libc/inet/Makefile.in
@@ -0,0 +1,72 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+include $(top_srcdir)libc/inet/rpc/Makefile.in
+
+CSRC:= getservice.c getproto.c hostid.c getnetent.c getnetbynm.c getnetbyad.c \
+ inet_net.c ntop.c herror.c if_nametoindex.c gai_strerror.c getaddrinfo.c \
+ in6_addr.c ether_addr.c ntohl.c
+
+MSRC1:= addr.c
+MOBJ1:= inet_aton.o inet_addr.o inet_ntoa.o inet_makeaddr.o inet_lnaof.o \
+ inet_netof.o
+
+MSRC2:= resolv.c
+MOBJ2:= encodeh.o decodeh.o encoded.o decoded.o lengthd.o encodeq.o \
+ decodeq.o lengthq.o encodea.o decodea.o encodep.o decodep.o \
+ formquery.o dnslookup.o resolveaddress.o opennameservers.o \
+ closenameservers.o resolvename.o gethostbyname.o res_init.o \
+ res_query.o gethostbyaddr.o read_etc_hosts_r.o get_hosts_byname_r.o \
+ get_hosts_byaddr_r.o gethostbyname2.o getnameinfo.o gethostent.o \
+ gethostbyname_r.o gethostbyname2_r.o gethostbyaddr_r.o \
+ res_comp.o ns_name.o
+
+MSRC3:= socketcalls.c
+MOBJ3:= accept.o bind.o connect.o getpeername.o getsockname.o getsockopt.o \
+ listen.o recv.o recvfrom.o recvmsg.o send.o sendmsg.o sendto.o \
+ setsockopt.o shutdown.o socket.o socketpair.o
+
+INET_DIR:=$(top_srcdir)libc/inet
+INET_OUT:=$(top_builddir)libc/inet
+
+INET_SRC:=$(patsubst %.c,$(INET_DIR)/%.c,$(CSRC))
+INET_OBJ:=$(patsubst %.c,$(INET_OUT)/%.o,$(CSRC))
+
+INET_MSRC1:=$(INET_DIR)/$(MSRC1)
+INET_MSRC2:=$(INET_DIR)/$(MSRC2)
+INET_MSRC3:=$(INET_DIR)/$(MSRC3)
+INET_MOBJ1:=$(patsubst %.o,$(INET_OUT)/%.o,$(MOBJ1))
+INET_MOBJ2:=$(patsubst %.o,$(INET_OUT)/%.o,$(MOBJ2))
+INET_MOBJ3:=$(patsubst %.o,$(INET_OUT)/%.o,$(MOBJ3))
+
+INET_MSRC:=$(INET_MSRC1) $(INET_MSRC2) $(INET_MSRC3)
+INET_MOBJ:=$(INET_MOBJ1) $(INET_MOBJ2) $(INET_MOBJ3)
+INET_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(INET_MOBJ))))
+
+INET_OBJS:=$(INET_OBJ) $(INET_MOBJ)
+
+$(INET_MOBJ1) $(INET_MOBJ1:.o=.os): $(INET_MSRC1)
+ $(compile.m)
+
+$(INET_MOBJ2) $(INET_MOBJ2:.o=.os): $(INET_MSRC2)
+ $(compile.m)
+
+$(INET_MOBJ3) $(INET_MOBJ3:.o=.os): $(INET_MSRC3)
+ $(compile.m)
+
+libc-a-y+=$(INET_OBJS)
+libc-a-pic-y+=$(INET_OBJS:.o=.os)
+libc-so-y+=$(INET_OBJS:.o=.os)
+
+CFLAGS-multi-y+=$(INET_DEF)
+libc-multi-y+=$(INET_SRC) $(INET_MSRC)
+
+objclean-y+=inet_objclean
+
+inet_objclean:
+ $(RM) $(INET_OUT)/*.{o,os}
diff --git a/libc/inet/rpc/Makefile.in b/libc/inet/rpc/Makefile.in
new file mode 100644
index 000000000..08f4eeca2
--- /dev/null
+++ b/libc/inet/rpc/Makefile.in
@@ -0,0 +1,50 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+ifeq ($(UCLIBC_HAS_FULL_RPC),y)
+CSRC:= auth_none.c auth_unix.c authunix_prot.c bindresvport.c \
+ clnt_generic.c clnt_perror.c clnt_raw.c clnt_simple.c clnt_tcp.c \
+ clnt_udp.c rpc_dtablesize.c get_myaddress.c getrpcent.c getrpcport.c \
+ pmap_clnt.c pmap_getmaps.c pmap_getport.c pmap_prot.c \
+ pmap_prot2.c pmap_rmt.c rpc_prot.c rpc_commondata.c rpc_callmsg.c \
+ svc.c svc_auth.c svc_auth_unix.c svc_raw.c svc_run.c svc_simple.c \
+ svc_tcp.c svc_udp.c xdr.c xdr_array.c xdr_float.c xdr_mem.c \
+ xdr_rec.c xdr_reference.c xdr_stdio.c \
+ rtime.c clnt_unix.c svc_unix.c create_xid.c xdr_intXX_t.c rcmd.c \
+ rexec.c sa_len.c ruserpass.c rpc_thread.c
+else
+# For now, only compile the stuff needed to do an NFS mount....
+CSRC:= create_xid.c pmap_clnt.c pmap_getmaps.c pmap_getport.c \
+ pmap_prot.c pmap_prot2.c clnt_simple.c clnt_perror.c \
+ clnt_tcp.c clnt_udp.c bindresvport.c authunix_prot.c \
+ auth_none.c auth_unix.c xdr.c xdr_array.c xdr_rec.c \
+ xdr_reference.c xdr_mem.c svc.c svc_auth.c svc_auth_unix.c \
+ rpc_callmsg.c rpc_prot.c rpc_dtablesize.c rpc_commondata.c \
+ rpc_thread.c rcmd.c rexec.c sa_len.c ruserpass.c rtime.c \
+ getrpcent.c
+endif
+
+INET_RPC_DIR:=$(top_srcdir)libc/inet/rpc
+INET_RPC_OUT:=$(top_builddir)libc/inet/rpc
+
+INET_RPC_NO_MULTI:=rpc_commondata.c rpc_thread.c svc.c
+
+INET_RPC_SRC:=$(patsubst %.c,$(INET_RPC_DIR)/%.c,$(CSRC))
+INET_RPC_OBJ:=$(patsubst %.c,$(INET_RPC_OUT)/%.o,$(CSRC))
+
+libc-a-$(UCLIBC_HAS_RPC)+=$(INET_RPC_OBJ)
+libc-a-pic-$(UCLIBC_HAS_RPC)+=$(INET_RPC_OBJ:.o=.os)
+libc-so-$(UCLIBC_HAS_RPC)+=$(INET_RPC_OBJ:.o=.os)
+
+libc-multi-$(UCLIBC_HAS_RPC)+=$(filter-out $(patsubst %.c,$(INET_RPC_DIR)/%.c,$(INET_RPC_NO_MULTI)),$(INET_RPC_SRC))
+libc-nomulti-$(UCLIBC_HAS_RPC)+=$(patsubst %.c,$(INET_RPC_OUT)/%.o,$(INET_RPC_NO_MULTI))
+
+objclean-y+=inet_rpc_objclean
+
+inet_rpc_objclean:
+ $(RM) $(INET_RPC_OUT)/*.{o,os}
diff --git a/libc/misc/Makefile.in b/libc/misc/Makefile.in
new file mode 100644
index 000000000..f9331c9dd
--- /dev/null
+++ b/libc/misc/Makefile.in
@@ -0,0 +1,36 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+#DIRS:=assert ctype dirent error file fnmatch ftw glob gnu internals intl locale mntent \
+# pthread regex search statfs syslog sysvipc time ttyent utmp wchar wctype wordexp
+
+include $(top_srcdir)libc/misc/assert/Makefile.in
+include $(top_srcdir)libc/misc/ctype/Makefile.in
+include $(top_srcdir)libc/misc/dirent/Makefile.in
+include $(top_srcdir)libc/misc/error/Makefile.in
+include $(top_srcdir)libc/misc/file/Makefile.in
+include $(top_srcdir)libc/misc/fnmatch/Makefile.in
+include $(top_srcdir)libc/misc/ftw/Makefile.in
+include $(top_srcdir)libc/misc/glob/Makefile.in
+include $(top_srcdir)libc/misc/gnu/Makefile.in
+include $(top_srcdir)libc/misc/internals/Makefile.in
+include $(top_srcdir)libc/misc/intl/Makefile.in
+include $(top_srcdir)libc/misc/locale/Makefile.in
+include $(top_srcdir)libc/misc/mntent/Makefile.in
+include $(top_srcdir)libc/misc/pthread/Makefile.in
+include $(top_srcdir)libc/misc/regex/Makefile.in
+include $(top_srcdir)libc/misc/search/Makefile.in
+include $(top_srcdir)libc/misc/statfs/Makefile.in
+include $(top_srcdir)libc/misc/syslog/Makefile.in
+include $(top_srcdir)libc/misc/sysvipc/Makefile.in
+include $(top_srcdir)libc/misc/time/Makefile.in
+include $(top_srcdir)libc/misc/ttyent/Makefile.in
+include $(top_srcdir)libc/misc/utmp/Makefile.in
+include $(top_srcdir)libc/misc/wchar/Makefile.in
+include $(top_srcdir)libc/misc/wctype/Makefile.in
+include $(top_srcdir)libc/misc/wordexp/Makefile.in
diff --git a/libc/misc/assert/Makefile.in b/libc/misc/assert/Makefile.in
new file mode 100644
index 000000000..6fbdcb72a
--- /dev/null
+++ b/libc/misc/assert/Makefile.in
@@ -0,0 +1,26 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CSRC:=__assert.c
+
+MISC_ASSERT_DIR:=$(top_srcdir)libc/misc/assert
+MISC_ASSERT_OUT:=$(top_builddir)libc/misc/assert
+
+MISC_ASSERT_SRC:=$(MISC_ASSERT_DIR)/__assert.c
+MISC_ASSERT_OBJ:=$(MISC_ASSERT_OUT)/__assert.o
+
+libc-a-y+=$(MISC_ASSERT_OBJ)
+libc-a-pic-y+=$(MISC_ASSERT_OBJ:.o=.os)
+libc-so-y+=$(MISC_ASSERT_OBJ:.o=.os)
+
+libc-multi-y+=$(MISC_ASSERT_SRC)
+
+objclean-y+=misc_assert_objclean
+
+misc_assert_objclean:
+ $(RM) $(MISC_ASSERT_OUT)/*.{o,os}
diff --git a/libc/misc/ctype/Makefile.in b/libc/misc/ctype/Makefile.in
new file mode 100644
index 000000000..f9f1bfbed
--- /dev/null
+++ b/libc/misc/ctype/Makefile.in
@@ -0,0 +1,56 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+MSRC:=ctype.c
+MOBJ:= isalnum.o isalpha.o isascii.o iscntrl.o isdigit.o \
+ isgraph.o islower.o isprint.o ispunct.o isspace.o \
+ isupper.o isxdigit.o toascii.o tolower.o toupper.o \
+ isblank.o isxlower.o isxupper.o
+
+ifeq ($(UCLIBC_HAS_CTYPE_TABLES),y)
+MOBJ+= __C_ctype_b.o __C_ctype_tolower.o __C_ctype_toupper.o \
+ __ctype_b_loc.o __ctype_tolower_loc.o __ctype_toupper_loc.o \
+ __ctype_assert.o isctype.o
+endif
+
+MOBJx= isalnum_l.o isalpha_l.o isascii_l.o iscntrl_l.o isdigit_l.o \
+ isgraph_l.o islower_l.o isprint_l.o ispunct_l.o isspace_l.o \
+ isupper_l.o isxdigit_l.o toascii_l.o tolower_l.o toupper_l.o \
+ isblank_l.o # isxlower_l.o isxupper_l.o
+
+MISC_CTYPE_DIR:=$(top_srcdir)libc/misc/ctype
+MISC_CTYPE_OUT:=$(top_builddir)libc/misc/ctype
+
+MISC_CTYPE_MSRC:=$(MISC_CTYPE_DIR)/$(MSRC)
+MISC_CTYPE_MOBJ:=$(patsubst %.o,$(MISC_CTYPE_OUT)/%.o,$(MOBJ))
+MISC_CTYPE_MOBJx=$(patsubst %.o,$(MISC_CTYPE_OUT)/%.o,$(MOBJx))
+
+# adapt this if MOBJx is done for multi
+MISC_CTYPE_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(MISC_CTYPE_MOBJ))))
+
+$(MISC_CTYPE_MOBJ) $(MISC_CTYPE_MOBJ:.o=.os): $(MISC_CTYPE_MSRC)
+ $(compile.m)
+
+$(MISC_CTYPE_MOBJx) $(MISC_CTYPE_MOBJx:.o=.os): $(MISC_CTYPE_MSRC)
+ $(compile.m) -D__UCLIBC_DO_XLOCALE
+
+libc-a-y+=$(MISC_CTYPE_MOBJ)
+libc-a-$(UCLIBC_HAS_XLOCALE)+=$(MISC_CTYPE_MOBJx)
+libc-a-pic-y+=$(MISC_CTYPE_MOBJ:.o=.os)
+libc-a-pic-$(UCLIBC_HAS_XLOCALE)+=$(MISC_CTYPE_MOBJx:.o=.os)
+libc-so-y+=$(MISC_CTYPE_MOBJ:.o=.os)
+libc-so-$(UCLIBC_HAS_XLOCALE)+=$(MISC_CTYPE_MOBJx:.o=.os)
+
+CFLAGS-multi-y+=$(MISC_CTYPE_DEF)
+libc-multi-y+=$(MISC_CTYPE_MSRC)
+libc-nomulti-$(UCLIBC_HAS_XLOCALE)+=$(MISC_CTYPE_MOBJx)
+
+objclean-y+=misc_ctype_objclean
+
+misc_ctype_objclean:
+ $(RM) $(MISC_CTYPE_OUT)/*.{o,os}
diff --git a/libc/misc/dirent/Makefile.in b/libc/misc/dirent/Makefile.in
new file mode 100644
index 000000000..8ba28cdeb
--- /dev/null
+++ b/libc/misc/dirent/Makefile.in
@@ -0,0 +1,28 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2001 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CSRC:= alphasort.c closedir.c dirfd.c opendir.c readdir.c rewinddir.c scandir.c \
+ seekdir.c telldir.c readdir64.c alphasort64.c scandir64.c readdir_r.c \
+ readdir64_r.c
+
+MISC_DIRENT_DIR:=$(top_srcdir)libc/misc/dirent
+MISC_DIRENT_OUT:=$(top_builddir)libc/misc/dirent
+
+MISC_DIRENT_SRC:=$(patsubst %.c,$(MISC_DIRENT_DIR)/%.c,$(CSRC))
+MISC_DIRENT_OBJ:=$(patsubst %.c,$(MISC_DIRENT_OUT)/%.o,$(CSRC))
+
+libc-a-y+=$(MISC_DIRENT_OBJ)
+libc-a-pic-y+=$(MISC_DIRENT_OBJ:.o=.os)
+libc-so-y+=$(MISC_DIRENT_OBJ:.o=.os)
+
+libc-multi-y+=$(MISC_DIRENT_SRC)
+
+objclean-y+=misc_dirent_objclean
+
+misc_dirent_objclean:
+ $(RM) $(MISC_DIRENT_OUT)/*.{o,os}
diff --git a/libc/misc/error/Makefile.in b/libc/misc/error/Makefile.in
new file mode 100644
index 000000000..86bf881fa
--- /dev/null
+++ b/libc/misc/error/Makefile.in
@@ -0,0 +1,25 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CSRC:=error.c err.c
+
+MISC_ERROR_DIR:=$(top_srcdir)libc/misc/error
+MISC_ERROR_OUT:=$(top_builddir)libc/misc/error
+
+MISC_ERROR_SRC:=$(patsubst %.c,$(MISC_ERROR_DIR)/%.c,$(CSRC))
+MISC_ERROR_OBJ:=$(patsubst %.c,$(MISC_ERROR_OUT)/%.o,$(CSRC))
+
+libc-a-y+=$(MISC_ERROR_OBJ)
+libc-a-pic-y+=$(MISC_ERROR_OBJ:.o=.os)
+libc-so-y+=$(MISC_ERROR_OBJ:.o=.os)
+
+libc-multi-y+=$(MISC_ERROR_SRC)
+
+objclean-y+=misc_error_objclean
+
+misc_error_objclean:
+ $(RM) $(MISC_ERROR_OUT)/*.{o,os}
diff --git a/libc/misc/file/Makefile.in b/libc/misc/file/Makefile.in
new file mode 100644
index 000000000..76eff7868
--- /dev/null
+++ b/libc/misc/file/Makefile.in
@@ -0,0 +1,27 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+MISC_FILE_DIR:=$(top_srcdir)libc/misc/file
+MISC_FILE_OUT:=$(top_builddir)libc/misc/file
+
+MISC_FILE_SRC:=$(wildcard $(MISC_FILE_DIR)/*.c)
+ifneq ($(UCLIBC_HAS_LFS),y)
+MISC_FILE_SRC:=$(filter-out $(MISC_FILE_DIR)/lockf64.c,$(MISC_FILE_SRC))
+endif
+MISC_FILE_OBJ:=$(patsubst $(MISC_FILE_DIR)/%.c,$(MISC_FILE_OUT)/%.o,$(MISC_FILE_SRC))
+
+libc-a-y+=$(MISC_FILE_OBJ)
+libc-a-pic-y+=$(MISC_FILE_OBJ:.o=.os)
+libc-so-y+=$(MISC_FILE_OBJ:.o=.os)
+
+libc-multi-y+=$(MISC_FILE_SRC)
+
+objclean-y+=misc_file_objclean
+
+misc_file_objclean:
+ $(RM) $(MISC_FILE_OUT)/*.{o,os}
diff --git a/libc/misc/fnmatch/Makefile.in b/libc/misc/fnmatch/Makefile.in
new file mode 100644
index 000000000..24019dede
--- /dev/null
+++ b/libc/misc/fnmatch/Makefile.in
@@ -0,0 +1,24 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+MISC_FNMATCH_DIR:=$(top_srcdir)libc/misc/fnmatch
+MISC_FNMATCH_OUT:=$(top_builddir)libc/misc/fnmatch
+
+MISC_FNMATCH_SRC:=$(MISC_FNMATCH_DIR)/fnmatch.c
+MISC_FNMATCH_OBJ:=$(MISC_FNMATCH_OUT)/fnmatch.o
+
+libc-a-y+=$(MISC_FNMATCH_OBJ)
+libc-a-pic-y+=$(MISC_FNMATCH_OBJ:.o=.os)
+libc-so-y+=$(MISC_FNMATCH_OBJ:.o=.os)
+
+libc-multi-y+=$(MISC_FNMATCH_SRC)
+
+objclean-y+=misc_fnmatch_objclean
+
+misc_fnmatch_objclean:
+ $(RM) $(MISC_FNMATCH_OUT)/*.{o,os}
diff --git a/libc/misc/ftw/Makefile.in b/libc/misc/ftw/Makefile.in
new file mode 100644
index 000000000..2f92ef0ec
--- /dev/null
+++ b/libc/misc/ftw/Makefile.in
@@ -0,0 +1,38 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+MSRC:=ftw.c
+MOBJ:=ftw.o ftw64.o
+
+MISC_FTW_DIR:=$(top_srcdir)libc/misc/ftw
+MISC_FTW_OUT:=$(top_builddir)libc/misc/ftw
+
+# ftw.c has to be rewritten to allow multi
+MISC_FTW_NO_MULTI:=ftw64.o
+MOBJ:=$(filter-out $(MISC_FTW_NO_MULTI),$(MOBJ))
+
+MISC_FTW_MSRC:=$(MISC_FTW_DIR)/$(MSRC)
+MISC_FTW_MOBJ:=$(patsubst %.o,$(MISC_FTW_OUT)/%.o,$(MOBJ))
+MISC_FTW_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(MISC_FTW_MOBJ))))
+
+MISC_FTW_OBJS:=$(MISC_FTW_MOBJ) $(MISC_FTW_OUT)/$(MISC_FTW_NO_MULTI)
+
+$(MISC_FTW_OBJS) $(MISC_FTW_OBJS:.o=.os): $(MISC_FTW_MSRC)
+ $(compile.m)
+
+libc-a-$(UCLIBC_HAS_FTW)+=$(MISC_FTW_OBJS)
+libc-a-pic-$(UCLIBC_HAS_FTW)+=$(MISC_FTW_OBJS:.o=.os)
+libc-so-$(UCLIBC_HAS_FTW)+=$(MISC_FTW_OBJS:.o=.os)
+
+CFLAGS-multi-$(UCLIBC_HAS_FTW)+=$(MISC_FTW_DEF)
+libc-multi-$(UCLIBC_HAS_FTW)+=$(MISC_FTW_MSRC)
+libc-nomulti-$(UCLIBC_HAS_FTW)+=$(MISC_FTW_OUT)/$(MISC_FTW_NO_MULTI)
+
+objclean-y+=misc_ftw_objclean
+
+misc_ftw_objclean:
+ $(RM) $(MISC_FTW_OUT)/*.{o,os}
diff --git a/libc/misc/glob/Makefile.in b/libc/misc/glob/Makefile.in
new file mode 100644
index 000000000..c17086fde
--- /dev/null
+++ b/libc/misc/glob/Makefile.in
@@ -0,0 +1,30 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CSRC:=glob.c glob64.c glob-hooks.c
+
+MISC_GLOB_DIR:=$(top_srcdir)libc/misc/glob
+MISC_GLOB_OUT:=$(top_builddir)libc/misc/glob
+
+MISC_GLOB_SRC:=$(patsubst %.c,$(MISC_GLOB_DIR)/%.c,$(CSRC))
+MISC_GLOB_OBJ:=$(patsubst %.c,$(MISC_GLOB_OUT)/%.o,$(CSRC))
+
+$(MISC_GLOB_OUT)/glob64.o $(MISC_GLOB_OUT)/glob64.os: $(MISC_GLOB_DIR)/glob64.c $(MISC_GLOB_DIR)/glob.c
+
+libc-a-$(UCLIBC_HAS_GLOB)+=$(MISC_GLOB_OBJ)
+libc-a-pic-$(UCLIBC_HAS_GLOB)+=$(MISC_GLOB_OBJ:.o=.os)
+libc-so-$(UCLIBC_HAS_GLOB)+=$(MISC_GLOB_OBJ:.o=.os)
+
+# glob has to be rewritten to allow multi
+#libc-multi-$(UCLIBC_HAS_GLOB)+=$(MISC_GLOB_SRC)
+libc-nomulti-$(UCLIBC_HAS_GLOB)+=$(MISC_GLOB_OBJ)
+
+objclean-y+=misc_glob_objclean
+
+misc_glob_objclean:
+ $(RM) $(MISC_GLOB_OUT)/*.{o,os}
diff --git a/libc/misc/gnu/Makefile.in b/libc/misc/gnu/Makefile.in
new file mode 100644
index 000000000..263b45713
--- /dev/null
+++ b/libc/misc/gnu/Makefile.in
@@ -0,0 +1,26 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CSRC:=obstack.c
+
+MISC_GNU_DIR:=$(top_srcdir)libc/misc/gnu
+MISC_GNU_OUT:=$(top_builddir)libc/misc/gnu
+
+MISC_GNU_SRC:=$(MISC_GNU_DIR)/obstack.c
+MISC_GNU_OBJ:=$(MISC_GNU_OUT)/obstack.o
+
+libc-a-y+=$(MISC_GNU_OBJ)
+libc-a-pic-y+=$(MISC_GNU_OBJ:.o=.os)
+libc-so-y+=$(MISC_GNU_OBJ:.o=.os)
+
+libc-multi-y+=$(MISC_GNU_SRC)
+
+objclean-y+=misc_gnu_objclean
+
+misc_gnu_objclean:
+ $(RM) $(MISC_GNU_OUT)/*.{o,os}
diff --git a/libc/misc/internals/Makefile.in b/libc/misc/internals/Makefile.in
new file mode 100644
index 000000000..de611323e
--- /dev/null
+++ b/libc/misc/internals/Makefile.in
@@ -0,0 +1,41 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CFLAGS-__uClibc_main.c=$(SSP_DISABLE_FLAGS)
+
+CSRC:=__uClibc_main.c tempname.c errno.c __errno_location.c __h_errno_location.c
+
+MISC_INTERNALS_DIR:=$(top_srcdir)libc/misc/internals
+MISC_INTERNALS_OUT:=$(top_builddir)libc/misc/internals
+
+MISC_INTERNALS_SRC:=$(patsubst %.c,$(MISC_INTERNALS_DIR)/%.c,$(CSRC))
+MISC_INTERNALS_OBJ:=$(patsubst %.c,$(MISC_INTERNALS_OUT)/%.o,$(CSRC))
+
+MISC_INTERNALS_OBJS:=$(MISC_INTERNALS_OBJ) $(MISC_INTERNALS_OUT)/static.o
+
+$(MISC_INTERNALS_OUT)/interp.c: $(MISC_INTERNALS_DIR)/Makefile.in
+ echo "/* Force shared libraries to know about the correct library loader */" > $@
+ echo "#include <features.h>" >> $@
+ echo "#ifdef __HAVE_ELF__" >> $@
+ echo "const char __dl_ldso__[] __attribute__ ((section " \
+ "(\".interp\"))) =\""$(SHARED_LIB_LOADER_PREFIX)/$(UCLIBC_LDSO)"\";" >> $@
+ echo "#endif" >> $@
+
+libc-a-y+=$(MISC_INTERNALS_OBJS)
+libc-a-pic-y+=$(MISC_INTERNALS_OBJS:.o=.os)
+# this is OBJ, not OBJS !!!, static does not go into .so
+libc-so-y+=$(MISC_INTERNALS_OBJ:.o=.os)
+other-y+=$(MISC_INTERNALS_OUT)/interp.os
+
+libc-multi-y+=$(filter-out $(MISC_INTERNALS_DIR)/__uClibc_main.c,$(MISC_INTERNALS_SRC))
+libc-nomulti-y+=$(MISC_INTERNALS_OUT)/__uClibc_main.o
+
+objclean-y+=misc_internals_objclean
+
+misc_internals_objclean:
+ $(RM) $(MISC_INTERNALS_OUT)/{*.{o,os},interp.c}
diff --git a/libc/misc/intl/Makefile.in b/libc/misc/intl/Makefile.in
new file mode 100644
index 000000000..40eadfa1b
--- /dev/null
+++ b/libc/misc/intl/Makefile.in
@@ -0,0 +1,33 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+MSRC:=intl.c
+MOBJ:= __uClibc_dgettext.o __uClibc_dcgettext.o \
+ __uClibc_textdomain.o __uClibc_bindtextdomain.o # for libstd++
+
+MISC_INTL_DIR:=$(top_srcdir)libc/misc/intl
+MISC_INTL_OUT:=$(top_builddir)libc/misc/intl
+
+MISC_INTL_MSRC:=$(MISC_INTL_DIR)/$(MSRC)
+MISC_INTL_MOBJ:=$(patsubst %.o,$(MISC_INTL_OUT)/%.o,$(MOBJ))
+MISC_INTL_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(MISC_INTL_MOBJ))))
+
+$(MISC_INTL_MOBJ) $(MISC_INTL_MOBJ:.o=.os): $(MISC_INTL_MSRC)
+ $(compile.m)
+
+libc-a-$(UCLIBC_HAS_GETTEXT_AWARENESS)+=$(MISC_INTL_MOBJ)
+libc-a-pic-$(UCLIBC_HAS_GETTEXT_AWARENESS)+=$(MISC_INTL_MOBJ:.o=.os)
+libc-so-$(UCLIBC_HAS_GETTEXT_AWARENESS)+=$(MISC_INTL_MOBJ:.o=.os)
+
+CFLAGS-multi-$(UCLIBC_HAS_GETTEXT_AWARENESS)+=$(MISC_INTL_DEF)
+libc-multi-$(UCLIBC_HAS_GETTEXT_AWARENESS)+=$(MISC_INTL_MSRC)
+
+objclean-y+=misc_intl_objclean
+
+misc_intl_objclean:
+ $(RM) $(MISC_INTL_OUT)/*.{o,os}
diff --git a/libc/misc/locale/Makefile.in b/libc/misc/locale/Makefile.in
new file mode 100644
index 000000000..f93abef33
--- /dev/null
+++ b/libc/misc/locale/Makefile.in
@@ -0,0 +1,61 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+MSRC:=locale.c
+MOBJ:=setlocale.o localeconv.o _locale_init.o nl_langinfo.o
+MOBJx=
+
+ifeq ($(UCLIBC_HAS_LOCALE),y)
+MOBJ+=newlocale.o __locale_mbrtowc_l.o
+endif
+
+ifeq ($(UCLIBC_HAS_XLOCALE),y)
+MOBJx+=nl_langinfo_l.o duplocale.o freelocale.o uselocale.o __curlocale.o
+endif
+
+DATA=
+ifeq ($(UCLIBC_HAS_LOCALE),y)
+DATA:=locale_data.o
+endif
+
+MISC_LOCALE_DIR:=$(top_srcdir)libc/misc/locale
+MISC_LOCALE_OUT:=$(top_builddir)libc/misc/locale
+
+MISC_LOCALE_MSRC:=$(MISC_LOCALE_DIR)/$(MSRC)
+MISC_LOCALE_MOBJ:=$(patsubst %.o,$(MISC_LOCALE_OUT)/%.o,$(MOBJ))
+MISC_LOCALE_MOBJx=$(patsubst %.o,$(MISC_LOCALE_OUT)/%.o,$(MOBJx))
+MISC_LOCALE_DATA=$(patsubst %.o,$(MISC_LOCALE_OUT)/%.o,$(DATA))
+
+MISC_LOCALE_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(MISC_LOCALE_MOBJ))))
+
+$(MISC_LOCALE_MOBJ) $(MISC_LOCALE_MOBJ:.o=.os): $(MISC_LOCALE_MSRC)
+ $(compile.m)
+
+$(MISC_LOCALE_MOBJx) $(MISC_LOCALE_MOBJx:.o=.os): $(MISC_LOCALE_MSRC)
+ $(compile.m) -D__UCLIBC_DO_XLOCALE
+
+$(MISC_LOCALE_DATA) $(MISC_LOCALE_DATA:.o=.os): $(top_builddir)extra/locale/$(notdir $(MISC_LOCALE_DATA:.o=.c))
+ $(compile.c) -D__WCHAR_ENABLED -I$<
+
+libc-a-y+=$(MISC_LOCALE_MOBJ)
+libc-a-$(UCLIBC_HAS_XLOCALE)+=$(MISC_LOCALE_MOBJx)
+libc-a-pic-y+=$(MISC_LOCALE_MOBJ:.o=.os)
+libc-a-pic-$(UCLIBC_HAS_XLOCALE)+=$(MISC_LOCALE_MOBJx:.o=.os)
+libc-so-y+=$(MISC_LOCALE_MOBJ:.o=.os)
+libc-so-$(UCLIBC_HAS_XLOCALE)+=$(MISC_LOCALE_MOBJx:.o=.os)
+
+#CFLAGS-multi-y+=$(MISC_LOCALE_DEF)
+#libc-multi-y+=$(MISC_LOCALE_MSRC)
+libc-nomulti-y+=$(MISC_LOCALE_MOBJ)
+libc-nomulti-$(UCLIBC_HAS_LOCALE)+=$(MISC_LOCALE_DATA)
+libc-nomulti-$(UCLIBC_HAS_XLOCALE)+=$(MISC_LOCALE_MOBJx)
+
+objclean-y+=misc_locale_objclean
+
+misc_locale_objclean:
+ $(RM) $(MISC_LOCALE_OUT)/{*.{o,os},locale_data.c}
diff --git a/libc/misc/mntent/Makefile.in b/libc/misc/mntent/Makefile.in
new file mode 100644
index 000000000..cdb8acd5e
--- /dev/null
+++ b/libc/misc/mntent/Makefile.in
@@ -0,0 +1,26 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CSRC:=mntent.c
+
+MISC_MNTENT_DIR:=$(top_srcdir)libc/misc/mntent
+MISC_MNTENT_OUT:=$(top_builddir)libc/misc/mntent
+
+MISC_MNTENT_SRC:=$(MISC_MNTENT_DIR)/mntent.c
+MISC_MNTENT_OBJ:=$(MISC_MNTENT_OUT)/mntent.o
+
+libc-a-y+=$(MISC_MNTENT_OBJ)
+libc-a-pic-y+=$(MISC_MNTENT_OBJ:.o=.os)
+libc-so-y+=$(MISC_MNTENT_OBJ:.o=.os)
+
+libc-multi-y+=$(MISC_MNTENT_SRC)
+
+objclean-y+=misc_mntent_objclean
+
+misc_mntent_objclean:
+ $(RM) $(MISC_MNTENT_OUT)/*.{o,os}
diff --git a/libc/misc/pthread/Makefile.in b/libc/misc/pthread/Makefile.in
new file mode 100644
index 000000000..0bcb1496b
--- /dev/null
+++ b/libc/misc/pthread/Makefile.in
@@ -0,0 +1,26 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CSRC:=no-tsd.c weaks.c
+
+MISC_PTHREAD_DIR:=$(top_srcdir)libc/misc/pthread
+MISC_PTHREAD_OUT:=$(top_builddir)libc/misc/pthread
+
+MISC_PTHREAD_SRC:=$(patsubst %.c,$(MISC_PTHREAD_DIR)/%.c,$(CSRC))
+MISC_PTHREAD_OBJ:=$(patsubst %.c,$(MISC_PTHREAD_OUT)/%.o,$(CSRC))
+
+libc-a-$(UCLIBC_HAS_THREADS)+=$(MISC_PTHREAD_OBJ)
+libc-a-pic-$(UCLIBC_HAS_THREADS)+=$(MISC_PTHREAD_OBJ:.o=.os)
+libc-so-$(UCLIBC_HAS_THREADS)+=$(MISC_PTHREAD_OBJ:.o=.os)
+
+#libc-multi-$(UCLIBC_HAS_THREADS)+=$(MISC_PTHREAD_SRC)
+libc-nomulti-$(UCLIBC_HAS_THREADS)+=$(MISC_PTHREAD_OBJ)
+
+objclean-y+=misc_pthread_objclean
+
+misc_pthread_objclean:
+ $(RM) $(MISC_PTHREAD_OUT)/*.{o,os}
diff --git a/libc/misc/regex/Makefile.in b/libc/misc/regex/Makefile.in
new file mode 100644
index 000000000..6909e6246
--- /dev/null
+++ b/libc/misc/regex/Makefile.in
@@ -0,0 +1,26 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CSRC:=regex.c
+
+MISC_REGEX_DIR:=$(top_srcdir)libc/misc/regex
+MISC_REGEX_OUT:=$(top_builddir)libc/misc/regex
+
+MISC_REGEX_SRC:=$(patsubst %.c,$(MISC_REGEX_DIR)/%.c,$(CSRC))
+MISC_REGEX_OBJ:=$(patsubst %.c,$(MISC_REGEX_OUT)/%.o,$(CSRC))
+
+libc-a-$(UCLIBC_HAS_REGEX)+=$(MISC_REGEX_OBJ)
+libc-a-pic-$(UCLIBC_HAS_REGEX)+=$(MISC_REGEX_OBJ:.o=.os)
+libc-so-$(UCLIBC_HAS_REGEX)+=$(MISC_REGEX_OBJ:.o=.os)
+
+libc-multi-$(UCLIBC_HAS_REGEX)+=$(MISC_REGEX_SRC)
+
+objclean-y+=misc_regex_objclean
+
+misc_regex_objclean:
+ $(RM) $(MISC_REGEX_OUT)/*.{o,os}
diff --git a/libc/misc/search/Makefile.in b/libc/misc/search/Makefile.in
new file mode 100644
index 000000000..b762db6e0
--- /dev/null
+++ b/libc/misc/search/Makefile.in
@@ -0,0 +1,66 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+MSRC1:=tsearch.c
+MOBJ1:=tsearch.o tfind.o tdelete.o twalk.o tdestroy.o
+
+MSRC2:=lsearch.c
+MOBJ2:=lfind.o lsearch.o
+
+MSRC3:=insremque.c
+MOBJ3:=insque.o remque.o
+
+MSRC4:=hsearch_r.c
+MOBJ4:=hcreate_r.o hdestroy_r.o hsearch_r.o
+
+CSRC:=hsearch.c
+
+MISC_SEARCH_DIR:=$(top_srcdir)libc/misc/search
+MISC_SEARCH_OUT:=$(top_builddir)libc/misc/search
+
+MISC_SEARCH_SRC:=$(patsubst %.c,$(MISC_SEARCH_DIR)/%.c,$(CSRC))
+MISC_SEARCH_OBJ:=$(patsubst %.c,$(MISC_SEARCH_OUT)/%.o,$(CSRC))
+
+MISC_SEARCH_MSRC1:=$(MISC_SEARCH_DIR)/$(MSRC1)
+MISC_SEARCH_MSRC2:=$(MISC_SEARCH_DIR)/$(MSRC2)
+MISC_SEARCH_MSRC3:=$(MISC_SEARCH_DIR)/$(MSRC3)
+MISC_SEARCH_MSRC4:=$(MISC_SEARCH_DIR)/$(MSRC4)
+MISC_SEARCH_MOBJ1:=$(patsubst %.o,$(MISC_SEARCH_OUT)/%.o,$(MOBJ1))
+MISC_SEARCH_MOBJ2:=$(patsubst %.o,$(MISC_SEARCH_OUT)/%.o,$(MOBJ2))
+MISC_SEARCH_MOBJ3:=$(patsubst %.o,$(MISC_SEARCH_OUT)/%.o,$(MOBJ3))
+MISC_SEARCH_MOBJ4:=$(patsubst %.o,$(MISC_SEARCH_OUT)/%.o,$(MOBJ4))
+
+MISC_SEARCH_MSRC:=$(MISC_SEARCH_MSRC1) $(MISC_SEARCH_MSRC2) $(MISC_SEARCH_MSRC3) $(MISC_SEARCH_MSRC4)
+MISC_SEARCH_MOBJ:=$(MISC_SEARCH_MOBJ1) $(MISC_SEARCH_MOBJ2) $(MISC_SEARCH_MOBJ3) $(MISC_SEARCH_MOBJ4)
+MISC_SEARCH_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(MISC_SEARCH_MOBJ))))
+
+MISC_SEARCH_OBJS:=$(MISC_SEARCH_OBJ) $(MISC_SEARCH_MOBJ)
+
+$(MISC_SEARCH_MOBJ1) $(MISC_SEARCH_MOBJ1:.o=.os): $(MISC_SEARCH_MSRC1)
+ $(compile.m)
+
+$(MISC_SEARCH_MOBJ2) $(MISC_SEARCH_MOBJ2:.o=.os): $(MISC_SEARCH_MSRC2)
+ $(compile.m)
+
+$(MISC_SEARCH_MOBJ3) $(MISC_SEARCH_MOBJ3:.o=.os): $(MISC_SEARCH_MSRC3)
+ $(compile.m)
+
+$(MISC_SEARCH_MOBJ4) $(MISC_SEARCH_MOBJ4:.o=.os): $(MISC_SEARCH_MSRC4)
+ $(compile.m)
+
+libc-a-y+=$(MISC_SEARCH_OBJS)
+libc-a-pic-y+=$(MISC_SEARCH_OBJS:.o=.os)
+libc-so-y+=$(MISC_SEARCH_OBJS:.o=.os)
+
+CFLAGS-multi-y+=$(MISC_SEARCH_DEF)
+libc-multi-y+=$(MISC_SEARCH_SRC) $(MISC_SEARCH_MSRC)
+
+objclean-y+=misc_search_objclean
+
+misc_search_objclean:
+ $(RM) $(MISC_SEARCH_OUT)/*.{o,os}
diff --git a/libc/misc/statfs/Makefile.in b/libc/misc/statfs/Makefile.in
new file mode 100644
index 000000000..2adb20f1d
--- /dev/null
+++ b/libc/misc/statfs/Makefile.in
@@ -0,0 +1,28 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CSRC:=statvfs.c fstatvfs.c
+ifeq ($(UCLIBC_HAS_LFS),y)
+CSRC+=fstatfs64.c statfs64.c statvfs64.c fstatvfs64.c
+endif
+
+MISC_STATFS_DIR:=$(top_srcdir)libc/misc/statfs
+MISC_STATFS_OUT:=$(top_builddir)libc/misc/statfs
+
+MISC_STATFS_SRC:=$(patsubst %.c,$(MISC_STATFS_DIR)/%.c,$(CSRC))
+MISC_STATFS_OBJ:=$(patsubst %.c,$(MISC_STATFS_OUT)/%.o,$(CSRC))
+
+libc-a-y+=$(MISC_STATFS_OBJ)
+libc-a-pic-y+=$(MISC_STATFS_OBJ:.o=.os)
+libc-so-y+=$(MISC_STATFS_OBJ:.o=.os)
+
+libc-multi-y+=$(MISC_STATFS_SRC)
+
+objclean-y+=misc_statfs_objclean
+
+misc_statfs_objclean:
+ $(RM) $(MISC_STATFS_OUT)/*.{o,os}
diff --git a/libc/misc/syslog/Makefile.in b/libc/misc/syslog/Makefile.in
new file mode 100644
index 000000000..bc6cb0710
--- /dev/null
+++ b/libc/misc/syslog/Makefile.in
@@ -0,0 +1,26 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CSRC:=syslog.c
+
+MISC_SYSLOG_DIR:=$(top_srcdir)libc/misc/syslog
+MISC_SYSLOG_OUT:=$(top_builddir)libc/misc/syslog
+
+MISC_SYSLOG_SRC:=$(patsubst %.c,$(MISC_SYSLOG_DIR)/%.c,$(CSRC))
+MISC_SYSLOG_OBJ:=$(patsubst %.c,$(MISC_SYSLOG_OUT)/%.o,$(CSRC))
+
+libc-a-y+=$(MISC_SYSLOG_OBJ)
+libc-a-pic-y+=$(MISC_SYSLOG_OBJ:.o=.os)
+libc-so-y+=$(MISC_SYSLOG_OBJ:.o=.os)
+
+libc-multi-y+=$(MISC_SYSLOG_SRC)
+
+objclean-y+=misc_syslog_objclean
+
+misc_syslog_objclean:
+ $(RM) $(MISC_SYSLOG_OUT)/*.{o,os}
diff --git a/libc/misc/sysvipc/Makefile.in b/libc/misc/sysvipc/Makefile.in
new file mode 100644
index 000000000..73cc932aa
--- /dev/null
+++ b/libc/misc/sysvipc/Makefile.in
@@ -0,0 +1,62 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+MSRC1:=sem.c
+MOBJ1:=semget.o semctl.o semop.o
+
+MSRC2:=shm.c
+MOBJ2:=shmat.o shmctl.o shmdt.o shmget.o
+
+MSRC3:=msgq.c
+MOBJ3:=msgctl.o msgget.o msgrcv.o msgsnd.o
+
+CSRC:=ftok.c
+
+MISC_SYSVIPC_DIR:=$(top_srcdir)libc/misc/sysvipc
+MISC_SYSVIPC_OUT:=$(top_builddir)libc/misc/sysvipc
+
+MISC_SYSVIPC_SRC:=$(patsubst %.c,$(MISC_SYSVIPC_DIR)/%.c,$(CSRC))
+MISC_SYSVIPC_OBJ:=$(patsubst %.c,$(MISC_SYSVIPC_OUT)/%.o,$(CSRC))
+
+MISC_SYSVIPC_NO_MULTI:=$(MOBJ1) $(MOBJ3)
+
+MISC_SYSVIPC_MSRC1:=$(patsubst %.c,$(MISC_SYSVIPC_DIR)/%.c,$(MSRC1))
+MISC_SYSVIPC_MSRC2:=$(patsubst %.c,$(MISC_SYSVIPC_DIR)/%.c,$(MSRC2))
+MISC_SYSVIPC_MSRC3:=$(patsubst %.c,$(MISC_SYSVIPC_DIR)/%.c,$(MSRC3))
+MISC_SYSVIPC_MOBJ1:=$(patsubst %.o,$(MISC_SYSVIPC_OUT)/%.o,$(MOBJ1))
+MISC_SYSVIPC_MOBJ2:=$(patsubst %.o,$(MISC_SYSVIPC_OUT)/%.o,$(MOBJ2))
+MISC_SYSVIPC_MOBJ3:=$(patsubst %.o,$(MISC_SYSVIPC_OUT)/%.o,$(MOBJ3))
+
+MISC_SYSVIPC_MSRC:=$(MISC_SYSVIPC_MSRC1) $(MISC_SYSVIPC_MSRC2) $(MISC_SYSVIPC_MSRC3)
+MISC_SYSVIPC_MOBJ:=$(MISC_SYSVIPC_MOBJ1) $(MISC_SYSVIPC_MOBJ2) $(MISC_SYSVIPC_MOBJ3)
+# only MSRC2
+MISC_SYSVIPC_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(MISC_SYSVIPC_MOBJ2))))
+
+MISC_SYSVIPC_OBJS:=$(MISC_SYSVIPC_OBJ) $(MISC_SYSVIPC_MOBJ)
+
+$(MISC_SYSVIPC_MOBJ1) $(MISC_SYSVIPC_MOBJ1:.o=.os): $(MISC_SYSVIPC_MSRC1)
+ $(compile.m)
+
+$(MISC_SYSVIPC_MOBJ2) $(MISC_SYSVIPC_MOBJ2:.o=.os): $(MISC_SYSVIPC_MSRC2)
+ $(compile.m)
+
+$(MISC_SYSVIPC_MOBJ3) $(MISC_SYSVIPC_MOBJ3:.o=.os): $(MISC_SYSVIPC_MSRC3)
+ $(compile.m)
+
+libc-a-y+=$(MISC_SYSVIPC_OBJS)
+libc-a-pic-y+=$(MISC_SYSVIPC_OBJS:.o=.os)
+libc-so-y+=$(MISC_SYSVIPC_OBJS:.o=.os)
+
+CFLAGS-multi-y+=$(MISC_SYSVIPC_DEF)
+libc-multi-y+=$(MISC_SYSVIPC_SRC) $(MISC_SYSVIPC_MSRC2)
+libc-nomulti-y+=$(MISC_SYSVIPC_MOBJ1) $(MISC_SYSVIPC_MOBJ3)
+
+objclean-y+=misc_sysvipc_objclean
+
+misc_sysvipc_objclean:
+ $(RM) $(MISC_SYSVIPC_OUT)/*.{o,os}
diff --git a/libc/misc/time/Makefile.in b/libc/misc/time/Makefile.in
new file mode 100644
index 000000000..986e5ed29
--- /dev/null
+++ b/libc/misc/time/Makefile.in
@@ -0,0 +1,69 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+MSRC:=time.c
+MOBJ:= asctime.o asctime_r.o clock.o ctime.o ctime_r.o gmtime.o gmtime_r.o \
+ localtime.o localtime_r.o mktime.o strftime.o strptime.o tzset.o \
+ _time_t2tm.o __time_tm.o _time_mktime.o dysize.o timegm.o \
+ _time_mktime_tzi.o _time_localtime_tzi.o
+MOBJx=
+
+ifeq ($(UCLIBC_HAS_FLOATS),y)
+MOBJ+=difftime.o
+endif
+ifeq ($(UCLIBC_HAS_XLOCALE),y)
+MOBJx+=strftime_l.o strptime_l.o
+endif
+
+ifeq ($(UCLIBC_HAS_WCHAR),y)
+MOBJ+=wcsftime.o
+ifeq ($(UCLIBC_HAS_XLOCALE),y)
+MOBJx+=wcsftime_l.o
+endif
+endif
+
+CSRC:=adjtime.c ftime.c
+
+MISC_TIME_DIR:=$(top_srcdir)libc/misc/time
+MISC_TIME_OUT:=$(top_builddir)libc/misc/time
+
+MISC_TIME_NO_MULTI:=strftime.o
+
+MISC_TIME_SRC:=$(patsubst %.c,$(MISC_TIME_DIR)/%.c,$(CSRC))
+MISC_TIME_OBJ:=$(patsubst %.c,$(MISC_TIME_OUT)/%.o,$(CSRC))
+
+MISC_TIME_MSRC:=$(patsubst %.c,$(MISC_TIME_DIR)/%.c,$(MSRC))
+MISC_TIME_MOBJ:=$(patsubst %.o,$(MISC_TIME_OUT)/%.o,$(MOBJ))
+MISC_TIME_MOBJx=$(patsubst %.o,$(MISC_TIME_OUT)/%.o,$(MOBJx))
+
+MISC_TIME_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(filter-out $(MISC_TIME_OUT)/$(MISC_TIME_NO_MULTI),$(MISC_TIME_MOBJ)))))
+
+MISC_TIME_OBJS:=$(MISC_TIME_OBJ) $(MISC_TIME_MOBJ)
+
+$(MISC_TIME_MOBJ) $(MISC_TIME_MOBJ:.o=.os): $(MISC_TIME_MSRC)
+ $(compile.m)
+
+$(MISC_TIME_MOBJx) $(MISC_TIME_MOBJx:.o=.os): $(MISC_TIME_MSRC)
+ $(compile.m) -D__UCLIBC_DO_XLOCALE
+
+libc-a-y+=$(MISC_TIME_OBJS)
+libc-a-$(UCLIBC_HAS_XLOCALE)+=$(MISC_TIME_MOBJx)
+libc-a-pic-y+=$(MISC_TIME_OBJS:.o=.os)
+libc-a-pic-$(UCLIBC_HAS_XLOCALE)+=$(MISC_TIME_MOBJx:.o=.os)
+libc-so-y+=$(MISC_TIME_OBJS:.o=.os)
+libc-so-$(UCLIBC_HAS_XLOCALE)+=$(MISC_TIME_MOBJx:.o=.os)
+
+CFLAGS-multi-y+=$(MISC_TIME_DEF)
+libc-multi-y+=$(MISC_TIME_MSRC)
+libc-nomulti-y+=$(MISC_TIME_OUT)/$(MISC_TIME_NO_MULTI)
+libc-nomulti-$(UCLIBC_HAS_XLOCALE)+=$(MISC_TIME_MOBJx)
+
+objclean-y+=misc_time_objclean
+
+misc_time_objclean:
+ $(RM) $(MISC_TIME_OUT)/*.{o,os}
diff --git a/libc/misc/ttyent/Makefile.in b/libc/misc/ttyent/Makefile.in
new file mode 100644
index 000000000..e653ef2c1
--- /dev/null
+++ b/libc/misc/ttyent/Makefile.in
@@ -0,0 +1,25 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CSRC:=getttyent.c
+
+MISC_TTYENT_DIR:=$(top_srcdir)libc/misc/ttyent
+MISC_TTYENT_OUT:=$(top_builddir)libc/misc/ttyent
+
+MISC_TTYENT_SRC:=$(patsubst %.c,$(MISC_TTYENT_DIR)/%.c,$(CSRC))
+MISC_TTYENT_OBJ:=$(patsubst %.c,$(MISC_TTYENT_OUT)/%.o,$(CSRC))
+
+libc-a-y+=$(MISC_TTYENT_OBJ)
+libc-a-pic-y+=$(MISC_TTYENT_OBJ:.o=.os)
+libc-so-y+=$(MISC_TTYENT_OBJ:.o=.os)
+
+libc-multi-y+=$(MISC_TTYENT_SRC)
+
+objclean-y+=misc_ttyent_objclean
+
+misc_ttyent_objclean:
+ $(RM) $(MISC_TTYENT_OUT)/*.{o,os}
diff --git a/libc/misc/utmp/Makefile.in b/libc/misc/utmp/Makefile.in
new file mode 100644
index 000000000..6240a160d
--- /dev/null
+++ b/libc/misc/utmp/Makefile.in
@@ -0,0 +1,26 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CSRC:=utent.c wtent.c
+
+MISC_UTMP_DIR:=$(top_srcdir)libc/misc/utmp
+MISC_UTMP_OUT:=$(top_builddir)libc/misc/utmp
+
+MISC_UTMP_SRC:=$(patsubst %.c,$(MISC_UTMP_DIR)/%.c,$(CSRC))
+MISC_UTMP_OBJ:=$(patsubst %.c,$(MISC_UTMP_OUT)/%.o,$(CSRC))
+
+libc-a-y+=$(MISC_UTMP_OBJ)
+libc-a-pic-y+=$(MISC_UTMP_OBJ:.o=.os)
+libc-so-y+=$(MISC_UTMP_OBJ:.o=.os)
+
+libc-multi-y+=$(MISC_UTMP_SRC)
+
+objclean-y+=misc_utmp_objclean
+
+misc_utmp_objclean:
+ $(RM) $(MISC_UTMP_OUT)/*.{o,os}
diff --git a/libc/misc/wchar/Makefile.in b/libc/misc/wchar/Makefile.in
new file mode 100644
index 000000000..885f2476b
--- /dev/null
+++ b/libc/misc/wchar/Makefile.in
@@ -0,0 +1,49 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+# The stdio and time related wide functions are now built in the normal
+# directories.
+#
+# stdio:
+# fwide fgetwc getwchar fgetws fputwc putwchar fputws ungetwc
+# getwc (fgetwc alias) getwc_unlocked (fgetwc_unlocked alias)
+# putwc (fputwc alias) putwc_unlocked (fputwc_unlocked alias)
+# time:
+# wcsftime
+#
+
+MSRC:=wchar.c
+MOBJ:= btowc.o wctob.o mbsinit.o mbrlen.o mbrtowc.o wcrtomb.o mbsrtowcs.o \
+ wcsrtombs.o _wchar_utf8sntowcs.o _wchar_wcsntoutf8s.o \
+ __mbsnrtowcs.o __wcsnrtombs.o wcwidth.o wcswidth.o
+
+ifeq ($(UCLIBC_HAS_LOCALE),y)
+MOBJ+=iconv.o
+endif
+
+MISC_WCHAR_DIR:=$(top_srcdir)libc/misc/wchar
+MISC_WCHAR_OUT:=$(top_builddir)libc/misc/wchar
+
+MISC_WCHAR_MSRC:=$(MISC_WCHAR_DIR)/$(MSRC)
+MISC_WCHAR_MOBJ:=$(patsubst %.o,$(MISC_WCHAR_OUT)/%.o,$(MOBJ))
+MISC_WCHAR_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(MISC_WCHAR_MOBJ))))
+
+$(MISC_WCHAR_MOBJ) $(MISC_WCHAR_MOBJ:.o=.os): $(MISC_WCHAR_MSRC)
+ $(compile.m)
+
+libc-a-$(UCLIBC_HAS_WCHAR)+=$(MISC_WCHAR_MOBJ)
+libc-a-pic-$(UCLIBC_HAS_WCHAR)+=$(MISC_WCHAR_MOBJ:.o=.os)
+libc-so-$(UCLIBC_HAS_WCHAR)+=$(MISC_WCHAR_MOBJ:.o=.os)
+
+CFLAGS-multi-$(UCLIBC_HAS_WCHAR)+=$(MISC_WCHAR_DEF)
+libc-multi-$(UCLIBC_HAS_WCHAR)+=$(MISC_WCHAR_MSRC)
+
+objclean-y+=misc_wchar_objclean
+
+misc_wchar_objclean:
+ $(RM) $(MISC_WCHAR_OUT)/*.{o,os}
diff --git a/libc/misc/wctype/Makefile.in b/libc/misc/wctype/Makefile.in
new file mode 100644
index 000000000..1db745223
--- /dev/null
+++ b/libc/misc/wctype/Makefile.in
@@ -0,0 +1,50 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+MSRC:=wctype.c
+MOBJ:= iswalnum.o iswalpha.o iswcntrl.o iswdigit.o iswgraph.o \
+ iswlower.o iswprint.o iswpunct.o iswspace.o iswupper.o \
+ iswxdigit.o iswblank.o wctrans.o towctrans.o \
+ wctype.o iswctype.o towlower.o towupper.o
+
+MOBJx= iswalnum_l.o iswalpha_l.o iswcntrl_l.o iswdigit_l.o iswgraph_l.o \
+ iswlower_l.o iswprint_l.o iswpunct_l.o iswspace_l.o iswupper_l.o \
+ iswxdigit_l.o iswblank_l.o \
+ wctype_l.o iswctype_l.o wctrans_l.o towctrans_l.o towlower_l.o towupper_l.o
+
+MISC_WCTYPE_DIR:=$(top_srcdir)libc/misc/wctype
+MISC_WCTYPE_OUT:=$(top_builddir)libc/misc/wctype
+
+MISC_WCTYPE_MSRC:=$(MISC_WCTYPE_DIR)/$(MSRC)
+MISC_WCTYPE_MOBJ:=$(patsubst %.o,$(MISC_WCTYPE_OUT)/%.o,$(MOBJ))
+MISC_WCTYPE_MOBJx=$(patsubst %.o,$(MISC_WCTYPE_OUT)/%.o,$(MOBJx))
+
+# adapt this if MOBJx is done for multi
+MISC_WCTYPE_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(MISC_WCTYPE_MOBJ))))
+
+$(MISC_WCTYPE_MOBJ) $(MISC_WCTYPE_MOBJ:.o=.os): $(MISC_WCTYPE_MSRC)
+ $(compile.m)
+
+$(MISC_WCTYPE_MOBJx) $(MISC_WCTYPE_MOBJx:.o=.os): $(MISC_WCTYPE_MSRC)
+ $(compile.m) -D__UCLIBC_DO_XLOCALE
+
+libc-a-$(UCLIBC_HAS_WCHAR)+=$(MISC_WCTYPE_MOBJ)
+libc-a-$(UCLIBC_HAS_XLOCALE)+=$(MISC_WCTYPE_MOBJx)
+libc-a-pic-$(UCLIBC_HAS_WCHAR)+=$(MISC_WCTYPE_MOBJ:.o=.os)
+libc-a-pic-$(UCLIBC_HAS_XLOCALE)+=$(MISC_WCTYPE_MOBJx:.o=.os)
+libc-so-$(UCLIBC_HAS_WCHAR)+=$(MISC_WCTYPE_MOBJ:.o=.os)
+libc-so-$(UCLIBC_HAS_XLOCALE)+=$(MISC_WCTYPE_MOBJx:.o=.os)
+
+CFLAGS-multi-$(UCLIBC_HAS_WCHAR)+=$(MISC_WCTYPE_DEF)
+libc-multi-$(UCLIBC_HAS_WCHAR)+=$(MISC_WCTYPE_MSRC)
+libc-nomulti-$(UCLIBC_HAS_XLOCALE)+=$(MISC_WCTYPE_MOBJx)
+
+objclean-y+=misc_wctype_objclean
+
+misc_wctype_objclean:
+ $(RM) $(MISC_WCTYPE_OUT)/*.{o,os}
diff --git a/libc/misc/wordexp/Makefile.in b/libc/misc/wordexp/Makefile.in
new file mode 100644
index 000000000..c5199fe07
--- /dev/null
+++ b/libc/misc/wordexp/Makefile.in
@@ -0,0 +1,25 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CSRC:=wordexp.c
+
+MISC_WORDEXP_DIR:=$(top_srcdir)libc/misc/wordexp
+MISC_WORDEXP_OUT:=$(top_builddir)libc/misc/wordexp
+
+MISC_WORDEXP_SRC:=$(patsubst %.c,$(MISC_WORDEXP_DIR)/%.c,$(CSRC))
+MISC_WORDEXP_OBJ:=$(patsubst %.c,$(MISC_WORDEXP_OUT)/%.o,$(CSRC))
+
+libc-a-$(UCLIBC_HAS_WORDEXP)+=$(MISC_WORDEXP_OBJ)
+libc-a-pic-$(UCLIBC_HAS_WORDEXP)+=$(MISC_WORDEXP_OBJ:.o=.os)
+libc-so-$(UCLIBC_HAS_WORDEXP)+=$(MISC_WORDEXP_OBJ:.o=.os)
+
+libc-multi-$(UCLIBC_HAS_WORDEXP)+=$(MISC_WORDEXP_SRC)
+
+objclean-y+=misc_wordexp_objclean
+
+misc_wordexp_objclean:
+ $(RM) $(MISC_WORDEXP_OUT)/*.{o,os}
diff --git a/libc/pwd_grp/Makefile.in b/libc/pwd_grp/Makefile.in
new file mode 100644
index 000000000..991f38872
--- /dev/null
+++ b/libc/pwd_grp/Makefile.in
@@ -0,0 +1,48 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+MSRC:=pwd_grp.c
+MOBJ:= fgetpwent_r.o fgetgrent_r.o fgetpwent.o fgetgrent.o \
+ getpwnam_r.o getgrnam_r.o getpwuid_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 \
+ __parsepwent.o __parsegrent.o __pgsreader.o
+
+ifeq ($(HAS_SHADOW),y)
+MOBJ+= 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
+endif
+
+PWDGRP_DIR:=$(top_srcdir)libc/pwd_grp
+PWDGRP_OUT:=$(top_builddir)libc/pwd_grp
+
+PWDGRP_MSRC:=$(PWDGRP_DIR)/$(MSRC)
+PWDGRP_MOBJ:=$(patsubst %.o,$(PWDGRP_OUT)/%.o,$(MOBJ))
+
+PWDGRP_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(PWDGRP_MOBJ))))
+
+$(PWDGRP_MOBJ) $(PWDGRP_MOBJ:.o=.os): $(PWDGRP_MSRC)
+ $(compile.m)
+
+libc-a-y+=$(PWDGRP_MOBJ)
+libc-a-$(HAS_SHADOW)+=$(PWDGRP_OUT)/lckpwdf.o
+libc-a-pic-y+=$(PWDGRP_MOBJ:.o=.os)
+libc-a-pic-$(HAS_SHADOW)+=$(PWDGRP_OUT)/lckpwdf.os
+libc-so-y+=$(PWDGRP_MOBJ:.o=.os)
+libc-so-$(HAS_SHADOW)+=$(PWDGRP_OUT)/lckpwdf.os
+
+CFLAGS-multi-y+=$(PWDGRP_DEF)
+libc-multi-y+=$(PWDGRP_MSRC)
+libc-multi-$(HAS_SHADOW)+=$(PWDGRP_DIR)/lckpwdf.c
+
+objclean-y+=pwdgrp_objclean
+
+pwdgrp_objclean:
+ $(RM) $(PWDGRP_OUT)/*.{o,os}
diff --git a/libc/signal/Makefile.in b/libc/signal/Makefile.in
new file mode 100644
index 000000000..22c9f35ea
--- /dev/null
+++ b/libc/signal/Makefile.in
@@ -0,0 +1,36 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CSRC:= allocrtsig.c killpg.c raise.c sigaction.c sigaddset.c sigandset.c \
+ sigblock.c sigdelset.c sigempty.c sigfillset.c siggetmask.c sighold.c \
+ sigignore.c sigintr.c sigisempty.c sigismem.c sigjmp.c signal.c \
+ sigorset.c sigpause.c sigrelse.c sigset.c sigsetmask.c sigsetops.c \
+ sysv_signal.c sigwait.c
+
+ifneq ($(strip $(ARCH_OBJS)),)
+CSRC:=$(filter-out $(notdir $(ARCH_OBJS:.o=.c)),$(CSRC))
+endif
+
+SIGNAL_DIR:=$(top_srcdir)libc/signal
+SIGNAL_OUT:=$(top_builddir)libc/signal
+
+SIGNAL_SRC:=$(patsubst %.c,$(SIGNAL_DIR)/%.c,$(CSRC))
+
+SIGNAL_OBJ:=$(patsubst $(SIGNAL_DIR)/%.c,$(SIGNAL_OUT)/%.o,$(SIGNAL_SRC))
+
+libc-a-y+=$(SIGNAL_OBJ)
+libc-a-pic-y+=$(SIGNAL_OBJ:.o=.os)
+libc-so-y+=$(SIGNAL_OBJ:.o=.os)
+
+# either sigaction or allocrtsig have to be removed
+#libc-multi-y+=$(SIGNAL_SRC)
+libc-nomulti-y+=$(SIGNAL_OBJ)
+
+objclean-y+=signal_objclean
+
+signal_objclean:
+ $(RM) $(SIGNAL_OUT)/*.{o,os}
diff --git a/libc/stdio/Makefile.in b/libc/stdio/Makefile.in
new file mode 100644
index 000000000..9a98afe8a
--- /dev/null
+++ b/libc/stdio/Makefile.in
@@ -0,0 +1,143 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2004 Manuel Novoa III <mjn3@codepoet.org>
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under LGPL v2.1, see the file COPYING.LIB in this tarball for details.
+#
+
+# Note: The *64.o objects are empty when compiled without large file support.
+
+# SUSv3 functions
+CSRC:= fclose.c fcloseall.c fdopen.c fgetpos.c fopen.c freopen.c \
+ fseeko.c fsetpos.c ftello.c getdelim.c getline.c gets.c getw.c \
+ perror.c puts.c putw.c remove.c rewind.c setbuf.c setbuffer.c \
+ setlinebuf.c setvbuf.c ungetc.c \
+ printf.c vprintf.c vsprintf.c fprintf.c snprintf.c dprintf.c \
+ asprintf.c sprintf.c vasprintf.c vdprintf.c vsnprintf.c \
+ tmpfile.c tmpnam.c tmpnam_r.c popen.c tempnam.c ctermid.c
+
+# getc -> alias for fgetc
+# putc -> alias for fputc
+# rename is a syscall
+
+# Implementation support functions
+CSRC+= _READ.c _WRITE.c _adjust_pos.c _fopen.c _fwrite.c \
+ _rfill.c _stdio.c _trans2r.c _trans2w.c _wcommit.c \
+ _cs_funcs.c _load_inttype.c _store_inttype.c _uintmaxtostr.c
+ifeq ($(UCLIBC_HAS_FLOATS),y)
+CSRC+=_fpmaxtostr.c
+endif
+
+# stdio_ext.h functions
+CSRC+= __fbufsize.c __flbf.c __fpending.c __fpurge.c __freadable.c \
+ __freading.c __fsetlocking.c __fwritable.c __fwriting.c _flushlbf.c
+
+# Other glibc extensions
+ifeq ($(UCLIBC_HAS_GLIBC_CUSTOM_STREAMS),y)
+CSRC+=fopencookie.c fmemopen.c open_memstream.c
+endif
+
+# pthread functions
+CSRC+=flockfile.c ftrylockfile.c funlockfile.c
+
+# Functions with unlocked versions
+CUSRC:= clearerr.c feof.c ferror.c fflush.c fgetc.c fgets.c fileno.c \
+ fputc.c fputs.c fread.c fwrite.c getchar.c putchar.c
+# getc_unlocked -> alias for fgetc_unlocked
+# putc_unlocked -> alias for fputc_unlocked
+
+# Largefile functions (%64.o)
+CLSRC:=
+ifeq ($(UCLIBC_HAS_LFS),y)
+CLSRC:=fgetpos.c fopen.c freopen.c fseeko.c fsetpos.c ftello.c # tmpfile
+endif
+
+# vfprintf and support functions
+MSRC1:=vfprintf.c
+ifneq ($(USE_OLD_VFPRINTF),y)
+MOBJ1:= vfprintf.o \
+ _ppfs_init.o _ppfs_prepargs.o _ppfs_setargs.o _ppfs_parsespec.o \
+ register_printf_function.o parse_printf_format.o
+else
+MOBJ1:=
+CSRC+=old_vfprintf.c
+endif
+
+# vfscanf and support functions plus other *scanf funcs
+MSRC2:=scanf.c
+MOBJ2:= vfscanf.o __scan_cookie.o __psfs_parse_spec.o __psfs_do_numeric.o \
+ scanf.o sscanf.o fscanf.o vscanf.o vsscanf.o
+
+CWSRC:=
+ifeq ($(UCLIBC_HAS_WCHAR),y)
+CWSRC+=_wfwrite.c fwprintf.c swprintf.c vswprintf.c vwprintf.c wprintf.c \
+ fwide.c ungetwc.c
+CUSRC+=fgetwc.c getwchar.c fgetws.c fputwc.c putwchar.c fputws.c
+# getwc (fgetwc alias) getwc_unlocked (fgetwc_unlocked alias)
+# putwc (fputwc alias) putwc_unlocked (fputwc_unlocked alias)
+MOBJ1+=vfwprintf.o
+MOBJ2+=wscanf.o swscanf.o fwscanf.o vwscanf.o vswscanf.o vfwscanf.o
+endif
+
+CSRC+=$(CUSRC) $(CWSRC)
+
+STDIO_DIR:=$(top_srcdir)libc/stdio
+STDIO_OUT:=$(top_builddir)libc/stdio
+
+STDIO_SRC:=$(patsubst %.c,$(STDIO_DIR)/%.c,$(CSRC))
+STDIO_OBJ:=$(patsubst %.c,$(STDIO_OUT)/%.o,$(CSRC))
+STDIO_CUSRC:=$(patsubst %.c,$(STDIO_DIR)/%.c,$(CUSRC))
+STDIO_CUOBJ:=$(patsubst %.c,$(STDIO_OUT)/%_unlocked.o,$(CUSRC))
+STDIO_CLSRC:=$(patsubst %.c,$(STDIO_OUT)/%64.c,$(CLSRC))
+STDIO_CLOBJ:=$(patsubst %.c,$(STDIO_OUT)/%64.o,$(CLSRC))
+
+STDIO_MSRC1:=$(patsubst %.c,$(STDIO_DIR)/%.c,$(MSRC1))
+STDIO_MSRC2:=$(patsubst %.c,$(STDIO_DIR)/%.c,$(MSRC2))
+STDIO_MOBJ1:=$(patsubst %.o,$(STDIO_OUT)/%.o,$(MOBJ1))
+STDIO_MOBJ2:=$(patsubst %.o,$(STDIO_OUT)/%.o,$(MOBJ2))
+
+STDIO_MSRC:=$(STDIO_MSRC1) $(STDIO_MSRC2)
+STDIO_MOBJ:=$(STDIO_MOBJ1) $(STDIO_MOBJ2)
+
+#STDIO_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(STDIO_MOBJ))))
+
+STDIO_OBJS:=$(STDIO_OBJ) $(STDIO_MOBJ) $(STDIO_CUOBJ) $(STDIO_CLOBJ)
+
+#STDIO_NO_MULTI:=$(STDIO_CUOBJ) $(STDIO_CLOBJ)
+
+# these need special handling or rewrite to support multi-build
+# CUOBJ
+%_unlocked.o %_unlocked.os: %.c
+ $(compile.c) -D__DO_UNLOCKED
+
+# need this, else the other %64 files will get false rules
+$(STDIO_CLSRC): $(STDIO_OUT)/%64.c : $(STDIO_DIR)/%.c
+ cp $< $@
+
+$(STDIO_CLOBJ): %.o : %.c
+ $(compile.c) -D__DO_LARGEFILE
+
+$(STDIO_CLOBJ:.o=.os): %.os : %.c
+ $(compile.c) -D__DO_LARGEFILE
+
+$(STDIO_MOBJ1) $(STDIO_MOBJ1:.o=.os): $(STDIO_MSRC1)
+ $(compile.m)
+
+$(STDIO_MOBJ2) $(STDIO_MOBJ2:.o=.os): $(STDIO_MSRC2)
+ $(compile.m)
+
+libc-a-y+=$(STDIO_OBJS)
+libc-a-pic-y+=$(STDIO_OBJS:.o=.os)
+libc-so-y+=$(STDIO_OBJS:.o=.os)
+
+#CFLAGS-multi-y+=$(STDIO_DEF)
+#libc-multi-y+=$(STDIO_SRC) $(STDIO_MSRC)
+#libc-nomulti-y+=$(STDIO_NO_MULTI)
+libc-nomulti-y+=$(STDIO_OBJS)
+
+objclean-y+=stdio_objclean
+
+stdio_objclean:
+ $(RM) $(STDIO_OUT)/*.{o,os}
diff --git a/libc/stdlib/Makefile.in b/libc/stdlib/Makefile.in
new file mode 100644
index 000000000..3b00c8115
--- /dev/null
+++ b/libc/stdlib/Makefile.in
@@ -0,0 +1,122 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+include $(top_srcdir)libc/stdlib/malloc/Makefile.in
+include $(top_srcdir)libc/stdlib/malloc-simple/Makefile.in
+include $(top_srcdir)libc/stdlib/malloc-standard/Makefile.in
+
+MSRC1:=stdlib.c
+MOBJ1:= abs.o labs.o atoi.o atol.o strtol.o strtoul.o _stdlib_strto_l.o \
+ qsort.o bsearch.o \
+ llabs.o atoll.o strtoll.o strtoull.o _stdlib_strto_ll.o
+# (aliases) strtoq.o strtouq.o
+ifeq ($(UCLIBC_HAS_XLOCALE),y)
+MOBJ1x:=strtol_l.o strtoul_l.o _stdlib_strto_l_l.o \
+ strtoll_l.o strtoull_l.o _stdlib_strto_ll_l.o
+endif
+
+MSRC2:=strtod.c
+MOBJ2:=
+MOBJ2x:=
+
+ifeq ($(UCLIBC_HAS_FLOATS),y)
+MOBJ1+=atof.o
+MOBJ2+=strtod.o strtof.o strtold.o __strtofpmax.o __fp_range_check.o
+ifeq ($(UCLIBC_HAS_XLOCALE),y)
+MOBJ2x+=strtod_l.o strtof_l.o strtold_l.o __strtofpmax_l.o
+endif
+ifeq ($(UCLIBC_HAS_WCHAR),y)
+MOBJ2+=wcstod.o wcstof.o wcstold.o __wcstofpmax.o
+ifeq ($(UCLIBC_HAS_XLOCALE),y)
+MOBJ2x+=wcstod_l.o wcstof_l.o wcstold_l.o __wcstofpmax_l.o
+endif
+endif
+endif
+
+ifeq ($(UCLIBC_HAS_WCHAR),y)
+MOBJ1+= mblen.o mbtowc.o wctomb.o mbstowcs.o wcstombs.o \
+ _stdlib_mb_cur_max.o _stdlib_wcsto_l.o _stdlib_wcsto_ll.o \
+ wcstol.o wcstoul.o wcstoll.o wcstoull.o
+ifeq ($(UCLIBC_HAS_XLOCALE),y)
+MOBJ1x+=_stdlib_wcsto_l_l.o _stdlib_wcsto_ll_l.o \
+ wcstol_l.o wcstoul_l.o wcstoll_l.o wcstoull_l.o
+endif
+endif
+# (aliases) wcstoq.o wcstouq.o
+# wcstod wcstof wcstold
+
+MSRC3:=atexit.c
+MOBJ3:=on_exit.o __cxa_atexit.o __cxa_finalize.o __exit_handler.o exit.o
+ifeq ($(COMPAT_ATEXIT),y)
+MOBJ3+=old_atexit.o
+endif
+
+CSRC:= \
+ abort.c getenv.c mkdtemp.c mktemp.c realpath.c mkstemp.c mkstemp64.c \
+ rand.c random.c random_r.c setenv.c system.c div.c ldiv.c lldiv.c \
+ getpt.c ptsname.c grantpt.c unlockpt.c gcvt.c drand48-iter.c jrand48.c \
+ jrand48_r.c lrand48.c lrand48_r.c mrand48.c mrand48_r.c nrand48.c \
+ nrand48_r.c rand_r.c srand48.c srand48_r.c seed48.c seed48_r.c \
+ valloc.c posix_memalign.c a64l.c l64a.c
+ifeq ($(UCLIBC_HAS_FLOATS),y)
+CSRC+=drand48.c drand48_r.c erand48.c erand48_r.c
+endif
+
+STDLIB_DIR:=$(top_srcdir)libc/stdlib
+STDLIB_OUT:=$(top_builddir)libc/stdlib
+
+STDLIB_SRC:=$(patsubst %.c,$(STDLIB_DIR)/%.c,$(CSRC))
+STDLIB_OBJ:=$(patsubst %.c,$(STDLIB_OUT)/%.o,$(CSRC))
+
+STDLIB_MSRC1:=$(patsubst %.c,$(STDLIB_DIR)/%.c,$(MSRC1))
+STDLIB_MSRC2:=$(patsubst %.c,$(STDLIB_DIR)/%.c,$(MSRC2))
+STDLIB_MSRC3:=$(patsubst %.c,$(STDLIB_DIR)/%.c,$(MSRC3))
+STDLIB_MOBJ1:=$(patsubst %.o,$(STDLIB_OUT)/%.o,$(MOBJ1))
+STDLIB_MOBJ2:=$(patsubst %.o,$(STDLIB_OUT)/%.o,$(MOBJ2))
+STDLIB_MOBJ3:=$(patsubst %.o,$(STDLIB_OUT)/%.o,$(MOBJ3))
+STDLIB_MOBJ1x:=$(patsubst %.o,$(STDLIB_OUT)/%.o,$(MOBJ1x))
+STDLIB_MOBJ2x:=$(patsubst %.o,$(STDLIB_OUT)/%.o,$(MOBJ2x))
+
+STDLIB_MSRC:=$(STDLIB_MSRC1) $(STDLIB_MSRC2) $(STDLIB_MSRC3)
+STDLIB_MOBJ:=$(STDLIB_MOBJ1) $(STDLIB_MOBJ2) $(STDLIB_MOBJ3)
+
+STDLIB_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(STDLIB_MOBJ))))
+
+STDLIB_MOBJx:=$(STDLIB_MOBJ1x) $(STDLIB_MOBJ2x)
+
+STDLIB_OBJS:=$(STDLIB_OBJ) $(STDLIB_MOBJ) $(STDLIB_MOBJx)
+
+$(STDLIB_MOBJ1) $(STDLIB_MOBJ1:.o=.os): $(STDLIB_MSRC1)
+ $(compile.m)
+
+$(STDLIB_MOBJ2) $(STDLIB_MOBJ2:.o=.os): $(STDLIB_MSRC2)
+ $(compile.m)
+
+$(STDLIB_MOBJ3) $(STDLIB_MOBJ3:.o=.os) $(STDLIB_OUT)/atexit.os: $(STDLIB_MSRC3)
+ $(compile.m)
+
+$(STDLIB_MOBJ1x) $(STDLIB_MOBJ1x:.o=.os): $(STDLIB_MSRC1)
+ $(compile.m) -D__UCLIBC_DO_XLOCALE
+
+$(STDLIB_MOBJ2x) $(STDLIB_MOBJ2x:.o=.os): $(STDLIB_MSRC2)
+ $(compile.m) -D__UCLIBC_DO_XLOCALE
+
+libc-a-y+=$(STDLIB_OBJS) $(STDLIB_OUT)/atexit.o
+libc-a-pic-y+=$(STDLIB_OBJS:.o=.os) $(STDLIB_OUT)/atexit.os
+libc-so-y+=$(STDLIB_OBJS:.o=.os)
+# this should always be the PIC version, because it could be used in shared libs
+libc-nonshared-y+=$(STDLIB_OUT)/atexit.os
+
+CFLAGS-multi-y+=$(STDLIB_DEF)
+libc-multi-y+=$(STDLIB_SRC) $(STDLIB_MSRC)
+libc-nomulti-y+=$(STDLIB_MOBJx)
+
+objclean-y+=stdlib_objclean
+
+stdlib_objclean:
+ $(RM) $(STDLIB_OUT)/*.{o,os}
diff --git a/libc/stdlib/malloc-simple/Makefile.in b/libc/stdlib/malloc-simple/Makefile.in
new file mode 100644
index 000000000..42b302071
--- /dev/null
+++ b/libc/stdlib/malloc-simple/Makefile.in
@@ -0,0 +1,31 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+MSRC:=alloc.c
+MOBJ:=malloc.o realloc.o free.o calloc.o memalign.o
+
+STDLIB_MALLOC_SIMPLE_DIR:=$(top_srcdir)libc/stdlib/malloc-simple
+STDLIB_MALLOC_SIMPLE_OUT:=$(top_builddir)libc/stdlib/malloc-simple
+
+STDLIB_MALLOC_SIMPLE_MSRC:=$(STDLIB_MALLOC_SIMPLE_DIR)/$(MSRC)
+STDLIB_MALLOC_SIMPLE_MOBJ:=$(patsubst %.o,$(STDLIB_MALLOC_SIMPLE_OUT)/%.o,$(MOBJ))
+STDLIB_MALLOC_SIMPLE_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(STDLIB_MALLOC_SIMPLE_MOBJ))))
+
+libc-a-$(MALLOC_SIMPLE)+=$(STDLIB_MALLOC_SIMPLE_MOBJ)
+libc-a-pic-$(MALLOC_SIMPLE)+=$(STDLIB_MALLOC_SIMPLE_MOBJ:.o=.os)
+libc-so-$(MALLOC_SIMPLE)+=$(STDLIB_MALLOC_SIMPLE_MOBJ:.o=.os)
+
+CFLAGS-multi-$(MALLOC_SIMPLE)+=$(STDLIB_MALLOC_SIMPLE_DEF)
+libc-multi-$(MALLOC_SIMPLE)+=$(STDLIB_MALLOC_SIMPLE_MSRC)
+
+$(STDLIB_MALLOC_SIMPLE_MOBJ) $(STDLIB_MALLOC_SIMPLE_MOBJ:.o=.os): $(STDLIB_MALLOC_SIMPLE_MSRC)
+ $(compile.m)
+
+objclean-y+=stdlib_malloc_simple_objclean
+
+stdlib_malloc_simple_objclean:
+ $(RM) $(STDLIB_MALLOC_SIMPLE_OUT)/*.{o,os}
diff --git a/libc/stdlib/malloc-standard/Makefile.in b/libc/stdlib/malloc-standard/Makefile.in
new file mode 100644
index 000000000..e8c34b544
--- /dev/null
+++ b/libc/stdlib/malloc-standard/Makefile.in
@@ -0,0 +1,33 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+# Turn on malloc debugging if requested
+ifeq ($(UCLIBC_MALLOC_DEBUGGING),y)
+CFLAGS+=-D__MALLOC_DEBUGGING
+endif
+
+# calloc.c can be found at uClibc/libc/stdlib/calloc.c
+# valloc.c can be found at uClibc/libc/stdlib/valloc.c
+CSRC:=malloc.c calloc.c realloc.c free.c memalign.c mallopt.c mallinfo.c
+
+STDLIB_MALLOC_STANDARD_DIR:=$(top_srcdir)libc/stdlib/malloc-standard
+STDLIB_MALLOC_STANDARD_OUT:=$(top_builddir)libc/stdlib/malloc-standard
+
+STDLIB_MALLOC_STANDARD_SRC:=$(patsubst %.c,$(STDLIB_MALLOC_STANDARD_DIR)/%.c,$(CSRC))
+STDLIB_MALLOC_STANDARD_OBJ:=$(patsubst %.c,$(STDLIB_MALLOC_STANDARD_OUT)/%.o,$(CSRC))
+
+libc-a-$(MALLOC_STANDARD)+=$(STDLIB_MALLOC_STANDARD_OBJ)
+libc-a-pic-$(MALLOC_STANDARD)+=$(STDLIB_MALLOC_STANDARD_OBJ:.o=.os)
+libc-so-$(MALLOC_STANDARD)+=$(STDLIB_MALLOC_STANDARD_OBJ:.o=.os)
+
+libc-multi-$(MALLOC_STANDARD)+=$(STDLIB_MALLOC_STANDARD_SRC)
+
+objclean-y+=stdlib_malloc_standard_objclean
+
+stdlib_malloc_standard_objclean:
+ $(RM) $(STDLIB_MALLOC_STANDARD_OUT)/*.{o,os}
diff --git a/libc/stdlib/malloc/Makefile.in b/libc/stdlib/malloc/Makefile.in
new file mode 100644
index 000000000..6a0e3cee3
--- /dev/null
+++ b/libc/stdlib/malloc/Makefile.in
@@ -0,0 +1,42 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2002-2003 NEC Electronics Corporation
+# Copyright (C) 2002-2003 Miles Bader <miles@gnu.org>
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CSRC:= malloc.c calloc.c free.c realloc.c memalign.c \
+ heap_alloc.c heap_alloc_at.c heap_free.c
+
+# Turn on malloc debugging if requested
+ifeq ($(UCLIBC_MALLOC_DEBUGGING),y)
+CSRC+=malloc_debug.c heap_debug.c
+CFLAGS+=-DMALLOC_DEBUGGING -DHEAP_DEBUGGING
+ifeq ($(UCLIBC_UCLINUX_BROKEN_MUNMAP),y)
+CFLAGS+=-DMALLOC_MMB_DEBUGGING
+endif
+endif
+
+STDLIB_MALLOC_DIR:=$(top_srcdir)libc/stdlib/malloc
+STDLIB_MALLOC_OUT:=$(top_builddir)libc/stdlib/malloc
+
+STDLIB_MALLOC_SRC:=$(patsubst %.c,$(STDLIB_MALLOC_DIR)/%.c,$(CSRC))
+STDLIB_MALLOC_OBJ:=$(patsubst %.c,$(STDLIB_MALLOC_OUT)/%.o,$(CSRC))
+
+libc-a-$(MALLOC)+=$(STDLIB_MALLOC_OBJ)
+libc-a-pic-$(MALLOC)+=$(STDLIB_MALLOC_OBJ:.o=.os)
+libc-so-$(MALLOC)+=$(STDLIB_MALLOC_OBJ:.o=.os)
+
+#libc-multi-$(MALLOC)+=$(STDLIB_MALLOC_SRC)
+libc-nomulti-$(MALLOC)+=$(STDLIB_MALLOC_OBJ)
+
+objclean-y+=stdlib_malloc_objclean
+
+stdlib_malloc_objclean:
+ $(RM) $(STDLIB_MALLOC_OUT)/*.{o,os}
+
+malloc.o free.o realloc.o memalign.o: malloc.h
+# Depend on uClinux_config.h to cache changes in __UCLIBC_MALLOC_DEBUGGING__
+$(STDLIB_MALLOC_OBJ): heap.h $(top_builddir)include/bits/uClibc_config.h
diff --git a/libc/string/Makefile.in b/libc/string/Makefile.in
new file mode 100644
index 000000000..16acafbe1
--- /dev/null
+++ b/libc/string/Makefile.in
@@ -0,0 +1,95 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+# order is relevant
+-include $(top_srcdir)libc/string/$(TARGET_ARCH)/Makefile.in
+include $(top_srcdir)libc/string/generic/Makefile.in
+
+MSRC:=wstring.c
+MOBJ:= basename.o bcopy.o bzero.o dirname.o ffs.o memccpy.o memchr.o memcmp.o \
+ memcpy.o memmove.o mempcpy.o memrchr.o memset.o rawmemchr.o stpcpy.o \
+ stpncpy.o strcasecmp.o strcasestr.o strcat.o strchrnul.o strchr.o \
+ strcmp.o strcpy.o strcspn.o strdup.o strlen.o strncasecmp.o strncat.o \
+ strncmp.o strncpy.o strndup.o strnlen.o strpbrk.o strrchr.o strsep.o \
+ strspn.o strstr.o strtok.o strtok_r.o strerror.o __xpg_strerror_r.o \
+ _string_syserrmsgs.o __glibc_strerror_r.o \
+ _string_syssigmsgs.o sys_siglist.o strsignal.o psignal.o \
+ __xpg_basename.o strlcat.o strlcpy.o sys_errlist.o memmem.o
+
+MOBJW=
+ifeq ($(UCLIBC_HAS_WCHAR),y)
+MOBJW= wcscasecmp.o wcscat.o wcschrnul.o wcschr.o wcscmp.o wcscpy.o wcscspn.o \
+ wcsdup.o wcslen.o wcsncasecmp.o wcsncat.o wcsncmp.o wcsncpy.o \
+ wcsnlen.o wcspbrk.o wcsrchr.o wcsspn.o wcsstr.o wcstok.o wmemchr.o \
+ wmemcmp.o wmemcpy.o wmemmove.o wmempcpy.o wmemset.o wcpcpy.o wcpncpy.o \
+ __wcslcpy.o \
+ wcsxfrm.o strxfrm.o # wcscoll strcoll.o
+endif
+
+MOBJx=
+MOBJWx=
+ifeq ($(UCLIBC_HAS_XLOCALE),y)
+MOBJx+=strcasecmp_l.o strncasecmp_l.o
+ifeq ($(UCLIBC_HAS_WCHAR),y)
+MOBJWx+=wcscasecmp_l.o wcsncasecmp_l.o wcsxfrm_l.o strxfrm_l.o
+endif
+endif
+
+#ffsl ffsll
+
+ifeq ($(UCLIBC_HAS_STRING_ARCH_OPT),y)
+ifneq ($(strip $(STRING_ARCH_OBJS)),)
+MOBJ:=$(filter-out $(notdir $(STRING_ARCH_OBJS)),$(MOBJ))
+endif
+endif
+
+ifeq ($(UCLIBC_HAS_STRING_GENERIC_OPT),y)
+ifneq ($(strip $(STRING_GENERIC_OBJS)),)
+MOBJ:=$(filter-out $(notdir $(STRING_GENERIC_OBJS)),$(MOBJ))
+endif
+endif
+
+STRING_DIR:=$(top_srcdir)libc/string
+STRING_OUT:=$(top_builddir)libc/string
+
+STRING_MSRC:=$(patsubst %.c,$(STRING_DIR)/%.c,$(MSRC))
+STRING_MOBJ:=$(patsubst %.o,$(STRING_OUT)/%.o,$(MOBJ))
+STRING_MOBJW=$(patsubst %.o,$(STRING_OUT)/%.o,$(MOBJW))
+STRING_MOBJx=$(patsubst %.o,$(STRING_OUT)/%.o,$(MOBJx))
+STRING_MOBJWx=$(patsubst %.o,$(STRING_OUT)/%.o,$(MOBJWx))
+
+#STRING_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(STRING_MOBJ))))
+
+STRING_Wx=$(STRING_MOBJW) $(STRING_MOBJx) $(STRING_MOBJWx)
+STRING_OBJS:=$(STRING_MOBJ) $(STRING_Wx)
+
+$(STRING_MOBJ) $(STRING_MOBJ:.o=.os): $(STRING_MSRC)
+ $(compile.m)
+
+$(STRING_MOBJW) $(STRING_MOBJW:.o=.os): $(STRING_MSRC)
+ $(compile.m) -DWANT_WIDE
+
+$(STRING_MOBJx) $(STRING_MOBJx:.o=.os): $(STRING_MSRC)
+ $(compile.m) -D__UCLIBC_DO_XLOCALE
+
+$(STRING_MOBJWx) $(STRING_MOBJWx:.o=.os): $(STRING_MSRC)
+ $(compile.m) -DWANT_WIDE -D__UCLIBC_DO_XLOCALE
+
+libc-a-y+=$(STRING_OBJS)
+libc-a-pic-y+=$(STRING_OBJS:.o=.os)
+libc-so-y+=$(STRING_OBJS:.o=.os)
+
+# multi does not work here, because arch/Makefile.in uses the same L_* defines
+#CFLAGS-multi-y+=$(STRING_DEF)
+#libc-multi-y+=$(STRING_MSRC)
+#libc-nomulti-y+=$(STRING_Wx)
+libc-nomulti-y+=$(STRING_OBJS)
+
+objclean-y+=string_objclean
+
+string_objclean:
+ $(RM) $(STRING_OUT)/{,*/}*.{o,os}
diff --git a/libc/string/arm/Makefile.in b/libc/string/arm/Makefile.in
new file mode 100644
index 000000000..0f9502d14
--- /dev/null
+++ b/libc/string/arm/Makefile.in
@@ -0,0 +1,28 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+SSRC:= _memcpy.S bcopy.S bzero.S memcmp.S memcpy.S memmove.S memset.S \
+ strcmp.S strlen.S strncmp.S
+
+STRING_ARCH_DIR:=$(top_srcdir)libc/string/arm
+STRING_ARCH_OUT:=$(top_builddir)libc/string/arm
+
+STRING_ARCH_SRC:=$(patsubst %.S,$(STRING_ARCH_DIR)/%.S,$(SSRC))
+STRING_ARCH_OBJ:=$(patsubst %.S,$(STRING_ARCH_OUT)/%.o,$(SSRC))
+
+STRING_ARCH_OBJS:=$(STRING_ARCH_OBJ)
+
+libc-a-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS)
+libc-a-pic-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os)
+libc-so-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os)
+
+libc-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_SRC)
+
+objclean-y+=string_arch_objclean
+
+string_arch_objclean:
+ $(RM) $(STRING_ARCH_OUT)/*.{o,os}
diff --git a/libc/string/frv/Makefile.in b/libc/string/frv/Makefile.in
new file mode 100644
index 000000000..649998325
--- /dev/null
+++ b/libc/string/frv/Makefile.in
@@ -0,0 +1,28 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2004 Alexandre Oliva <aoliva@redhat.com>
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+SSRC:=memcpy.S memset.S
+
+STRING_ARCH_DIR:=$(top_srcdir)libc/string/frv
+STRING_ARCH_OUT:=$(top_builddir)libc/string/frv
+
+STRING_ARCH_SRC:=$(patsubst %.S,$(STRING_ARCH_DIR)/%.S,$(SSRC))
+STRING_ARCH_OBJ:=$(patsubst %.S,$(STRING_ARCH_OUT)/%.o,$(SSRC))
+
+STRING_ARCH_OBJS:=$(STRING_ARCH_OBJ)
+
+libc-a-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS)
+libc-a-pic-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os)
+libc-so-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os)
+
+libc-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_SRC)
+
+objclean-y+=string_arch_objclean
+
+string_arch_objclean:
+ $(RM) $(STRING_ARCH_OUT)/*.{o,os}
diff --git a/libc/string/generic/Makefile.in b/libc/string/generic/Makefile.in
new file mode 100644
index 000000000..aef1ac882
--- /dev/null
+++ b/libc/string/generic/Makefile.in
@@ -0,0 +1,34 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+STRING_GENERIC_DIR:=$(top_srcdir)libc/string/generic
+STRING_GENERIC_OUT:=$(top_builddir)libc/string/generic
+
+STRING_GENERIC_SRC:=$(wildcard $(STRING_GENERIC_DIR)/*.c)
+MOBJ:=$(patsubst $(STRING_GENERIC_DIR)/%.c,%.o,$(STRING_GENERIC_SRC))
+
+ifeq ($(UCLIBC_HAS_STRING_ARCH_OPT),y)
+ifneq ($(strip $(STRING_ARCH_OBJS)),)
+MOBJ:=$(filter-out $(notdir $(STRING_ARCH_OBJS)),$(MOBJ))
+endif
+endif
+
+STRING_GENERIC_OBJ:=$(patsubst %.o,$(STRING_GENERIC_OUT)/%.o,$(MOBJ))
+
+STRING_GENERIC_OBJS:=$(STRING_GENERIC_OBJ)
+
+libc-a-$(UCLIBC_HAS_STRING_GENERIC_OPT)+=$(STRING_GENERIC_OBJS)
+libc-a-pic-$(UCLIBC_HAS_STRING_GENERIC_OPT)+=$(STRING_GENERIC_OBJS:.o=.os)
+libc-so-$(UCLIBC_HAS_STRING_GENERIC_OPT)+=$(STRING_GENERIC_OBJS:.o=.os)
+
+#libc-multi-$(UCLIBC_HAS_STRING_GENERIC_OPT)+=$(STRING_GENERIC_SRC)
+libc-nomulti-$(UCLIBC_HAS_STRING_GENERIC_OPT)+=$(STRING_GENERIC_OBJS)
+
+objclean-y+=string_generic_objclean
+
+string_generic_objclean:
+ $(RM) $(STRING_GENERIC_OUT)/*.{o,os}
diff --git a/libc/string/i386/Makefile.in b/libc/string/i386/Makefile.in
new file mode 100644
index 000000000..2935c8355
--- /dev/null
+++ b/libc/string/i386/Makefile.in
@@ -0,0 +1,36 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+MSRC:=string.c
+MOBJ:= strcpy.o strncpy.o strcat.o strncat.o strcmp.o \
+ strncmp.o strchr.o strrchr.o strlen.o strnlen.o \
+ memcpy.o memmove.o memchr.o memset.o
+
+STRING_ARCH_DIR:=$(top_srcdir)libc/string/i386
+STRING_ARCH_OUT:=$(top_builddir)libc/string/i386
+
+STRING_ARCH_MSRC:=$(patsubst %.c,$(STRING_ARCH_DIR)/%.c,$(MSRC))
+STRING_ARCH_MOBJ:=$(patsubst %.o,$(STRING_ARCH_OUT)/%.o,$(MOBJ))
+
+STRING_ARCH_OBJS:=$(STRING_ARCH_MOBJ)
+
+STRING_ARCH_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(STRING_ARCH_OBJS))))
+
+$(STRING_ARCH_MOBJ) $(STRING_ARCH_MOBJ:.o=.os): $(STRING_ARCH_MSRC)
+ $(compile.m)
+
+libc-a-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS)
+libc-a-pic-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os)
+libc-so-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os)
+
+CFLAGS-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_DEF)
+libc-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_MSRC)
+
+objclean-y+=string_arch_objclean
+
+string_arch_objclean:
+ $(RM) $(STRING_ARCH_OUT)/*.{o,os}
diff --git a/libc/string/mips/Makefile.in b/libc/string/mips/Makefile.in
new file mode 100644
index 000000000..2ba596b95
--- /dev/null
+++ b/libc/string/mips/Makefile.in
@@ -0,0 +1,27 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+SSRC:=memcpy.S memset.S
+
+STRING_ARCH_DIR:=$(top_srcdir)libc/string/mips
+STRING_ARCH_OUT:=$(top_builddir)libc/string/mips
+
+STRING_ARCH_SRC:=$(patsubst %.S,$(STRING_ARCH_DIR)/%.S,$(SSRC))
+STRING_ARCH_OBJ:=$(patsubst %.S,$(STRING_ARCH_OUT)/%.o,$(SSRC))
+
+STRING_ARCH_OBJS:=$(STRING_ARCH_OBJ)
+
+libc-a-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS)
+libc-a-pic-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os)
+libc-so-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os)
+
+libc-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_SRC)
+
+objclean-y+=string_arch_objclean
+
+string_arch_objclean:
+ $(RM) $(STRING_ARCH_OUT)/*.{o,os}
diff --git a/libc/string/powerpc/Makefile.in b/libc/string/powerpc/Makefile.in
new file mode 100644
index 000000000..d22312fe0
--- /dev/null
+++ b/libc/string/powerpc/Makefile.in
@@ -0,0 +1,34 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+MSRC:=string.c
+MOBJ:=memcpy.o memmove.o memset.o bzero.o
+
+STRING_ARCH_DIR:=$(top_srcdir)libc/string/powerpc
+STRING_ARCH_OUT:=$(top_builddir)libc/string/powerpc
+
+STRING_ARCH_MSRC:=$(patsubst %.c,$(STRING_ARCH_DIR)/%.c,$(MSRC))
+STRING_ARCH_MOBJ:=$(patsubst %.o,$(STRING_ARCH_OUT)/%.o,$(MOBJ))
+
+STRING_ARCH_OBJS:=$(STRING_ARCH_MOBJ)
+
+STRING_ARCH_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(STRING_ARCH_MOBJ))))
+
+$(STRING_ARCH_MOBJ) $(STRING_ARCH_MOBJ:.o=.os): $(STRING_ARCH_MSRC)
+ $(compile.m)
+
+libc-a-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS)
+libc-a-pic-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os)
+libc-so-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os)
+
+CFLAGS-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_DEF)
+libc-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_MSRC)
+
+objclean-y+=string_arch_objclean
+
+string_arch_objclean:
+ $(RM) $(STRING_ARCH_OUT)/*.{o,os}
diff --git a/libc/string/sh64/Makefile.in b/libc/string/sh64/Makefile.in
new file mode 100644
index 000000000..1b728958a
--- /dev/null
+++ b/libc/string/sh64/Makefile.in
@@ -0,0 +1,28 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2003 Paul Mundt <lethal@linux-sh.org>
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+SSRC:=memcpy.S memset.S strcpy.S strlen.S
+
+STRING_ARCH_DIR:=$(top_srcdir)libc/string/sh64
+STRING_ARCH_OUT:=$(top_builddir)libc/string/sh64
+
+STRING_ARCH_SRC:=$(patsubst %.S,$(STRING_ARCH_DIR)/%.S,$(SSRC))
+STRING_ARCH_OBJ:=$(patsubst %.S,$(STRING_ARCH_OUT)/%.o,$(SSRC))
+
+STRING_ARCH_OBJS:=$(STRING_ARCH_OBJ)
+
+libc-a-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS)
+libc-a-pic-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os)
+libc-so-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os)
+
+libc-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_SRC)
+
+objclean-y+=string_arch_objclean
+
+string_arch_objclean:
+ $(RM) $(STRING_ARCH_OUT)/*.{o,os}
diff --git a/libc/string/sparc/Makefile.in b/libc/string/sparc/Makefile.in
new file mode 100644
index 000000000..563271518
--- /dev/null
+++ b/libc/string/sparc/Makefile.in
@@ -0,0 +1,28 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+STRING_ARCH_DIR:=$(top_srcdir)libc/string/sparc
+STRING_ARCH_OUT:=$(top_builddir)libc/string/sparc
+
+STRING_ARCH_SRC:=$(wildcard $(STRING_ARCH_DIR)/*.c)
+STRING_ARCH_OBJ:=$(patsubst $(STRING_ARCH_DIR)/%.c,$(STRING_ARCH_OUT)/%.o,$(STRING_ARCH_SRC))
+
+STRING_ARCH_SSRC:=$(wildcard $(STRING_ARCH_DIR)/*.S)
+STRING_ARCH_SOBJ:=$(patsubst $(STRING_ARCH_DIR)/%.S,$(STRING_ARCH_OUT)/%.o,$(STRING_ARCH_SSRC))
+
+STRING_ARCH_OBJS:=$(STRING_ARCH_OBJ) $(STRING_ARCH_SOBJ)
+
+libc-a-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS)
+libc-a-pic-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os)
+libc-so-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os)
+
+libc-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_SRC) $(STRING_ARCH_SSRC)
+
+objclean-y+=string_arch_objclean
+
+string_arch_objclean:
+ $(RM) $(STRING_ARCH_OUT)/*.{o,os}
diff --git a/libc/string/x86_64/Makefile.in b/libc/string/x86_64/Makefile.in
new file mode 100644
index 000000000..83cc470c9
--- /dev/null
+++ b/libc/string/x86_64/Makefile.in
@@ -0,0 +1,28 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+STRING_ARCH_DIR:=$(top_srcdir)libc/string/x86_64
+STRING_ARCH_OUT:=$(top_builddir)libc/string/x86_64
+
+STRING_ARCH_SRC:=$(wildcard $(STRING_ARCH_DIR)/*.c)
+STRING_ARCH_OBJ:=$(patsubst $(STRING_ARCH_DIR)/%.c,$(STRING_ARCH_OUT)/%.o,$(STRING_ARCH_SRC))
+
+STRING_ARCH_SSRC:=$(wildcard $(STRING_ARCH_DIR)/*.S)
+STRING_ARCH_SOBJ:=$(patsubst $(STRING_ARCH_DIR)/%.S,$(STRING_ARCH_OUT)/%.o,$(STRING_ARCH_SSRC))
+
+STRING_ARCH_OBJS:=$(STRING_ARCH_OBJ) $(STRING_ARCH_SOBJ)
+
+libc-a-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS)
+libc-a-pic-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os)
+libc-so-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os)
+
+libc-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_SRC) $(STRING_ARCH_SSRC)
+
+objclean-y+=string_x86_64_objclean
+
+string_x86_64_objclean:
+ $(RM) $(STRING_ARCH_OUT)/*.{o,os}
diff --git a/libc/sysdeps/Makefile.in b/libc/sysdeps/Makefile.in
new file mode 100644
index 000000000..686cb7279
--- /dev/null
+++ b/libc/sysdeps/Makefile.in
@@ -0,0 +1,8 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+include $(top_srcdir)libc/sysdeps/linux/Makefile.in
diff --git a/libc/sysdeps/linux/Makefile.in b/libc/sysdeps/linux/Makefile.in
new file mode 100644
index 000000000..a8ae79edd
--- /dev/null
+++ b/libc/sysdeps/linux/Makefile.in
@@ -0,0 +1,10 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+# order is relevant
+include $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/Makefile.in
+include $(top_srcdir)libc/sysdeps/linux/common/Makefile.in
diff --git a/libc/sysdeps/linux/arm/Makefile.in b/libc/sysdeps/linux/arm/Makefile.in
new file mode 100644
index 000000000..87339cd0d
--- /dev/null
+++ b/libc/sysdeps/linux/arm/Makefile.in
@@ -0,0 +1,38 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CSRC:=brk.c syscall.c ioperm.c iopl.c sigaction.c __syscall_error.c
+SSRC:= __longjmp.S vfork.S clone.S setjmp.S bsd-setjmp.S \
+ bsd-_setjmp.S sigrestorer.S mmap64.S
+
+ARCH_DIR:=$(top_srcdir)libc/sysdeps/linux/arm
+ARCH_OUT:=$(top_builddir)libc/sysdeps/linux/arm
+
+ARCH_CSRC:=$(patsubst %.c,$(ARCH_DIR)/%.c,$(CSRC))
+ARCH_COBJ:=$(patsubst %.c,$(ARCH_OUT)/%.o,$(CSRC))
+ARCH_SSRC:=$(patsubst %.S,$(ARCH_DIR)/%.S,$(SSRC))
+ARCH_SOBJ:=$(patsubst %.S,$(ARCH_OUT)/%.o,$(SSRC))
+
+ARCH_OBJS:=$(ARCH_COBJ) $(ARCH_SOBJ)
+
+crt-y:=create
+libc-a-y+=$(ARCH_OBJS)
+libc-a-pic-y+=$(ARCH_OBJS:.o=.os)
+libc-so-y+=$(ARCH_OBJS:.o=.os)
+
+#libc-multi-y+=$(ARCH_CSRC)
+libc-nomulti-y+=$(ARCH_OBJS)
+
+objclean-y+=arch_objclean
+
+arch_objclean:
+ $(RM) $(ARCH_OUT)/*.{o,os}
+
+headers-y+=arch_headers
+
+arch_headers:
+ $(LN) -fs ../libc/sysdeps/linux/arm/fpu_control.h $(top_builddir)include/
diff --git a/libc/sysdeps/linux/common/Makefile.in b/libc/sysdeps/linux/common/Makefile.in
new file mode 100644
index 000000000..85826913e
--- /dev/null
+++ b/libc/sysdeps/linux/common/Makefile.in
@@ -0,0 +1,52 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+COMMON_DIR:=$(top_srcdir)libc/sysdeps/linux/common
+COMMON_OUT:=$(top_builddir)libc/sysdeps/linux/common
+
+CSRC:=$(patsubst $(COMMON_DIR)/%.c,%.c,$(wildcard $(COMMON_DIR)/*.c))
+
+ifeq ($(EXCLUDE_BRK),y)
+CSRC:=$(filter-out sbrk.c,$(CSRC))
+endif
+
+CSRC:=$(filter-out ssp-local.c,$(CSRC))
+ifneq ($(UCLIBC_HAS_SSP),y)
+CSRC:=$(filter-out ssp.c,$(CSRC))
+endif
+
+# fails for some reason
+ifneq ($(strip $(ARCH_OBJS)),)
+CSRC:=$(filter-out $(notdir $(ARCH_OBJS:.o=.c)),$(CSRC))
+endif
+
+CFLAGS-ssp.c=$(SSP_DISABLE_FLAGS)
+CFLAGS-ssp-local.c=$(SSP_DISABLE_FLAGS)
+
+COMMON_SRC:=$(patsubst %.c,$(COMMON_DIR)/%.c,$(CSRC))
+COMMON_OBJ:=$(patsubst %.c,$(COMMON_OUT)/%.o,$(CSRC))
+
+libc-a-y+=$(COMMON_OBJ)
+libc-a-$(UCLIBC_HAS_SSP)+=$(COMMON_OUT)/ssp-local.o
+libc-a-pic-y+=$(COMMON_OBJ:.o=.os)
+libc-a-pic-$(UCLIBC_HAS_SSP)+=$(COMMON_OUT)/ssp-local.os
+libc-so-y+=$(COMMON_OBJ:.o=.os)
+libc-nonshared-$(UCLIBC_HAS_SSP)+=$(COMMON_OUT)/ssp-local.os
+
+#libc-multi-y+=$(filter-out $(COMMON_DIR)/ssp.c,$(COMMON_SRC))
+#libc-nomulti-$(UCLIBC_HAS_SSP)+=$(COMMON_OUT)/ssp.o
+libc-nomulti-y+=$(COMMON_OBJ)
+
+objclean-y+=common_objclean
+
+common_objclean:
+ $(RM) $(COMMON_OUT)/*.{o,os}
+
+headers-y+=common_headers
+
+common_headers:
+ $(LN) -fs ../libc/sysdeps/linux/common/fpu_control.h $(top_builddir)include/
diff --git a/libc/sysdeps/linux/i386/Makefile.in b/libc/sysdeps/linux/i386/Makefile.in
new file mode 100644
index 000000000..9593b7405
--- /dev/null
+++ b/libc/sysdeps/linux/i386/Makefile.in
@@ -0,0 +1,39 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CSRC:=brk.c sigaction.c __syscall_error.c
+
+SSRC:= __longjmp.S vfork.S clone.S setjmp.S bsd-setjmp.S \
+ bsd-_setjmp.S syscall.S mmap.S mmap64.S
+
+ARCH_DIR:=$(top_srcdir)libc/sysdeps/linux/i386
+ARCH_OUT:=$(top_builddir)libc/sysdeps/linux/i386
+
+ARCH_CSRC:=$(patsubst %.c,$(ARCH_DIR)/%.c,$(CSRC))
+ARCH_COBJ:=$(patsubst %.c,$(ARCH_OUT)/%.o,$(CSRC))
+ARCH_SSRC:=$(patsubst %.S,$(ARCH_DIR)/%.S,$(SSRC))
+ARCH_SOBJ:=$(patsubst %.S,$(ARCH_OUT)/%.o,$(SSRC))
+
+ARCH_OBJS:=$(ARCH_COBJ) $(ARCH_SOBJ)
+
+crt-y:=create
+libc-a-y+=$(ARCH_OBJS)
+libc-a-pic-y+=$(ARCH_OBJS:.o=.os)
+libc-so-y+=$(ARCH_OBJS:.o=.os)
+
+#libc-multi-y+=$(ARCH_CSRC)
+libc-nomulti-y+=$(ARCH_OBJS)
+
+objclean-y+=arch_objclean
+
+arch_objclean:
+ $(RM) $(ARCH_OUT)/*.{o,os}
+
+headers-y+=arch_headers
+
+arch_headers:
+ $(LN) -fs ../libc/sysdeps/linux/i386/fpu_control.h $(top_builddir)include/
diff --git a/libc/sysdeps/linux/mips/Makefile.in b/libc/sysdeps/linux/mips/Makefile.in
new file mode 100644
index 000000000..e6075d7f6
--- /dev/null
+++ b/libc/sysdeps/linux/mips/Makefile.in
@@ -0,0 +1,42 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CSRC:= __longjmp.c brk.c setjmp_aux.c mmap.c __syscall_error.c \
+ cacheflush.c pread_write.c sysmips.c _test_and_set.c sigaction.c
+
+SSRC:=bsd-_setjmp.S bsd-setjmp.S setjmp.S clone.S syscall.S pipe.S
+
+
+ARCH_DIR:=$(top_srcdir)libc/sysdeps/linux/mips
+ARCH_OUT:=$(top_builddir)libc/sysdeps/linux/mips
+
+ARCH_CSRC:=$(patsubst %.c,$(ARCH_DIR)/%.c,$(CSRC))
+ARCH_COBJ:=$(patsubst %.c,$(ARCH_OUT)/%.o,$(CSRC))
+ARCH_SSRC:=$(patsubst %.S,$(ARCH_DIR)/%.S,$(SSRC))
+ARCH_SOBJ:=$(patsubst %.S,$(ARCH_OUT)/%.o,$(SSRC))
+
+ARCH_OBJS:=$(ARCH_COBJ) $(ARCH_SOBJ)
+
+crt-y:=create
+libc-a-y+=$(ARCH_OBJS)
+libc-a-pic-y+=$(ARCH_OBJS:.o=.os)
+libc-so-y+=$(ARCH_OBJS:.o=.os)
+
+#libc-multi-y+=$(ARCH_CSRC)
+libc-nomulti-y+=$(ARCH_OBJS)
+
+objclean-y+=arch_objclean
+
+arch_objclean:
+ $(RM) $(ARCH_OUT)/*.{o,os} $(top_builddir)include/sgidefs.h
+
+headers-y+=arch_headers
+
+arch_headers:
+ $(LN) -fs ../libc/sysdeps/linux/mips/sgidefs.h $(top_builddir)include/
+# $(LN) -fs ../libc/sysdeps/linux/mips/regdef.h $(top_builddir)include/
+ $(LN) -fs ../libc/sysdeps/linux/mips/fpu_control.h $(top_builddir)include/
diff --git a/libc/sysdeps/linux/powerpc/Makefile.in b/libc/sysdeps/linux/powerpc/Makefile.in
new file mode 100644
index 000000000..3cc5ca539
--- /dev/null
+++ b/libc/sysdeps/linux/powerpc/Makefile.in
@@ -0,0 +1,38 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CSRC:=mmap.c __syscall_error.c pread_write.c ioctl.c
+SSRC:= __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S brk.S \
+ clone.S __uClibc_syscall.S syscall.S vfork.S
+
+ARCH_DIR:=$(top_srcdir)libc/sysdeps/linux/powerpc
+ARCH_OUT:=$(top_builddir)libc/sysdeps/linux/powerpc
+
+ARCH_CSRC:=$(patsubst %.c,$(ARCH_DIR)/%.c,$(CSRC))
+ARCH_COBJ:=$(patsubst %.c,$(ARCH_OUT)/%.o,$(CSRC))
+ARCH_SSRC:=$(patsubst %.S,$(ARCH_DIR)/%.S,$(SSRC))
+ARCH_SOBJ:=$(patsubst %.S,$(ARCH_OUT)/%.o,$(SSRC))
+
+ARCH_OBJS:=$(ARCH_COBJ) $(ARCH_SOBJ)
+
+crt-y:=create
+libc-a-y+=$(ARCH_OBJS)
+libc-a-pic-y+=$(ARCH_OBJS:.o=.os)
+libc-so-y+=$(ARCH_OBJS:.o=.os)
+
+#libc-multi-y+=$(ARCH_CSRC)
+libc-nomulti-y+=$(ARCH_OBJS)
+
+objclean-y+=arch_objclean
+
+arch_objclean:
+ $(RM) $(ARCH_OUT)/*.{o,os}
+
+headers-y+=arch_headers
+
+arch_headers:
+ $(LN) -fs ../libc/sysdeps/linux/powerpc/fpu_control.h $(top_builddir)include/
diff --git a/libc/sysdeps/linux/x86_64/Makefile.in b/libc/sysdeps/linux/x86_64/Makefile.in
new file mode 100644
index 000000000..a167993a2
--- /dev/null
+++ b/libc/sysdeps/linux/x86_64/Makefile.in
@@ -0,0 +1,38 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CSRC:=brk.c sigaction.c __syscall_error.c mmap.c
+
+SSRC:=__longjmp.S vfork.S setjmp.S syscall.S bsd-setjmp.S bsd-_setjmp.S clone.S
+
+ARCH_DIR:=$(top_srcdir)libc/sysdeps/linux/x86_64
+ARCH_OUT:=$(top_builddir)libc/sysdeps/linux/x86_64
+
+ARCH_CSRC:=$(patsubst %.c,$(ARCH_DIR)/%.c,$(CSRC))
+ARCH_COBJ:=$(patsubst %.c,$(ARCH_OUT)/%.o,$(CSRC))
+ARCH_SSRC:=$(patsubst %.S,$(ARCH_DIR)/%.S,$(SSRC))
+ARCH_SOBJ:=$(patsubst %.S,$(ARCH_OUT)/%.o,$(SSRC))
+
+ARCH_OBJS:=$(ARCH_COBJ) $(ARCH_SOBJ)
+
+crt-y:=create
+libc-a-y+=$(ARCH_OBJS)
+libc-a-pic-y+=$(ARCH_OBJS:.o=.os)
+libc-so-y+=$(ARCH_OBJS:.o=.os)
+
+#libc-multi-y+=$(ARCH_CSRC)
+libc-nomulti-y+=$(ARCH_OBJS)
+
+objclean-y+=arch_objclean
+
+arch_objclean:
+ $(RM) $(ARCH_OUT)/*.{o,os}
+
+headers-y+=arch_headers
+
+arch_headers:
+ $(LN) -fs ../libc/sysdeps/linux/x86_64/fpu_control.h $(top_builddir)include/
diff --git a/libc/termios/Makefile.in b/libc/termios/Makefile.in
new file mode 100644
index 000000000..8e32e1ae6
--- /dev/null
+++ b/libc/termios/Makefile.in
@@ -0,0 +1,41 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CSRC:=tcgetattr.c tcgetsid.c tcsetattr.c ttyname.c
+
+MSRC:= termios.c
+MOBJ:= tcdrain.o tcflow.o tcflush.o tcsendbreak.o tcsetpgrp.o tcgetpgrp.o \
+ isatty.o cfgetospeed.o cfgetispeed.o cfsetospeed.o cfsetispeed.o \
+ cfmakeraw.o cfsetspeed.o
+
+TERMIOS_DIR:=$(top_srcdir)libc/termios
+TERMIOS_OUT:=$(top_builddir)libc/termios
+
+TERMIOS_SRC:=$(patsubst %.c,$(TERMIOS_DIR)/%.c,$(CSRC))
+TERMIOS_OBJ:=$(patsubst %.c,$(TERMIOS_OUT)/%.o,$(CSRC))
+
+TERMIOS_MSRC:=$(patsubst %.c,$(TERMIOS_DIR)/%.c,$(MSRC))
+TERMIOS_MOBJ:=$(patsubst %.o,$(TERMIOS_OUT)/%.o,$(MOBJ))
+TERMIOS_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(TERMIOS_MOBJ))))
+
+TERMIOS_OBJS:=$(TERMIOS_OBJ) $(TERMIOS_MOBJ)
+
+$(TERMIOS_MOBJ) $(TERMIOS_MOBJ:.o=.os): $(TERMIOS_MSRC)
+ $(compile.m)
+
+libc-a-y+=$(TERMIOS_OBJS)
+libc-a-pic-y+=$(TERMIOS_OBJS:.o=.os)
+libc-so-y+=$(TERMIOS_OBJS:.o=.os)
+
+CFLAGS-multi-y+=$(TERMIOS_DEF)
+libc-multi-y+=$(TERMIOS_SRC) $(TERMIOS_MSRC)
+
+objclean-y+=termios_objclean
+
+termios_objclean:
+ $(RM) $(TERMIOS_OUT)/*.{o,os}
diff --git a/libc/unistd/Makefile.in b/libc/unistd/Makefile.in
new file mode 100644
index 000000000..a72b2d9ed
--- /dev/null
+++ b/libc/unistd/Makefile.in
@@ -0,0 +1,51 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+CSRC:= sleep.c usleep.c ualarm.c getpass.c sysconf.c getlogin.c \
+ fpathconf.c confstr.c pathconf.c swab.c usershell.c \
+ getsubopt.c daemon.c
+
+MSRC:=exec.c
+MOBJ:=execl.o execv.o execle.o execlp.o execvp.o
+
+ifneq ($(ARCH_HAS_MMU),y)
+MOBJ+=__exec_alloc.o
+endif
+
+ifeq ($(UCLIBC_HAS_GNU_GETOPT),y)
+CSRC+=getopt.c
+else
+CSRC+=getopt-susv3.c
+endif
+
+UNISTD_DIR:=$(top_srcdir)libc/unistd
+UNISTD_OUT:=$(top_builddir)libc/unistd
+
+UNISTD_SRC:=$(patsubst %.c,$(UNISTD_DIR)/%.c,$(CSRC))
+UNISTD_OBJ:=$(patsubst %.c,$(UNISTD_OUT)/%.o,$(CSRC))
+
+UNISTD_MSRC:=$(patsubst %.c,$(UNISTD_DIR)/%.c,$(MSRC))
+UNISTD_MOBJ:=$(patsubst %.o,$(UNISTD_OUT)/%.o,$(MOBJ))
+
+UNISTD_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(UNISTD_MOBJ))))
+
+UNISTD_OBJS:=$(UNISTD_OBJ) $(UNISTD_MOBJ)
+
+$(UNISTD_MOBJ) $(UNISTD_MOBJ:.o=.os): $(UNISTD_MSRC)
+ $(compile.m)
+
+libc-a-y+=$(UNISTD_OBJS)
+libc-a-pic-y+=$(UNISTD_OBJS:.o=.os)
+libc-so-y+=$(UNISTD_OBJS:.o=.os)
+
+CFLAGS-multi-y+=$(UNISTD_DEF)
+libc-multi-y+=$(UNISTD_SRC) $(UNISTD_MSRC)
+
+objclean-y+=unistd_objclean
+
+unistd_objclean:
+ $(RM) $(UNISTD_OUT)/*.{o,os}
diff --git a/libcrypt/Makefile.in b/libcrypt/Makefile.in
index e5c4bcfa7..5394a0538 100644
--- a/libcrypt/Makefile.in
+++ b/libcrypt/Makefile.in
@@ -1,16 +1,31 @@
-# Makefile.in for uClibc
+# Makefile for uClibc
#
-# Licensed under LGPL v2.1, see the file COPYING.LIB in this tarball for details.
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#
CFLAGS+=$(SSP_ALL_CFLAGS)
+#DOMULTI=y
+
LIB_NAME:=libcrypt
-srcdir=$(top_srcdir)$(LIB_NAME)
+libcrypt_DIR:=$(top_srcdir)libcrypt
+libcrypt_OUT:=$(top_builddir)libcrypt
+
+libcrypt_SRC:=$(wildcard $(libcrypt_DIR)/*.c)
+libcrypt_OBJ:=$(patsubst $(libcrypt_DIR)/%.c,$(libcrypt_OUT)/%.o,$(libcrypt_SRC))
+
+libcrypt-a-y:=$(libcrypt_OBJ)
+libcrypt-a-pic-y:=$(libcrypt_OBJ:.o=.os)
+libcrypt-so-y:=$(libcrypt_OBJ:.o=.os)
+
+libcrypt-multi-y:=$(libcrypt_SRC)
-libso-y+=$(top_builddir)lib/$(LIB_NAME).so
-liba-y+=$(top_builddir)lib/$(LIB_NAME).a
-libclean-y+=$(LIB_NAME)_clean
+objclean-y+=libcrypt_clean
-include $(top_srcdir)Makefile.libs
+lib-a-y+=$(top_builddir)lib/libcrypt.a
+lib-a-pic-y+=$(top_builddir)lib/libcrypt.a
+lib-so-y+=$(top_builddir)lib/libcrypt.so
diff --git a/libintl/Makefile.in b/libintl/Makefile.in
index cb0627dd7..8f5a75adc 100644
--- a/libintl/Makefile.in
+++ b/libintl/Makefile.in
@@ -1,23 +1,41 @@
-# Makefile.in for uClibc
+# Makefile for uClibc
#
-# Licensed under LGPL v2.1, see the file COPYING.LIB in this tarball for details.
+# Copyright (C) 2000 by Lineo, inc.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#
CFLAGS+=$(SSP_ALL_CFLAGS)
-LIB_NAME:=libintl
+#DOMULTI=y
-srcdir=$(top_srcdir)$(LIB_NAME)
-$(LIB_NAME)_DIR:=$(top_builddir)$(LIB_NAME)
+LIB_NAME:=libintl
-$(LIB_NAME)_MSRC:=$(srcdir)/intl.c
MOBJ:=gettext.o ngettext.o dgettext.o dcgettext.o dngettext.o dcngettext.o \
textdomain.o bindtextdomain.o bind_textdomain_codeset.o \
_nl_expand_alias.o _nl_msg_cat_cntr.o # glibc-isms
-$(LIB_NAME)_MOBJ:=$(patsubst %.o,$($(LIB_NAME)_DIR)/%.o,$(MOBJ))
-libso-$(UCLIBC_HAS_GETTEXT_AWARENESS)+=$(top_builddir)lib/$(LIB_NAME).so
-liba-$(UCLIBC_HAS_GETTEXT_AWARENESS)+=$(top_builddir)lib/$(LIB_NAME).a
-libclean-y+=$(LIB_NAME)_clean
+libintl_DIR:=$(top_srcdir)libintl
+libintl_OUT:=$(top_builddir)libintl
+
+libintl_MSRC:=$(libintl_DIR)/intl.c
+libintl_MOBJ:=$(patsubst %.o,$(libintl_OUT)/%.o,$(MOBJ))
+
+libintl_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(libintl_MOBJ))))
+
+$(libintl_MOBJ) $(libintl_MOBJ:.o=.os): $(libintl_MSRC)
+ $(compile.m)
+
+libintl-a-$(UCLIBC_HAS_GETTEXT_AWARENESS):=$(libintl_MOBJ)
+libintl-a-pic-$(UCLIBC_HAS_GETTEXT_AWARENESS):=$(libintl_MOBJ:.o=.os)
+libintl-so-$(UCLIBC_HAS_GETTEXT_AWARENESS):=$(libintl_MOBJ:.o=.os)
+
+CFLAGS-multi-$(UCLIBC_HAS_GETTEXT_AWARENESS):=$(libintl_DEF)
+libintl-multi-$(UCLIBC_HAS_GETTEXT_AWARENESS):=$(libintl_MSRC)
+
+objclean-y+=libintl_clean
-include $(top_srcdir)Makefile.libs
+lib-a-$(UCLIBC_HAS_GETTEXT_AWARENESS)+=$(top_builddir)lib/libintl.a
+lib-a-pic-$(UCLIBC_HAS_GETTEXT_AWARENESS)+=$(top_builddir)lib/libintl.a
+lib-so-$(UCLIBC_HAS_GETTEXT_AWARENESS)+=$(top_builddir)lib/libintl.so
diff --git a/libm/Makefile.in b/libm/Makefile.in
index 1a90c567c..a61ceb2d2 100644
--- a/libm/Makefile.in
+++ b/libm/Makefile.in
@@ -1,16 +1,36 @@
-# Makefile.in for uClibc
+# Makefile for uClibc
#
-# Licensed under LGPL v2.1, see the file COPYING.LIB in this tarball for details.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+# The routines included in this math library are derived from the
+# math library for Apple's MacOS X/Darwin math library, which was
+# itself swiped from FreeBSD. The original copyright information
+# is as follows:
+#
+# Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+#
+# Developed at SunPro, a Sun Microsystems, Inc. business.
+# Permission to use, copy, modify, and distribute this
+# software is freely granted, provided that this notice
+# is preserved.
+#
+# It has been ported to work with uClibc and generally behave
+# by Erik Andersen <andersen@codepoet.org>
#
CFLAGS+=$(SSP_ALL_CFLAGS)
CFLAGS+=-D_IEEE_LIBM -D_ISOC99_SOURCE -D_SVID_SOURCE
+#DOMULTI=y
+
LIB_NAME:=libm
-srcdir=$(top_srcdir)$(LIB_NAME)
-$(LIB_NAME)_DIR:=$(top_builddir)$(LIB_NAME)
+ifeq ($(HAS_FPU),y)
+-include $(top_srcdir)libm/$(TARGET_ARCH)/Makefile.in
+endif
FL_MSRC:=float_wrappers.c
@@ -52,33 +72,49 @@ CSRC:= w_acos.c w_asin.c s_atan.c w_atan2.c s_ceil.c s_cos.c \
FL_MOBJ:=sqrtf.o
endif
-$(LIB_NAME)_SRC:=$(patsubst %.c,$(srcdir)/%.c,$(CSRC))
-
-$(LIB_NAME)_MSRC:=$(srcdir)/$(FL_MSRC)
-$(LIB_NAME)_MOBJ:=$(patsubst %.o,$($(LIB_NAME)_DIR)/%.o,$(FL_MOBJ))
+libm_DIR:=$(top_srcdir)libm
+libm_OUT:=$(top_builddir)libm
+# assume that arch specific versions are provided as single sources/objects
ifeq ($(HAS_FPU),y)
-ifeq ($(DO_C99_MATH),y)
-$(LIB_NAME)_ARCH_SRC:=$(wildcard $(srcdir)/$(TARGET_ARCH)/*.c)
-$(LIB_NAME)_ARCH_OBJ:=$(patsubst $(srcdir)/$(TARGET_ARCH)/%.c,$($(LIB_NAME)_DIR)/$(TARGET_ARCH)/%.o,$($(LIB_NAME)_ARCH_SRC))
+ifneq ($(strip $(libm_ARCH_OBJS)),)
# remove generic sources, if arch specific version is present
-$(LIB_NAME)_NO_SRC:=$(patsubst $(srcdir)/$(TARGET_ARCH)/%.c,$(srcdir)/%.c,$($(LIB_NAME)_ARCH_SRC))
-$(LIB_NAME)_SRC:=$(filter-out $($(LIB_NAME)_NO_SRC),$($(LIB_NAME)_SRC))
-# add arch specific sources (assumed that these are not multi-sources)
-$(LIB_NAME)_SRC+=$($(LIB_NAME)_ARCH_SRC)
-
-# remove generic objects produced from multi-sources, if arch specific version is present
-$(LIB_NAME)_NO_MOBJ:=$(patsubst $($(LIB_NAME)_DIR)/$(TARGET_ARCH)/%.o,$($(LIB_NAME)_DIR)/%.o,$($(LIB_NAME)_ARCH_OBJ))
-$(LIB_NAME)_MOBJ:=$(filter-out $($(LIB_NAME)_NO_MOBJ),$($(LIB_NAME)_MOBJ))
+ifneq ($(strip $(libm_ARCH_SRC)),)
+CSRC:=$(filter-out $(notdir $(libm_ARCH_SRC)),$(CSRC))
+endif
+
+# remove generic objects built from multi-sources, if arch specific version is present
+FL_MOBJ:=$(filter-out $(notdir $(libm_ARCH_OBJS)),$(FL_MOBJ))
+
+# we also try to remove % if s_% is in arch specific subdir
+FL_MOBJ:=$(filter-out $(patsubst s_%.o,%.o,$(notdir $(libm_ARCH_OBJS))),$(FL_MOBJ))
endif
endif
-$(LIB_NAME)_arch_clean:
- $(RM) $($(LIB_NAME)_DIR)/$(TARGET_ARCH)/*.{o,os}
+libm_SRC:=$(patsubst %.c,$(libm_DIR)/%.c,$(CSRC))
+libm_OBJ:=$(patsubst $(libm_DIR)/%.c,$(libm_OUT)/%.o,$(libm_SRC))
+
+libm_MSRC:=$(libm_DIR)/$(FL_MSRC)
+libm_MOBJ:=$(patsubst %.o,$(libm_OUT)/%.o,$(FL_MOBJ))
+
+libm_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(libm_MOBJ))))
+
+libm_OBJS:=$(libm_OBJ) $(libm_MOBJ)
+
+$(libm_MOBJ) $(libm_MOBJ:.o=.os): $(libm_MSRC)
+ $(compile.m)
+
+libm-a-$(UCLIBC_HAS_FLOATS)+=$(libm_OBJS)
+libm-a-pic-$(UCLIBC_HAS_FLOATS)+=$(libm_OBJS:.o=.os)
+libm-so-$(UCLIBC_HAS_FLOATS)+=$(libm_OBJS:.o=.os)
+
+CFLAGS-multi-$(UCLIBC_HAS_FLOATS)+=$(libm_DEF)
+libm-multi-$(UCLIBC_HAS_FLOATS)+=$(libm_MSRC)
+libm-nomulti-$(UCLIBC_HAS_FLOATS)+=$(libm_OBJ)
-libso-$(UCLIBC_HAS_FLOATS)+=$(top_builddir)lib/$(LIB_NAME).so
-liba-$(UCLIBC_HAS_FLOATS)+=$(top_builddir)lib/$(LIB_NAME).a
-libclean-y+=$(LIB_NAME)_clean $(LIB_NAME)_arch_clean
+objclean-y+=libm_clean
-include $(top_srcdir)Makefile.libs
+lib-a-$(UCLIBC_HAS_FLOATS)+=$(top_builddir)lib/libm.a
+lib-a-pic-$(UCLIBC_HAS_FLOATS)+=$(top_builddir)lib/libm.a
+lib-so-$(UCLIBC_HAS_FLOATS)+=$(top_builddir)lib/libm.so
diff --git a/libm/powerpc/Makefile.in b/libm/powerpc/Makefile.in
new file mode 100644
index 000000000..bb0dfc9d0
--- /dev/null
+++ b/libm/powerpc/Makefile.in
@@ -0,0 +1,25 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+libm_ARCH_DIR:=$(top_srcdir)libm/powerpc
+libm_ARCH_OUT:=$(top_builddir)libm/powerpc
+
+libm_ARCH_SRC:=$(wildcard $(libm_ARCH_DIR)/*.c)
+libm_ARCH_OBJ:=$(patsubst $(libm_ARCH_DIR)/%.c,$(libm_ARCH_OUT)/%.o,$(libm_ARCH_SRC))
+
+libm_ARCH_OBJS:=$(libm_ARCH_OBJ)
+
+libm-a-$(DO_C99_MATH)+=$(libm_ARCH_OBJS)
+libm-a-pic-$(DO_C99_MATH)+=$(libm_ARCH_OBJS:.o=.os)
+libm-so-$(DO_C99_MATH)+=$(libm_ARCH_OBJS:.o=.os)
+
+libm-multi-$(DO_C99_MATH)+=$(libm_ARCH_SRC)
+
+objclean-y+=libm_arch_objclean
+
+libm_arch_objclean:
+ $(RM) $(libm_ARCH_OUT)/*.{o,os}
diff --git a/libnsl/Makefile.in b/libnsl/Makefile.in
index 678e4c530..076eb49dd 100644
--- a/libnsl/Makefile.in
+++ b/libnsl/Makefile.in
@@ -1,16 +1,31 @@
-# Makefile.in for uClibc
+# Makefile for uClibc
#
-# Licensed under LGPL v2.1, see the file COPYING.LIB in this tarball for details.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#
CFLAGS+=$(SSP_ALL_CFLAGS)
+# useless, only 1 source file
+DOMULTI=n
+
LIB_NAME:=libnsl
-srcdir=$(top_srcdir)$(LIB_NAME)
+libnsl_DIR:=$(top_srcdir)libnsl
+libnsl_OUT:=$(top_builddir)libnsl
+
+libnsl_SRC:=$(libnsl_DIR)/nsl.c
+libnsl_OBJ:=$(patsubst $(libnsl_DIR)/%.c,$(libnsl_OUT)/%.o,$(libnsl_SRC))
+
+libnsl-a-y:=$(libnsl_OBJ)
+libnsl-a-pic-y:=$(libnsl_OBJ:.o=.os)
+libnsl-so-y:=$(libnsl_OBJ:.o=.os)
+
+#libnsl-multi-y:=$(libnsl_SRC)
-libso-y+=$(top_builddir)lib/$(LIB_NAME).so
-liba-y+=$(top_builddir)lib/$(LIB_NAME).a
-libclean-y+=$(LIB_NAME)_clean
+objclean-y+=libnsl_clean
-include $(top_srcdir)Makefile.libs
+lib-a-y+=$(top_builddir)lib/libnsl.a
+lib-a-pic-y+=$(top_builddir)lib/libnsl.a
+lib-so-y+=$(top_builddir)lib/libnsl.so
diff --git a/libpthread/Makefile.in b/libpthread/Makefile.in
new file mode 100644
index 000000000..17a5adca9
--- /dev/null
+++ b/libpthread/Makefile.in
@@ -0,0 +1,57 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
+DIRS:= $(PTNAME) $(PTNAME)_db
+libs: subdirs
+else
+# both do not work at once
+include $(PTDIR)/Makefile.in
+#include $(PTDIR)_db/Makefile.in
+endif
+
+headers-y+=threads_headers
+
+# NPTL does not have a generic pthreadtypes.h
+# and each arch has to have both semaphore.h/pthreadtypes.h ?
+threads_headers:
+ $(LN) -sf $(PTDIR)/sysdeps/pthread/pthread.h $(top_builddir)include/
+ $(LN) -sf $(PTDIR)/semaphore.h $(top_builddir)include/
+ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
+ $(LN) -sf $(PTDIR)_db/thread_db.h $(top_builddir)include/
+endif
+ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
+ $(LN) -sf ../$(PTDIR)/sysdeps/unix/sysv/linux/$(TARGET_ARCH)/bits/semaphore.h $(top_builddir)include/bits/
+ $(LN) -sf ../$(PTDIR)/sysdeps/unix/sysv/linux/$(TARGET_ARCH)/bits/pthreadtypes.h $(top_builddir)include/bits/
+ $(LN) -sf ../$(PTDIR)/sysdeps/pthread/bits/libc-lock.h $(top_builddir)include/bits/
+ $(LN) -sf ../$(PTDIR)/sysdeps/pthread/bits/stdio-lock.h $(top_builddir)include/bits/
+else
+ $(LN) -sf ../$(PTDIR)/sysdeps/pthread/bits/pthreadtypes.h $(top_builddir)include/bits/
+endif
+
+headers_clean-y+=threads_headers_clean
+
+threads_headers_clean:
+ $(RM) $(top_builddir)include/pthread.h $(top_builddir)include/semaphore.h \
+ $(top_builddir)include/thread_db.h \
+ $(top_builddir)include/bits/pthreadtypes.h $(top_builddir)include/bits/semaphore.h \
+ $(top_builddir)include/bits/libc-lock.h $(top_builddir)include/bits/stdio-lock
+ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
+ $(RM) $(PTNAME)/version.h $(PTDIR)/banner.h \
+ $(PTDIR)/sysdeps/unix/sysv/linux/rtld-libc-lowlevellock.c
+endif
+
+objclean-y+=libpthread_gen_clean
+
+libpthread_gen_clean:
+ $(RM) $(top_builddir)libpthread/*/*.{o,os,a}
+
+ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
+subdirs: $(patsubst %, _dir_%, $(DIRS))
+$(patsubst %, _dir_%, $(DIRS)):
+ $(MAKE) -C $(patsubst _dir_%, %, $@)
+endif
diff --git a/libpthread/linuxthreads/Makefile.in b/libpthread/linuxthreads/Makefile.in
index ed24d3f5c..026fd1452 100644
--- a/libpthread/linuxthreads/Makefile.in
+++ b/libpthread/linuxthreads/Makefile.in
@@ -1,55 +1,56 @@
-# Makefile.in for uClibc
+# Makefile for uClibc's pthread library
#
-# Licensed under LGPL v2.1, see the file COPYING.LIB in this tarball for details.
+# Copyright (C) 2003 Paul Mundt <lethal@linux-sh.org>
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#
CFLAGS+=$(SSP_ALL_CFLAGS)
-# Get the thread include dependencies
-CFLAGS+=$(PTINC)
-
# This stuff will not compile without at least -O1
CFLAGS:=$(CFLAGS:-O0=-O1)
-ARCH_CFLAGS:=$(CFLAGS)
-
LDFLAGS:=$(LDFLAGS_NOSTRIP)
ifeq ($(UCLIBC_CTOR_DTOR),y)
-SHARED_START_FILES=$(top_builddir)lib/crti.o $(LIBGCC_DIR)crtbeginS.o
-SHARED_END_FILES = $(LIBGCC_DIR)crtendS.o $(top_builddir)lib/crtn.o
+SHARED_START_FILES:=$(top_builddir)lib/crti.o $(LIBGCC_DIR)crtbeginS.o
+SHARED_END_FILES:=$(LIBGCC_DIR)crtendS.o $(top_builddir)lib/crtn.o
endif
ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
STRIP_FLAGS:=-X --strip-debug -R .note -R .comment
endif
+DOMULTI=n
+
LIB_NAME:=libpthread
-srcdir=$(top_srcdir)$(LIB_NAME)/linuxthreads
-$(LIB_NAME)_DIR:=$(top_builddir)$(LIB_NAME)/linuxthreads
-$(LIB_NAME)_SRC:=$(wildcard $(srcdir)/*.c)
-ifneq ($(UCLIBC_HAS_XLOCALE),y)
-$(LIB_NAME)_SRC:=$(filter-out $(srcdir)/locale.c,$($(LIB_NAME)_SRC))
-endif
+libpthread_DIR:=$(top_srcdir)libpthread/linuxthreads
+libpthread_OUT:=$(top_builddir)libpthread/linuxthreads
-ARCH_DIR:=sysdeps/$(TARGET_ARCH)
--include $(srcdir)/$(ARCH_DIR)/Makefile.in
+ARCH_CFLAGS:=$(CFLAGS)
+-include $(libpthread_DIR)/sysdeps/$(TARGET_ARCH)/Makefile.in
+CFLAGS:=$(ARCH_CFLAGS)
-$(LIB_NAME)_ARCH_SRC:=$(wildcard $(srcdir)/$(ARCH_DIR)/*.c)
-$(LIB_NAME)_ARCH_OBJ:=$(patsubst $(srcdir)/$(ARCH_DIR)/%.c,$($(LIB_NAME)_DIR)/$(ARCH_DIR)/%.o,$($(LIB_NAME)_ARCH_SRC))
+libpthread_SRC:=$(wildcard $(libpthread_DIR)/*.c)
+ifneq ($(UCLIBC_HAS_XLOCALE),y)
+libpthread_SRC:=$(filter-out $(libpthread_DIR)/locale.c,$(libpthread_SRC))
+endif
# remove generic sources, if arch specific version is present
-$(LIB_NAME)_NO_SRC:=$(patsubst $(srcdir)/$(ARCH_DIR)/%.c,$(srcdir)/%.c,$($(LIB_NAME)_ARCH_SRC))
-$(LIB_NAME)_SRC:=$(filter-out $($(LIB_NAME)_NO_SRC),$($(LIB_NAME)_SRC))
-# add arch specific sources (assumed that these are not multi-sources)
-$(LIB_NAME)_SRC+=$($(LIB_NAME)_ARCH_SRC)
+ifneq ($(strip $(libpthread_ARCH_SRC)),)
+libpthread_SRC:=$(filter-out $(patsubst %.c,$(libpthread_DIR)/%.c,$(notdir $(libpthread_ARCH_SRC))),$(libpthread_SRC))
+endif
+
+libpthread_OBJ:=$(patsubst $(libpthread_DIR)/%.c,$(libpthread_OUT)/%.o,$(libpthread_SRC))
-$(LIB_NAME)_arch_clean:
- $(RM) $($(LIB_NAME)_DIR)/sysdeps/*/*.{o,os}
+libpthread-a-$(UCLIBC_HAS_THREADS)+=$(libpthread_OBJ)
+libpthread-a-pic-$(UCLIBC_HAS_THREADS)+=$(libpthread_OBJ:.o=.os)
+libpthread-so-$(UCLIBC_HAS_THREADS)+=$(libpthread_OBJ:.o=.os)
-libso-$(UCLIBC_HAS_THREADS)+=$(top_builddir)lib/$(LIB_NAME).so
-liba-$(UCLIBC_HAS_THREADS)+=$(top_builddir)lib/$(LIB_NAME).a
-libclean-y+=$(LIB_NAME)_clean $(LIB_NAME)_arch_clean
+libpthread-multi-$(UCLIBC_HAS_THREADS)+=$(libpthread_SRC)
-include $(top_srcdir)Makefile.libs
+lib-a-$(UCLIBC_HAS_THREADS)+=$(top_builddir)lib/libpthread.a
+lib-a-pic-$(UCLIBC_HAS_THREADS)+=$(top_builddir)lib/libpthread.a
+lib-so-$(UCLIBC_HAS_THREADS)+=$(top_builddir)lib/libpthread.so
diff --git a/libpthread/linuxthreads/sysdeps/sh64/Makefile.in b/libpthread/linuxthreads/sysdeps/sh64/Makefile.in
index fed7a83b7..5aa54a64f 100644
--- a/libpthread/linuxthreads/sysdeps/sh64/Makefile.in
+++ b/libpthread/linuxthreads/sysdeps/sh64/Makefile.in
@@ -1,20 +1,27 @@
# Makefile for uClibc's sh64 pthread backend
#
# Copyright (C) 2003 Paul Mundt <lethal@linux-sh.org>
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
#
-# This program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Library General Public License as published by the Free
-# Software Foundation; either version 2 of the License, or (at your option) any
-# later version.
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#
-# 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 Library General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Library 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
# We need to build as SHcompact for tas..
-ARCH_CFLAGS := $(subst 32media,compact,$(ARCH_CFLAGS))
+ARCH_CFLAGS:=$(subst 32media,compact,$(ARCH_CFLAGS))
+
+libpthread_ARCH_DIR:=$(top_srcdir)libpthread/linuxthreads/sysdeps/sh64
+libpthread_ARCH_OUT:=$(top_builddir)libpthread/linuxthreads/sysdeps/sh64
+
+libpthread_ARCH_SRC:=$(wildcard $(libpthread_ARCH_DIR)/*.c)
+libpthread_ARCH_OBJ:=$(patsubst $(libpthread_ARCH_DIR)/%.c,$(libpthread_ARCH_OUT)/%.o,$(libpthread_ARCH_SRC))
+
+libpthread-a-$(UCLIBC_HAS_THREADS)+=$(libpthread_ARCH_OBJ)
+libpthread-a-pic-$(UCLIBC_HAS_THREADS)+=$(libpthread_ARCH_OBJ:.o=.os)
+libpthread-so-$(UCLIBC_HAS_THREADS)+=$(libpthread_ARCH_OBJ:.o=.os)
+
+libpthread-multi-$(UCLIBC_HAS_THREADS)+=$(libpthread_ARCH_SRC)
+
+objclean-y+=libpthread_arch_objclean
+
+libpthread_arch_objclean:
+ $(RM) $(libpthread_ARCH_OUT)/*.{o,os}
diff --git a/libpthread/linuxthreads_db/Makefile.in b/libpthread/linuxthreads_db/Makefile.in
index 8a95e402a..18558089f 100644
--- a/libpthread/linuxthreads_db/Makefile.in
+++ b/libpthread/linuxthreads_db/Makefile.in
@@ -1,13 +1,15 @@
-# Makefile for uClibc's pthread library
+# Makefile for uClibc
#
-# Licensed under LGPL v2.1, see the file COPYING.LIB in this tarball for details.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#
#CFLAGS+=$(SSP_ALL_CFLAGS)
PT_MAJOR_VERSION:=$(MAJOR_VERSION)
# Get the thread include dependencies and shared object name
-CFLAGS+=$(PTINC) -DLIBPTHREAD_SO="\"libpthread.so.$(PT_MAJOR_VERSION)\""
+CFLAGS+=-DLIBPTHREAD_SO="\"libpthread.so.$(PT_MAJOR_VERSION)\""
# Remove any -z defs since this lib will have undefined symbols
LDFLAGS:=$(subst -z defs,,$(LDFLAGS)) --warn-unresolved-symbols
@@ -16,13 +18,26 @@ ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
STRIP_FLAGS:=-X --strip-debug -R .note -R .comment
endif
+#DOMULTI=y
+
LIB_NAME:=libthread_db
-srcdir=$(top_srcdir)libpthread/linuxthreads_db
-$(LIB_NAME)_DIR:=$(top_builddir)libpthread/linuxthreads_db
+libthread_db_FULL_NAME:=$(LIB_NAME)-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so
+
MAJOR_VERSION:=1
-libso-$(PTHREADS_DEBUG_SUPPORT)+=$(top_builddir)lib/$(LIB_NAME).so
-liba-$(PTHREADS_DEBUG_SUPPORT)+=$(top_builddir)lib/$(LIB_NAME).a
-libclean-y+=$(LIB_NAME)_clean
+libthread_db_DIR:=$(top_srcdir)libpthread/linuxthreads_db
+libthread_db_OUT:=$(top_builddir)libpthread/linuxthreads_db
+
+libthread_db_SRC:=$(wildcard $(libthread_db_DIR)/*.c)
+
+libthread_db_OBJ:=$(patsubst $(libthread_db_DIR)/%.c,$(libthread_db_OUT)/%.o,$(libthread_db_SRC))
+
+libthread_db-a-$(PTHREADS_DEBUG_SUPPORT)+=$(libthread_db_OBJ)
+libthread_db-a-pic-$(PTHREADS_DEBUG_SUPPORT)+=$(libthread_db_OBJ:.o=.os)
+libthread_db-so-$(PTHREADS_DEBUG_SUPPORT)+=$(libthread_db_OBJ:.o=.os)
+
+libthread_db-multi-$(PTHREADS_DEBUG_SUPPORT)+=$(libthread_db_SRC)
-include $(top_srcdir)Makefile.libs
+lib-a-$(PTHREADS_DEBUG_SUPPORT)+=$(top_builddir)lib/libthread_db.a
+lib-a-pic-$(PTHREADS_DEBUG_SUPPORT)+=$(top_builddir)lib/libthread_db.a
+lib-so-$(PTHREADS_DEBUG_SUPPORT)+=$(top_builddir)lib/libthread_db.so
diff --git a/libresolv/Makefile.in b/libresolv/Makefile.in
index b4d03fe66..8966f95a3 100644
--- a/libresolv/Makefile.in
+++ b/libresolv/Makefile.in
@@ -1,16 +1,31 @@
-# Makefile.in for uClibc
+# Makefile for uClibc
#
-# Licensed under LGPL v2.1, see the file COPYING.LIB in this tarball for details.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#
CFLAGS+=$(SSP_ALL_CFLAGS)
+# useless, only 1 source file
+DOMULTI=n
+
LIB_NAME:=libresolv
-srcdir=$(top_srcdir)$(LIB_NAME)
+libresolv_DIR:=$(top_srcdir)libresolv
+libresolv_OUT:=$(top_builddir)libresolv
+
+libresolv_SRC:=$(libresolv_DIR)/resolv.c
+libresolv_OBJ:=$(patsubst $(libresolv_DIR)/%.c,$(libresolv_OUT)/%.o,$(libresolv_SRC))
+
+libresolv-a-y:=$(libresolv_OBJ)
+libresolv-a-pic-y:=$(libresolv_OBJ:.o=.os)
+libresolv-so-y:=$(libresolv_OBJ:.o=.os)
+
+#libresolv-multi-y:=$(libresolv_SRC)
-libso-y+=$(top_builddir)lib/$(LIB_NAME).so
-liba-y+=$(top_builddir)lib/$(LIB_NAME).a
-libclean-y+=$(LIB_NAME)_clean
+objclean-y+=libresolv_clean
-include $(top_srcdir)Makefile.libs
+lib-a-y+=$(top_builddir)lib/libresolv.a
+lib-a-pic-y+=$(top_builddir)lib/libresolv.a
+lib-so-y+=$(top_builddir)lib/libresolv.so
diff --git a/librt/Makefile.in b/librt/Makefile.in
index 7f3a311a3..aada591d9 100644
--- a/librt/Makefile.in
+++ b/librt/Makefile.in
@@ -1,16 +1,31 @@
-# Makefile.in for uClibc
+# Makefile for uClibc
#
-# Licensed under LGPL v2.1, see the file COPYING.LIB in this tarball for details.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#
CFLAGS+=$(SSP_ALL_CFLAGS)
+# all files are syscall related
+DOMULTI=n
+
LIB_NAME:=librt
-srcdir=$(top_srcdir)$(LIB_NAME)
+librt_DIR:=$(top_srcdir)librt
+librt_OUT:=$(top_builddir)librt
+
+librt_SRC:=$(wildcard $(librt_DIR)/*.c)
+librt_OBJ:=$(patsubst $(librt_DIR)/%.c,$(librt_OUT)/%.o,$(librt_SRC))
+
+librt-a-y:=$(librt_OBJ)
+librt-a-pic-y:=$(librt_OBJ:.o=.os)
+librt-so-y:=$(librt_OBJ:.o=.os)
+
+#librt-multi-y+=$(librt_SRC)
-libso-y+=$(top_builddir)lib/$(LIB_NAME).so
-liba-y+=$(top_builddir)lib/$(LIB_NAME).a
-libclean-y+=$(LIB_NAME)_clean
+objclean-y+=librt_clean
-include $(top_srcdir)Makefile.libs
+lib-a-y+=$(top_builddir)lib/librt.a
+lib-a-pic-y+=$(top_builddir)lib/librt.a
+lib-so-y+=$(top_builddir)lib/librt.so
diff --git a/libutil/Makefile.in b/libutil/Makefile.in
index 8c5846400..6f6b03ea1 100644
--- a/libutil/Makefile.in
+++ b/libutil/Makefile.in
@@ -1,21 +1,33 @@
-# Makefile.in for uClibc
+# Makefile for uClibc
#
-# Licensed under LGPL v2.1, see the file COPYING.LIB in this tarball for details.
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#
CFLAGS+=$(SSP_ALL_CFLAGS)
+#DOMULTI=y
+
LIB_NAME:=libutil
-srcdir=$(top_srcdir)$(LIB_NAME)
+libutil_DIR:=$(top_srcdir)libutil
+libutil_OUT:=$(top_builddir)libutil
-$(LIB_NAME)_SRC:=$(wildcard $(srcdir)/*.c)
+libutil_SRC:=$(wildcard $(libutil_DIR)/*.c)
ifneq ($(ARCH_HAS_MMU),y)
-$(LIB_NAME)_SRC:=$(filter-out $(srcdir)/forkpty.c,$($(LIB_NAME)_SRC))
+libutil_SRC:=$(filter-out $(libutil_DIR)/forkpty.c,$(libutil_SRC))
endif
+libutil_OBJ:=$(patsubst $(libutil_DIR)/%.c,$(libutil_OUT)/%.o,$(libutil_SRC))
+
+libutil-a-y:=$(libutil_OBJ)
+libutil-a-pic-y:=$(libutil_OBJ:.o=.os)
+libutil-so-y:=$(libutil_OBJ:.o=.os)
+
+libutil-multi-y:=$(libutil_SRC)
-libso-y+=$(top_builddir)lib/$(LIB_NAME).so
-liba-y+=$(top_builddir)lib/$(LIB_NAME).a
-libclean-y+=$(LIB_NAME)_clean
+objclean-y+=libutil_clean
-include $(top_srcdir)Makefile.libs
+lib-a-y+=$(top_builddir)lib/libutil.a
+lib-a-pic-y+=$(top_builddir)lib/libutil.a
+lib-so-y+=$(top_builddir)lib/libutil.so