~tempo-openerp/+junk/hamster-tempo-precise-pangolin_dev

« back to all changes in this revision

Viewing changes to hamster-applet/.waf-1.5.17-59000d9a8fd915f99be7dcd7409a0462/wafadmin/Tools/ruby.py

  • Committer: vg at tempo-consulting
  • Date: 2013-08-22 13:52:00 UTC
  • Revision ID: vg@tempo-consulting.fr-20130822135200-8tp3z5nn3cplzed0
[UPDATE] README

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#! /usr/bin/env python
2
 
# encoding: utf-8
3
 
 
4
 
import os
5
 
import Task,Options,Utils
6
 
from TaskGen import before,feature,after
7
 
from Configure import conf
8
 
def init_rubyext(self):
9
 
        self.default_install_path='${ARCHDIR_RUBY}'
10
 
        self.uselib=self.to_list(getattr(self,'uselib',''))
11
 
        if not'RUBY'in self.uselib:
12
 
                self.uselib.append('RUBY')
13
 
        if not'RUBYEXT'in self.uselib:
14
 
                self.uselib.append('RUBYEXT')
15
 
def apply_ruby_so_name(self):
16
 
        self.env['shlib_PATTERN']=self.env['rubyext_PATTERN']
17
 
def check_ruby_version(conf,minver=()):
18
 
        if Options.options.rubybinary:
19
 
                conf.env.RUBY=Options.options.rubybinary
20
 
        else:
21
 
                conf.find_program("ruby",var="RUBY",mandatory=True)
22
 
        ruby=conf.env.RUBY
23
 
        try:
24
 
                version=Utils.cmd_output([ruby,'-e','puts defined?(VERSION) ? VERSION : RUBY_VERSION']).strip()
25
 
        except:
26
 
                conf.fatal('could not determine ruby version')
27
 
        conf.env.RUBY_VERSION=version
28
 
        try:
29
 
                ver=tuple(map(int,version.split(".")))
30
 
        except:
31
 
                conf.fatal('unsupported ruby version %r'%version)
32
 
        cver=''
33
 
        if minver:
34
 
                if ver<minver:
35
 
                        conf.fatal('ruby is too old')
36
 
                cver=".".join(str(x)for x in minver)
37
 
        conf.check_message('ruby',cver,True,version)
38
 
def check_ruby_ext_devel(conf):
39
 
        if not conf.env.RUBY:
40
 
                conf.fatal('ruby detection is required first')
41
 
        if not conf.env.CC_NAME and not conf.env.CXX_NAME:
42
 
                conf.fatal('load a c/c++ compiler first')
43
 
        version=tuple(map(int,conf.env.RUBY_VERSION.split(".")))
44
 
        def read_out(cmd):
45
 
                return Utils.to_list(Utils.cmd_output([conf.env.RUBY,'-rrbconfig','-e',cmd]))
46
 
        def read_config(key):
47
 
                return read_out('puts Config::CONFIG[%r]'%key)
48
 
        ruby=conf.env['RUBY']
49
 
        archdir=read_config('archdir')
50
 
        cpppath=archdir
51
 
        if version>=(1,9,0):
52
 
                ruby_hdrdir=read_config('rubyhdrdir')
53
 
                cpppath+=ruby_hdrdir
54
 
                cpppath+=[os.path.join(ruby_hdrdir[0],read_config('arch')[0])]
55
 
        conf.check(header_name='ruby.h',includes=cpppath,mandatory=True,errmsg='could not find ruby header file')
56
 
        conf.env.LIBPATH_RUBYEXT=read_config('libdir')
57
 
        conf.env.LIBPATH_RUBYEXT+=archdir
58
 
        conf.env.CPPPATH_RUBYEXT=cpppath
59
 
        conf.env.CCFLAGS_RUBYEXT=read_config("CCDLFLAGS")
60
 
        conf.env.rubyext_PATTERN='%s.'+read_config('DLEXT')[0]
61
 
        flags=read_config('LDSHARED')
62
 
        while flags and flags[0][0]!='-':
63
 
                flags=flags[1:]
64
 
        if len(flags)>1 and flags[1]=="ppc":
65
 
                flags=flags[2:]
66
 
        conf.env.LINKFLAGS_RUBYEXT=flags
67
 
        conf.env.LINKFLAGS_RUBYEXT+=read_config("LIBS")
68
 
        conf.env.LINKFLAGS_RUBYEXT+=read_config("LIBRUBYARG_SHARED")
69
 
        if Options.options.rubyarchdir:
70
 
                conf.env.ARCHDIR_RUBY=Options.options.rubyarchdir
71
 
        else:
72
 
                conf.env.ARCHDIR_RUBY=read_config('sitearchdir')[0]
73
 
        if Options.options.rubylibdir:
74
 
                conf.env.LIBDIR_RUBY=Options.options.rubylibdir
75
 
        else:
76
 
                conf.env.LIBDIR_RUBY=read_config('sitelibdir')[0]
77
 
def set_options(opt):
78
 
        opt.add_option('--with-ruby-archdir',type='string',dest='rubyarchdir',help='Specify directory where to install arch specific files')
79
 
        opt.add_option('--with-ruby-libdir',type='string',dest='rubylibdir',help='Specify alternate ruby library path')
80
 
        opt.add_option('--with-ruby-binary',type='string',dest='rubybinary',help='Specify alternate ruby binary')
81
 
 
82
 
feature('rubyext')(init_rubyext)
83
 
before('apply_incpaths','apply_type_vars','apply_lib_vars','apply_bundle')(init_rubyext)
84
 
after('default_cc','vars_target_cshlib')(init_rubyext)
85
 
feature('rubyext')(apply_ruby_so_name)
86
 
before('apply_link')(apply_ruby_so_name)
87
 
conf(check_ruby_version)
88
 
conf(check_ruby_ext_devel)