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
96 HOST_LDFLAGS
+= -Wl
,-s
99 ifneq ($(HAVE_SHARED
),y
)
100 LDFLAGS
+= -Wl
,-static
-static-libgcc
103 ifndef TEST_INSTALLED_UCLIBC
104 LDFLAGS
+= -B
$(UCLIBC_PATH
) -Wl
,-rpath
,$(UCLIBC_PATH
):$(shell pwd
) -Wl
,-rpath-link
,$(UCLIBC_PATH
):$(shell pwd
)
106 LDFLAGS
+= -Wl
,-rpath
,$(shell pwd
)
109 ifeq ($(findstring -static
,$(LDFLAGS
)),)
110 LDFLAGS
+= -Wl
,--dynamic-linker
,$(UCLIBC_PATH
)/$(UCLIBC_LDSO
)
113 ifeq ($(LDSO_GNU_HASH_SUPPORT
),y
)
114 # Check for binutils support is done on root Rules.mak
115 LDFLAGS
+= $(CFLAG_-Wl--hash-style
=gnu
)
118 ifneq ($(strip $(UCLIBC_EXTRA_CFLAGS
)),"")
119 CFLAGS
+= $(call qstrip
,$(UCLIBC_EXTRA_CFLAGS
))
121 ifneq ($(strip $(UCLIBC_EXTRA_LDFLAGS
)),"")
122 LDFLAGS
+= $(call qstrip
,$(UCLIBC_EXTRA_LDFLAGS
))
125 ifneq ($(findstring -s
,$(MAKEFLAGS
)),)
130 ifneq ($(V
)$(VERBOSE
),)
141 MAKEFLAGS
+= --no-print-directory
144 banner
:= ---------------------------------
145 pur_showclean
= echo
" "CLEAN
$(notdir $(CURDIR
))
146 pur_showdiff
= echo
" "TEST_DIFF
$(notdir $(CURDIR
))/
147 pur_showlink
= echo
" "TEST_LINK
$(notdir $(CURDIR
))/ $@
148 pur_showtest
= echo
" "TEST_EXEC
$(notdir $(CURDIR
))/ $(@
:.exe
=)
154 ver_showdiff
= true echo
155 ver_showlink
= true echo
156 ver_showtest
= printf
"\n$(banner)\nTEST $(notdir $(CURDIR))/ $(@:.exe=)\n$(banner)\n"
157 do_showclean
= $($(DISP
)_showclean
)
158 do_showdiff
= $($(DISP
)_showdiff
)
159 do_showlink
= $($(DISP
)_showlink
)
160 do_showtest
= $($(DISP
)_showtest
)
161 showclean
= @
$(do_showclean
)
162 showdiff
= @
$(do_showdiff
)
163 showlink
= @
$(do_showlink
)
164 showtest
= @
$(do_showtest
)