Module: MxxRu

Defined in:
lib/mxx_ru/ex.rb,
lib/mxx_ru/util.rb,
lib/mxx_ru/compat.rb,
lib/mxx_ru/cpp/qt.rb,
lib/mxx_ru/cpp/mode.rb,
lib/mxx_ru/cpp/target.rb,
lib/mxx_ru/cpp/toolset.rb,
lib/mxx_ru/cpp/analyzer.rb,
lib/mxx_ru/binary_target.rb,
lib/mxx_ru/cpp/composite.rb,
lib/mxx_ru/cpp/rucodegen.rb,
lib/mxx_ru/binary_library.rb,
lib/mxx_ru/cpp/qt4details.rb,
lib/mxx_ru/abstract_target.rb,
lib/mxx_ru/binary_unittest.rb,
lib/mxx_ru/cpp/source_file.rb,
lib/mxx_ru/cpp/toolsets/vc7.rb,
lib/mxx_ru/cpp/toolsets/vc8.rb,
lib/mxx_ru/cpp/toolsets/vc9.rb,
lib/mxx_ru/cpp/obj_placement.rb,
lib/mxx_ru/cpp/toolsets/vc10.rb,
lib/mxx_ru/cpp/toolsets/vc11.rb,
lib/mxx_ru/cpp/toolsets/vc12.rb,
lib/mxx_ru/cpp/toolsets/vc14.rb,
lib/mxx_ru/textfile_unittest.rb,
lib/mxx_ru/cpp/detect_toolset.rb,
lib/mxx_ru/cpp/lib_collection.rb,
lib/mxx_ru/makestyle_generator.rb,
lib/mxx_ru/cpp/toolsets/c89_nsk.rb,
lib/mxx_ru/cpp/toolsets/icc_win.rb,
lib/mxx_ru/cpp/qt4_via_pkg_config.rb,
lib/mxx_ru/cpp/toolsets/gcc_linux.rb,
lib/mxx_ru/cpp/toolsets/gcc_mingw.rb,
lib/mxx_ru/cpp/toolsets/vc_family.rb,
lib/mxx_ru/cpp/toolsets/gcc_cygwin.rb,
lib/mxx_ru/cpp/toolsets/gcc_darwin.rb,
lib/mxx_ru/cpp/toolsets/gcc_family.rb,
lib/mxx_ru/cpp/toolsets/vc8_family.rb,
lib/mxx_ru/cpp/toolsets/bcc_win32_5.rb,
lib/mxx_ru/cpp/toolsets/c89_etk_nsk.rb,
lib/mxx_ru/cpp/toolsets/clang_linux.rb,
lib/mxx_ru/cmd_line_option_processor.rb,
lib/mxx_ru/cpp/toolsets/clang_family.rb,
lib/mxx_ru/generators/bin-unittest/g.rb,
lib/mxx_ru/cpp/toolsets/clang_freebsd.rb,
lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb,
lib/mxx_ru/generators/cpp-build-root/g.rb,
lib/mxx_ru/cpp/toolsets/gcc_unix_family.rb,
lib/mxx_ru/generators/impl/std_receiver.rb,
lib/mxx_ru/cpp/toolsets/bcc_win32_family.rb,
lib/mxx_ru/cpp/toolsets/gcc_sparc_solaris.rb,
lib/mxx_ru/generators/impl/cpp/generation.rb,
lib/mxx_ru/cpp/obj_placements/custom_subdir.rb

Overview

– Copyright © 1996-2004, Yauheni Akhotnikau Copyright © 2004-2006, JSC Intervale Copyright © 2006-2015, The Mxx_ru Project All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

  3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++

Defined Under Namespace

Modules: Cpp, Generators, Util Classes: AbstractGenerator, AbstractMethodEx, AbstractTarget, BinaryLibrary, BinaryLibraryTypeConflictEx, BinaryTarget, BinaryUnittestTarget, BuildEx, CmdLineOptionProcessor, Ex, GlobalOptionConflictEx, GlobalOptionDisallowedValueEx, InvalidCastEx, InvalidValueEx, MakestyleGenerator, MissingDependFileEx, NegativeBinaryUnittestTarget, TargetState, TargetUnknownEx, TextfileUnittestTarget, UnsupportedModeEx, UnsupportedTargetTypeEx

Constant Summary collapse

Abstract_method_ex =

For compatibility with previous versions.

AbstractMethodEx
Invalid_cast_ex =

For compatibility with previous versions.

InvalidCastEx
Build_ex =

For compatibility with previous versions.

BuildEx
Unsupported_target_type_ex =

For compatibility with previous versions.

UnsupportedTargetTypeEx
Target_unknown_ex =

