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

« back to all changes in this revision

Viewing changes to Makefile.am

  • Committer: Will Newton
  • Date: 2013-06-25 14:07:04 UTC
  • Revision ID: will.newton@linaro.org-20130625140704-jp1ad8y2p8d416qk
Support multiple runs of each benchmark.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (c) 2011, Linaro Inc.
 
1
# Copyright (c) 2011, Linaro Limited
2
2
# All rights reserved.
3
 
 
3
#
4
4
# Redistribution and use in source and binary forms, with or without
5
5
# modification, are permitted provided that the following conditions are met:
6
6
#     * Redistributions of source code must retain the above copyright
11
11
#     * Neither the name of the Linaro nor the
12
12
#       names of its contributors may be used to endorse or promote products
13
13
#       derived from this software without specific prior written permission.
14
 
 
14
#
15
15
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16
16
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17
17
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
 
# DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
 
18
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
19
19
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
20
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
21
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22
22
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
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. 
 
24
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
25
#
26
26
 
27
27
# Top level Makefile for cortex-strings
29
29
# Used to record the compiler version in the executables
30
30
COMPILER = $(shell $(CC) --version 2>&1 | head -n1)
31
31
 
32
 
if WITH_NEON
33
 
# Pull in the NEON specific files
34
 
neon_sources = \
35
 
        src/linaro-a9/memcpy-hybrid.S
36
 
neon_bionic_sources = \
37
 
        reference/bionic/memcpy.S
38
 
neon_cppflags = -mfpu=neon
39
 
neon_dirs = neon
40
 
else
41
 
alternate_sources = \
42
 
        src/linaro-a9/memcpy.S
43
 
endif
44
 
 
45
32
# The main library
46
33
lib_LTLIBRARIES = \
47
34
        libcortex-strings.la
48
35
 
49
 
# Test suite
 
36
## Test suite
50
37
check_PROGRAMS = \
51
38
        tests/test-memchr \
 
39
        tests/test-memcmp \
52
40
        tests/test-memcpy \
 
41
        tests/test-memmove \
53
42
        tests/test-memset \
54
43
        tests/test-strchr \
55
44
        tests/test-strcmp \
56
45
        tests/test-strcpy \
57
 
        tests/test-strlen
58
 
 
59
 
# Benchmarks and example programs
 
46
        tests/test-strlen \
 
47
        tests/test-strncmp \
 
48
        tests/test-strnlen
 
49
 
 
50
# Options for the tests
 
51
tests_cflags = -I$(srcdir)/tests $(AM_CFLAGS)
 
52
tests_ldadd = libcortex-strings.la
 
53
tests_test_memchr_LDADD = $(tests_ldadd)
 
54
tests_test_memchr_CFLAGS = $(tests_cflags)
 
55
tests_test_memcmp_LDADD = $(tests_ldadd)
 
56
tests_test_memcmp_CFLAGS = $(tests_cflags)
 
57
tests_test_memcpy_LDADD = $(tests_ldadd)
 
58
tests_test_memcpy_CFLAGS = $(tests_cflags)
 
59
tests_test_memmove_LDADD = $(tests_ldadd)
 
60
tests_test_memmove_CFLAGS = $(tests_cflags)
 
61
tests_test_memset_LDADD = $(tests_ldadd)
 
62
tests_test_memset_CFLAGS = $(tests_cflags)
 
63
tests_test_strchr_LDADD = $(tests_ldadd)
 
64
tests_test_strchr_CFLAGS = $(tests_cflags)
 
65
tests_test_strcmp_LDADD = $(tests_ldadd)
 
66
tests_test_strcmp_CFLAGS = $(tests_cflags)
 
67
tests_test_strcpy_LDADD = $(tests_ldadd)
 
68
tests_test_strcpy_CFLAGS = $(tests_cflags)
 
69
tests_test_strlen_LDADD = $(tests_ldadd)
 
70
tests_test_strlen_CFLAGS = $(tests_cflags)
 
71
tests_test_strncmp_LDADD = $(tests_ldadd)
 
