Mxx_ru 1.5.6 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
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