Class: Dev::BoostBuild

Inherits:
Object
  • Object
show all
Defined in:
lib/dev/BoostBuild.rb

Constant Summary collapse

@@default_toolset =
nil

Class Method Summary collapse

Class Method Details

.buildJamfile(directory) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/dev/BoostBuild.rb', line 54

def self.buildJamfile(directory)
  jamfilename=directory+"/Jamfile"
  if(File.exists?(jamfilename))
 puts "Jamfile already exists."
 return
  end
  if(File.exists?(directory))
 Dir.chdir(directory) do
   File.open(jamfilename,'w') { |jamfile|
     Dir.glob("*boost_*").each {|f|
    jamfile.puts getJamfileLine(f)

  # add extra <link>shared entry for windows

  line = getJamfileLine(f)
  if(line.include?("<link>static") && line.include?("-vc") && line.include?(".lib"))
    line = line.gsub("<link>static","<link>shared")
    jamfile.puts line
  end
  }
}
 end
  end
end

.defaultToolsetObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/dev/BoostBuild.rb', line 9

def self.defaultToolset
  if(defined?(BOOSTBUILD_DEFAULT_TOOLSET))
 puts_debug "BOOSTBUILD_DEFAULT_TOOLSET=#{BOOSTBUILD_DEFAULT_TOOLSET}"
 return BOOSTBUILD_DEFAULT_TOOLSET
  end
  return @@default_toolset if !@@default_toolset.nil? 
  begin
 text=''
 Dir.chdir(DEV_ROOT) { |dir|
      text=`b2 --debug-configuration`
 } 
 toolset=''
    text.scan(/<toolset>([\.\w-]+)/).each{ | var_match |
  toolset=var_match[0].to_s
 }
    return toolset
  rescue
 return nil
  end
end

.getJamfileLine(filename) ⇒ Object



78
79
80
81
82
83
# File 'lib/dev/BoostBuild.rb', line 78

def self.getJamfileLine(filename)
  words=filename.split('-')
  library = words[0]
  library = library[3,library.length-3] if library.index("lib") == 0
  return "lib " + library + " : : <file>./" + filename + " " + getLibraryProperties(filename)
end

.getLibraryProperties(filename) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/dev/BoostBuild.rb', line 30

def self.getLibraryProperties(filename)
  #words=filename.split('-')

  #flags=words[2] if words.length == 4

  #flags = flags + "-" + words[3] if words.length == 5

  #result="<toolset>" + getToolset(words[1]) if words.length==4

  link="static"
  link="shared" if filename.index("lib") != 0 && !filename.include?(".a")
  link="shared" if filename.include?(".so") || filename.include?(".dylib")
  result =  " <link>" + link + " " 
  variant = "release"
  variant = "debug" if filename.include?("d.") || filename.include?("-gd-")
  #result = result + " <variant>release " if !flags.include?("d")

  #result = result + " <variant>debug " if flags.include?("d")

  result = result + " <variant>#{variant} "
  threading="single"
  threading="multi" if filename.include?("-mt")
  #result = result + " <threading>multi " if flags.include?("mt")

  #result = result + " <threading>single " if !flags.include?("mt")

  result = result + " <threading>#{threading} "
  #result = result + " <runtime-link>static " if flags.include?("s")

  result = result + " <runtime-debugging>on " if filename.include?('-gd') #if flags.include?("g")

  result = result + ";"
end

.getToolset(name) ⇒ Object



85
86
87
88
89
90
91
92
# File 'lib/dev/BoostBuild.rb', line 85

def self.getToolset(name)
  toolset = "msvc"
  toolset = "darwin-4.2.1" if name=='xgcc42'
  toolset = "msvc-9.0" if name=='vc90'
  toolset = "msvc-10.0" if name=='vc100'
  toolset = "msvc-11.0" if name=='vc110'
  return toolset
end

.setDefaultToolset(toolset) ⇒ Object



5
6
7
# File 'lib/dev/BoostBuild.rb', line 5

def self.setDefaultToolset toolset
  @@default_toolset=toolset
end