Mxx_ru 1.5.6 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/NEWS CHANGED
@@ -1,5 +1,22 @@
1
1
  Changes in Mxx_ru
2
2
 
3
+ 1.6.0 version (2013.05.17)
4
+
5
+ mxx_ru/cpp/toolsets/vc11.rb file was added to support
6
+ Microsoft Visual Studio 2012 C++ compiler.
7
+
8
+ Clang toolsets family added.
9
+
10
+ mxx_ru/cpp/toolsets/clang_linux.rb file was added to support
11
+ clang compiler on linux platform.
12
+
13
+ Fixed incompatibilities with Ruby 1.9.1
14
+
15
+ Fixed problem with linkage under some versions of g++: order of used static libs matters even though '-Wl,--start-group' and ' -Wl,--end-group' params ARE used.
16
+
17
+ Fixes at GccFamily toolsets build options: option -fPIC moved from GccFamily to
18
+ GccUnixFamily toolset options for compatibility with GccMswinFamily.
19
+
3
20
  1.5.6 version (2012.09.10)
4
21
 
5
22
  Method Cpp::Target#source_encoding for setting default encoding source files was added.
@@ -0,0 +1,10 @@
1
+ require 'mxx_ru/cpp'
2
+
3
+ MxxRu::Cpp::composite_target( Mxx_ru::BUILD_ROOT ) {
4
+ required_prj( "main/prj.rb" )
5
+
6
+ global_include_path( "." )
7
+
8
+ global_obj_placement(
9
+ Mxx_ru::Cpp::CustomSubdirObjPlacement.new( 'bin', 'tmp/output' ) )
10
+ }
@@ -0,0 +1,25 @@
1
+ #include <say/say.hpp>
2
+ #include <math/math.hpp>
3
+
4
+ #include <inout/inout.hpp>
5
+
6
+ inout_t::inout_t(
7
+ const std::string & method,
8
+ int arg_to_square )
9
+ : m_method( method )
10
+ {
11
+ say_type_t say( m_method );
12
+
13
+ say.say( std::cout , "hello" );
14
+
15
+ std::cout << "square of " <<
16
+ arg_to_square << " is " <<
17
+ square( arg_to_square ) << std::endl;
18
+ }
19
+
20
+ inout_t::~inout_t()
21
+ {
22
+ say_type_t say( m_method );
23
+
24
+ say.say( std::cout , "bye" );
25
+ }
@@ -0,0 +1,18 @@
1
+ #if !defined( _INOUT_HPP_ )
2
+ #define _INOUT_HPP_
3
+
4
+ #include <string>
5
+
6
+ class inout_t
7
+ {
8
+ public :
9
+ inout_t(
10
+ const std::string & method,
11
+ int arg_to_square );
12
+ ~inout_t();
13
+
14
+ private :
15
+ std::string m_method;
16
+ };
17
+
18
+ #endif
@@ -0,0 +1,11 @@
1
+ require 'mxx_ru/cpp'
2
+
3
+ Mxx_ru::Cpp::lib_target {
4
+ target_root( "lib" )
5
+ target( "inout" )
6
+
7
+ required_prj( "say/prj.rb" )
8
+ required_prj( "math/prj.rb" )
9
+
10
+ cpp_source( "inout.cpp" )
11
+ }
@@ -0,0 +1,38 @@
1
+ #include <say/say.hpp>
2
+
3
+ #include <log/log.hpp>
4
+
5
+
6
+ /*
7
+ void
8
+ say_hello( std::ostream & to, const std::string & where )
9
+ {
10
+ to << where << ": Hello!" << std::endl;
11
+ }
12
+
13
+ void
14
+ say_bye( std::ostream & to, const std::string & where )
15
+ {
16
+ to << where << ": Bye!" << std::endl;
17
+ }
18
+
19
+ */
20
+
21
+ log_type_t::log_type_t( const std::string & method )
22
+ :
23
+ m_method( method )
24
+ {
25
+ }
26
+
27
+ log_type_t::~log_type_t()
28
+ {
29
+ }
30
+
31
+ void
32
+ log_type_t::log() const
33
+ {
34
+ say_type_t say( m_method );
35
+
36
+ say.say( std::cout , "log" );
37
+ }
38
+
@@ -0,0 +1,30 @@
1
+ #if !defined( _LOG_HPP_ )
2
+ #define _LOG_HPP_
3
+
4
+ #include <iostream>
5
+ #include <string>
6
+
7
+ #if defined( LOG_MSWIN )
8
+ #if defined( LOG_PRJ )
9
+ #define LOG_TYPE __declspec(dllexport)
10
+ #else
11
+ #define LOG_TYPE __declspec(dllimport)
12
+ #endif
13
+ #else
14
+ #define LOG_TYPE
15
+ #endif
16
+
17
+ class LOG_TYPE log_type_t
18
+ {
19
+ public :
20
+ log_type_t( const std::string & method );
21
+ ~log_type_t();
22
+
23
+ void
24
+ log() const;
25
+
26
+ private :
27
+ std::string m_method;
28
+ };
29
+
30
+ #endif
@@ -0,0 +1,20 @@
1
+ require 'mxx_ru/cpp'
2
+
3
+ MxxRu::Cpp::dll_target {
4
+
5
+ rtl_mode( Mxx_ru::Cpp::RTL_SHARED )
6
+
7
+ required_prj( "say/prj.rb" )
8
+
9
+ target( "log" )
10
+ implib_path( "lib" )
11
+
12
+ define( "LOG_PRJ" )
13
+
14
+ if "mswin" == toolset.tag( "target_os" )
15
+ define( "LOG_MSWIN" )
16
+ end
17
+
18
+ cpp_source( "log.cpp" )
19
+ }
20
+
@@ -0,0 +1,10 @@
1
+ #include <math/math.hpp>
2
+
3
+ #include <logic/logic.hpp>
4
+
5
+ double
6
+ square_of_circle( int arg )
7
+ {
8
+ const double pi = 3.14159;
9
+ return pi * square( arg );
10
+ }
@@ -0,0 +1,8 @@
1
+ #if !defined( _LOGIC_HPP_ )
2
+ #define _LOGIC_HPP_
3
+
4
+
5
+ double
6
+ square_of_circle( int arg );
7
+
8
+ #endif
@@ -0,0 +1,11 @@
1
+ require 'mxx_ru/cpp'
2
+
3
+ Mxx_ru::Cpp::lib_target {
4
+ target_root( "lib" )
5
+ target( "logic" )
6
+
7
+ required_prj( "math/prj.rb" )
8
+
9
+ cpp_source( "logic.cpp" )
10
+ }
11
+
@@ -0,0 +1,52 @@
1
+ #include <iostream>
2
+
3
+ #include <inout/inout.hpp>
4
+
5
+ #include <log/log.hpp>
6
+
7
+ #include <logic/logic.hpp>
8
+
9
+ #include <math/math.hpp>
10
+
11
+ void
12
+ some_func()
13
+ {
14
+ inout_t braces( "some_func" , 2);
15
+
16
+ std::cout << "Some functionality..." << std::endl;
17
+ }
18
+
19
+ void
20
+ table_of_squares()
21
+ {
22
+ std::cout << "table of squares: " << std::endl;
23
+ for( int i = 1 ; i < 6 ; ++i )
24
+ std::cout << i << "--" << square( i ) << "\n";
25
+ std::cout << std::endl;
26
+ }
27
+
28
+ void
29
+ circle( int radius )
30
+ {
31
+ std::cout << "square of circle with radius " <<
32
+ radius << " is " << square_of_circle( radius ) << std::endl;
33
+ }
34
+
35
+ int
36
+ main()
37
+ {
38
+ inout_t braces( "main" , 1 );
39
+
40
+ std::cout << "Exe, dll, lib main..." << std::endl;
41
+
42
+ some_func();
43
+
44
+ log_type_t logger( "main" );
45
+ logger.log();
46
+
47
+ circle( 5 );
48
+
49
+ table_of_squares();
50
+
51
+ return 0;
52
+ }
@@ -0,0 +1,15 @@
1
+ require 'mxx_ru/cpp'
2
+
3
+ MxxRu::Cpp::exe_target {
4
+ target( "exe_dll_lib" )
5
+
6
+ required_prj( "log/prj.rb" )
7
+
8
+ required_prj( "inout/prj.rb" )
9
+
10
+ required_prj( "logic/prj.rb" )
11
+
12
+ required_prj( "math/prj.rb" )
13
+
14
+ cpp_source( "main.cpp" )
15
+ }
@@ -0,0 +1,7 @@
1
+ #include <math/math.hpp>
2
+
3
+ int
4
+ square( int arg )
5
+ {
6
+ return arg * arg;
7
+ }
@@ -0,0 +1,8 @@
1
+ #if !defined( _MATH_HPP_ )
2
+ #define _MATH_HPP_
3
+
4
+
5
+ int
6
+ square( int arg );
7
+
8
+ #endif
@@ -0,0 +1,9 @@
1
+ require 'mxx_ru/cpp'
2
+
3
+ Mxx_ru::Cpp::lib_target {
4
+ target_root( "lib" )
5
+ target( "math" )
6
+
7
+ cpp_source( "math.cpp" )
8
+ }
9
+
@@ -0,0 +1,18 @@
1
+ require 'mxx_ru/cpp'
2
+
3
+ MxxRu::Cpp::dll_target {
4
+
5
+ rtl_mode( Mxx_ru::Cpp::RTL_SHARED )
6
+
7
+ target( "say" )
8
+ implib_path( "lib" )
9
+
10
+ define( "SAY_PRJ" )
11
+
12
+ if "mswin" == toolset.tag( "target_os" )
13
+ define( "SAY_MSWIN" )
14
+ end
15
+
16
+ cpp_source( "say.cpp" )
17
+ }
18
+ #=end
@@ -0,0 +1,33 @@
1
+ #include <say/say.hpp>
2
+
3
+ /*
4
+ void
5
+ say_hello( std::ostream & to, const std::string & where )
6
+ {
7
+ to << where << ": Hello!" << std::endl;
8
+ }
9
+
10
+ void
11
+ say_bye( std::ostream & to, const std::string & where )
12
+ {
13
+ to << where << ": Bye!" << std::endl;
14
+ }
15
+
16
+ */
17
+
18
+ say_type_t::say_type_t( const std::string & method )
19
+ :
20
+ m_method( method )
21
+ {
22
+ }
23
+
24
+ say_type_t::~say_type_t()
25
+ {
26
+ }
27
+
28
+ void
29
+ say_type_t::say( std::ostream & to , const std::string & what ) const
30
+ {
31
+ to << m_method << ":" << what << std::endl;
32
+ }
33
+
@@ -0,0 +1,37 @@
1
+ #if !defined( _SAY_HPP_ )
2
+ #define _SAY_HPP_
3
+
4
+ #include <iostream>
5
+ #include <string>
6
+
7
+ #if defined( SAY_MSWIN )
8
+ #if defined( SAY_PRJ )
9
+ #define SAY_TYPE __declspec(dllexport)
10
+ #else
11
+ #define SAY_TYPE __declspec(dllimport)
12
+ #endif
13
+ #else
14
+ #define SAY_TYPE
15
+ #endif
16
+
17
+ /*
18
+ void
19
+ say_hello( std::ostream & to, const std::string & where );
20
+ void
21
+ say_bye( std::ostream & to, const std::string & where );
22
+ */
23
+
24
+ class SAY_TYPE say_type_t
25
+ {
26
+ public :
27
+ say_type_t( const std::string & method );
28
+ ~say_type_t();
29
+
30
+ void
31
+ say( std::ostream & to , const std::string & what ) const;
32
+
33
+ private :
34
+ std::string m_method;
35
+ };
36
+
37
+ #endif
@@ -150,7 +150,7 @@ module MxxRu
150
150
  # Gather file names list from include directives.
