~linaro-toolchain-dev/cortex-strings/trunk

« back to all changes in this revision

Viewing changes to Makefile.am

  • Committer: Michael Hope
  • Date: 2011-08-30 03:54:21 UTC
  • Revision ID: michael.hope@linaro.org-20110830035421-vb2ijg1k9oyuwgs3
Added tests for memchr and strchr from GLIBC.  Added a note on the routines and where they come from.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (c) 2011, Linaro Limited
2
 
# All rights reserved.
3
 
#
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.
14
 
#
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.
25
 
#
26
 
 
27
1
# Top level Makefile for cortex-strings
28
2
 
29
3
# Used to record the compiler version in the executables
30
4
COMPILER = $(shell $(CC) --version 2>&1 | head -n1)
31
5
 
 
6
if WITH_NEON
 
7
# Pull in the NEON specific files
 
8
neon_sources = \
 
9
        src/neon/memcpy.S \
 
10
        src/neon/memset.S
 
11
neon_bionic_sources = \
 
12
        reference/bionic/memcpy.S
 
13
neon_cppflags = -mfpu=neon
 
14
neon_dirs = neon
 
15
endif
 
16
 
32
17
# The main library
33
18
lib_LTLIBRARIES = \
34
19
        libcortex-strings.la
35
20
 
36
 
## Test suite
 
21
# Test suite
37
22
check_PROGRAMS = \
38
23
        tests/test-memchr \
39
 
        tests/test-memcmp \
40
24
        tests/test-memcpy \
41
 
        tests/test-memmove \
42
25
        tests/test-memset \
43
26
        tests/test-strchr \
44
27
        tests/test-strcmp \
45
28
        tests/test-strcpy \
46
 
        tests/test-strlen \
47
 
        tests/test-strncmp
48
 
 
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)
72
 
 
73
 
TESTS = $(check_PROGRAMS)
74
 
 
75
 
## Benchmarks
 
29
        tests/test-strlen
 
30
 
 
31
# Benchmarks and example programs
76
32
noinst_PROGRAMS = \
77
33
        dhry \
78
34
        dhry-native \
79
35
        try-none \
80
 
        try-this \
81
 
        try-plain \
82
 
        try-newlib-c \
83
 
        try-bionic-c \
84
 
        try-glibc-c
85
 
 
86
 
# Good 'ol Dhrystone
87
 
dhry_SOURCES = \
88
 
        benchmarks/dhry/dhry_1.c \
89
 
        benchmarks/dhry/dhry_2.c \
90
 
        benchmarks/dhry/dhry.h
91
 
 
92
 
dhry_CFLAGS = -Dcompiler="\"$(COMPILER)\"" -Doptions="\"$(CFLAGS)\""
93
 
dhry_LDADD = libcortex-strings.la
94
 
 
95
 
dhry_native_SOURCES = $(dhry_SOURCES)
96
 
dhry_native_CFLAGS = $(dhry_CFLAGS)
97
 
 
98
 
# Benchmark harness
99
 
noinst_LIBRARIES = \
100
 
        libmulti.a \
101
 
        libbionic-c.a \
102
 
        libglibc-c.a \
103
 
        libnewlib-c.a \
104
 
        libplain.a
105
 
 
106
 
libmulti_a_SOURCES = \
107
 
        benchmarks/multi/harness.c
108
 
 
109
 
libmulti_a_CFLAGS = -DVERSION=\"$(VERSION)\" $(AM_CFLAGS)
110
 
 
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
122
 
 
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
136
 
 
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
147
 
 
148
 
libplain_a_SOURCES = \
149
 
        reference/plain/memset.c \
150
 
        reference/plain/memcpy.c \
151
 
        reference/plain/strcmp.c \
152
 
        reference/plain/strcpy.c
153
 
 
154
 
try_none_SOURCES =
155
 
try_none_LDADD = libmulti.a -lrt
156
 
try_this_SOURCES =
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
164
 
try_plain_SOURCES =
165
 
try_plain_LDADD = libmulti.a libplain.a -lrt
166
 
 
167
 
# Architecture specific
168
 
 
169
 
if HOST_AARCH32
170
 
 
171
 
if WITH_NEON
172
 
# Pull in the NEON specific files
173
 
neon_sources = \
174
 
        src/linaro-a9/memcpy-hybrid.S
175
 
neon_bionic_sources = \
176
 
        reference/bionic/memcpy.S
177
 
neon_cppflags = -mfpu=neon
178
 
neon_dirs = neon
179
 
else
180
 
alternate_sources = \
181
 
        src/linaro-a9/memcpy.S
182
 
endif
183
 
 
184
 
# Benchmarks and example programs
185
 
