summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/python/fabscript
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/python/fabscript')
-rw-r--r--src/boost/libs/python/fabscript82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/boost/libs/python/fabscript b/src/boost/libs/python/fabscript
new file mode 100644
index 000000000..054ed90e5
--- /dev/null
+++ b/src/boost/libs/python/fabscript
@@ -0,0 +1,82 @@
+# -*- python -*-
+#
+# Copyright (c) 2016 Stefan Seefeld
+# All rights reserved.
+#
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+from faber.feature import set
+from faber.types import cxx
+from faber.tools.compiler import cxxflags, define, include
+from faber.tools.python import python
+from faber.config import report, cxx_checks
+from faber.config.try_run import try_run
+
+features += include('include')
+features += define('BOOST_ALL_NO_LIB') # disable auto-linking
+boost_include = options.get_with('boost-include')
+if boost_include:
+ features += include(boost_include)
+python = python.instance()
+py_suffix = '{}{}'.format(*python.version.split('.')[:2])
+features |= set(python.include, python.linkpath, python.libs)
+
+class has_numpy(try_run):
+
+ src = r"""
+// If defined, enforces linking against PythonXXd.lib, which
+// is usually not included in Python environments.
+#undef _DEBUG
+#include "Python.h"
+#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
+#include "numpy/arrayobject.h"
+
+#if PY_VERSION_HEX >= 0x03000000
+void *initialize() { import_array();}
+#else
+void initialize() { import_array();}
+#endif
+
+int main()
+{
+ int result = 0;
+ Py_Initialize();
+ initialize();
+ if (PyErr_Occurred())
+ {
+ result = 1;
+ }
+ else
+ {
+ npy_intp dims = 2;
+ PyObject * a = PyArray_SimpleNew(1, &dims, NPY_INT);
+ if (!a) result = 1;
+ Py_DECREF(a);
+ }
+ Py_Finalize();
+ return result;
+}
+"""
+ def __init__(self, features=()):
+
+ inc = ''
+ try:
+ inc = python.check_python('import numpy; print(numpy.get_include())')
+ features |= include(inc)
+ except Exception:
+ # ignore errors, the check will fail during compilation...
+ pass
+ try_run.__init__(self, 'has_numpy', has_numpy.src, cxx, features,
+ if_=(include(inc), define('HAS_NUMPY')))
+
+checks = [cxx_checks.has_cxx11(features, define('HAS_CXX11')),
+ has_numpy(features)]
+config = report('config', checks)
+
+src = module('src', features=config.use)
+test = module('test', features=config.use)
+doc = module('doc', features=config.use)
+
+default = src.default