freebsd-dev/contrib/cortex-strings/Makefile.am
Andrew Turner 09a53ad8f1 Import the Linaro Cortex Strings library into contrib.
Sponsored by:	The FreeBSD Foundation
2016-09-19 13:12:09 +00:00

328 lines
8.6 KiB
Makefile

# Copyright (c) 2011, Linaro Limited
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the Linaro nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Top level Makefile for cortex-strings
# Used to record the compiler version in the executables
COMPILER = $(shell $(CC) --version 2>&1 | head -n1)
# The main library
lib_LTLIBRARIES = \
libcortex-strings.la
## Test suite
check_PROGRAMS = \
tests/test-memchr \
tests/test-memcmp \
tests/test-memcpy \
tests/test-memmove \
tests/test-memset \
tests/test-strchr \
tests/test-strcmp \
tests/test-strcpy \
tests/test-strlen \
tests/test-strncmp \
tests/test-strnlen
# Options for the tests
tests_cflags = -I$(srcdir)/tests $(AM_CFLAGS)
tests_ldadd = libcortex-strings.la
tests_test_memchr_LDADD = $(tests_ldadd)
tests_test_memchr_CFLAGS = $(tests_cflags)
tests_test_memcmp_LDADD = $(tests_ldadd)
tests_test_memcmp_CFLAGS = $(tests_cflags)
tests_test_memcpy_LDADD = $(tests_ldadd)
tests_test_memcpy_CFLAGS = $(tests_cflags)
tests_test_memmove_LDADD = $(tests_ldadd)
tests_test_memmove_CFLAGS = $(tests_cflags)
tests_test_memset_LDADD = $(tests_ldadd)
tests_test_memset_CFLAGS = $(tests_cflags)
tests_test_strchr_LDADD = $(tests_ldadd)
tests_test_strchr_CFLAGS = $(tests_cflags)
tests_test_strcmp_LDADD = $(tests_ldadd)
tests_test_strcmp_CFLAGS = $(tests_cflags)
tests_test_strcpy_LDADD = $(tests_ldadd)
tests_test_strcpy_CFLAGS = $(tests_cflags)
tests_test_strlen_LDADD = $(tests_ldadd)
tests_test_strlen_CFLAGS = $(tests_cflags)
tests_test_strncmp_LDADD = $(tests_ldadd)
tests_test_strncmp_CFLAGS = $(tests_cflags)
TESTS = $(check_PROGRAMS)
## Benchmarks
noinst_PROGRAMS = \
dhry \
dhry-native \
try-none \
try-this \
try-plain \
try-newlib-c \
try-bionic-c \
try-glibc-c
# Good 'ol Dhrystone
dhry_SOURCES = \
benchmarks/dhry/dhry_1.c \
benchmarks/dhry/dhry_2.c \
benchmarks/dhry/dhry.h
dhry_CFLAGS = -Dcompiler="\"$(COMPILER)\"" -Doptions="\"$(CFLAGS)\""
dhry_LDADD = libcortex-strings.la
dhry_native_SOURCES = $(dhry_SOURCES)
dhry_native_CFLAGS = $(dhry_CFLAGS)
# Benchmark harness
noinst_LIBRARIES = \
libmulti.a \
libbionic-c.a \
libglibc-c.a \
libnewlib-c.a \
libplain.a
libmulti_a_SOURCES = \
benchmarks/multi/harness.c
libmulti_a_CFLAGS = -DVERSION=\"$(VERSION)\" $(AM_CFLAGS)
## Other architecture independant implementaions
libbionic_c_a_SOURCES = \
reference/bionic-c/bcopy.c \
reference/bionic-c/memchr.c \
reference/bionic-c/memcmp.c \
reference/bionic-c/memcpy.c \
reference/bionic-c/memset.c \
reference/bionic-c/strchr.c \
reference/bionic-c/strcmp.c \
reference/bionic-c/strcpy.c \
reference/bionic-c/strlen.c
libglibc_c_a_SOURCES = \
reference/glibc-c/memchr.c \
reference/glibc-c/memcmp.c \
reference/glibc-c/memcpy.c \
reference/glibc-c/memset.c \
reference/glibc-c/strchr.c \
reference/glibc-c/strcmp.c \
reference/glibc-c/strcpy.c \
reference/glibc-c/strlen.c \
reference/glibc-c/wordcopy.c \
reference/glibc-c/memcopy.h \
reference/glibc-c/pagecopy.h
libnewlib_c_a_SOURCES = \
reference/newlib-c/memchr.c \
reference/newlib-c/memcmp.c \
reference/newlib-c/memcpy.c \
reference/newlib-c/memset.c \
reference/newlib-c/strchr.c \
reference/newlib-c/strcmp.c \
reference/newlib-c/strcpy.c \
reference/newlib-c/strlen.c \
reference/newlib-c/shim.h
libplain_a_SOURCES = \
reference/plain/memset.c \
reference/plain/memcpy.c \
reference/plain/strcmp.c \
reference/plain/strcpy.c
try_none_SOURCES =
try_none_LDADD = libmulti.a -lrt
try_this_SOURCES =
try_this_LDADD = libmulti.a libcortex-strings.la -lrt
try_bionic_c_SOURCES =
try_bionic_c_LDADD = libmulti.a libbionic-c.a -lrt
try_glibc_c_SOURCES =
try_glibc_c_LDADD = libmulti.a libglibc-c.a -lrt
try_newlib_c_SOURCES =
try_newlib_c_LDADD = libmulti.a libnewlib-c.a -lrt
try_plain_SOURCES =
try_plain_LDADD = libmulti.a libplain.a -lrt
# Architecture specific
if HOST_AARCH32
if WITH_NEON
# Pull in the NEON specific files
neon_bionic_a9_sources = \
reference/bionic-a9/memcpy.S \
reference/bionic-a9/memset.S
neon_bionic_a15_sources = \
reference/bionic-a15/memcpy.S \
reference/bionic-a15/memset.S
fpu_flags = -mfpu=neon
else
if WITH_VFP
fpu_flags = -mfpu=vfp
else
fpu_flags = -msoft-float
endif
endif
# Benchmarks and example programs
noinst_PROGRAMS += \
try-bionic-a9 \
try-bionic-a15 \
try-csl \
try-glibc \
try-newlib \
try-newlib-xscale
# Libraries used in the benchmarks and examples
noinst_LIBRARIES += \
libbionic-a9.a \
libbionic-a15.a \
libcsl.a \
libglibc.a \
libnewlib.a \
libnewlib-xscale.a
# Main library
libcortex_strings_la_SOURCES = \
src/thumb-2/strcpy.c \
src/arm/memchr.S \
src/arm/strchr.S \
src/thumb-2/strlen.S \
src/arm/memset.S \
src/arm/memcpy.S \
src/arm/strcmp.S
# Libraries containing the difference reference versions
libbionic_a9_a_SOURCES = \
$(neon_bionic_a9_sources) \
reference/bionic-a9/memcmp.S \
reference/bionic-a9/strcmp.S \
reference/bionic-a9/strcpy.S \
reference/bionic-a9/strlen.c
libbionic_a9_a_CFLAGS = -Wa,-mimplicit-it=thumb
libbionic_a15_a_SOURCES = \
$(neon_bionic_a15_sources) \
reference/bionic-a15/memcmp.S \
reference/bionic-a15/strcmp.S \
reference/bionic-a15/strcpy.S \
reference/bionic-a15/strlen.c
libbionic_a15_a_CFLAGS = -Wa,-mimplicit-it=thumb
libcsl_a_SOURCES = \
reference/csl/memcpy.c \
reference/csl/memset.c \
reference/csl/arm_asm.h
libglibc_a_SOURCES = \
reference/glibc/memcpy.S \
reference/glibc/memset.S \
reference/glibc/strchr.S \
reference/glibc/strlen.S
libnewlib_a_SOURCES = \
reference/newlib/memcpy.S \
reference/newlib/strcmp.S \
reference/newlib/strcpy.c \
reference/newlib/strlen.c \
reference/newlib/arm_asm.h \
reference/newlib/shim.h
libnewlib_xscale_a_SOURCES = \
reference/newlib-xscale/memchr.c \
reference/newlib-xscale/memcpy.c \
reference/newlib-xscale/memset.c \
reference/newlib-xscale/strchr.c \
reference/newlib-xscale/strcmp.c \
reference/newlib-xscale/strcpy.c \
reference/newlib-xscale/strlen.c \
reference/newlib-xscale/xscale.h
# Flags for the benchmark helpers
try_bionic_a9_SOURCES =
try_bionic_a9_LDADD = libmulti.a libbionic-a9.a -lrt
try_bionic_a15_SOURCES =
try_bionic_a15_LDADD = libmulti.a libbionic-a15.a -lrt
try_csl_SOURCES =
try_csl_LDADD = libmulti.a libcsl.a -lrt
try_glibc_SOURCES =
try_glibc_LDADD = libmulti.a libglibc.a -lrt
try_newlib_SOURCES =
try_newlib_LDADD = libmulti.a libnewlib.a -lrt
try_newlib_xscale_SOURCES =
try_newlib_xscale_LDADD = libmulti.a libnewlib-xscale.a -lrt
AM_CPPFLAGS = $(fpu_flags)
AM_LDFLAGS = $(fpu_flags)
endif
# aarch64 specific
if HOST_AARCH64
libcortex_strings_la_SOURCES = \
src/aarch64/memchr.S \
src/aarch64/memcmp.S \
src/aarch64/memcpy.S \
src/aarch64/memmove.S \
src/aarch64/memset.S \
src/aarch64/strchr.S \
src/aarch64/strchrnul.S \
src/aarch64/strcmp.S \
src/aarch64/strcpy.S \
src/aarch64/strlen.S \
src/aarch64/strncmp.S \
src/aarch64/strnlen.S
endif
libcortex_strings_la_LDFLAGS = -version-info 1:0:0
AM_CFLAGS = \
-std=gnu99 -Wall \
-fno-builtin -fno-stack-protector -U_FORTIFY_SOURCE \
$(AM_CPPFLAGS)
if WITH_SUBMACHINE
AM_CFLAGS += \
-mtune=$(submachine)
endif
EXTRA_DIST = \
tests/hp-timing.h \
tests/test-string.h \
tests/test-skeleton.c \
scripts/add-license.sh \
scripts/bench.py \
scripts/fixup.py \
scripts/libplot.py \
scripts/plot-align.py \
scripts/plot.py \
scripts/plot-sizes.py \
scripts/plot-top.py \
scripts/trim.sh \
autogen.sh