Open
Conversation
+ The major addition in this commit is the use of CMake to automatically
detect the build environment, compilers, and libraries. This offers
several advantages over the existing Makefile system:
- CMake automatically enables static source dependency analysis, in
a portable way, so that dependencies are tracked correctly
without needing to hardcode them, regardless of host compilers.
- Using CMake allows for a completely out-of-source build, with no
files being overwritten in the original tree. This means that a
developer can have several compatible builds of FARGO3D
simultaneously with different build flags set, rather than needing
a different clone of the code for every project or configuration.
- CMake is used by many HPC codes, so migrating the build system
makes it easier for others to interface FARGO3D with external
libraries; CMake can frequently find installed libraries with
little to no user input.
+ Replaced macros X, Y, Z with XDIM, YDIM, ZDIM, which reduces
unintentional collisions with external libraries. Other single-letter
macros may be worth reexamining for the same reason.
+ Reformatted template files and reworked code generation scripts to
take advantage of Python's built-in string formatting capability.
Since Python 2 is long deprecated, using newer features is not a
compatibility concern.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
The major addition in this commit is the use of CMake to automatically detect the build environment, compilers, and libraries. This offers several advantages over the existing Makefile system:
Additional changes include:
X,Y,ZwithXDIM,YDIM,ZDIM, which reduces unintentional collisions with external libraries. Other single-letter macros may be worth reexamining for the same reason.#ifdefdirectives to#ifdirectives. This is easier to interface with CMake and also easier to debug: GCC, for example, can warn you if a macro used in#ifis undefined, which reduces the chance of a spelling error interfering with desired behavior.Since this is a rather significant change to the base code, if the developers are interested in the new capability, I'm happy to continue developing it on this feature branch.