source: trunk/SConstruct @ 2998

Last change on this file since 2998 was 2998, checked in by Kana Sugimoto, 10 years ago

r2993 | KanaSugimoto? | 2014-10-15 20:32:13 +0900 (Wed, 15 Oct 2014) | 14 lines

New Development: No

JIRA Issue: No

Ready for Test: Yes/No?

Interface Changes: Yes/No?

What Interface Changed: Please list interface changes

Test Programs: List test programs

Put in Release Notes: Yes/No?

Module(s): Module Names change impacts.

Description: creating a test branch to merge from NRAO repository



r2994 | KanaSugimoto? | 2014-10-15 20:51:59 +0900 (Wed, 15 Oct 2014) | 3 lines

Initialized merge tracking via "svnmerge" with revisions "1-31330" from
https://svn.cv.nrao.edu/svn/casa/branches/personal/kana/test-merge-43-01/asap


r2995 | KanaSugimoto? | 2014-10-15 21:15:27 +0900 (Wed, 15 Oct 2014) | 3 lines

Initialized merge tracking via "svnmerge" with revisions "1-31330" from
https://svn.cv.nrao.edu/svn/casa/branches/personal/kana/test-merge-43-01/asap


r2996 | KanaSugimoto? | 2014-10-15 21:24:23 +0900 (Wed, 15 Oct 2014) | 20 lines

Merged revisions 31331 via svnmerge from
https://svn.cv.nrao.edu/svn/casa/branches/personal/kana/test-merge-43-01/asap

........

r31331 | kana.sugimoto | 2014-10-15 21:06:50 +0900 (Wed, 15 Oct 2014) | 14 lines



New Development: Yes/No?

JIRA Issue: No/Yes? List JIRA ticket.

Ready for Test: Yes/No?

Interface Changes: Yes/No?

What Interface Changed: Please list interface changes

Test Programs: List test programs

Put in Release Notes: Yes/No?

Module(s): Module Names change impacts.

Description: dummy commit



........


r2997 | KanaSugimoto? | 2014-10-15 21:48:06 +0900 (Wed, 15 Oct 2014) | 17 lines

Merged revisions 31332-31334 via svnmerge from
https://svn.cv.nrao.edu/svn/casa/branches/personal/kana/test-merge-43-01/asap

........

r31332 | kana.sugimoto | 2014-10-15 21:30:59 +0900 (Wed, 15 Oct 2014) | 1 line


A minor modification to a comment

........

r31333 | kana.sugimoto | 2014-10-15 21:36:19 +0900 (Wed, 15 Oct 2014) | 1 line


Removed a white line

........

r31334 | kana.sugimoto | 2014-10-15 21:39:32 +0900 (Wed, 15 Oct 2014) | 1 line


Put back year change

........


