Stratimikos: Amesos2 adaptor has undefined symbols with certain combination of flags
Created by: kruger
Stratimikos in develop branch (9d5b14dc)
Configure script is attached. Error appears on Mac (10.12.6) using clang [Apple LLVM version 9.0.0 (clang-900.0.39.2)].
Error output is:
Undefined symbols for architecture x86_64: "Amesos2::KLU2<Tpetra::CrsMatrix<float, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> >, Tpetra::MultiVector<float, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> > >::KLU2(Teuchos::RCP<Tpetra::CrsMatrix<float, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> > const>, Teuchos::RCP<Tpetra::MultiVector<float, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> > >, Teuchos::RCP<Tpetra::MultiVector<float, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> > const>)", referenced from: Amesos2::create_solver_with_supported_type<Amesos2::KLU2, Tpetra::CrsMatrix<float, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> >, Tpetra::MultiVector<float, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> > >::apply(Teuchos::RCP<Tpetra::CrsMatrix<float, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> > const>, Teuchos::RCP<Tpetra::MultiVector<float, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> > >, Teuchos::RCP<Tpetra::MultiVector<float, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> > const>) in Thyra_Amesos2LinearOpWithSolveFactory.cpp.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
This occurs when I have these FLAGS:
Teuchos_ENABLE_FLOAT=ON
and
Tpetra_INST_FLOAT=OFF
I agree that this seems like a silly thing to do, but it came about from modifying a previous working configure script to enable new development. It seems that the build system should catch incompatible flags for me, but I'm not sure where to properly catch this.