On 09/27/2016 11:09 PM, Pavlyk, Oleksandr wrote:
Suppose I would like to take advantage of some functions from MKL in
numpy C source code, which would require to use



#include “mkl.h”



Ideally this include line must not break the build of numpy when MKL is
not present, so my initial approach was to use



#if defined(SCIPY_MKL_H)

#include “mkl.h”

#endif



Unfortunately, this did not work when building with gcc on a machine
where MKL is present on default LD_LIBRARY_PATH, because then the
distutils code was setting SCIPY_MKL_H preprocessor variable, even
though mkl headers are not on the C_INCLUDE_PATH.



What is the preferred solution to include an external library header to
ensure that code-base continues to build in most common cases?



One approach I can think of is to set a preprocessor variable, say
HAVE_MKL_HEADERS in numpy/core/includes/numpy/config.h depending on an
outcome of building of a simple _configtest.c using
config.try_compile(), like it is done in numpy/core/setup.py //

/ /

Is there a simpler, or a better way?


hi,
you could put the header into OPTIONAL_HEADERS in numpy/core/setup_common.py. This will define HAVE_HEADERFILENAME_H for you but this will not check that the corresponding the library actually exists and can be linked. For that SCIPY_MKL_H is probably the right macro, though its name is confusing as it does not check for the header presence ...

Can you tell us more about what from mkl you are attempting to add and for what purpos, e.g. is it something that should go into numpy proper or just for personal/internal use?

cheers,
Julian
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
https://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to