Sha256: 2d84e5a63b82adfacd4eb5d5077b832aa02c3a95cb59febd72bd3eb52d8384a2

Contents?: true

Size: 1.84 KB

Versions: 4

Compression:

Stored size: 1.84 KB

Contents

# -*- coding: UTF-8 -*-

require 'mj/tools/subprocess'
require 'build-tool/build-system/base'
require 'build-tool/build-system/make'

module BuildTool; module BuildSystem

    #
    # QMake build system.
    #
    class QMake < Base

        include MJ::Tools::SubProcess

        class QMakeError < BuildTool::Error; end

        def initialize( *args )
            super( *args )
        end

        #
        ### ATTRIBUTES
        #

        # Check if the module is configured
        def configured?
            Pathname.new( build_directory ).join( 'Makefile' ).exist?
        end

        def name
            "qmake"
        end

        #
        ### METHODS
        #

        # Configure the module
        def reconfigure()
            configure
        end

        # Execute a qmake command in the context of the build directory
        def qmake( command, wd = build_directory )
            rc = self.class.execute "qmake #{command}", wd, env
            if rc != 0
                raise QMakeError, "qmake failed with error #{rc}!"
            end
            rc
        end

        def configure
            check_build_directory( true )
            opt = option_string
            opt += " PREFIX=#{install_prefix.to_s}" if install_prefix
            rc = qmake "#{source_directory}/*.pro #{opt}"
            rc
        end

        def install( fast )
            make( "install" )
        end

        def install_fast_supported?
            false
        end

        def make( target = nil )
            Make.make( "#{target ? target : "" }", build_directory, self.module.environment.values )
        end

        def option_string
            arr = []
            option_hash.each do |var, val|
                arr << "#{var}='#{val}'"
            end
            arr.join(" ")
        end

    end # class QMake


end; end # module BuildTool::BuildSystem

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
build-tool-0.6.9 lib/build-tool/build-system/qmake.rb
build-tool-0.6.8 lib/build-tool/build-system/qmake.rb
build-tool-0.6.7 lib/build-tool/build-system/qmake.rb
build-tool-0.6.6 lib/build-tool/build-system/qmake.rb