72
tests_test_strncmp_CFLAGS = $(tests_cflags)
 
73
 
 
74
TESTS = $(check_PROGRAMS)
 
75
 
 
76
## Benchmarks
60
77
noinst_PROGRAMS = \
61
78
        dhry \
62
79
        dhry-native \
63
80
        try-none \
64
81
        try-this \
65
 
        try-bionic \
 
82
        try-plain \
 
83
        try-newlib-c \
 
84
        try-bionic-c \
 
85
        try-glibc-c
 
86
 
 
87
# Good 'ol Dhrystone
 
88
dhry_SOURCES = \
 
89
        benchmarks/dhry/dhry_1.c \
 
90
        benchmarks/dhry/dhry_2.c \
 
91
        benchmarks/dhry/dhry.h
 
92
 
 
93
dhry_CFLAGS = -Dcompiler="\"$(COMPILER)\"" -Doptions="\"$(CFLAGS)\""
 
94
dhry_LDADD = libcortex-strings.la
 
95
 
 
96
dhry_native_SOURCES = $(dhry_SOURCES)
 
97
dhry_native_CFLAGS = $(dhry_CFLAGS)
 
98
 
 
99
# Benchmark harness
 
100
noinst_LIBRARIES = \
 
101
        libmulti.a \
 
102
        libbionic-c.a \
 
103
        libglibc-c.a \
 
104
        libnewlib-c.a \
 
105
        libplain.a
 
106
 
 
107
libmulti_a_SOURCES = \
 
108
        benchmarks/multi/harness.c
 
109
 
 
110
libmulti_a_CFLAGS = -DVERSION=\"$(VERSION)\" $(AM_CFLAGS)
 
111
 
 
112
## Other architecture independant implementaions
 
113
libbionic_c_a_SOURCES = \
 
114
        reference/bionic-c/bcopy.c \
 
115
        reference/bionic-c/memchr.c \
 
116
        reference/bionic-c/memcmp.c \
 
117
        reference/bionic-c/memcpy.c \
 
118
        reference/bionic-c/memset.c \
 
119
        reference/bionic-c/strchr.c \
 
120
        reference/bionic-c/strcmp.c \
 
121
        reference/bionic-c/strcpy.c \
 
122
        reference/bionic-c/strlen.c
 
123
 
 
124
libglibc_c_a_SOURCES = \
 
125
        reference/glibc-c/memchr.c \
 
126
        reference/glibc-c/memcmp.c \
 
127
        reference/glibc-c/memcpy.c \
 
128
        reference/glibc-c/memset.c \
 
129
        reference/glibc-c/strchr.c \
 
130
        reference/glibc-c/strcmp.c \
 
131
        reference/glibc-c/strcpy.c \
 
132
        reference/glibc-c/strlen.c \
 
133
        reference/glibc-c/wordcopy.c \
 
134
        reference/glibc-c/bp-checks.h \
 
135
        reference/glibc-c/memcopy.h \
 
136
        reference/glibc-c/pagecopy.h
 
137
 
 
138
libnewlib_c_a_SOURCES = \
 
139
        reference/newlib-c/memchr.c \
 
140
        reference/newlib-c/memcmp.c \
 
141
        reference/newlib-c/memcpy.c \
 
142
        reference/newlib-c/memset.c \
 
143
        reference/newlib-c/strchr.c \
 
144
        reference/newlib-c/strcmp.c \
 
145
        reference/newlib-c/strcpy.c \
 
146
        reference/newlib-c/strlen.c \
 
147
        reference/newlib-c/shim.h
 
148
 
 
149
libplain_a_SOURCES = \
 
150
        reference/plain/memset.c \
 
151
        reference/plain/memcpy.c \
 
152
        reference/plain/strcmp.c \
 
153
        reference/plain/strcpy.c
 
154
 
 
155
try_none_SOURCES =
 
156
try_none_LDADD = libmulti.a -lrt
 
157
try_this_SOURCES =
 
158
try_this_LDADD = libmulti.a libcortex-strings.la -lrt
 
