# WRF CMake Build
target_include_directories( 
                            ${PROJECT_NAME}_Core
                            PRIVATE
                              ${CMAKE_CURRENT_SOURCE_DIR}
                            )
if ( ${ENABLE_KPP} )
  add_compile_options    ( "${PROJECT_COMPILE_OPTIONS}"     )
  add_compile_definitions( "${PROJECT_COMPILE_DEFINITIONS}" )
  add_subdirectory( KPP )
endif()

########################################################################################################################
#
# Now add sources
#
########################################################################################################################
target_sources(
                ${PROJECT_NAME}_Core
                PRIVATE
                  module_data_isrpia_data.F
                  module_data_ISRPIA.F
                  module_data_isrpia_asrc.F
                  module_data_isrpia_solut.F
                  module_data_isrpia_kmc198.F
                  module_data_isrpia_kmc223.F
                  module_data_isrpia_kmc248.F
                  module_data_isrpia_kmc273.F
                  module_data_isrpia_kmc298.F
                  module_data_isrpia_kmc323.F
                  module_data_isrpia_expnc.F
                  module_data_isrpia_caseg.F
                  module_data_isrpia_casej.F
                  isofwd.F
                  isorev.F
                  isocom.F
                  moduleHETDATA.F
                  moduleHETAERO.F
                  moduleAERODATA.F
                  aerorate_so2.F
                  module_aer_opt_out.F
                  module_add_emiss_burn.F
                  module_add_emis_cptec.F
                  module_bioemi_beis314.F
                  module_chem_utilities.F
                  module_cmu_dvode_solver.F
                  module_data_cbmz.F
                  module_data_cmu_bulkaqchem.F
                  module_data_gocartchem.F
                  module_data_gocart_seas.F
                  module_data_mosaic_kind.F
                  module_data_mosaic_constants.F
                  module_data_mosaic_aero.F
                  module_data_mosaic_main.F
                  module_data_mosaic_asect.F
                  module_data_mosaic_asecthp.F
                  module_data_mosaic_boxmod.F
                  module_data_mosaic_other.F
                  module_data_mosaic_therm.F
                  module_data_radm2.F
                  module_data_rrtmgaeropt.F
                  module_data_megan2.F
                  module_data_soa_vbs.F
                  module_data_soa_vbs_het.F
                  module_data_sorgam.F
                  module_data_sorgam_vbs.F
                  module_ftuv_subs.F
                  module_ghg_fluxes.F
                  module_gocart_drydep.F
                  module_gocart_settling.F
                  module_gocart_so2so4.F
                  module_input_tracer_data.F
                  module_interpolate.F
                  module_mosaic_csuesat.F
                  module_mozcart_wetscav.F
                  module_peg_util.F
                  module_tropopause.F
                  module_upper_bc_driver.F
                  module_vertmx_wrf.F
                  module_wave_data.F
                  module_wetdep_ls.F
                  module_zero_plumegen_coms.F
                  module_vash_settling.F
                  module_chem_plumerise_scalar.F
                  module_dep_simple.F
                  module_gocart_dmsemis.F
                  module_gocart_aerosols.F
                  module_gocart_dust.F
                  module_gocart_dust_afwa.F
                  module_gocart_seasalt.F
                  module_uoc_dust.F
                  module_qf03.F
                  module_soilpsd.F
                  module_dust_load.F
                  module_uoc_dustwd.F
                  module_data_uoc_wd.F
                  module_mosaic_addemiss.F
                  module_mosaic_initmixrats.F
                  module_mosaic_support.F
                  module_mosaic_init_aerpar.F
                  module_mosaic_ext.F
                  module_mosaic_astem.F
                  module_mosaic_lsode.F
                  module_mosaic_box_aerchem.F
                  module_mosaic_aerchem_intr.F
                  module_mosaic_coag1d.F
                  module_mosaic_coag3d.F
                  module_mosaic_movesect1d.F
                  module_mosaic_movesect3d.F
                  module_mosaic_newnucb.F
                  module_mosaic_sect_intr.F
                  module_mosaic_aerdynam_intr.F
                  module_mosaic_movesect.F
                  module_mosaic_newnuc.F
                  module_mosaic_soa_vbs.F
                  module_cbmz_lsodes_solver.F
                  module_cbmz_rodas3_solver.F
                  module_cmu_bulkaqchem.F
                  module_data_mgn2mech.F
                  module_ftuv_driver.F
                  module_fastj_data.F
                  module_fastj_mie.F
                  module_input_chem_data.F
                  module_mosaic_coag.F
                  module_mosaic_gly.F
                  module_mosaic_wetscav.F
                  module_mosaic_therm.F
                  module_phot_mad.F
                  params.mod.F #!TODO Rename this please
                  numer.F
                  rdxs.F
                  rxn.F
                  params_mod.F
                  module_phot_tuv.F
                  module_subs_tuv.F
                  rtrans.F
                  la_srb.F
                  module_radm.F
                  module_sorgam_aqchem.F
                  module_sorgam_vbs_aqchem.F
                  module_aerosols_soa_vbs.F
                  module_aerosols_soa_vbs_het.F
                  module_aerosols_sorgam.F
                  module_aerosols_sorgam_vbs.F
                  module_bioemi_megan2.F
                  module_bioemi_simple.F
                  module_cbm4_initmixrats.F
                  module_cb05_initmixrats.F
                  module_cb05_vbs_initmixrats.F
                  module_cbmz.F
                  module_cbmz_initmixrats.F
                  module_cbmz_rodas_prep.F
                  module_ctrans_grell.F
                  module_gocart_chem.F
                  module_input_tracer.F
                  module_lightning_nox_driver.F
                  module_lightning_nox_ott.F
                  module_lightning_nox_decaria.F
                  module_mixactivate_wrappers.F
                  module_mosaic_init_aerpar.F
                  module_mosaic2_driver.F
                  module_mosaic_sumpm.F
                  module_mosaic_driver.F
                  module_optical_averaging.F
                  module_plumerise1.F
                  module_mosaic_drydep.F
                  module_wetscav_driver.F
                  module_prep_wetscav_sorgam.F
                  module_input_chem_bioemiss.F
                  module_input_dust_errosion.F
                  module_input_gocart_dms.F
                  module_cbmz_addemiss.F
                  module_cbm4_addemiss.F
                  module_cb05_addemiss.F
                  module_emissions_anthropogenics.F
                  module_aer_drydep.F
                  module_cam_mam_calcsize.F
                  module_cam_mam_dust_sediment.F
                  module_cam_mam_drydep.F
                  module_cam_mam_init.F
                  module_cam_mam_initaerodata.F
                  module_cam_mam_initmixrats.F
                  module_cam_mam_rename.F
                  module_cam_mam_wateruptake.F
                  module_cam_mam_gasaerexch.F
                  module_cam_mam_coag.F
                  module_cam_mam_newnuc.F
                  module_cam_mam_aerchem_driver.F
                  module_cam_mam_addemiss.F
                  module_cam_mam_wetscav.F
                  module_cam_mam_mz_aerosols_intr.F
                  module_cam_mam_wetdep.F
                  module_cam_mam_cloudchem.F
                  module_cam_mam_setsox.F
                  module_cam_mam_mo_chem_utls.F
                  module_mosaic_cloudchem.F
                  module_sorgam_cloudchem.F
                  module_sorgam_vbs_cloudchem.F
                  module_cam_mam_gas_wetdep_driver.F
                  module_cam_mam_mo_sethet.F
                  module_phot_fastj.F
                  module_chem_cup.F
                  module_isocom.F
                  module_isofwd.F
                  module_isorev.F
                  chemics_init.F
                  chem_driver.F
                  cloudchem_driver.F
                  photolysis_driver.F
                  optical_driver.F
                  mechanism_driver.F
                  emissions_driver.F
                  dry_dep_driver.F
                  aerosol_driver.F
                  )

