diff --git a/.github/actions/buildcdeps/action.yaml b/.github/actions/buildcdeps/action.yaml index 9d775dd12..c1f89795b 100644 --- a/.github/actions/buildcdeps/action.yaml +++ b/.github/actions/buildcdeps/action.yaml @@ -16,6 +16,11 @@ inputs: default: $HOME/ESMF/lib/libg/Linux.gfortran.64.openmpi.default/esmf.mk required: False type: string + esmf_root: + description: 'Path to the installed ESMF library' + default: $HOME/ESMF + required: False + type: string src_root: description: 'Path to cdeps source' default: $GITHUB_WORKSPACE @@ -40,7 +45,13 @@ runs: mkdir build-cdeps pushd build-cdeps export ESMFMKFILE=${{ inputs.esmfmkfile }} + export ESMF_ROOT=${{ inputs.esmf_root }} export PIO=${{ inputs.pio_path }} + echo "ESMFMKFILE=${ESMFMKFILE}" + echo "ESMF_ROOT=${ESMF_ROOT}" + ls -l ${ESMFMKFILE} + ls -l ${ESMF_ROOT} + ls -lR ${ESMF_ROOT}/lib cmake ${{ inputs.cmake_flags }} ${{ inputs.src_root }} make VERBOSE=1 popd diff --git a/.github/workflows/extbuild.yml b/.github/workflows/extbuild.yml index 185f6d85d..66b1ba002 100644 --- a/.github/workflows/extbuild.yml +++ b/.github/workflows/extbuild.yml @@ -2,11 +2,12 @@ name: extbuild # Controls when the action will run. Triggers the workflow on push or pull request # events but only for the main branch -on: - push: - branches: [ main ] - pull_request: - branches: [ main ] +on: push +# on: +# push: +# branches: [ main ] +# pull_request: +# branches: [ main ] # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: @@ -19,7 +20,7 @@ jobs: CPPFLAGS: "-I/usr/include -I/usr/local/include " LDFLAGS: "-L/usr/lib/x86_64-linux-gnu " # Versions of all dependencies can be updated here - these match tag names in the github repo - ESMF_VERSION: v8.6.1 + ESMF_VERSION: v8.8.0 ParallelIO_VERSION: pio2_6_2 steps: - id: checkout-CDEPS @@ -69,6 +70,7 @@ jobs: uses: ./.github/actions/buildcdeps with: esmfmkfile: $ESMFMKFILE + esmf_root: ${GITHUB_WORKSPACE}/ESMF pio_path: ${GITHUB_WORKSPACE}/pio src_root: ${GITHUB_WORKSPACE} cmake_flags: " -Wno-dev -DCMAKE_BUILD_TYPE=DEBUG -DWERROR=ON -DCMAKE_Fortran_FLAGS=\"-DCPRGNU -g -Wall \ diff --git a/CMakeLists.txt b/CMakeLists.txt index a4e0aa82e..b055b0fc7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,9 +36,11 @@ endif() message("CMAKE_MODULE_PATH is ${CMAKE_MODULE_PATH}, CMAKE_Fortran_COMPILER is ${CMAKE_Fortran_COMPILER}") enable_language(Fortran) -if (TARGET esmf) - message("Target esmf is already found. Skip find_package ...") +if (TARGET ESMF::ESMF) + message("Target ESMF::ESMF is already found. Skip find_package ...") else() + list(APPEND CMAKE_MODULE_PATH $ENV{ESMF_ROOT}/cmake) + message("CMAKE_MODULE_PATH is ${CMAKE_MODULE_PATH}, before find_package ESMF") find_package(ESMF REQUIRED) endif() diff --git a/cmake/FindESMF.cmake b/cmake/FindESMF.cmake deleted file mode 100644 index 175a39488..000000000 --- a/cmake/FindESMF.cmake +++ /dev/null @@ -1,47 +0,0 @@ - -if (DEFINED ENV{ESMFMKFILE}) - message("ESMFMKFILE: $ENV{ESMFMKFILE}") -else() - message(FATAL_ERROR "ESMFMKFILE env variable is not defined") -endif() - -set(ESMFMKFILE $ENV{ESMFMKFILE}) - -# convert esmf.mk makefile variables to cmake variables until ESMF -# provides proper cmake package -file(STRINGS ${ESMFMKFILE} esmf_mk_text) -foreach(line ${esmf_mk_text}) - string(REGEX REPLACE "^[ ]+" "" line ${line}) # strip leading spaces - if (line MATCHES "^ESMF_*") # process only line starting with ESMF_ - string(REGEX MATCH "^ESMF_[^=]+" esmf_name ${line}) - string(REPLACE "${esmf_name}=" "" emsf_value ${line}) - set(${esmf_name} "${emsf_value}") - endif() -endforeach() -string(REPLACE "-I" "" ESMF_F90COMPILEPATHS ${ESMF_F90COMPILEPATHS}) -string(REPLACE " " ";" ESMF_F90COMPILEPATHS ${ESMF_F90COMPILEPATHS}) - -# We use only these 4 variables in our build system. Make sure they are all set -if(ESMF_VERSION_MAJOR AND - ESMF_F90COMPILEPATHS AND - ESMF_F90ESMFLINKRPATHS AND - ESMF_F90ESMFLINKLIBS) - message(" Found ESMF:") - message("ESMF_VERSION_MAJOR: ${ESMF_VERSION_MAJOR}") - message("ESMF_F90COMPILEPATHS: ${ESMF_F90COMPILEPATHS}") - message("ESMF_F90ESMFLINKRPATHS: ${ESMF_F90ESMFLINKRPATHS}") - message("ESMF_F90ESMFLINKLIBS: ${ESMF_F90ESMFLINKLIBS}") -else() - message("One of the ESMF_ variables is not defined") -endif() - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(ESMF - FOUND_VAR - ESMF_FOUND - REQUIRED_VARS - ESMF_F90COMPILEPATHS - ESMF_F90ESMFLINKRPATHS - ESMF_F90ESMFLINKLIBS - VERSION_VAR - ESMF_VERSION_STRING)