11quiet = [' -w' ]
22
33fc = meson .get_compiler(' fortran' )
4+ os = target_machine .system()
5+
46f18flag = fc.first_supported_argument([' -std=f2018' , ' -stand f18' , ' /stand:f18' ])
57if fc.get_id() == ' gcc'
68 add_project_arguments (' -fimplicit-none' , f18flag, language : ' fortran' )
@@ -14,30 +16,40 @@ elif fcid == 'pgi'
1416endif
1517
1618
17- hdf5 = dependency (' hdf5' , language : ' fortran' , required : false )
18- h5incdir = []
19- if not hdf5.found()
20- h5libdir = get_option (' h5libdir' )
21- if h5libdir == ''
19+ hdf5 = dependency (' hdf5' , language : ' fortran' , required : false , disabler : true )
20+ if fc.links(' use h5lt; end' , dependencies : hdf5, name : ' HDF5' )
21+ subdir_done ()
22+ endif
23+
24+ # HDF5 was not found
25+ h5incdir = include_directories (get_option (' h5incdir' ))
26+ h5libdir = get_option (' h5libdir' )
27+ if h5libdir == ''
28+ if os == ' darwin'
29+ # assume homebrew
30+ h5libdir = ' /usr/local/opt/hdf5/lib'
31+ h5incdir = include_directories (' /usr/local/opt/hdf5/include' )
32+ else
2233 h5libdir = []
2334 endif
24- h5incdir = include_directories (get_option (' h5incdir' ))
25- hdf5_libs = []
26- foreach name : [' hdf5' , ' hdf5_fortran' , ' hdf5_hl' , ' hdf5_hl_fortran' , # msys2 names
27- ' hdf5_serial' , ' hdf5_serial_fortran' ,
28- ' hdf5_serial_hl' , ' hdf5_serialhl_fortran' ]
29- lib = fc.find_library (name, required : false , dirs : h5libdir)
30- if lib.found()
31- hdf5_libs += lib
32- endif
33- endforeach
34- if hdf5_libs.length() == 0
35- error (' could not find HDF5 library' )
35+ endif
36+
37+ hdf5_libs = []
38+ foreach name : [' hdf5' , ' hdf5_fortran' , ' hdf5_hl' , ' hdf5_hl_fortran' , # msys2 names
39+ ' hdf5_serial' , ' hdf5_serial_fortran' ,
40+ ' hdf5_serial_hl' , ' hdf5_serialhl_fortran' ]
41+ lib = fc.find_library (name, required : false , dirs : h5libdir)
42+ if lib.found()
43+ hdf5_libs += lib
3644 endif
37- # hdf5 = declare_dependency(dependencies: hdf5_libs, include_directories: h5incdir) # meson bug?
38- hdf5 = hdf5_libs
45+ endforeach
46+
47+ if hdf5_libs.length() == 0
48+ error (' could not find HDF5 library' )
3949endif
40- h5run = fc.run(' use h5lt; end' , dependencies : hdf5, include_directories : h5incdir, name : ' HDF5 runs' )
41- if h5run.returncode() != 0
50+
51+ hdf5 = hdf5_libs
52+
53+ if not fc.links(' use h5lt; end' , dependencies : hdf5, include_directories : h5incdir, name : ' HDF5' )
4254 warning (' HDF5 possible linking problems: ' + h5run.stdout() + h5run.stderr())
43- endif
55+ endif
0 commit comments