#!TODO: I'm not entirely sure when this exec is supposed to be generated or if it
#       is exclusive to the real test case
# ########################################################################################################################
# #
# # convert_emiss executable
# #
# ########################################################################################################################
# set( CONVERT_EMISS_TARGET convert_emiss )
# add_executable(
#                 ${CONVERT_EMISS_TARGET}
#                 convert_emiss.F 
#                 )

# target_link_libraries( 
#                       ${CONVERT_EMISS_TARGET}
#                       PRIVATE
#                         ${PROJECT_NAME}_Core
#                       )
# set_target_properties(
#                       ${CONVERT_EMISS_TARGET}
#                         PROPERTIES
#                           # Just dump everything in here
#                           Fortran_MODULE_DIRECTORY ${CMAKE_INSTALL_PREFIX}/modules/${CONVERT_EMISS_TARGET}/
#                           Fortran_FORMAT           FREE                          
#                       )
# target_compile_options(
#                         convert_emiss
#                         PRIVATE
#                           ${PROJECT_COMPILE_OPTIONS}
#                         )


# target_compile_definitions(
#                             convert_emiss
#                             PRIVATE
#                               ${PROJECT_COMPILE_DEFINITIONS}
#                           )
# install(
#         TARGETS ${CONVERT_EMISS_TARGET}
#         EXPORT  ${EXPORT_NAME}Targets
#         RUNTIME DESTINATION bin/
#         ARCHIVE DESTINATION lib/
#         LIBRARY DESTINATION lib/
#         )
