From 1728a6bf0e87e75e5d67067905e4acdad25bf7de Mon Sep 17 00:00:00 2001 From: Anthony Islas Date: Fri, 12 Jul 2024 16:38:22 -0700 Subject: [PATCH] External folder compilation for da build --- var/CMakeLists.txt | 12 + var/external/bufr/CMakeLists.txt | 267 ++++++++++++++++++ var/external/crtm_2.3.0/CMakeLists.txt | 35 +++ var/external/crtm_2.3.0/libsrc/CMakeLists.txt | 202 +++++++++++++ var/external/wavelet/CMakeLists.txt | 65 +++++ 5 files changed, 581 insertions(+) create mode 100644 var/CMakeLists.txt create mode 100644 var/external/bufr/CMakeLists.txt create mode 100644 var/external/crtm_2.3.0/CMakeLists.txt create mode 100644 var/external/crtm_2.3.0/libsrc/CMakeLists.txt create mode 100644 var/external/wavelet/CMakeLists.txt diff --git a/var/CMakeLists.txt b/var/CMakeLists.txt new file mode 100644 index 0000000000..3cb2288cc4 --- /dev/null +++ b/var/CMakeLists.txt @@ -0,0 +1,12 @@ + +if ( ${ENABLE_CRTM} ) + add_subdirectory( external/crtm_2.3.0 ) +endif() + +if ( ${ENABLE_BUFR} ) + add_subdirectory( external/bufr ) +endif() + +if ( ${ENABLE_WAVELET} ) + add_subdirectory( external/wavelet ) +endif() diff --git a/var/external/bufr/CMakeLists.txt b/var/external/bufr/CMakeLists.txt new file mode 100644 index 0000000000..43ef08ad9f --- /dev/null +++ b/var/external/bufr/CMakeLists.txt @@ -0,0 +1,267 @@ +# WRF CMake Build +get_filename_component( FOLDER_COMPILE_TARGET ${CMAKE_CURRENT_SOURCE_DIR} NAME ) + +add_library( + ${FOLDER_COMPILE_TARGET} + STATIC + adn30.f + atrcpt.f + bfrini.f + blocks.f + bort_exit.c + bort.f + bort2.f + bvers.f + cadn30.f + capit.f + ccbfl.c + chekstab.f + chrtrn.f + chrtrna.f + cktaba.f + closbf.f + closmg.f + cmpia.c + cmpmsg.f + cmsgini.f + cnved4.f + cobfl.c + conwin.f + copybf.f + copymg.f + copysb.f + cpbfdx.f + cpdxmm.f + cpymem.f + cpyupd.f + crbmg.c + cread.c + cwbmg.c + datebf.f + datelen.f + digit.f + drfini.f + drstpl.f + dumpbf.f + dxdump.f + dxinit.f + dxmini.f + elemdx.f + errwrt.f + getabdb.f + getbmiss.f + getlens.f + getntbe.f + gets1loc.f + gettagpr.f + gettbh.f + getvalnb.f + getwin.f + i4dy.f + ibfms.f + icbfms.f + ichkstr.f + icmpdx.f + icopysb.f + icvidx.c + idn30.f + idxmsg.f + ifbget.f + ifxy.f + igetdate.f + igetfxy.f + igetntbi.f + igetntbl.f + igetsc.f + igettdi.f + inctab.f + invcon.f + invmrg.f + invtag.f + invwin.f + iok2cpy.f + ipkm.f + ipks.f + ireadmg.f + ireadmm.f + ireadns.f + ireadsb.f + irev.for + ishrdx.f + isize.f + istdesc.f + iupb.f + iupbs01.f + iupbs3.f + iupm.f + iupvs01.f + jstchr.f + jstnum.f + lcmgdf.f + lmsg.f + lstjpb.f + makestab.f + maxout.f + mesgbc.f + mesgbf.f + minimg.f + mrginv.f + msgfull.f + msgini.f + msgupd.f + msgwrt.f + mtinfo.f + mvb.f + nemock.f + nemtab.f + nemtba.f + nemtbax.f + nemtbb.f + nemtbd.f + nenubd.f + nevn.f + newwin.f + nmsub.f + nmwrd.f + numbck.f + nummtb.c + numtab.f + numtbd.f + nvnwin.f + nwords.f + nxtwin.f + openbf.f + openbt.f + openmb.f + openmg.f + pad.f + padmsg.f + parstr.f + parusr.f + parutg.f + pkb.f + pkbs1.f + pkc.f + pkftbv.f + pktdd.f + pkvs01.f + posapx.f + rbytes.c + rcstpl.f + rdbfdx.f + rdcmps.f + rdmemm.f + rdmems.f + rdmgsb.f + rdmsgb.f + rdmsgw.f + rdmtbb.f + rdmtbd.f + rdtree.f + rdusdx.f + readdx.f + readerme.f + readlc.f + readmg.f + readmm.f + readmt.f + readns.f + reads3.f + readsb.f + restd.c + rewnbf.f + rjust.f + rsvfvm.f + rtrcpt.f + seqsdx.f + setblock.f + setbmiss.f + sntbbe.f + sntbde.f + status.f + stbfdx.f + stdmsg.f + stndrd.f + stntbi.f + stntbia.f + strcln.f + strcpt.f + string.f + strnum.f + strsuc.f + stseq.c + tabent.f + tabsub.f + trybump.f + ufbcnt.f + ufbcpy.f + ufbcup.f + ufbdmp.f + ufbevn.f + ufbget.f + ufbin3.f + ufbint.f + ufbinx.f + ufbmem.f + ufbmex.f + ufbmms.f + ufbmns.f + ufbovr.f + ufbpos.f + ufbqcd.f + ufbqcp.f + ufbrep.f + ufbrms.f + ufbrp.f + ufbrw.f + ufbseq.f + ufbsp.f + ufbstp.f + ufbtab.f + ufbtam.f + ufdump.f + upb.f + upbb.f + upc.f + upds3.f + upftbv.f + ups.f + uptdd.f + usrtpl.f + valx.f + wrcmps.f + wrdesc.c + wrdlen.for + wrdxtb.f + writcp.f + writdx.f + writlc.f + writsa.f + writsb.f + wrtree.f + wtstat.f + ) + +set_target_properties( + ${FOLDER_COMPILE_TARGET} + PROPERTIES + Fortran_MODULE_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${FOLDER_COMPILE_TARGET} + EXPORT_PROPERTIES Fortran_MODULE_DIRECTORY + Fortran_FORMAT FIXED + ) + +set_source_files_properties( + irev.for + wrdlen.for + TARGET_DIRECTORY ${FOLDER_COMPILE_TARGET} + PROPERTIES + COMPILE_DEFINITIONS ${CMAKE_C_BYTE_ORDER} # Use C byte order to mirror make build + ) + +install( + TARGETS ${FOLDER_COMPILE_TARGET} + EXPORT ${EXPORT_NAME}Targets + RUNTIME DESTINATION bin/ + ARCHIVE DESTINATION lib/ + LIBRARY DESTINATION lib/ + ) diff --git a/var/external/crtm_2.3.0/CMakeLists.txt b/var/external/crtm_2.3.0/CMakeLists.txt new file mode 100644 index 0000000000..d8c5169513 --- /dev/null +++ b/var/external/crtm_2.3.0/CMakeLists.txt @@ -0,0 +1,35 @@ +# WRF CMake Build +# get_filename_component( FOLDER_COMPILE_TARGET ${CMAKE_CURRENT_SOURCE_DIR} NAME) +set( FOLDER_COMPILE_TARGET CRTM ) + +add_library( + ${FOLDER_COMPILE_TARGET} + STATIC + ) + +set_target_properties( + ${FOLDER_COMPILE_TARGET} + PROPERTIES + Fortran_MODULE_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${FOLDER_COMPILE_TARGET} + EXPORT_PROPERTIES Fortran_MODULE_DIRECTORY + Fortran_FORMAT FREE + ) + + +# target_link_libraries( ${FOLDER_COMPILE_TARGET} +# PRIVATE +# ${netCDF_LIBRARIES} +# $<$:$> +# $<$:$> +# $ +# ) + +add_subdirectory( libsrc ) + +install( + TARGETS ${FOLDER_COMPILE_TARGET} + EXPORT ${EXPORT_NAME}Targets + RUNTIME DESTINATION bin/ + ARCHIVE DESTINATION lib/ + LIBRARY DESTINATION lib/ + ) diff --git a/var/external/crtm_2.3.0/libsrc/CMakeLists.txt b/var/external/crtm_2.3.0/libsrc/CMakeLists.txt new file mode 100644 index 0000000000..4be7a34b93 --- /dev/null +++ b/var/external/crtm_2.3.0/libsrc/CMakeLists.txt @@ -0,0 +1,202 @@ +target_include_directories( ${FOLDER_COMPILE_TARGET} + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR} + ) + + +target_sources( + ${FOLDER_COMPILE_TARGET} + PRIVATE + # The list of files that need preprocessing + CRTM_Module.fpp + + # The list of regular source files + Type_Kinds.f90 + File_Utility.f90 + Message_Handler.f90 + Date_Utility.f90 + DateTime_Utility.f90 + Timing_Utility.f90 + Compare_Float_Numbers.f90 + Endian_Utility.f90 + Binary_File_Utility.f90 + Sort_Utility.f90 + Search_Utility.f90 + String_Utility.f90 + Fundamental_Constants.f90 + Hyperbolic_Step.f90 + Spectral_Units_Conversion.f90 + UnitTest_Define.f90 + SensorInfo_Parameters.f90 + Subset_Define.f90 + SpcCoeff_Define.f90 + ACCoeff_Define.f90 + NLTECoeff_Define.f90 + SpcCoeff_Binary_IO.f90 + ACCoeff_Binary_IO.f90 + NLTECoeff_Binary_IO.f90 + CloudCoeff_Define.f90 + CloudCoeff_Binary_IO.f90 + AerosolCoeff_Define.f90 + AerosolCoeff_Binary_IO.f90 + CRTM_Options_Define.f90 + CRTM_AOD_Module.f90 + IRwaterCoeff_Define.f90 + SEcategory_Define.f90 + LSEatlas_Define.f90 + MWwaterCoeff_Define.f90 + FitCoeff_Define.f90 + MWwaterLUT_Define.f90 + NESDIS_AMSRE_SICEEM_Module.f90 + NESDIS_AMSRE_SNOWEM_Module.f90 + NESDIS_AMSU_SICEEM_Module.f90 + NESDIS_AMSU_SnowEM_Module.f90 + NESDIS_MHS_SICEEM_Module.f90 + NESDIS_MHS_SnowEM_Module.f90 + NESDIS_LandEM_Module.f90 + NESDIS_SEAICE_PHYEM_MODULE.f90 + NESDIS_SnowEM_Parameters.f90 + NESDIS_SSMI_Module.f90 + NESDIS_SSMI_SIceEM_Module.f90 + NESDIS_SSMI_SnowEM_Module.f90 + NESDIS_SSMIS_SeaIceEM_Module.f90 + NESDIS_SSMIS_SnowEM_Module.f90 + NESDIS_SnowEM_ATMS_Parameters.f90 + NESDIS_ATMS_SnowEM_Module.f90 + NESDIS_ATMS_SeaICE_LIB.f90 + NESDIS_ATMS_SeaICE_Module.f90 + CRTM_Utility.f90 + CRTM_Interpolation.f90 + CRTM_SpcCoeff.f90 + CRTM_TauCoeff.f90 + TauCoeff_Define.f90 + CRTM_AerosolCoeff.f90 + CRTM_CloudCoeff.f90 + CRTM_IRlandCoeff.f90 + CRTM_IRwaterCoeff.f90 + CRTM_IRsnowCoeff.f90 + CRTM_IRiceCoeff.f90 + CRTM_VISlandCoeff.f90 + CRTM_VISwaterCoeff.f90 + CRTM_VISsnowCoeff.f90 + CRTM_VISiceCoeff.f90 + CRTM_MWwaterCoeff.f90 + CRTM_Atmosphere_Define.f90 + CRTM_Cloud_Define.f90 + CRTM_Aerosol_Define.f90 + CRTM_Surface_Define.f90 + CRTM_SensorData_Define.f90 + CRTM_SensorInfo.f90 + CRTM_ChannelInfo_Define.f90 + CRTM_Geometry_Define.f90 + CRTM_GeometryInfo_Define.f90 + CRTM_GeometryInfo.f90 + CRTM_Atmosphere.f90 + iAtm_Define.f90 + CRTM_CloudCover_Define.f90 + CRTM_Model_Profiles.f90 + CRTM_AerosolScatter.f90 + ASvar_Define.f90 + CRTM_CloudScatter.f90 + CSvar_Define.f90 + CRTM_MoleculeScatter.f90 + CRTM_SfcOptics_Define.f90 + CRTM_SfcOptics.f90 + CRTM_IR_Land_SfcOptics.f90 + CRTM_IR_Water_SfcOptics.f90 + CRTM_IR_Snow_SfcOptics.f90 + CRTM_IR_Ice_SfcOptics.f90 + CRTM_MW_Land_SfcOptics.f90 + CRTM_MW_Water_SfcOptics.f90 + CRTM_MW_Snow_SfcOptics.f90 + CRTM_MW_Ice_SfcOptics.f90 + CRTM_VIS_Land_SfcOptics.f90 + CRTM_VIS_Water_SfcOptics.f90 + CRTM_VIS_Snow_SfcOptics.f90 + CRTM_VIS_Ice_SfcOptics.f90 + CRTM_SEcategory.f90 + CRTM_LowFrequency_MWSSEM.f90 + CRTM_Fastem1.f90 + CRTM_FastemX.f90 + Reflection_Correction_Module.f90 + Azimuth_Emissivity_Module.f90 + Azimuth_Emissivity_F6_Module.f90 + Small_Scale_Correction_Module.f90 + Large_Scale_Correction_Module.f90 + Foam_Utility_Module.f90 + Slope_Variance.f90 + Guillou.f90 + Ellison.f90 + Liu.f90 + Fresnel.f90 + CRTM_IRSSEM.f90 + CRTM_AtmOptics.f90 + CRTM_AtmOptics_Define.f90 + AOvar_Define.f90 + CRTM_Planck_Functions.f90 + RTV_Define.f90 + SOI_Module.f90 + ADA_Module.f90 + Emission_Module.f90 + CRTM_RTSolution_Define.f90 + Common_RTSolution.f90 + CRTM_RTSolution.f90 + CRTM_AntennaCorrection.f90 + CRTM_AncillaryInput_Define.f90 + SSU_Input_Define.f90 + Zeeman_Input_Define.f90 + CRTM_Parameters.f90 + CRTM_LifeCycle.f90 + CRTM_Forward_Module.f90 + CRTM_Tangent_Linear_Module.f90 + CRTM_Adjoint_Module.f90 + CRTM_K_Matrix_Module.f90 + CRTM_AtmAbsorption.f90 + CRTM_Predictor.f90 + CRTM_Predictor_Define.f90 + ODAS_AtmAbsorption.f90 + ODAS_Predictor.f90 + ODAS_Predictor_Define.f90 + ODAS_Binary_IO.f90 + ODAS_Define.f90 + ODAS_TauCoeff.f90 + ODPS_AtmAbsorption.f90 + ODPS_Predictor.f90 + ODPS_Predictor_Define.f90 + PAFV_Define.f90 + ODPS_Binary_IO.f90 + ODPS_Define.f90 + ODPS_TauCoeff.f90 + CRTM_GeometryInfo.f90 + ODSSU_AtmAbsorption.f90 + ODSSU_Define.f90 + ODSSU_Binary_IO.f90 + ODSSU_TauCoeff.f90 + Profile_Utility_Parameters.f90 + ODPS_CoordinateMapping.f90 + ODZeeman_TauCoeff.f90 + ODZeeman_AtmAbsorption.f90 + ODZeeman_Predictor.f90 + Zeeman_Utility.f90 + CRTM_NLTECorrection.f90 + NLTE_Parameters.f90 + NLTE_Predictor_Define.f90 + NLTE_Predictor_IO.f90 + ) +if ( ${CMAKE_Fortran_COMPILER_ID} STREQUAL "PGI" ) + set_source_files_properties( + Sort_Utility.f90 + TARGET_DIRECTORY ${FOLDER_COMPILE_TARGET} + PROPERTIES + COMPILE_OPTIONS -tp=px + ) +endif() + +# if ( ${CMAKE_Fortran_COMPILER_ID} STREQUAL "Cray" ) +# set_source_files_properties( +# Sort_Utility.f90 +# TARGET_DIRECTORY ${FOLDER_COMPILE_TARGET} +# PROPERTIES +# COMPILE_FLAGS -01 # TODO - find a better way to control these flags +# ) +# endif() diff --git a/var/external/wavelet/CMakeLists.txt b/var/external/wavelet/CMakeLists.txt new file mode 100644 index 0000000000..46650e0af4 --- /dev/null +++ b/var/external/wavelet/CMakeLists.txt @@ -0,0 +1,65 @@ +# WRF CMake Build +get_filename_component( FOLDER_COMPILE_TARGET ${CMAKE_CURRENT_SOURCE_DIR} NAME ) + +add_library( + ${FOLDER_COMPILE_TARGET} # C library + STATIC + awaprogs/chap05/cd.c + dwtai.c + dwtai_w.c + dwtai2.c + dwtai2_w.c + DWTAPartition.c + idwtai.c + idwtai_w.c + idwtai2.c + idwtai2_w.c + l2norm.c + PrintFilter.c + awaprogs/chap05/qf.c + qf_w.c + qftest.c + qftest_w.c + TestFilter.c + awaprogs/chap09/xp.c + ) + + +add_library( + ${FOLDER_COMPILE_TARGET}f # Fortran library + STATIC + dwta_partition.F90 + print_filter.F90 + test_filter.F90 + ) + + +set_target_properties( + ${FOLDER_COMPILE_TARGET}f + PROPERTIES + Fortran_MODULE_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${FOLDER_COMPILE_TARGET} + EXPORT_PROPERTIES Fortran_MODULE_DIRECTORY + Fortran_FORMAT FIXED + ) + +target_compile_definitions( + ${FOLDER_COMPILE_TARGET} + PRIVATE + UNDERSCORE + ) + +target_include_directories( + ${FOLDER_COMPILE_TARGET} + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/awaprogs/chap02 + ${CMAKE_CURRENT_SOURCE_DIR}/awaprogs/chap05 + ) + +install( + TARGETS ${FOLDER_COMPILE_TARGET} ${FOLDER_COMPILE_TARGET}f + EXPORT ${EXPORT_NAME}Targets + RUNTIME DESTINATION bin/ + ARCHIVE DESTINATION lib/ + LIBRARY DESTINATION lib/ + )