Open frobnitzem opened 2 years ago
/private/var/folders/q7/dxctxdc16yxc8ms51wyxwddrwxqnlb/T/spack-stage/spack-stage-sparrow-3.0.0-7w7p4sj4v7y6zqriqb6krfgoby65bp4x/spack-build-7w7p4sj/scine-core-src/src/Core/Core/Log.h:57:1: warning: 'Log' defined as a struct here but previously declared as a class; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]
struct CORE_EXPORT Log {
^
/var/folders/q7/dxctxdc16yxc8ms51wyxwddrwxqnlb/T/spack-stage/spack-stage-sparrow-3.0.0-7w7p4sj4v7y6zqriqb6krfgoby65bp4x/spack-src/src/Sparrow/App/CommandLineOptions.h:15:1: note: did you mean struct here?
class Log;
^~~~~
struct
/var/folders/q7/dxctxdc16yxc8ms51wyxwddrwxqnlb/T/spack-stage/spack-stage-sparrow-3.0.0-7w7p4sj4v7y6zqriqb6krfgoby65bp4x/spack-src/src/Sparrow/Sparrow/Implementations/Dftb/TimeDependent/LinearResponse/TDDFTBData.h:27:1: warning: 'TDDFTBData' defined as a struct here but previously declared as a class; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags] struct TDDFTBData : public LinearResponseData { ^ /var/folders/q7/dxctxdc16yxc8ms51wyxwddrwxqnlb/T/spack-stage/spack-stage-sparrow-3.0.0-7w7p4sj4v7y6zqriqb6krfgoby65bp4x/spack-src/src/Sparrow/Sparrow/Implementations/Dftb/DFTBMethodWrapper.h:15:1: note: did you mean struct here? class TDDFTBData; ^~~~~ struct
ftb/TimeDependent/LinearResponse/BasisPruner.h:20:1: warning: class 'Excitation' was previously declared as a struct; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags] class Excitation; ^ /private/var/folders/q7/dxctxdc16yxc8ms51wyxwddrwxqnlb/T/spack-stage/spack-stage-sparrow-3.0.0-7w7p4sj4v7y6zqriqb6krfgoby65bp4x/spack-build-7w7p4sj/scine-utils-os-src/src/Utils/Utils/TimeDependent/TransitionDipoleCalculator.h:25:8: note: previous use is here struct Excitation { ^
/var/folders/q7/dxctxdc16yxc8ms51wyxwddrwxqnlb/T/spack-stage/spack-stage-sparrow-3.0.0-7w7p4sj4v7y6zqriqb6krfgoby65bp4x/spack-src/src/Sparrow/Sparrow/Implementations/Nddo/TimeDependent/LinearResponse/CISData.h:24:1: warning: 'CISData' defined as a struct here but previously declared as a class; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags] struct CISData : public LinearResponseData { ^ /var/folders/q7/dxctxdc16yxc8ms51wyxwddrwxqnlb/T/spack-stage/spack-stage-sparrow-3.0.0-7w7p4sj4v7y6zqriqb6krfgoby65bp4x/spack-src/src/Sparrow/Sparrow/Implementations/Nddo/NDDOMethodWrapper.h:23:1: note: did you mean struct here? class CISData; ^~~~~ struct
Thanks a lot for reporting these issues! We will try to accommodate as many of them as possible in the next release. However, please note that we are unable to provide support for mac OSX as we don't use this operating system ourselves.
By the way, I've created a spack package for easy installation of sparrow from source.
https://github.com/spack/spack/pull/29291
I had to put in 2 patches - one to change the SparrowApp target to output "sparrow.exe" (which is renamed back to sparrow after installation), and another to fix the C++ standard level. With those, I can confirm it compiles with both clang-13.0 and gcc-10.3!
Here is the patch I'm using on OSX:
diff --git a/src/Sparrow/CMakeLists.txt b/src/Sparrow/CMakeLists.txt
index 3d67744..6318e03 100644
--- a/src/Sparrow/CMakeLists.txt
+++ b/src/Sparrow/CMakeLists.txt
@@ -120,6 +120,7 @@ add_executable(SparrowApp ${SPARROW_APP_FILES})
add_executable(Scine::SparrowApp ALIAS SparrowApp)
set_target_properties(SparrowApp PROPERTIES OUTPUT_NAME sparrow)
+set_target_properties(SparrowApp PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
target_link_libraries(SparrowApp PRIVATE
Boost::program_options
In release 3.1.0, compiling using gcc/10.3 works almost out of the box for me. I still get an error on std::transform though. I had to fix it with:
diff --git a/src/Sparrow/Embed/CMakeLists.txt b/src/Sparrow/Embed/CMakeLists.txt
index 01acef0..f2fa135 100644
--- a/src/Sparrow/Embed/CMakeLists.txt
+++ b/src/Sparrow/Embed/CMakeLists.txt
@@ -5,6 +5,7 @@ add_executable(Embed
${CMAKE_CURRENT_SOURCE_DIR}/NddoParameters.cpp
)
target_include_directories(Embed PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
+set_property(TARGET Embed PROPERTY CXX_STANDARD 17)
target_link_libraries(Embed
PRIVATE Scine::Sparrow cereal
)
compiling with Intel compiler shows the same exp(...)
type error. It might be possible to fix it by casting the argument, e.g. exp((double) ... )
, but I haven't tried it.
Thanks for providing this package!
I want to try out molgym using this great semiempirical package, and noticed the following build issues:
$ make ...
~/sparrow/src/Sparrow/Sparrow/Implementations/Nddo/Am1/AM1PairwiseRepulsion.h(91): error: no instance of overloaded function "exp" matches the argument list argument types are: (double) return res + radiusDeriv Utils::Constants::angstrom_per_bohr exp(-pA_.alpha() radiusDeriv) + ^ ~/sparrow/src/Sparrow/Sparrow/Implementations/Nddo/Am1/AM1PairwiseRepulsion.h(91): note: this candidate was rejected because arguments do not match return res + radiusDeriv Utils::Constants::angstrom_perbohr * exp(-pA.alpha() radiusDeriv) + ^ ~/sparrow/src/Sparrow/Sparrow/Implementations/Nddo/Am1/AM1PairwiseRepulsion.h(91): note: this candidate was rejected because at least one template argument could not be deduced return res + radiusDeriv Utils::Constants::angstrom_perbohr * exp(-pA.alpha() radiusDeriv) + ^ ~/sparrow/src/Sparrow/Sparrow/Implementations/Nddo/Am1/AM1PairwiseRepulsion.h(91): note: this candidate was rejected because arguments do not match return res + radiusDeriv Utils::Constants::angstrom_perbohr * exp(-pA.alpha() * radiusDeriv) + ^ detected during: instantiation of "Scine::Utils::AutomaticDifferentiation::Value1DType Scine::Sparrow::nddo::AM1PairwiseRepulsion::standardParenthesis(double) const [with O=Scine::Utils::DerivativeOrder::Zero]" at line 77
instantiation of "Scine::Utils::AutomaticDifferentiation::Value1DType Scine::Sparrow::nddo::AM1PairwiseRepulsion::parenthesisValue(double) const [with O=Scine::Utils::DerivativeOrder::Zero]" at line 72
instantiation of "Scine::Utils::AutomaticDifferentiation::Value1DType Scine::Sparrow::nddo::AM1PairwiseRepulsion::baseTerm(double) const [with O=Scine::Utils::DerivativeOrder::Zero]" at line 66
instantiation of "Scine::Utils::AutomaticDifferentiation::Value1DType Scine::Sparrow::nddo::AM1PairwiseRepulsion::calculateRepulsion(double) const [with O=Scine::Utils::DerivativeOrder::Zero]" at line 23 of "~/sparrow/src/Sparrow/Sparrow/Implementations/Nddo/Am1/AM1PairwiseRepulsion.cpp"
$ clang++ --version Apple clang version 13.0.0 (clang-1300.0.29.30) Target: x86_64-apple-darwin20.6.0 Thread model: posix InstalledDir: /Library/Developer/CommandLineTools/usr/bin
src/Sparrow/Sparrow/Resources/Dftb/3ob-3-1/Parameters.cpp:19443:10: warning: hexadecimal floating literals are a C++17 feature [-Wc++17-extensions] {0x1.f333333333333p+2, 0x1.f666666666666p+2, 0x1.4c345fa238401p-23, -0x1.9f461446d6afap-19, 0x1.812b43ac0c844p-16, -0x1.1b403de0c351dp-14}, ^
[ 89%] Linking CXX executable sparrow cd ~/spack-src/src/Sparrow && cmake -E cmake_link_script CMakeFiles/SparrowApp.dir/link.txt --verbose=1 /usr/local/spack/lib/spack/env/clang/clang++ ... -o sparrow ...
ld: can't write output file to 'sparrow' because that path is a directory clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: [src/Sparrow/sparrow] Error 1 make[1]: [src/Sparrow/CMakeFiles/SparrowApp.dir/all] Error 2 make: *** [all] Error 2