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 # Can't add $(OPTIMIZATION) here, it may be target-specific.
82 # Just adding -Os for now.
83 HOST_CFLAGS
+= $(XCOMMON_CFLAGS
) -Os
$(XWARNINGS
) -std
=gnu99
85 LDFLAGS
:= $(CPU_LDFLAGS-y
) -Wl
,-z
,now
90 HOST_LDFLAGS
+= -Wl
,-g
93 HOST_LDFLAGS
+= -Wl
,-s
96 ifneq ($(HAVE_SHARED
),y
)
97 LDFLAGS
+= -Wl
,-static
-static-libgcc
100 ifndef TEST_INSTALLED_UCLIBC
101 LDFLAGS
+= -B
$(UCLIBC_PATH
) -Wl
,-rpath
,$(UCLIBC_PATH
):$(shell pwd
) -Wl
,-rpath-link
,$(UCLIBC_PATH
):$(shell pwd
)
103 LDFLAGS
+= -Wl
,-rpath
,$(shell pwd
)
106 ifeq ($(findstring -static
,$(LDFLAGS
)),)
107 LDFLAGS
+= -Wl
,--dynamic-linker
,$(UCLIBC_PATH
)/$(UCLIBC_LDSO
)
110 ifeq ($(LDSO_GNU_HASH_SUPPORT
),y
)
111 # Check for binutils support is done on root Rules.mak
112 LDFLAGS
+= $(CFLAG_-Wl--hash-style
=gnu
)
116 ifneq ($(findstring -s
,$(MAKEFLAGS
)),)
121 ifneq ($(V
)$(VERBOSE
),)
132 MAKEFLAGS
+= --no-print-directory
135 banner
:= ---------------------------------
136 pur_showclean
= echo
" "CLEAN
$(notdir $(CURDIR
))
137 pur_showdiff
= echo
" "TEST_DIFF
$(notdir $(CURDIR
))/
138 pur_showlink
= echo
" "TEST_LINK
$(notdir $(CURDIR
))/ $@
139 pur_showtest
= echo
" "TEST_EXEC
$(notdir $(CURDIR
))/ $(@
:.exe
=)
145 ver_showdiff
= true echo
146 ver_showlink
= true echo
147 ver_showtest
= printf
"\n$(banner)\nTEST $(notdir $(CURDIR))/ $(@:.exe=)\n$(banner)\n"
148 do_showclean
= $($(DISP
)_showclean
)
149 do_showdiff
= $($(DISP
)_showdiff
)
150 do_showlink
= $($(DISP
)_showlink
)
151 do_showtest
= $($(DISP
)_showtest
)
152 showclean
= @
$(do_showclean
)
153 showdiff
= @
$(do_showdiff
)
154 showlink
= @
$(do_showlink
)
155 showtest
= @
$(do_showtest
)