if(32BIT)
remove_definitions(-DOVERLOAD_R4)
remove_definitions(-DOVERLOAD_R8)
message ("Force 64 bits in namphysics")
if(CMAKE_Fortran_COMPILER_ID MATCHES "Intel")
    if(REPRO)
        string (REPLACE "-i4 -real-size 32" "-i4 -real-size 64" CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}")
    else()
        string (REPLACE "-i4 -real-size 32" "-i4 -real-size 64 -no-prec-div -no-prec-sqrt" CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}")
    endif()
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
    set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fdefault-real-8")
endif()
endif()

add_library(
    namphysics

    physics/grrad_nmmb.f
    physics/gscond.f
    physics/iounitdef.f
    physics/mersenne_twister.f
    physics/mfdeepcnv.f
    physics/mfpbl.f
    physics/mfshalcnv.f
    physics/moninedmf.f
    physics/moninq.f
    physics/namelist_soilveg.f
    physics/ozne_def.f
    physics/physparam.f
    physics/precpd_nmmb.f
    physics/rad_initialize_nmmb.f
    physics/radiation_aerosols_nmmb.f
    physics/radiation_astronomy_nmmb.f
    physics/radiation_clouds_nmmb.f
    physics/radiation_gases_nmmb.f
    physics/radiation_surface_nmmb.f
    physics/radlw_datatb.f
    physics/radlw_main_nmmb.f
    physics/radlw_param.f
    physics/radsw_datatb.f
    physics/radsw_main_nmmb.f
    physics/radsw_param.f
    physics/sascnvn.f
    physics/h2o_def.f
    physics/shalcnv.f

    physics/machine.F

    physics/funcphys.f90
    physics/physcons.f90
    physics/noahmp_tables.f90

    physics/module_BL_GFSPBL.F90
    physics/module_BL_GFSPBLEDMFHUR.F90
    physics/module_BL_GFSPBLHUR.F90
    physics/module_BL_MYJPBL.F90
    physics/module_CONSTANTS.F90
    physics/module_CONTROL.F90
    physics/module_CONVECTION.F90
    physics/module_CU_BMJ.F90
    physics/module_CU_SAS.F90
    physics/module_CU_SASHUR.F90
    physics/module_CU_SCALE.F90
    physics/module_DIAGNOSE.F90
    physics/module_GWD.F90
    physics/module_KINDS.F90
    physics/module_LS_LISS.F90
    physics/module_LS_NOAHLSM.F90
    physics/module_MICROPHYSICS.F90
    physics/module_MP_ETANEW.F90
    physics/module_MP_FER_HIRES.F90
    physics/module_MP_GFS.F90
    physics/module_MP_WSM6.F90
    physics/module_RADIATION.F90
    physics/module_RA_GFDL.F90
    physics/module_RA_RRTM.F90
    physics/module_SF_GFDL.F90
    physics/module_SF_JSFC.F90
    physics/module_SF_URBAN.F90
    physics/module_TURBULENCE.F90
    physics/module_mp_radar.F90
    physics/module_mp_thompson.F90
    physics/GFDL_parse_tracers.F90
    physics/gfdl_cloud_microphys.F90

    NAM_layer/module_SOLVER_GRID_COMP.F90
    NAM_layer/NAM_abstraction_layer.F90
    NAM_layer/NAM_diagnostics.F90
    NAM_layer/NAM_driver.F90
    NAM_layer/NAM_radiation_driver.F90
    NAM_layer/NAM_restart.F90
    NAM_layer/NAM_typedefs.F90
)

set_property(SOURCE physics/grrad_nmmb.f               APPEND_STRING PROPERTY COMPILE_FLAGS "-free -r8")
set_property(SOURCE physics/radiation_astronomy_nmmb.f APPEND_STRING PROPERTY COMPILE_FLAGS "-free -r8")
set_property(SOURCE physics/radiation_clouds_nmmb.f    APPEND_STRING PROPERTY COMPILE_FLAGS "-free -r8")
set_property(SOURCE physics/radsw_main_nmmb.f          APPEND_STRING PROPERTY COMPILE_FLAGS "-free -r8")

set_property(SOURCE NAM_layer/NAM_diagnostics.F90      APPEND_STRING PROPERTY COMPILE_FLAGS "-O0")

target_include_directories(namphysics PRIVATE ${ESMF_MOD})

set_target_properties(namphysics PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod)
target_include_directories(namphysics PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/mod)