159
try_bionic_c_SOURCES =
 
160
try_bionic_c_LDADD = libmulti.a libbionic-c.a -lrt
 
161
try_glibc_c_SOURCES =
 
162
try_glibc_c_LDADD = libmulti.a libglibc-c.a -lrt
 
163
try_newlib_c_SOURCES =
 
164
try_newlib_c_LDADD = libmulti.a libnewlib-c.a -lrt
 
165
try_plain_SOURCES =
 
166
try_plain_LDADD = libmulti.a libplain.a -lrt
 
167
 
 
168
# Architecture specific
 
169
 
 
170
if HOST_AARCH32
 
171
 
 
172
if WITH_NEON
 
173
# Pull in the NEON specific files
 
174
neon_bionic_a9_sources = \
 
175
        reference/bionic-a9/memcpy.S \
 
176
        reference/bionic-a9/memset.S
 
177
neon_bionic_a15_sources = \
 
178
        reference/bionic-a15/memcpy.S \
 
179
        reference/bionic-a15/memset.S
 
180
fpu_flags = -mfpu=neon
 
181
else
 
182
if WITH_VFP
 
183
fpu_flags = -mfpu=vfp
 
184
else
 
185
fpu_flags = -msoft-float
 
186
endif
 
187
endif
 
188
 
 
189
# Benchmarks and example programs
 
190
noinst_PROGRAMS += \
 
191
        try-bionic-a9 \
 
192
        try-bionic-a15 \
66
193
        try-csl \
67
194
        try-glibc \
68
195
        try-newlib \
69
 
        try-newlib-xscale \
70
 
        try-plain
 
196
        try-newlib-xscale
71
197
 
72
198
# Libraries used in the benchmarks and examples
73
 
noinst_LIBRARIES = \
74
 
        libbionic.a \
 
199
noinst_LIBRARIES += \
 
200
        libbionic-a9.a \
 
201
        libbionic-a15.a \
75
202
        libcsl.a \
76
203
        libglibc.a \
77
204
        libnewlib.a \
78
 
        libnewlib-xscale.a \
79
 
        libplain.a \
80
 
        libmulti.a
 
205
        libnewlib-xscale.a
81
206
 
82
207
# Main library
83
208
libcortex_strings_la_SOURCES = \
84
 
        $(neon_sources) \
85
 
        $(alternate_sources) \
86
 
        src/thumb-2/strcmp.c \
87
209
        src/thumb-2/strcpy.c \
88
 
        src/linaro-a9/memchr.s \
89
 
        src/linaro-a9/strchr.s \
90
 
        src/linaro-a9/strlen.s \
91
 
        src/linaro-a9/memset.S
92
 
 
93
 
# Options for the tests
94
 
tests_cflags = -I$(srcdir)/tests $(AM_CFLAGS)
95
 
tests_ldadd = libcortex-strings.la
96
 
tests_test_memcpy_LDADD = $(tests_ldadd)
97
 
tests_test_memcpy_CFLAGS = $(tests_cflags)
98
 
tests_test_memset_LDADD = $(tests_ldadd)
99
 
tests_test_memset_CFLAGS = $(tests_cflags)
100
 
tests_test_strcmp_LDADD = $(tests_ldadd)
101
 
tests_test_strcmp_CFLAGS = $(tests_cflags)
102
 
tests_test_strcpy_LDADD = $(tests_ldadd)
103
 
tests_test_strcpy_CFLAGS = $(tests_cflags)
104
 
tests_test_strlen_LDADD = $(tests_ldadd)
105
 
tests_test_strlen_CFLAGS = $(tests_cflags)
106
 
 
107
 
TESTS = $(check_PROGRAMS)
 
210
        src/linaro-a9/memchr.S \
 
211
        src/linaro-a9/strchr.S \
 
212
        src/thumb-2/strlen.S \
 
213
        src/linaro-a9/memset.S \
 
214
        src/linaro-a9/memcpy.S
108
215
 
109
216
# Libraries containing the difference reference versions
110
 
