source: trunk/SConstruct@ 1130

Last change on this file since 1130 was 1130, checked in by mar637, 18 years ago

changed to use scons environments. added cutom paths.

File size: 3.5 KB
Line 
1import os
2import sys
3import glob
4import distutils.sysconfig
5import platform
6# scons plug-ins
7#from installtree import InstallTree
8
9moduledir = distutils.sysconfig.get_python_lib()
10
11opts = Options("userconfig.py")
12opts.AddOptions(PathOption("prefix",
13 "The root installation path",
14 distutils.sysconfig.PREFIX),
15 PathOption("moduledir",
16 "The python module path (site-packages))",
17 moduledir),
18 ("rpfitsdir", "Alternative rpfits location.", ""),
19 ("casadir", "Alternative rpfits location", ""),
20 EnumOption("mode", "The type of build.", "debug",
21 ["release","debug"], ignorecase=1)
22 )
23
24def SGlob(pattern):
25 path = GetBuildPath('SConscript').replace('SConscript', '')
26 return [ i.replace(path, '') for i in glob.glob(path + pattern) ]
27
28
29env = Environment( toolpath = ['./scons'], tools = ["default", "disttar", "installtree", "malte"],
30 ENV = { 'PATH' : os.environ[ 'PATH' ],
31 'HOME' : os.environ[ 'HOME' ] },
32 options = opts)
33
34Help(opts.GenerateHelpText(env))
35env.SConsignFile()
36#env.Append(CASAARCH = '')
37#env.Append(CASAROOT = '')
38
39if not env.GetOption('clean'):
40 conf = Configure(env)
41 # import Custom tests
42 env.AddCustomTests(conf)
43 pylib = 'python'+distutils.sysconfig.get_python_version()
44 pyinc = "Python.h"
45 if env['PLATFORM'] == "darwin":
46 pylib = "Python"
47 if not conf.CheckLib(library=pylib, language='c'): Exit(1)
48 conf.env.Append(CPPPATH=[distutils.sysconfig.get_python_inc()])
49 if not conf.CheckHeader("Python.h", language='c'):
50 Exit(1)
51 if not conf.CheckLibWithHeader('boost_python', 'boost/python.hpp', 'c++'): Exit(1)
52 conf.env.AddCustomPath(env["rpfitsdir"])
53 if not conf.CheckLib('rpfits'): Exit(1)
54 if not conf.CheckLibWithHeader('cfitsio', 'fitsio.h', 'c'): Exit(1)
55 if (sys.platform == "darwin"):
56 conf.env.Append(LIBS = ['-framework vecLib'])
57 else:
58 if not conf.CheckLib('lapack'): Exit(1)
59 if not conf.CheckLib('blas'): Exit(1)
60 if not conf.CheckLib('g2c'): Exit(1)
61 if not conf.CheckLib('stdc++', language='c++'): Exit(1)
62 if not conf.CheckCasa(env["casadir"]): Exit(1)
63 env = conf.Finish()
64
65env["dist_dir"] = "#/dist/asap"
66# general CPPFLAGS
67env.Append(CPPFLAGS='-O3 -Wno-long-long'.split())
68# 64bit flags
69if platform.architecture()[0] == '64bit':
70 env.Append(CPPFLAGS='-fPIC -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D__x86_64__ -DAIPS_64B'.split())
71 # hack to install into /usr/lib64 if scons is in the 32bit /usr/lib/
72 if moduledir.startswith("/usr/lib/"):
73 moduledir.replace("lib","lib64")
74if sys.platform == "darwin":
75 env['SHLINKFLAGS'] = '$LINKFLAGS -dynamiclib -single_module'
76 env['SHLIBSUFFIX'] = '.dylib'
77
78if env['mode'] == 'release':
79 env.Append(LINKFLAGS=['-Wl,-O1'])
80Export("env","SGlob")
81
82so = env.SConscript("src/SConscript", build_dir="build", duplicate=0)
83env.Install(env["dist_dir"], so )
84
85pys = env.SConscript("python/SConscript")
86asapmod = env.InstallTree(dest_dir = os.path.join(env["moduledir"], "asap"),
87 src_dir = "dist/asap",
88 includes = ['*.py', '*.so'],
89 excludes = [])
90asapbin = env.Install(os.path.join(env["prefix"], "bin"), "bin/asap")
91env.Alias('install', [asapmod, asapbin])
92
93#if env['mode'] == "release":
94# env.DistTar("dist/asap", ["README", "INSTALL", Dir(env["dist_dir"])])
Note: See TracBrowser for help on using the repository browser.