From bug-request at octave dot org Thu Mar 17 16:09:20 2005 Subject: Unidentified subject! From: "Shan G. Smith" To: bug at octave dot org, shan@cybertrails.com Date: Thu, 17 Mar 2005 15:57:44 -0600 To: bug at octave dot org Cc: shan at cybertrails dot com Subject: configure fails to search for blas if umfpack is a shared lib. Bug report for Octave 2.9.0 configured for x86_64-intel-linux-gnu Description: ----------- If -lumfpack is a shared lib and linked with a shared blas the check for $sgemm returns true since the search for -lumfpack is done before the check for $sgemm. -lumfpack is added to $LIBS and will pull in the -lblas so the search for blas is not done. Repeat-By: --------- ./configure on a system with a shared -lumfpack and a shared blas. Fix: --- Move the test for -lumfpack to after the test for the blas. Note: My workaround was to specify the blas as seen in the configuration below. I haven't rebuilt yet but I have tested my patch and the blas libs are found. *** octave/configure.in.save 2005-03-17 12:05:39.000000000 -0700 --- octave/configure.in 2005-03-17 14:42:38.239725976 -0700 *************** *** 431,477 **** fi - # Check for UMFPACK library. - - UMFPACK_LIBS= - AC_SUBST(UMFPACK_LIBS) - - AC_ARG_WITH(umfpack, - [ --without-umfpack don't use UMFPACK, disable some sparse functionality], - with_umfpack=$withval, with_umfpack=yes) - - if test "$with_umfpack" = "yes"; then - have_umfpack_header=no - with_umfpack=no - AC_CHECK_HEADER(umfpack/umfpack.h, [have_umfpack_header=yes; break]) - if test "$have_umfpack_header" = yes; then - AC_CHECK_LIB(amd, amd_postorder, [ - LIBS="-lamd $LIBS" - AC_CHECK_LIB(umfpack, umfpack_zi_get_determinant, [ - LIBS="-lumfpack $LIBS" - UMFPACK_LIBS="-lumfpack"; with_umfpack=yes], [ - ## Invalidate the cache. - $as_unset ac_cv_lib_umfpack_umfpack_zi_get_determinant - AC_CHECK_LIB(umfpack, umfpack_zi_get_determinant, [ - LIBS="-lumfpack -lcblas $LIBS" - UMFPACK_LIBS="-lumfpack -lcblas"; with_umfpack=yes], [], -lcblas)])]) - if test "$with_umfpack" = yes; then - # For now the code needed for this is not in umfpack, will add - # a test later that will probably have to be based on version - # numbers as there is no interface changes that are visible at - # compile time. - with_umfpack_split=no - fi - fi - fi - - if test "$with_umfpack" = yes; then - AC_DEFINE(HAVE_UMFPACK, 1, [Define if the UMFPACK library is used.]) - if test "$with_umfpack_split" = yes; then - AC_DEFINE(UMFPACK_SEPARATE_SPLIT, 1, [Define if the UMFPACK Complex solver allow matrix and RHS to be split independently]) - fi - else - warn_umfpack="UMFPACK not found. This will result in some lack of functionality for sparse matrices." - fi - WITH_MPI=true AC_ARG_WITH(mpi, --- 431,434 ---- *************** *** 657,660 **** --- 614,660 ---- AC_SUBST(LAPACK_DIR) + # Check for UMFPACK library. + + UMFPACK_LIBS= + AC_SUBST(UMFPACK_LIBS) + + AC_ARG_WITH(umfpack, + [ --without-umfpack don't use UMFPACK, disable some sparse functionality], + with_umfpack=$withval, with_umfpack=yes) + + if test "$with_umfpack" = "yes"; then + have_umfpack_header=no + with_umfpack=no + AC_CHECK_HEADER(umfpack/umfpack.h, [have_umfpack_header=yes; break]) + if test "$have_umfpack_header" = yes; then + AC_CHECK_LIB(amd, amd_postorder, [ + LIBS="-lamd $LIBS" + AC_CHECK_LIB(umfpack, umfpack_zi_get_determinant, [ + LIBS="-lumfpack $LIBS" + UMFPACK_LIBS="-lumfpack"; with_umfpack=yes], [ + ## Invalidate the cache. + $as_unset ac_cv_lib_umfpack_umfpack_zi_get_determinant + AC_CHECK_LIB(umfpack, umfpack_zi_get_determinant, [ + LIBS="-lumfpack -lcblas $LIBS" + UMFPACK_LIBS="-lumfpack -lcblas"; with_umfpack=yes], [], -lcblas)])]) + if test "$with_umfpack" = yes; then + # For now the code needed for this is not in umfpack, will add + # a test later that will probably have to be based on version + # numbers as there is no interface changes that are visible at + # compile time. + with_umfpack_split=no + fi + fi + fi + + if test "$with_umfpack" = yes; then + AC_DEFINE(HAVE_UMFPACK, 1, [Define if the UMFPACK library is used.]) + if test "$with_umfpack_split" = yes; then + AC_DEFINE(UMFPACK_SEPARATE_SPLIT, 1, [Define if the UMFPACK Complex solver allow matrix and RHS to be split independently]) + fi + else + warn_umfpack="UMFPACK not found. This will result in some lack of functionality for sparse matrices." + fi + ### Handle shared library options. *** octave/ChangeLog 2005-03-17 12:05:39.000000000 -0700 --- octave/ChangeLog.sgs 2005-03-17 14:47:32.109051048 -0700 *************** *** 1,2 **** --- 1,9 ---- + 2005-03-17 Shan G. Smith + + * configure.in: Move check for -lumfpack to after check for blas. + If umfpack is built as a shared lib and linked with a shared blas + the test for $sgemm succeeds (since -lumfpack is added to $LIBS) + and the check for a blas is not done. + 2005-03-17 John W. Eaton Configuration (please do not edit this section): ----------------------------------------------- uname output: Linux galileo.shan 2.6.9-1.667smp #1 SMP Tue Nov 2 15:09:11 EST 2004 x86_64 x86_64 x86_64 GNU/Linux configure opts: '--prefix=/usr/local' '--infodir=/usr/share/info' '--enable-shared' '--enable-dl' '--enable-rpath' '--with-fftw' '--build=x86_64-intel-linux-gnu' '--target=x86_64-intel-linux-gnu' '--with-gnu-ld' '--libdir=/usr/local/lib64' '--with-blas=-latlas -lf77blas -lcblas' 'CC=gcc' 'CXX=g++' 'F77=g77' 'build_alias=x86_64-intel-linux-gnu' 'target_alias=x86_64-intel-linux-gnu' Fortran compiler: g77 FFLAGS: -O F2C: F2CFLAGS: FLIBS: -L/usr/lib/gcc/x86_64-redhat-linux/3.4.2 -L/usr/lib/gcc/x86_64-redhat-linux/3.4.2/../../../../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/3.4.2/../../.. -L/lib/../lib64 -L/usr/lib/../lib64 -lumfpack -lamd -lfrtbegin -lg2c -lm -lgcc_s CPPFLAGS: INCFLAGS: -I. -I. -I./liboctave -I./src -I./libcruft/misc C compiler: gcc, version 3.4.2 20041017 (Red Hat 3.4.2-6.fc3) CFLAGS: -g -O2 CPICFLAG: -fPIC C++ compiler: g++, version 3.4.2 CXXFLAGS: -g -O2 CXXPICFLAG: -fPIC LD_CXX: g++ LDFLAGS: LIBFLAGS: -L. RLD_FLAG: -Wl,-rpath -Wl,/usr/local/lib64/octave-2.9.0 BLAS_LIBS: -llapack -latlas -lf77blas -lcblas FFTW_LIBS: -lfftw3 LIBS: -lreadline -lncurses -ldl -lumfpack -lamd -lm LEXLIB: LIBPLPLOT: LIBDLFCN: LIBGLOB: %OCTAVE_CONF_LIBGLOB% SED: /bin/sed DEFS: -DPACKAGE_NAME="" -DPACKAGE_TARNAME="" -DPACKAGE_VERSION="" -DPACKAGE_STRING="" -DPACKAGE_BUGREPORT="" -DOCTAVE_SOURCE=1 -D_GNU_SOURCE=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSEPCHAR=1 -DSEPCHAR_STR=":" -D__NO_MATH_INLINES=1 -DCXX_NEW_FRIEND_TEMPLATE_DECL=1 -DCXX_ISO_COMPLIANT_LIBRARY=1 -DCXX_ABI=gnu_v3 -DHAVE_LIBM=1 -DHAVE_FFTW3=1 -DHAVE_UMFPACK=1 -DHAVE_IEEE754_DATA_FORMAT=1 -DF77_FUNC(name,NAME)=name ## _ -DF77_FUNC_(name,NAME)=name ## __ -DHAVE_BLAS=1 -DHAVE_GETHOSTNAME=1 -DHAVE_GETPWNAM=1 -DHAVE_DEV_T=1 -DHAVE_INO_T=1 -DHAVE_NLINK_T=1 -DHAVE_NLINK_T=1 -DHAVE_LONG_LONG_INT=1 -DHAVE_UNSIGNED_LONG_LONG_INT=1 -DHAVE_SIGSET_T=1 -DHAVE_SIG_ATOMIC_T=1 -DSIZEOF_SHORT=2 -DSIZEOF_INT=4 -DSIZEOF_LONG=8 -DSIZEOF_LONG_LONG=8 -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 -DNPOS=std::string::npos -DHAVE_PLACEMENT_DELETE=1 -DHAVE_DYNAMIC_AUTO_ARRAYS=1 -DSTDC_HEADERS=1 -DHAVE_DIRENT_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_ASSERT_H=1 -DHAVE_CURSES_H=1 -DHAVE_DLFCN_H=1 -DHAVE_FCNTL_H=1 -DHAVE_FLOAT_H=1 -DHAVE_GRP_H=1 -DHAVE_LIMITS_H=1 -DHAVE_MEMORY_H=1 -DHAVE_NCURSES_H=1 -DHAVE_POLL_H=1 -DHAVE_PWD_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_POLL_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_SYS_SELECT_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_TIMES_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_UTSNAME_H=1 -DHAVE_TERMCAP_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SSTREAM=1 -DHAVE_TERMIO_H=1 -DHAVE_SGTTY_H=1 -DHAVE_ATEXIT=1 -DHAVE_BASENAME=1 -DHAVE_BCOPY=1 -DHAVE_BZERO=1 -DHAVE_CANONICALIZE_FILE_NAME=1 -DHAVE_DUP2=1 -DHAVE_ENDGRENT=1 -DHAVE_ENDPWENT=1 -DHAVE_EXECVP=1 -DHAVE_FCNTL=1 -DHAVE_FORK=1 -DHAVE_GETCWD=1 -DHAVE_GETEGID=1 -DHAVE_GETEUID=1 -DHAVE_GETGID=1 -DHAVE_GETGRENT=1 -DHAVE_GETGRGID=1 -DHAVE_GETGRNAM=1 -DHAVE_GETPGRP=1 -DHAVE_GETPID=1 -DHAVE_GETPPID=1 -DHAVE_GETPWENT=1 -DHAVE_GETPWUID=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_GETUID=1 -DHAVE_GETWD=1 -DHAVE_KILL=1 -DHAVE_LINK=1 -DHAVE_LOCALTIME_R=1 -DHAVE_LSTAT=1 -DHAVE_MEMMOVE=1 -DHAVE_MKDIR=1 -DHAVE_MKFIFO=1 -DHAVE_MKSTEMP=1 -DHAVE_ON_EXIT=1 -DHAVE_PIPE=1 -DHAVE_POLL=1 -DHAVE_PUTENV=1 -DHAVE_RAISE=1 -DHAVE_READLINK=1 -DHAVE_RENAME=1 -DHAVE_RINDEX=1 -DHAVE_RMDIR=1 -DHAVE_ROUND=1 -DHAVE_SELECT=1 -DHAVE_SETGRENT=1 -DHAVE_SETPWENT=1 -DHAVE_SETVBUF=1 -DHAVE_SIGACTION=1 -DHAVE_SIGLONGJMP=1 -DHAVE_SIGPENDING=1 -DHAVE_SIGPROCMASK=1 -DHAVE_SIGSUSPEND=1 -DHAVE_STAT=1 -DHAVE_STRCASECMP=1 -DHAVE_STRDUP=1 -DHAVE_STRERROR=1 -DHAVE_STRFTIME=1 -DHAVE_STRNCASECMP=1 -DHAVE_STRPTIME=1 -DHAVE_SYMLINK=1 -DHAVE_TEMPNAM=1 -DHAVE_UMASK=1 -DHAVE_UNLINK=1 -DHAVE_USLEEP=1 -DHAVE_VFPRINTF=1 -DHAVE_VSPRINTF=1 -DHAVE_VSNPRINTF=1 -DHAVE_WAITPID=1 -DHAVE_LIBDL=1 -DHAVE_DLOPEN=1 -DHAVE_DLSYM=1 -DHAVE_DLERROR=1 -DHAVE_DLCLOSE=1 -DHAVE_DLOPEN_API=1 -DENABLE_DYNAMIC_LINKING=1 -DHAVE_TIMEVAL=1 -DHAVE_FINITE=1 -DHAVE_ISNAN=1 -DHAVE_ISINF=1 -DHAVE_COPYSIGN=1 -DHAVE_DECL_SIGNBIT=1 -DHAVE_ACOSH=1 -DHAVE_ASINH=1 -DHAVE_ATANH=1 -DHAVE_ERF=1 -DHAVE_ERFC=1 -DHAVE_STRUCT_STAT_ST_BLKSIZE=1 -DHAVE_STRUCT_STAT_ST_BLOCKS=1 -DHAVE_STRUCT_STAT_ST_RDEV=1 -DHAVE_STRUCT_TM_TM_ZONE=1 -DHAVE_TM_ZONE=1 -DUSE_READLINE=1 -DEXCEPTION_IN_MATH=1 -DRETSIGTYPE=void -DSYS_SIGLIST_DECLARED=1 -DHAVE_SYS_SIGLIST=1 -DHAVE_POSIX_SIGNALS=1 -DHAVE_GETRUSAGE=1 -DHAVE_TIMES=1 -DYYTEXT_POINTER=1 -DGNUPLOT_BINARY="gnuplot" -DGNUPLOT_HAS_FRAMES=1 ------------------------------------------------------------- Octave is freely available under the terms of the GNU GPL. Octave's home on the web: http://www.octave.org How to fund new projects: http://www.octave.org/funding.html Subscription information: http://www.octave.org/archive.html -------------------------------------------------------------