libbionic_a_SOURCES = \
111
 
        $(neon_bionic_sources) \
112
 
        reference/bionic/memchr.c \
113
 
        reference/bionic/memset.S \
114
 
        reference/bionic/strchr.c \
115
 
        reference/bionic/strcmp.c \
116
 
        reference/bionic/strcpy.c \
117
 
        reference/bionic/strlen.c
118
 
 
119
 
libbionic_a_CFLAGS = -Wa,-mimplicit-it=thumb
 
217
libbionic_a9_a_SOURCES = \
 
218
        $(neon_bionic_a9_sources) \
 
219
        reference/bionic-a9/memcmp.S \
 
220
        reference/bionic-a9/strcmp.S \
 
221
        reference/bionic-a9/strcpy.S \
 
222
        reference/bionic-a9/strlen.c
 
223
 
 
224
libbionic_a9_a_CFLAGS = -Wa,-mimplicit-it=thumb
 
225
 
 
226
libbionic_a15_a_SOURCES = \
 
227
        $(neon_bionic_a15_sources) \
 
228
        reference/bionic-a15/memcmp.S \
 
229
        reference/bionic-a15/strcmp.S \
 
230
        reference/bionic-a15/strcpy.S \
 
231
        reference/bionic-a15/strlen.c
 
232
 
 
233
libbionic_a15_a_CFLAGS = -Wa,-mimplicit-it=thumb
120
234
 
121
235
libcsl_a_SOURCES = \
122
236
        reference/csl/memcpy.c \
124
238
        reference/csl/arm_asm.h
125
239
 
126
240
libglibc_a_SOURCES = \
127
 
        reference/glibc/memchr.c \
128
241
        reference/glibc/memcpy.S \
129
242
        reference/glibc/memset.S \
130
 
        reference/glibc/strchr.c \
131
 
        reference/glibc/strcmp.c \
132
 
        reference/glibc/strcpy.c \
133
243
        reference/glibc/strlen.S
134
244
 
135
245
libnewlib_a_SOURCES = \
136
 
        reference/newlib/memchr.c \
137
 
        reference/newlib/memcpy.c \
138
 
        reference/newlib/memset.c \
139
 
        reference/newlib/strchr.c \
140
 
        reference/newlib/strcmp.c \
 
246
        reference/newlib/memcpy.S \
 
247
        reference/newlib/strcmp.S \
141
248
        reference/newlib/strcpy.c \
142
249
        reference/newlib/strlen.c \
143
250
        reference/newlib/arm_asm.h \
153
260
        reference/newlib-xscale/strlen.c \
154
261
        reference/newlib-xscale/xscale.h
155
262
 
156
 
libplain_a_SOURCES = \
157
 
        reference/plain/memset.c \
158
 
        reference/plain/memcpy.c \
159
 
        reference/plain/strcmp.c \
160
 
        reference/plain/strcpy.c
161
 
 
162
 
libmulti_a_SOURCES = \
163
 
        benchmarks/multi/harness.c
164
 
 
165
 
libmulti_a_CFLAGS = -DVERSION=\"$(VERSION)\" $(AM_CFLAGS)
166
 
 
167
263
# Flags for the benchmark helpers
168
 
try_none_SOURCES =
169
 
try_none_LDADD = libmulti.a -lrt
170
 
try_this_SOURCES =
171
 
try_this_LDADD = libmulti.a libcortex-strings.la -lrt
172
 
try_bionic_SOURCES =
173
 
try_bionic_LDADD = libmulti.a libbionic.a -lrt
 
264
try_bionic_a9_SOURCES =
 
265
try_bionic_a9_LDADD = libmulti.a libbionic-a9.a -lrt
 
266
try_bionic_a15_SOURCES =
 
267
try_bionic_a15_LDADD = libmulti.a libbionic-a15.a -lrt
174
268
try_csl_SOURCES =
175
269
try_csl_LDADD = libmulti.a libcsl.a -lrt
176
270
try_glibc_SOURCES =
179
273
try_newlib_LDADD = libmulti.a libnewlib.a -lrt
180
274
try_newlib_xscale_SOURCES =
181
275
try_newlib_xscale_LDADD = libmulti.a libnewlib-xscale.a -lrt
182
 
