class MTBuild::ApplicationConfiguration

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.

Public Instance Methods

configure_tasks() click to toggle source

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

Calls superclass method
# 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