0

I am building Octave from source on OS X 10.11.7 with clang. clang is bringing in /usr/local/include/math.h which is causing compiler errors:


In file included from libinterp/dldfcn/__delaunayn__.cc:54:
In file included from ./liboctave/array/dMatrix.h:31:
In file included from liboctave/numeric/DET.h:33:
In file included from liboctave/numeric/lo-mappers.h:35:
./liboctave/util/lo-ieee.h:93:59: error: expected unqualified-id
inline int __lo_ieee_float_finite (float x) { return std::isfinite (x); }
                                                          ^
/usr/local/include/math.h:155:5: note: expanded from macro 'isfinite'
    ( sizeof(x) == sizeof(float)  ? __inline_isfinitef((float)(x))  

I don't know how to get clang++ to stop including /usr/local/include/math.h (it should be using /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain//usr/include/c++/v1/math.h)

$ find /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ -name math.h -ls
12887319657       16 -rw-r--r--    1 root             wheel               50651 Dec 21 10:04 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain//usr/include/c++/v1/math.h

When I tried the compiler flags, -nostdinc and -nostdinc++ the octave configure failed.

$ clang --verbose
Apple clang version 12.0.0 (clang-1200.0.32.29)
Target: x86_64-apple-darwin19.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

$ xcrun --show-sdk-path
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk
xcode-s(base) MacBook-Pro:octave davidlaxer$ xcode-select -p
/Applications/Xcode.app/Contents/Developer
(base) MacBook-Pro:octave davidlaxer$ clang++ -Wp,-v -x c++ -std=c++11 - -fsyntax-only < /dev/null
clang -cc1 version 12.0.0 (clang-1200.0.32.29) default target x86_64-apple-darwin19.6.0
ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/local/include"
ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/Library/Frameworks"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include
 /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
 /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks (framework directory)
End of search list.

./configure --with-libiconv-prefix=/opt/local CXXFLAGS="-std=c++11 -stdlib=libc++"  CPPFLAGS="-I/Users/davidlaxer/SuiteSparse/include -I/opt/local/include -I/opt/local/libexec/qt5/include -I/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/include" LDFLAGS="-L/Users/davidlaxer/SuiteSparse/lib/ -L/opt/local/lib -L/opt/local/libexec/qt5/lib -L/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/lib" DYLD_LIBRARY_PATH="-L/opt/local/lib -L/opt/local/libexec/qt5/lib -L/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/lib" LD_LIBRARY_PATH="-L/Users/davidlaxer/SuiteSparse/lib/ -L/opt/local/lib -L/opt/local/libexec/qt5/lib -L/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/lib" --with-suitesparseconfig-includedir=/Users/davidlaxer/SuiteSparse/include --with-suitesparseconfig-libdir=/Users/davidlaxer/SuiteSparse/lib --disable-readline  --with-sundials_ida-includedir=/opt/local/include/sundials --with-sundials_ida-libdir=/opt/local/lib/ --with-qt=5

...
Octave is now configured for x86_64-apple-darwin19.6.0

  Source directory:              .
  Installation prefix:           /usr/local
  C compiler:                    /usr/bin/clang  -D_THREAD_SAFE -pthread  -Wall -W -Wshadow -Wformat -Wpointer-arith -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wcast-align -Wcast-qual -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
  C++ compiler:                  /usr/bin/clang++  -D_THREAD_SAFE -pthread  -Wall -W -Wshadow -Woverloaded-virtual -Wold-style-cast -Wformat -Wpointer-arith -Wwrite-strings -Wcast-align -Wcast-qual -std=c++11 -stdlib=libc++
  Fortran compiler:              gfortran -g -O2 -std=legacy
  Fortran libraries:              -L/Users/davidlaxer/SuiteSparse/lib/ -L/opt/local/lib -L/opt/local/libexec/qt5/lib -L/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/lib -L/opt/local/lib/gcc10/gcc/x86_64-apple-darwin19/10.2.0 -L/opt/local/lib/gcc10/gcc/x86_64-apple-darwin19/10.2.0/../../.. -lgfortran -lquadmath -lm
  Lex libraries:                 
  LIBS:                           -lm 
  LDFLAGS:                       -L/Users/davidlaxer/SuiteSparse/lib/ -L/opt/local/lib -L/opt/local/libexec/qt5/lib -L/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/lib
  Extra LDFLAGS:                 

  AMD CPPFLAGS:                  
  AMD LDFLAGS:                   
  AMD libraries:                 -lamd
  ARPACK CPPFLAGS:               -I/opt/local/include/arpack
  ARPACK LDFLAGS:                -L/opt/local/lib
  ARPACK libraries:              -larpack
  BLAS libraries:                -lopenblas
  BZ2 CPPFLAGS:                  
  BZ2 LDFLAGS:                   
  BZ2 libraries:                 -lbz2
  CAMD CPPFLAGS:                 
  CAMD LDFLAGS:                  
  CAMD libraries:                -lcamd
  CARBON libraries:              -framework Carbon
  CCOLAMD CPPFLAGS:              
  CCOLAMD LDFLAGS:               
  CCOLAMD libraries:             -lccolamd
  CHOLMOD CPPFLAGS:              
  CHOLMOD LDFLAGS:               
  CHOLMOD libraries:             -lcholmod
  COLAMD CPPFLAGS:               
  COLAMD LDFLAGS:                
  COLAMD libraries:              -lcolamd
  CURL CPPFLAGS:                 
  CURL LDFLAGS:                  
  CURL libraries:                -lcurl
  CXSPARSE CPPFLAGS:             
  CXSPARSE LDFLAGS:              
  CXSPARSE libraries:            
  DL libraries:                  -ldl
  FFTW3 CPPFLAGS:                -I/opt/local/include
  FFTW3 LDFLAGS:                 -L/opt/local/lib
  FFTW3 libraries:               -lfftw3_threads -lfftw3
  FFTW3F CPPFLAGS:               -I/opt/local/include
  FFTW3F LDFLAGS:                -L/opt/local/lib
  FFTW3F libraries:              -lfftw3f_threads -lfftw3f
  FLTK CPPFLAGS:                 -I/opt/local/include
  FLTK LDFLAGS:                  -L/opt/local/lib -Wl,-headerpad_max_install_names -Wl,-syslibroot,/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -framework OpenGL -framework Cocoa
  FLTK libraries:                -lfltk_gl -lfltk -lpthread
  fontconfig CPPFLAGS:           -I/opt/local/include -I/opt/local/include/ossp -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include
  fontconfig libraries:          -lfontconfig -lfreetype
  FreeType2 CPPFLAGS:            -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include
  FreeType2 libraries:           -L/opt/local/lib -lfreetype
  GLPK CPPFLAGS:                 
  GLPK LDFLAGS:                  
  GLPK libraries:                -lglpk
  HDF5 CPPFLAGS:                 
  HDF5 LDFLAGS:                  
  HDF5 libraries:                -lhdf5
  Java home:                     /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
  Java JVM path:                 /Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/lib/server
  Java CPPFLAGS:                 -I/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/include/darwin
  Java libraries:                
  KLU CPPFLAGS:                  
  KLU LDFLAGS:                   
  KLU libraries:                 -lklu
  LAPACK libraries:              
  LLVM CPPFLAGS:                 
  LLVM LDFLAGS:                  
  LLVM libraries:                
  Magick++ CPPFLAGS:             -I/opt/local/include/GraphicsMagick
  Magick++ LDFLAGS:              -L/opt/local/lib
  Magick++ libraries:            -lGraphicsMagick++ -lGraphicsMagick
  OpenGL libraries:              -framework OpenGL
  PCRE CPPFLAGS:                 -I/opt/local/include
  PCRE LDFLAGS:                  -L/opt/local/lib
  PCRE libraries:                -lpcre
  PortAudio CPPFLAGS:            -I/opt/local/include
  PortAudio LDFLAGS:             -L/opt/local/lib
  PortAudio libraries:           -lportaudio
  PTHREAD flags:                 -D_THREAD_SAFE -pthread
  PTHREAD libraries:             
  QHULL CPPFLAGS:                
  QHULL LDFLAGS:                 
  QHULL libraries:               -lqhull
  QRUPDATE CPPFLAGS:             
  QRUPDATE LDFLAGS:              
  QRUPDATE libraries:            -lqrupdate
  Qt CPPFLAGS:                   -I/opt/local/libexec/qt5/lib/QtNetwork.framework/Headers -I/opt/local/libexec/qt5/include -I/opt/local/libexec/qt5/lib/QtPrintSupport.framework/Headers -I/opt/local/libexec/qt5/include -I/opt/local/libexec/qt5/lib/QtHelp.framework/Headers -I/opt/local/libexec/qt5/include -I/opt/local/libexec/qt5/lib/QtWidgets.framework/Headers -I/opt/local/libexec/qt5/include -I/opt/local/libexec/qt5/lib/QtGui.framework/Headers -I/opt/local/libexec/qt5/include -I/opt/local/libexec/qt5/lib/QtSql.framework/Headers -I/opt/local/libexec/qt5/include -I/opt/local/libexec/qt5/lib/QtXml.framework/Headers -I/opt/local/libexec/qt5/include -I/opt/local/libexec/qt5/lib/QtCore.framework/Headers -I/opt/local/libexec/qt5/include
  Qt LDFLAGS:                    -F/opt/local/libexec/qt5/lib 
  Qt GUI libraries:              -framework QtNetwork -framework QtPrintSupport -framework QtHelp -framework QtWidgets -framework QtGui -framework QtSql -framework QtXml -framework QtCore 
  Qt OpenGL libraries:           -framework QtOpenGL -framework QtWidgets -framework QtGui -framework QtCore 
  Qt moc:                        moc 
  Qt uic:                        uic 
  Qt rcc:                        rcc 
  Qt lrelease:                   lrelease 
  Qt qcollectiongenerator:       qcollectiongenerator 
  Qt qhelpgenerator:             qhelpgenerator 
  READLINE libraries:            
  Sndfile CPPFLAGS:              -I/opt/local/include
  Sndfile LDFLAGS:               -L/opt/local/lib
  Sndfile libraries:             -lsndfile
  SPQR CPPFLAGS:                 
  SPQR LDFLAGS:                  
  SPQR libraries:                -lspqr
  SuiteSparse config libraries:  -lsuitesparseconfig
  SUNDIALS IDA CPPFLAGS:         
  SUNDIALS IDA LDFLAGS:          
  SUNDIALS IDA libraries:        
  SUNDIALS NVECTOR CPPFLAGS:     
  SUNDIALS NVECTOR LDFLAGS:      
  SUNDIALS NVECTOR libraries:    
  SUNLINSOL KLU CPPFLAGS:        
  SUNLINSOL KLU LDFLAGS:         
  SUNLINSOL KLU libraries:       
  TERM libraries:                -lncurses
  UMFPACK CPPFLAGS:              
  UMFPACK LDFLAGS:               
  UMFPACK libraries:             -lumfpack
  X11 include flags:             
  X11 libraries:                 -lX11
  Z CPPFLAGS:                    
  Z LDFLAGS:                     
  Z libraries:                   -lz

dbl001
  • 2,259
  • 8
  • 39
  • 53
  • Does `./configure --help` offer any information that might help? Perhaps for adding an entry to LDFLAGS? Or PKG_CONFIG_SYSROOT_DIR? – Tasos Papastylianou Feb 24 '21 at 05:23
  • clang++ -E ... output (above) 1) is ignoring two non-existent directories. Where are they coming from (hint- not environment variables I can see). 2) bracket search rule starts with /usr/local/include. Why? I've tried changing the search order with my CXXFLAGS =-I rules, but they don't change some higher precedence rules. How do I see the rules and/or modify them to use: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/, instead of /usr/local/include? Is it a '-std' rule? C++11? – dbl001 Feb 24 '21 at 15:24
  • From 'man clang++': CPATH If this environment variable is present, it is treated as a delimited list of paths to be added to the default system include path list. The delimiter is the platform dependent delimiter, as used in the PATH environment variable. – dbl001 Feb 24 '21 at 15:31
  • What's the 'default system include path list'? How can I modify it? – dbl001 Feb 24 '21 at 15:32
  • I don't know about clang, but for your last question this may be of use: https://stackoverflow.com/questions/8920640/how-do-i-know-the-default-include-directories-default-link-directories-and – Tasos Papastylianou Feb 24 '21 at 18:50
  • Also, I think stuff like CPPFLAGS etc is intended to be passed as an '[environmental] variable', not as a parameter. In other words instead of `./configure CPPFLAGS="-I/some/include/dir" --prefix=/opt/stuff` etc you should be doing `CPPFLAGS="-I/some/include/dir" ./configure --prefix=/opt/stuff` – Tasos Papastylianou Feb 24 '21 at 18:54
  • config.log shows that the CXXFLAGS were properly set from the './configure' statement – dbl001 Feb 24 '21 at 21:53
  • /usr/bin/clang++ -o conftest -std=c++11 -stdlib=libc++ -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/ -I/Users/davidlaxer/SuiteSparse/include -I/opt/local/include -I/opt/local/libexec/qt5/include -I/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/include -Wall -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/ -I/Users/davidlaxer/SuiteSparse/include -I/opt/local/include -I/opt/local/libexec/qt5/include -I/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/include ... – dbl001 Feb 24 '21 at 21:54
  • clang++ -Wp,-v -x c++ -std=c++11 - -fsyntax-only < /dev/null ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/local/include" ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/Library/Frameworks" #include "..." search starts here: #include <...> search starts here: /usr/local/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include – dbl001 Feb 24 '21 at 22:11

1 Answers1

0

After searching for similar issues ... E.g. - https://github.com/nlohmann/json/issues/2087

I had to change std=c++11 to std=c++17:

CXXFLAGS="-std=c++11 -stdlib=libc++ -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk"

dbl001
  • 2,259
  • 8
  • 39
  • 53