|
|
|
import os
|
|
|
|
import TaskGen, Utils, Utils, Runner, Options, Build
|
|
|
|
from TaskGen import extension, taskgen, before, after, feature
|
|
|
|
from Configure import conf, conftest
|
|
|
|
|
|
|
|
@taskgen
|
|
|
|
@before('apply_incpaths', 'apply_lib_vars', 'apply_type_vars')
|
|
|
|
@feature('node_addon')
|
|
|
|
@before('apply_bundle')
|
|
|
|
def init_node_addon(self):
|
|
|
|
self.default_install_path = self.env['NODE_PATH']
|
|
|
|
self.uselib = self.to_list(getattr(self, 'uselib', ''))
|
|
|
|
if not 'NODE' in self.uselib: self.uselib.append('NODE')
|
|
|
|
self.env['MACBUNDLE'] = True
|
|
|
|
|
|
|
|
@taskgen
|
|
|
|
@before('apply_link', 'apply_lib_vars', 'apply_type_vars')
|
|
|
|
@after('apply_bundle')
|
|
|
|
@feature('node_addon')
|
|
|
|
def node_addon_shlib_ext(self):
|
|
|
|
self.env['shlib_PATTERN'] = "%s.node"
|
|
|
|
|
|
|
|
def detect(conf):
|
|
|
|
join = os.path.join
|
|
|
|
|
|
|
|
conf.env['PREFIX_NODE'] = get_prefix()
|
|
|
|
prefix = conf.env['PREFIX_NODE']
|
|
|
|
lib = join(prefix, 'lib')
|
|
|
|
|
|
|
|
conf.env['LIBPATH_NODE'] = lib
|
|
|
|
conf.env['CPPPATH_NODE'] = join(prefix, 'include', 'node')
|
|
|
|
|
|
|
|
conf.env.append_value('CPPFLAGS_NODE', '-D_GNU_SOURCE')
|
|
|
|
|
|
|
|
conf.env.append_value('CCFLAGS_NODE', '-D_LARGEFILE_SOURCE')
|
|
|
|
conf.env.append_value('CCFLAGS_NODE', '-D_FILE_OFFSET_BITS=64')
|
|
|
|
|
|
|
|
conf.env.append_value('CXXFLAGS_NODE', '-D_LARGEFILE_SOURCE')
|
|
|
|
conf.env.append_value('CXXFLAGS_NODE', '-D_FILE_OFFSET_BITS=64')
|
|
|
|
|
|
|
|
# with symbols
|
|
|
|
conf.env.append_value('CCFLAGS', ['-g'])
|
|
|
|
conf.env.append_value('CXXFLAGS', ['-g'])
|
|
|
|
# install path
|
|
|
|
conf.env['NODE_PATH'] = get_node_path()
|
|
|
|
# this changes the install path of cxx task_gen
|
|
|
|
conf.env['LIBDIR'] = conf.env['NODE_PATH']
|
|
|
|
|
|
|
|
found = os.path.exists(conf.env['NODE_PATH'])
|
|
|
|
conf.check_message('node path', '', found, conf.env['NODE_PATH'])
|
|
|
|
|
|
|
|
found = os.path.exists(join(prefix, 'bin', 'node'))
|
|
|
|
conf.check_message('node prefix', '', found, prefix)
|
|
|
|
|
|
|
|
## On Cygwin we need to link to the generated symbol definitions
|
|
|
|
if Options.platform.startswith('cygwin'): conf.env['LIB_NODE'] = 'node'
|
|
|
|
|
|
|
|
## On Mac OSX we need to use mac bundles
|
|
|
|
if Options.platform == 'darwin': conf.check_tool('osx')
|
|
|
|
|
|
|
|
def get_node_path():
|
|
|
|
join = os.path.join
|
|
|
|
nodePath = None
|
|
|
|
if not os.environ.has_key('NODE_PATH'):
|
|
|
|
if not os.environ.has_key('HOME'):
|
|
|
|
nodePath = join(get_prefix(), 'lib', 'node')
|
|
|
|
else:
|
|
|
|
nodePath = join(os.environ['HOME'], '.node_libraries')
|
|
|
|
else:
|
|
|
|
nodePath = os.environ['NODE_PATH']
|
|
|
|
return nodePath
|
|
|
|
|
|
|
|
def get_prefix():
|
|
|
|
prefix = None
|
|
|
|
if not os.environ.has_key('PREFIX_NODE'):
|
|
|
|
prefix = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', '..', '..'))
|
|
|
|
else:
|
|
|
|
prefix = os.environ['PREFIX_NODE']
|
|
|
|
return prefix
|