1 # Rules.mak for uClibc test subdirs
3 # Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
5 # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
11 abs_top_builddir ?
= $(shell cd
$(top_builddir
); pwd
)/
13 TESTDIR
=$(top_builddir
)test/
15 include $(top_srcdir
)Rules.mak
16 ifeq ($(filter $(clean_targets
) CLEAN_
%,$(MAKECMDGOALS
)),)
17 ifeq ($(HAVE_DOT_CONFIG
),)
18 $(error no HAVE_DOT_CONFIG
, failed to read .config
)
23 ifeq (,$(findstring /,$(UCLIBC_LDSO
)))
24 UCLIBC_LDSO
:= $(UCLIBC_LDSO
)
26 UCLIBC_LDSO
:= $(notdir $(UCLIBC_LDSO
))
29 UCLIBC_LDSO
:= $(notdir $(firstword $(wildcard $(top_builddir
)lib
/ld*)))
31 ifndef TEST_INSTALLED_UCLIBC
32 ifeq ($(LDSO_SAFE_RUNPATH
),y
)
33 UCLIBC_PATH
:= $(abs_top_builddir
)lib
35 UCLIBC_PATH
:= $(top_builddir
)lib
38 UCLIBC_PATH
:= $(RUNTIME_PREFIX
)$(MULTILIB_DIR
)
40 #--------------------------------------------------------
41 # Ensure consistent sort order, 'gcc -print-search-dirs' behavior, etc.
45 ifeq ($(strip $(TARGET_ARCH
)),)
46 TARGET_ARCH
:=$(shell $(CC
) -dumpmachine | sed
-e s
'/-.*//' \
48 -e
's/sun.*/sparc/' -e
's/sparc.*/sparc/' \
49 -e
's/sa110/arm/' -e
's/arm.*/arm/g' \
51 -e
's/parisc.*/hppa/' \
52 -e
's/ppc/powerpc/g' \
53 -e
's/v850.*/v850/g' \
57 -e
's/xtensa.*/xtensa/' \
65 ifneq ($(KERNEL_HEADERS
),)
66 ifeq ($(patsubst /%,/,$(KERNEL_HEADERS
)),/)
67 # Absolute path in KERNEL_HEADERS
68 KERNEL_INCLUDES
+= -I
$(KERNEL_HEADERS
)
70 # Relative path in KERNEL_HEADERS
71 KERNEL_INCLUDES
+= -I
$(top_builddir
)$(KERNEL_HEADERS
)
75 XCOMMON_CFLAGS
:= -I
$(top_builddir
)test -D_GNU_SOURCE
76 XWARNINGS
+= $(CFLAG_-Wstrict-prototypes
)
77 CFLAGS
:= -nostdinc
-I
$(top_builddir
)$(LOCAL_INSTALL_PATH
)/usr
/include
78 CFLAGS
+= $(XCOMMON_CFLAGS
) $(KERNEL_INCLUDES
) $(CC_INC
)
79 CFLAGS
+= $(OPTIMIZATION
) $(CPU_CFLAGS
) $(XWARNINGS
)
81 $(eval
$(call check-gcc-var
,-Wno-missing-field-initializers
))
82 CFLAGS
+= $(CFLAG_-Wno-missing-field-initializers
)
84 # Can't add $(OPTIMIZATION) here, it may be target-specific.
85 # Just adding -Os for now.
86 HOST_CFLAGS
+= $(XCOMMON_CFLAGS
) -Os
$(XWARNINGS
) -std
=gnu99
88 LDFLAGS
:= $(CPU_LDFLAGS-y
) -Wl
,-z
,now
93 HOST_LDFLAGS
+= -Wl
,-g
98 HOST_LDFLAGS
+= -Wl
,-s
101 ifneq ($(HAVE_SHARED
),y
)
102 LDFLAGS
+= -Wl
,-static
-static-libgcc
105 ifndef TEST_INSTALLED_UCLIBC
106 LDFLAGS
+= -B
$(UCLIBC_PATH
) -Wl
,-rpath
,$(UCLIBC_PATH
):$(shell pwd
) -Wl
,-rpath-link
,$(UCLIBC_PATH
):$(shell pwd
)
108 LDFLAGS
+= -Wl
,-rpath
,$(shell pwd
)
111 ifeq ($(findstring -static
,$(LDFLAGS
)),)
112 LDFLAGS
+= -Wl
,--dynamic-linker
,$(UCLIBC_PATH
)/$(UCLIBC_LDSO
)
115 ifeq ($(LDSO_GNU_HASH_SUPPORT
),y
)
116 # Check for binutils support is done on root Rules.mak
117 LDFLAGS
+= $(CFLAG_-Wl--hash-style
=gnu
)
120 ifneq ($(strip $(UCLIBC_EXTRA_CFLAGS
)),"")
121 CFLAGS
+= $(call qstrip
,$(UCLIBC_EXTRA_CFLAGS
))
123 ifneq ($(strip $(UCLIBC_EXTRA_LDFLAGS
)),"")
124 LDFLAGS
+= $(call qstrip
,$(UCLIBC_EXTRA_LDFLAGS
))
127 ifneq ($(findstring -s
,$(MAKEFLAGS
)),)
132 ifneq ($(V
)$(VERBOSE
),)
143 MAKEFLAGS
+= --no-print-directory
146 banner
:= ---------------------------------
147 pur_showclean
= echo
" "CLEAN
$(notdir $(CURDIR
))
148 pur_showdiff
= echo
" "TEST_DIFF
$(notdir $(CURDIR
))/
149 pur_showlink
= echo
" "TEST_LINK
$(notdir $(CURDIR
))/ $@
150 pur_showtest
= echo
" "TEST_EXEC
$(notdir $(CURDIR
))/ $(@
:.exe
=)
156 ver_showdiff
= true echo
157 ver_showlink
= true echo
158 ver_showtest
= printf
"\n$(banner)\nTEST $(notdir $(CURDIR))/ $(@:.exe=)\n$(banner)\n"
159 do_showclean
= $($(DISP
)_showclean
)
160 do_showdiff
= $($(DISP
)_showdiff
)
161 do_showlink
= $($(DISP
)_showlink
)
162 do_showtest
= $($(DISP
)_showtest
)
163 showclean
= @
$(do_showclean
)
164 showdiff
= @
$(do_showdiff
)
165 showlink
= @
$(do_showlink
)
166 showtest
= @
$(do_showtest
)