source: git/modules/python/SConstruct @ 4a2f93

spielwiese
Last change on this file since 4a2f93 was 4a2f93, checked in by Michael Brickenstein <bricken@…>, 18 years ago
*bricken: optimized git-svn-id: file:///usr/local/Singular/svn/trunk@9050 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 4.6 KB
Line 
1#$Id: SConstruct,v 1.18 2006-03-31 08:31:59 bricken Exp $
2import os
3import re
4try:
5        import SCons.Tool.applelink as applelink
6except:
7        pass
8#include <Python.h>
9#include <boost/python.hpp>
10PYTHONPREFIX="/usr"
11FINKPREFIX=None
12env=Environment()
13platform=env['PLATFORM']
14
15opts = Options('custom.py')
16if platform=="darwin":
17    opts.Add('CXX', 'The C++ compiler.',"g++-3.3")
18    opts.Add('FINK_PREFIX', 'Prefix for fink on Mac OS X, usually /sw','/sw')
19else:
20    opts.Add('CXX', 'The C++ compiler.')
21
22
23
24
25class PythonConfig(object):
26    def __init__(self, version="2.3", prefix="/usr", libdir=None, incdir=None, libname=None):
27        self.version=version
28        if libdir:
29            self.libdir=libdir
30        else:
31            self.libdir=prefix+"/lib"
32        self.prefix=prefix
33        if libname:
34            self.libname=libname
35        else:
36            self.libname="python"+self.version
37        if incdir:
38            self.incdir=incdir
39        else:
40            self.incdir=self.prefix+"/include/python"+self.version
41PYTHONSEARCH=[\
42    PythonConfig(version="2.3"),\
43    PythonConfig(version="2.4"),\
44    PythonConfig(version="2.4",\
45                    libdir="/Library/Frameworks/Python.framework/Versions/2.4/lib",\
46                    libname="python",\
47                    incdir="/Library/Frameworks/Python.framework/Versions/2.4/include/python2.4"),\
48                    PythonConfig(version="2.3"),\
49                    PythonConfig(version="2.4")]
50
51
52env = Environment(options=opts)
53
54try:
55  PYTHONSEARCH.insert(0,PythonConfig(version="2.4", prefix=env['FINK_PREFIX'],\
56        libdir=env['FINK_PREFIX']+"/lib/python2.4/config/"))
57except:
58    pass
59
60print env['PLATFORM']
61conf = Configure(env)
62PYTHON_CONFIG=None
63for c in PYTHONSEARCH:
64    if conf.CheckCHeader(c.incdir+"/Python.h"):
65        PYTHON_CONFIG=c
66        break
67if not PYTHON_CONFIG:
68    print 'Python header not found'
69    Exit(1)
70#if not conf.CheckCHeader('/usr/include/python2.3/Python.h'):
71#    print 'Python 2.3 must be installed'
72#    Exit(1)
73BOOST_PREFIX="/sw"
74env.Append(CPPPATH=[PYTHON_CONFIG.incdir])
75if platform =="cygwin":
76  env.Append(CPPPATH="/usr/local/include/boost-1_32")
77else:
78  env.Append(CPPPATH=BOOST_PREFIX+"/include")
79print PYTHON_CONFIG.incdir
80print env['CPPPATH']
81if not conf.CheckCXXHeader('boost/python.hpp'):
82    print 'Boost/python must be installed'
83    Exit(1)
84
85if not conf.CheckCXXHeader('boost/shared_ptr.hpp'):
86    print 'Boost must be installed'
87    Exit(1)
88   
89conf.env.Append(CPPPATH=["../../kernel"])
90if not conf.CheckCHeader('mod2.h'):
91    print 'must have a Singular build directory'
92    Exit(1)
93env = conf.Finish()
94
95env = Environment(options=opts)
96if (env['PLATFORM']=="darwin"):
97    applelink.generate(env)
98   
99SING_ROOT="../.."
100SING_ARCH=re.sub("\r|\n","",os.popen("../../singuname.sh").read())
101#PYTHON_VERSION="2.3"
102sources=["python.cc", "poly_wrap.cc", "vector_wrap.cc", "CF_wrap.cc",\
103             "number_wrap.cc", "playground.cc", "ideal_wrap.cc", "interpreter_support.cc",\
104             "ring_wrap.cc", "intvec_wrap.cc"]
105#Program("boosttest",
106#                 "boost.cpp",\
107#                 CXX="g++-3.3",\
108#              CPPPATH=[".", SING_ROOT+"/kernel",\
109#                       SING_ROOT+"/Singular", SING_ROOT+"/"+SING_ARCH +"/include",\
110#                       PYTHON_CONFIG.incdir, BOOST_PREFIX+"/include", "/sw/include"],
111#              LIBS=["boost_python",PYTHON_CONFIG.libname], CPPDEFINES=["NDEBUG","BUILD_MODULE"], SHLIBPREFIX="")
112env['LDMODULESUFFIX'] = '.so'
113if platform=="cygwin":
114  sources.append("mywrapper.cc")
115  sources.remove("python.cc")
116def module_target(*args,**keywords):
117    if env['PLATFORM']=="darwin":
118        print "Hello this is a Mac"
119        keywords['LINKFLAGS']="-bundle_loader ../../Singular/Singular"
120        try:
121            keywords['LIBPATH'].append(env['FINK_PREFIX']+"/lib")
122            keywords['CPPPATH'].append(env['FINK_PREFIX']+"/include")
123        except:
124            pass
125        return env.LoadableModule(*args,**keywords)
126    else:
127        if platform=="cygwin":
128          keywords['CPPPATH'].append("/usr/local/include/boost-1_32")
129          keywords['LIBPATH'].append("/usr/local/lib")
130          keywords['LIBPATH'].append("/bin")
131          return env.StaticLibrary(*args,**keywords)
132        else:
133          return env.SharedLibrary(*args,**keywords)
134module_target("python_module",
135              sources,\
136              CPPPATH=[SING_ROOT+"/kernel",\
137                       SING_ROOT+"/Singular", SING_ROOT+"/"+SING_ARCH +"/include",\
138                       PYTHON_CONFIG.incdir],\
139              LIBPATH=[PYTHON_CONFIG.libdir],\
140              CXXFLAGS="-O2",\
141              LIBS=["boost_python",PYTHON_CONFIG.libname], CPPDEFINES=["NDEBUG","BUILD_MODULE"], SHLIBPREFIX="")
142
143
Note: See TracBrowser for help on using the repository browser.