#!/bin/sh # (C) 2007, Robert Bradshaw, William Hart, William Stein, Michael Abshoff # (C) 2011, William Hart # (C) 2012, William Hart, Jean-Pierre Flori, Thomas DuBuisson # (C) 2012, Jan Engelhardt PREFIX="/usr/local" GMP_DIR="/usr/local" MPFR_DIR="/usr/local" NTL_DIR="/usr/local" GC_DIR="/usr/local" BLAS_DIR="/usr" WANT_NTL=0 WANT_BLAS=0 WANT_DEPS=1 SHARED=1 STATIC=1 TLS=1 PTHREAD=1 REENTRANT=0 WANT_GC=0 WANT_TLS=0 WANT_CXX=0 ASSERT=0 BUILD= EXTENSIONS= EXT_MODS= EXTRA_BUILD= FLINT_DLL=0 FLINT_LIBNAME= FLINT_SOLIB=0 # soname version, minor release number and patch number # Every major version of Flint (1.0, 1.1, 1.2, etc.) gets # a new major soname number. # Every time a release happens where interfaces are added # to Flint, the minor soname number gets incremented. # Every patch that is made that doesn't change the Flint # interface updates the patch number. # However, if backwards incompatible changes are made, both # the minor and patch numbers are set to 0. (Hopefully this # doesn't happen in practice.) # flint => soname # 2.5.0 => 13.5.0 # 2.5.1 => 13.5.1 # 2.5.2 => 13.5.2 # 2.6.0 => 14.0.0 # 2.6.1 => 14.0.1 # 2.6.2 => 14.0.2 # 2.6.3 => 14.0.3 # 2.7.0 => 15.0.0 # 2.7.1 => 15.0.1 # 2.8.0 => 16.1.0 # 2.8.1 => 16.1.1 # 2.8.2 => 16.1.2 # 2.8.3 => 16.1.3 # 2.8.4 => 16.1.4 # 2.8.5 =? 16.1.5 FLINT_MAJOR=16 FLINT_MINOR=1 FLINT_PATCH=5 usage() { echo "Usage: ./configure " echo " where may be" echo " -h display usage information" echo " where may be:" echo " --prefix= Specify path to installation location (default: /usr/local)" echo " --with-mpir= Specify location of MPIR (default: /usr/local)" echo " --with-gmp= Specify location of GMP (default: /usr/local)" echo " --with-mpfr= Specify location of MPFR (default: /usr/local)" echo " --with-blas[=] Use BLAS and specify its location (default: /usr)" echo " --without-blas Do not use BLAS (default)" echo " --with-ntl[=] Build NTL interface and specify its location (default: /usr/local)" echo " --without-ntl Do not build NTL interface (default)" echo " --extensions= Specify location of extension modules" echo " --build=arch-os Specify architecture/OS combination rather than use values from uname -m/-s" echo " --enable-shared Build a shared library (default)" echo " --disable-shared Do not build a shared library" echo " --enable-static Build a static library (default)" echo " --disable-static Do not build a static library" echo " --single Faster [non-reentrant if tls or pthread not used] version of library (default)" echo " --reentrant Build fully reentrant [with or without tls, with pthread] version of library" echo " --with-gc= GC safe build with path to gc" echo " --enable-pthread Use pthread (default)" echo " --disable-pthread Do not use pthread" echo " --enable-tls Use thread-local storage (default)" echo " --disable-tls Do not use thread-local storage" echo " --enable-assert Enable use of asserts (use for debug builds only)" echo " --disable-assert Disable use of asserts (default)" echo " --enable-cxx Enable C++ wrapper tests" echo " --disable-cxx Disable C++ wrapper tests (default)" echo " --disable-dependency-tracking Disable gcc automated dependency tracking" echo " CC= Use the C compiler with the given name (default: gcc)" echo " CXX= Use the C++ compiler with the given name (default: g++)" echo " AR= Use the AR library builder with the given name (default: ar)" echo " LDCONFIG= Use the given ldconfig tool" echo " CFLAGS= Pass the given flags to the compiler" echo " CXXFLAGS= Pass the given flags to the C++ compiler" echo " ABI=[32|64] Tell the compiler to use given ABI (default: empty)" } absolute_path(){ dirlist="$1" retval="" for dir in $dirlist; do case $dir in /*) dir=$dir;; *) dir=$PWD/$dir;; esac retval=$retval" "$dir done echo $retval } #begin config.log echo "/* This file is autogenerated by ./configure -- do not edit! */" > config.log echo "./configure $@" >> config.log while [ "$1" != "" ]; do PARAM=`echo $1 | sed 's/=.*//'` VALUE=`echo $1 | sed 's/[^=]*//; s/=//'` case "$PARAM" in -h|--help) usage exit 0 ;; --with-mpir|--with-gmp) GMP_DIR=$(absolute_path "$VALUE") ;; --with-mpfr) MPFR_DIR=$(absolute_path "$VALUE") ;; --with-ntl) WANT_NTL=1 if [ ! -z "$VALUE" ]; then NTL_DIR=$(absolute_path "$VALUE") fi ;; --without-ntl) WANT_NTL=0 ;; --with-blas) WANT_BLAS=1 if [ ! -z "$VALUE" ]; then BLAS_DIR=$(absolute_path "$VALUE") fi ;; --without-blas) WANT_BLAS=0 ;; --extensions) EXTENSIONS=$(absolute_path "$VALUE") ;; --build) BUILD="$VALUE" ;; --prefix) PREFIX=$(absolute_path "$VALUE") ;; --enable-shared) SHARED=1 ;; --disable-shared) SHARED=0 ;; --enable-static) STATIC=1 ;; --disable-static) STATIC=0 ;; --single) REENTRANT=0 ;; --reentrant) REENTRANT=1 ;; --with-gc) WANT_GC=1 if [ ! -z "$VALUE" ]; then GC_DIR="$VALUE" fi ;; --enable-pthread) PTHREAD=1 ;; --disable-pthread) PTHREAD=0 ;; --enable-tls) TLS=1 WANT_TLS=1;; --disable-tls) TLS=0 WANT_TLS=2;; --enable-assert) ASSERT=1 ;; --disable-assert) ASSERT=0 ;; --enable-cxx) WANT_CXX=1 ;; --disable-cxx) WANT_CXX=0 ;; --disable-dependency-tracking) WANT_DEPS=0 ;; AR) AR="$VALUE" ;; CC) CC="$VALUE" ;; LDCONFIG) LDCONFIG="$VALUE" ;; CXX) CXX="$VALUE" ;; CFLAGS) CFLAGS="$VALUE" ;; CXXFLAGS) CXXFLAGS="$VALUE" ;; ABI) ABI="$VALUE" ;; *) usage exit 1 ;; esac shift done #find dependencies LIBS="m" if [ -d "${GMP_DIR}/lib" ]; then GMP_LIB_DIR="${GMP_DIR}/lib" GMP_INC_DIR="${GMP_DIR}/include" elif [ -d "${GMP_DIR}/lib64" ]; then GMP_LIB_DIR="${GMP_DIR}/lib64" GMP_INC_DIR="${GMP_DIR}/include" elif [ -d "${GMP_DIR}/.libs" ]; then GMP_LIB_DIR="${GMP_DIR}/.libs" GMP_INC_DIR="${GMP_DIR}" else echo "Invalid GMP directory" echo "Invalid GMP directory: ${GMP_DIR}" >> config.log exit 1 fi LIB_DIRS="${LIB_DIRS} ${GMP_LIB_DIR}" INC_DIRS="${INC_DIRS} ${GMP_INC_DIR}" LIBS="${LIBS} gmp" if [ -d "${MPFR_DIR}/lib" ]; then MPFR_LIB_DIR="${MPFR_DIR}/lib" MPFR_INC_DIR="${MPFR_DIR}/include" elif [ -d "${MPFR_DIR}/lib64" ]; then MPFR_LIB_DIR="${MPFR_DIR}/lib64" MPFR_INC_DIR="${MPFR_DIR}/include" elif [ -d "${MPFR_DIR}/.libs" ]; then MPFR_LIB_DIR="${MPFR_DIR}/.libs" MPFR_INC_DIR="${MPFR_DIR}" elif [ -d "${MPFR_DIR}/src/.libs" ]; then MPFR_LIB_DIR="${MPFR_DIR}/src/.libs" MPFR_INC_DIR="${MPFR_DIR}/src" else echo "Invalid MPFR directory" echo "Invalid MPFR directory: ${MPFR_DIR}" >> config.log exit 1 fi LIB_DIRS="${LIB_DIRS} ${MPFR_LIB_DIR}" INC_DIRS="${INC_DIRS} ${MPFR_INC_DIR}" LIBS="${LIBS} mpfr" #configure extra libraries if [ "$WANT_NTL" = "1" ]; then if [ -d "${NTL_DIR}/lib" ]; then NTL_LIB_DIR="${NTL_DIR}/lib" NTL_INC_DIR="${NTL_DIR}/include" elif [ -d "${NTL_DIR}/lib64" ]; then NTL_LIB_DIR="${NTL_DIR}/lib64" NTL_INC_DIR="${NTL_DIR}/include" else echo "Invalid NTL directory" echo "Invalid NTL directory: ${NTL_DIR}" >> config.log exit 1 fi EXTRA_INC_DIRS="${EXTRA_INC_DIRS} ${NTL_INC_DIR}" EXTRA_LIB_DIRS="${EXTRA_LIB_DIRS} ${NTL_LIB_DIR}" EXTRA_LIBS="${EXTRA_LIBS} ntl" fi if [ "$WANT_BLAS" = "1" ]; then if [ -d "${BLAS_DIR}/lib/x86_64-linux-gnu/openblas-pthread" ]; then BLAS_LIB_DIR="${BLAS_DIR}/lib/x86_64-linux-gnu" BLAS_INC_DIR="${BLAS_DIR}/include/x86_64-linux-gnu" elif [ -d "${BLAS_DIR}/lib" ]; then BLAS_LIB_DIR="${BLAS_DIR}/lib" BLAS_INC_DIR="${BLAS_DIR}/include" elif [ -d "${BLAS_DIR}" ]; then BLAS_LIB_DIR="${BLAS_DIR}" BLAS_INC_DIR="${BLAS_DIR}" else echo "Invalid BLAS directory" echo "Invalid BLAS directory: ${BLAS_DIR}" >> config.log exit 1 fi EXTRA_INC_DIRS="${EXTRA_INC_DIRS} ${BLAS_INC_DIR}" EXTRA_LIB_DIRS="${EXTRA_LIB_DIRS} ${BLAS_LIB_DIR}" EXTRA_LIBS="${EXTRA_LIBS} openblas" fi CONFIG_BLAS="#define FLINT_USES_BLAS ${WANT_BLAS}" if [ "$WANT_GC" = "1" ]; then if [ -d "${GC_DIR}" ]; then GC_LIB_DIR="${GC_DIR}/lib" GC_INC_DIR="${GC_DIR}/include" else echo "Invalid GC directory" echo "Invalid GC directory: ${GC_DIR}" >> config.log exit 1 fi EXTRA_INC_DIRS="${EXTRA_INC_DIRS} ${GC_INC_DIR}" EXTRA_LIB_DIRS="${EXTRA_LIB_DIRS} ${GC_LIB_DIR}" EXTRA_LIBS="${EXTRA_LIBS} gc" fi CONFIG_GC="#define FLINT_USES_GC ${WANT_GC}" # defaults for CC, CXX and AR if [ -z "$CC" ]; then CC=gcc fi if [ -z "$CXX" ]; then CXX=g++ fi if [ -z "$AR" ]; then AR=ar fi #handle gc and reentrant flags if [ "$WANT_GC" = "1" ]; then TLS=0 if [ "$WANT_TLS" = "1" ]; then echo "****WARNING**** GC does not support TLS....disabling TLS" echo "GC does not support TLS....disabling TLS" >> config.log fi cp fmpz/link/fmpz_gc.c fmpz/fmpz.c cp fmpz-conversions-gc.in fmpz-conversions.h else if [ "$REENTRANT" = "1" ]; then cp fmpz/link/fmpz_reentrant.c fmpz/fmpz.c cp fmpz-conversions-reentrant.in fmpz-conversions.h else cp fmpz/link/fmpz_single.c fmpz/fmpz.c cp fmpz-conversions-single.in fmpz-conversions.h fi fi # Architecture handler KERNEL=`uname` if [ -z "$BUILD" ]; then ARCH=`uname -m` if [ "$(uname | cut -d_ -f1)" = "MSYS" ]; then if [ "$ARCH" = "x86_64" ]; then OS="MINGW64" else OS="MINGW32" fi elif [ "$(uname | cut -d_ -f1)" = "MINGW32" ]; then if [ "$ABI" = "64" ]; then OS="MINGW64" else OS="MINGW32" fi elif [ "$(uname | cut -d_ -f1)" = "MINGW64" ]; then if [ "$ABI" = "32" ]; then OS="MINGW32" else OS="MINGW64" fi elif [ "$(uname | cut -d_ -f1)" = "CYGWIN" ]; then if [ "$ARCH" = "x86_64" ]; then if [ "$ABI" = "32" ]; then OS="CYGWIN32" else OS="CYGWIN64" ABI="64" fi else OS="CYGWIN32" fi else OS=`uname -s` fi else ARCH=`echo "$BUILD" | cut -d- -f1` OS=`echo "$BUILD" | cut -d- -f2` fi case "$ARCH" in x86_64 | amd64) MACHINE="x86_64";; x86 | i*86 | pc) MACHINE="x86";; ia64) MACHINE="ia64";; sparc | sun4*) MACHINE="sparc";; sparc64) MACHINE="sparc64";; ppc64 | powerpc64) MACHINE="ppc64";; ppc | powerpc | [P|p]ower*) MACHINE="ppc";; mips64) MACHINE="mips64";; *) MACHINE="unknown";; esac #ABI flag if [ "$ABI" = "32" ]; then ABI_FLAG="-m32" case "$MACHINE" in x86_64) MACHINE="x86";; sparc64) MACHINE="sparc";; ppc64) MACHINE="ppc";; *) ;; esac elif [ "$ABI" = "64" ]; then ABI_FLAG="-m64" if [ "$MACHINE" = "sparc" ]; then MACHINE="sparc64" fi if [ "$MACHINE" = "x86" ]; then MACHINE="x86_64" fi fi if [ "$MACHINE" = "sparc" ] || [ "$MACHINE" = "sparc64" ]; then if [ "$CC" = "gcc" ]; then CC="gcc -mno-relax" fi fi echo "Configuring...${MACHINE}-${OS}" echo "Configuring...${MACHINE}-${OS}" >> config.log #FLINT shared library if [ -z "$FLINT_LIB" ]; then case "$OS" in Darwin) FLINT_LIBNAME="libflint.dylib" FLINT_LIB="libflint-$FLINT_MAJOR.dylib" EXTRA_SHARED_FLAGS="-install_name `pwd`/$FLINT_LIB" EXTRA_SHARED_FLAGS="$EXTRA_SHARED_FLAGS -compatibility_version $FLINT_MAJOR.$FLINT_MINOR" EXTRA_SHARED_FLAGS="$EXTRA_SHARED_FLAGS -current_version $FLINT_MAJOR.$FLINT_MINOR.$FLINT_PATCH" ;; CYGWIN* | MINGW*) FLINT_LIBNAME="libflint.dll" FLINT_LIB="libflint-$FLINT_MAJOR.dll" EXTRA_SHARED_FLAGS="-static-libgcc" EXTRA_SHARED_FLAGS="$EXTRA_SHARED_FLAGS -shared" EXTRA_SHARED_FLAGS="$EXTRA_SHARED_FLAGS -Wl,--export-all-symbols" EXTRA_SHARED_FLAGS="$EXTRA_SHARED_FLAGS -Wl,-soname,libflint-$FLINT_MAJOR.dll.$FLINT_MINOR.$FLINT_PATCH" FLINT_DLL=1 ;; android) FLINT_LIBNAME="libflint.so" FLINT_LIB="libflint.so.$FLINT_MAJOR.$FLINT_MINOR.$FLINT_PATCH" EXTRA_SHARED_FLAGS="-Wl,-soname,libflint.so" FLINT_SOLIB=1 ;; *) FLINT_LIBNAME="libflint.so" FLINT_LIB="libflint.so.$FLINT_MAJOR.$FLINT_MINOR.$FLINT_PATCH" EXTRA_SHARED_FLAGS="-Wl,-soname,libflint.so.$FLINT_MAJOR" FLINT_SOLIB=1 ;; esac EXTRA_SHARED_FLAGS="$EXTRA_SHARED_FLAGS -Wl,-rpath,$GMP_LIB_DIR" EXTRA_SHARED_FLAGS="$EXTRA_SHARED_FLAGS -Wl,-rpath,$MPFR_LIB_DIR" fi # sometimes LDCONFIG is not to be found in the path. Look at some common places. case "$OS" in MINGW*|CYGWIN*|Darwin|FreeBSD) LDCONFIG="true";; *) if [ -z "$LDCONFIG" ]; then LDCONFIG="true" if [ "$FLINT_SOLIB" = "1" ]; then if command -v ldconfig > /dev/null; then LDCONFIG="ldconfig" elif [ -x /sbin/ldconfig ]; then LDCONFIG="/sbin/ldconfig" fi fi fi;; esac #extension for executables if [ -z "$EXEEXT" ]; then case "$OS" in CYGWIN* | MINGW*) EXEEXT=".exe";; *) EXEEXT="";; esac fi #don't build both shared and static lib on MinGW and Cygwin case "$OS" in CYGWIN* | MINGW*) if [ "$STATIC" = "1" ] && [ "$SHARED" = "1" ]; then echo "Building both static and shared versions of MPIR/GMP on $OS is currently" echo "unsupported, and so is it for MPFR and FLINT." echo "You should pass --disable-shared or --disable-static to configure" echo "depending on the versions of MPIR/GMP and MPFR you built." echo "Both static and shared libraries is not permitted on $OS" >> config.log exit 1 fi ;; *) ;; esac #select fft_tuning parameters case "$MACHINE" in x86_64 | ia64 | sparc64 | ppc64) cp fft_tuning64.in fft_tuning.h;; *) cp fft_tuning32.in fft_tuning.h;; esac #test for popcnt flag and set needed CFLAGS mkdir -p build rm -f build/test-popcnt > /dev/null 2>&1 MSG="Testing __builtin_popcountl..." printf "%s" "$MSG" printf "%s" "$MSG" >> config.log echo "int main(int argc, char ** argv) { #if defined(_WIN64) return __builtin_popcountll(argc) == 100; #else return __builtin_popcountl(argc) == 100; #endif }" > build/test-popcnt.c $CC build/test-popcnt.c -o ./build/test-popcnt > /dev/null 2>&1 if [ $? -eq 0 ]; then printf "%s\n" "yes" echo "yes" >> config.log CONFIG_POPCNT_INTRINSICS="#define FLINT_USES_POPCNT" if [ "$MACHINE" = "x86_64" ]; then MSG="Testing native popcount..." printf "%s" "$MSG" printf "%s" "$MSG" >> config.log touch build/test-popcnt.c rm build/test-popcnt $CC -mpopcnt build/test-popcnt.c -o ./build/test-popcnt > /dev/null 2>&1 build/test-popcnt > /dev/null 2>&1 if [ $? -eq 0 ]; then printf "%s\n" "yes" echo "yes" >> config.log POPCNT_FLAG="-mpopcnt" else printf "%s\n" "no" echo "no" >> config.log fi rm -f build/test-popcnt{,.c} #in case -mpopcnt is not available, the test program will use an illegal #instruction and that will print out something on stderr when the if #construction is exited, whence the following "2> /dev/null" fi 2> /dev/null else rm -f build/test-popcnt.c printf "%s\n" "no" echo "no" >> config.log fi #defaults for CFLAGS if [ -z "$CFLAGS" ]; then if [ "$OS" = "MINGW64" ]; then CFLAGS="-std=c99 -O2 -funroll-loops -g $POPCNT_FLAG $ABI_FLAG" ANSI_FLAG="" elif [ "$OS" = "CYGWIN64" ]; then CFLAGS="-O2 -funroll-loops -g -D _WIN64 $POPCNT_FLAG $ABI_FLAG" ANSI_FLAG="" elif [ "$MACHINE" = "mips64" ]; then CFLAGS="-O2 -funroll-loops -g $POPCNT_FLAG $ABI_FLAG" ANSI_FLAG="" elif test "$KERNEL" = "FreeBSD" -o "$OS" = "OpenBSD"; then CFLAGS="-std=c99 -pedantic -Wall -O2 -funroll-loops -g $POPCNT_FLAG $ABI_FLAG" ANSI_FLAG="" CXXFLAGS="-std=c++11 -pedantic -Wall -O2 -funroll-loops -g $POPCNT_FLAG $ABI_FLAG" else ANSI_FLAG="-ansi" CFLAGS="-pedantic -Wall -O2 -funroll-loops -g $POPCNT_FLAG $ABI_FLAG" fi fi #this is needed on PPC G5 and does not hurt on other OS Xes if [ "$KERNEL" = Darwin ]; then CFLAGS="-fno-common $CFLAGS" fi #PIC flag if [ -z "$PIC_FLAG" ]; then case "$OS" in CYGWIN* | MINGW*) ;; *) PIC_FLAG="-fPIC";; esac fi #test support for thread-local storage CONFIG_TLS="#define FLINT_USES_TLS 0" if [ "$TLS" = "1" ]; then mkdir -p build rm -f build/test-tls > /dev/null 2>&1 MSG="Testing __thread..." printf "%s" "$MSG" printf "%s" "$MSG" >> config.log echo "__thread int x = 42; int main(int argc, char ** argv) { return x != 42; }" > build/test-tls.c $CC build/test-tls.c -o ./build/test-tls > /dev/null 2>&1 if [ $? -eq 0 ]; then build/test-tls > /dev/null 2>&1 if [ $? -eq 0 ]; then printf "%s\n" "yes" echo "yes" >> config.log CONFIG_TLS="#define FLINT_USES_TLS 1" else printf "%s\n" "no" echo "no" >> config.log fi rm -f build/test-tls{,.c} else rm -f build/test-tls.c printf "%s\n" "no" echo "no" >> config.log #build-tls can segfault on systems where tls is not available fi 2> /dev/null fi #fenv configuration CONFIG_FENV="#define FLINT_USES_FENV 0" mkdir -p build MSG="Testing fenv..." printf "%s" "$MSG" printf "%s" "$MSG" >> config.log echo "#include " > build/test-fenv.h echo "#ifndef FE_DOWNWARD" >> build/test-fenv.h echo "#error FE_DOWNWARD not available" >> build/test-fenv.h echo "#endif" >> build/test-fenv.h if ($CC -E build/test-fenv.h > /dev/null 2>&1) then printf "%s\n" "yes" echo "yes" >> config.log CONFIG_FENV="#define FLINT_USES_FENV 1" else printf "%s\n" "no" echo "no" >> config.log fi rm -f build/test-fenv.h CONFIG_BIG_ENDIAN="#define FLINT_BIG_ENDIAN 0" mkdir -p build MSG="Testing big endian..." printf "%s" "$MSG" printf "%s" "MSG" >> config.log echo "int main(int argc, char ** argv){ union { unsigned int i; char c[4]; } be_int = {0x01020304}; return be_int.c[0] == 1; }" > build/test-endian.c $CC build/test-endian.c -o ./build/test-endian > /dev/null 2>&1 build/test-endian > /dev/null 2>&1 if [ $? -eq 0 ]; then printf "%s\n" "no" echo "no" >> config.log else printf "%s\n" "yes" echo "yes" >> config.log CONFIG_BIG_ENDIAN="#define FLINT_BIG_ENDIAN 1" fi rm -f build/test-endian{,.c} #pthread configuration CONFIG_PTHREAD="#define FLINT_USES_PTHREAD ${PTHREAD}" #cpu_set_t configuration CONFIG_CPU_SET_T="#define FLINT_USES_CPUSET 0" mkdir -p build MSG="Testing cpu_set_t..." printf "%s" "$MSG" printf "%s" "$MSG" >> config.log echo "#define _GNU_SOURCE #include #include int main(){cpu_set_t s;CPU_ZERO(&s); pthread_getaffinity_np(pthread_self(), sizeof(cpu_set_t), 0); return 0;}" > build/test-cpu_set_t.c $CC build/test-cpu_set_t.c -lpthread -o ./build/test-cpu_set_t > /dev/null 2>&1 if [ $? -eq 0 ]; then rm -f build/test-cpu_set_t printf "%s\n" "yes" echo "yes" >> config.log CONFIG_CPU_SET_T="#define FLINT_USES_CPUSET 1" else printf "%s\n" "no" echo "no" >> config.log fi rm -f build/test-cpu_set_t.c #external modules EXTRA_INC_DIRS="${EXTRA_INC_DIRS} ${EXTENSIONS}" #include paths INCS="-I\$(CURDIR) -I\$(CURDIR)/build" for INC_DIR in ${INC_DIRS} ${EXTRA_INC_DIRS}; do INCS="${INCS} -I${INC_DIR}" done #library paths LLIBS="-L\$(CURDIR)" for LIB_DIR in ${LIB_DIRS} ${EXTRA_LIB_DIRS}; do LLIBS="${LLIBS} -L${LIB_DIR}" done #linker params if [ "$PTHREAD" = "1" ]; then lLIBS2="-lpthread ${lLIBS2}" fi for LIB in ${EXTRA_LIBS} ${LIBS}; do lLIBS2="-l${LIB} ${lLIBS2}" done lLIBS="-lflint $lLIBS2" LIBS2="$LLIBS $lLIBS2" LIBS="$LLIBS $lLIBS" #cxx if [ "$WANT_CXX" = "1" ]; then EXTRA_BUILD="$EXTRA_BUILD flintxx" fi if [ -z "$CXXFLAGS" ]; then CXXFLAGS="$CFLAGS" fi #write out flint-config.h echo "/* This file is autogenerated by ./configure -- do not edit! */" > flint-config.h echo "$CONFIG_POPCNT_INTRINSICS" >> flint-config.h echo "$CONFIG_BLAS" >> flint-config.h echo "$CONFIG_TLS" >> flint-config.h echo "$CONFIG_FENV" >> flint-config.h echo "$CONFIG_PTHREAD" >> flint-config.h echo "$CONFIG_BIG_ENDIAN" >> flint-config.h echo "$CONFIG_GC" >> flint-config.h echo "$CONFIG_CPU_SET_T" >> flint-config.h echo "#define FLINT_REENTRANT $REENTRANT" >> flint-config.h echo "#define FLINT_WANT_ASSERT $ASSERT" >> flint-config.h if [ "$FLINT_DLL" = "1" ]; then echo "#ifdef FLINT_USE_DLL" >> flint-config.h echo "#define FLINT_DLL __declspec(dllimport)" >> flint-config.h echo "#else" >> flint-config.h echo "#define FLINT_DLL __declspec(dllexport)" >> flint-config.h echo "#endif" >> flint-config.h else echo "#define FLINT_DLL" >> flint-config.h fi #write out Makefile echo "# This file is autogenerated by ./configure -- do not edit!" > Makefile echo "" >> Makefile echo "SHELL=/bin/sh" >> Makefile echo "" >> Makefile echo "GMP_LIB_DIR=$GMP_LIB_DIR" >> Makefile echo "MPFR_LIB_DIR=$MPFR_LIB_DIR" >> Makefile echo "" >> Makefile echo "FLINT_STATIC=$STATIC" >> Makefile echo "FLINT_SHARED=$SHARED" >> Makefile echo "FLINT_LIB=$FLINT_LIB" >> Makefile echo "FLINT_LIBNAME=$FLINT_LIBNAME" >> Makefile echo "OS=$OS" >> Makefile echo "FLINT_SOLIB=$FLINT_SOLIB" >> Makefile echo "FLINT_MAJOR=$FLINT_MAJOR" >> Makefile echo "EXEEXT=$EXEEXT" >> Makefile echo "PREFIX=$PREFIX" >> Makefile echo "" >> Makefile echo "WANT_NTL=$WANT_NTL" >> Makefile echo "" >> Makefile echo "INCS=$INCS" >> Makefile echo "LIBS=$LIBS" >> Makefile echo "LIBS2=$LIBS2" >> Makefile echo "" >> Makefile echo "CC=$CC" >> Makefile echo "CXX=$CXX" >> Makefile echo "AR=$AR" >> Makefile echo "LDCONFIG=$LDCONFIG" >> Makefile echo "" >> Makefile echo "CFLAGS=$ANSI_FLAG $CFLAGS" >> Makefile echo "CXXFLAGS=$CXXFLAGS" >> Makefile echo "ABI_FLAG=$ABI_FLAG" >> Makefile echo "PIC_FLAG=$PIC_FLAG" >> Makefile echo "EXTRA_SHARED_FLAGS=$EXTRA_SHARED_FLAGS" >> Makefile echo "" >> Makefile echo "EXTENSIONS=$EXTENSIONS" >> Makefile echo "EXTRA_BUILD_DIRS=$EXTRA_BUILD" >> Makefile echo "" >> Makefile echo "WANT_DEPS=$WANT_DEPS" >> Makefile echo "" >> Makefile cat Makefile.in >> Makefile echo "FLINT was successfully configured." echo "FLINT was successfully configured." >> config.log