1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
env = Environment(
ENV = {'PATH': '/usr/pkg/bin:/usr/local/bin:/usr/bin:/bin'},
CYTHON = 'cython',
SWIG = 'swig',
ECL = 'ecl')
env.Append(CPPPATH = ['/usr/pkg/include/python2.7'])
env.Append(LIBPATH = ['/usr/pkg/lib'])
env.MergeFlags('-Wl,-rpath=/usr/pkg/lib')
Configure(env)
env.Command(['extmodule.c', 'extmodule.h'], '#extmodule.pyx', '$CYTHON $SOURCE')
wrap = env.Command('extmodule_wrap.h', 'extmodule.h',
'$CC -D"DL_IMPORT(x)=x" -E $SOURCE >$TARGET')
env.Command('extmodule.lisp', wrap,
'$SWIG -module extmodule -cffi $SOURCE')
env.Command('mainmod.lisp', 'extmodule.lisp', ['echo "(in-package :mainapp)" >$TARGET',
'cat $SOURCE >> $TARGET'])
mainapp = env.Command(
['mainapp-mono', 'libmainapp.a',
'mainapp.fas', 'mainapp.o',
'mainmod.fas', 'mainmod.o',
'package.fas', 'package.o'],
['mainapp.asd', 'mainapp.lisp', 'mainmod.lisp'],
'$ECL -norc ' +
"""-eval "(let ((*load-verbose* nil)) (require 'asdf))" """ +
"""-eval "(setf asdf::*user-cache* \\"$PWD/\\")" """ +
"""-eval "(asdf:make-build :mainapp :type :program)" """ +
"""-eval "(quit)" </dev/null""")
pymod = env.SharedLibrary('extmodule.so', ['extmodule.c'], LIBS = ['python2.7'], SHLIBPREFIX = '')
env.Default(pymod, mainapp)
# vim:ft=python:
|