mpimd-csc / flexiblas

FlexiBLAS - A BLAS and LAPACK wrapper library with runtime exchangeable backends. This is only a mirror of https://gitlab.mpi-magdeburg.mpg.de/software/flexiblas-release
https://www.mpi-magdeburg.mpg.de/projects/flexiblas
GNU Lesser General Public License v3.0
36 stars 7 forks source link

Build failure on macOS #10

Closed ViralBShah closed 2 years ago

ViralBShah commented 3 years ago

I thought that the build would pick up the default Apple BLAS. This is without any extra arguments to cmake.

-- Use user defined settings for Apple
-- Build extra BLAS interface: Apple
-- Libs: 1
-- Performing Test ZDOTC_MKL
-- Performing Test ZDOTC_MKL - Failed
-- Looking for flexiblas_exit
-- Looking for flexiblas_exit - not found
-- Looking for Fortran DAXPY
-- Looking for Fortran DAXPY - not found
-- Looking for Fortran MKL_DOMATCOPY
-- Looking for Fortran MKL_DOMATCOPY - not found
-- Looking for cblas_daxpy
-- Looking for cblas_daxpy - not found
CMake Error at src/CMakeLists.txt:486 (MESSAGE):
  Provided BLAS library does not contain a BLAS implementation or does not
  link.
ViralBShah commented 3 years ago

Here I explicitly provide reference BLAS and LAPACK.

➜  build git:(master) cmake .. -DSYS_BLAS_LIBRARY=/Users/viral/repos/lapack/build/lib/libblas.a -DSYS_LAPACK_LIBRARY=/Users/viral/repos/lapack/build/lib/liblapack.a
-- The C compiler identification is AppleClang 12.0.0.12000032
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- The Fortran compiler identification is GNU 10.2.0
-- Checking whether Fortran compiler has -isysroot
-- Checking whether Fortran compiler has -isysroot - yes
-- Checking whether Fortran compiler supports OSX deployment target flag
-- Checking whether Fortran compiler supports OSX deployment target flag - yes
-- Detecting Fortran compiler ABI info
-- Detecting Fortran compiler ABI info - done
-- Check for working Fortran compiler: /usr/local/bin/gfortran - skipped
-- Checking whether /usr/local/bin/gfortran supports Fortran 90
-- Checking whether /usr/local/bin/gfortran supports Fortran 90 - yes
-- SYSCONFDIR: /usr/local/etc
-- LIBDIR:     /usr/local/lib
-- BINDIR:     /usr/local/bin
-- INCLUDEDIR: /usr/local/include
-- MANDIR:     /usr/local/share/man
-- Compiler_ID: Clang
-- FCompiler_ID: GNU
-- Fortran compiler supports -frecursive
-- Fortran compiler supports -fPIC
-- Fortran compiler supports -Wimplicit-procedure
-- Fortran compiler supports -Wall
-- Fortran compiler supports -Wunused
-- Fortran compiler supports -Warray-temporaries
-- Fortran compiler supports -fbacktrace
-- Fortran compiler supports -Wshadow
-- Detecting Fortran/C Interface
-- Detecting Fortran/C Interface - Found GLOBAL and MODULE mangling
-- Verifying Fortran/C Compiler Compatibility
-- Verifying Fortran/C Compiler Compatibility - Success
-- Check for Thread Local Storage
-- Performing Test HAVE_THREAD_LOCAL
-- Performing Test HAVE_THREAD_LOCAL - Success
-- Performing Test HAVE__THREAD_LOCAL
-- Performing Test HAVE__THREAD_LOCAL - Success
-- Performing Test HAVE_GNU_THREAD_LOCAL
-- Performing Test HAVE_GNU_THREAD_LOCAL - Success
-- Looking for include file dlfcn.h
-- Looking for include file dlfcn.h - found
-- Looking for include file sys/sysmacro.h
-- Looking for include file sys/sysmacro.h - not found
-- Looking for include file sys/stat.h
-- Looking for include file sys/stat.h - found
-- Looking for RTLD_GLOBAL
-- Looking for RTLD_GLOBAL - found
-- Looking for RTLD_DEEPBIND
-- Looking for RTLD_DEEPBIND - not found
-- Looking for RTLD_NOW
-- Looking for RTLD_NOW - found
-- Looking for dlopen
-- Looking for dlopen - found
-- Looking for dlopen
-- Looking for dlopen - found
-- Check for __attribute__((constructor))
-- Looking for attribute:  constructor  - works
-- Check for __attribute__((alias("foo")))
-- Looking for attribute alias("foo") - not found
-- Check for __attribute__((visibility("hidden")))
-- Looking for attribute:  visibility("hidden")  - works
-- Check for __attribute__((visibility("default")))
-- Looking for attribute:  visibility("default")  - works
-- Check for __attribute__((unused))
-- Looking for attribute:  unused  - works
CMake Deprecation Warning at libcscutils/CMakeLists.txt:2 (CMAKE_MINIMUM_REQUIRED):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

-- libcscutils in project build

-- LIBCSCUTILS Features
-- Enable module: inifile
-- Enable module: ds

