CMake netCDF Compatibility with WPS (#2121)
[WRF.git] / external / io_netcdf / CMakeLists.txt
blobfee6d262521ac8ecc948d7ff33d452cb96b39b63
1 # WRF CMake Build
3 get_filename_component( FOLDER_COMPILE_TARGET ${CMAKE_CURRENT_SOURCE_DIR} NAME)
5 add_library(
6             ${FOLDER_COMPILE_TARGET}
7               STATIC
8               )
10 # Do this first to simplify steps later
11 set_target_properties( 
12                       ${FOLDER_COMPILE_TARGET} 
13                         PROPERTIES
14                           Fortran_MODULE_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${FOLDER_COMPILE_TARGET}
15                           EXPORT_PROPERTIES        Fortran_MODULE_DIRECTORY
16                       )
19 target_link_libraries(
20                       ${FOLDER_COMPILE_TARGET}
21                         PUBLIC
22                           $<$<BOOL:${USE_OPENMP}>:$<TARGET_NAME_IF_EXISTS:OpenMP::OpenMP_Fortran>>
23                           $<$<BOOL:${USE_MPI}>:$<TARGET_NAME_IF_EXISTS:MPI::MPI_Fortran>>
24                           netCDF::netcdff
25                       )
27 target_include_directories(
28                             ${FOLDER_COMPILE_TARGET}
29                             PUBLIC
30                               $<TARGET_PROPERTY:${FOLDER_COMPILE_TARGET},Fortran_MODULE_DIRECTORY>
31                               $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/ioapi_share>
32                               $<INSTALL_INTERFACE:include/external/ioapi_share>
33                             PRIVATE
34                               ${CMAKE_CURRENT_SOURCE_DIR}
35                             )
38 # First preprocess
39 get_target_property   ( FOLDER_COMPILE_TARGET_INCLUDES ${FOLDER_COMPILE_TARGET} INCLUDE_DIRECTORIES )
40 wrf_c_preproc_fortran( 
41                         TARGET_NAME     ${FOLDER_COMPILE_TARGET}_c_preproc_wrf_io
42                         OUTPUT_DIR      ${CMAKE_CURRENT_BINARY_DIR}/preproc/
43                         EXTENSION       ".f90"
44                         INCLUDES        ${FOLDER_COMPILE_TARGET_INCLUDES}
45                         DEFINITIONS     ${PROJECT_COMPILE_DEFINITIONS}
46                         SOURCES         wrf_io.F90
47                         )
49 # Now M4 preprocess
50 wrf_m4_preproc_fortran( 
51                         TARGET_NAME     ${FOLDER_COMPILE_TARGET}_m4_preproc_wrf_io
52                         OUTPUT_DIR      ${CMAKE_CURRENT_BINARY_DIR}/preproc/
53                         PREFIX          "m4_preproc_"
54                         EXTENSION       ".f90"
55                         SOURCES         ${CMAKE_CURRENT_BINARY_DIR}/preproc/wrf_io.f90
56                         DEPENDENCIES    ${FOLDER_COMPILE_TARGET}_c_preproc_wrf_io
57                         TARGET_SCOPE    ${FOLDER_COMPILE_TARGET}
58                         FLAGS           ${M4_FLAGS}
59                         )
61 add_dependencies( ${FOLDER_COMPILE_TARGET} ${FOLDER_COMPILE_TARGET}_m4_preproc_wrf_io )
63 target_sources(
64                 ${FOLDER_COMPILE_TARGET}
65                 PRIVATE
66                   ${CMAKE_CURRENT_BINARY_DIR}/preproc/m4_preproc_wrf_io.f90
67                   module_wrfsi_static.F90
68                   field_routines.F90
69                   )
71 # Now build diffwrf
72 set( DIFFWRF_TARGET diffwrf_nc )
73 add_executable(
74                 ${DIFFWRF_TARGET}
75                 diffwrf.F90
76                 ${PROJECT_SOURCE_DIR}/frame/clog.c
77                 ${PROJECT_SOURCE_DIR}/frame/module_wrf_error.F
78                 ${PROJECT_SOURCE_DIR}/frame/wrf_debug.F
79                 )
81 target_link_libraries(
82                       ${DIFFWRF_TARGET}
83                         PRIVATE
84                           ${FOLDER_COMPILE_TARGET}
85                       )
86 set_target_properties( 
87                       ${DIFFWRF_TARGET}
88                         PROPERTIES
89                           # Just dump everything in here
90                           Fortran_MODULE_DIRECTORY ${CMAKE_INSTALL_PREFIX}/modules/${DIFFWRF_TARGET}
91                           Fortran_FORMAT           FREE
92                       )
95 install(
96         TARGETS ${FOLDER_COMPILE_TARGET} ${DIFFWRF_TARGET}
97         EXPORT  ${EXPORT_NAME}Targets
98         RUNTIME DESTINATION bin/
99         ARCHIVE DESTINATION lib/
100         LIBRARY DESTINATION lib/
101         )