Class: Emplace::CMakeBuild

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

Direct Known Subclasses

Unix, Windows

Instance Method Summary collapse

Instance Method Details

#build(dir) ⇒ Object



56
57
58
# File 'lib/emplace.rb', line 56

def build(dir)
  sh "cmake --build #{dir} --target install"
end

#cmake(name, module_dir, build_dir, dist_dir) ⇒ Object



53
54
55
# File 'lib/emplace.rb', line 53

def cmake(name, module_dir, build_dir, dist_dir)
  sh "cmake . -B#{build_dir} -DCMAKE_MODULE_PATH=#{module_dir} -DCMAKE_INSTALL_PREFIX=#{dist_dir}/#{name} -G \"#{cmake_generator}\""
end

#fetch(name, opts, vendor_dir) ⇒ Object



67
68
69
70
71
72
73
74
75
76
# File 'lib/emplace.rb', line 67

def fetch(name, opts, vendor_dir)
  package = package_name(name)
  url = File.join(opts[:url], opts[:version])

  IO.popen(['curl', '-fsSL', File.join(url, package)]) {|source|
    write_file(package, vendor_dir) {|dest|
      IO.copy_stream(source, dest)
    }
  }
end

#sh(cmd, dir = '.') ⇒ Object



62
63
64
65
66
# File 'lib/emplace.rb', line 62

def sh(cmd, dir = '.')
  Dir.chdir(dir) {
    raise $? unless system cmd
  }
end

#test(dir) ⇒ Object



59
60
61
# File 'lib/emplace.rb', line 59

def test(dir)
  sh "ctest --verbose", dir
end

#write_file(name, dir, &block) ⇒ Object



77
78
79
80
# File 'lib/emplace.rb', line 77

def write_file(name, dir, &block)
  FileUtils.mkdir_p(dir)
  File.open(File.join(dir, name), 'wb', &block)
end