noinst_PROGRAMS += \
 
36
        try-all \
186
37
        try-bionic \
187
38
        try-csl \
188
39
        try-glibc \
189
40
        try-newlib \
190
 
        try-newlib-xscale
 
41
        try-plain
191
42
 
192
43
# Libraries used in the benchmarks and examples
193
 
noinst_LIBRARIES += \
 
44
noinst_LIBRARIES = \
194
45
        libbionic.a \
195
46
        libcsl.a \
196
47
        libglibc.a \
197
48
        libnewlib.a \
198
 
        libnewlib-xscale.a
 
49
        libplain.a \
 
50
        libmulti.a
199
51
 
200
52
# Main library
201
53
libcortex_strings_la_SOURCES = \
202
54
        $(neon_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
 
60
 
 
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)
 
74
 
 
75
TESTS = $(check_PROGRAMS)
209
76
 
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
218
84
 
219
85
libbionic_a_CFLAGS = -Wa,-mimplicit-it=thumb
220
86
 
224
90
        reference/csl/arm_asm.h
225
91
 
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
230
97
 
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
238
 
 
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
 
103
 
 
104
libplain_a_SOURCES = \
 
105
        reference/plain/memset.c \
 
106
        reference/plain/memcpy.c \
 
107
        reference/plain/strcmp.c \
 
108
        reference/plain/strcpy.c
 
109
 
 
110
libmulti_a_SOURCES = \
 
111
        benchmarks/multi/harness.c
 
112
 
 
113
libmulti_a_CFLAGS = -DVERSION=\"$(VERSION)\" $(AM_CFLAGS)
248
114
 
249
115
# Flags for the benchmark helpers
 
116
try_none_SOURCES =
 
117
try_none_LDADD = libmulti.a -lrt
 
118
try_all_SOURCES =
 
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
 
128
try_plain_SOURCES =
 
129
try_plain_LDADD = libmulti.a libplain.a -lrt
 
130
 
 
131
# Good 'ol Dhrystone
 
132
dhry_SOURCES = \
 
133
        benchmarks/dhry/dhry_1.c \
 
134
        benchmarks/dhry/dhry_2.c \
 
135
        benchmarks/dhry/dhry.h
 
136
 
 
137
dhry_CFLAGS = -Dcompiler="\"$(COMPILER)\"" -Doptions="\"$(CFLAGS)\""
 
138
dhry_LDADD = libcortex-strings.la
 
139
 
 
140
dhry_native_SOURCES = $(dhry_SOURCES)
 
141
dhry_native_CFLAGS = $(dhry_CFLAGS)
260
142
 
261
143
AM_CPPFLAGS = $(neon_cppflags)
262
 
 
263
 
endif
264
 
 
265
 
# aarch64 specific
266
 
if HOST_AARCH64
267
 
 
268
 
libcortex_strings_la_SOURCES = \
269
 
        src/aarch64/memcpy.S \
270
 
        src/aarch64/memmove.S \
271
 
        src/aarch64/memset.S \
272
 
        src/aarch64/strcmp.S
273
 
 
274
 
endif
275
 
 
276
 
libcortex_strings_la_LDFLAGS = -version-info 1:0:0
277
 
 
278
 
AM_CFLAGS = \
279
 
        -std=gnu99 -Wall \
280
 
        -fno-builtin -fno-stack-protector -U_FORTIFY_SOURCE \
281
 
        $(AM_CPPFLAGS)
282
 
 
283
 
if WITH_SUBMACHINE
284
 
AM_CFLAGS += \
285
 
        -mtune=$(submachine)
286
 
endif
 
144
AM_CFLAGS = -std=gnu99 -Wall $(AM_CPPFLAGS)
287
145
 
288
146
EXTRA_DIST = \
289
147
        tests/hp-timing.h \
290
148
        tests/test-string.h \
291
149
        tests/test-skeleton.c \
292
 
        scripts/add-license.sh \
293
 
        scripts/bench.py \
294
 
        scripts/fixup.py \
295
 
        scripts/libplot.py \
296
 
        scripts/plot-align.py \
297
 
        scripts/plot.py \
298
 
        scripts/plot-sizes.py \
299
 
        scripts/plot-top.py \
300
 
        scripts/trim.sh \
301
150
        autogen.sh
 
151
 
 
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)
 
155
 
 
156
add_on_src = \
 
157
        $(wildcard $(add_on_dirs:%=$(srcdir)/src/%/*.c)) \
 
158
        $(wildcard $(add_on_dirs:%=$(srcdir)/src/%/*.S)) \
 
159
        $(wildcard $(add_on_dirs:%=$(srcdir)/src/%/*.h))
 
160
 
 
161
add-on:
 
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) .