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.
This commit is contained in:
Andrew Senkevich 2015-05-14 17:28:06 +03:00
parent 202d48dab9
commit 5695d46f5d
8 changed files with 96 additions and 2 deletions

View File

@ -1,5 +1,14 @@
2015-05-14 Andrew Senkevich <andrew.senkevich@intel.com> 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/math-vector.h: New file.
* bits/libm-simd-decl-stubs.h: New header. * bits/libm-simd-decl-stubs.h: New header.
* math/Makefile (headers): Added new header * math/Makefile (headers): Added new header

View File

@ -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-tests = $(link-libc-tests-rpath-link) \
$(link-libc-before-gnulib) $(gnulib-tests) $(link-libc-before-gnulib) $(gnulib-tests)
# This is how to find at build-time things that will be installed there. # 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 = \ rpath-link = \
$(common-objdir):$(subst $(empty) ,:,$(patsubst ../$(subdir),.,$(rpath-dirs:%=$(common-objpfx)%))) $(common-objdir):$(subst $(empty) ,:,$(patsubst ../$(subdir),.,$(rpath-dirs:%=$(common-objpfx)%)))
else else
@ -1074,8 +1074,10 @@ endif
ifeq ($(build-shared),yes) ifeq ($(build-shared),yes)
libm = $(common-objpfx)math/libm.so$(libm.so-version) libm = $(common-objpfx)math/libm.so$(libm.so-version)
libmvec = $(common-objpfx)mathvec/libmvec.so$(libmvec.so-version)
else else
libm = $(common-objpfx)math/libm.a libm = $(common-objpfx)math/libm.a
libmvec = $(common-objpfx)mathvec/libmvec.a
endif endif
# These are the subdirectories containing the library source. The order # 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 \ stdlib stdio-common libio malloc string wcsmbs time dirent \
grp pwd posix io termios resource misc socket sysvipc gmon \ grp pwd posix io termios resource misc socket sysvipc gmon \
gnulib iconv iconvdata wctype manual shadow gshadow po argp \ 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 $(add-on-subdirs) dlfcn elf
ifndef avoid-generated ifndef avoid-generated

17
configure vendored
View File

@ -777,6 +777,7 @@ enable_systemtap
enable_build_nscd enable_build_nscd
enable_nscd enable_nscd
enable_pt_chown enable_pt_chown
enable_mathvec
with_cpu with_cpu
' '
ac_precious_vars='build_alias ac_precious_vars='build_alias
@ -1441,6 +1442,8 @@ Optional Features:
--disable-build-nscd disable building and installing the nscd daemon --disable-build-nscd disable building and installing the nscd daemon
--disable-nscd library functions will not contact the nscd daemon --disable-nscd library functions will not contact the nscd daemon
--enable-pt_chown Enable building and installing pt_chown --enable-pt_chown Enable building and installing pt_chown
--enable-mathvec Enable building and installing mathvec [default
depends on architecture]
Optional Packages: Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@ -3845,6 +3848,14 @@ gnu*)
;; ;;
esac 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 # We keep the original values in `$config_*' and never modify them, so we
# can write them unchanged into config.make. Everything else uses # can write them unchanged into config.make. Everything else uses
# $machine, $vendor, and $os, and changes them whenever convenient. # $machine, $vendor, and $os, and changes them whenever convenient.
@ -7215,6 +7226,12 @@ $as_echo "running configure fragment for $dir" >&6; }
fi fi
done done
if test x"$build_mathvec" = xnotset; then
build_mathvec=no
fi
config_vars="$config_vars
build-mathvec = $build_mathvec"

View File

@ -381,6 +381,12 @@ gnu*)
;; ;;
esac 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 # We keep the original values in `$config_*' and never modify them, so we
# can write them unchanged into config.make. Everything else uses # can write them unchanged into config.make. Everything else uses
# $machine, $vendor, and $os, and changes them whenever convenient. # $machine, $vendor, and $os, and changes them whenever convenient.
@ -1994,6 +2000,11 @@ for dir in $sysnames; do
fi fi
done 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_cflags)
AC_SUBST(libc_extra_cppflags) AC_SUBST(libc_extra_cppflags)

View File

@ -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)) routines = $(calls) $(calls:=f) $(long-c-$(long-double-fcts))
long-c-yes = $(calls:=l) 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. # Rules for the test suite.
tests = test-matherr test-fenv atest-exp atest-sincos atest-exp2 basic-test \ tests = test-matherr test-fenv atest-exp atest-sincos atest-exp2 basic-test \
test-misc test-fpucw test-fpucw-ieee tst-definitions test-tgmath \ test-misc test-fpucw test-fpucw-ieee tst-definitions test-tgmath \

1
mathvec/Depend Normal file
View File

@ -0,0 +1 @@
math

35
mathvec/Makefile Normal file
View File

@ -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

View File

@ -71,3 +71,6 @@ libanl=1
# This defines the libgcc soname version this glibc is to load for # This defines the libgcc soname version this glibc is to load for
# asynchronous cancellation to work correctly. # asynchronous cancellation to work correctly.
libgcc_s=1 libgcc_s=1
# The vector math library
libmvec=1