require 'mj/tools/subprocess' require 'build-tool/build-system/base' module BuildTool; module BuildSystem # # QMake build system. # class QMake < Base include MJ::Tools::SubProcess class MakeError < BuildTool::Error; end 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 do_make( target = nil ) rc = self.class.execute( "make #{target ? target : "" }", build_directory, self.module.environment.values ) if rc != 0 raise MakeError, "make #{target || "" } failed with error code #{rc}"; end rc end def install( fast ) make( "install" ) end def install_fast_supported? false end def make( target = nil ) do_make( target ) end def option_string arr = [] option_names.each do |var| val = self[var] arr << "#{var}='#{val}'" end arr.join(" ") end end # class QMake end; end # module BuildTool::BuildSystem