All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Fixed f2py and f2py3 detection in Spack environments where the
f2pyexecutable lives in thepy-numpypackage'sbin/directory rather than alongside the Python interpreter.FindF2PY.cmakeandFindF2PY3.cmakenow ask Python directly (import numpy.f2py) to locate the correctf2pybinary. A two-pass search is used: the preferred locations (Pythonbin/and numpy-derivedbin/) are checked first withNO_DEFAULT_PATH, then a normalPATHsearch is used as a fallback to preserve behaviour on non-Spack (e.g. module-based) systems. - Fixed
find_package(Python3)picking up a different Python 3 interpreter (e.g. a newer Homebrew Python) instead of the one already found byfind_package(Python)in Spack environments.esma_python.cmakenow pinsPython3_EXECUTABLEtoPython_EXECUTABLEwhenfind_package(Python)has already resolved a Python 3 interpreter, ensuring both find the same Python.
- Added
Python_FIND_VIRTUALENV FIRSTandPython3_FIND_VIRTUALENV FIRSTtoesma_python.cmakeso that an active Spackpython-venvonPATHis preferred over system or framework Pythons.
- Fixed handling of f2py3 with non-APPLE + GNU Fortran builds
- Removed custom CTest pre-test build configuration that was forcing tests to be built when using
make ctest. This simplifies the test configuration by removing the automatic build-tests dependency from CTest runs.
- Add
USES_TERMINALto ourteststarget to ensure output is shown as tests run with Ninja
- Updates for f2py and f2py3 for running on macOS with Spack
- Add Athena frontend nodes for NAS detection
- Update
ifxflags to match as close as possible toifortflags - Update site detection for NAS
- Update FMS detection and use for FMS 2025 support
- FMS 2025 is now built in multi-precision support so that we have
FMS::fmstargets and not the separateFMS::fms_r4andFMS::fms_r8targets - Because of this change, we update the major version number to 5.0.0
- Requires Baselibs v9.0.0 or higher (which has FMS 2025)
- FMS 2025 is now built in multi-precision support so that we have
- Update CI to use Baselibs v9.0.0
- Update GNU flags to not do
-ffpe-trapwhen building asRelease- This was causing (spurious??) issues with some GEOSgcm runs with GCC 15
- Updates for f2py and flang
- Prevent error when building with flang and meson
- Update CI to reusable workflows
- Updated the Python and Python3 detection better find f2py and f2py3 given the found Python executable
- Add new "VectTrap"
CMAKE_BUILD_TYPE. This is only different fromReleasefor Intel Fortran. It is a set of flags to try to trap exceptions (e.g., invalid floating point operations) while still being vectorized.
- Update
ifortflags (per @wmputman) - Update
ifxflags to be close toifortflags (ish)- NOTE: ifx is still in testing and flags will change (currently does not layout-regress)
- Remove support for Python 2 (mainly f2py2)
- Corrected missing
FPE1in Intel flags
- Workaround for
ifx2025.2 preprocessor bug
- Update the GNU Aggressive flags as the old ones seem to cause rapid instabilities with GEOSgcm v12
- Fix issue with libaec use (use LIST instead of string)
- Add
FindISSM.cmakefile
- Add support for libaec in Baselibs
- Fixed an issue with FMS detection when using Baselibs in a project that doesn't need it
- Fix for FMS1 I/O test in CMake to handle different
FV_PRECISIONcases
- Prepend our
external_librariesdirectory toCMAKE_MODULE_PATHso our CMake files win - On macOS, add
-Wl,-headerpad_max_install_nameswhen linking
- Added new CMake test for deprecated FMS1 I/O support
- Added
TMPDIRenvironment variable to f2py and f2py3 compilation processes in CMake scripts to avoidnoexec/tmpdirectories
- Fixed issue with f2py detection where f2py was still being test compiled even if a user specified
-DUSE_F2PY:BOOL=OFF
- Make
proc_descriptionaCACHEvariable
- Added code to enforce that we only allow
CMAKE_BUILD_TYPEof Release, Debug, and Aggressive- CMake can recognize others, but we maintain our own flags so we need to be careful
- Explicitly set
CMAKE_INSTALL_LIBDIRtolibto overrideGNUInstallDirsfrom setting it tolib64. This is mainly needed due to assumptions in GEOS scripting
- Added support for Emerald Rapids
- Added
DEPENDSoption to f2py and f2py3 code to pass dependencies to theadd_custom_commandused to call f2py
- Added a timeout to
mepo statusto prevent it from hanging indefinitely. The timeout is set to 60 seconds - Modified the f2py and f2py3 codes for meson+MPT support
- It was found that when an f2py code uses MPI, with meson+MPT we need to run with
LD_PRELOAD=/path/to/mpt/libmpi.so
- It was found that when an f2py code uses MPI, with meson+MPT we need to run with
- Do not add
ld_classicflag on macOS with XCode 16.3 or newer. No longer needed.
- Fixed bug in f2py3 code
- Removed warning about setting
-fallow-argument-mismatchand-fallow-invalid-bozwith GCC 10+. This is pretty much common now. Instead, we emit a message
- Remove code for finding OS at NCCS as system is now all SLES15
- Update Intel LLVM Fortran flags to use
-march=x86-64-v3as-march=core-avx2is not (technically?) supported byifx - Reworked FMS detection to better handle the different
FV_PRECISIONcases inFindBaselibs.cmake - Change f2py detection for the odd case where there might be multiple Python installations. For now, if the path to the Python executable does not match the path to the f2py executable, we issue a
WARNING. We use aWARNINGsince some installations (e.g., Spack) will have the Python executable in a different location than the f2py executable. - Removed warning that Baselibs is not supported, to a STATUS message.
- Updated Intel Fortran flags from @wmputman
- Move to use Python
FIND_STRATEGY LOCATIONby default. This is needed as NAS (at least) has a very recent, but empty (no f2py) Python stack in the default path. UsingLOCATIONshould limit it to the Python we want (e.g., via GEOSpyD module)
- Fixed bad behavior in the
MPI_STACKdetection on subsequent calls toDetermineMPIStack
- Fixed
mepo statuscode to allow for quiet failures. There seems to be an odd scenario on non-internet-connected machines wheremepo statuswill fail in blobless clones of some repos. Runningmepo statuson a node with internet access seems to fix this.
- For F2PY3 code, set CMake Policy CMP0132 if Python is 3.12+ or higher
- Add test to see if
ifortspits out the deprecation warning. Needed to hack f2py/meson - Set minimum CMake version to 3.24 for the meson + f2py fix
- Do not include
DetermineMPIStackif MPI is not found
- Added new
esma_capture_mepo_statusfunction (inesma_support/esma_mepo_status.cmake) to capture the output ofmepo status --hasheswhenmepowas used to clone the fixture. It will output this into a fileMEPO_STATUS.rcwhich is installed to${CMAKE_INSTALL_PREFIX}/etcand can be used to help determine the exact state of the fixture at build time.
- Support for building GEOSgcm with Spack using MAPL as library
- Update
esma_create_stub_componentto look formapl_stub.plin$MAPL_BASE_DIR/etc(which is a variable defined by ecbuild) - Update
esma_generate_automatic_codeto look formapl_acg.plin$MAPL_BASE_DIR/etc(which is a variable defined by ecbuild) - Require CMake 3.18 for features used in above updates
- Update
- Update to CircleCI orb v5
- Add
FindJeMalloc.cmakefor use with builds of GEOSgcm - Add preliminary LLVMFlang support
- Add workaround to support OpenMP linking with NAG under CMake
- Edit the file
esma_add_fortran_submodules.cmaketo add theSMODword to the target submodule file name.
- Move detection out of
FindBaselibs.cmakefor Spack purposes
- Add more features to the file
esma_add_fortran_submodules.cmakeso that the functionesma_add_fortran_submodulescan handle several level of subdirectories.
- Add the file
esma_add_fortran_submodules.cmakein theesma_supportfolder. The file contains a function that prevents conflicts when several submodule files have the same name.
- Fixes for NVHPC
- Fix issue with use of
mesonandf2pywith more complex codes- NOTE: Requires a fix to
f2pythat is not yet released. You can see the change in thenumpyrepo at numpy/numpy#26659 This fix has been applied to GEOSpyD 2.44.0-0
- NOTE: Requires a fix to
- Add FMS as a library rather than part of Baselibs
- Added
Findlibyaml.cmaketo support FMS with yaml support- FMS with YAML support is controlled by
-DFMS_BUILT_WITH_YAMLas there is no good way to determine how FMS was built after-the-fact. For now the default isOFFbut this will change in the future
- FMS with YAML support is controlled by
- Added preliminary support for Hygon processors with GCC
- Change the minimum required GCC compiler version to be 11.2
- Change the minumum required NAG compiler verison to be 7.2
- Update CI to use Baselibs v8.0.2
- Fix issue with
ld_classicdetection on macOS. Not all XCode versions need this
- Added YAML linter
- Fix bug with meson/distutils for python 3
- Edit
FindESMF.cmaketo useESMF::ESMFas the primary target and makeESMFan alias forESMF::ESMFif it doesn't exist - Updates for building with Clang on macOS
- Add
-Wl,-ld_classicto linker flags for all macOS - Add
-Wno-implicit-intfor Clang on macOS
- Add
- Fix for using f2py and Python 3.12
- Add suppression of remark 10488 for Intel Fortran Classic which is a warning about ifort deprecation in late 2024
- Set
BUILT_ON_SLES15toFALSEif not building on SLES15. Before it was blank
- Change
make teststo only do tests labeled withESSENTIAL. Add newmake tests-allto run all tests.
- Added
-quietflag for NAG compilation. This suppresses the compiler banner and the summary line, so that only diagnostic messages will appear.
- Quoted generator expression arguments (see #308)
- Added new
DetermineMPIStack.cmakefile that will detect the MPI Stack being used- The allowed stacks are
openmpi,mpich,intel,mvapich,mptwhich will be set in theMPI_STACKvariable- Can be overridden by setting
MPI_STACKto one of the allowed values via-DMPI_STACK=...
- Can be overridden by setting
- Will also set
MPI_STACK_VERSIONto the version of the stack being used- NOTE: This is the version of the stack not the version of MPI supported by the stack
- The allowed stacks are
- Updated
FindESMF.cmaketo the version from ESMF develop branch, commit da8f410. Will be in ESMF 8.6.1+- This provides the
ESMF::ESMFalias for ESMF library for non-Baselibs builds
- This provides the
- Added
ESMF::ESMFalias for ESMF library- Needed to avoid an issue UFS has with MAPL/GOCART (see GEOS-ESM/MAPL#2569)
- Needed for Baselibs builds of MAPL 2.44 and higher as we now move to use
ESMF::ESMFas the target - Will be added to
FindESMF.cmakein a future release of ESMF, so we only add the alias if it doesn't exist
- Update CI to v2 orb
- Add
FindESMF.cmakefor use with Spack builds of GEOSgcm - Added support for Hygon processors with Intel Fortran
- Fixes for
ifxcompiler- Set
nouninitfor check flags when building with Debug build type - Remove some debug flags that don't exist with
ifx - Remove
-init=snanas that causes compiler faults with some MAPL files
- Set
- For NAG, turn off setting of
ESMF_HAS_ACHAR_BUGCMake option as it seems no longer needed
- The
ESMF_HAS_ACHAR_BUGCMake option is deprecated and will be removed in a future release
- Fixes for building with Intel Fortran Classic on macOS on Arm under Clang 15 and Rosetta
- Uses
ld_classicas the linker
- Uses
- Add setting
-Wno-implicit-intwhen running withicx
- Updates for supporting Milan at NCCS
- Makes f2py2 only work if python2 is available. If not, all f2py2 is disabled
- Add new
BUILT_ON_SLES15variable since building on SLES15 means running on SLES15
- Turn off warning 10121 with Intel Fortran as it is noise
- Introduced
-not_openmpflag for NAG to avoid "Questionable" warning messages from compiler about unused openmp constructs.
- Modified default flags for NAG to allow more aggressive debug flags. Mostly this is by using a more specific list of procedures for which interface "mismatch" warnings are suppressed.
- Added support for building with Intel Fortran in Rosetta2 (generic x86_64 processor)
- Fixed a build incompatibity with ESMF that affects
MAPL_Config::SetAttribute*()
- Update CI to use Baselibs default from CircleCI orb
- Suppress common unneeded warnings with all debug builds with Intel
warning #5462: Global name too longwarning #10337: option '-fno-builtin' disables '-imf*' option
- Added
QUIET_DEBUGoption to remove the-warn unusedflag for Intel and add some common warning suppressions (Intel only at the moment)
- Updated CI to use Baselibs 7.13.0
- Remove
BUILT_ON_ROMEdetection at NAS as all nodes are now TOSS4
- Updated Python detection to use
FIND_STRATEGY VERSION. This is needed due to mixing of Python 2 and 3 in the same environment.
- Update Intel Fortran flags
- NOTE: This is non-zero-diff for Intel Release and Aggressive builds of GEOS
- Add detection of Azure
- Change site detection code to distinguish between Rome and non-Rome nodes at NAS (since there is an OS difference between them that has run-time effects)
- Added an
HDF5::HDF5target toFindBaselibs.cmakefor compatibility with code that usesHDF5::HDF5.- NOTE: This is hack for Baselibs builds until we can move to using Spack for libraries
- Updated label-enforcer to v3 and added custom message
- Updated CI to Baselibs 7.7
- Added
IntelLLVM_Fortran.cmakefile- At the moment a copy of
Intel_Fortran.cmakewith-fp-model sourceand-fp-model consistentblanked due to changes with ifx
- At the moment a copy of
- Moved to use GitHub Actions for label enforcement
- Add extra flags for Intel Fortran to allow for stricter builds
-stand f18to enable Fortran 2018 Standard compliance-diag-error 6188to cause if(integer) to fail-diag-error 6192to cause logical set to integer to fail-diag-disable 5268to suppress warning for long source lines (which our macros often make)
- Added compiler flags for
x86_64target architecture andLinux, when it is missed byIntelprocessor description. Tested for building MAPL/2.22.0 on Ubuntu 22.04 Linux. Ubuntu is running using the UTM virtualizer on MacOS Monterey with x86_64 architecture system.
- Added a print for processor description
- Add
NETCDF_INCLUDE_DIRSas alias toINC_NETCDFfor spack compatibility when using Baselibs
- Added check to
esma.cmaketo ensureCMAKE_INSTALL_PREFIXis writable - Add
-save-tempsto GNU debug flags
- Updated CI and changelog enforcer
- Changed the Apple M1 detection to be "Apple M" in anticipation of M2 machines.
- Updated the CI to work with latest Baselibs
- Updated the list of files ignored by CPack
- Update GNU Release compile target architecture from
westmeretohaswell- This is done as it seems to fix an issue with GCC 12
- NOTE: This is non-zero-diff for GNU Release
- Update M1 flags on GNU from GEOS testing
- Also add M1-Rosetta2 flags from @climbfuji
- NAG Fortran flags no longer have
-dustyby default. - GNU Fortran flag added to disable warnings about unused dummy arguments. (Not terribly useful, though as at least one other compiler lacks such a flag. So we still need the
_UNUSED_DUMMYfpp macro.) - Explicitly made
USE_F2PY=OFFthe default for NAG.
- Add dependency to MPI for ESMF when building with ESMF built within Baselibs.
- Changes to use the
FindESMF.cmakemodule directly from ESMF build. - Add ALIAS library for
ESMFdue to historical use ofesmfin GEOS
- Removed
FindESMF.cmaketo prefer using the version from ESMF itself. Note thatCMAKE_MODULE_PATHfor Baselibs users is automatically appended. Users of ESMA_cmake that don't use Baselibs, will need to append their own.
- Moved to use
find_package(ESMF)for even use with Baselibs. This allows GEOS to more smoothly accept changes in ESMF builds by basing off ofesmf.mk. - Changed
FindESMF.cmaketo preferSHAREDlibraries overSTATICto match how ESMF-in-Baselibs worked before moving tofind_package - Changes to support non-Baselibs builds
- Move
find_package(MPI)code inFindBaselibs.cmakeonly if Baselibs found - Remove code if not using Baselibs; should be placed in each fixture/directory
- Move
- Changed how f2py handles Fortran compiler detection
- Updated to circleci-tools orb for CI
- Fix bug in f2py testing
- Remove
PGI.cmakefile as NVHPC is the correct file for now. Add symlink
- Added preliminary support for GNU on M1 Macs
- Various changes to support building GEOS with Spack
- Edit to FindESMF.cmake file
- Move
include(DetermineSite) - Fix for finding ecbuild cmake files
- Fixes for f2py scripts
- Add
FindESMF.cmakepackage. Used for Spack builds not Baselibs builds
- Compress CircleCI artifacts
- Add NVHPC Compiler Flag file
- Changed the default vectorization flag for Intel Fortran from
-xCORE-AVX2to-march=core-avx2. This change allows GEOS to run on both Intel and AMD EPYC chips at NAS without need for another build.- This change is non-zero-diff on Intel chips
- The Intel/AMD "run on both" is only valid on TOSS
- See #240 for more information
- Fix for
FindGitInfoif in a git-stripped distribution
- Move finding of OpenMP, MPI, and Threads above
FindBaselibs. This was interfering with f2py...for some reason.
- Call
FindBaselibs.cmakeearlier in sequence. This sets theCMAKE_PREFIX_PATHbefore anyfind_package()calls for Baselibs libraries (i.e., GFE)
- Remove
find_package()calls for GFE libraries fromFindBaselibs.cmake
- Updated CI to use both gfortran and Intel, and Baselibs 6.2.8
- Attempt to detect SSL library path and use that with f2py
- Added warp nodes as NCCS nodes
- Added
esma_postinstall.cmakescript for tarring up code post install
- Fixed bug in caching
BASEDIR
- Changed the warning for missing Basedir to be more prominent
- Created a new set of flags for Intel that mimic the old non-vectorized Release flags
- Fix issue with
teststarget due to bad refactor
- Refactored ESMA_cmake
- Changed the Release flags for the Intel Compiler to be the Vectorized flags. Testing shows it is zero-diff and faster, however we are moving the minor version number as a signal of "just in case"
- Cache BASEDIR when a valid path is found
- Fix pthreads use on Linux with NAG compiler
esma_add_subdirectorynow uses the newesma_mepo_style
- Prevent build or install directories from having a comma (due to -Wl issue)
- New function
esma_mepo_stylewhich searches for a directory under any mepo style option and returns a variable filled in accordingly. It can optionally return a bool FOUND argument. Throws an ecbuild error if dir is not found and FOUND argument is not used.
- Updated some MAPL references in the stub and ACG code
- Added
librtandlibdlto theESMF_LIBRARIESon Linux.
- Added
esma_cpack.cmaketo allow for creating tarballs of code withmake package_sourceormake dist
- If building
CMAKE_BUILD_TYPE=Debugthe f2py steps are now more verbose to aid in debugging
- Changes to
esma_add_f2pyX_modulemacros in handling thepython -c 'import foo_'tests. AddsLD_LIBRARY_PATHto it. Still does not fix all problems.
- Fixed rpath handling on macOS.
- Change
ESMA_USE_GFE_NAMESPACEdefault toON. This requires Baselibs v6.2 or the latest libraries - On Linux, link to
libesmf.sorather thanlibesmf_fullylinked.soper advice of ESMF developers. - On macOS, link to
libesmf.dylibrather thanlibesmf.a. This requires Baselibs v6.2.5 as that has a bug fix for ESMF dylib handling
- If building
CMAKE_BUILD_TYPE=Debugthe f2py steps are now more verbose to aid in debugging
- Changes to
esma_add_f2pyX_modulemacros in handling thepython -c 'import foo_'tests. AddsLD_LIBRARY_PATHto it. Still does not fix all problems.
-
Add ability to detect BASEDIR from the environment.
-
Add checks to
FindBaselibs.cmaketo make sure BASEDIR has the right arch (as defined byuname -s) as this is still a requirement for GEOS run scripts. The code will also try to make a valid BASEDIR. That is, if you pass in/path/to/baselibs, but it sees a/path/to/baselibs/arch/libexists, it will allow that and try to use it. -
Previous option
CPP_DEBUG_<targethas now been replaced with a more fine-grained combination of cmake variables:XFLAGSandXFLAGS_SOURCES. To use$cmake .. -DXFLAGS="foo bar=7 DEBUG" -DXFLAGS_SOURCES="<file1> <file2>" $ makeNOTE: This change requires checking for specified sources in every directory (or rather in those that use
esma_set_this()and thus add some overhead to cmake. We may later decide to implement a per-target or per-directory pair of flags to address this, but that will be harder for the user to use.
- Fixes for F2PY and GNU as well as some cleanup
- Removed extra space in diagnostic message about missing directories
- Fixed a bug with double precision handling and GNU
- A new CMake variable
CPP_DEBUG_<target>has been added for each target. The value is a list of source files that should receive the "-DDEBUG" compile definition. To use:To use with multiple files use quotes and separate with$ cmake .. -DCPP_DEBUG_MAPL.base=MAPL_base.F90;$ cmake .. -DCPP_DEBUG_MAPL.base="MAPL_base.F90;MAPL_CFIO.F90"
- Added Python2 and Python3 versions of generic Python F2PY macros.
- Added option
BUILD_WITH_PFLOGGERwhich defaults toON. This is added for collaborators that do not use pFlogger
- Added new
ESMA_USE_GFE_NAMESPACEwhich defaults toOFF. If you set this toON, you must then use the new GFE namespace style in CMake, e.g.,gftl==>GFTL::gftl.
- Fixed Aggressive GNU flags on Graviton2 processors
- Added test for GNU and Intel to try and determine if building on Intel or AMD chips and choose correct vectorization flags.
- Changed
-extend_sourceto-extend-sourcedue to warning print in Intel 2021
- Fixed Aggressive flags with GCC 10
- Add ability for
Aggressivebuild type (note: requires GEOS-ESM/ecbuild geos/v1.0.6 to use as ecbuild restricts allowedCMAKE_BUILD_TYPE)
- Fixed
new_esma_generate_automatic_codemacro to better handle automatically generated files (see GEOS-ESM/GEOSchem_GridComp#108)
- Add changelog enforcer
- Remove
Externals.cfgas part ofmanage_externalsdeprecation
- Added Docker authentication for CI
- Updates from UFS to enable use with MAPL without Baselibs (Requires MAPL 2.4.0+)
- Fix for default Fortran module directory
- Add support for Arm64 machines
- Requirement for MKL is removed (MKL is used if found, otherwise BLAS/LAPACK is used)
- Update Intel Debug flags to be more comprehensive
- Add CircleCI testing
- Fix for handling f2py tests
- Fix for coding of AWS detection found on Ubuntu/CircleCI
- Fixes for handling MOM/MOM6 shared libraries on macOS
- Add support to detect AWS systems
- Add an option
USE_F2PYwhich by default isONpreserving current behavior. (Useful on pioneer systems and containers where f2py might not be available.)
- Updates in support of MAPL 2.2
- Fix up how testing is done
- Generalize the stub generator
- Use
find_fileto generalize path to MAPL utilities (acg)
- Updated to ecbuild geos/v1.0.5
- Updates for JEDI Compatibility
- Support for GCC 10
- See releases tab for more information
- Typo in message in
esma_add_library().
- Added macro
esma_add_f2py_module()which wraps existingadd_f2py_module()and a call toadd_test().
- Allow ecbuild to be mounted as
ecbuild@,@ecbuild, orecbuild
NOTE: This version of ESMA_cmake now requires Baselibs 6.0.10 or higher due to the need for yaFyaml and pFlogger
- Made gFTL-shared, yaFyaml, and pFlogger REQUIRED
- Added ability for OpenMP and Double Precision to be used with f2py Used by the MAM Optics code
- Add ability to allow @-symbol to be at beginning or end of sub-repo (still in progress)
- Emit BASEDIR location during CMake
- Added macro to verify availability of Python modules
Use:
esma_find_python_module(<module> [REQUIRED]) - Added macro to add a post-build check availability of Python modules
Use:
esma_check_python_module(<module>) - Added option is `esma_add_library() to use SHARED
- Also uptick the ecbuild version in Externals.cfg to prevent a CMake warning.
- Fix for macOS and Clang found by @tclune
- Updates to f2py detection
- Added flag for Intel to suppress long name warning.
- Turn on MPI_DETERMINE_LIBRARY_VERSION
- Updates to f2py detection for Python 3
NOTE This release of ESMA Cmake is not backwardly compatible to the 1.x series.
- Updates for Baselibs 6.x
- Needed because CMake interface to FLAP changed
- Also, this version of ESMA_cmake is based on pFUnit 4 and as such uses find_package(PFUNIT) and then uses the PFUNIT_FOUND variable.
- Add
FINDLOC()detection
- Adds CODEOWNERS
- Adds QUIET to find_package of non-required libraries
- Convert options to use OPTION()
- Fixes to esma_add_library from #34
- Fixes for debug flag setting from #17
- Update LaTeX detection
- Change the @ecbuild location to GEOS-ESM
- Updates necessary for building on macOS (f2py)
- Add code to the automatic code generation macros to install the generated RC files to etc/
- Add executable bit to F2Py shared objects
- Add MPI option to UseF2Py
- Add GitInfo package
- Fix cmake autodetect when embedded.