151
151
  std_path_included = Array.new
152
152
  local_path_included = Array.new
153
- IO.foreach( a_file_name , encoding: a_encoding ) { |line|
153
+ IO.foreach( a_file_name , encoding: "#{a_encoding}" ) { |line|
154
154
  r = @@include_regex.match( line )
155
155
  if nil != r
156
156
  if "<" == r[ 1 ]
@@ -150,6 +150,8 @@ module MxxRu
150
150
  else
151
151
  if ENV[ 'COMP_ENV' ] and ENV[ 'VC_ARCH' ]
152
152
  'icc_win'
153
+ elsif ENV[ 'VS110COMNTOOLS' ]
154
+ 'vc11'
153
155
  elsif ENV[ 'VS100COMNTOOLS' ]
154
156
  'vc10'
155
157
  elsif ENV[ 'VS90COMNTOOLS' ]
@@ -201,7 +201,9 @@ module MxxRu
201
201
  def push_to( to, what )
202
202
  to << what
203
203
  to.flatten!
204
+ to.reverse!
204
205
  to.uniq!
206
+ to.reverse!
205
207
  end
206
208
  end # class LinkerLists
207
209
 
@@ -0,0 +1,159 @@
1
+ #--
2
+ # Copyright (c) 1996-2004, Yauheni Akhotnikau
3
+ # Copyright (c) 2004-2006, JSC Intervale
4
+ # Copyright (c) 2006-2011, The Mxx_ru Project
5
+ # All rights reserved.
6
+ #
7
+ # Redistribution and use in source and binary forms, with or without modification,
8
+ # are permitted provided that the following conditions are met:
9
+ #
10
+ # 1. Redistributions of source code must retain the above copyright notice,
11
+ # this list of conditions and the following disclaimer.
12
+ # 2. Redistributions in binary form must reproduce the above copyright notice,
13
+ # this list of conditions and the following disclaimer in the documentation
14
+ # and/or other materials provided with the distribution.
15
+ # 3. The name of the author may not be used to endorse or promote products derived
16
+ # from this software without specific prior written permission.
17
+ #
18
+ # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
19
+ # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
20
+ # AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
21
+ # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
+ # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23
+ # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25
+ # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
26
+ # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+ #++
28
+
29
+ require 'mxx_ru/binary_library'
30
+ require 'mxx_ru/cpp/toolsets/gcc_family'
31
+
32
+ module MxxRu
33
+ module Cpp
34
+ module Toolsets
35
+
36
+ # Toolset implemetation for Clang compiler.
37
+ class ClangFamily < GccFamily
38
+ public
39
+
40
+ def initialize( name )
41
+ super( name )
42
+ end
43
+
44
+ # See description at MxxRu::Cpp::Toolset#setup_mandatory_options.
45
+ def setup_mandatory_options( target )
46
+
47
+ if RUNTIME_DEBUG == target.mxx_runtime_mode
48
+ target.compiler_option( "-g" )
49
+ target.linker_option( "-g" )
50
+ elsif RUNTIME_RELEASE == target.mxx_runtime_mode
51
+ target.define( "NDEBUG" )
52
+ target.linker_option( "-s" )
53
+ if OPTIM_SIZE == target.mxx_optimization
54
+ target.compiler_option( "-Os" )
55
+ else
56
+ target.compiler_option( "-O2" )
57
+ end
58
+ end
59
+
60
+ if RTTI_DISABLED == target.mxx_rtti_mode
61
+ target.cpp_compiler_option( "-fno-rtti" )
62
+ end
63
+
64
+ target.compiler_option( "-fPIC" )
65
+
66
+ target.mxx_all_defines.each { |d|
67
+ target.compiler_option( "-D" + d )
68
+ }
69
+
70
+ target.mxx_all_include_paths.each { |p|
71
+ target.compiler_option( "-I" + p )
72
+ }
73
+
74
+ if true == @is_cpp0x_std
75
+ target.cpp_compiler_option( "-std=c++0x" )
76
+ end
77
+ end
78
+
79
+ # Returns C compiler name.
80
+ def c_compiler_name
81
+ tag( [ C_COMPILER_NAME_TAG, COMPILER_NAME_TAG ], "clang" )
82
+ end
83
+
84
+ # Returns C++ compiler name.
85
+ def cpp_compiler_name
86
+ tag( [ CPP_COMPILER_NAME_TAG, COMPILER_NAME_TAG ], "clang++" )
87
+ end
88
+
89
+ # Returns linker name.
90
+ def linker_name
91
+ tag( LINKER_NAME_TAG, "clang++" )
92
+ end
93
+
94
+ # Returns librarian name.
95
+ def librarian_name
96
+ tag( LIBRARIAN_NAME_TAG, "ar" )
97
+ end
98
+
99
+ # Special implementation for support explicit library type linker option.
100
+ def make_linker_include_lib_options( target, libs )
101
+ current_lib_type = nil
102
+ all_libs = libs.inject( '' ) { |r, l|
103
+ # Insert new lib mode switch only if next library has different
104
+ # type than current type.
105
+ if nil == current_lib_type || current_lib_type != l.type
106
+ r << switch_to_default_lib_mode_if_needed( current_lib_type )
107
+ current_lib_type = l.type
108
+ if BinaryLibrary::ANY != l.type &&
109
+ default_lib_linking_mode != l.type
110
+ r << lib_linking_mode_switch( l.type )
111
+ end
112
+ end
113
+
114
+ r << '-l' << port_specific_lib_name_checker( l.name ) << ' '
115
+ }
116
+ all_libs << switch_to_default_lib_mode_if_needed( current_lib_type )
117
+ enclose_linker_include_lib_options_into_brackes( all_libs )
118
+ end
119
+
120
+
121
+ # Return default library linking mode for current platform.
122
+ #
123
+ # Default mode BinaryLibrary::SHARED for Unix with GCC assumed.
124
+ # But default mode can be specified in toolset tag 'lib_linking_mode'.
125
+ def default_lib_linking_mode
126
+ t = tag( 'lib_linking_mode', 'unknown' )
127
+ if 'unknown' != t
128
+ 'static' == t ? BinaryLibrary::STATIC : BinaryLibrary::SHARED
129
+ else
130
+ BinaryLibrary::SHARED
131
+ end
132
+ end
133
+
134
+ # Return command line switch for forcing specified library type.
135
+ def lib_linking_mode_switch( linking_mode )
136
+ "-Wl,#{linking_mode == BinaryLibrary::SHARED ? '-Bdynamic' : '-Bstatic'} "
137
+ end
138
+
139
+ # Return command line switch for closing group of libraries with same type.
140
+ # Empty string returned if current_lib_type is nil of is current_lib_type
141
+ # is default lib linking mode on this platform.
142
+ def switch_to_default_lib_mode_if_needed( current_lib_type )
143
+ if nil != current_lib_type &&
144
+ BinaryLibrary::ANY != current_lib_type &&
145
+ default_lib_linking_mode != current_lib_type
146
+ lib_linking_mode_switch( default_lib_linking_mode )
147
+ else
148
+ ''
149
+ end
150
+ end
151
+
152
+ end # class ClangFamily
153
+
154
+ end # module Toolsets
155
+
156
+ end # module Cpp
157
+
158
+ end # module MxxRu
159
+
@@ -0,0 +1,55 @@
1
+ #--
2
+ # Copyright (c) 1996-2004, Yauheni Akhotnikau
3
+ # Copyright (c) 2004-2006, JSC Intervale
4
+ # Copyright (c) 2006-2011, The Mxx_ru Project
5
+ # All rights reserved.
6
+ #
7
+ # Redistribution and use in source and binary forms, with or without modification,
8
+ # are permitted provided that the following conditions are met:
9
+ #
10
+ # 1. Redistributions of source code must retain the above copyright notice,
11
+ # this list of conditions and the following disclaimer.
12
+ # 2. Redistributions in binary form must reproduce the above copyright notice,
13
+ # this list of conditions and the following disclaimer in the documentation
14
+ # and/or other materials provided with the distribution.
15
+ # 3. The name of the author may not be used to endorse or promote products derived
16
+ # from this software without specific prior written permission.
17
+ #
18
+ # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
19
+ # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
20
+ # AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
21
+ # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
+ # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23
+ # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25
+ # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
26
+ # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+ #++
28
+
29
+ require 'mxx_ru/cpp/toolsets/clang_family'
30
+
31
+ module MxxRu
32
+ module Cpp
33
+ module Toolsets
34
+
35
+ # Toolset implemetation for Clang compiler.
36
+ class ClangLinux < ClangFamily
37
+ public
38
+
39
+ def initialize( a_name = "clang" )
40
+ super( a_name )
41
+ setup_tag( "host_os", "unix" )
42
+ setup_tag( "target_os", "unix" )
43
+ setup_tag( "unix_port", "linux" )
44
+ end
45
+
46
+ end # class ClangFamily
47
+
48
+ end # module Toolsets
49
+
50
+ end # module Cpp
51
+
52
+ end # module MxxRu
53
+
54
+ MxxRu::Cpp::setup_toolset( MxxRu::Cpp::Toolsets::ClangLinux.new )
55
+
@@ -96,8 +96,6 @@ module MxxRu
96
96
  target.linker_option( "-shared-libgcc" )
97
97
  end
98
98
 
99
- target.compiler_option( "-fPIC" )
100
-
101
99
  # If C++ files are exist, linker should use stdc++ library.
102
100
  if target.mxx_cpp_files.size
103
101
  # target.lib( "stdc++" )
@@ -43,6 +43,14 @@ class GccUnixFamily < GccFamily
43
43
  super( name )
44
44
  end
45
45
 
46
+ # This implementation adds -fPIC option for GccUnix compilers.
47
+ # In 1.5.6 version -fPIC existed in GccFamily toolset's method but
48
+ # MinGW doesn't support that option.
49
+ def setup_mandatory_options( target )
50
+ super( target )
51
+ target.compiler_option( "-fPIC" )
52
+ end
53
+
46
54
  # Special implementation for support explicit library type linker option.
47
55
  def make_linker_include_lib_options( target, libs )
48
56
  current_lib_type = nil
@@ -0,0 +1,58 @@
1
+ #--
2
+ # Copyright (c) 1996-2004, Yauheni Akhotnikau
3
+ # Copyright (c) 2004-2006, JSC Intervale
4
+ # Copyright (c) 2006-2011, The Mxx_ru Project
5
+ # All rights reserved.
6
+ #
7
+ # Redistribution and use in source and binary forms, with or without modification,
8
+ # are permitted provided that the following conditions are met:
9
+ #
10
+ # 1. Redistributions of source code must retain the above copyright notice,
11
+ # this list of conditions and the following disclaimer.
12
+ # 2. Redistributions in binary form must reproduce the above copyright notice,
13
+ # this list of conditions and the following disclaimer in the documentation
14
+ # and/or other materials provided with the distribution.
15
+ # 3. The name of the author may not be used to endorse or promote products derived
16
+ # from this software without specific prior written permission.
17
+ #
18
+ # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
19
+ # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
20
+ # AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
21
+ # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
+ # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23
+ # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25
+ # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
26
+ # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+ #++
28
+
29
+ require 'ostruct'
30
+ require 'set'
31
+
32
+ require 'mxx_ru/cpp/target'
33
+ require 'mxx_ru/cpp/toolsets/vc8_family'
34
+
35
+ module MxxRu
36
+ module Cpp
37
+ module Toolsets
38
+
39
+ # Toolset implementation for Visual C++ 11.0 (Visual Studio 2012)
40
+ #
41
+ # Setups following tags:
42
+ # [_ver_hi_] high version number. Value: 11.
43
+ # [_ver_lo_] low version number. Value: 0.
44
+ class Vc11 < MxxRu::Cpp::Toolsets::Vc8Family
45
+ def initialize( a_name = "vc" )
46
+ super( a_name )
47
+
48
+ setup_tag( "ver_hi", "11" )
49
+ setup_tag( "ver_lo", "0" )
50
+ end
51
+ end # class Vc11
52
+
53
+ end # module Toolsets
54
+ end # module Cpp
55
+ end # module MxxRu
56
+
57
+ MxxRu::Cpp::setup_toolset( MxxRu::Cpp::Toolsets::Vc11.new )
58
+
data/lib/mxx_ru/util.rb CHANGED
@@ -361,7 +361,7 @@ module MxxRu
361
361
  # Get OS name where script is exeuted.
362
362
  def Util.host_os
363
363
  if !@@host_os
364
- @@host_os = Config::CONFIG[ "host_os" ]
364
+ @@host_os = RbConfig::CONFIG[ "host_os" ]
365
365
  end
366
366
 
367
367
  return @@host_os
@@ -371,7 +371,7 @@ module MxxRu
371
371
  #
372
372
  # Since v.1.5.1
373
373
  #
374
- IS_WINDOWS_PLATFORM = !((Config::CONFIG['host_os'] =~ /mswin|mingw/).nil?)
374
+ IS_WINDOWS_PLATFORM = !((RbConfig::CONFIG['host_os'] =~ /mswin|mingw/).nil?)
375
375
 
376
376
  # Transform separators in file names to correct ones on the given platform.
377
377
  #
@@ -34,4 +34,4 @@
34
34
  #
35
35
  # puts 'Mxx_ru version is: ' + MXX_RU_VERSION
36
36
  #
37
- MXX_RU_VERSION = '1.5.6'
37
+ MXX_RU_VERSION = '1.6.0'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Mxx_ru
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.6
4
+ version: 1.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-10 00:00:00.000000000 Z
12
+ date: 2013-05-20 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description:
15
15
  email: eao197@yahoo.com
@@ -259,6 +259,8 @@ files:
259
259
  - lib/mxx_ru/cpp/toolsets/c89_etk_nsk.rb
260
260
  - lib/mxx_ru/cpp/toolsets/c89_nsk.rb
261
261
  - lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb
262
+ - lib/mxx_ru/cpp/toolsets/clang_family.rb
263
+ - lib/mxx_ru/cpp/toolsets/clang_linux.rb
262
264
  - lib/mxx_ru/cpp/toolsets/gcc_cygwin.rb
263
265
  - lib/mxx_ru/cpp/toolsets/gcc_darwin.rb
264
266
  - lib/mxx_ru/cpp/toolsets/gcc_family.rb
@@ -268,6 +270,7 @@ files:
268
270
  - lib/mxx_ru/cpp/toolsets/gcc_unix_family.rb
269
271
  - lib/mxx_ru/cpp/toolsets/icc_win.rb
270
272
  - lib/mxx_ru/cpp/toolsets/vc10.rb
273
+ - lib/mxx_ru/cpp/toolsets/vc11.rb
271
274
  - lib/mxx_ru/cpp/toolsets/vc7.rb
272
275
  - lib/mxx_ru/cpp/toolsets/vc8.rb
273
276
  - lib/mxx_ru/cpp/toolsets/vc8_family.rb
@@ -314,6 +317,24 @@ files:
314
317
  - examples/exe_dll_lib_2/say/prj.rb
315
318
  - examples/exe_dll_lib_2/say/say.cpp
316
319
  - examples/exe_dll_lib_2/say/say.hpp
320
+ - examples/exe_dll_lib_3/build.rb
321
+ - examples/exe_dll_lib_3/inout/inout.cpp
322
+ - examples/exe_dll_lib_3/inout/inout.hpp
323
+ - examples/exe_dll_lib_3/inout/prj.rb
324
+ - examples/exe_dll_lib_3/log/log.cpp
325
+ - examples/exe_dll_lib_3/log/log.hpp
326
+ - examples/exe_dll_lib_3/log/prj.rb
327
+ - examples/exe_dll_lib_3/logic/logic.cpp
328
+ - examples/exe_dll_lib_3/logic/logic.hpp
329
+ - examples/exe_dll_lib_3/logic/prj.rb
330
+ - examples/exe_dll_lib_3/main/main.cpp
331
+ - examples/exe_dll_lib_3/main/prj.rb
332
+ - examples/exe_dll_lib_3/math/math.cpp
333
+ - examples/exe_dll_lib_3/math/math.hpp
334
+ - examples/exe_dll_lib_3/math/prj.rb
335
+ - examples/exe_dll_lib_3/say/prj.rb
336
+ - examples/exe_dll_lib_3/say/say.cpp
337
+ - examples/exe_dll_lib_3/say/say.hpp
317
338
  - examples/simple_exe/main.cpp
318
339
  - examples/simple_exe/prj.rb
319
340
  - THANKS
@@ -344,7 +365,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
344
365
  version: '0'
345
366
  requirements: []
346
367
  rubyforge_project:
347
- rubygems_version: 1.8.24
368
+ rubygems_version: 1.8.23
348
369
  signing_key:
349
370
  specification_version: 3
350
371
  summary: Mxx_ru (Make++ on Ruby) is a cross-platform build tool