-
Notifications
You must be signed in to change notification settings - Fork 137
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
Add option for position independent code in CMake #930
Add option for position independent code in CMake #930
Conversation
Note: my first time doing this. If you'd like me to add something to the CMake CI action matrix (FPIC on and off), let me know and I can add that. |
It's all good, we'll update the CI to test this and the other constants cmake options after we get them in. |
Huh. I don't think that failed test is my fault. Looks like a cloud hiccup? |
Yeah it passed all the required ones so it's fine, looks like it was just a connection issue. |
@rem1776 Thanks. I'm so used to hitting "rerun test" in my own repos that it took me a while to realize I can't do that here. 😄 |
* get_unit warning now only prints on root_pe (NOAA-GFDL#872) Co-authored-by: Eric Stofferahn <Eric.Stofferahn@noaa.gov> * Update changelog, version numbers and build info (NOAA-GFDL#873) Co-authored-by: rem1776 <Ryan.Mulhall@lscamd50-d.gfdl.noaa.gov> * chore: Change version number to next development version (NOAA-GFDL#874) * CI: Update build action for yaml parser (NOAA-GFDL#871) Update build actions Change images to organization's repo and fix mixed mode parser test failure * test(parser): Change real comparison value to double (NOAA-GFDL#886) Co-authored-by: rem1776 <Ryan.Mulhall@lscamd50-d.gfdl.noaa.gov> * Make 'unsupported kind' error messages more descriptive. Change author of constants4.F90 * Add doxygen comment to valid_types in sat_vapor_pres/sat_vapor_pres_k.F90 * Modify codes for r8-r4 conversion to remove compiler warnings * Remove OVERLOAD_R8 directives regarding send_data_*d_r8 subroutines * Add Doxygen comments to constants4.F90 * Updates AM4 regression test suite to run intel 21 only on PW (NOAA-GFDL#893) * feat: emc changes for mixedmode (NOAA-GFDL#857) (NOAA-GFDL#898) * Change send_data interface and any necessary routines for mixed real precision support * Adds an r4 size constants file BREAKING CHANGE: changes some argument types in diag_manager, tracer_manager, sat_vapor_pres, and time_manager from real to class(*) Co-authored-by: Minsuk Ji <57227195+MinsukJi-NOAA@users.noreply.github.com> * feat: adds option to override (ignore) checksum test when reading restarts (NOAA-GFDL#889) * update to fms2_io to allow reads to ignore embedded checksums on a fileobj basis * added fms2_io test cases for the ignore_checksum option to restart reads tests the domain, domain_wrap, and bc restart options * docs: add CI information file (NOAA-GFDL#899) * test: Adds check_nml_error after reading a namelist, so it could crash only as expected (NOAA-GFDL#904) * Revert "feat: emc changes for mixedmode (NOAA-GFDL#857) (NOAA-GFDL#898)" (NOAA-GFDL#914) This reverts commit 516a5ef. * fix: clean up unused/uninitialized variables and other warnings (NOAA-GFDL#859) Remove unused variables throughout and changes/removals for other warnings such as uninitialized values and implicit casts * docs: update function style and branch names * Changes master to main in CONTRIBUTING.md * Claifies function return documentation in CODE_STYLE.md * feat: adds support for logical variables in the yaml parser (NOAA-GFDL#907) * Adds support for logical variables in the yaml parser * correctly determines if a string is true or false * fix: add check for affinity to self-initialize and update test program (NOAA-GFDL#917) * fix: adds casts to class(*) calls to match doubles in C routines (NOAA-GFDL#920) Co-authored-by: rem1776 <Ryan.Mulhall@lscamd50-d.gfdl.noaa.gov> * build: add intel code coverage build option to autotools (NOAA-GFDL#895) * refactor: change to inclusive variable names (NOAA-GFDL#926) * feat: Allow maximum number of restart variables to be set at build time (NOAA-GFDL#909) * fix: Fixes for linter action and code style (NOAA-GFDL#869) * test: Test script updates and input tests (NOAA-GFDL#800) Rewrites test script to use added testing shell functions Adds previously skipped or removed unit tests and support for testing with input files Co-authored-by: Seth Underwood <Seth.Underwood@noaa.gov> Co-authored-by: Uriel Ramirez <uriel.ramirez@noaa.gov> * chore: 2022.01 release changes (NOAA-GFDL#941) * chore: change version number to next development version (NOAA-GFDL#945) * Add option for position independent code (NOAA-GFDL#930) * fix: document and change parameter names for grid versions (NOAA-GFDL#918) * fix: Moving empty and non-existent data table handling inside data_override (NOAA-GFDL#933) Enables the processing of an empty or non-existent data_table or data_table.yaml from within data_override, so that any routine can call data_override_init without worry * fix: Removal of internal FMS use of fms_io and mpp_io (NOAA-GFDL#928) * fix: mpp changes to solve compile issues with serial builds (NOAA-GFDL#949) * feat: adds build option for compiling with different sets of constants (NOAA-GFDL#929) * feat: add and aggregate mpp_chksum unit tests (NOAA-GFDL#946) * feat: add module for string utility routines (NOAA-GFDL#911) Adds module and accompanying test for common string operations * revert: reinstated the mpp_io routines and put them at the end for future elimination. (NOAA-GFDL#952) * fix: add back in small_fac parameter to constants .h files (NOAA-GFDL#954) * fix: root pe bug with fms2_io::flush_file (NOAA-GFDL#958) * fix: clean up string routines for fms_string_utils_mod (NOAA-GFDL#953) * Make changes to lines with more than 120 columns Co-authored-by: Ryan Mulhall <35538242+rem1776@users.noreply.github.com> Co-authored-by: Eric Stofferahn <Eric.Stofferahn@noaa.gov> Co-authored-by: rem1776 <Ryan.Mulhall@lscamd50-d.gfdl.noaa.gov> Co-authored-by: Tom Robinson <33458882+thomas-robinson@users.noreply.github.com> Co-authored-by: Rusty Benson <6594772+bensonr@users.noreply.github.com> Co-authored-by: uramirez8707 <49168881+uramirez8707@users.noreply.github.com> Co-authored-by: Raffaele Montuoro <raffaele.montuoro@outlook.com> Co-authored-by: Seth Underwood <Seth.Underwood@noaa.gov> Co-authored-by: Uriel Ramirez <uriel.ramirez@noaa.gov> Co-authored-by: Matthew Thompson <matthew.thompson@nasa.gov> Co-authored-by: Eric <7784797+GFDL-Eric@users.noreply.github.com>
* get_unit warning now only prints on root_pe (NOAA-GFDL#872) Co-authored-by: Eric Stofferahn <Eric.Stofferahn@noaa.gov> * Update changelog, version numbers and build info (NOAA-GFDL#873) Co-authored-by: rem1776 <Ryan.Mulhall@lscamd50-d.gfdl.noaa.gov> * chore: Change version number to next development version (NOAA-GFDL#874) * CI: Update build action for yaml parser (NOAA-GFDL#871) Update build actions Change images to organization's repo and fix mixed mode parser test failure * test(parser): Change real comparison value to double (NOAA-GFDL#886) Co-authored-by: rem1776 <Ryan.Mulhall@lscamd50-d.gfdl.noaa.gov> * Make 'unsupported kind' error messages more descriptive. Change author of constants4.F90 * Add doxygen comment to valid_types in sat_vapor_pres/sat_vapor_pres_k.F90 * Modify codes for r8-r4 conversion to remove compiler warnings * Remove OVERLOAD_R8 directives regarding send_data_*d_r8 subroutines * Add Doxygen comments to constants4.F90 * Updates AM4 regression test suite to run intel 21 only on PW (NOAA-GFDL#893) * feat: emc changes for mixedmode (NOAA-GFDL#857) (NOAA-GFDL#898) * Change send_data interface and any necessary routines for mixed real precision support * Adds an r4 size constants file BREAKING CHANGE: changes some argument types in diag_manager, tracer_manager, sat_vapor_pres, and time_manager from real to class(*) Co-authored-by: Minsuk Ji <57227195+MinsukJi-NOAA@users.noreply.github.com> * feat: adds option to override (ignore) checksum test when reading restarts (NOAA-GFDL#889) * update to fms2_io to allow reads to ignore embedded checksums on a fileobj basis * added fms2_io test cases for the ignore_checksum option to restart reads tests the domain, domain_wrap, and bc restart options * docs: add CI information file (NOAA-GFDL#899) * test: Adds check_nml_error after reading a namelist, so it could crash only as expected (NOAA-GFDL#904) * Revert "feat: emc changes for mixedmode (NOAA-GFDL#857) (NOAA-GFDL#898)" (NOAA-GFDL#914) This reverts commit 516a5ef. * fix: clean up unused/uninitialized variables and other warnings (NOAA-GFDL#859) Remove unused variables throughout and changes/removals for other warnings such as uninitialized values and implicit casts * docs: update function style and branch names * Changes master to main in CONTRIBUTING.md * Claifies function return documentation in CODE_STYLE.md * feat: adds support for logical variables in the yaml parser (NOAA-GFDL#907) * Adds support for logical variables in the yaml parser * correctly determines if a string is true or false * fix: add check for affinity to self-initialize and update test program (NOAA-GFDL#917) * fix: adds casts to class(*) calls to match doubles in C routines (NOAA-GFDL#920) Co-authored-by: rem1776 <Ryan.Mulhall@lscamd50-d.gfdl.noaa.gov> * build: add intel code coverage build option to autotools (NOAA-GFDL#895) * refactor: change to inclusive variable names (NOAA-GFDL#926) * feat: Allow maximum number of restart variables to be set at build time (NOAA-GFDL#909) * fix: Fixes for linter action and code style (NOAA-GFDL#869) * test: Test script updates and input tests (NOAA-GFDL#800) Rewrites test script to use added testing shell functions Adds previously skipped or removed unit tests and support for testing with input files Co-authored-by: Seth Underwood <Seth.Underwood@noaa.gov> Co-authored-by: Uriel Ramirez <uriel.ramirez@noaa.gov> * chore: 2022.01 release changes (NOAA-GFDL#941) * chore: change version number to next development version (NOAA-GFDL#945) * Add option for position independent code (NOAA-GFDL#930) * fix: document and change parameter names for grid versions (NOAA-GFDL#918) * fix: Moving empty and non-existent data table handling inside data_override (NOAA-GFDL#933) Enables the processing of an empty or non-existent data_table or data_table.yaml from within data_override, so that any routine can call data_override_init without worry * fix: Removal of internal FMS use of fms_io and mpp_io (NOAA-GFDL#928) * fix: mpp changes to solve compile issues with serial builds (NOAA-GFDL#949) * feat: adds build option for compiling with different sets of constants (NOAA-GFDL#929) * feat: add and aggregate mpp_chksum unit tests (NOAA-GFDL#946) * feat: add module for string utility routines (NOAA-GFDL#911) Adds module and accompanying test for common string operations * revert: reinstated the mpp_io routines and put them at the end for future elimination. (NOAA-GFDL#952) * fix: add back in small_fac parameter to constants .h files (NOAA-GFDL#954) * fix: root pe bug with fms2_io::flush_file (NOAA-GFDL#958) * fix: clean up string routines for fms_string_utils_mod (NOAA-GFDL#953) * chore: update libFMS module with new routines (NOAA-GFDL#912) * fix: removes fms_c.c and fms_c.h (NOAA-GFDL#961) * Make changes to lines with more than 120 columns Co-authored-by: Ryan Mulhall <35538242+rem1776@users.noreply.github.com> Co-authored-by: Eric Stofferahn <Eric.Stofferahn@noaa.gov> Co-authored-by: rem1776 <Ryan.Mulhall@lscamd50-d.gfdl.noaa.gov> Co-authored-by: Tom Robinson <33458882+thomas-robinson@users.noreply.github.com> Co-authored-by: Rusty Benson <6594772+bensonr@users.noreply.github.com> Co-authored-by: uramirez8707 <49168881+uramirez8707@users.noreply.github.com> Co-authored-by: Raffaele Montuoro <raffaele.montuoro@outlook.com> Co-authored-by: Seth Underwood <Seth.Underwood@noaa.gov> Co-authored-by: Uriel Ramirez <uriel.ramirez@noaa.gov> Co-authored-by: Matthew Thompson <matthew.thompson@nasa.gov> Co-authored-by: Eric <7784797+GFDL-Eric@users.noreply.github.com>
Description
Fixes #806
This PR adds an option to enable position independent code when building with CMake. As documented in #806, I got stymied at building with Autotools, so I moved to CMake. The error encountered:
was one I've seen quite a few times and the answer is to set:
in
CMakeLists.txt
. This adds-fPIC
when building as a static library. Per CMake, this isTrue
for shared libraries, but off by default for static.Now in all my testing, this flag never hurts, but to be safe, I've added a
-DFPIC
option where it's defaultOFF
, soCMAKE_POSITION_INDEPENDENT_CODE
will beOFF
as it currently is in FMS.Note that I am not good at Autotools and I couldn't build with it anyway, so I'm not sure how to affect a similar change in that build processes.
How Has This Been Tested?
I've built FMS with a similar more "hard-coded" change with GEOS, see:
2021.04...GEOS-ESM:geos/2021.04
and run GEOS with that build. And it's zero-diff.
Checklist:
make distcheck
passes