Class: MTBuild::ApplicationConfiguration

Inherits:
CompiledConfiguration show all
Defined in:
lib/mtbuild/application_configuration.rb

Overview

Use this class to create application configurations. You won’t typically instantiate this directly. Instead, the ApplicationProject.add_configuration method will create this for you.

Instance Attribute Summary

Attributes inherited from CompiledConfiguration

#dependencies, #source_files, #tests

Attributes inherited from Configuration

#configuration_name, #output_folder, #parent_project, #project_folder

Instance Method Summary collapse

Methods inherited from CompiledConfiguration

#add_sources, #initialize

Methods included from Rake::DSL

#application_task, #framework_task, #static_library_task, #test_application_task

Methods inherited from Configuration

#initialize

Constructor Details

This class inherits a constructor from MTBuild::CompiledConfiguration

Instance Method Details

#configure_tasksObject

Create the actual Rake tasks that will perform the configuration’s work



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/mtbuild/application_configuration.rb', line 11

def configure_tasks
  super
  all_object_files = []
  all_object_folders = []
  @toolchains.each do |toolchain, sources|
    object_files, object_folders = toolchain.create_compile_tasks(sources)
    all_object_files |= object_files
    all_object_folders |= object_folders
  end

  project_filename = @parent_project.project_name.to_s.gsub(':','-')
  application_binaries, application_files, application_folders = @default_toolchain.create_application_tasks(all_object_files, project_filename)
  dependencies = @dependencies+all_object_folders+application_folders+application_files+application_binaries

  desc "Build application '#{@parent_project.project_name}' with configuration '#{@configuration_name}'"
  new_task = application_task @configuration_name => dependencies do |t|
    @post_build.call if @post_build.respond_to? :call
    puts "built application #{t.name}."
    @tests.each do |test|
      if Rake::Task.task_defined? test
        Rake::Task[test].invoke
      else
        $stderr.puts "warning: Skipping unknown test '#{test}'"
      end
    end
  end

  namespace @configuration_name do
    OrganizedPackageTask.new("#{project_filename}-#{@configuration_name}", :noversion) do |t|
      t.need_tar_gz = true
      t.add_files_to_folder("", application_binaries+application_files)
    end
  end
  Rake::Task[:"#{@parent_project.project_name}:#{@configuration_name}:package"].prerequisites.insert(0, :"#{@parent_project.project_name}:#{@configuration_name}")

end