Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.0:Update
flint
0001-build-provide-autotools-files.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0001-build-provide-autotools-files.patch of Package flint
From bd27c18fc4f70be8407e72d398978dca1d9ad61e Mon Sep 17 00:00:00 2001 From: Jan Engelhardt <jengelh@inai.de> Date: Sat, 8 Dec 2012 22:32:11 +0100 Subject: [PATCH] build: provide autotools files --- .gitignore | 32 +++++---- Makefile.am | 42 ++++++++++++ autofiles.sh | 51 +++++++++++++++ autogen.sh | 5 ++ configure.ac | 147 ++++++++++++++++++++++++++++++++++++++++++ fft_tuning.h | 9 +++ fft_tuning32.h | 19 ++++++ fft_tuning32.in | 19 ------ fft_tuning64.h | 19 ++++++ fft_tuning64.in | 19 ------ fmpz-conversions-reentrant.h | 10 +++ fmpz-conversions-reentrant.in | 10 --- fmpz-conversions-single.h | 10 +++ fmpz-conversions-single.in | 10 --- fmpz-conversions.h | 6 ++ m4/.gitignore | 2 + 16 files changed, 341 insertions(+), 69 deletions(-) create mode 100644 Makefile.am create mode 100755 autofiles.sh create mode 100755 autogen.sh create mode 100644 configure.ac create mode 100644 fft_tuning.h create mode 100644 fft_tuning32.h delete mode 100644 fft_tuning32.in create mode 100644 fft_tuning64.h delete mode 100644 fft_tuning64.in create mode 100644 fmpz-conversions-reentrant.h delete mode 100644 fmpz-conversions-reentrant.in create mode 100644 fmpz-conversions-single.h delete mode 100644 fmpz-conversions-single.in create mode 100644 fmpz-conversions.h create mode 100644 m4/.gitignore diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..99e517c --- /dev/null +++ b/Makefile.am @@ -0,0 +1,42 @@ +# -*- Makefile -*- + +ACLOCAL_AMFLAGS = -I m4 + +include Mkinclude.am + +AM_CPPFLAGS = -DFLINT_CPIMPORT=\"${pkgdatadir}/CPimport.txt\" -DFLINT_DLL=__attribute__\(\(visibility\(\"default\"\)\)\) +AM_CFLAGS = -ansi -pedantic -Wall -fvisibility=hidden ${FLINT_TUNE} ${FLINT_POPCNT} +AM_CXXFLAGS = ${AM_CFLAGS} -std=gnu++11 + +BUILT_SOURCES = flint-config.h build/CPimport.h + +SOURCES = printf.c fprintf.c sprintf.c scanf.c fscanf.c sscanf.c clz_tab.c memory_manager.c version.c profiler.c thread_support.c exception.c + +pkginclude_HEADERS = ${cwd_headers} + +lib_LTLIBRARIES = libflint.la +noinst_LTLIBRARIES = ${libflint_im} +libflint_la_SOURCES = ${lib_sources} ${SOURCES} +libflint_la_LIBADD = ${libflint_im} -lm -lpthread ${mpfr_LIBS} ${mpir_LIBS} + +if ENABLE_REENTRANT +libflint_la_SOURCES += fmpz/link/fmpz_reentrant.c +else +libflint_la_SOURCES += fmpz/link/fmpz_single.c +endif + +if WITH_NTL +libflint_la_SOURCES += interfaces/NTL-interface.cpp +libflint_la_LIBADD += ${ntl_LIBS} +endif + +if WITH_BLAS +libflint_la_LIBADD += ${blas_LIBS} +endif + +build/CPimport.h: ${srcdir}/qadic/CPimport.txt + @${MKDIR_P} build + ${AM_V_GEN}sed "s/ /,/g;s/.*/&,/g" $< >$@ + +flint-config.h: config.h + grep FLINT <$< >$@ diff --git a/autofiles.sh b/autofiles.sh new file mode 100755 index 0000000..42a0b55 --- /dev/null +++ b/autofiles.sh @@ -0,0 +1,51 @@ +#!/bin/sh +# +# Expand wildcards, gobble up all sources and refresh Mkinclude.am. +# If a Makefile already exists at the time of running autofiles.sh, +# autoreconf/configure need not be called again. +# +BUILD_DIRS="aprcl ulong_extras long_extras perm fmpz fmpz_vec fmpz_poly \ + fmpq_poly fmpz_mat fmpz_lll mpfr_vec mpfr_mat mpf_vec mpf_mat nmod_vec nmod_poly \ + nmod_poly_factor arith mpn_extras nmod_mat fmpq fmpq_vec fmpq_mat padic \ + fmpz_poly_q fmpz_poly_mat nmod_poly_mat fmpz_mod_poly \ + fmpz_mod_poly_factor fmpz_factor fmpz_poly_factor fft qsieve \ + double_extras d_vec d_mat padic_poly padic_mat qadic \ + fq fq_vec fq_mat fq_poly fq_poly_factor\ + fq_nmod fq_nmod_vec fq_nmod_mat fq_nmod_poly fq_nmod_poly_factor \ + fq_zech fq_zech_vec fq_zech_mat fq_zech_poly fq_zech_poly_factor" + +exec >Mkinclude.am; +echo "# -*- Makefile -*- "; + +echo "bd_headers = \\"; +for i in $BUILD_DIRS; do + echo " $i.h \\"; +done; +echo ' $(emptyonpurpose)'; + +echo "cwd_headers = \\"; +for i in *.h; do + echo " $i \\"; +done; +echo ' $(emptyonpurpose)'; + +wcdir () +{ + echo "$1 = \\"; + shift; + find "$@" -maxdepth 1 -type f -name "*.c" -printf '\t%p \\\n' | sort; + echo '$(empty)'; +} + +libflint_im="" +for i in $BUILD_DIRS; do + # there are quite a lot of .lo files (2414), and building with + # intermediate libs reduces the link time of the whole project from + # 1m53s to 32s (2600K), less with make -j (e.g. 12s on -j8) + wcdir "libflint_${i}_la_SOURCES" "$i" + libflint_im="$libflint_im libflint_${i}.la" +done +echo "libflint_im = $libflint_im" +wcdir exmp_sources examples +wcdir test_sources test +wcdir prof_sources profile diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000..82cf41a --- /dev/null +++ b/autogen.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +./autofiles.sh; +autoreconf -fi; +rm -Rf autom4te.cache; diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..ee3307c --- /dev/null +++ b/configure.ac @@ -0,0 +1,147 @@ +AC_INIT([flint], [3.0]) +AC_CONFIG_AUX_DIR([build-aux]) +AC_CONFIG_HEADERS([config.h]) +AC_CONFIG_MACRO_DIR([m4]) +AC_CANONICAL_HOST +AM_INIT_AUTOMAKE([-Wall foreign subdir-objects tar-pax no-dist-gzip dist-xz]) +AC_PROG_CC +AM_PROG_CC_C_O +AC_PROG_CXX +m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) +AC_PROG_LIBTOOL + + +dnl +dnl Various tuning parameters +dnl +AC_MSG_CHECKING([for some "tuning" parameters]) +case "$host" in + x86_64-*-linux*) FLINT_TUNE="-funroll-loops";; + powerpc-*-darwin*|ppc-*-darwin*) FLINT_TUNE="-funroll-loops";; + powerpc64-*|ppc64-*) FLINT_TUNE="-m64 -mcpu=970 -mtune=970 -mpowerpc64 -falign-loops=16 -falign-labels=16 -falign-jumps=16";; + # + # -funroll-loops crashes the build on itanium under GCC-4.2.1, + # as reported by Kate Minola. + # + ia64-*) FLINT_TUNE="";; + *) FLINT_TUNE="-funroll-loops";; +esac +AC_MSG_RESULT([$FLINT_TUNE]) +AC_SUBST([FLINT_TUNE]) + +AH_TEMPLATE([FLINT_REENTRANT], [Set to 1 if reentrant flint is desired]) +AC_ARG_ENABLE([reentrant], + [AS_HELP_STRING([--enable-reentrant], [Enable reentrant code])], + [ + AC_DEFINE([FLINT_REENTRANT], [1]) + AM_CONDITIONAL([ENABLE_REENTRANT], [true]) + ], + [ + AC_DEFINE([FLINT_REENTRANT], [0]) + AM_CONDITIONAL([ENABLE_REENTRANT], [false]) + ]) + + +dnl +dnl popcount builtin and compiler flags +dnl +FLINT_POPCNT="" +AH_TEMPLATE([POPCNT_INTRINSICS], [Define to 1 if __builtin_popcountl is available]) +AC_MSG_CHECKING([__builtin_popcountl]) +AC_COMPILE_IFELSE( + [AC_LANG_SOURCE([ + int main(int argc, char **argv) + { + return __builtin_popcountl(argc) == 100; + } + ])], + [ + AC_MSG_RESULT([yes]) + AC_DEFINE([POPCNT_INTRINSICS], [1]) + FLINT_POPCNT=1 + ], + [ + AC_MSG_RESULT([no]) + ]) +AS_IF([test "$FLINT_POPCNT" = "1"], + [ + AC_MSG_CHECKING([$CC -mpopcnt]) + saved_CFLAGS="$CFLAGS"; CFLAGS="$CFLAGS -mpopcnt"; + AC_COMPILE_IFELSE([AC_LANG_SOURCE([])], + [AC_MSG_RESULT([yes]); FLINT_POPCNT="-mpopcnt";], + [AC_MSG_RESULT([no]); FLINT_POPCNT=""]) + CFLAGS="$saved_CFLAGS"; + ], + [FLINT_POPCNT=""]) +AC_SUBST([FLINT_POPCNT]) + + +dnl +dnl NTL interface +dnl +AC_MSG_CHECKING([whether to enable NTL]) +AC_ARG_WITH([ntl], + [AS_HELP_STRING([--with-ntl], [Use NTL [[no]]])], + [with_ntl="$withval"], + [with_ntl="no"]) +AS_IF([test "x$with_ntl" = "xno"], + [ + AM_CONDITIONAL([WITH_NTL], [false]) + AC_MSG_RESULT([no]) + ], + [ + AC_MSG_RESULT([yes]) + saved_LIBS="$LIBS"; LIBS="$LIBS -lntl"; + AC_LANG_PUSH([C++]) + AC_LINK_IFELSE([ + AC_LANG_SOURCE([ + #include <NTL/lip.h> + int main(void) { _ntl_gsetlength; } + ])], + [ntl_LIBS="-lntl"], + [AC_MSG_ERROR([NTL not found.])] + ) + LIBS="$saved_LIBS"; + AC_LANG_POP([C++]) + AM_CONDITIONAL([WITH_NTL], [true]) + ]) +AC_SUBST([ntl_LIBS]) + + +dnl +dnl OpenBLAS (currently unused) +dnl +AH_TEMPLATE([HAVE_BLAS], [Define to 1 when OpenBLAS is available]) +AC_MSG_CHECKING([whether to enable OpenBLAS]) +AC_ARG_WITH([openblas], + [AS_HELP_STRING([--with-openblas], [Use OpenBLAS [[no]]])], + [with_blas="$withval"], + [with_blas="no"]) +AS_IF([test "x$with_blas" = "xno"], + [ + AM_CONDITIONAL([WITH_BLAS], [false]) + AC_MSG_RESULT([no]) + ], + [ + AC_MSG_RESULT([yes]) + saved_LIBS="$LIBS"; LIBS=""; + AC_SEARCH_LIBS([openblas_set_num_threads], [openblas], [], + [AC_MSG_ERROR([OpenBLAS not found.])]) + AC_DEFINE([HAVE_BLAS], [1]) + blas_LIBS="-lopenblas"; + LIBS="$saved_LIBS"; + AM_CONDITIONAL([WITH_BLAS], [true]) + ]) +AC_SUBST([blas_LIBS]) + + +dnl +dnl MPFR and MPIR (mandatory) +dnl +AC_SEARCH_LIBS([mpfr_init2], [mpfr], [mpfr_LIBS="$LIBS"; LIBS=""]) +AC_SUBST([mpfr_LIBS]) +AC_SEARCH_LIBS([__gmpn_get_d], [mpir], [mpir_LIBS="$LIBS"; LIBS=""]) +AC_SUBST([mpir_LIBS]) + +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT diff --git a/fft_tuning.h b/fft_tuning.h new file mode 100644 index 0000000..988226e --- /dev/null +++ b/fft_tuning.h @@ -0,0 +1,9 @@ +/* + * Checking for "64-bit" must not depend on uname at all. + * Only the compiler is qualified to determine this. + */ +#if defined(_LP64) || defined(__LP64__) || defined(__arch64__) +# include "fft_tuning64.h" +#else +# include "fft_tuning32.h" +#endif diff --git a/fft_tuning32.h b/fft_tuning32.h new file mode 100644 index 0000000..27ff431 --- /dev/null +++ b/fft_tuning32.h @@ -0,0 +1,19 @@ +/* fft_tuning.h -- autogenerated by tune-fft */ + +#ifndef FFT_TUNING_H +#define FFT_TUNING_H + +#include "gmp.h" + +#define FFT_TAB \ + { { 3, 3 }, { 3, 2 }, { 2, 1 }, { 2, 1 }, { 0, 0 } } + +#define MULMOD_TAB \ + { 4, 3, 3, 3, 3, 2, 2, 2, 3, 2, 2, 2, 2, 1, 1 } + +#define FFT_N_NUM 15 + +#define FFT_MULMOD_2EXPP1_CUTOFF 256 + +#endif + diff --git a/fft_tuning32.in b/fft_tuning32.in deleted file mode 100644 index 27ff431..0000000 --- a/fft_tuning32.in +++ /dev/null @@ -1,19 +0,0 @@ -/* fft_tuning.h -- autogenerated by tune-fft */ - -#ifndef FFT_TUNING_H -#define FFT_TUNING_H - -#include "gmp.h" - -#define FFT_TAB \ - { { 3, 3 }, { 3, 2 }, { 2, 1 }, { 2, 1 }, { 0, 0 } } - -#define MULMOD_TAB \ - { 4, 3, 3, 3, 3, 2, 2, 2, 3, 2, 2, 2, 2, 1, 1 } - -#define FFT_N_NUM 15 - -#define FFT_MULMOD_2EXPP1_CUTOFF 256 - -#endif - diff --git a/fft_tuning64.h b/fft_tuning64.h new file mode 100644 index 0000000..f7f94da --- /dev/null +++ b/fft_tuning64.h @@ -0,0 +1,19 @@ +/* fft_tuning.h -- autogenerated by tune-fft */ + +#ifndef FFT_TUNING_H +#define FFT_TUNING_H + +#include "gmp.h" + +#define FFT_TAB \ + { { 4, 4 }, { 4, 3 }, { 3, 2 }, { 2, 1 }, { 2, 1 } } + +#define MULMOD_TAB \ + { 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1 } + +#define FFT_N_NUM 19 + +#define FFT_MULMOD_2EXPP1_CUTOFF 128 + +#endif + diff --git a/fft_tuning64.in b/fft_tuning64.in deleted file mode 100644 index f7f94da..0000000 --- a/fft_tuning64.in +++ /dev/null @@ -1,19 +0,0 @@ -/* fft_tuning.h -- autogenerated by tune-fft */ - -#ifndef FFT_TUNING_H -#define FFT_TUNING_H - -#include "gmp.h" - -#define FFT_TAB \ - { { 4, 4 }, { 4, 3 }, { 3, 2 }, { 2, 1 }, { 2, 1 } } - -#define MULMOD_TAB \ - { 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1 } - -#define FFT_N_NUM 19 - -#define FFT_MULMOD_2EXPP1_CUTOFF 128 - -#endif - diff --git a/fmpz-conversions-reentrant.h b/fmpz-conversions-reentrant.h new file mode 100644 index 0000000..a0d9cbd --- /dev/null +++ b/fmpz-conversions-reentrant.h @@ -0,0 +1,10 @@ +#ifndef FMPZ_CONVERSIONS_H +#define FMPZ_CONVERSIONS_H + +/* turn a pointer to an __mpz_struct into a fmpz_t */ +#define PTR_TO_COEFF(x) (((ulong) (x) >> 2) | (WORD(1) << (FLINT_BITS - 2))) + +/* turns an fmpz into a pointer to an mpz */ +#define COEFF_TO_PTR(x) ((__mpz_struct *) ((x) << 2)) + +#endif /* FMPZ_CONVERSIONS_H */ diff --git a/fmpz-conversions-reentrant.in b/fmpz-conversions-reentrant.in deleted file mode 100644 index a0d9cbd..0000000 --- a/fmpz-conversions-reentrant.in +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef FMPZ_CONVERSIONS_H -#define FMPZ_CONVERSIONS_H - -/* turn a pointer to an __mpz_struct into a fmpz_t */ -#define PTR_TO_COEFF(x) (((ulong) (x) >> 2) | (WORD(1) << (FLINT_BITS - 2))) - -/* turns an fmpz into a pointer to an mpz */ -#define COEFF_TO_PTR(x) ((__mpz_struct *) ((x) << 2)) - -#endif /* FMPZ_CONVERSIONS_H */ diff --git a/fmpz-conversions-single.h b/fmpz-conversions-single.h new file mode 100644 index 0000000..a0d9cbd --- /dev/null +++ b/fmpz-conversions-single.h @@ -0,0 +1,10 @@ +#ifndef FMPZ_CONVERSIONS_H +#define FMPZ_CONVERSIONS_H + +/* turn a pointer to an __mpz_struct into a fmpz_t */ +#define PTR_TO_COEFF(x) (((ulong) (x) >> 2) | (WORD(1) << (FLINT_BITS - 2))) + +/* turns an fmpz into a pointer to an mpz */ +#define COEFF_TO_PTR(x) ((__mpz_struct *) ((x) << 2)) + +#endif /* FMPZ_CONVERSIONS_H */ diff --git a/fmpz-conversions-single.in b/fmpz-conversions-single.in deleted file mode 100644 index a0d9cbd..0000000 --- a/fmpz-conversions-single.in +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef FMPZ_CONVERSIONS_H -#define FMPZ_CONVERSIONS_H - -/* turn a pointer to an __mpz_struct into a fmpz_t */ -#define PTR_TO_COEFF(x) (((ulong) (x) >> 2) | (WORD(1) << (FLINT_BITS - 2))) - -/* turns an fmpz into a pointer to an mpz */ -#define COEFF_TO_PTR(x) ((__mpz_struct *) ((x) << 2)) - -#endif /* FMPZ_CONVERSIONS_H */ diff --git a/fmpz-conversions.h b/fmpz-conversions.h new file mode 100644 index 0000000..a0289ec --- /dev/null +++ b/fmpz-conversions.h @@ -0,0 +1,6 @@ +#include "flint-config.h" +#ifdef FLINT_REENTRANT +# include "fmpz-conversions-reentrant.h" +#else +# include "fmpz-conversions-single.h" +#endif diff --git a/m4/.gitignore b/m4/.gitignore new file mode 100644 index 0000000..64d9bbc --- /dev/null +++ b/m4/.gitignore @@ -0,0 +1,2 @@ +/libtool.m4 +/lt*.m4 -- 2.7.0
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor