micro-manager / mmCoreAndDevices

Micro-Manager's device control layer, written in C++
43 stars 112 forks source link

Adding autofocus, general improvements #488

Closed martinzak-zaber closed 2 months ago

martinzak-zaber commented 2 months ago

We are adding autofocus support for our Nucleus™️ microscope.

There are also a few general improvements:

We are also updating to a newer version of our library - 3.4.4. Can we please have SVN updated with our binaries? Please note that the tag.gz contains soft-links. Archive: https://drive.google.com/file/d/1IisP6pyjYEEDqVsKLyruIEPc5TLhDuW7/view?usp=sharing

Note: We have tried upgrading our module to C++17 but could not get it working without removing dynamic exceptions from some of the base classes.

Thank you. Please let us know if you have any concerns or questions.

marktsuchida commented 2 months ago

Thanks, @martinzak-zaber!

AM_CXXFLAGS = $(MMDEVAPI_CXXFLAGS) $(ZML_CPPFLAGS) -std=c++17 -Wno-dynamic-exception-spec
martinzak-zaber commented 2 months ago

@marktsuchida We have been able to build on Windows as well. On Linux we got hard error that dynamic exceptions are not supported in c++17 along with "-Wno-dynamic-exception-spec" being an unknown option. Maybe we had a wrong GCC version but I could not find any documentation on "no-dynamic-exception-spec" anyway so I gave up.

marktsuchida commented 2 months ago

@martinzak-zaber You're right, sorry about that. I must have misremembered the situation back when I tried that flag; it turns out that only Clang has -W[no-]dynamic-exception-spec.

489 should fix this so that you just need -std=c++17 in AM_CXXFLAGS next time you update.

martinzak-zaber commented 2 months ago

@martinzak-zaber You're right, sorry about that. I must have misremembered the situation back when I tried that flag; it turns out that only Clang has -W[no-]dynamic-exception-spec.

489 should fix this so that you just need -std=c++17 in AM_CXXFLAGS next time you update.

Much appreciated. Thank you!

nicost commented 1 week ago

@martinzak-zaber This code currently does not build on LInux. Shall I just completely disable the Zaber build on Linux (which would be a shame)? We do not have the 3.4.4 motion library linux .so files in our 3rdparty repo. I can not check the .tar.gz you posted earlier since it disappeared.

Let me know how to proceed. For the time being, I will disable the Zaber build on linux (as it does not work, and blocks the build of everything else).

marktsuchida commented 1 week ago

@nicost The Zaber headers are in 3rdpartypublic and the configure.ac should disable the device adapter when they are not present (and the correct version). If this is not the case, can you create a new issue with details? I'll look into a fix.