1
# Copyright (c) 2011, Linaro Limited
4
# Redistribution and use in source and binary forms, with or without
5
# modification, are permitted provided that the following conditions are met:
6
# * Redistributions of source code must retain the above copyright
7
# notice, this list of conditions and the following disclaimer.
8
# * Redistributions in binary form must reproduce the above copyright
9
# notice, this list of conditions and the following disclaimer in the
10
# documentation and/or other materials provided with the distribution.
11
# * Neither the name of the Linaro nor the
12
# names of its contributors may be used to endorse or promote products
13
# derived from this software without specific prior written permission.
15
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
19
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
1
# Top level Makefile for cortex-strings
29
3
# Used to record the compiler version in the executables
30
4
COMPILER = $(shell $(CC) --version 2>&1 | head -n1)
7
# Pull in the NEON specific files
11
neon_bionic_sources = \
12
reference/bionic/memcpy.S
13
neon_cppflags = -mfpu=neon
33
18
lib_LTLIBRARIES = \
34
19
libcortex-strings.la
38
23
tests/test-memchr \
40
24
tests/test-memcpy \
42
25
tests/test-memset \
43
26
tests/test-strchr \
44
27
tests/test-strcmp \
45
28
tests/test-strcpy \
49
# Options for the tests
50
tests_cflags = -I$(srcdir)/tests $(AM_CFLAGS)
51
tests_ldadd = libcortex-strings.la
52
tests_test_memchr_LDADD = $(tests_ldadd)
53
tests_test_memchr_CFLAGS = $(tests_cflags)
54
tests_test_memcmp_LDADD = $(tests_ldadd)
55
tests_test_memcmp_CFLAGS = $(tests_cflags)
56
tests_test_memcpy_LDADD = $(tests_ldadd)
57
tests_test_memcpy_CFLAGS = $(tests_cflags)
58
tests_test_memmove_LDADD = $(tests_ldadd)
59
tests_test_memmove_CFLAGS = $(tests_cflags)
60
tests_test_memset_LDADD = $(tests_ldadd)
61
tests_test_memset_CFLAGS = $(tests_cflags)
62
tests_test_strchr_LDADD = $(tests_ldadd)
63
tests_test_strchr_CFLAGS = $(tests_cflags)
64
tests_test_strcmp_LDADD = $(tests_ldadd)
65
tests_test_strcmp_CFLAGS = $(tests_cflags)
66
tests_test_strcpy_LDADD = $(tests_ldadd)
67
tests_test_strcpy_CFLAGS = $(tests_cflags)
68
tests_test_strlen_LDADD = $(tests_ldadd)
69
tests_test_strlen_CFLAGS = $(tests_cflags)
70
tests_test_strncmp_LDADD = $(tests_ldadd)
71
tests_test_strncmp_CFLAGS = $(tests_cflags)
73
TESTS = $(check_PROGRAMS)
31
# Benchmarks and example programs
76
32
noinst_PROGRAMS = \
88
benchmarks/dhry/dhry_1.c \
89
benchmarks/dhry/dhry_2.c \
90
benchmarks/dhry/dhry.h
92
dhry_CFLAGS = -Dcompiler="\"$(COMPILER)\"" -Doptions="\"$(CFLAGS)\""
93
dhry_LDADD = libcortex-strings.la
95
dhry_native_SOURCES = $(dhry_SOURCES)
96
dhry_native_CFLAGS = $(dhry_CFLAGS)
106
libmulti_a_SOURCES = \
107
benchmarks/multi/harness.c
109
libmulti_a_CFLAGS = -DVERSION=\"$(VERSION)\" $(AM_CFLAGS)
111
## Other architecture independant implementaions
112
libbionic_c_a_SOURCES = \
113
reference/bionic-c/bcopy.c \
114
reference/bionic-c/memchr.c \
115
reference/bionic-c/memcmp.c \
116
reference/bionic-c/memcpy.c \
117
reference/bionic-c/memset.c \
118
reference/bionic-c/strchr.c \
119
reference/bionic-c/strcmp.c \
120
reference/bionic-c/strcpy.c \
121
reference/bionic-c/strlen.c
123
libglibc_c_a_SOURCES = \
124
reference/glibc-c/memchr.c \
125
reference/glibc-c/memcmp.c \
126
reference/glibc-c/memcpy.c \
127
reference/glibc-c/memset.c \
128
reference/glibc-c/strchr.c \
129
reference/glibc-c/strcmp.c \
130
reference/glibc-c/strcpy.c \
131
reference/glibc-c/strlen.c \
132
reference/glibc-c/wordcopy.c \
133
reference/glibc-c/bp-checks.h \
134
reference/glibc-c/memcopy.h \
135
reference/glibc-c/pagecopy.h
137
libnewlib_c_a_SOURCES = \
138
reference/newlib-c/memchr.c \
139
reference/newlib-c/memcmp.c \
140
reference/newlib-c/memcpy.c \
141
reference/newlib-c/memset.c \
142
reference/newlib-c/strchr.c \
143
reference/newlib-c/strcmp.c \
144
reference/newlib-c/strcpy.c \
145
reference/newlib-c/strlen.c \
146
reference/newlib-c/shim.h
148
libplain_a_SOURCES = \
149
reference/plain/memset.c \
150
reference/plain/memcpy.c \
151
reference/plain/strcmp.c \
152
reference/plain/strcpy.c
155
try_none_LDADD = libmulti.a -lrt
157
try_this_LDADD = libmulti.a libcortex-strings.la -lrt
158
try_bionic_c_SOURCES =
159
try_bionic_c_LDADD = libmulti.a libbionic-c.a -lrt
160
try_glibc_c_SOURCES =
161
try_glibc_c_LDADD = libmulti.a libglibc-c.a -lrt
162
try_newlib_c_SOURCES =
163
try_newlib_c_LDADD = libmulti.a libnewlib-c.a -lrt
165
try_plain_LDADD = libmulti.a libplain.a -lrt
167
# Architecture specific
172
# Pull in the NEON specific files
174
src/linaro-a9/memcpy-hybrid.S
175
neon_bionic_sources = \
176
reference/bionic/memcpy.S
177
neon_cppflags = -mfpu=neon
180
alternate_sources = \
181
src/linaro-a9/memcpy.S
184
# Benchmarks and example programs
192
43
# Libraries used in the benchmarks and examples
193
noinst_LIBRARIES += \
201
53
libcortex_strings_la_SOURCES = \
203
$(alternate_sources) \
55
src/thumb-2/strcmp.c \
204
56
src/thumb-2/strcpy.c \
205
src/linaro-a9/memchr.S \
206
src/linaro-a9/strchr.S \
207
src/linaro-a9/strlen.S \
208
src/linaro-a9/memset.S
57
src/linaro-a9/memchr.s \
58
src/linaro-a9/strchr.s \
59
src/linaro-a9/strlen.s
61
# Options for the tests
62
tests_cflags = -I$(srcdir)/tests $(AM_CFLAGS)
63
tests_ldadd = libcortex-strings.la
64
tests_test_memcpy_LDADD = $(tests_ldadd)
65
tests_test_memcpy_CFLAGS = $(tests_cflags)
66
tests_test_memset_LDADD = $(tests_ldadd)
67
tests_test_memset_CFLAGS = $(tests_cflags)
68
tests_test_strcmp_LDADD = $(tests_ldadd)
69
tests_test_strcmp_CFLAGS = $(tests_cflags)
70
tests_test_strcpy_LDADD = $(tests_ldadd)
71
tests_test_strcpy_CFLAGS = $(tests_cflags)
72
tests_test_strlen_LDADD = $(tests_ldadd)
73
tests_test_strlen_CFLAGS = $(tests_cflags)
75
TESTS = $(check_PROGRAMS)
210
77
# Libraries containing the difference reference versions
211
78
libbionic_a_SOURCES = \
212
79
$(neon_bionic_sources) \
213
reference/bionic/memcmp.S \
80
reference/bionic/memcmp16.S \
81
reference/bionic/strlen.c \
214
82
reference/bionic/memset.S \
215
reference/bionic/strcmp.S \
216
reference/bionic/strcpy.S \
217
reference/bionic/strlen.c
83
reference/bionic/memcmp.S
219
85
libbionic_a_CFLAGS = -Wa,-mimplicit-it=thumb
224
90
reference/csl/arm_asm.h
226
92
libglibc_a_SOURCES = \
227
reference/glibc/memcpy.S \
93
reference/glibc/memmove.S \
228
94
reference/glibc/memset.S \
229
reference/glibc/strlen.S
95
reference/glibc/strlen.S \
96
reference/glibc/memcpy.S
231
98
libnewlib_a_SOURCES = \
232
reference/newlib/memcpy.S \
233
reference/newlib/strcmp.S \
99
reference/newlib/strcmp.c \
100
reference/newlib/strlen.c \
234
101
reference/newlib/strcpy.c \
235
reference/newlib/strlen.c \
236
reference/newlib/arm_asm.h \
237
reference/newlib/shim.h
239
libnewlib_xscale_a_SOURCES = \
240
reference/newlib-xscale/memchr.c \
241
reference/newlib-xscale/memcpy.c \
242
reference/newlib-xscale/memset.c \
243
reference/newlib-xscale/strchr.c \
244
reference/newlib-xscale/strcmp.c \
245
reference/newlib-xscale/strcpy.c \
246
reference/newlib-xscale/strlen.c \
247
reference/newlib-xscale/xscale.h
102
reference/newlib/arm_asm.h
104
libplain_a_SOURCES = \
105
reference/plain/memset.c \
106
reference/plain/memcpy.c \
107
reference/plain/strcmp.c \
108
reference/plain/strcpy.c
110
libmulti_a_SOURCES = \
111
benchmarks/multi/harness.c
113
libmulti_a_CFLAGS = -DVERSION=\"$(VERSION)\" $(AM_CFLAGS)
249
115
# Flags for the benchmark helpers
117
try_none_LDADD = libmulti.a -lrt
119
try_all_LDADD = libmulti.a libcortex-strings.la -lrt
250
120
try_bionic_SOURCES =
251
121
try_bionic_LDADD = libmulti.a libbionic.a -lrt
252
122
try_csl_SOURCES =
255
125
try_glibc_LDADD = libmulti.a libglibc.a -lrt
256
126
try_newlib_SOURCES =
257
127
try_newlib_LDADD = libmulti.a libnewlib.a -lrt
258
try_newlib_xscale_SOURCES =
259
try_newlib_xscale_LDADD = libmulti.a libnewlib-xscale.a -lrt
129
try_plain_LDADD = libmulti.a libplain.a -lrt
133
benchmarks/dhry/dhry_1.c \
134
benchmarks/dhry/dhry_2.c \
135
benchmarks/dhry/dhry.h
137
dhry_CFLAGS = -Dcompiler="\"$(COMPILER)\"" -Doptions="\"$(CFLAGS)\""
138
dhry_LDADD = libcortex-strings.la
140
dhry_native_SOURCES = $(dhry_SOURCES)
141
dhry_native_CFLAGS = $(dhry_CFLAGS)
261
143
AM_CPPFLAGS = $(neon_cppflags)
268
libcortex_strings_la_SOURCES = \
269
src/aarch64/memcpy.S \
270
src/aarch64/memmove.S \
271
src/aarch64/memset.S \
276
libcortex_strings_la_LDFLAGS = -version-info 1:0:0
280
-fno-builtin -fno-stack-protector -U_FORTIFY_SOURCE \
144
AM_CFLAGS = -std=gnu99 -Wall $(AM_CPPFLAGS)
289
147
tests/hp-timing.h \
290
148
tests/test-string.h \
291
149
tests/test-skeleton.c \
292
scripts/add-license.sh \
296
scripts/plot-align.py \
298
scripts/plot-sizes.py \
299
scripts/plot-top.py \
152
add_on_dist = add-on-dist
153
add_on_dest = $(add_on_dist)/$(PACKAGE)/sysdeps/arm/eabi/arm/$(submachine)
154
add_on_dirs = thumb-2 $(submachine) $(neon_dirs)
157
$(wildcard $(add_on_dirs:%=$(srcdir)/src/%/*.c)) \
158
$(wildcard $(add_on_dirs:%=$(srcdir)/src/%/*.S)) \
159
$(wildcard $(add_on_dirs:%=$(srcdir)/src/%/*.h))
162
rm -rf $(add_on_dist)
163
mkdir -p $(add_on_dest)
164
cp -f $(add_on_src) $(add_on_dest)
165
python $(srcdir)/scripts/fixup.py GLIBC $(add_on_dest)/*
166
tar cf $(PACKAGE).tar -C $(add_on_dist) .