Page MenuHomec4science

site_init.py
No OneTemporary

File Metadata

Created
Tue, Apr 16, 09:22

site_init.py

from SCons.Script import *
from os.path import *
from subprocess import check_output, STDOUT
import os
# ------------------------------------------------------------------------------
def pybind11(env):
"""A tool to configure pybind11"""
if env.GetOption('clean'):
return
# Run code below to get versions from user preference and not scons
versions_script = """
from __future__ import print_function
import distutils.sysconfig as dsys
from numpy.distutils.misc_util import get_numpy_include_dirs as numpy_dirs
print(dsys.get_python_inc())
for d in numpy_dirs():
print(d)"""
includes = check_output([env['py_exec'], "-c", versions_script],
universal_newlines=True).split('\n')
includes += [Dir('#third-party/pybind11/include')]
# Extension of shared library for python
extension = check_output([env['py_exec'] + '-config', "--extension-suffix"],
universal_newlines=True).split('\n')[0]
env['SHLIBSUFFIX'] = extension
env.AppendUnique(CPPPATH=includes)
conf = Configure(env)
if not conf.CheckCXXHeader('pybind11/pybind11.h'):
raise SCons.Errors.StopError(
'Failed to find pybind11 header\n' +
"Run 'git submodule update --init --recursive third-party/pybind11'")
env = conf.Finish()
# ------------------------------------------------------------------------------
def gtest(env):
"""A tool to configure GoogleTest"""
if env.GetOption('clean'):
return
conf = Configure(env)
if not conf.CheckCXXHeader('gtest/gtest.h'):
raise SCons.Errors.StopError(
'Failed to find GoogleTest header\n' +
"Run 'git submodule update --init --recursive third-party/googletest'")
env = conf.Finish()
# ------------------------------------------------------------------------------
def gen_print(action_string, color_string, env):
"""Generic function for creating pretty compile output"""
if env['verbose']:
return None
def print_fun(command, target, source, env):
colors = env['COLOR_DICT']
print("{}[{}] {}{}".format(colors[color_string],
action_string,
colors['end'],
target[0]))
return print_fun
# ------------------------------------------------------------------------------
def write_env_file(target, source, env):
"""Builder to write content to file"""
env_content = """
export PYTHONPATH=$PYTHONPATH:{0}/python
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:{0}/src
"""
with open(str(target[0]), 'w') as env_file:
env_file.write(env_content.format(abspath(build_dir)))

Event Timeline