File: SConstruct

package info (click to toggle)
pythonmagick 0.7-5
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 2,284 kB
  • ctags: 377
  • sloc: sh: 9,133; cpp: 2,358; perl: 279; makefile: 100; python: 11
file content (66 lines) | stat: -rw-r--r-- 2,787 bytes parent folder | download | duplicates (9)
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# vim: filetype=python

import os, re, sys

if sys.platform=='win32':
    #   Windows
    BOOST=r'f:\boost_root'
    BOOSTLIBPATH=r'f:\boost_root\lib'
    IM_INCLUDE_PATH=[r'C:\ImageMagick-6.2.4-windows-source\ImageMagick-6.2.4',r'E:\ImageMagick-6.2.4-windows-source\ImageMagick-6.2.4\Magick++\lib']
    IM_LIB_PATH=r'C:\ImageMagick-6.2.4-windows-source\ImageMagick-6.2.4\VisualMagick\lib'
    GD_LIBS=[i for i in os.listdir(IM_LIB_PATH) if i.endswith('.lib')]+['user32.lib','ws2_32.lib','ole32.lib','gdi32.lib','oleaut32.lib','Advapi32.lib']#['CORE_RL_magick_','CORE_RL_Magick++_']
    PYTHON_INCLUDE='F:\Python24\include'
    BOOST_PYTHON_LIB=['libboost_python-vc71-mt.lib']
    CPP_FLAGS=['/EHsc','/MD','/GR','-DWIN32','-DNeedFunctionPrototypes','-D_LIB','-D_VISUALC_','-DBOOST_PYTHON_STATIC_LIB']
else:
    #   Linux
    BOOST='/usr/local/include/boost-1_32/'
    BOOSTLIBPATH='/usr/local/lib/'
    IM_INCLUDE_PATH=['/usr/include']
    IM_LIB_PATH='/usr/lib/'
    GD_LIBS=['Magick','Magick++','Wand']
    PYTHON_INCLUDE='/usr/include/python2.4'
    BOOST_PYTHON_LIB=['libboost_python-gcc']
    CPP_FLAGS=['-DBOOST_PYTHON_STATIC_LIB','-O2']

#   setup the environment
env=Environment(
    LIBPATH=['./',BOOSTLIBPATH, IM_LIB_PATH],
    CPPPATH=[BOOST, PYTHON_INCLUDE] + IM_INCLUDE_PATH,
    RPATH=['./',BOOSTLIBPATH],
    CPPFLAGS=CPP_FLAGS
)

def fix_includes(target,source,env):
    for t in target:
        code=file(str(t)).read()
        code=re.sub(r'#include <.*?(Magick\+\+/.*?\.h)>',r'#include <\1>',code)
        code=re.sub(r'#include <(.*?helpers_src.*?\.h)>',r'#include "../\1"',code)
        file(str(t),'w').write(code)
 
#   setup pyste builder
def pyste_emitter(target,source,env):
    sources = ['pyste_src/%s' % s for s in source]
    targets = ['pythonmagick_src/_%s.cpp' % t for t in target]
    return (targets,sources)
env['BUILDERS']['Pyste'] = Builder(action = ['pyste.py --module=_PythonMagick --multiple --out=./pythonmagick_src -I %s $SOURCE' % IM_INCLUDE_PATH, fix_includes],
    emitter=pyste_emitter)

#   default is not to run pyste
if ARGUMENTS.get('pyste')=='yes':
    PYSTE_FILES=[f for f in os.listdir('pyste_src') if f.endswith('.pyste')]
    os.system('pyste.py --module=_PythonMagick --multiple --generate-main --out=./pythonmagick_src -I %s %s' % (
        IM_INCLUDE_PATH,' '.join(['pyste_src/%s' % f for f in PYSTE_FILES]))
    )
    for item in PYSTE_FILES:
        env.Pyste(item)

#   build the module
PM_FILES=['pythonmagick_src/%s'%f for f in os.listdir('pythonmagick_src') if f.endswith('.cpp')]
HELPER_FILES=['helpers_src/%s'%f for f in os.listdir('helpers_src') if f.endswith('.cpp')]
env.SharedLibrary(
    target='PythonMagick/_PythonMagick',
    source=PM_FILES+HELPER_FILES,
    SHLIBPREFIX='',
    LIBS=BOOST_PYTHON_LIB+GD_LIBS
)