summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile.in277
-rw-r--r--Makerules231
-rw-r--r--Rules.mak167
-rw-r--r--ldso/ldso/Makefile.in11
-rw-r--r--ldso/libdl/Makefile.in8
-rw-r--r--libc/Makefile.in9
-rw-r--r--libc/inet/Makefile.in49
-rw-r--r--libc/misc/dirent/Makefile.in4
-rw-r--r--libc/misc/error/Makefile.in8
-rw-r--r--libc/misc/locale/Makefile.in2
-rw-r--r--libc/misc/pthread/Makefile.in4
-rw-r--r--libc/misc/syslog/Makefile.in2
-rw-r--r--libc/misc/sysvipc/Makefile.in5
-rw-r--r--libc/misc/time/Makefile.in6
-rw-r--r--libc/signal/Makefile.in17
-rw-r--r--libc/stdio/Makefile.in3
-rw-r--r--libc/stdlib/Makefile.in10
-rw-r--r--libc/sysdeps/linux/Makefile.commonarch11
-rw-r--r--libc/sysdeps/linux/common/Makefile.in57
-rw-r--r--libcrypt/Makefile.in20
-rw-r--r--libintl/Makefile.in3
-rw-r--r--libnsl/Makefile.in6
-rw-r--r--libpthread/nptl/Makefile.in46
-rw-r--r--libpthread/nptl/sysdeps/generic/Makefile.in3
-rw-r--r--libpthread/nptl/sysdeps/pthread/Makefile.in8
-rw-r--r--libpthread/nptl/sysdeps/sh/Makefile.arch8
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in26
-rw-r--r--libpthread/nptl_db/Makefile.in8
-rw-r--r--libresolv/Makefile.in6
-rw-r--r--librt/Makefile.in10
-rw-r--r--libutil/Makefile.in13
-rw-r--r--test/Makefile4
-rw-r--r--test/Rules.mak12
-rw-r--r--test/Test.mak8
-rw-r--r--test/math/Makefile2
-rw-r--r--test/nptl/Makefile9
-rw-r--r--utils/Makefile.in20
37 files changed, 781 insertions, 312 deletions
diff --git a/Makefile.in b/Makefile.in
index 8d254722b..1b3b3371f 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -15,6 +15,8 @@ noconfig_targets := menuconfig config oldconfig silentoldconfig randconfig \
include $(top_builddir)Rules.mak
sub_headers := headers
+#suspicious_dependency:=include/bits
+
ifeq ($(HAVE_DOT_CONFIG),y)
all: pregen libs
@@ -36,11 +38,17 @@ include $(top_srcdir)extra/locale/Makefile.in
# last included to catch all the objects added by others (locales/threads)
include $(top_srcdir)libc/Makefile.in
-include/bits/uClibc_config.h: extra/config/conf .config
- $(Q)$(INSTALL) -d $(dir $@)
- $(Q)@$< -o $(top_srcdir)extra/Configs/Config.in
- $(top_srcdir)extra/scripts/conf-header.sh .config > include/bits/uClibc_config.h
-
+# If the .config changes then we have to make sure that our includes are
+# updated properly. This would normally work by saying that the headers
+# have uClibc_config.h as prerequisite but since we _symlink_ the headers
+# and do not (?) want to rely on 'make -L' we better update them right here,
+# on spot to save us from alot of hazzle.
+include/bits/uClibc_config.h: extra/config/conf .config $(top_srcdir)extra/scripts/conf-header.sh | include/bits
+ @$(disp_gen)
+ @#superfluous: $(Q)$(INSTALL) -d $(dir $@)
+ $(Q)@$< -s $(top_srcdir)extra/Configs/Config.in
+ $(Q)$(top_srcdir)extra/scripts/conf-header.sh .config > $@
+ $(Q)$(MAKE) headers-y
# For the moment, we have to keep re-running this target
# because the fix includes scripts rely on pre-processers
@@ -54,12 +62,95 @@ export header_extra_args = -n
endif
HEADERS_BITS_COMMON := $(notdir $(wildcard $(top_srcdir)libc/sysdeps/linux/common/bits/*.h))
HEADERS_BITS_ARCH := $(notdir $(wildcard $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/bits/*.h))
-HEADERS_BITS_SUBARCH := $(notdir $(wildcard $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/bits/$(TARGET_SUBARCH)/*.h))
-HEADERS_BITS_COMMON := $(filter-out $(HEADERS_BITS_ARCH) $(HEADERS_BITS_SUBARCH),$(HEADERS_BITS_COMMON))
+HEADERS_BITS_SUBARCH :=
+ifneq ($(TARGET_SUBARCH),)
+HEADERS_BITS_SUBARCH := $(notdir $(wildcard $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/bits/$(TARGET_SUBARCH)/*.h))
+endif
+HEADERS_BITS_COMMON := $(filter-out $(HEADERS_BITS_ARCH) $(HEADERS_BITS_SUBARCH) $(HEADERS_BITS_PTHREAD),$(HEADERS_BITS_COMMON))
+
+HEADERS_SYS_COMMON := $(notdir $(wildcard $(top_srcdir)libc/sysdeps/linux/common/sys/*.h))
+HEADERS_SYS_ARCH := $(notdir $(wildcard $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/sys/*.h))
+HEADERS_SYS_COMMON := $(filter-out $(HEADERS_SYS_ARCH),$(HEADERS_SYS_COMMON))
+
+ALL_HEADERS_COMMON := include/fpu_control.h include/dl-osinfo.h \
+ include/hp-timing.h
+ALL_HEADERS_BITS_COMMON := $(addprefix include/bits/,$(HEADERS_BITS_COMMON))
+ALL_HEADERS_BITS_ARCH := $(addprefix include/bits/,$(HEADERS_BITS_ARCH))
+ifneq ($(TARGET_SUBARCH),)
+ALL_HEADERS_BITS_SUBARCH := $(addprefix include/bits/,$(HEADERS_BITS_SUBARCH))
+else
+ALL_HEADERS_BITS_SUBARCH :=
+endif
+ALL_HEADERS_SYS_COMMON := $(addprefix include/sys/,$(HEADERS_SYS_COMMON))
+ALL_HEADERS_SYS_ARCH := $(addprefix include/sys/,$(HEADERS_SYS_ARCH))
+
+target-headers-sysdep := \
+ $(ALL_HEADERS_COMMON) \
+ $(ALL_HEADERS_BITS_COMMON) \
+ $(ALL_HEADERS_BITS_ARCH) \
+ $(ALL_HEADERS_BITS_SUBARCH) \
+ $(ALL_HEADERS_SYS_COMMON) \
+ $(ALL_HEADERS_SYS_ARCH) \
+ $(ALL_HEADERS_BITS_PTHREAD)
+
+include/fpu_control.h:
+ @$(disp_ln)
+ $(Q)[ -r libc/sysdeps/linux/$(TARGET_ARCH)/$(@F) ] && \
+ $(LN) -fs ../libc/sysdeps/linux/$(TARGET_ARCH)/$(@F) $@ || \
+ $(LN) -fs ../libc/sysdeps/linux/common/$(@F) $@
+
+include/dl-osinfo.h include/hp-timing.h:
+ $(do_ln) ../libc/sysdeps/linux/common/$(@F) $@
+
+$(ALL_HEADERS_BITS_COMMON):
+ $(do_ln) ../../libc/sysdeps/linux/common/bits/$(@F) $@
+
+$(ALL_HEADERS_BITS_ARCH):
+ $(do_ln) ../../libc/sysdeps/linux/$(TARGET_ARCH)/bits/$(@F) $@
+
+ifneq ($(TARGET_SUBARCH),)
+$(ALL_HEADERS_BITS_SUBARCH):
+ $(do_ln) ../../../libc/sysdeps/linux/$(TARGET_ARCH)/bits/$(TARGET_SUBARCH)/$(@F) $@
+endif
+
+ifneq ($(strip $(ALL_HEADERS_SYS_COMMON)),)
+$(ALL_HEADERS_SYS_COMMON):
+ $(do_ln) ../../libc/sysdeps/linux/common/sys/$(@F) $@
+endif
+
+ifneq ($(strip $(ALL_HEADERS_SYS_ARCH)),)
+$(ALL_HEADERS_SYS_ARCH):
+ $(do_ln) ../../libc/sysdeps/linux/$(TARGET_ARCH)/sys/$(@F) $@
+endif
-headers_sysnum:
- $(Q)\
- set -e; \
+$(target-headers-sysdep): | include/bits
+
+sysdep_common_headers-clean:
+ $(RM) $(ALL_HEADERS_COMMON)
+headers_clean-y += sysdep_common_headers-clean
+
+# The headers. Arch specific headers are specified via ARCH_HEADERS in
+# libc/sysdeps/linux/$(TARGET_ARCH)/Makefile.arch which appends those via
+# libc/sysdeps/linux/Makefile.commonarch to headers-y
+headers-y += $(target-headers-sysdep)
+
+# Make bootstrap only header files: not requiring any cross-compilation
+headers: include/bits/uClibc_config.h
+
+pregen: include/bits/sysnum.h headers
+ $(Q)$(if $(UCLIBC_HAS_LOCALE),$(MAKE) -C extra/locale locale_headers)
+ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
+ $(Q)$(MAKE) nptl_headers
+ifeq ($(shell $(CC) --help >& /dev/null && echo yes),yes)
+ $(Q)$(MAKE) nptl_arch_headers
+ $(Q)$(MAKE) nptl_linux_headers
+endif
+endif
+
+include/bits/sysnum.h: $(top_srcdir)extra/scripts/gen_bits_syscall_h.sh
+ $(Q)$(INSTALL) -d $(@D)
+ @$(disp_gen)
+ $(Q)set -e; \
cd $(top_builddir); \
tmp=`mktemp include/bits/sysnum.h.XXXXXX 2>/dev/null`; \
[ -z "$$tmp" ] && tmp='include/bits/sysnum.h.new'; \
@@ -67,66 +158,18 @@ headers_sysnum:
if cmp include/bits/sysnum.h $$tmp >/dev/null 2>&1; then \
$(RM) $$tmp; \
else \
- mv -f $$tmp include/bits/sysnum.h; \
+ mv -f $$tmp include/bits/sysnum.h; \
fi
-# Make bootstrap only header files: not requiring any cross-compilation
-headers_bootstrap: include/bits/uClibc_config.h
- $(Q)$(MAKE) headers-y
- $(Q)\
- set -e; \
- if [ -e libc/sysdeps/linux/$(TARGET_ARCH)/fpu_control.h ] ; then \
- $(LN) -fs ../libc/sysdeps/linux/$(TARGET_ARCH)/fpu_control.h include/ ; \
- else \
- $(LN) -fs ../libc/sysdeps/linux/common/fpu_control.h include/ ; \
- fi; \
- for f in dl-osinfo.h hp-timing.h ; do \
- $(LN) -fs ../libc/sysdeps/linux/common/$$f include/ ; \
- done
- $(Q)\
- cd include/bits; \
- set -e; \
- for i in $(HEADERS_BITS_COMMON) ; do \
- $(LN) -fs ../../libc/sysdeps/linux/common/bits/$$i .; \
- done; \
- for i in $(HEADERS_BITS_ARCH) ; do \
- $(LN) -fs ../../libc/sysdeps/linux/$(TARGET_ARCH)/bits/$$i .; \
- done; \
- for i in $(HEADERS_BITS_SUBARCH) ; do \
- $(LN) -fs ../../libc/sysdeps/linux/$(TARGET_ARCH)/bits/$(TARGET_SUBARCH)/$$i .; \
- done
- $(Q)\
- cd 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
-ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
- $(MAKE) nptl_headers_bootstrap
- $(MAKE) nptl_linux_headers_bootstrap
-endif
-
-
-headers_extra:
- ifeq ($(UCLIBC_HAS_LOCALE),y)
- $(MAKE) -C extra/locale locale_headers
- endif
- ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
- $(MAKE) nptl_headers
- ifeq ($(shell $(CC) --help >& /dev/null && echo yes),yes)
- $(MAKE) nptl_arch_headers
- $(MAKE) nptl_linux_headers
- endif
- endif
-
-pregen: headers
-# Make all headers
-headers: headers_bootstrap headers_sysnum headers_extra
+$(LOCAL_INSTALL_PATH):
+ $(Q)$(MAKE) PREFIX=$(shell pwd)/ RUNTIME_PREFIX=./ \
+ DEVEL_PREFIX=$(LOCAL_INSTALL_PATH)/usr/ \
+ HOSTCC="$(HOSTCC)" \
+ install_kernel_headers
+ $(Q)$(MAKE) PREFIX=$(shell pwd)/ RUNTIME_PREFIX=./ \
+ DEVEL_PREFIX=$(LOCAL_INSTALL_PATH)/usr/ \
+ HOSTCC="$(HOSTCC)" \
+ install_dev
install: install_runtime install_dev
@@ -236,6 +279,67 @@ ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
# Remove this as it is only used internally.
$(RM) $(PREFIX)$(DEVEL_PREFIX)include/tls.h
endif
+ifneq ($(UCLIBC_HAS_GNU_ERROR),y)
+ # Remove error.h upon request
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/error.h
+endif
+ifneq ($(UCLIBC_HAS_BSD_ERR),y)
+ # Remove err.h upon request
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/err.h
+endif
+ifneq ($(UCLIBC_SUSV3_LEGACY),y)
+ # Remove timeb.h since the LEGACY ftime() was disabled upon request
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/sys/timeb.h
+endif
+ifneq ($(UCLIBC_HAS_EPOLL),y)
+ # Remove epoll.h since epoll_*() were disabled upon request
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/sys/epoll.h
+endif
+ifneq ($(UCLIBC_HAS_XATTR),y)
+ # Remove xattr.h since extended attributes were disabled upon request
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/sys/xattr.h
+endif
+ifneq ($(UCLIBC_HAS_PTY),y)
+ # Remove pty.h since PTY support was disabled upon request
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/pty.h
+endif
+ifneq ($(UCLIBC_LINUX_SPECIFIC),y)
+ # Remove linux-specific headers as requested
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/sys/inotify.h
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/sys/perm.h
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/sys/personality.h
+endif
+ifneq ($(UCLIBC_SV4_DEPRECATED),y)
+ # Remove ustat.h since deprecated SV4 support was disabled upon request
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/ustat.h
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/sys/ustat.h
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/bits/ustat.h
+endif
+ifeq ($(UCLIBC_HAS_REALTIME)$(UCLIBC_HAS_ADVANCED_REALTIME),)
+ # Remove SUSv-realtime related message-queue headers upon request
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/mqueue.h
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/sys/mqueue.h
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/bits/mqueue.h
+endif
+ifneq ($(UCLIBC_HAS_REALTIME),y)
+ # Remove SUSv-realtime related headers upon request
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/sched.h
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/sys/sched.h
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/bits/sched.h
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/semaphore.h
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/sys/semaphore.h
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/bits/semaphore.h
+endif
+ifneq ($(UCLIBC_HAS_SOCKET),y)
+ # Remove socket related headers upon request
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/sys/socket.h
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/bits/socket.h
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/sys/socketvar.h
+endif
+ifneq ($(UCLIBC_HAS_CRYPT),y)
+ # Remove crypt.h since libcrypt was disabled upon request
+ $(RM) $(PREFIX)$(DEVEL_PREFIX)include/crypt.h
+endif
# Installs development library links.
install_dev: install_headers
@@ -322,29 +426,30 @@ headers:
endif # ifeq ($(HAVE_DOT_CONFIG),y)
include/bits:
- $(INSTALL) -d include/bits
+ @$(disp_mkdir)
+ $(Q)$(INSTALL) -d $@
# configuration
# ---------------------------------------------------------------------------
-extra/config/conf extra/config/mconf: include/bits
+extra/config/conf extra/config/mconf: $(suspicious_dependency)
$(Q)$(MAKE) -C extra/config $(notdir $@)
-menuconfig: extra/config/mconf include/bits
+menuconfig: extra/config/mconf $(suspicious_dependency)
$(Q)./extra/config/mconf extra/Configs/Config.in
-config: extra/config/conf include/bits
+config: extra/config/conf $(suspicious_dependency)
$(Q)./extra/config/conf extra/Configs/Config.in
-oldconfig: extra/config/conf include/bits
+oldconfig: extra/config/conf $(suspicious_dependency)
$(Q)./extra/config/conf -o extra/Configs/Config.in
-silentoldconfig: extra/config/conf include/bits
+silentoldconfig: extra/config/conf $(suspicious_dependency)
$(Q)./extra/config/conf -s extra/Configs/Config.in
-randconfig: extra/config/conf include/bits
+randconfig: extra/config/conf $(suspicious_dependency)
$(Q)./extra/config/conf -r extra/Configs/Config.in
-allyesconfig: extra/config/conf include/bits
+allyesconfig: extra/config/conf $(suspicious_dependency)
$(Q)./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
@@ -353,16 +458,19 @@ allyesconfig: extra/config/conf include/bits
sed -i -e "s/^UCLIBC_MJN3_ONLY=.*/# UCLIBC_MJN3_ONLY is not set/" .config
$(Q)./extra/config/conf -o extra/Configs/Config.in
-allnoconfig: extra/config/conf include/bits
+allnoconfig: extra/config/conf $(suspicious_dependency)
$(Q)./extra/config/conf -n extra/Configs/Config.in
-defconfig: extra/config/conf include/bits
- $(Q)./extra/config/conf -d extra/Configs/Config.in
+defconfig: extra/config/conf $(suspicious_dependency)
+ $(Q)./extra/config/conf -d extra/Configs/Config.in \
+ -D extra/Configs/defconfigs/$(ARCH)
clean:
$(Q)$(RM) -r lib include/bits
- $(RM) lib*/*.a ldso/*/*.a libpthread/*/*.a
- $(RM) include/fpu_control.h include/dl-osinfo.h include/hp-timing.h
+ $(RM) ldso/*/*.a libpthread/*/*.a libc/*.a libcrypt/*.a libintl/*.a \
+ libm/*.a libnsl/*.a libpthread/*.a libresolv/*.a librt/*.a \
+ libutil/*.a lib/*.a \
+ include/fpu_control.h include/dl-osinfo.h include/hp-timing.h
$(MAKE) objclean-y headers_clean-y
$(MAKE) -s -C test clean
$(MAKE) -C utils utils_clean
@@ -376,9 +484,11 @@ clean:
done; \
fi
@$(RM) include/linux include/asm*
+ $(RM) $(top_builddir)extra/scripts/unifdef
+ $(RM) -r $(LOCAL_INSTALL_PATH)
distclean: clean
- -find . \( -name core -o -name \*.orig -o -name \*~ \) -exec $(RM) {} \;
+ -find . \( -name core -o -name \*.orig -o -name \*~ -o -name .\*.dep \) -exec $(RM) {} \;
$(RM) .config .config.old .config.cmd
$(RM) extra/locale/*.tgz
$(MAKE) -C extra/config distclean
@@ -391,3 +501,6 @@ dist release:
test check:
$(Q)$(MAKE) -C test
+
+test_compile: $(LOCAL_INSTALL_PATH)
+ $(Q)$(MAKE) -C test compile
diff --git a/Makerules b/Makerules
index aec7238a0..99268c084 100644
--- a/Makerules
+++ b/Makerules
@@ -4,6 +4,13 @@
.SUFFIXES: .c .S .o .os .oS .so .a .s .i
+PHONY := FORCE
+
+.PHONY: dummy $(PHONY) \
+ all check clean realclean distclean test \
+ config dist menuconfig oldconfig release \
+ subdirs utils
+
# order is important, the stripping uses STRIP_FLAGS for lib-so, but not for lib-a
ifeq ($(HAVE_SHARED),y)
.LIBPATTERNS: "lib%.so"
@@ -18,14 +25,22 @@ libs: $(lib-a-y)
endif
objs: all_objs
-shared_objs = $(ldso-y) $(libc-y:.o=.os) $(libc-shared-y) $(libc-nonshared-y) $(libdl-so-y)
-shared_objs += $(libcrypt-so-y) $(libintl-so-y) $(libm-so-y) $(libnsl-so-y) $(libpthread-so-y) $(libpthread-nonshared-y)
-shared_objs += $(libthread_db-so-y) $(libresolv-so-y) $(librt-so-y) $(libutil-so-y)
-ar_objs = $(libc-y) $(libc-static-y) $(libdl-a-y) $(libcrypt-a-y) $(libintl-a-y) $(libm-a-y) $(libnsl-a-y)
-ar_objs += $(libpthread-a-y) $(libthread_db-a-y) $(libresolv-a-y) $(librt-a-y) $(libutil-a-y)
+shared_objs = $(libc-y:.o=.os) $(libc-shared-y) $(libc-nonshared-y) \
+ $(libcrypt-so-y) $(libdl-so-y) \
+ $(libintl-so-y) $(libm-so-y) $(libnsl-so-y) \
+ $(libpthread-so-y) $(libpthread-nonshared-y) $(libthread_db-so-y) \
+ $(libresolv-so-y) $(librt-so-y) \
+ $(ldso-y) \
+ $(libutil-so-y)
+
+ar_objs = $(libc-y) $(libc-static-y) $(libcrypt-a-y) \
+ $(libdl-a-y) $(libintl-a-y) $(libm-a-y) $(libnsl-a-y) \
+ $(libpthread-a-y) $(libthread_db-a-y) \
+ $(libresolv-a-y) $(librt-a-y) $(libutil-a-y)
ifeq ($(DOPIC),y)
ar_objs := $(ar_objs:.o=.os)
endif
+flat_objs = $(lib-gdb-y)
ifeq ($(HAVE_SHARED),y)
all_objs: $(sort $(shared_objs) $(ar_objs))
@@ -50,7 +65,7 @@ SECHO := @echo
ifneq ($(V)$(VERBOSE),)
SHELL_SET_X := set -x
DISP := ver
-Q :=
+Q :=
else
DISP := pur
Q := @
@@ -60,6 +75,9 @@ endif
show_objs = $(subst ../,,$@)
pur_disp_compile.c = echo " "CC $(show_objs)
+pur_disp_compile.i = echo " "CPP $(show_objs)
+pur_disp_compile.s = echo " "CC-S $(show_objs)
+pur_disp_compile.u = echo " "CC $(show_objs)
pur_disp_compile.S = echo " "AS $(show_objs)
pur_disp_compile.m = $(pur_disp_compile.c)
pur_disp_compile-m = echo " "CC-m $(show_objs)
@@ -67,8 +85,15 @@ pur_disp_strip = echo " "STRIP $(STRIP_FLAGS) $@
pur_disp_t_strip = echo " "STRIP $(STRIP_FLAGS) $@
pur_disp_ar = echo " "AR $(ARFLAGS) $@
pur_disp_ld = echo " "LD $(1)
+pur_disp_ln = echo " "LN $@
+pur_disp_mkdir = echo " "MKDIR $@
+pur_disp_gen = echo " "GEN $@
+pur_disp_unifdef = echo " "UNIFDEF $@
sil_disp_compile.c = true
+sil_disp_compile.i = true
+sil_disp_compile.s = true
+sil_disp_compile.u = true
sil_disp_compile.S = true
sil_disp_compile.m = true
sil_disp_compile-m = true
@@ -76,17 +101,31 @@ sil_disp_strip = true
sil_disp_t_strip = true
sil_disp_ar = true
sil_disp_ld = true
+sil_disp_ln = true
+sil_disp_mkdir = true
+sil_disp_gen = true
+sil_disp_unifdef = true
ver_disp_compile.c = echo $(cmd_compile.c)
+ver_disp_compile.i = echo $(cmd_compile.i)
+ver_disp_compile.s = echo $(cmd_compile.s)
+ver_disp_compile.u = echo $(cmd_compile.u)
ver_disp_compile.S = echo $(cmd_compile.S)
ver_disp_compile.m = echo $(cmd_compile.m)
ver_disp_compile-m = echo $(cmd_compile-m)
ver_disp_strip = echo $(cmd_strip)
ver_disp_t_strip = echo $(cmd_t_strip)
ver_disp_ar = echo $(cmd_ar)
-ver_disp_ld =
+ver_disp_ld =
+ver_disp_ln =
+ver_disp_mkdir =
+ver_disp_gen =
+ver_disp_unifdef = echo $(cmd_unifdef)
disp_compile.c = $($(DISP)_disp_compile.c)
+disp_compile.i = $($(DISP)_disp_compile.i)
+disp_compile.s = $($(DISP)_disp_compile.s)
+disp_compile.u = $($(DISP)_disp_compile.u)
disp_compile.S = $($(DISP)_disp_compile.S)
disp_compile.m = $($(DISP)_disp_compile.m)
disp_compile-m = $($(DISP)_disp_compile-m)
@@ -94,30 +133,83 @@ disp_strip = $($(DISP)_disp_strip)
disp_t_strip = $($(DISP)_disp_t_strip)
disp_ar = $($(DISP)_disp_ar)
disp_ld = $($(DISP)_disp_ld)
-
-cmd_compile.c = $(CC) -c $< -o $@ $(CFLAGS) $(ARCH_CFLAGS) $(CFLAGS-$(suffix $@)) $(filter-out $(CFLAGS-OMIT-$(notdir $<)),$(CFLAGS-$(notdir $(^D)))) $(CFLAGS-$(subst $(top_srcdir),,$(dir $<))) $(CFLAGS-$(notdir $<)) $(CFLAGS-$(notdir $@))
-cmd_compile.S = $(cmd_compile.c) -D__ASSEMBLER__ $(ASFLAGS) $(ARCH_ASFLAGS) $(ASFLAGS-$(suffix $@)) $(ASFLAGS-$(notdir $<)) $(ASFLAGS-$(notdir $@))
+disp_ln = $($(DISP)_disp_ln)
+disp_mkdir = $($(DISP)_disp_mkdir)
+disp_gen = $($(DISP)_disp_gen)
+disp_unifdef = $($(DISP)_disp_unifdef)
+
+any-prereq = $(filter-out $(PHONY),$?) $(filter-out $(PHONY) $(wildcard $^),$^)
+
+# ../foo/bar/baz.ext -> foo_bar_baz.ext
+variablify = $(subst /,_,$(subst $(top_builddir),,$(1)))
+# strip the top_builddir off everything to make the *string* idempotent for -C
+dirify = $(subst $(top_builddir),,$(patsubst -L$(top_builddir)%,-L%,$(patsubst -I$(top_builddir)%,-I%,$(1))))
+
+# True if not identical. Neither order nor whitespace nor identical flags
+# matter.
+compare_flags = \
+ $(strip $(filter-out $(call dirify,$(cmd_$(call variablify,$(1)))), \
+ $(call dirify,$(cmd_$(call variablify,$(@))))) \
+ $(filter-out $(call dirify,$(cmd_$(call variablify,$(@)))), \
+ $(call dirify,$(cmd_$(call variablify,$(1))))))
+
+# Rebuild if any prerequisite, the used CC or flags changed.
+# Previously used flags are stored in the corresponding .%.dep files
+maybe_exec = \
+ $(if $(strip $(compare_flags) $(any-prereq)), \
+ @set -e; \
+ $(disp_$(1)); \
+ $(cmd_$(1)); \
+ echo 'cmd_$(call variablify,$@) := $(call dirify,$(cmd_$(call variablify,$1)))' >> $(dir $@).$(notdir $@).dep)
+
+
+CFLAGS_gen.dep = -MT $@ -MD -MP -MF $(dir $@).$(notdir $@).dep
+
+cmd_compile.c = $(CC) -c $< -o $@ $(CFLAGS) $(ARCH_CFLAGS) \
+ $(CFLAGS-$(suffix $@)) \
+ $(filter-out $(CFLAGS-OMIT-$(notdir $<)),$(CFLAGS-$(notdir $(<D)))) \
+ $(CFLAGS-$(subst $(top_srcdir),,$(dir $<))) \
+ $(CFLAGS-$(notdir $<)) \
+ $(CFLAGS-$(notdir $@)) \
+ $(CFLAGS_gen.dep)
+cmd_compile.i = $(cmd_compile.c:-c=-E -dD)
+cmd_compile.s = $(cmd_compile.c:-c=-S)
+cmd_compile.u = $(CC) $^ $(DEPS-$(notdir $@)) -o $@ $(CFLAGS) $(CFLAGS-$(notdir $(^D))) $(CFLAGS-$(notdir $@)) $(CFLAGS_gen.dep)
+cmd_compile.S = $(filter-out -std=gnu99, $(cmd_compile.c)) -D__ASSEMBLER__ $(ASFLAGS) $(ARCH_ASFLAGS) $(ASFLAGS-$(suffix $@)) $(ASFLAGS-$(notdir $<)) $(ASFLAGS-$(notdir $@))
cmd_compile.m = $(cmd_compile.c) -DL_$(patsubst %$(suffix $(notdir $@)),%,$(notdir $@))
+
cmd_compile-m = $(CC) $^ -c -o $@ $(CFLAGS) $(ARCH_CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(notdir $(@D))) $(CFLAGS-$(notdir $@))
cmd_strip = $(STRIPTOOL) $(STRIP_FLAGS) $^
cmd_t_strip = $(STRIPTOOL) $(STRIP_FLAGS) $@
cmd_ar = $(AR) $(ARFLAGS) $@ $^
-compile.c = @$(disp_compile.c) ; $(cmd_compile.c)
-compile.i = $(cmd_compile.c:-c=-E -dD)
-compile.s = $(cmd_compile.c:-c=-S)
-compile.S = @$(disp_compile.S) ; $(cmd_compile.S)
-compile.m = @$(disp_compile.m) ; $(cmd_compile.m)
-compile-m = @$(disp_compile-m) ; $(cmd_compile-m)
+define do_ln
+ @$(disp_ln)
+ $(Q)$(LN) -fs
+endef
+
+define do_awk
+ @$(disp_gen)
+ $(Q)$(AWK) -f
+endef
+
+compile.c = @$(call maybe_exec,compile.c)
+compile.i = $(call maybe_exec,compile.i)
+compile.s = $(call maybe_exec,compile.s)
+compile.S = @$(call maybe_exec,compile.S)
+compile.m = @$(call maybe_exec,compile.m)
+compile-m = @$(disp_compile-m) ; $(cmd_compile-m) ; $(do_t_strip)
do_strip = @$(disp_strip) ; $(cmd_strip)
do_t_strip= @$(disp_t_strip) ; $(cmd_t_strip)
-do_ar = @$(disp_ar) ; $(cmd_ar)
+do_unifdef= @$(disp_unifdef) ; $(cmd_unifdef)
+define do_ar
+ $(do_strip)
+ @$(disp_ar) ; $(cmd_ar)
+endef
define compile.u
- @$(disp_compile.c)
- $(Q)$(CC) $^ $(DEPS-$(notdir $@)) -o $@ $(CFLAGS) $(CFLAGS-$(notdir $(^D))) $(CFLAGS-$(notdir $@))
- @$(disp_strip)
- $(Q)$(STRIPTOOL) $(STRIP_FLAGS) $@
+ @$(disp_compile.u) ; $(cmd_compile.u)
+ @$(disp_t_strip)
endef
hcompile.u = $(HOSTCC) $^ $(DEPS-$(notdir $@)) -o $@ $(BUILD_LDFLAGS) $(BUILD_LDFLAGS-$(notdir $(^D))) $(BUILD_LDFLAGS-$(notdir $@)) $(BUILD_CFLAGS) $(BUILD_CFLAGS-$(notdir $(^D))) $(BUILD_CFLAGS-$(notdir $@))
hcompile.o = $(HOSTCC) $^ $(DEPS-$(notdir $@)) -c -o $@ $(BUILD_CFLAGS) $(BUILD_CFLAGS-$(notdir $(^D))) $(BUILD_CFLAGS-$(notdir $@))
@@ -127,7 +219,7 @@ define link.so
$(Q)$(RM) $@ $@.$(2) $(dir $@)$(1)
@$(disp_ld)
$(Q)$(CC) $(LDFLAGS-$(notdir $@)) -Wl,-soname=$(notdir $@).$(2) \
- -nostdlib -o $(dir $@)$(1) $(START_FILE-$(notdir $@)) \
+ $(NOSTDLIB_CFLAGS) -o $(dir $@)$(1) $(START_FILE-$(notdir $@)) \
-Wl,--whole-archive $(firstword $^) -Wl,--no-whole-archive \
$(LIBS-$(notdir $@)) $(LIBGCC) $(END_FILE-$(notdir $@))
$(Q)$(LN) -sf $(1) $@.$(2)
@@ -146,23 +238,28 @@ LINK_FLAT_CRTS := $(top_builddir)lib/Scrt1.o $(top_builddir)lib/crti.o \
# Argument 1 is the shared library file -- i.e. $(@:.gdb=) -- and argument 2
# is the shared library identifier. If it wasn't for $(disp_ld), we could
# avoid passing $(@:.gdb=) as an argument and use $(@:.gdb=) instead of $(1).
+#
+# This is so far only used for libc, for which we want to link the entire
+# libgcc into the shared object.
define link-flat.so
$(Q)$(INSTALL) -d $(dir $@)
$(Q)$(RM) $(1) $@
@$(disp_ld)
- $(Q)$(CC) $(LDFLAGS-$(notdir $@)) -nostdlib -o $(1) \
- -Wl,-elf2flt -Wl,-shared-lib-id $(2) $(top_builddir)lib/Scrt1.o \
+ $(Q)$(CC) $(LDFLAGS-$(notdir $@)) $(NOSTDLIB_CFLAGS) -o $(1) \
+ -Wl,-elf2flt -Wl,-shared-lib-id,$(2) $(top_builddir)lib/Scrt1.o \
$(top_builddir)/lib/crti.o -Wl,--whole-archive $(firstword $^) \
- -Wl,--no-whole-archive $(LIBS-$(notdir $@)) $(LIBGCC) \
+ $(LIBGCC) -Wl,--no-whole-archive $(LIBS-$(notdir $@)) $(LIBGCC) \
$(top_builddir)/lib/crtn.o
endef
define linkm.so
$(Q)$(INSTALL) -d $(dir $@)
$(Q)$(RM) $@ $@.$(2) $(dir $@)$(1)
+ $(do_strip)
@$(disp_ld)
$(Q)$(CC) $(LDFLAGS-$(notdir $@)) -Wl,-soname=$(notdir $@).$(2) \
- -nostdlib -o $(dir $@)$(1) $(START_FILE-$(notdir $@)) $^ \
+ $(NOSTDLIB_CFLAGS) -o $(dir $@)$(1) $(START_FILE-$(notdir $@)) \
+ $^ \
$(LIBS-$(notdir $@)) $(LIBGCC) $(END_FILE-$(notdir $@))
$(Q)$(LN) -sf $(1) $@.$(2)
$(Q)$(LN) -sf $(1) $@
@@ -171,19 +268,19 @@ endef
CFLAGS-.os+=$(PICFLAG)
CFLAGS-.oS+=$(PICFLAG) -DSHARED
-%.o: %.c ; $(compile.c)
-%.os: %.c ; $(compile.c)
-%.oS: %.c ; $(compile.c)
-%.o: %.S ; $(compile.S)
-%.os: %.S ; $(compile.S)
-%.oS: %.S ; $(compile.S)
-%.o: %.s ; $(compile.S)
-%.os: %.s ; $(compile.S)
-%.oS: %.s ; $(compile.S)
-%.i: %.c ; $(compile.i)
-%.i: %.S ; $(compile.i)
-%.s: %.c ; $(compile.s)
-%.s: %.S ; $(compile.s)
+%.o: %.c FORCE ; $(compile.c)
+%.os: %.c FORCE ; $(compile.c)
+%.oS: %.c FORCE ; $(compile.c)
+%.o: %.S FORCE ; $(compile.S)
+%.os: %.S FORCE ; $(compile.S)
+%.oS: %.S FORCE ; $(compile.S)
+%.o: %.s FORCE ; $(compile.S)
+%.os: %.s FORCE ; $(compile.S)
+%.oS: %.s FORCE ; $(compile.S)
+%.i: %.c FORCE ; $(compile.i)
+%.i: %.S FORCE ; $(compile.i)
+%.s: %.c FORCE ; $(compile.s)
+%.s: %.S FORCE ; $(compile.s)
$(top_builddir)lib/interp.c: | $(sub_headers)
$(Q)$(INSTALL) -d $(dir $@)
@@ -202,9 +299,6 @@ $(ldso):
$(libc):
@cd $(top_builddir); $(MAKE) lib/$(patsubst %.$(MAJOR_VERSION),%,$(notdir $@))
-$(headers_dep):
- $(Q)cd $(top_builddir); $(MAKE) headers
-
CRT := crt1
ifeq ($(HAVE_SHARED)$(UCLIBC_FORMAT_SHARED_FLAT),y)
@@ -226,6 +320,13 @@ else
CTOR_TARGETS:=
endif
+ifeq ($(UCLIBC_FORMAT_FDPIC_ELF),y)
+CRTRELOC=$(top_builddir)lib/crtreloc.o
+$(CRTRELOC): $(top_builddir)lib/%.o : $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/%.c
+ $(Q)$(INSTALL) -d $(dir $@)
+ $(compile.c)
+endif
+
ifneq ($(wildcard $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/initfini.c),)
CFLAGS-initfini.s := -S -g0 $(PICFLAG) -fno-inline-functions -finhibit-size-directive
$(top_builddir)lib/initfini.s: $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/initfini.c
@@ -238,13 +339,13 @@ $(top_builddir)lib/defs.h: $(top_builddir)lib/initfini.s
$(top_builddir)lib/crti.S: $(top_builddir)lib/initfini.s $(top_builddir)lib/defs.h
$(Q)sed -n -e '1,/@HEADER_ENDS/p' \
- -e '/@_.*_PROLOG_BEGINS/,/@_.*_PROLOG_ENDS/p' \
- -e '/@TRAILER_BEGINS/,$$p' $< > $@
+ -e '/@_.*_PROLOG_BEGINS/,/@_.*_PROLOG_ENDS/p' \
+ -e '/@TRAILER_BEGINS/,$$p' $< > $@
$(top_builddir)lib/crtn.S: $(top_builddir)lib/initfini.s
$(Q)sed -n -e '1,/@HEADER_ENDS/p' \
- -e '/@_.*_EPILOG_BEGINS/,/@_.*_EPILOG_ENDS/p' \
- -e '/@TRAILER_BEGINS/,$$p' $< > $@
+ -e '/@_.*_EPILOG_BEGINS/,/@_.*_EPILOG_ENDS/p' \
+ -e '/@TRAILER_BEGINS/,$$p' $< > $@
$(CTOR_TARGETS): $(top_builddir)lib/%.o : $(top_builddir)lib/%.S
$(Q)$(INSTALL) -d $(dir $@)
@@ -263,28 +364,48 @@ endif
CRTS_COMPAT :=
#endif
-$(crt-y): $(CRTS) $(CTOR_TARGETS) $(CRTS_COMPAT)
-$(CRTS) $(CTOR_TARGETS) $(CRTS_COMPAT): | headers
+$(crt-y): $(CRTS) $(CTOR_TARGETS) $(CRTS_COMPAT) $(CRTRELOC)
+$(CRTS) $(CTOR_TARGETS) $(CRTS_COMPAT) $(CRTRELOC): | $(headers-y)
$(top_builddir)lib/$(NONSHARED_LIBNAME): $(libc-nonshared-y)
$(Q)$(INSTALL) -d $(dir $@)
$(Q)$(RM) $@
- $(do_strip)
$(do_ar)
$(top_builddir)lib/libpthread_nonshared.a: $(libpthread-nonshared-y)
$(Q)$(INSTALL) -d $(dir $@)
$(Q)$(RM) $@
- $(do_strip)
$(do_ar)
-.PHONY: dummy create
+files.dep := $(libc-a-y) $(libc-so-y) $(libc-nonshared-y) \
+ $(libm-a-y) $(libm-so-y) \
+ $(libpthread-a-y) $(libpthread-so-y) $(libpthread-nonshared-y) \
+ $(libthread_db-a-y) $(libthread_db-so-y) \
+ $(librt-a-y) $(librt-so-y) $(libresolv-a-y) $(libresolv-so-y) \
+ $(libcrypt-a-y) $(libcrypt-so-y) $(libutil-a-y) $(libutil-so-y) \
+ $(libnsl-a-y) $(libnsl-so-y) $(ldso-y) $(libdl-a-y) $(libdl-so-y)
+.depends.dep := \
+ $(patsubst %.o,%.o.dep,$(filter %.o,$(files.dep))) \
+ $(patsubst %.os,%.os.dep,$(filter %.os,$(files.dep))) \
+ $(patsubst %.oS,%.oS.dep,$(filter %.oS,$(files.dep)))
+# Oh, and prepend a dot to the basename so i don't have to change my habit of
+# calling 'size thefile.o*'
+.depends.dep := $(foreach f,$(.depends.dep),$(dir $(f)).$(notdir $(f)))
+.depends.dep := $(wildcard $(.depends.dep))
+
+FORCE:
+
clean: objclean-y headers_clean-y
+realclean: clean
+ $(Q)$(RM) $(.depends.dep)
objclean-y: $(objclean-y)
headers_clean-y: $(headers_clean-y)
-.PHONY: \
- all check clean distclean test \
- config dist menuconfig oldconfig release \
- subdirs utils
+ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),)
+ifneq ($(strip $(.depends.dep)),)
+.NOEXPORT:
+-include $(.depends.dep)
+endif
+endif
+
diff --git a/Rules.mak b/Rules.mak
index 336955e75..7fc997a30 100644
--- a/Rules.mak
+++ b/Rules.mak
@@ -41,12 +41,20 @@ INSTALL = install
LN = ln
RM = rm -f
TAR = tar
+AWK = awk
STRIP_FLAGS ?= -x -R .note -R .comment
+UNIFDEF := $(top_builddir)extra/scripts/unifdef -UUCLIBC_INTERNAL
+
# Select the compiler needed to build binaries for your development system
HOSTCC = gcc
BUILD_CFLAGS = -O2 -Wall
+export ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun.*/sparc/ -e s/sparc.*/sparc/ \
+ -e s/arm.*/arm/ -e s/sa110/arm/ -e s/sh.*/sh/ \
+ -e s/s390x/s390/ -e s/parisc.*/hppa/ \
+ -e s/ppc.*/powerpc/ -e s/mips.*/mips/ \
+ -e s/xtensa.*/xtensa/ )
#---------------------------------------------------------
@@ -85,7 +93,7 @@ export MAJOR_VERSION MINOR_VERSION SUBLEVEL VERSION LC_ALL
LIBC := libc
SHARED_MAJORNAME := $(LIBC).so.$(MAJOR_VERSION)
-ifneq ($(findstring $(TARGET_ARCH) , hppa64 ia64 mips64 powerpc64 s390x sh64 sparc64 x86_64 ),)
+ifneq ($(findstring $(TARGET_ARCH) , hppa64 ia64 mips64 powerpc64 s390x sparc64 x86_64 ),)
UCLIBC_LDSO_NAME := ld64-uClibc
else
UCLIBC_LDSO_NAME := ld-uClibc
@@ -93,6 +101,7 @@ endif
UCLIBC_LDSO := $(UCLIBC_LDSO_NAME).so.$(MAJOR_VERSION)
NONSHARED_LIBNAME := uclibc_nonshared.a
libc := $(top_builddir)lib/$(SHARED_MAJORNAME)
+libc.depend := $(top_builddir)lib/$(SHARED_MAJORNAME:.$(MAJOR_VERSION)=)
interp := $(top_builddir)lib/interp.os
ldso := $(top_builddir)lib/$(UCLIBC_LDSO)
headers_dep := $(top_builddir)include/bits/sysnum.h
@@ -133,6 +142,7 @@ check_ld=$(shell \
ARFLAGS:=cr
+# Flags in OPTIMIZATION are used only for non-debug builds
OPTIMIZATION:=
# Use '-Os' optimization if available, else use -O2, allow Config to override
OPTIMIZATION+=$(call check_gcc,-Os,-O2)
@@ -152,17 +162,70 @@ OPTIMIZATION+=$(call check_gcc,-fno-tree-dominator-opts,)
OPTIMIZATION+=$(call check_gcc,-fno-strength-reduce,)
endif
-ifeq ($(UCLIBC_FORMAT_FDPIC_ELF),y)
- PICFLAG:=-mfdpic
-else
- PICFLAG:=-fPIC -DPIC
-endif
+CPU_CFLAGS-$(UCLIBC_FORMAT_SHARED_FLAT) += -mid-shared-library
+CPU_CFLAGS-$(UCLIBC_FORMAT_FLAT_SEP_DATA) += -msep-data
+
+PICFLAG-y := -fPIC -DPIC
+PICFLAG-$(UCLIBC_FORMAT_FDPIC_ELF) := -mfdpic
+PICFLAG := $(PICFLAG-y)
PIEFLAG_NAME:=-fPIE
# Some nice CPU specific optimizations
ifeq ($(TARGET_ARCH),i386)
- OPTIMIZATION+=$(call check_gcc,-mpreferred-stack-boundary=2,)
- OPTIMIZATION+=$(call check_gcc,-falign-jumps=0 -falign-loops=0,-malign-jumps=0 -malign-loops=0)
+ OPTIMIZATION+=$(call check_gcc,-fomit-frame-pointer,)
+
+ # NB: this may make SSE insns segfault!
+ # -O1 -march=pentium3, -Os -msse etc are known to be affected.
+ # TODO: conditionally bump to 4
+ # (see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13685)
+ OPTIMIZATION+=$(call check_gcc,-mpreferred-stack-boundary=4,)
+
+ # Choice of alignment (please document why!)
+ # -falign-labels: in-line labels
+ # (reachable by normal code flow, aligning will insert nops
+ # which will be executed - may even make things slower)
+ # -falign-jumps: reachable only by a jump
+ # Generic: no alignment at all (smallest code)
+ GCC_FALIGN=$(call check_gcc,-falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1,-malign-jumps=1 -malign-loops=1)
+ifeq ($(CONFIG_K7),y)
+ # Align functions to four bytes, use default for jumps and loops (why?)
+ GCC_FALIGN=$(call check_gcc,-falign-functions=4 -falign-labels=1,-malign-functions=4)
+endif
+ifeq ($(CONFIG_CRUSOE),y)
+ # Use compiler's default for functions, jumps and loops (why?)
+ GCC_FALIGN=$(call check_gcc,-falign-functions=0 -falign-labels=1,-malign-functions=0)
+endif
+ifeq ($(CONFIG_CYRIXIII),y)
+ # Use compiler's default for functions, jumps and loops (why?)
+ GCC_FALIGN=$(call check_gcc,-falign-functions=0 -falign-labels=1,-malign-functions=0)
+endif
+ OPTIMIZATION+=$(GCC_FALIGN)
+
+ # Putting each function and data object into its own section
+ # allows for kbytes of less text if users link against static uclibc
+ # using ld --gc-sections.
+ # ld 2.18 can't do that (yet?) for shared libraries, so we itself
+ # do not use --gc-sections at shared lib link time.
+ # However, in combination with sections being sorted by alignment
+ # it does result in much reduced padding:
+ # text data bss dec hex
+ # 235319 1472 5992 242783 3b45f old.so
+ # 234104 1472 5980 241556 3af94 new.so
+ # Without -ffunction-sections, all functions will get aligned
+ # to 4 byte boundary by as/ld. This is arguably a bug in as.
+ # It specifies 4 byte align for .text even if not told to do so:
+ # Idx Name Size VMA LMA File off Algn
+ # 0 .text xxxxxxxx 00000000 00000000 xxxxxxxx 2**2 <===!
+ CPU_CFLAGS-y += $(call check_gcc,-ffunction-sections -fdata-sections,)
+ifneq ($(call check_ld,--sort-common,),)
+ CPU_LDFLAGS-y += -Wl,--sort-common
+endif
+ifneq ($(call check_ld,--sort-section alignment),)
+ CPU_LDFLAGS-y += -Wl,--sort-section,alignment
+endif
+
+ CPU_LDFLAGS-y+=-m32
+ CPU_CFLAGS-y+=-m32
CPU_CFLAGS-$(CONFIG_386)+=-march=i386
CPU_CFLAGS-$(CONFIG_486)+=-march=i486
CPU_CFLAGS-$(CONFIG_ELAN)+=-march=i486
@@ -173,11 +236,11 @@ ifeq ($(TARGET_ARCH),i386)
CPU_CFLAGS-$(CONFIG_PENTIUMIII)+=$(call check_gcc,-march=pentium3,-march=i686)
CPU_CFLAGS-$(CONFIG_PENTIUM4)+=$(call check_gcc,-march=pentium4,-march=i686)
CPU_CFLAGS-$(CONFIG_K6)+=$(call check_gcc,-march=k6,-march=i586)
- CPU_CFLAGS-$(CONFIG_K7)+=$(call check_gcc,-march=athlon,-march=i686) $(call check_gcc,-falign-functions=4,-malign-functions=4)
- CPU_CFLAGS-$(CONFIG_CRUSOE)+=-march=i686 $(call check_gcc,-falign-functions=0,-malign-functions=0)
+ CPU_CFLAGS-$(CONFIG_K7)+=$(call check_gcc,-march=athlon,-march=i686)
+ CPU_CFLAGS-$(CONFIG_CRUSOE)+=-march=i686
CPU_CFLAGS-$(CONFIG_WINCHIPC6)+=$(call check_gcc,-march=winchip-c6,-march=i586)
CPU_CFLAGS-$(CONFIG_WINCHIP2)+=$(call check_gcc,-march=winchip2,-march=i586)
- CPU_CFLAGS-$(CONFIG_CYRIXIII)+=$(call check_gcc,-march=c3,-march=i486) $(call check_gcc,-falign-functions=0,-malign-functions=0)
+ CPU_CFLAGS-$(CONFIG_CYRIXIII)+=$(call check_gcc,-march=c3,-march=i486)
CPU_CFLAGS-$(CONFIG_NEHEMIAH)+=$(call check_gcc,-march=c3-2,-march=i686)
endif
@@ -204,11 +267,15 @@ ifeq ($(TARGET_ARCH),arm)
CPU_CFLAGS-$(CONFIG_ARM926T)+=-mtune=arm9tdmi -march=armv5t
CPU_CFLAGS-$(CONFIG_ARM10T)+=-mtune=arm10tdmi -march=armv5t
CPU_CFLAGS-$(CONFIG_ARM1136JF_S)+=-mtune=arm1136jf-s -march=armv6
+ CPU_CFLAGS-$(CONFIG_ARM1176JZ_S)+=-mtune=arm1176jz-s -march=armv6
+ CPU_CFLAGS-$(CONFIG_ARM1176JZF_S)+=-mtune=arm1176jzf-s -march=armv6
CPU_CFLAGS-$(CONFIG_ARM_SA110)+=-mtune=strongarm110 -march=armv4
CPU_CFLAGS-$(CONFIG_ARM_SA1100)+=-mtune=strongarm1100 -march=armv4
CPU_CFLAGS-$(CONFIG_ARM_XSCALE)+=$(call check_gcc,-mtune=xscale,-mtune=strongarm110)
CPU_CFLAGS-$(CONFIG_ARM_XSCALE)+=-march=armv5te -Wa,-mcpu=xscale
CPU_CFLAGS-$(CONFIG_ARM_IWMMXT)+=-march=iwmmxt -Wa,-mcpu=iwmmxt -mabi=iwmmxt
+ CPU_CFLAGS-$(CONFIG_ARM_CORTEX_M3)+=-mcpu=cortex-m3 -mthumb
+ CPU_CFLAGS-$(CONFIG_ARM_CORTEX_M1)+=-mcpu=cortex-m1 -mthumb
endif
ifeq ($(TARGET_ARCH),mips)
@@ -266,6 +333,7 @@ ifeq ($(TARGET_ARCH),sh64)
endif
ifeq ($(TARGET_ARCH),h8300)
+ SYMBOL_PREFIX=_
CPU_LDFLAGS-$(CONFIG_H8300H)+= -Wl,-ms8300h
CPU_LDFLAGS-$(CONFIG_H8S) += -Wl,-ms8300s
CPU_CFLAGS-$(CONFIG_H8300H) += -mh -mint32
@@ -295,6 +363,21 @@ ifeq ($(TARGET_ARCH),powerpc)
PIEFLAG_NAME:=-fpie
PPC_HAS_REL16:=$(shell echo -e "\t.text\n\taddis 11,30,_GLOBAL_OFFSET_TABLE_-.@ha" | $(CC) -c -x assembler -o /dev/null - 2> /dev/null && echo -n y || echo -n n)
CPU_CFLAGS-$(PPC_HAS_REL16)+= -DHAVE_ASM_PPC_REL16
+ CPU_CFLAGS-$(CONFIG_E500) += "-D__NO_MATH_INLINES -D__NO_LONG_DOUBLE_MATH"
+
+endif
+
+ifeq ($(TARGET_ARCH),bfin)
+ SYMBOL_PREFIX=_
+ifeq ($(UCLIBC_FORMAT_FDPIC_ELF),y)
+ CPU_CFLAGS-y:=-mfdpic
+ CPU_LDFLAGS-y += -Wl,-melf32bfinfd
+ PICFLAG:=-fpic
+ PIEFLAG_NAME:=-fpie
+endif
+ifeq ($(UCLIBC_FORMAT_SHARED_FLAT),y)
+ PICFLAG := -mleaf-id-shared-library
+endif
endif
ifeq ($(TARGET_ARCH),frv)
@@ -308,6 +391,24 @@ ifeq ($(TARGET_ARCH),frv)
UCLIBC_LDSO=ld.so.1
endif
+ifeq ($(strip $(TARGET_ARCH)),avr32)
+ CPU_CFLAGS-$(CONFIG_AVR32_AP7) += -march=ap
+ CPU_CFLAGS-$(CONFIG_LINKRELAX) += -mrelax
+ CPU_LDFLAGS-$(CONFIG_LINKRELAX) += --relax
+endif
+
+ifeq ($(TARGET_ARCH),i960)
+ SYMBOL_PREFIX=_
+endif
+
+ifeq ($(TARGET_ARCH),microblaze)
+ SYMBOL_PREFIX=_
+endif
+
+ifeq ($(TARGET_ARCH),v850)
+ SYMBOL_PREFIX=_
+endif
+
# Keep the check_gcc from being needlessly executed
ifndef PIEFLAG
ifneq ($(UCLIBC_BUILD_PIE),y)
@@ -327,21 +428,9 @@ export LDPIEFLAG:=$(shell $(LD) --help 2>/dev/null | grep -q -- -pie && echo "-W
endif
endif
-# For NPTL we need to add the dynamic linker into the
-# libc.so linker script. Required to provide __tls_get_addr
-# symbol when usign TLS dynamic access model
-
-ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
-ASNEEDED:=AS_NEEDED ( $(UCLIBC_LDSO) )
-endif
-
# Check for AS_NEEDED support in linker script (binutils>=2.16.1 has it)
ifndef ASNEEDED
-ifneq ($(UCLIBC_HAS_SSP),y)
-export ASNEEDED:=
-else
-export ASNEEDED:=$(shell (LD_TMP=$(mktemp LD_XXXXXX) ; echo "GROUP ( AS_NEEDED ( /usr/lib/libc.so ) )" > $LD_TMP && if $(LD) -T $LD_TMP -o /dev/null > /dev/null 2>&1; then echo "AS_NEEDED ( $(UCLIBC_LDSO) )"; else echo "$(UCLIBC_LDSO)"; fi; rm -f $LD_TMP ) )
-endif
+export ASNEEDED:=$(shell $(LD) --help 2>/dev/null | grep -q -- --as-needed && echo "AS_NEEDED ( $(UCLIBC_LDSO) )" || echo "$(UCLIBC_LDSO)")
endif
# Add a bunch of extra pedantic annoyingly strict checks
@@ -365,10 +454,12 @@ else
SSP_CFLAGS := $(SSP_DISABLE_FLAGS)
endif
+NOSTDLIB_CFLAGS:=$(call check_gcc,-nostdlib,)
# Some nice CFLAGS to work with
CFLAGS := -include $(top_builddir)include/libc-symbols.h \
$(XWARNINGS) $(CPU_CFLAGS) $(SSP_CFLAGS) \
- -fno-builtin -nostdinc -I$(top_builddir)include -I.
+ -fno-builtin -nostdinc -I$(top_builddir)include -I. \
+ -I$(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)
ifneq ($(strip $(UCLIBC_EXTRA_CFLAGS)),"")
CFLAGS += $(subst ",, $(UCLIBC_EXTRA_CFLAGS))
@@ -391,13 +482,15 @@ ifeq ($(TARGET_ARCH),arm)
endif
endif
+# Please let us see private headers' parts
+CFLAGS += -DUCLIBC_INTERNAL
+
# We need this to be checked within libc-symbols.h
ifneq ($(HAVE_SHARED),y)
CFLAGS += -DSTATIC
endif
-# only i386 is known to work if compile.S gets -D__ASSEMBLER__
-#CFLAGS += $(call check_gcc,-std=c99,)
+CFLAGS += $(call check_gcc,-std=gnu99,)
LDFLAGS_NOSTRIP:=$(CPU_LDFLAGS-y) -Wl,-shared \
-Wl,--warn-common -Wl,--warn-once -Wl,-z,combreloc
@@ -418,12 +511,11 @@ LDFLAGS_GNUHASH:=$(call check_ld,--hash-style=gnu)
ifeq ($(LDFLAGS_GNUHASH),)
$(error Your binutils don't support --hash-style option, while you want to use it)
else
-LDFLAGS_NOSTRIP += $(LDFLAGS_GNUHASH)
+LDFLAGS_NOSTRIP += -Wl,$(LDFLAGS_GNUHASH)
endif
endif
LDFLAGS:=$(LDFLAGS_NOSTRIP) -Wl,-z,defs
-
ifeq ($(DODEBUG),y)
#CFLAGS += -g3
CFLAGS += -O0 -g3 -DDEBUG
@@ -451,6 +543,10 @@ else
DOMULTI:=n
endif
+ifneq ($(strip $(UCLIBC_EXTRA_LDFLAGS)),"")
+LDFLAGS += $(subst ",, $(UCLIBC_EXTRA_LDFLAGS))
+endif
+
ifeq ($(UCLIBC_HAS_THREADS),y)
ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
PTNAME := nptl
@@ -462,7 +558,6 @@ else
endif
endif
PTDIR := $(top_builddir)libpthread/$(PTNAME)
-
# set up system dependencies include dirs (NOTE: order matters!)
ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
PTINC:= -I$(PTDIR) \
@@ -508,14 +603,18 @@ else
endif
CFLAGS += -I$(KERNEL_HEADERS)
-# Sigh, some stupid versions of gcc can't seem to cope with '-iwithprefix include'
-#CFLAGS+=-iwithprefix include
-CFLAGS+=-isystem $(shell $(CC) -print-file-name=include)
+#CFLAGS += -iwithprefix include-fixed -iwithprefix include
+CC_IPREFIX:=$(shell $(CC) --print-file-name=include)
+CFLAGS += -I$(dir $(CC_IPREFIX))/include-fixed -I$(CC_IPREFIX)
ifneq ($(DOASSERTS),y)
CFLAGS+=-DNDEBUG
endif
+ifeq ($(SYMBOL_PREFIX),_)
+CFLAGS+=-D__UCLIBC_UNDERSCORES__
+endif
+
# Keep the check_as from being needlessly executed
ifndef ASFLAGS_NOEXEC
ifeq ($(UCLIBC_BUILD_NOEXECSTACK),y)
@@ -535,3 +634,5 @@ 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
endif
+
+LOCAL_INSTALL_PATH := install_dir
diff --git a/ldso/ldso/Makefile.in b/ldso/ldso/Makefile.in
index 229a9cea9..db5dbdadc 100644
--- a/ldso/ldso/Makefile.in
+++ b/ldso/ldso/Makefile.in
@@ -22,7 +22,7 @@ endif
CFLAGS-ldso/ldso/$(TARGET_ARCH)/ := $(CFLAGS-ldso)
-CFLAGS-ldso.c := -DLDSO_ELFINTERP=\"$(TARGET_ARCH)/elfinterp.c\"
+CFLAGS-ldso.c := -DLDSO_ELFINTERP=\"$(TARGET_ARCH)/elfinterp.c\" $(CFLAGS-ldso)
ifneq ($(SUPPORT_LD_DEBUG),y)
LDFLAGS-$(UCLIBC_LDSO_NAME).so := $(LDFLAGS)
@@ -37,6 +37,13 @@ $(UCLIBC_LDSO_NAME)_DIR := $(top_srcdir)ldso/ldso
$(UCLIBC_LDSO_NAME)_OUT := $(top_builddir)ldso/ldso
$(UCLIBC_LDSO_NAME)_CSRC := $($(UCLIBC_LDSO_NAME)_DIR)/ldso.c
+# prerequesites
+$($(UCLIBC_LDSO_NAME)_OUT)/ldso.o $($(UCLIBC_LDSO_NAME)_OUT)/ldso.oS: \
+ $($(UCLIBC_LDSO_NAME)_DIR)/dl-debug.c \
+ $($(UCLIBC_LDSO_NAME)_DIR)/dl-startup.c \
+ $($(UCLIBC_LDSO_NAME)_DIR)/dl-array.c \
+ $($(UCLIBC_LDSO_NAME)_DIR)/dl-hash.c \
+ $($(UCLIBC_LDSO_NAME)_DIR)/dl-elf.c
$(UCLIBC_LDSO_NAME)_COBJ := $(patsubst $($(UCLIBC_LDSO_NAME)_DIR)/%.c,$($(UCLIBC_LDSO_NAME)_OUT)/%.o,$($(UCLIBC_LDSO_NAME)_CSRC))
$(UCLIBC_LDSO_NAME)_SSRC := $(wildcard $($(UCLIBC_LDSO_NAME)_DIR)/$(TARGET_ARCH)/*.S)
@@ -55,8 +62,8 @@ $(ldso:.$(MAJOR_VERSION)=): $($(UCLIBC_LDSO_NAME)_OUT)/$(UCLIBC_LDSO_NAME)_so.a
$($(UCLIBC_LDSO_NAME)_OUT)/$(UCLIBC_LDSO_NAME)_so.a: $(ldso-y)
$(Q)$(RM) $@
- $(do_strip)
$(do_ar)
+ $(do_t_strip)
$(UCLIBC_LDSO_NAME)_clean:
$(RM) $($(UCLIBC_LDSO_NAME)_OUT)/*.{o,os,oS,a} $($(UCLIBC_LDSO_NAME)_OUT)/*/*.{o,os,oS}
diff --git a/ldso/libdl/Makefile.in b/ldso/libdl/Makefile.in
index 7a525375a..41cec858f 100644
--- a/ldso/libdl/Makefile.in
+++ b/ldso/libdl/Makefile.in
@@ -11,6 +11,10 @@ CFLAGS-libdl += -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) -I$(top_srcdir)ldso/incl
CFLAGS-libdl += -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\"
+ifeq ($(SUPPORT_LD_DEBUG),y)
+CFLAGS-libdl += -D__SUPPORT_LD_DEBUG__
+endif
+
CFLAGS-libdl.c := -DLDSO_ELFINTERP=\"$(TARGET_ARCH)/elfinterp.c\"
LDFLAGS-libdl.so := $(LDFLAGS) -Wl,-fini,dl_cleanup
@@ -37,18 +41,16 @@ lib-a-$(HAVE_SHARED) += $(top_builddir)lib/libdl.a
lib-so-y += $(top_builddir)lib/libdl.so
objclean-y += libdl_clean
-$(top_builddir)lib/libdl.so: $(libdl_OUT)/libdl_so.a $(libc)
+$(top_builddir)lib/libdl.so: $(libdl_OUT)/libdl_so.a $(libc.depend)
$(call link.so,$(libdl_FULL_NAME),$(MAJOR_VERSION))
$(libdl_OUT)/libdl_so.a: $(libdl-so-y)
$(Q)$(RM) $@
- $(do_strip)
$(do_ar)
$(top_builddir)lib/libdl.a: $(libdl-a-y)
$(Q)$(INSTALL) -d $(dir $@)
$(Q)$(RM) $@
- $(do_strip)
$(do_ar)
libdl_clean:
diff --git a/libc/Makefile.in b/libc/Makefile.in
index cd6e316ae..23587334d 100644
--- a/libc/Makefile.in
+++ b/libc/Makefile.in
@@ -53,17 +53,16 @@ endif
lib-a-y += $(top_builddir)lib/libc.a
lib-gdb-y += $(top_builddir)lib/libc.gdb
-lib-so-y += $(libc)
+lib-so-y += $(libc.depend)
objclean-y += libc_clean
OUTPUT_FORMAT = $(CC) $(CFLAGS) -Wl,--verbose 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/OUTPUT_FORMAT ( \1 )/p'
ifeq ($(DOMULTI),n)
-$(libc:.$(MAJOR_VERSION)=): $(libc_OUT)/libc_so.a $(LIBS-libc.so)
+$(libc.depend): $(libc_OUT)/libc_so.a $(LIBS-libc.so)
$(call link.so,$(libc_FULL_NAME),$(MAJOR_VERSION))
else
-$(libc:.$(MAJOR_VERSION)=): $(libc_OUT)/libc.oS $(libc-nomulti-y:.o=.oS) | $(LIBS-libc.so)
- $(do_strip)
+$(libc.depend): $(libc_OUT)/libc.oS $(libc-nomulti-y:.o=.oS) | $(LIBS-libc.so)
$(call linkm.so,$(libc_FULL_NAME),$(MAJOR_VERSION))
endif
$(Q)$(RM) $@
@@ -87,12 +86,10 @@ endif
$(libc_OUT)/libc.oS: $(libc-multi-y) | $(top_builddir)lib/libc.a $(top_builddir)lib/$(NONSHARED_LIBNAME)
$(Q)$(RM) $@
$(compile-m)
- #(do_t_strip)
$(top_builddir)lib/libc.a: $(libc-a-y) | $(crt-y)
$(Q)$(INSTALL) -d $(dir $@)
$(Q)$(RM) $@
- $(do_strip)
$(do_ar)
# We use libc_so.a so that we can compile the shared library with special
diff --git a/libc/inet/Makefile.in b/libc/inet/Makefile.in
index a61d38ee0..3866dfd66 100644
--- a/libc/inet/Makefile.in
+++ b/libc/inet/Makefile.in
@@ -7,31 +7,50 @@
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_index.c gai_strerror.c getaddrinfo.c \
- in6_addr.c ether_addr.c ntohl.c opensock.c ifaddrs.c
+INET_DIR := $(top_srcdir)libc/inet
+INET_OUT := $(top_builddir)libc/inet
+
+CSRC :=
+ifneq ($(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6),)
+CSRC += getservice.c getproto.c hostid.c getnetent.c getnetbynm.c getnetbyad.c \
+ inet_net.c herror.c if_index.c gai_strerror.c getaddrinfo.c \
+ ether_addr.c ntohl.c ifaddrs.c ntop.c
+endif
+ifeq ($(UCLIBC_HAS_IPV6),y)
+CSRC += in6_addr.c
+endif
# multi source addr.c
-CSRC += inet_aton.c inet_addr.c inet_ntoa.c inet_makeaddr.c inet_lnaof.c \
- inet_netof.c
+addr_CSRC := inet_aton.c inet_addr.c inet_ntoa.c inet_makeaddr.c \
+ inet_lnaof.c inet_netof.c
+ifneq ($(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6),)
+CSRC += $(addr_CSRC)
+endif
# multi source resolv.c
-CSRC += encodeh.c decodeh.c encoded.c decoded.c lengthd.c encodeq.c \
- decodeq.c lengthq.c encodea.c decodea.c encodep.c decodep.c \
- formquery.c dnslookup.c resolveaddress.c opennameservers.c \
+resolv_CSRC += encodeh.c decodeh.c encoded.c decoded.c lengthd.c encodeq.c \
+ decodeq.c lengthq.c encodea.c decodea.c \
+ dnslookup.c resolveaddress.c opennameservers.c \
closenameservers.c resolvename.c gethostbyname.c res_init.c \
res_query.c gethostbyaddr.c read_etc_hosts_r.c get_hosts_byname_r.c \
get_hosts_byaddr_r.c gethostbyname2.c getnameinfo.c gethostent.c \
gethostbyname_r.c gethostbyname2_r.c gethostbyaddr_r.c \
- res_comp.c ns_name.c _res_state.c
+ res_comp.c ns_name.c ethers.c _res_state.c
+ifneq ($(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6),)
+CSRC += $(resolv_CSRC)
-# multi source socketcalls.c
-CSRC += accept.c bind.c connect.c getpeername.c getsockname.c getsockopt.c \
- listen.c recv.c recvfrom.c recvmsg.c send.c sendmsg.c sendto.c \
- setsockopt.c shutdown.c socket.c socketpair.c
+# unused ATM
+CSRC += encodep.c decodep.c formquery.c
+endif
-INET_DIR := $(top_srcdir)libc/inet
-INET_OUT := $(top_builddir)libc/inet
+
+# multi source socketcalls.c
+socketcalls_CSRC += accept.c bind.c connect.c getpeername.c getsockname.c \
+ getsockopt.c listen.c recv.c recvfrom.c recvmsg.c send.c sendmsg.c \
+ sendto.c setsockopt.c shutdown.c socket.c socketpair.c
+ifeq ($(UCLIBC_HAS_SOCKET),y)
+CSRC += $(socketcalls_CSRC) opensock.c
+endif
INET_SRC := $(patsubst %.c,$(INET_DIR)/%.c,$(CSRC))
INET_OBJ := $(patsubst %.c,$(INET_OUT)/%.o,$(CSRC))
diff --git a/libc/misc/dirent/Makefile.in b/libc/misc/dirent/Makefile.in
index 89a00ed5e..b35efa0b1 100644
--- a/libc/misc/dirent/Makefile.in
+++ b/libc/misc/dirent/Makefile.in
@@ -5,8 +5,8 @@
# 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 readdir_r.c
+CSRC := alphasort.c closedir.c dirfd.c opendir.c readdir.c rewinddir.c \
+ scandir.c seekdir.c telldir.c readdir_r.c
ifeq ($(UCLIBC_HAS_LFS),y)
CSRC += readdir64.c alphasort64.c scandir64.c readdir64_r.c
diff --git a/libc/misc/error/Makefile.in b/libc/misc/error/Makefile.in
index c529e955e..9facacff0 100644
--- a/libc/misc/error/Makefile.in
+++ b/libc/misc/error/Makefile.in
@@ -5,7 +5,13 @@
# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#
-CSRC := error.c err.c
+CSRC :=
+ifeq ($(UCLIBC_HAS_BSD_ERR),y)
+CSRC += err.c
+endif
+ifeq ($(UCLIBC_HAS_GNU_ERROR),y)
+CSRC += error.c
+endif
MISC_ERROR_DIR := $(top_srcdir)libc/misc/error
MISC_ERROR_OUT := $(top_builddir)libc/misc/error
diff --git a/libc/misc/locale/Makefile.in b/libc/misc/locale/Makefile.in
index b51fe0376..1991d04e3 100644
--- a/libc/misc/locale/Makefile.in
+++ b/libc/misc/locale/Makefile.in
@@ -25,4 +25,4 @@ libc-y += $(MISC_LOCALE_OBJ)
objclean-y += misc_locale_objclean
misc_locale_objclean:
- $(RM) $(MISC_LOCALE_OUT)/{*.{o,os}}
+ $(RM) $(MISC_LOCALE_OUT)/*.{o,os}
diff --git a/libc/misc/pthread/Makefile.in b/libc/misc/pthread/Makefile.in
index bc43d5275..2030237f7 100644
--- a/libc/misc/pthread/Makefile.in
+++ b/libc/misc/pthread/Makefile.in
@@ -8,9 +8,9 @@
MISC_PTHREAD_DIR := $(top_srcdir)libc/misc/pthread
MISC_PTHREAD_OUT := $(top_builddir)libc/misc/pthread
-libc-$(UCLIBC_HAS_THREADS) += $(MISC_PTHREAD_OUT)/unlock.o
-libc-static-$(UCLIBC_HAS_THREADS) += $(MISC_PTHREAD_OUT)/weaks.o
libc-shared-$(UCLIBC_HAS_THREADS) += $(MISC_PTHREAD_OUT)/tsd.os
+libc-$(UCLIBC_HAS_THREADS) += $(MISC_PTHREAD_OUT)/unlock.o
+libc-$(UCLIBC_HAS_THREADS) += $(MISC_PTHREAD_OUT)/weaks.o
objclean-y += misc_pthread_objclean
diff --git a/libc/misc/syslog/Makefile.in b/libc/misc/syslog/Makefile.in
index fd9ae198f..8355ac0cd 100644
--- a/libc/misc/syslog/Makefile.in
+++ b/libc/misc/syslog/Makefile.in
@@ -13,7 +13,9 @@ 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))
+ifeq ($(UCLIBC_HAS_SYSLOG),y)
libc-y += $(MISC_SYSLOG_OBJ)
+endif
objclean-y += misc_syslog_objclean
diff --git a/libc/misc/sysvipc/Makefile.in b/libc/misc/sysvipc/Makefile.in
index 44707d643..6b88ad6f0 100644
--- a/libc/misc/sysvipc/Makefile.in
+++ b/libc/misc/sysvipc/Makefile.in
@@ -1,15 +1,14 @@
# Makefile for uClibc
#
-# Copyright (C) 2000 by Lineo, inc.
# Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
#
# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#
-CSRC := ftok.c
+CSRC := ftok.c __syscall_ipc.c
# multi source sem.c
-CSRC += semget.c semctl.c semop.c
+CSRC += semget.c semctl.c semop.c semtimedop.c
# multi source shm.c
CSRC += shmat.c shmctl.c shmdt.c shmget.c
diff --git a/libc/misc/time/Makefile.in b/libc/misc/time/Makefile.in
index b90b9b48f..4c4d510b1 100644
--- a/libc/misc/time/Makefile.in
+++ b/libc/misc/time/Makefile.in
@@ -5,8 +5,10 @@
# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#
-CSRC := adjtime.c ftime.c
-
+CSRC := adjtime.c
+ifeq ($(UCLIBC_SUSV3_LEGACY),y)
+CSRC += ftime.c
+endif
# multi source time.c
CSRC += asctime.c asctime_r.c clock.c ctime.c ctime_r.c gmtime.c gmtime_r.c \
localtime.c localtime_r.c mktime.c strftime.c strptime.c tzset.c \
diff --git a/libc/signal/Makefile.in b/libc/signal/Makefile.in
index 18b4a8675..c96c554a2 100644
--- a/libc/signal/Makefile.in
+++ b/libc/signal/Makefile.in
@@ -5,14 +5,19 @@
# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#
-CSRC := allocrtsig.c killpg.c raise.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
+CSRC := allocrtsig.c killpg.c raise.c sigaction.c sigaddset.c sigandset.c \
+ sigblock.c sigdelset.c sigempty.c sigfillset.c siggetmask.c \
+ sigintr.c sigisempty.c sigismem.c sigjmp.c signal.c \
+ sigorset.c sigpause.c sigsetmask.c sigsetops.c sigwait.c
+ifeq ($(UCLIBC_HAS_OBSOLETE_BSD_SIGNAL),y)
+CSRC += sighold.c sigignore.c sigrelse.c sigset.c
+endif
+ifeq ($(UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL),y)
+CSRC += sysv_signal.c
+endif
ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
-CSRC:=$(filter-out raise.c,$(CSRC))
+CSRC:=$(filter-out raise.c sigaction.c,$(CSRC))
endif
ifneq ($(strip $(ARCH_OBJS)),)
diff --git a/libc/stdio/Makefile.in b/libc/stdio/Makefile.in
index d6134cb06..74f6d9aed 100644
--- a/libc/stdio/Makefile.in
+++ b/libc/stdio/Makefile.in
@@ -59,6 +59,7 @@ CUSRC := \
ifneq ($(USE_OLD_VFPRINTF),y)
VF_CSRC := \
vfprintf.c \
+ _vfprintf_internal.c \
_ppfs_init.c _ppfs_prepargs.c _ppfs_setargs.c _ppfs_parsespec.c \
register_printf_function.c parse_printf_format.c
CSRC += $(VF_CSRC)
@@ -77,7 +78,7 @@ CSRC += _wfwrite.c fwprintf.c swprintf.c vswprintf.c vwprintf.c wprintf.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)
-CSRC += vfwprintf.c
+CSRC += vfwprintf.c _vfwprintf_internal.c
CSRC += wscanf.c swscanf.c fwscanf.c vwscanf.c vswscanf.c vfwscanf.c
endif
diff --git a/libc/stdlib/Makefile.in b/libc/stdlib/Makefile.in
index 2914d4ba6..4ae75622b 100644
--- a/libc/stdlib/Makefile.in
+++ b/libc/stdlib/Makefile.in
@@ -12,10 +12,16 @@ include $(top_srcdir)libc/stdlib/malloc-standard/Makefile.in
CSRC := \
abort.c getenv.c mkdtemp.c mktemp.c realpath.c mkstemp.c \
rand.c random.c random_r.c setenv.c div.c ldiv.c lldiv.c \
- getpt.c ptsname.c grantpt.c unlockpt.c drand48-iter.c jrand48.c \
+ getpt.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
+ valloc.c a64l.c l64a.c __uc_malloc.c
+ifeq ($(UCLIBC_HAS_ADVANCED_REALTIME),y)
+CSRC += posix_memalign.c
+endif
+ifeq ($(UCLIBC_HAS_PTY),y)
+CSRC += grantpt.c unlockpt.c ptsname.c
+endif
ifeq ($(UCLIBC_HAS_ARC4RANDOM),y)
CSRC += arc4random.c
endif
diff --git a/libc/sysdeps/linux/Makefile.commonarch b/libc/sysdeps/linux/Makefile.commonarch
index ea4ba53b3..ff3e90aa7 100644
--- a/libc/sysdeps/linux/Makefile.commonarch
+++ b/libc/sysdeps/linux/Makefile.commonarch
@@ -15,7 +15,7 @@ ARCH_SOBJ := $(patsubst %.s,$(ARCH_OUT)/%.o,$(patsubst %.S,$(ARCH_OUT)/%.o,$(SSR
ARCH_OBJS := $(ARCH_COBJ) $(ARCH_SOBJ)
-crt-y := create
+crt-y := FORCE
libc-y += $(ARCH_OBJS)
libc-nomulti-y += $(ARCH_SOBJ)
objclean-y += arch_objclean
@@ -28,13 +28,10 @@ ifneq ($(ARCH_HEADERS),)
ARCH_HEADERS_IN := $(patsubst %,../libc/sysdeps/linux/$(TARGET_ARCH)/%,$(ARCH_HEADERS))
ARCH_HEADERS_OUT := $(patsubst %,$(top_builddir)include/%,$(ARCH_HEADERS))
-headers-y += arch_headers
-arch_headers:
- $(SECHO) $(LN) -fs $(ARCH_HEADERS) $(top_builddir)include/
- @for h in $(ARCH_HEADERS_IN) ; do \
- $(LN) -fs $$h $(top_builddir)include/ ; \
- done
+$(ARCH_HEADERS_OUT):
+ $(do_ln) -fs ../libc/sysdeps/linux/$(TARGET_ARCH)/$(@F) $@
+headers-y += $(ARCH_HEADERS_OUT)
headers_clean-y += arch_headers_clean
arch_headers_clean:
$(RM) $(ARCH_HEADERS_OUT)
diff --git a/libc/sysdeps/linux/common/Makefile.in b/libc/sysdeps/linux/common/Makefile.in
index 600a9adb8..6b01c653a 100644
--- a/libc/sysdeps/linux/common/Makefile.in
+++ b/libc/sysdeps/linux/common/Makefile.in
@@ -24,16 +24,66 @@ ifneq ($(UCLIBC_HAS_SSP),y)
CSRC := $(filter-out ssp.c,$(CSRC))
endif
+ifneq ($(UCLIBC_LINUX_MODULE_24),y)
+CSRC := $(filter-out create_module.c delete_module.c init_module.c \
+ query_module.c get_kernel_syms.c,$(CSRC))
+endif
+
+ifneq ($(UCLIBC_LINUX_SPECIFIC),y)
+# we need these internally: fstatfs.c statfs.c
+CSRC := $(filter-out inotify.c ioperm.c iopl.c madvise.c \
+ modify_ldt.c personality.c prctl.c readahead.c reboot.c \
+ remap_file_pages.c sched_getaffinity.c sched_setaffinity.c \
+ sendfile64.c sendfile.c setfsgid.c setfsuid.c setresuid.c \
+ splice.c vmsplice.c tee.c swapoff.c swapon.c sysctl.c sysinfo.c \
+ uselib.c vhangup.c,$(CSRC))
+endif
+
ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
CSRC := $(filter-out fork.c getpid.c raise.c open.c close.c read.c write.c waitpid.c, $(CSRC))
+endif
+
+ifneq ($(UCLIBC_BSD_SPECIFIC),y)
+# we need these internally: getdomainname.c
+CSRC := $(filter-out mincore.c setdomainname.c,$(CSRC))
+endif
+ifneq ($(UCLIBC_NTP_LEGACY),y)
+CSRC := $(filter-out ntp_gettime.c,$(CSRC))
+endif
+
+
+ifneq ($(UCLIBC_HAS_REALTIME),y)
+# aio_cancel|aio_error|aio_fsync|aio_read|aio_return|aio_suspend|aio_write|clock_getres|clock_gettime|clock_settime|clock_settime|fdatasync|lio_listio|mlockall|munlockall|mlock|munlock|mq_close|mq_getattr|mq_notify|mq_open|mq_receive|mq_timedreceive|mq_send|mq_timedsend|mq_setattr|mq_unlink|nanosleep|sched_getparam|sched_get_priority_max|sched_get_priority_min|sched_getscheduler|sched_rr_get_interval|sched_setparam|sched_setscheduler|sem_close|sem_destroy|sem_getvalue|sem_init|sem_open|sem_post|sem_trywait|sem_wait|sem_unlink|sem_wait|shm_open|shm_unlink|sigqueue|sigtimedwait|sigwaitinfo|sigwaitinfo|timer_create|timer_delete|timer_getoverrun|timer_gettime|timer_settime
+CSRC := $(filter-out clock_getres.c clock_gettime.c clock_settime.c fdatasync.c Makefile.in mlockall.c mlock.c munlockall.c munlock.c nanosleep.c __rt_sigtimedwait.c sched_getparam.c sched_get_priority_max.c sched_get_priority_min.c sched_getscheduler.c sched_rr_get_interval.c sched_setparam.c sched_setscheduler.c sigqueue.c,$(CSRC))
+endif
+
+
+ifneq ($(UCLIBC_HAS_ADVANCED_REALTIME),y)
+# clock_getcpuclockid|clock_nanosleep|mq_timedreceive|mq_timedsend|posix_fadvise|posix_fallocate|posix_madvise|posix_memalign|posix_mem_offset|posix_spawnattr_destroy|posix_spawnattr_init|posix_spawnattr_getflags|posix_spawnattr_setflags|posix_spawnattr_getpgroup|posix_spawnattr_setpgroup|posix_spawnattr_getschedparam|posix_spawnattr_setschedparam|posix_spawnattr_getschedpolicy|posix_spawnattr_setschedpolicy|posix_spawnattr_getsigdefault|posix_spawnattr_setsigdefault|posix_spawnattr_getsigmask|posix_spawnattr_setsigmask|posix_spawnattr_init|posix_spawnattr_setflags|posix_spawnattr_setpgroup|posix_spawnattr_setschedparam|posix_spawnattr_setschedpolicy|posix_spawnattr_setsigdefault|posix_spawnattr_setsigmask|posix_spawn_file_actions_addclose|posix_spawn_file_actions_addopen|posix_spawn_file_actions_adddup2|posix_spawn_file_actions_addopen|posix_spawn_file_actions_destroy|posix_spawn_file_actions_init|posix_spawn_file_actions_init|posix_spawn|posix_spawnp|posix_spawnp|posix_typed_mem_get_info|pthread_mutex_timedlock|sem_timedwait
+CSRC := $(filter-out posix_fadvise64.c posix_fadvise.c,$(CSRC))
+endif
+
+ifneq ($(UCLIBC_HAS_EPOLL),y)
+CSRC := $(filter-out epoll.c,$(CSRC))
+endif
+
+ifneq ($(UCLIBC_HAS_XATTR),y)
+CSRC := $(filter-out xattr.c,$(CSRC))
+endif
+
+ifneq ($(UCLIBC_HAS_PROFILING),y)
+CSRC := $(filter-out noophooks.c pcprofile.c,$(CSRC))
+endif
+
+ifneq ($(UCLIBC_SV4_DEPRECATED),y)
+CSRC := $(filter-out ustat.c,$(CSRC))
endif
ifeq ($(TARGET_ARCH),sh)
CSRC := $(filter-out longjmp.c vfork.c,$(CSRC))
endif
-
# fails for some reason
ifneq ($(strip $(ARCH_OBJS)),)
CSRC := $(filter-out $(notdir $(ARCH_OBJS:.o=.c)),$(CSRC))
@@ -49,7 +99,10 @@ libc-y += $(COMMON_OBJ)
libc-static-$(UCLIBC_HAS_SSP) += $(COMMON_OUT)/ssp-local.o
libc-nonshared-$(UCLIBC_HAS_SSP) += $(COMMON_OUT)/ssp-local.os
-libc-nomulti-y += $(COMMON_OUT)/__syscall_rt_sigaction.o $(COMMON_OUT)/__syscall_sigaction.o
+libc-nomulti-y += $(COMMON_OUT)/__syscall_rt_sigaction.o \
+ $(COMMON_OUT)/__syscall_sigaction.o \
+ $(COMMON_OUT)/mremap.o \
+ $(COMMON_OUT)/stat.o
libc-nomulti-$(UCLIBC_HAS_SSP) += $(COMMON_OUT)/ssp.o
objclean-y += common_objclean
diff --git a/libcrypt/Makefile.in b/libcrypt/Makefile.in
index 7364d3e71..a74e4ec0c 100644
--- a/libcrypt/Makefile.in
+++ b/libcrypt/Makefile.in
@@ -16,7 +16,14 @@ libcrypt_FULL_NAME := libcrypt-$(VERSION).so
libcrypt_DIR := $(top_srcdir)libcrypt
libcrypt_OUT := $(top_builddir)libcrypt
-libcrypt_SRC := $(wildcard $(libcrypt_DIR)/*.c)
+ifeq ($(UCLIBC_HAS_CRYPT_IMPL),y)
+CSRC := crypt.c des.c md5.c
+endif
+ifeq ($(UCLIBC_HAS_CRYPT_STUB),y)
+CSRC := crypt_stub.c
+endif
+
+libcrypt_SRC := $(addprefix $(libcrypt_DIR)/,$(CSRC))
libcrypt_OBJ := $(patsubst $(libcrypt_DIR)/%.c,$(libcrypt_OUT)/%.o,$(libcrypt_SRC))
ifeq ($(DOPIC),y)
@@ -26,36 +33,35 @@ libcrypt-a-y := $(libcrypt_OBJ)
endif
libcrypt-so-y := $(libcrypt_OBJ:.o=.os)
+ifeq ($(UCLIBC_HAS_CRYPT),y)
lib-a-y += $(top_builddir)lib/libcrypt.a
lib-so-y += $(top_builddir)lib/libcrypt.so
+endif
objclean-y += libcrypt_clean
ifeq ($(DOMULTI),n)
ifeq ($(DOPIC),y)
-$(top_builddir)lib/libcrypt.so: $(top_builddir)lib/libcrypt.a $(libc)
+$(top_builddir)lib/libcrypt.so: $(top_builddir)lib/libcrypt.a $(libc.depend)
else
-$(top_builddir)lib/libcrypt.so: $(libcrypt_OUT)/libcrypt_so.a $(libc)
+$(top_builddir)lib/libcrypt.so: $(libcrypt_OUT)/libcrypt_so.a $(libc.depend)
endif
$(call link.so,$(libcrypt_FULL_NAME),$(MAJOR_VERSION))
else
-$(top_builddir)lib/libcrypt.so: $(libcrypt_OUT)/libcrypt.oS | $(libc)
+$(top_builddir)lib/libcrypt.so: $(libcrypt_OUT)/libcrypt.oS | $(libc.depend)
$(call linkm.so,$(libcrypt_FULL_NAME),$(MAJOR_VERSION))
endif
$(libcrypt_OUT)/libcrypt_so.a: $(libcrypt-so-y)
$(Q)$(RM) $@
- $(do_strip)
$(do_ar)
$(libcrypt_OUT)/libcrypt.oS: $(libcrypt_SRC)
$(Q)$(RM) $@
$(compile-m)
- $(do_t_strip)
$(top_builddir)lib/libcrypt.a: $(libcrypt-a-y)
$(Q)$(INSTALL) -d $(dir $@)
$(Q)$(RM) $@
- $(do_strip)
$(do_ar)
libcrypt_clean:
diff --git a/libintl/Makefile.in b/libintl/Makefile.in
index 8a64a7615..238ad4466 100644
--- a/libintl/Makefile.in
+++ b/libintl/Makefile.in
@@ -53,18 +53,15 @@ endif
$(libintl_OUT)/libintl_so.a: $(libintl-so-y)
$(Q)$(RM) $@
- $(do_strip)
$(do_ar)
$(libintl_OUT)/libintl.oS: $(libintl_MSRC)
$(Q)$(RM) $@
$(compile-m)
- $(do_t_strip)
$(top_builddir)lib/libintl.a: $(libintl-a-y)
$(Q)$(INSTALL) -d $(dir $@)
$(Q)$(RM) $@
- $(do_strip)
$(do_ar)
$(libintl_MOBJ): $(libintl_MSRC)
diff --git a/libnsl/Makefile.in b/libnsl/Makefile.in
index 15b07ee7b..a66b90c6f 100644
--- a/libnsl/Makefile.in
+++ b/libnsl/Makefile.in
@@ -31,21 +31,19 @@ lib-so-y += $(top_builddir)lib/libnsl.so
objclean-y += libnsl_clean
ifeq ($(DOPIC),y)
-$(top_builddir)lib/libnsl.so: $(top_builddir)lib/libnsl.a $(libc)
+$(top_builddir)lib/libnsl.so: $(top_builddir)lib/libnsl.a $(libc.depend)
else
-$(top_builddir)lib/libnsl.so: $(libnsl_OUT)/libnsl_so.a $(libc)
+$(top_builddir)lib/libnsl.so: $(libnsl_OUT)/libnsl_so.a $(libc.depend)
endif
$(call link.so,$(libnsl_FULL_NAME),$(MAJOR_VERSION))
$(libnsl_OUT)/libnsl_so.a: $(libnsl-so-y)
$(Q)$(RM) $@
- $(do_strip)
$(do_ar)
$(top_builddir)lib/libnsl.a: $(libnsl-a-y)
$(Q)$(INSTALL) -d $(dir $@)
$(Q)$(RM) $@
- $(do_strip)
$(do_ar)
libnsl_clean:
diff --git a/libpthread/nptl/Makefile.in b/libpthread/nptl/Makefile.in
index 4e1db3dcc..48ca3412d 100644
--- a/libpthread/nptl/Makefile.in
+++ b/libpthread/nptl/Makefile.in
@@ -209,7 +209,7 @@ else
LDFLAGS-libpthread.so := $(LDFLAGS)
endif
-LDFLAGS-libpthread.so += $(top_builddir)lib/ld-uClibc-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so $(top_builddir)lib/libdl-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so
+LDFLAGS-libpthread.so += $(top_builddir)lib/ld-uClibc-$(VERSION).so $(top_builddir)lib/libdl-$(VERSION).so
LIBS-libpthread.so := $(LIBS)
@@ -218,7 +218,7 @@ START_FILE-libpthread.so := $(top_builddir)/libpthread/nptl/sysdeps/pthread/crti
END_FILE-libpthread.so := $(SHARED_END_FILES) $(top_builddir)/libpthread/nptl/sysdeps/pthread/crtn.o
endif
-libpthread_FULL_NAME := libpthread-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so
+libpthread_FULL_NAME := libpthread-$(VERSION).so
PTHREAD_DIR := $(top_srcdir)libpthread/nptl
PTHREAD_OUT := $(top_builddir)libpthread/nptl
@@ -287,29 +287,39 @@ endif
CFLAGS-pthread-errnos.c = -S
$(PTHREAD_OUT)/pthread-errnos.c: $(PTHREAD_DIR)/pthread-errnos.sym
- awk -f $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
+ $(do_awk) $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
$(PTHREAD_OUT)/pthread-errnos.s: $(PTHREAD_OUT)/pthread-errnos.c
$(compile.c)
$(PTHREAD_OUT)/pthread-errnos.h: $(PTHREAD_OUT)/pthread-errnos.s
- @sed -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$\/#define \1 \2/p" $< > $(PTHREAD_OUT)/pthread-errnos.h
-
-nptl_headers_bootstrap:
+ @sed -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$\/#define \1 \2/p" $< > $@
+
+
+headers-$(UCLIBC_HAS_THREADS_NATIVE) += nptl_headers_bootstrap
+
+include/pthread.h:
+ $(do_ln) ../$(PTDIR)/sysdeps/pthread/$(@F) $(top_builddir)$@
+include/semaphore.h:
+ $(do_ln) ../$(PTDIR)/$(@F) $(top_builddir)$@
+include/bits/semaphore.h: | include/bits
+ $(do_ln) ../../$(PTDIR)/sysdeps/unix/sysv/linux/$(TARGET_ARCH)/bits/$(@F) $(top_builddir)$@
+include/bits/pthreadtypes.h: | include/bits
+ $(do_ln) ../../$(PTDIR)/sysdeps/unix/sysv/linux/$(TARGET_ARCH)/bits/$(@F) $(top_builddir)$@
+include/bits/libc-lock.h: | include/bits
+ $(do_ln) ../../$(PTDIR)/sysdeps/pthread/bits/$(@F) $(top_builddir)$@
+include/bits/stdio-lock.h: | include/bits
+ $(do_ln) ../../$(PTDIR)/sysdeps/pthread/bits/$(@F) $(top_builddir)$@
+$(PTDIR)/banner.h:
@sed 's/\(.*\)/"\1\\n"/' $(PTDIR)/Banner > $(PTDIR)/banner.h
+$(PTDIR)/version.h:
@echo "#define VERSION \""$(VERSION)"\"" > $(PTDIR)/version.h
- $(LN) -sf ../$(PTDIR)/sysdeps/pthread/pthread.h $(top_builddir)include/
- $(LN) -sf ../$(PTDIR)/semaphore.h $(top_builddir)include/
- $(INSTALL) -d $(top_builddir)include/bits
- $(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/
-
-nptl_headers:
-ifeq ($(shell $(CC) --help >& /dev/null && echo yes),yes)
- $(MAKE) $(PTHREAD_OUT)/pthread-errnos.h
-endif
+
+nptl_headers_bootstrap: include/pthread.h include/semaphore.h include/bits/semaphore.h include/bits/pthreadtypes.h \
+ include/bits/libc-lock.h include/bits/stdio-lock.h \
+ $(PTDIR)/banner.h $(PTDIR)/version.h
+
+nptl_headers: $(PTHREAD_OUT)/pthread-errnos.h
nptl_headers_clean:
$(RM) $(PTDIR)/banner.h $(top_builddir)include/pthread.h \
diff --git a/libpthread/nptl/sysdeps/generic/Makefile.in b/libpthread/nptl/sysdeps/generic/Makefile.in
index 79af336d2..87115570d 100644
--- a/libpthread/nptl/sysdeps/generic/Makefile.in
+++ b/libpthread/nptl/sysdeps/generic/Makefile.in
@@ -10,9 +10,8 @@
# their architecture specific directory which will override
# the one here.
#
-libc_a_CSRC = dl-support.c dl-tls.c libc-tls.c
+libc_a_CSRC = dl-tls.c libc-tls.c
-CFLAGS-dl-support.c = -D_GNU_SOURCE
CFLAGS-generic = $(SSP_ALL_CFLAGS)
#CFLAGS:=$(CFLAGS:-O1=-O2)
diff --git a/libpthread/nptl/sysdeps/pthread/Makefile.in b/libpthread/nptl/sysdeps/pthread/Makefile.in
index 068316b96..59076006d 100644
--- a/libpthread/nptl/sysdeps/pthread/Makefile.in
+++ b/libpthread/nptl/sysdeps/pthread/Makefile.in
@@ -18,7 +18,8 @@ libpthread_CSRC = pthread_barrier_wait.c pthread_cond_broadcast.c \
pthread_rwlock_wrlock.c pthread_sigmask.c \
pthread_spin_destroy.c pthread_spin_init.c \
pthread_spin_unlock.c pt-sigfillset.c \
- unwind-forcedunwind.c pt-longjmp.c
+ pt-longjmp.c
+
ifeq ($(TARGET_ARCH),i386)
libpthread_CSRC += pthread_once.c
@@ -68,7 +69,7 @@ CFLAGS-pt-sigfillset.c = $(CFLAGS-pt-common) -DIS_IN_libpthread=1 \
-I$(top_srcdir)libc/signal
CFLAGS-pt-sigprocmask.c = $(CFLAGS-pt-common) -DIS_IN_libpthread=1 \
-I$(top_srcdir)libc/sysdeps/linux/common
-CFLAGS-unwind-forcedunwind.c = $(CFLAGS-pt-common) -DIS_IN_libpthread=1
+CFLAGS-unwind-forcedunwind.c = $(CFLAGS-pt-common) -DIS_IN_libpthread=1 -fexceptions -fasynchronous-unwind-tables
CFLAGS-librt-cancellation.c = -DIS_IN_librt=1 $(CFLAGS-pt-common) \
-fexceptions -fasynchronous-unwind-tables
CFLAGS-rt-unwind-resume.c = -DIS_IN_librt=1 $(CFLAGS-pt-common) \
@@ -84,7 +85,8 @@ pthread_OBJ = $(patsubst %.c, $(pthread_OUT)/%.o, $(libpthread_CSRC))
libpthread-a-y += $(pthread_OBJ)
libpthread-so-y += $(pthread_OBJ:.o=.oS)
-libpthread-so-y += $(pthread_OUT)/pt-sigaction.oS $(pthread_OUT)/pt-sigprocmask.oS
+libpthread-so-y += $(pthread_OUT)/pt-sigaction.oS $(pthread_OUT)/pt-sigprocmask.oS \
+ $(pthread_OUT)/unwind-forcedunwind.oS
CFLAGS-sigaction.c = -I$(top_srcdir)libc/signal
libc-y += $(pthread_OUT)/sigaction.o
diff --git a/libpthread/nptl/sysdeps/sh/Makefile.arch b/libpthread/nptl/sysdeps/sh/Makefile.arch
index f0669dc3d..84385bd36 100644
--- a/libpthread/nptl/sysdeps/sh/Makefile.arch
+++ b/libpthread/nptl/sysdeps/sh/Makefile.arch
@@ -35,13 +35,15 @@ headers_clean-y += nptl_arch_headers_clean
CFLAGS-tcb-offsets.c = -S
$(PTHREAD_ARCH_OUT)/tcb-offsets.c: $(PTHREAD_ARCH_DIR)/tcb-offsets.sym
- awk -f $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
+ $(do_awk) $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
$(PTHREAD_ARCH_OUT)/tcb-offsets.s: $(PTHREAD_ARCH_OUT)/tcb-offsets.c
$(compile.c)
-nptl_arch_headers: $(PTHREAD_ARCH_OUT)/tcb-offsets.s
- @sed -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$\/#define \1 \2/p" $< > $(PTHREAD_ARCH_OUT)/tcb-offsets.h
+$(PTHREAD_ARCH_OUT)/tcb-offsets.h: $(PTHREAD_ARCH_OUT)/tcb-offsets.s
+ @sed -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$\/#define \1 \2/p" $< > $@
+
+nptl_arch_headers: $(PTHREAD_ARCH_OUT)/tcb-offsets.h
nptl_arch_headers_clean:
$(RM) $(PTHREAD_ARCH_OUT)/tcb-offsets.c \
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in
index 842452856..06ef1a77f 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in
@@ -138,16 +138,16 @@ CFLAGS-lowlevelrwlock.c = -S
CFLAGS-unwindbuf.c = -S
$(PTHREAD_LINUX_OUT)/lowlevelbarrier.c: $(PTHREAD_LINUX_DIR)/lowlevelbarrier.sym
- awk -f $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
+ $(do_awk) $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
$(PTHREAD_LINUX_OUT)/lowlevelcond.c: $(PTHREAD_LINUX_DIR)/lowlevelcond.sym
- awk -f $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
+ $(do_awk) $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
$(PTHREAD_LINUX_OUT)/lowlevelrwlock.c: $(PTHREAD_LINUX_DIR)/lowlevelrwlock.sym
- awk -f $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
+ $(do_awk) $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
$(PTHREAD_LINUX_OUT)/unwindbuf.c: $(PTHREAD_LINUX_DIR)/unwindbuf.sym
- awk -f $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
+ $(do_awk) $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
$(PTHREAD_LINUX_OUT)/lowlevelbarrier.s: $(PTHREAD_LINUX_OUT)/lowlevelbarrier.c
$(compile.c)
@@ -176,15 +176,17 @@ $(PTHREAD_LINUX_OUT)/unwindbuf.h: $(PTHREAD_LINUX_OUT)/unwindbuf.s
$(PTHREAD_LINUX_DIR)/pt-sleep.c:
$(LN) -s sleep.c $@
-nptl_linux_headers:
- $(MAKE) $(PTHREAD_LINUX_OUT)/lowlevelbarrier.h
- $(MAKE) $(PTHREAD_LINUX_OUT)/lowlevelcond.h
- $(MAKE) $(PTHREAD_LINUX_OUT)/lowlevelrwlock.h
- $(MAKE) $(PTHREAD_LINUX_OUT)/unwindbuf.h
-
-nptl_linux_headers_bootstrap:
- $(LN) -sf ../../$(PTHREAD_LINUX_DIR)/bits/local_lim.h $(top_builddir)include/bits
+nptl_linux_headers: $(PTHREAD_LINUX_OUT)/lowlevelbarrier.h \
+ $(PTHREAD_LINUX_OUT)/lowlevelcond.h \
+ $(PTHREAD_LINUX_OUT)/lowlevelrwlock.h \
+ $(PTHREAD_LINUX_OUT)/unwindbuf.h
+
+HEADERS_BITS_PTHREAD := $(notdir $(wildcard $(PTHREAD_LINUX_DIR)/bits/*.h))
+ALL_HEADERS_BITS_PTHREAD := $(addprefix include/bits/,$(HEADERS_BITS_PTHREAD))
+$(ALL_HEADERS_BITS_PTHREAD):
+ $(do_ln) ../../$(PTHREAD_LINUX_DIR)/bits/$(@F) $(top_builddir)$@
+
nptl_linux_headers_clean:
$(RM) $(PTHREAD_LINUX_OUT)/lowlevelbarrier.{c,h,s} \
$(RM) $(PTHREAD_LINUX_OUT)/lowlevelcond.{c,h,s} \
diff --git a/libpthread/nptl_db/Makefile.in b/libpthread/nptl_db/Makefile.in
index 18503339c..0b1ac3b87 100644
--- a/libpthread/nptl_db/Makefile.in
+++ b/libpthread/nptl_db/Makefile.in
@@ -14,7 +14,7 @@ LDFLAGS-libthread_db.so := $(LDFLAGS_NOSTRIP) -s --warn-unresolved-symbols
LIBS-libthread_db.so := $(LIBS)
-libthread_db_FULL_NAME := libthread_db-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so
+libthread_db_FULL_NAME := libthread_db-$(VERSION).so
libthread_db_DIR := $(top_srcdir)libpthread/nptl_db
libthread_db_OUT := $(top_builddir)libpthread/nptl_db
@@ -57,8 +57,10 @@ $(top_builddir)lib/libthread_db.a: $(libthread_db-a-y)
$(do_strip)
$(do_ar)
-nptl_db_headers:
- $(LN) -sf ../$(PTDIR)_db/thread_db.h $(top_builddir)include/
+include/thread_db.h:
+ $(do_ln) ../$(PTDIR)_db/$(@F) $(top_builddir)$@
+
+nptl_db_headers: include/thread_db.h
nptl_db_headers_clean:
$(RM) $(top_builddir)include/thread_db.h
diff --git a/libresolv/Makefile.in b/libresolv/Makefile.in
index 4afff4cdb..cfcb9d78b 100644
--- a/libresolv/Makefile.in
+++ b/libresolv/Makefile.in
@@ -31,21 +31,19 @@ lib-so-y += $(top_builddir)lib/libresolv.so
objclean-y += libresolv_clean
ifeq ($(DOPIC),y)
-$(top_builddir)lib/libresolv.so: $(top_builddir)lib/libresolv.a $(libc)
+$(top_builddir)lib/libresolv.so: $(top_builddir)lib/libresolv.a $(libc.depend)
else
-$(top_builddir)lib/libresolv.so: $(libresolv_OUT)/libresolv_so.a $(libc)
+$(top_builddir)lib/libresolv.so: $(libresolv_OUT)/libresolv_so.a $(libc.depend)
endif
$(call link.so,$(libresolv_FULL_NAME),$(MAJOR_VERSION))
$(libresolv_OUT)/libresolv_so.a: $(libresolv-so-y)
$(Q)$(RM) $@
- $(do_strip)
$(do_ar)
$(top_builddir)lib/libresolv.a: $(libresolv-a-y)
$(Q)$(INSTALL) -d $(dir $@)
$(Q)$(RM) $@
- $(do_strip)
$(do_ar)
libresolv_clean:
diff --git a/librt/Makefile.in b/librt/Makefile.in
index 1062cf470..5234b680f 100644
--- a/librt/Makefile.in
+++ b/librt/Makefile.in
@@ -46,25 +46,25 @@ librt-so-y += $(librt_OBJ:.o=.oS)
lib-a-y += $(top_builddir)lib/librt.a
lib-so-y += $(top_builddir)lib/librt.so
-objclean-y += librt_clean
+
ifeq ($(DOPIC)$(UCLIBC_HAS_THREADS_NATIVE),yn)
-$(top_builddir)lib/librt.so: $(top_builddir)lib/librt.a $(libc)
+$(top_builddir)lib/librt.so: $(top_builddir)lib/librt.a $(libc.dpend)
else
-$(top_builddir)lib/librt.so: $(librt_OUT)/librt_so.a $(libc)
+$(top_builddir)lib/librt.so: $(librt_OUT)/librt_so.a $(libc.depend)
endif
$(call link.so,$(librt_FULL_NAME),$(MAJOR_VERSION))
$(librt_OUT)/librt_so.a: $(librt-so-y)
$(Q)$(RM) $@
- $(do_strip)
$(do_ar)
$(top_builddir)lib/librt.a: $(librt-a-y)
$(Q)$(INSTALL) -d $(dir $@)
$(Q)$(RM) $@
- $(do_strip)
$(do_ar)
+objclean-y += librt_clean
+
librt_clean:
$(RM) $(librt_OUT)/*.{o,os,oS,a}
diff --git a/libutil/Makefile.in b/libutil/Makefile.in
index c9f94c1f6..ef3169906 100644
--- a/libutil/Makefile.in
+++ b/libutil/Makefile.in
@@ -20,6 +20,10 @@ libutil_SRC := $(wildcard $(libutil_DIR)/*.c)
ifneq ($(ARCH_USE_MMU),y)
libutil_SRC := $(filter-out $(libutil_DIR)/forkpty.c,$(libutil_SRC))
endif
+ifneq ($(UCLIBC_HAS_PTY),y)
+libutil_SRC := $(filter-out $(libutil_DIR)/openpty.c $(libutil_DIR)/forkpty.c \
+ ,$(libutil_SRC))
+endif
libutil_OBJ := $(patsubst $(libutil_DIR)/%.c,$(libutil_OUT)/%.o,$(libutil_SRC))
ifeq ($(DOPIC),y)
@@ -35,30 +39,27 @@ objclean-y += libutil_clean
ifeq ($(DOMULTI),n)
ifeq ($(DOPIC),y)
-$(top_builddir)lib/libutil.so: $(top_builddir)lib/libutil.a $(libc)
+$(top_builddir)lib/libutil.so: $(top_builddir)lib/libutil.a $(libc.depend)
else
-$(top_builddir)lib/libutil.so: $(libutil_OUT)/libutil_so.a $(libc)
+$(top_builddir)lib/libutil.so: $(libutil_OUT)/libutil_so.a $(libc.depend)
endif
$(call link.so,$(libutil_FULL_NAME),$(MAJOR_VERSION))
else
-$(top_builddir)lib/libutil.so: $(libutil_OUT)/libutil.oS | $(libc)
+$(top_builddir)lib/libutil.so: $(libutil_OUT)/libutil.oS | $(libc.depend)
$(call linkm.so,$(libutil_FULL_NAME),$(MAJOR_VERSION))
endif
$(libutil_OUT)/libutil_so.a: $(libutil-so-y)
$(Q)$(RM) $@
- $(do_strip)
$(do_ar)
$(libutil_OUT)/libutil.oS: $(libutil_SRC)
$(Q)$(RM) $@
$(compile-m)
- $(do_t_strip)
$(top_builddir)lib/libutil.a: $(libutil-a-y)
$(Q)$(INSTALL) -d $(dir $@)
$(Q)$(RM) $@
- $(do_strip)
$(do_ar)
libutil_clean:
diff --git a/test/Makefile b/test/Makefile
index 4505e8959..5f599aa83 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -33,9 +33,9 @@ endif
test check all: run
-run: compile subdirs_run
+run: subdirs_run
-compile:subdirs_compile
+compile: subdirs_compile
tags:
ctags -R
diff --git a/test/Rules.mak b/test/Rules.mak
index 714a9786a..984221cd3 100644
--- a/test/Rules.mak
+++ b/test/Rules.mak
@@ -57,7 +57,6 @@ export TARGET_ARCH
CROSS = $(subst ",, $(strip $(CROSS_COMPILER_PREFIX)))
CC = $(CROSS)gcc
-STRIPTOOL = $(CROSS)strip
RM = rm -f
# Select the compiler needed to build binaries for your development system
@@ -80,7 +79,11 @@ endif
XWARNINGS := $(subst ",, $(strip $(WARNINGS))) -Wstrict-prototypes
XARCH_CFLAGS := $(subst ",, $(strip $(ARCH_CFLAGS))) $(CPU_CFLAGS)
XCOMMON_CFLAGS := -D_GNU_SOURCE -I$(top_builddir)test
-CFLAGS += $(XWARNINGS) $(OPTIMIZATION) $(XCOMMON_CFLAGS) $(XARCH_CFLAGS) -I$(top_builddir)include $(PTINC)
+CFLAGS := $(XWARNINGS) $(OPTIMIZATION) $(XCOMMON_CFLAGS) $(XARCH_CFLAGS) -nostdinc -I$(top_builddir)$(LOCAL_INSTALL_PATH)/usr/include
+
+CC_IPREFIX:=$(shell $(CC) --print-file-name=include)
+CFLAGS += -I$(CC_IPREFIX)
+
HOST_CFLAGS += $(XWARNINGS) $(OPTIMIZATION) $(XCOMMON_CFLAGS)
LDFLAGS := $(CPU_LDFLAGS)
@@ -98,14 +101,15 @@ ifeq ($(strip $(UCLIBC_STATIC)),y)
STATIC_LDFLAGS := -static
HOST_LDFLAGS += -static
endif
+
LDFLAGS += -B$(top_builddir)lib -Wl,-rpath,$(top_builddir)lib -Wl,-rpath-link,$(top_builddir)lib
UCLIBC_LDSO_ABSPATH=$(shell pwd)
ifdef TEST_INSTALLED_UCLIBC
LDFLAGS += -Wl,-rpath,./
-UCLIBC_LDSO_ABSPATH=/lib
+UCLIBC_LDSO_ABSPATH=$(SHARED_LIB_LOADER_PREFIX)
endif
-ifeq ($(findstring -static,$(STATIC_LDFLAGS)),)
+ifeq ($(findstring -static,$(LDFLAGS)),)
LDFLAGS += -Wl,--dynamic-linker,$(UCLIBC_LDSO_ABSPATH)/$(UCLIBC_LDSO)
endif
diff --git a/test/Test.mak b/test/Test.mak
index 69291a61e..189e3368b 100644
--- a/test/Test.mak
+++ b/test/Test.mak
@@ -32,8 +32,8 @@ TARGETS += $(G_TARGETS)
endif
CLEAN_TARGETS := $(U_TARGETS) $(G_TARGETS)
COMPILE_TARGETS := $(TARGETS)
-TARGETS += $(SHELL_TESTS)
RUN_TARGETS := $(patsubst %,%.exe,$(TARGETS))
+TARGETS += $(SHELL_TESTS)
define binary_name
$(patsubst %.exe,%,$@)
@@ -71,15 +71,13 @@ define exec_test
endef
test check all: run
-run: $(RUN_TARGETS) compile
-$(RUN_TARGETS): $(TARGETS)
-ifeq ($(shell echo "$(SHELL_TESTS)"|grep "$(binary_name)"),)
+run: $(RUN_TARGETS)
+$(RUN_TARGETS):
$(exec_test)
$(diff_test)
ifeq ($(UCLIBC_ONLY),)
$(uclibc_glibc_diff_test)
endif
-endif
compile: $(COMPILE_TARGETS)
diff --git a/test/math/Makefile b/test/math/Makefile
index 9e200269f..e65f1700e 100644
--- a/test/math/Makefile
+++ b/test/math/Makefile
@@ -22,5 +22,5 @@ PERL := /usr/bin/perl
ulps-file := $(firstword $(wildcard $(config-sysdirs:%=$(..)%/libm-test-ulps)))
libm-test.c: $(ulps-file) libm-test.inc gen-libm-test.pl
$(Q)$(PERL) ./gen-libm-test.pl -u $< ./libm-test.inc -o "." 2>&1 > /dev/null
-EXTRA_CLEAN := libm-test.c
+EXTRA_CLEAN := libm-test.c libm-test-ulps.h
$(TARGETS): libm-test.c
diff --git a/test/nptl/Makefile b/test/nptl/Makefile
index b3ca887f2..605347f0d 100644
--- a/test/nptl/Makefile
+++ b/test/nptl/Makefile
@@ -42,12 +42,16 @@ TESTS += tst-clock tst-clock_nanosleep tst-cpuclock1 tst-cpuclock2 \
tst-mqueue7 tst-mqueue8 tst-mqueue9 tst-timer2 tst-timer3 \
tst-timer4 tst-timer5
+ifeq ($(UCLIBC_HAS_OBSOLETE_BSD_SIGNAL),)
+TESTS_DISABLED := tst-exec2 tst-exec3 tst-exec4
+endif
+
include ../Test.mak
TARGET_ARCH := $(strip $(subst ",, $(strip $(TARGET_ARCH))))
PTDIR := $(top_builddir)libpthread/nptl
-EXTRA_CFLAGS := -DNOT_IN_libc=1 -D_LIBC -D__USE_GNU -std=gnu99 -I. \
+EXTRA_CFLAGS := -DNOT_IN_libc=1 -D_LIBC -D__USE_GNU -std=gnu99 \
-I$(PTDIR) -I$(PTDIR)/sysdeps/unix/sysv/linux/$(TARGET_ARCH) \
-I$(PTDIR)/sysdeps/$(TARGET_ARCH) \
-I$(PTDIR)/sysdeps/unix/sysv/linux \
@@ -80,7 +84,7 @@ CFLAGS_tst-tls5modd.so := -fPIC -DPIC -DSHARED -shared -DNOT_IN_libc
CFLAGS_tst-tls5mode.so := -fPIC -DPIC -DSHARED -shared -DNOT_IN_libc
CFLAGS_tst-tls5modf.so := -fPIC -DPIC -DSHARED -shared -DNOT_IN_libc
-EXTRA_LDFLAGS := -L$(top_builddir)lib -lpthread
+EXTRA_LDFLAGS := -lpthread
LDFLAGS_tst-cleanup4 := tst-cleanup4aux.o
LDFLAGS_tst-clock2 := -lrt
@@ -134,6 +138,7 @@ tst-tls5: tst-tls5mod.so tst-tls5moda.so tst-tls5modb.so \
tst-tls5modc.so tst-tls5modd.so tst-tls5mode.so tst-tls5modf.so
OPTS_tst-cancel7 = --command ./tst-cancel7
+OPTS_tst-mqueue7 = -- ./tst-mqueue7
OPTS_tst-exec4 = ./tst-exec4
RET_tst-clock2 := 1
diff --git a/utils/Makefile.in b/utils/Makefile.in
index 57a00b307..21114f563 100644
--- a/utils/Makefile.in
+++ b/utils/Makefile.in
@@ -5,7 +5,13 @@
# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#
-CFLAGS-utils := -DNOT_IN_libc $(SSP_ALL_CFLAGS) -B$(top_builddir)lib -Wl,-rpath-link,$(top_builddir)lib
+ifdef UCLIBC_LDSO
+ifeq (,$(findstring /,$(UCLIBC_LDSO)))
+UCLIBC_LDSO := $(RUNTIME_PREFIX)lib/$(UCLIBC_LDSO)
+endif
+endif
+
+CFLAGS-utils := -DNOT_IN_libc $(SSP_ALL_CFLAGS) -B$(top_builddir)lib -Wl,-rpath-link,$(top_builddir)lib -Wl,--dynamic-linker,$(UCLIBC_LDSO)
CFLAGS-utils-common := -I$(top_srcdir)ldso/include -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" -DUCLIBC_LDSO=$(UCLIBC_LDSO)
CFLAGS-utils-shared := $(PIEFLAG) $(LDPIEFLAG)
@@ -25,6 +31,8 @@ CFLAGS-iconv := $(CFLAGS-utils) $(CFLAGS-utils-shared) -DL_iconv_main
CFLAGS-readelf := $(CFLAGS-utils-shared)
+CFLAGS-locale := $(CFLAGS-utils)
+
BUILD_CFLAGS-utils := -include $(top_srcdir)include/elf.h
BUILD_CFLAGS-utils-common := $(CFLAGS-utils-common)
@@ -51,15 +59,17 @@ utils_OBJ += ldconfig ldd
endif
utils_ICONV_OBJ =
+utils_LOCALE_OBJ =
ifeq ($(UCLIBC_HAS_LOCALE),y)
utils_ICONV_OBJ := $(utils_OUT)/iconv
+utils_LOCALE_OBJ := $(utils_OUT)/locale
endif
utils_OBJ := $(patsubst %,$(utils_OUT)/%,$(utils_OBJ))
hostutils_OBJ := $(patsubst %,%.host,$(utils_OBJ))
-utils: $(utils_OBJ) $(utils_ICONV_OBJ)
+utils: $(utils_OBJ) $(utils_ICONV_OBJ) $(utils_LOCALE_OBJ)
# NOTE: We build the utils AFTER we have a uClibc-targeted toolchain.
@@ -69,6 +79,9 @@ $(utils_OBJ): $(utils_OUT)/% : $(utils_DIR)/%.c | $(libc)
$(utils_OUT)/iconv: $(top_srcdir)libc/misc/wchar/wchar.c | $(libc)
$(compile.u)
+$(utils_OUT)/locale: $(top_srcdir)extra/locale/programs/locale.c | $(libc)
+ $(compile.u)
+
hostutils: $(hostutils_OBJ)
$(hostutils_OBJ): $(utils_OUT)/%.host : $(utils_DIR)/%.c
@@ -86,9 +99,10 @@ ifeq ($(HAVE_SHARED),y)
endif
ifeq ($(UCLIBC_HAS_LOCALE),y)
$(INSTALL) -m 755 $(utils_OUT)/iconv $(PREFIX)$(RUNTIME_PREFIX)usr/bin/iconv
+ $(INSTALL) -m 755 $(utils_OUT)/locale $(PREFIX)$(RUNTIME_PREFIX)usr/bin/locale
endif
objclean-y += utils_clean
utils_clean:
- $(RM) $(utils_OUT)/{ldconfig,ldd,readelf,iconv,*.host}
+ $(RM) $(utils_OUT)/{ldconfig,ldd,readelf,iconv,locale,*.host}