--- /dev/null
+PKGDIR ?= ../..
+L4DIR ?= $(PKGDIR)/../..
+
+CXXFLAGS_amd64 += -mcmodel=medium
+CFLAGS_amd64 += -mcmodel=medium
+
+include $(L4DIR)/mk/Makeconf
+
+SYSTEMS = x86 arm amd64 ppc32
+TARGET = libuc_c.a libuc_c.so
+LDFLAGS = -z combreloc -z relro --sort-common \
+ --sort-section alignment --warn-common \
+ --warn-once
+
+LDFLAGS_libuc_c.so := -init __uClibc_init
+
+PC_FILENAME := libc
+SYSDEPS := libc/sysdeps/linux
+VPATH_SRC_BASE = $(OBJ_DIR)
+
+FILES_all := $(PKGDIR_ABS)/lib/uclibc/contrib_files_all.lst
+FILES_x86 := $(PKGDIR_ABS)/lib/uclibc/contrib_files_x86.lst
+FILES_arm := $(PKGDIR_ABS)/lib/uclibc/contrib_files_arm.lst
+FILES_amd64 := $(PKGDIR_ABS)/lib/uclibc/contrib_files_amd64.lst
+FILES_ppc32 := $(PKGDIR_ABS)/lib/uclibc/contrib_files_ppc32.lst
+CONTRIB_DIR := $(PKGDIR_ABS)/lib/contrib/uclibc
+PTHLIB_DIR := $(PKGDIR_ABS)/lib/libpthread
+
+ifneq ($(SYSTEM),)
+UCLIBC_ARCH_x86 := i386
+UCLIBC_ARCH_arm := arm
+UCLIBC_ARCH_amd64 := x86_64
+UCLIBC_ARCH_ppc32 := powerpc
+UCLIBC_ARCH := $(UCLIBC_ARCH_$(ARCH))
+DIRS := libc/stdio libc/stdlib libc/stdlib/malloc libc/string \
+ libc/string/$(UCLIBC_ARCH) libc/string/generic \
+ libc/inet libc/misc libc/misc/assert libc/misc/ctype \
+ libc/misc/dirent libc/misc/error libc/misc/internals \
+ libc/misc/locale libc/misc/elf \
+ libc/misc/time libc/pwd_grp libc/unistd libc/termios \
+ libc/misc/wctype libc/misc/wchar libc/misc/fnmatch \
+ libc/misc/glob libc libcrypt \
+ libc/signal $(SYSDEPS)/$(UCLIBC_ARCH) \
+ $(SYSDEPS)/common libm libm/$(UCLIBC_ARCH)
+
+BOTH_SRC_CC := $(foreach arch,all $(ARCH),\
+ $(foreach dir,$(DIRS), \
+ $(addprefix ARCH-$(arch)/$(dir)/,\
+ $(notdir $(wildcard ../ARCH-$(arch)/$(dir)/*.cc)))))
+BOTH_SRC_C := $(foreach arch,all $(ARCH),\
+ $(foreach dir,$(DIRS), \
+ $(addprefix ARCH-$(arch)/$(dir)/,\
+ $(notdir $(wildcard ../ARCH-$(arch)/$(dir)/*.c)))))
+BOTH_SRC_S := $(foreach arch,all $(ARCH),\
+ $(foreach dir,$(DIRS), \
+ $(addprefix ARCH-$(arch)/$(dir)/,\
+ $(notdir $(wildcard ../ARCH-$(arch)/$(dir)/*.S)))))
+
+# some files cannot be compiled alone but are included by
+# other files and thus needs to be linked
+BOTH_SRC_C := $(filter-out ARCH-all/libc/misc/fnmatch/fnmatch_loop.c ARCH-all/libc/pwd_grp/pwd_grp_internal.c ARCH-ppc32/libc/string/generic/_memcpy_fwd.c,$(BOTH_SRC_C))
+
+STATICONLY_SRC_C := dl-core.c
+
+SRC_C_libuc_c.a := $(BOTH_SRC_C)
+SRC_C_libuc_c.so := $(filter-out $(addprefix %/,$(STATICONLY_SRC_C)), $(BOTH_SRC_C))
+SRC_CC_libuc_c.a := $(BOTH_SRC_CC)
+SRC_CC_libuc_c.so := $(BOTH_SRC_CC)
+SRC_S_libuc_c.a := $(BOTH_SRC_S)
+SRC_S_libuc_c.so := $(BOTH_SRC_S)
+
+IDL_PATH =
+PRIVATE_INCDIR = $(SRC_DIR)/ARCH-$(ARCH)/include $(SRC_DIR)/ARCH-all/include \
+ $(OBJ_DIR)/ARCH-$(ARCH)/include $(OBJ_DIR)/ARCH-all/include \
+ $(OBJ_DIR)/ARCH-all/libc/string \
+ $(SRC_DIR)/../contrib/uclibc/libc/misc/internals \
+ $(OBJ_BASE)/include/$(ARCH) $(OBJ_BASE)/include \
+ $(OBJ_BASE)/include/uclibc \
+ $(SRC_DIR)/../contrib/uclibc/libcrypt
+LIBCINCDIR = $(addprefix -I,$(GCCINCDIR))
+CPPFLAGS += -nostdinc -include \
+ $(OBJ_DIR)/ARCH-all/include/libc-symbols.h
+CFLAGS += -fno-builtin
+CFLAGS += -DUCLIBC_INTERNAL
+# CFLAGS += -std=iso9899:199901
+DEFINES = -DNDEBUG -D_LIBC -D__UCLIBC_CTOR_DTOR__
+WARNINGS = -Wall -Wstrict-prototypes
+
+CPPFLAGS_dl-iterate-phdr.c += -I$(SRC_DIR)/../contrib/uclibc/ldso/include \
+ -I$(SRC_DIR)/../contrib/uclibc/ldso/ldso/$(UCLIBC_ARCH)
+CPPFLAGS_dl-core.c += -I$(SRC_DIR)/../contrib/uclibc/ldso/ldso/$(UCLIBC_ARCH) \
+ -I$(SRC_DIR)/../contrib/uclibc/ldso/include
+CPPFLAGS_$(OBJ_DIR)/ARCH-all/libc/inet += -DRESOLVER="\"resolv.c\""
+
+ifneq ($(L4API),)
+DEFINES += -DL4_THREAD_SAFE
+TARGET = r/libuc_c.a r/libuc_c.so
+LDFLAGS_r/libuc_c.so := $(LDFLAGS_libuc_c.so)
+SRC_C_r/libuc_c.a := $(SRC_C_libuc_c.a)
+SRC_C_r/libuc_c.so := $(SRC_C_libuc_c.so) libpthread/src/forward.c
+SRC_CC_r/libuc_c.a := $(SRC_CC_libuc_c.a)
+SRC_CC_r/libuc_c.so := $(SRC_CC_libuc_c.so)
+SRC_S_r/libuc_c.a := $(SRC_S_libuc_c.a)
+SRC_S_r/libuc_c.so := $(SRC_S_libuc_c.so)
+PRIVATE_INCDIR = $(SRC_DIR)/ARCH-$(ARCH)/include $(SRC_DIR)/ARCH-all/include \
+ $(OBJ_DIR)/ARCH-$(ARCH)/include $(OBJ_DIR)/ARCH-all/include \
+ $(SRC_DIR)/../contrib/uclibc/libc/misc/internals \
+ $(OBJ_DIR)/ARCH-all/libc/string \
+ $(OBJ_BASE)/include/$(ARCH)/$(L4API) \
+ $(OBJ_BASE)/include/$(ARCH) $(OBJ_BASE)/include \
+ $(OBJ_BASE)/include/uclibc_pthreads \
+ $(OBJ_BASE)/include/uclibc \
+ $(SRC_DIR)/../contrib/uclibc/libcrypt
+vpath libpthread/src/forward.c $(PTHLIB_DIR)/..
+PRIVATE_INCDIR_libpthread/src/forward.s.o += $(PTHLIB_DIR)/src/sysdeps/$(UCLIBC_ARCH_$(ARCH)) \
+ $(PTHLIB_DIR)/src
+endif
+
+endif
+
+BUILD_ARCHS := all $(BUILD_ARCH)
+
+.general.d: $(FILES_x86) $(FILE_arm) $(FILES_amd64) $(FILES_all)
+
+ifeq ($(SYSTEM),)
+
+INCDIRS = $(addsuffix /include,$(addprefix $(OBJ_DIR)/ARCH-,$(BUILD_ARCHS)))
+INCDIRS_OBJ_m = $(addsuffix /Makefile,$(INCDIRS))
+
+pre-obj:: include
+
+$(INCDIRS_OBJ_m):
+ $(VERBOSE)install -d $(dir $@)
+ $(VERBOSE)echo 'PKGDIR ?= $(PKGDIR_ABS)' > $@
+ $(VERBOSE)echo 'L4DIR ?= $(L4DIR_ABS)' >> $@
+ $(VERBOSE)echo 'OBJ_BASE ?= $(OBJ_BASE)' >> $@
+ $(VERBOSE)echo 'OBJ_DIR ?= $(OBJ_DIR)' >> $@
+ $(VERBOSE)echo 'INSTALL_INC_PREFIX = $$(PKGNAME)' >> $@
+ $(VERBOSE)echo 'include $$(L4DIR)/mk/include.mk' >> $@
+
+.PHONY: include
+
+include:: $(addprefix $(OBJ_DIR)/ARCH-,$(addsuffix /links-done,$(BUILD_ARCHS))) $(INCDIRS_OBJ_m)
+ $(VERBOSE)for i in $(INCDIRS); do \
+ PWD=$$i $(MAKE) -C $$i all; \
+ done
+
+install:: all
+ $(VERBOSE)set -e; $(foreach d,$(INCDIRS), \
+ if [ -f $d/Makefile ]; then \
+ PWD=$(PWD)/$d $(MAKE) -C $d $@ $(MKFLAGS); \
+ fi;)
+
+# ok, we have a list of files to check in FILES
+# for each file do
+# check if it exists, yes? go on
+# no? create an apropriate link with a relative path to the contrib dir
+
+REBUILD_LINKS_CONTRIB = \
+ set -e; arch=$1; \
+ cat contrib_files_$${arch}.lst | while read file flags; \
+ do \
+ path_file=`dirname $${file}`; \
+ path_ctrb=`dirname $(CONTRIB_DIR)/$${file}`; \
+ if [ -n "$${flags}" ]; then \
+ dest="$${path_file}/$${flags}.c"; \
+ else \
+ dest="$${file}"; \
+ fi; \
+ if [ "$${path_file}" = "$(SYSDEPS)/i386/bits" -o \
+ "$${path_file}" = "$(SYSDEPS)/arm/bits" -o \
+ "$${path_file}" = "$(SYSDEPS)/x86_64/bits" -o \
+ "$${path_file}" = "$(SYSDEPS)/powerpc/bits" -o \
+ "$${path_file}" = "$(SYSDEPS)/common/bits" ]; then \
+ if [ \( ! -e ARCH-$${arch}/include/bits/`basename $${dest}` \) \
+ -a \( -e $(CONTRIB_DIR)/$${file} \) ]; then \
+ b=`basename $${file}`; \
+ from=$${path_ctrb}/$$b; \
+ to=$(OBJ_DIR)/ARCH-$${arch}/include/bits/$$b; \
+ fi; \
+ elif [ "$${path_file}" = "$(SYSDEPS)/i386/sys" -o \
+ "$${path_file}" = "$(SYSDEPS)/arm/sys" -o \
+ "$${path_file}" = "$(SYSDEPS)/x86_64/sys" -o \
+ "$${path_file}" = "$(SYSDEPS)/powerpc/sys" -o \
+ "$${path_file}" = "$(SYSDEPS)/common/sys" ]; then \
+ if [ \( ! -e ARCH-$${arch}/include/sys/`basename $${dest}` \) \
+ -a \( -e $(CONTRIB_DIR)/$${file} \) ]; then \
+ b=`basename $${file}`; \
+ from=$${path_ctrb}/$$b; \
+ to=$(OBJ_DIR)/ARCH-$${arch}/include/sys/$$b; \
+ fi; \
+ elif [ \( "$${path_file}" = "$(SYSDEPS)/i386" -o \
+ "$${path_file}" = "$(SYSDEPS)/arm" -o \
+ "$${path_file}" = "$(SYSDEPS)/x86_64" -o \
+ "$${path_file}" = "$(SYSDEPS)/powerpc" -o \
+ "$${path_file}" = "$(SYSDEPS)/common" \) \
+ -a $${file%.h} != $${file} ]; then \
+ if [ \( ! -e ARCH-$${arch}/include/`basename $${dest}` \) \
+ -a \( -e $(CONTRIB_DIR)/$${file} \) ]; then \
+ b=`basename $${file}`; \
+ from=$${path_ctrb}/$$b; \
+ to=$(OBJ_DIR)/ARCH-$${arch}/include/$$b; \
+ fi; \
+ else \
+ if [ -e $(CONTRIB_DIR)/$${file} ] ; then \
+ from=$${path_ctrb}/`basename $${file}`; \
+ to=$(OBJ_DIR)/ARCH-$${arch}/$${dest}; \
+ fi; \
+ fi; \
+ if [ -n "$$to" -a -n "$$from" -a ! -e "$$to" ]; then \
+ d=`dirname $$to`; \
+ [ -d "$$d" ] || mkdir -p $$d; \
+ ln -s$(if $(VERBOSE),,v) "$$from" "$$to"; \
+ fi; \
+ unset to; unset from; \
+ done;
+
+REBUILD_LINKS_SRC = \
+ set -e; arch=$1; \
+ find ARCH-$$arch -name \*.h -o -name \*.c -o -name \*.cc -o -name \*.S | \
+ while read file; \
+ do \
+ to=$(OBJ_DIR)/$$file; \
+ d=$$(dirname $$to); \
+ [ -d "$$d" ] || mkdir -p $$d; \
+ if [ ! -e "$$to" ] ; then \
+ ln -s$(if $(VERBOSE),,v) "$(SRC_DIR)/$$file" "$$to"; \
+ fi; \
+ done;
+
+
+$(OBJ_DIR)/ARCH-%/links-done: contrib_files_%.lst Makefile
+ @echo -n " ... Checking and fixing contrib file links, cleaning .o [$*]"
+ $(VERBOSE)if [ -d "$(OBJ_DIR)/ARCH-$*" ]; then \
+ find $(OBJ_DIR)/ARCH-$* -type l | xargs rm -f$(if $(VERBOSE),,v); \
+ fi
+ $(VERBOSE)$(call REBUILD_LINKS_SRC,$*)
+ $(VERBOSE)$(call REBUILD_LINKS_CONTRIB,$*)
+ @touch $@
+ @echo " ... done!"
+
+else
+
+CONTRIB: $(addprefix $(OBJ_DIR)/ARCH-,$(addsuffix /links-done,$(BUILD_ARCHS)))
+
+endif
+
+cleanall::
+ $(VERBOSE)find $(OBJ_DIR) -type l | xargs rm -f$(if $(VERBOSE),,v)
+ $(VERBOSE)$(RM) $(OBJ_DIR)/ARCH-*/links-done
+ $(VERBOSE)$(RM) $(OBJ_DIR)/ARCH-*/include/.general.d
+
+# static and shared
+$(SRC_CC_libuc_c.so:.cc=.s.o) $(SRC_C_libuc_c.so:.c=.s.o) : DEFINES += -DSHARED
+$(SRC_CC_libuc_c.a:.cc=.o) $(SRC_C_libuc_c.a:.c=.o) : DEFINES += -DSTATIC
+
+# some special defines
+O_AND_SO_OBJS = $(SRC_CC_libuc_c.a:.cc=.o) $(SRC_CC_libuc_c.so:.cc=.s.o)
+O_AND_SO_OBJS += $(SRC_C_libuc_c.a:.c=.o) $(SRC_C_libuc_c.so:.c=.s.o)
+$(filter %__DO_UNLOCKED.o %__DO_UNLOCKED.s.o,$(O_AND_SO_OBJS)):\
+ DEFINES += -D__DO_UNLOCKED
+$(filter %__DO_LARGEFILE.o %__DO_LARGEFILE.s.o,$(O_AND_SO_OBJS)):\
+ DEFINES += -D__DO_LARGEFILE
+$(filter %__FN.o,$(SRC_C_libuc_c.a:.c=.o)):\
+ DEFINES += -DL_$(patsubst %__FN.o,%,$(notdir $@))
+$(filter %__FN.s.o,$(SRC_C_libuc_c.a:.c=.s.o)):\
+ DEFINES += -DL_$(patsubst %__FN.s.o,%,$(notdir $@))
+
+$(SRC_C_libm:.c=.o) $(SRC_C_libm:.c=.s.o):\
+ DEFINES += -D_IEEE_LIBM -D_ISOC99_SOURCE -D_SVID_SOURCE
+
+$(filter %__FN.o,$(SRC_CC:.cc=.o)):\
+ DEFINES += -DL_$(patsubst %__FN.o,%,$(notdir $@))
+$(filter %__FN.s.o,$(SRC_CC:.cc=.s.o)):\
+ DEFINES += -DL_$(patsubst %__FN.s.o,%,$(notdir $@))
+
+$(SRC_CC_libm:.cc=.o) $(SRC_CC_libm:.cc=.s.o):\
+ DEFINES += -D_IEEE_LIBM -D_ISOC99_SOURCE -D_SVID_SOURCE
+
+include $(L4DIR)/mk/lib.mk