try_plain_SOURCES =
183
 
try_plain_LDADD = libmulti.a libplain.a -lrt
184
 
 
185
 
# Good 'ol Dhrystone
186
 
dhry_SOURCES = \
187
 
        benchmarks/dhry/dhry_1.c \
188
 
        benchmarks/dhry/dhry_2.c \
189
 
        benchmarks/dhry/dhry.h
190
 
 
191
 
dhry_CFLAGS = -Dcompiler="\"$(COMPILER)\"" -Doptions="\"$(CFLAGS)\""
192
 
dhry_LDADD = libcortex-strings.la
193
 
 
194
 
dhry_native_SOURCES = $(dhry_SOURCES)
195
 
dhry_native_CFLAGS = $(dhry_CFLAGS)
196
 
 
197
 
AM_CPPFLAGS = $(neon_cppflags)
198
 
AM_CFLAGS = -std=gnu99 -Wall \
 
276
 
 
277
AM_CPPFLAGS = $(fpu_flags)
 
278
AM_LDFLAGS = $(fpu_flags)
 
279
 
 
280
endif
 
281
 
 
282
# aarch64 specific
 
283
if HOST_AARCH64
 
284
 
 
285
libcortex_strings_la_SOURCES = \
 
286
        src/aarch64/memcmp.S \
 
287
        src/aarch64/memcpy.S \
 
288
        src/aarch64/memmove.S \
 
289
        src/aarch64/memset.S \
 
290
        src/aarch64/strcmp.S \
 
291
        src/aarch64/strlen.S \
 
292
        src/aarch64/strncmp.S \
 
293
        src/aarch64/strnlen.S
 
294
 
 
295
endif
 
296
 
 
297
libcortex_strings_la_LDFLAGS = -version-info 1:0:0
 
298
 
 
299
AM_CFLAGS = \
 
300
        -std=gnu99 -Wall \
199
301
        -fno-builtin -fno-stack-protector -U_FORTIFY_SOURCE \
200
 
        -mtune=$(submachine) $(AM_CPPFLAGS)
 
302
        $(AM_CPPFLAGS)
 
303
 
 
304
if WITH_SUBMACHINE
 
305
AM_CFLAGS += \
 
306
        -mtune=$(submachine)
 
307
endif
201
308
 
202
309
EXTRA_DIST = \
203
310
        tests/hp-timing.h \
204
311
        tests/test-string.h \
205
312
        tests/test-skeleton.c \
 
313
        scripts/add-license.sh \
 
314
        scripts/bench.py \
 
315
        scripts/fixup.py \
 
316
        scripts/libplot.py \
 
317
        scripts/plot-align.py \
 
318
        scripts/plot.py \
 
319
        scripts/plot-sizes.py \
 
320
        scripts/plot-top.py \
 
321
        scripts/trim.sh \
206
322
        autogen.sh
207
 
 
208
 
add_on_dist = add-on-dist
209
 
add_on_dest = $(add_on_dist)/$(PACKAGE)/sysdeps/arm/eabi/arm/$(submachine)
210
 
add_on_dirs = thumb-2 $(submachine) $(neon_dirs)
211
 
 
212
 
add_on_src = \
213
 
        $(wildcard $(add_on_dirs:%=$(srcdir)/src/%/*.c)) \
214
 
        $(wildcard $(add_on_dirs:%=$(srcdir)/src/%/*.S)) \
215
 
        $(wildcard $(add_on_dirs:%=$(srcdir)/src/%/*.h))
216
 
 
217
 
add-on:
218
 
        rm -rf $(add_on_dist)
219
 
        mkdir -p $(add_on_dest)
220
 
        cp -f $(add_on_src) $(add_on_dest)
221
 
        python $(srcdir)/scripts/fixup.py GLIBC $(add_on_dest)/*
222
 
        tar cf $(PACKAGE).tar -C $(add_on_dist) .