45
45
 
find_valid_components (HDF5)
46
46
 
47
47
 
#==============================================================================
48
48
 
# SEARCH FOR VALIDATED COMPONENTS
49
49
 
foreach (HDF5_comp IN LISTS HDF5_FIND_VALID_COMPONENTS)
50
50
 
51
51
 
    # If not found already, search...
52
52
 
    if (NOT HDF5_${HDF5_comp}_FOUND)
53
53
 
54
54
 
        # Manually add the MPI include and library dirs to search paths
55
 
-
        if (HDF5_comp STREQUAL C OR HDF5_comp STREQUAL HL)
56
 
-
            if (MPI_C_FOUND)
57
 
-
                set (HDF5_${HDF5_comp}_PATHS ${MPI_C_INCLUDE_PATH})
58
 
-
                foreach (lib IN LISTS MPI_C_LIBRARIES)
59
 
-
                    get_filename_component (libdir ${lib} PATH)
60
 
-
                    list (APPEND HDF5_${HDF5_comp}_PATHS ${libdir})
61
 
-
                    unset (libdir)
62
 
-
                endforeach ()
63
 
-
            endif ()
64
 
-
        else ()
65
 
-
            if (MPI_Fortran_FOUND)
66
 
-
                set (HDF5_${HDF5_comp}_PATHS ${MPI_Fortran_INCLUDE_PATH})
67
 
-
                foreach (lib IN LISTS MPI_Fortran_LIBRARIES)
68
 
-
                    get_filename_component (libdir ${lib} PATH)
69
 
-
                    list (APPEND HDF5_${HDF5_comp}_PATHS ${libdir})
70
 
-
                    unset (libdir)
71
 
-
                endforeach ()
72
 
-
            endif ()
 
55
+
        if ( (HDF5_comp STREQUAL C OR HDF5_comp STREQUAL HL) AND MPI_C_FOUND)
 
56
+
            set (mpiincs ${MPI_C_INCLUDE_PATH})
 
57
+
            set (mpilibs ${MPI_C_LIBRARIES})
 
58
+
            set (mpifound ${MPI_C_FOUND})
 
59
+
        elseif (MPI_Fortran_FOUND)
 
60
+
            set (mpiincs ${MPI_Fortran_INCLUDE_PATH})
 
61
+
            set (mpilibs ${MPI_Fortran_LIBRARIES})
 
62
+
            set (mpifound ${MPI_Fortran_FOUND})
73
63
 
        endif ()
74
64
 
75
65
 
        # Search for the package component
76
 
-
        find_package_component(HDF5 COMPONENT ${HDF5_comp}
77
 
-
                               PATHS ${HDF5_${HDF5_comp}_PATHS})
 
66
+
        if (mpifound)
 
67
+
            initialize_paths (HDF5_${HDF5_comp}_PATHS
 
68
+
                              INCLUDE_DIRECTORIES ${mpiincs}
 
69
+
                              LIBRARIES ${mpilibs})
 
70
+
            find_package_component(HDF5 COMPONENT ${HDF5_comp}
 
71
+
                                   PATHS ${HDF5_${HDF5_comp}_PATHS})
 
72
+
        else ()
 
73
+
            find_package_component(HDF5 COMPONENT ${HDF5_comp})
 
74
+
        endif ()
78
75
 
79
76
 
        # Continue only if found
80
77
 
        if (HDF5_${HDF5_comp}_FOUND)
81
78
 
82
79
 
            # Dependencies
83
80
 
            if (HDF5_comp STREQUAL C AND NOT HDF5_C_IS_SHARED)
84
81
 
            
85
82
 
                # DEPENDENCY: LIBZ
86
83
 
                find_package (LIBZ)
87
84
 
                if (LIBZ_FOUND)