~ok2/+junk/polyglot

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: