CMake build of diffwrf binaries (#2013)
[WRF.git] / external / io_int / CMakeLists.txt
blob933e5fe421740848c3a9a8d41b0628688de7e932
1 # WRF CMake Build
2 get_filename_component( FOLDER_COMPILE_TARGET ${CMAKE_CURRENT_SOURCE_DIR} NAME)
4 add_library(
5             ${FOLDER_COMPILE_TARGET}
6               STATIC
7               )
9 target_sources(
10                 ${FOLDER_COMPILE_TARGET}
11                 PRIVATE
12                   io_int.F90
13                   io_int_idx.c
14                   module_io_int_idx.F90
15                   module_io_int_read.F90
16                   ${PROJECT_SOURCE_DIR}/frame/module_internal_header_util.F
17                   )
19 set_target_properties( 
20                       ${FOLDER_COMPILE_TARGET} 
21                         PROPERTIES
22                           Fortran_MODULE_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${FOLDER_COMPILE_TARGET}
23                           EXPORT_PROPERTIES        Fortran_MODULE_DIRECTORY
24                           Fortran_FORMAT           FREE                          
25                       )
27 target_link_libraries(  ${FOLDER_COMPILE_TARGET}
28                           PUBLIC
29                             $<$<BOOL:${USE_MPI}>:$<TARGET_NAME_IF_EXISTS:MPI::MPI_Fortran>>
30                         )
32 target_include_directories( ${FOLDER_COMPILE_TARGET}
33                             PUBLIC
34                               $<TARGET_PROPERTY:${FOLDER_COMPILE_TARGET},Fortran_MODULE_DIRECTORY>
35                               $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/ioapi_share>
36                               $<INSTALL_INTERFACE:include/external/ioapi_share>
37                               $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/inc>
38                               $<INSTALL_INTERFACE:include/inc>
39                             PRIVATE
40                               ${CMAKE_CURRENT_SOURCE_DIR}
41                             )
43 # Now build diffwrf
44 set( DIFFWRF_TARGET diffwrf_int )
45 add_executable(
46                 ${DIFFWRF_TARGET}
47                 diffwrf.F90
48                 ${PROJECT_SOURCE_DIR}/frame/module_machine.F
49                 ${PROJECT_SOURCE_DIR}/frame/module_driver_constants.F
50                 ${PROJECT_SOURCE_DIR}/frame/pack_utils.c
51                 ${PROJECT_SOURCE_DIR}/frame/module_wrf_error.F
52                 ${PROJECT_SOURCE_DIR}/frame/wrf_debug.F
53                 )
55 target_link_libraries(
56                       ${DIFFWRF_TARGET}
57                         PRIVATE
58                           ${FOLDER_COMPILE_TARGET}
59                       )
61 target_include_directories(
62                             ${DIFFWRF_TARGET}
63                             PRIVATE
64                               ${CMAKE_BINARY_DIR}/inc
65                             )
67 set_target_properties( 
68                         ${DIFFWRF_TARGET}
69                           PROPERTIES
70                             # Just dump everything in here
71                             Fortran_MODULE_DIRECTORY ${CMAKE_INSTALL_PREFIX}/modules/${DIFFWRF_TARGET}
72                             Fortran_FORMAT           FREE
73                         )
75 add_dependencies( ${DIFFWRF_TARGET} registry_code )
77 install(
78         TARGETS ${FOLDER_COMPILE_TARGET} ${DIFFWRF_TARGET}
79         EXPORT  ${EXPORT_NAME}Targets
80         RUNTIME DESTINATION bin/
81         ARCHIVE DESTINATION lib/
82         LIBRARY DESTINATION lib/
83         )