about summary refs log tree commit diff
diff options
context:
space:
mode:
-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