-- Check Generic Functionality
-- Check for __attribute__((constructor))
-- Looking for attribute:  constructor  - works
-- Check for __attribute__((deprecated))
-- Looking for attribute:  deprecated  - works
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Looking for pthread_yield
-- Looking for pthread_yield
-- Looking for pthread_yield - not found
-- Looking for pthread_yield
-- Looking for pthread_yield - not found
-- Looking for pthread_yield
-- Looking for pthread_yield - not found
-- Looking for pthread_yield
-- Looking for pthread_yield - not found
-- Looking for pthread_yield
-- Looking for pthread_yield - not found
-- Looking for pthread_yield
-- Looking for pthread_yield - not found
-- Looking for pthread_yield
-- Looking for pthread_yield - not found
-- Looking for pthread_yield - not found.
-- Looking for include file execinfo.h
-- Looking for include file execinfo.h - found
-- Looking for backtrace
-- Looking for backtrace - found
-- Looking for backtrace_symbols
-- Looking for backtrace_symbols - found
-- Enable csc_show_backtrace.
-- Looking for strnlen
-- Looking for strnlen
-- Looking for strnlen - found
-- Looking for strnlen - found (using _NONE_).
-- Looking for strndup
-- Looking for strndup
-- Looking for strndup - found
-- Looking for strndup - found (using _NONE_).
-- Looking for include file sys/ioctl.h
-- Looking for include file sys/ioctl.h - found
-- Looking for include file unistd.h
-- Looking for include file unistd.h - found

-- Features for CSC-INIFILE
-- Looking for getline
-- Looking for getline
-- Looking for getline - found
-- Looking for getline - found (using _NONE_).
-- Looking for realpath
-- Looking for realpath
-- Looking for realpath - found
-- Looking for realpath - found (using _NONE_).

-- External Libraries
-- Could NOT find CPUFREQ (missing: CPUFREQ_LIBRARIES CPUFREQ_INCLUDE_DIR) 
CPUFREQ not found. Either cpufreq.h or libcpupower.so is missing.
-- Looking for strdup
-- Looking for strdup
-- Looking for strdup - found
-- Looking for strdup - found (using _NONE_).
-- Looking for realpath
-- Looking for realpath
-- Looking for realpath - found
-- Looking for realpath - found (using _NONE_).
-- Use external LAPACK from /Users/viral/repos/lapack/build/lib/liblapack.a with assumed API_VERSION 3.9.0
-- Use system provided NETLIB BLAS for fallback generation. SYS_BLAS_LIBRARY = /Users/viral/repos/lapack/build/lib/libblas.a
-- Use system provided LAPACK for fallback generation. SYS_LAPACK_LIBRARY = /Users/viral/repos/lapack/build/lib/liblapack.a
-- Could NOT find OpenBLASSerial (missing: OpenBLASSerial_LIBRARY) 
-- Found OpenBLASSerial but deactivated manually.
-- Could NOT find OpenBLASPThread (missing: OpenBLASPThread_LIBRARY) 
-- Found OpenBLASPThread but deactivated manually.
-- Could NOT find OpenBLASOpenMP (missing: OpenBLASOpenMP_LIBRARY) 
-- Found OpenBLASOpenMP but deactivated manually.
-- Could NOT find BlisSerial (missing: BlisSerial_LIBRARY) 
-- Found BlisSerial but deactivated manually.
-- Could NOT find BlisPThread (missing: BlisPThread_LIBRARY) 
-- Found BlisPThread but deactivated manually.
-- Could NOT find BlisOpenMP (missing: BlisOpenMP_LIBRARY) 
-- Found BlisOpenMP but deactivated manually.
-- Search for MKL: mkl_gf_lp64 mkl_sequential mkl_core
-- Found MklSerial but deactivated manually.
-- Search for MKL: mkl_gf_lp64 mkl_gnu_thread mkl_core
-- Found MklOpenMP but deactivated manually.
-- MKL_TBB depends on TBB. Not Found.
-- Found MklTBB but deactivated manually.
-- 
-- Search for ATLAS
-- A library with BLAS API not found. Please specify library location.
-- 
-- Use user defined settings for Apple
-- Build extra BLAS interface: Apple
-- Libs: 1
-- Performing Test ZDOTC_MKL
-- Performing Test ZDOTC_MKL - Failed
-- Looking for flexiblas_exit
-- Looking for flexiblas_exit - not found
-- Looking for Fortran DAXPY
-- Looking for Fortran DAXPY - not found
-- Looking for Fortran MKL_DOMATCOPY
-- Looking for Fortran MKL_DOMATCOPY - not found
-- Looking for cblas_daxpy
-- Looking for cblas_daxpy - not found
CMake Error at src/CMakeLists.txt:486 (MESSAGE):
  Provided BLAS library does not contain a BLAS implementation or does not
  link.
Call Stack (most recent call first):
  src/CMakeLists.txt:609 (Build_Extra_BLAS)

-- Configuring incomplete, errors occurred!
See also "/Users/viral/repos/flexiblas/build/CMakeFiles/CMakeOutput.log".
See also "/Users/viral/repos/flexiblas/build/CMakeFiles/CMakeError.log".
grisuthedragon commented 3 years ago

Hi Viral, the problem with MacOS is that I do not have access to any system running on MacOS. I think that these errors are related to the cmake part. The real C code should run since I am run FreeBSD tests from time to time. I will look in january if I find a MacOS system at work for debugging this issue.

ViralBShah commented 3 years ago

It may be possible for us to arrange for access to one of the Julia macOS build machines, if that will help when you are ready to look into it.

grisuthedragon commented 3 years ago

@ViralBShah I keep that in mind and we solve this begin of January.

grisuthedragon commented 3 years ago

I fixed the problem on Big Sur in my private development codes. MacOS is in general a bit more difficult than Linux/BSD since it uses mach binaries instead of ELF binaries and that made some tricks with aliases impossible. So it was not only cmake related. I will perform some more testing and than I create a new release with the fix.

grisuthedragon commented 2 years ago

Closed in 3.1.0