Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CMake compilation flags as categorical properties #2088

Merged
merged 5 commits into from
Oct 15, 2024

Conversation

islas
Copy link
Collaborator

@islas islas commented Aug 6, 2024

TYPE: enhancement

KEYWORDS: cmake, compilation, flags

SOURCE: internal

DESCRIPTION OF CHANGES:
Problem:
In preparation for alternative core selection, there is a broader range of flags that must be set and controlled throughout the project. This includes being able to set flags on a per-source basis to override certain flags that are normally applied wholly to all source within a CMake target. An example of this is disabling double precision on an individual file when that option is being used.

Solution:
Categorizing the flags first allows for easy application and selection of particular sets of flags for the multiple libraries and binaries created. Second, for the core library, using pseudo-inherited CMake properties between targets and source files allows for granular control of these flag categories.

@islas islas requested review from a team as code owners August 6, 2024 03:05
@islas
Copy link
Collaborator Author

islas commented Aug 6, 2024

Requires #2056, #2053, #2086, and #2087

@islas islas changed the title CMake Compilation Flags as categorical properties CMake compilation flags as categorical properties Aug 6, 2024
@weiwangncar
Copy link
Collaborator

The regression test results:

Test Type              | Expected  | Received |  Failed
= = = = = = = = = = = = = = = = = = = = = = = =  = = = =
Number of Tests        : 23           24
Number of Builds       : 60           57
Number of Simulations  : 158           150        0
Number of Comparisons  : 95           86        0

Failed Simulations are: 
None
Which comparisons are not bit-for-bit: 
None

Copy link
Collaborator

@amstokely amstokely left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me.

@amstokely amstokely self-requested a review September 19, 2024 22:51
amstokely
amstokely previously approved these changes Sep 19, 2024
@islas islas force-pushed the cmake-flags_properties branch from 6ff2714 to 92e03e5 Compare October 15, 2024 00:03
@amstokely amstokely self-requested a review October 15, 2024 18:25
@islas islas merged commit 915f93d into wrf-model:release-v4.6.1 Oct 15, 2024
1 of 2 checks passed
islas added a commit that referenced this pull request Dec 20, 2024
TYPE: bug fix

KEYWORDS: compilation, cmake

SOURCE: internal

DESCRIPTION OF CHANGES:
Problem:
With the addition of #2088, `ARCH_LOCAL` from the stanza is now being
fed into compilation with potential `-D` defines. On versions of CMake
<3.26 leading `-D` on defines is not removed from certain function calls
like `add_compile_definitions()`. This will pass the configuration stage
but will fail to compile when using the defined minimum CMake version of
the project.

Solution:
To simplify the logic, all defines fed into the `wrf_config.cmake` file
for the configuration step will be sanitized of leading `-D`. This
follows the original design intent where stanza sanitization happens
before being fed into CMake, thus allowing the CMake code to focus on
configuration of options rather than translation of stanza into usable
values.


TESTS CONDUCTED: 
1. Tested configuration and compilation on CMake version v3.20.6

RELEASE NOTE: 
Remove leading -D on defines during stanza reading to allow older 
versions of CMake to configure properly.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants