Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds a CMake compilation system as an alternative to the Makefile-based compilation for RASR. The old compilation system is untouched so the changes here are fully backwards compatible. The new CMake compilation, however, has several advantages:
make -j 10 && make install
vs. ~3:30 minutes formkdir .build && cd .build && cmake ../ && make -j 10 && make install
).Rules.make
. The CMake system makes the dependency mechanism much simpler and such re-linking is not required.The mechanism of enabling/disabling modules works a bit different (and less hacky) now compared to the Makefile way: Previously, a
Modules.hh
file was generated containing a bunch of#define MODULE_...
statements and included all over the code base to check whether certain modules are enabled or not. In the CMake system the modules are just added directly as compile definitions and thisModules.hh
generation and including is not needed anymore. To keep the old include logic intact, aCMAKE_DISABLE_MODULES_HH
compile definition is added and the includes ofModules.hh
in the code base are wrapped usingI have personally been using such a CMake compiled RASR for a few months now for several tasks and it has been working well but of course issues might still come up in the future for different use cases or on different machines.