For compatibility with previous versions.

TargetUnknownEx
Global_option_conflict_ex =

For compatibility with previous versions.

GlobalOptionConflictEx
Global_option_disallowed_value_ex =

For compatibility with previous versions.

GlobalOptionDisallowedValueEx
Unsupported_mode_ex =

For compatibility with previous versions.

UnsupportedModeEx
Missing_depend_file_ex =

For compatibility with previous versions.

MissingDependFileEx
Invalid_value_ex =

For compatibility with previous versions.

InvalidValueEx
Binary_target =

For compatilibily with previous versions.

BinaryTarget
BUILD_ROOT =

File name of root project file.

"build.rb"
Target_state =

For compatibility with previous versions.

TargetState
Abstract_generator =

For compatibility with previous versions.

AbstractGenerator
Abstract_target =

For compatibility with previous versions.

AbstractTarget
Binary_unittest_target =

For compatibility with previous versions.

BinaryUnittestTarget
Textfile_unittest_target =

For compatibility with previous versions.

TextfileUnittestTarget
Makestyle_generator =

For compatibility with previous versions.

MakestyleGenerator
@@defined_targets =

Map of targets loaded. Key is target alias – file name with definition of a target.

Hash.new
@@first_target_alias =

Root target alias. This target will be used in setup_target function to start building process.

nil

Class Method Summary collapse

Class Method Details

.enable_show_briefObject

Manually enable ‘show-brief’ mode.

Intended to use in project files:

MxxRu::Cpp::exe_target( 'some.prj' ) {
  ...
  MxxRu::enable_show_brief
  ...
}

‘show-brief’ is global mode. Once enabled it cannot be disabled form inside another project file.

Call to MxxRu::enable_show_brief ignored if ‘–mxx-show-brief-disabled’ specified in command-line.



427
428
429
# File 'lib/mxx_ru/util.rb', line 427

def MxxRu.enable_show_brief
  Util::Mode.instance.try_enable_show_brief
end

.query_target(prj_alias, mandatory) ⇒ Object



168
169
170
171
172
173
174
175
176
177
178
# File 'lib/mxx_ru/abstract_target.rb', line 168

def MxxRu.query_target( prj_alias, mandatory )
  target = @@defined_targets[ prj_alias ]

  # If target was required, we already should found it.
  # Build should be stopper otherwise.
  if target.nil? && mandatory
    raise TargetUnknownEx.new( prj_alias )
  end

  return target
end

.setup_target(target, build_enabled = true) ⇒ Object



133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
# File 'lib/mxx_ru/abstract_target.rb', line 133

def MxxRu.setup_target( target, build_enabled = true )
  begin
    if !( target_defined_for?( target.prj_alias ) )
      @@defined_targets[ target.prj_alias ] = target;
    end

    if build_enabled && nil != @@first_target_alias &&
      @@first_target_alias == target.prj_alias
      # It is a root project, required to build.

      # If this project is not root project file and root project file
      # exists, then we will load root project file and start build process
      # after that.
      if BUILD_ROOT != target.prj_alias
        if FileTest.exists?( BUILD_ROOT )
          require BUILD_ROOT
        end
      end

      target.clean if MxxRu::Util::Mode.instance.is_clean or
          MxxRu::Util::Mode.instance.is_rebuild

      target.reset if MxxRu::Util::Mode.instance.is_rebuild

      MxxRu::Util::build_call_wrapper( target ) if
          !MxxRu::Util::Mode.instance.is_clean
    end

    return target
  rescue MxxRu::Ex => ex
    $stderr.print "<<<[#{ex.class.name}]\t#{ex}>>>\n"
    exit( -2 )
  end
end

.show_brief(message) ⇒ Object

Show a brief message. The message shown only if ‘show-brief’ mode is on.



432
433
434
435
# File 'lib/mxx_ru/util.rb', line 432

def MxxRu.show_brief( message )
  puts message[ 0, 1 ].capitalize << message[ 1..message.size ] << ' ...' if
      Util::Mode.instance.is_brief_desc and message
end

.target_defined_for?(prj_alias) ⇒ Boolean

Returns:

  • (Boolean)


180
181
182
183
# File 'lib/mxx_ru/abstract_target.rb', line 180

def MxxRu.target_defined_for?(prj_alias)
  return true if @@defined_targets.has_key?( prj_alias )
  return false
end

.try_set_first_target_alias(a_alias) ⇒ Object



127
128
129
130
131
# File 'lib/mxx_ru/abstract_target.rb', line 127

def MxxRu.try_set_first_target_alias( a_alias )
  if nil == @@first_target_alias
    @@first_target_alias = a_alias.clone
  end
end