Class: Xezat::Generator::CMake

Inherits:
Object
  • Object
show all
Includes:
Xezat
Defined in:
lib/xezat/generator/cmake.rb

Constant Summary

Constants included from Xezat

CONFIG_FILE, DATA_DIR, REPOSITORY_DIR, ROOT_DIR, TEMPLATE_DIR, VERSION

Instance Method Summary collapse

Methods included from Xezat

#bashvar, #config, #packages, #variables

Constructor Details

#initialize(options, cygport) ⇒ CMake

Returns a new instance of CMake.



11
12
13
14
# File 'lib/xezat/generator/cmake.rb', line 11

def initialize(options, cygport)
  @options = options
  @cygport = cygport
end

Instance Method Details

#generateObject



16
17
18
19
20
21
# File 'lib/xezat/generator/cmake.rb', line 16

def generate
  Xezat.logger.debug('Start CMakeLists.txt generation')
  vars = variables(@cygport)
  generate_cmakelists(vars, @options)
  Xezat.logger.debug('End CMakeLists.txt generation')
end

#generate_cmakelists(variables, options) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/xezat/generator/cmake.rb', line 23

def generate_cmakelists(variables, options)
  srcdir = variables[:CYGCONF_SOURCE] || variables[:CYGCMAKE_SOURCE] || variables[:S]
  srcdir = File.expand_path(File.join(variables[:S], options['srcdir'])) if options['srcdir']
  Xezat.logger.debug("  srcdir = #{srcdir}")

  cmakelists = File.expand_path(File.join(srcdir, 'CMakeLists.txt'))
  raise UnregeneratableConfigurationError, 'CMakeLists.txt already exists' if File.exist?(cmakelists) && !options['overwrite']

  Xezat.logger.debug('  Generate CMakeLists.txt')

  File.atomic_write(cmakelists) do |f|
    f.write(get_cmakelists(variables))
  end
end

#get_cmakelists(variables) ⇒ Object



38
39
40
41
# File 'lib/xezat/generator/cmake.rb', line 38

def get_cmakelists(variables)
  erb = File.expand_path(File.join(TEMPLATE_DIR, 'cmake', 'cmake.erb'))
  ERB.new(File.readlines(erb).join(nil), trim_mode: '%-').result(binding)
end