#1173: ExternalLibraries build environment problems ------------------------------------+--------------------------------------- Reporter: hinder | Owner: Type: defect | Status: review Priority: major | Milestone: Component: EinsteinToolkit thorn | Version: Resolution: | Keywords: zlib hwloc ------------------------------------+---------------------------------------
Comment (by eschnett):
NO_BUILD is usually only used if autodetection is unlikely to find something, and if the library does really not need to be built. Examples are BLAS/LAPACK when Intel's option "-mkl" can be used, or the MPI library when it is built-in (e.g. on a Cray). In these cases, the library paths are unused, and hence we didn't notice that they are nonsensical.
The only thorn that supports NO_BUILD explicitly is HDF5. I don't know when one would use NO_BUILD with HDF5; maybe if one is sure that the library will be found in the default search path? That is a slightly different case than above, where no searching is necessary. I think these two cases should be distinct. Maybe we should call them IMPLICIT and SEARCH instead, but these names are not ideal either.
In the second case, which is relevant here, we actually want to abort if ZLIB_DIR=NO_BUILD at the end of the script. This means that zlib was not found, and linking will then fail, independent of whether ZLIB_DIR is nonsensical or empty. Of course, it may also be that the search code is inaccurate, and linking will actually succeed even though searching failed, e.g. if zlib is located near HDF5... Anyway, I think the script should abort when ZLIB_DIR=NO_BUILD after searching.
Note that a nonsensical search path is not that bad as it will be ignored by the linker.