summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Senkevich <andrew.n.senkevich@gmail.com>2015-05-14 17:28:06 +0300
committerAndrew Senkevich <andrew.n.senkevich@gmail.com>2015-05-14 18:07:06 +0300
commit5695d46f5dc0ff2ffbcb0c52b1f6c2ada09c39dc (patch)
treedb2ba80e0b866fedd12253686d09e448e905f39b
parent202d48dab92e0f031928528589f086835595afe5 (diff)
downloadglibc-5695d46f5dc0ff2ffbcb0c52b1f6c2ada09c39dc.tar.gz
This is update for configure, build and install of vector math library.
Installation of libm.so as linker script only in case of libmvec.so build. 2015-05-14 Andrew Senkevich <andrew.n.senkevich@gmail.com> * Makeconfig (rpath-dirs, all-subdirs): Added mathvec folder. (libmvec): New variable. * configure.ac: Added option for mathvec build. * configure: Regenerated. * mathvec/Depend: New file. * mathvec/Makefile: New file. * shlib-versions: Added libmvec. * math/Makefile: Added rule for libm.so installation.
-rw-r--r--ChangeLog9
-rw-r--r--Makeconfig6
-rwxr-xr-xconfigure17
-rw-r--r--configure.ac11
-rw-r--r--math/Makefile16
-rw-r--r--mathvec/Depend1
-rw-r--r--mathvec/Makefile35
-rw-r--r--shlib-versions3
8 files changed, 96 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index d32e8daa7f..e89c14e634 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2015-05-14 Andrew Senkevich <andrew.senkevich@intel.com>
+ * Makeconfig (rpath-dirs, all-subdirs): Added mathvec folder.
+ (libmvec): New variable.
+ * configure.ac: Added option for mathvec build.
+ * configure: Regenerated.
+ * mathvec/Depend: New file.
+ * mathvec/Makefile: New file.
+ * shlib-versions: Added libmvec.
+ * math/Makefile: Added rule for libm.so installation.
+
* bits/math-vector.h: New file.
* bits/libm-simd-decl-stubs.h: New header.
* math/Makefile (headers): Added new header
diff --git a/Makeconfig b/Makeconfig
index 77752c0bb4..d32a0fdc65 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -498,7 +498,7 @@ link-libc = $(link-libc-rpath-link) $(link-libc-before-gnulib) $(gnulib)
link-libc-tests = $(link-libc-tests-rpath-link) \
$(link-libc-before-gnulib) $(gnulib-tests)
# This is how to find at build-time things that will be installed there.
-rpath-dirs = math elf dlfcn nss nis rt resolv crypt
+rpath-dirs = math elf dlfcn nss nis rt resolv crypt mathvec
rpath-link = \
$(common-objdir):$(subst $(empty) ,:,$(patsubst ../$(subdir),.,$(rpath-dirs:%=$(common-objpfx)%)))
else
@@ -1074,8 +1074,10 @@ endif
ifeq ($(build-shared),yes)
libm = $(common-objpfx)math/libm.so$(libm.so-version)
+libmvec = $(common-objpfx)mathvec/libmvec.so$(libmvec.so-version)
else
libm = $(common-objpfx)math/libm.a
+libmvec = $(common-objpfx)mathvec/libmvec.a
endif
# These are the subdirectories containing the library source. The order
@@ -1085,7 +1087,7 @@ all-subdirs = csu assert ctype locale intl catgets math setjmp signal \
stdlib stdio-common libio malloc string wcsmbs time dirent \
grp pwd posix io termios resource misc socket sysvipc gmon \
gnulib iconv iconvdata wctype manual shadow gshadow po argp \
- crypt localedata timezone rt conform debug \
+ crypt localedata timezone rt conform debug mathvec \
$(add-on-subdirs) dlfcn elf
ifndef avoid-generated
diff --git a/configure b/configure
index 97e549eef5..1e4138b524 100755
--- a/configure
+++ b/configure
@@ -777,6 +777,7 @@ enable_systemtap
enable_build_nscd
enable_nscd
enable_pt_chown
+enable_mathvec
with_cpu
'
ac_precious_vars='build_alias
@@ -1441,6 +1442,8 @@ Optional Features:
--disable-build-nscd disable building and installing the nscd daemon
--disable-nscd library functions will not contact the nscd daemon
--enable-pt_chown Enable building and installing pt_chown
+ --enable-mathvec Enable building and installing mathvec [default
+ depends on architecture]
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -3845,6 +3848,14 @@ gnu*)
;;
esac
+# Check whether --enable-mathvec was given.
+if test "${enable_mathvec+set}" = set; then :
+ enableval=$enable_mathvec; build_mathvec=$enableval
+else
+ build_mathvec=notset
+fi
+
+
# We keep the original values in `$config_*' and never modify them, so we
# can write them unchanged into config.make. Everything else uses
# $machine, $vendor, and $os, and changes them whenever convenient.
@@ -7215,6 +7226,12 @@ $as_echo "running configure fragment for $dir" >&6; }
fi
done
+if test x"$build_mathvec" = xnotset; then
+ build_mathvec=no
+fi
+config_vars="$config_vars
+build-mathvec = $build_mathvec"
+
diff --git a/configure.ac b/configure.ac
index def655ab8b..ff66b875e3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -381,6 +381,12 @@ gnu*)
;;
esac
+AC_ARG_ENABLE([mathvec],
+ [AS_HELP_STRING([--enable-mathvec],
+ [Enable building and installing mathvec @<:@default depends on architecture@:>@])],
+ [build_mathvec=$enableval],
+ [build_mathvec=notset])
+
# We keep the original values in `$config_*' and never modify them, so we
# can write them unchanged into config.make. Everything else uses
# $machine, $vendor, and $os, and changes them whenever convenient.
@@ -1994,6 +2000,11 @@ for dir in $sysnames; do
fi
done
+if test x"$build_mathvec" = xnotset; then
+ build_mathvec=no
+fi
+LIBC_CONFIG_VAR([build-mathvec], [$build_mathvec])
+
AC_SUBST(libc_extra_cflags)
AC_SUBST(libc_extra_cppflags)
diff --git a/math/Makefile b/math/Makefile
index 4f66162a09..9a3cf3228b 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -86,6 +86,22 @@ generated += $(foreach s,.c .S l.c l.S f.c f.S,$(calls:s_%=m_%$s))
routines = $(calls) $(calls:=f) $(long-c-$(long-double-fcts))
long-c-yes = $(calls:=l)
+ifeq ($(build-mathvec),yes)
+# We need to install libm.so as linker script
+# for more comfortable use of vector math library.
+install-lib-ldscripts := libm.so
+install_subdir: $(inst_libdir)/libm.so
+$(inst_libdir)/libm.so: $(common-objpfx)format.lds \
+ $(libm) \
+ $(libmvec) \
+ $(+force)
+ (echo '/* GNU ld script'; echo '*/';\
+ cat $<; \
+ echo 'GROUP ( $(slibdir)/libm.so$(libm.so-version) ' \
+ 'AS_NEEDED ( $(slibdir)/libmvec.so$(libmvec.so-version) ) )' \
+ ) > $@
+endif
+
# Rules for the test suite.
tests = test-matherr test-fenv atest-exp atest-sincos atest-exp2 basic-test \
test-misc test-fpucw test-fpucw-ieee tst-definitions test-tgmath \
diff --git a/mathvec/Depend b/mathvec/Depend
new file mode 100644
index 0000000000..ede10ab61b
--- /dev/null
+++ b/mathvec/Depend
@@ -0,0 +1 @@
+math
diff --git a/mathvec/Makefile b/mathvec/Makefile
new file mode 100644
index 0000000000..37e0864f64
--- /dev/null
+++ b/mathvec/Makefile
@@ -0,0 +1,35 @@
+# Copyright (C) 2014-2015 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <http://www.gnu.org/licenses/>.
+
+# Makefile for the vector math library.
+
+subdir := mathvec
+
+include ../Makeconfig
+
+ifeq ($(build-mathvec),yes)
+extra-libs := libmvec
+extra-libs-others = $(extra-libs)
+
+libmvec-routines = $(strip $(libmvec-support))
+
+$(objpfx)libmvec.so: $(libm)
+endif
+
+# Rules for the test suite are in math directory.
+
+include ../Rules
diff --git a/shlib-versions b/shlib-versions
index e05b248e8d..fa3cf1da44 100644
--- a/shlib-versions
+++ b/shlib-versions
@@ -71,3 +71,6 @@ libanl=1
# This defines the libgcc soname version this glibc is to load for
# asynchronous cancellation to work correctly.
libgcc_s=1
+
+# The vector math library
+libmvec=1