Conversation
|
I do not have much development on Windows so I have a few questions. Before that, I think keeping everything Windows related separate is a good idea and I like having a separate workflow to check Windows builds. My question is whether this could be done without touching Anyway I didn't look at how much we actually need this configuration checks on modern platforms. Any comments or ideas on that? |
|
@Alan-Jowett Also the most recent branch is https://github.com/cuddorg/cudd/tree/4.0.0 Sorry for the confusion. The development branch was not stable in the beginning so I used |
|
Thank you for the feedback. I will rebase this onto the 4.0.0 branch and see if I can consolidate the Windows specific parts into a windows.cmake file. |
80c4901 to
8f48182
Compare
Pull Request Test Coverage Report for Build 19276984450Details
💛 - Coveralls |
b864649 to
7939924
Compare
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
7939924 to
00551d6
Compare
This pull request introduces significant improvements to cross-platform compatibility and CMake configuration for the CUDD project. The changes add platform-specific CMake modules for Windows and Unix, enhance CMake workflow automation, and improve handling of dependencies and build options based on the environment. There are also updates to CI workflows to better support Windows builds and conditional test execution depending on CMake version compatibility.
Platform-specific build system enhancements:
cmake/windows.cmakeandcmake/unix.cmake, which encapsulate platform-specific configuration for shared libraries, compiler flags, library linking, and development tools. These modules are now included conditionally inCMakeLists.txtbased on the target platform, and their functions are used to manage build constraints and environment setup. [1] [2] [3] [4] [5]CMake and CI workflow improvements:
test_cmake.yml,test_toolset.yml) to automatically detect the CMake version and enable or disable tests accordingly. Tests are only run if CMake ≥ 3.28, due to new requirements for the dddmp dependency; this prevents build failures on older CMake versions. [1] [2]test_windows.yml) that builds and tests the project using static libraries and supports both Release and Debug configurations.CMake configuration and options:
CUDD_RECONFIGURE_SYSTEMis nowON, enabling more robust system variable configuration.CMakeLists.txtto alert users when attempting to build tests with an incompatible CMake version (<3.28).CMakeLists.txtabout minimum CMake version requirements and compatibility workarounds for older versions.System and platform checks:
cmake/cudd_configure_system.cmaketo set required math function flags for Windows, preventing configuration errors. [1] [2]Cleanup and modernization:
src/config.hfile, which contained hardcoded configuration macros now handled dynamically by CMake.These changes collectively make the build system more robust, easier to maintain, and better suited for modern development environments across both Windows and Unix platforms.