Class: Bake::Blocks::Makefile

Inherits:
Object
  • Object
show all
Includes:
HasExecuteCommand
Defined in:
lib/blocks/makefile.rb

Constant Summary collapse

MAKE_COMMAND =
"make"
MAKE_FILE_FLAG =
"-f"
MAKE_DIR_FLAG =
"-C"
MAKE_CLEAN =
"clean"

Instance Method Summary collapse

Methods included from HasExecuteCommand

#executeCommand

Constructor Details

#initialize(config, referencedConfigs, block) ⇒ Makefile

Returns a new instance of Makefile.



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/blocks/makefile.rb', line 14

def initialize(config, referencedConfigs, block)
  @config = config
  @projectDir = config.get_project_dir
  @path_to = ""
  @flags = adjustFlags("",config.flags) if config.flags
  @makefile = config.name
  @target = config.target != "" ? config.target : "all"
  calcPathTo(referencedConfigs)
  calcCommandLine
  calcCleanLine

  block.lib_elements[config.line_number] = [LibElement.new(LibElement::LIB_WITH_PATH, config.lib)] if config.lib != ""
end

Instance Method Details

#calcCleanLineObject



37
38
39
40
41
42
43
44
# File 'lib/blocks/makefile.rb', line 37

def calcCleanLine
  @cleanLine = remove_empty_strings_and_join([
    MAKE_COMMAND, MAKE_CLEAN,
    @flags, 
    MAKE_DIR_FLAG,  File.dirname(@makefile),
    MAKE_FILE_FLAG, File.basename(@makefile),
    @path_to]) 
end

#calcCommandLineObject



28
29
30
31
32
33
34
35
# File 'lib/blocks/makefile.rb', line 28

def calcCommandLine
  @commandLine = remove_empty_strings_and_join([
    MAKE_COMMAND, @target,
    @flags,
    MAKE_DIR_FLAG,  File.dirname(@makefile),
    MAKE_FILE_FLAG, File.basename(@makefile),
    @path_to])        
end

#calcPathTo(referencedConfigs) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/blocks/makefile.rb', line 46

def calcPathTo(referencedConfigs)
  @path_to = ""
  if @config.pathTo != ""
    pathHash = {}
    @config.pathTo.split(",").each do |p|
      nameOfP = p.strip
      dirOfP = nil
      if referencedConfigs.include?nameOfP
        dirOfP = referencedConfigs[nameOfP].first.get_project_dir
      else
        Bake.options.roots.each do |r|
          absIncDir = r+"/"+nameOfP
          if File.exists?(absIncDir)
            dirOfP = absIncDir
            break
          end
        end
      end
      if dirOfP == nil
        Bake.formatter.printError("Project '#{nameOfP}' not found", @config)
        ExitHelper.exit(1)
      end
      pathHash[nameOfP] = File.rel_from_to_project(File.dirname(@projectDir),File.dirname(dirOfP))
    end
    path_to_array = []
    pathHash.each { |k,v| path_to_array << "PATH_TO_#{k}=#{v}" }
    @path_to = path_to_array.join(" ")
  end
  
end

#cleanObject



89
90
91
# File 'lib/blocks/makefile.rb', line 89

def clean
  return executeCommand(@cleanLine, "No rule to make target 'clean'.", @config.validExitCodes) unless Bake.options.filename
end

#executeObject



77
78
79
# File 'lib/blocks/makefile.rb', line 77

def execute
 return executeCommand(@commandLine, nil, @config.validExitCodes)
end

#exitStepObject



85
86
87
# File 'lib/blocks/makefile.rb', line 85

def exitStep
  return executeCommand(@commandLine, nil, @config.validExitCodes)
end

#startupStepObject



81
82
83
# File 'lib/blocks/makefile.rb', line 81

def startupStep
  return executeCommand(@commandLine, nil, @config.validExitCodes)
end