evaleev / libint

Libint: high-performance library for computing Gaussian integrals in quantum mechanics
Other
225 stars 95 forks source link

Failing to build eritest #150

Closed mclement1 closed 4 years ago

mclement1 commented 4 years ago

When building libint-2.7.0-beta-1 on MacOS (Mojave), eritest always fails to be built. I have installed GNU ar and am using that. I have also updated ninja from v 1.8.2 to v 1.9.0. My build script, which is only slightly modified from that which worked for libint-2.6.0, is:

export LIBINT_RELID=2.7.0-beta.1
export PREFIX=/Users/mcclement/software/${LIBINT_RELID}/install
if test ! -d build/libint-${LIBINT_RELID}; then
  mkdir -p build
  cd build
  wget https://github.com/evaleev/libint/releases/download/v${LIBINT_RELID}/libint-${LIBINT_RELID}.tgz && tar -xvzf libint-${LIBINT_RELID}.tgz && cd libint-${LIBINT_RELID}
  cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_AR=/usr/local/opt/binutils/bin/ar -DCMAKE_INSTALL_PREFIX=$PREFIX -DCMAKE_MODULE_PATH=/usr/local/share/cmake/Modules -DBUILD_SHARED_LIBS=ON
  cmake --build . --target check -j ${NPROC}
  cmake --build . --target install 
  cmake --build . --target clean
  cd ../..
fi

The errors are numerous. Here are the first several lines:

1: FAILED: CMakeFiles/eritest.dir/tests/eri/test.cc.o
1: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++  -D__COMPILING_LIBINT2 -Itests/eri -Iinclude -Iinclude/libint2 -O3 -DNDEBUG -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -mmacosx-version-min=10.14 -MD -MT CMakeFiles/eritest.dir/tests/eri/test.cc.o -MF CMakeFiles/eritest.dir/tests/eri/test.cc.o.d -o CMakeFiles/eritest.dir/tests/eri/test.cc.o -c tests/eri/test.cc
1: In file included from tests/eri/test.cc:29:
1: In file included from include/libint2.h:35:
1: In file included from include/libint2/util/generated/libint2_types.h:29:
1: In file included from include/libint2_types.h:25:
1: include/libint2/util/intrinsic_operations.h:36:10: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions]
1:   inline auto fma_plus(X x, Y y, Z z) -> decltype(x*y+z) {
1:          ^
1: include/libint2/util/intrinsic_operations.h:36:10: error: 'auto' not allowed in function return type
1:   inline auto fma_plus(X x, Y y, Z z) -> decltype(x*y+z) {
1:          ^~~~
1: include/libint2/util/intrinsic_operations.h:36:38: error: expected ';' at end of declaration
1:   inline auto fma_plus(X x, Y y, Z z) -> decltype(x*y+z) {
1:                                      ^
1:                                      ;
1: include/libint2/util/intrinsic_operations.h:36:39: error: cannot use arrow operator on a type
1:   inline auto fma_plus(X x, Y y, Z z) -> decltype(x*y+z) {
1:                                       ^
1: include/libint2/util/intrinsic_operations.h:42:10: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions]
1:   inline auto fma_minus(X x, Y y, Z z) -> decltype(x*y-z) {
1:          ^
1: include/libint2/util/intrinsic_operations.h:42:10: error: 'auto' not allowed in function return type
1:   inline auto fma_minus(X x, Y y, Z z) -> decltype(x*y-z) {
1:          ^~~~
1: include/libint2/util/intrinsic_operations.h:42:39: error: expected ';' at end of declaration
1:   inline auto fma_minus(X x, Y y, Z z) -> decltype(x*y-z) {
1:                                       ^
1:                                       ;
1: include/libint2/util/intrinsic_operations.h:42:40: error: cannot use arrow operator on a type
1:   inline auto fma_minus(X x, Y y, Z z) -> decltype(x*y-z) {
mclement1 commented 4 years ago

Update: Needed to explicitly specify c++14 in cmake

evaleev commented 4 years ago

should not be necessary to manually set the standard, this is a real bug, fix coming

evaleev commented 4 years ago

resolved via ef04e4e4215bd93ae31cff682daeeefbe4e356fa