File size: 8.1 KB
Line 
1import os
2import sys
3import distutils.sysconfig
4import platform
5import SCons
6
7# try to autodetect numpy
8def get_numpy_incdir():
9    try:
10        # try to find an egg
11        from pkg_resources import require
12        tmp = require("numpy")
13        import numpy
14        return numpy.__path__[0]+"/core/include"
15    except Exception:
16        # now try standard package
17        try:
18            import numpy
19            return numpy.__path__[0]+"/core/include"
20        except ImportError:
21            pass
22    return ""
23
24def get_libdir():
25    return os.path.basename(distutils.sysconfig.get_config_var('LIBDIR'))
26
27LIBDIR = 'lib' #get_libdir()
28
29EnsureSConsVersion(1,0,0)
30
31opts = Variables("options.cache")
32opts.AddVariables(
33                ("extraroot", "Addition tree to look for packages", None),
34                ("extraflags", "Additional build flags", None),
35                PathVariable("casacoreroot", "The location of casacore",
36                             "/usr/local"),
37                BoolVariable("casacorestatic",
38                             "Link statically against casacore",
39                             False),
40                ("boostroot", "The root dir where boost is installed", None),
41                ("boostlib", "The name of the boost python library",
42                 "boost_python"),
43                ("boostlibdir", "The boost library location", None),
44                ("boostincdir", "The boost header file location", None),
45                ("cfitsioroot",
46                 "The root directory where cfistio is installed", None),
47                ("cfitsiolibdir", "The cfitsio library location", None),
48                ("cfitsiolib", "The cfitsio library name", "cfitsio"),
49                ("cfitsioincdir", "The cfitsio include location", None),
50                ("wcslib", "The wcs library name", "wcs"),
51                ("wcsroot",
52                 "The root directory where wcs is installed", None),
53                ("wcslibdir", "The wcs library location", None),
54                ("rpfitslib", "The rpfits library name", "rpfits"),
55                ("rpfitsroot",
56                 "The root directory where rpfits is installed", None),
57                ("rpfitslibdir", "The rpfits library location", None),
58
59                ("pyraproot", "The root directory where libpyrap is installed",
60                 None),
61                ("numpyincdir", "numpy header file directory",
62                 get_numpy_incdir()),
63                BoolVariable("enable_pyrap",
64                             "Use pyrap conversion library from system",
65                             False),
66                ("pyraplib", "The name of the pyrap library", "pyrap"),
67                ("pyraplibdir", "The directory where libpyrap is installed",
68                 None),
69                ("pyrapincdir", "The pyrap include location",
70                 None),
71                EnumVariable("mode", "The type of build.", "release",
72                           ["release","debug"], ignorecase=1),
73                EnumVariable("makedoc",
74                             "Build the userguide in specified format",
75                             "none",
76                             ["none", "pdf", "html"], ignorecase=1),
77                BoolVariable("apps", "Build cpp apps", True),
78                BoolVariable("alma", "Enable alma specific functionality",
79                             False),
80                )
81
82env = Environment( toolpath = ['./scons'],
83                   tools = ["default", "utils", "casa"],
84                   ENV = { 'PATH' : os.environ[ 'PATH' ],
85                          'HOME' : os.environ[ 'HOME' ] },
86                   options = opts)
87
88env.Help(opts.GenerateHelpText(env))
89env.SConsignFile()
90if not ( env.GetOption('clean') or env.GetOption('help') ):
91
92    conf = Configure(env)
93    if conf.env.get("extraroot", None):
94        conf.env.AddCustomPackage('extra')
95    conf.env.Append(CPPPATH=[distutils.sysconfig.get_python_inc()])
96    if not conf.CheckHeader("Python.h", language='c'):
97        Exit(1)
98    pylib = 'python'+distutils.sysconfig.get_python_version()
99    if env['PLATFORM'] == "darwin":
100        conf.env.Append(FRAMEWORKS=["Python"])
101    else:
102        if not conf.CheckLib(library=pylib, language='c'): Exit(1)
103
104    conf.env.AddCustomPackage('boost')
105    libname = conf.env["boostlib"]
106    if libname.find(".") > -1 and os.path.exists(libname):
107        conf.env.AppendUnique(LIBS=[env.File(libname)])
108    else:
109        if not conf.CheckLibWithHeader(libname,
110                                       'boost/python.hpp', language='c++'):
111            Exit(1)
112
113    if env["enable_pyrap"]:
114        conf.env.AddCustomPackage('pyrap')
115        if conf.CheckLib(conf.env["pyraplib"], language='c++', autoadd=0):
116            conf.env.PrependUnique(LIBS=env['pyraplib'])
117        else:
118            Exit(1)
119    else:
120        conf.env.AppendUnique(CPPPATH=[conf.env["numpyincdir"]])
121        if conf.CheckHeader("numpy/numpyconfig.h"):
122            conf.env.Append(CPPDEFINES=["-DAIPS_USENUMPY"])
123        else:
124            conf.env.Exit(1)
125        # compile in pyrap from here...
126        conf.env["pyrapint"] = "#/external/libpyrap/pyrap-0.3.2"
127    conf.env.Append(CPPFLAGS=['-DHAVE_LIBPYRAP'])
128
129    if not conf.CheckLib("m"):
130        Exit(1)
131    # test for cfitsio
132    conf.env.AddCustomPackage('cfitsio')
133    libname = conf.env["cfitsiolib"]
134    if not conf.CheckHeader("fitsio.h"):
135        #SuSE is being special
136        conf.env.AppendUnique(CPPPATH=['/usr/include/libcfitsio0'])
137        if not conf.CheckHeader("fitsio.h"):
138            Exit(1)
139    if libname.find(".") > -1 and os.path.exists(libname):
140        conf.env.AppendUnique(LIBS=[env.File(libname)])
141    else:
142        if not conf.CheckLib(libname, language='c'):
143            Exit(1)
144    conf.env.AddCustomPackage('wcs')
145    libname = conf.env["wcslib"]
146    if libname.find(".") > -1 and os.path.exists(libname):
147        conf.env.AppendUnique(LIBS=[env.File(libname)])
148    else:
149        if not conf.CheckLibWithHeader(libname,
150                                       'wcslib/wcs.h', language='c'):
151            Exit(1)
152
153    conf.env.AddCustomPackage('rpfits')
154    if not conf.CheckLibWithHeader(conf.env["rpfitslib"], "RPFITS.h",
155                                   language="c"):
156        Exit(1)
157   
158    libpath = ""
159    for p in [conf.env["casacoreroot"], conf.env.get("extraroot", "")]:
160        pth = os.path.join(p, "include", "casacore")       
161        if os.path.exists(pth):
162            libpath = os.path.join(p, LIBDIR)
163            conf.env.AppendUnique(CPPPATH=[pth])
164            break
165    cclibs = ["casa_images", "casa_ms", "casa_components",
166              "casa_coordinates", "casa_lattices",
167              "casa_fits", "casa_measures", "casa_scimath",
168              "casa_scimath_f", "casa_tables", "casa_casa"]
169    if conf.env["casacorestatic"]:
170        libs = [ env.File(os.path.join(libpath, "lib"+lib+".a")) \
171                 for lib in cclibs ]
172    else:
173        conf.env.AppendUnique(LIBPATH=libpath)
174        if not conf.CheckLibWithHeader("casa_casa", "casa/aips.h",
175                                       language='c++', autoadd=0):
176            Exit(1)
177        libs = cclibs
178    conf.env.PrependUnique(LIBS=libs)
179
180    if not conf.CheckLib('stdc++', language='c++'): Exit(1)
181    if conf.env["alma"]:
182        conf.env.Append(CPPFLAGS=['-DUSE_CASAPY'])
183    if conf.env.get("extraflags"):
184        flags = conf.env.ParseFlags(conf.env["extraflags"])
185        conf.env.MergeFlags(flags)
186    env = conf.Finish()
187
188opts.Save('options.cache', env)
189
190env["version"] = "4.3.x"
191
192if env['mode'] == 'release':
193    if env["PLATFORM"] != "darwin":
194        env.Append(LINKFLAGS=['-Wl,-O1', '-s'])
195    env.Append(CCFLAGS=["-O2"])
196else:
197    env.Append(CCFLAGS=["-g", "-W", "-Wall"])
198
199# Export for SConscript files
200Export("env")
201
202# build externals
203ext = env.SConscript("external-alma/SConscript")
204
205# build library
206so = env.SConscript("src/SConscript", variant_dir="build", duplicate=0)
207
208apps = env.SConscript("apps/SConscript")
209
210# test module import, to see if there are unresolved symbols
211def test_module(target,source,env):
212    pth = str(target[0])
213    mod = os.path.splitext(pth)[0]
214    sys.path.insert(2, os.path.split(mod)[0])
215    __import__(os.path.split(mod)[1])
216    print "ok"
217    return 0
218
219def test_str(target, source, env):
220    return "Testing module..."
221
222taction = Action(test_module, test_str)
223env.AddPostAction(so, taction)
224
225if env.GetOption("clean"):
226    Execute(Delete(".sconf_temp"))
227    Execute(Delete("options.cache"))
228    Execute(Delete(".sconsign.dblite"))
229if env["makedoc"].lower() != "none":
230    env.SConscript("doc/SConscript")
Note: See TracBrowser for help on using the repository browser.