Mxx_ru 1.1.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.
Files changed (147) hide show
  1. data/COPYING +26 -0
  2. data/NEWS +52 -0
  3. data/README +21 -0
  4. data/Rakefile +32 -0
  5. data/examples/exe_and_lib/main.cpp +15 -0
  6. data/examples/exe_and_lib/prj.rb +11 -0
  7. data/examples/exe_and_lib/say.cpp +13 -0
  8. data/examples/exe_and_lib/say.hpp +11 -0
  9. data/examples/exe_and_lib/say.rb +7 -0
  10. data/examples/exe_dll_lib/inout.cpp +15 -0
  11. data/examples/exe_dll_lib/inout.hpp +26 -0
  12. data/examples/exe_dll_lib/inout.rb +18 -0
  13. data/examples/exe_dll_lib/main.cpp +23 -0
  14. data/examples/exe_dll_lib/prj.rb +11 -0
  15. data/examples/exe_dll_lib/say.cpp +13 -0
  16. data/examples/exe_dll_lib/say.hpp +12 -0
  17. data/examples/exe_dll_lib/say.rb +9 -0
  18. data/examples/exe_dll_lib_2/build.rb +7 -0
  19. data/examples/exe_dll_lib_2/inout/inout.cpp +15 -0
  20. data/examples/exe_dll_lib_2/inout/inout.hpp +26 -0
  21. data/examples/exe_dll_lib_2/inout/prj.rb +16 -0
  22. data/examples/exe_dll_lib_2/main/main.cpp +23 -0
  23. data/examples/exe_dll_lib_2/main/prj.rb +9 -0
  24. data/examples/exe_dll_lib_2/say/prj.rb +8 -0
  25. data/examples/exe_dll_lib_2/say/say.cpp +13 -0
  26. data/examples/exe_dll_lib_2/say/say.hpp +12 -0
  27. data/examples/simple_exe/main.cpp +26 -0
  28. data/examples/simple_exe/prj.rb +7 -0
  29. data/lib/mxx_ru/abstract_target.rb +283 -0
  30. data/lib/mxx_ru/binary_target.rb +89 -0
  31. data/lib/mxx_ru/binary_unittest.rb +130 -0
  32. data/lib/mxx_ru/cpp/analyzer.rb +230 -0
  33. data/lib/mxx_ru/cpp/composite.rb +106 -0
  34. data/lib/mxx_ru/cpp/detect_toolset.rb +122 -0
  35. data/lib/mxx_ru/cpp/mode.rb +85 -0
  36. data/lib/mxx_ru/cpp/obj_placement.rb +321 -0
  37. data/lib/mxx_ru/cpp/qt.rb +333 -0
  38. data/lib/mxx_ru/cpp/rucodegen.rb +114 -0
  39. data/lib/mxx_ru/cpp/source_file.rb +71 -0
  40. data/lib/mxx_ru/cpp/target.rb +1371 -0
  41. data/lib/mxx_ru/cpp/toolset.rb +1029 -0
  42. data/lib/mxx_ru/cpp/toolsets/bcc_win32_5.rb +52 -0
  43. data/lib/mxx_ru/cpp/toolsets/bcc_win32_family.rb +451 -0
  44. data/lib/mxx_ru/cpp/toolsets/c89_etk_nsk.rb +56 -0
  45. data/lib/mxx_ru/cpp/toolsets/c89_nsk.rb +56 -0
  46. data/lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb +273 -0
  47. data/lib/mxx_ru/cpp/toolsets/gcc_cygwin.rb +54 -0
  48. data/lib/mxx_ru/cpp/toolsets/gcc_family.rb +382 -0
  49. data/lib/mxx_ru/cpp/toolsets/gcc_linux.rb +60 -0
  50. data/lib/mxx_ru/cpp/toolsets/gcc_mingw.rb +144 -0
  51. data/lib/mxx_ru/cpp/toolsets/gcc_sparc_solaris.rb +87 -0
  52. data/lib/mxx_ru/cpp/toolsets/vc7.rb +62 -0
  53. data/lib/mxx_ru/cpp/toolsets/vc8.rb +452 -0
  54. data/lib/mxx_ru/cpp/toolsets/vc_family.rb +428 -0
  55. data/lib/mxx_ru/cpp.rb +36 -0
  56. data/lib/mxx_ru/ex.rb +134 -0
  57. data/lib/mxx_ru/makestyle_generator.rb +138 -0
  58. data/lib/mxx_ru/textfile_unittest.rb +284 -0
  59. data/lib/mxx_ru/util.rb +258 -0
  60. data/tests/c/pcre/chartables.c +183 -0
  61. data/tests/c/pcre/config.h +99 -0
  62. data/tests/c/pcre/dftables.c +167 -0
  63. data/tests/c/pcre/get.c +349 -0
  64. data/tests/c/pcre/internal.h +677 -0
  65. data/tests/c/pcre/maketables.c +140 -0
  66. data/tests/c/pcre/pcre.c +8304 -0
  67. data/tests/c/pcre/pcre.h +193 -0
  68. data/tests/c/pcre/pcre.rb +14 -0
  69. data/tests/c/pcre/pcredemo.c +316 -0
  70. data/tests/c/pcre/pcregrep.c +642 -0
  71. data/tests/c/pcre/pcreposix.c +305 -0
  72. data/tests/c/pcre/pcreposix.h +88 -0
  73. data/tests/c/pcre/pcretest.c +1483 -0
  74. data/tests/c/pcre/perltest +211 -0
  75. data/tests/c/pcre/printint.c +360 -0
  76. data/tests/c/pcre/study.c +472 -0
  77. data/tests/cpp/mswin_res_dll/build.rb +14 -0
  78. data/tests/cpp/mswin_res_dll/dll.cpp +17 -0
  79. data/tests/cpp/mswin_res_dll/dll.rb +30 -0
  80. data/tests/cpp/mswin_res_dll/dll.rc +48 -0
  81. data/tests/cpp/mswin_res_dll/h/dll.hpp +8 -0
  82. data/tests/cpp/mswin_res_dll/h/res.h +3 -0
  83. data/tests/cpp/mswin_res_dll/main.cpp +13 -0
  84. data/tests/cpp/mswin_res_dll/main.rb +20 -0
  85. data/tests/cpp/mswin_res_dll/res/tree_fol.bmp +0 -0
  86. data/tests/cpp/mswin_res_dll/res/tree_state_1.bmp +0 -0
  87. data/tests/cpp/mswin_res_dll/res/tree_state_2.bmp +0 -0
  88. data/tests/cpp/mswin_res_exe/build.rb +23 -0
  89. data/tests/cpp/mswin_res_exe/h/res.h +3 -0
  90. data/tests/cpp/mswin_res_exe/main.cpp +17 -0
  91. data/tests/cpp/mswin_res_exe/main.rc +48 -0
  92. data/tests/cpp/mswin_res_exe/res/tree_fol.bmp +0 -0
  93. data/tests/cpp/mswin_res_exe/res/tree_state_1.bmp +0 -0
  94. data/tests/cpp/mswin_res_exe/res/tree_state_2.bmp +0 -0
  95. data/tests/cpp/rucodegen/host_config.cpp +20 -0
  96. data/tests/cpp/rucodegen/host_config.rb +14 -0
  97. data/tests/cpp/rucodegen/impl/conn_params.cpp +7 -0
  98. data/tests/cpp/rucodegen/impl/conn_params.rb +14 -0
  99. data/tests/cpp/rucodegen/impl/h/conn_params.hpp +10 -0
  100. data/tests/cpp/rucodegen/prj.rb +17 -0
  101. data/tests/cpp/textfile_unittest/build.rb +8 -0
  102. data/tests/cpp/textfile_unittest/etalons/out_0.txt +0 -0
  103. data/tests/cpp/textfile_unittest/etalons/out_1.txt +1 -0
  104. data/tests/cpp/textfile_unittest/etalons/out_128.txt +128 -0
  105. data/tests/cpp/textfile_unittest/main.cpp +89 -0
  106. data/tests/cpp/textfile_unittest/prj.rb +8 -0
  107. data/tests/cpp/textfile_unittest/prj.ut.rb +18 -0
  108. data/tests/cpp/toolset_name.rb +6 -0
  109. data/tests/cpp/vc_cleanup/cout.log +72 -0
  110. data/tests/cpp/vc_cleanup/dll_hi.cpp +5 -0
  111. data/tests/cpp/vc_cleanup/exe_hi.cpp +10 -0
  112. data/tests/cpp/vc_cleanup/lib_hi.cpp +5 -0
  113. data/tests/cpp/vc_cleanup/prj_dll_no_implib.rb +10 -0
  114. data/tests/cpp/vc_cleanup/prj_dll_no_implib_simple_target_root.rb +11 -0
  115. data/tests/cpp/vc_cleanup/prj_dll_with_implib.rb +11 -0
  116. data/tests/cpp/vc_cleanup/prj_dll_with_implib_simple_target_root.rb +14 -0
  117. data/tests/cpp/vc_cleanup/prj_exe_no_implib.rb +10 -0
  118. data/tests/cpp/vc_cleanup/prj_exe_no_implib_simple_target_root.rb +11 -0
  119. data/tests/cpp/vc_cleanup/prj_lib.rb +10 -0
  120. data/tests/cpp/vc_cleanup/prj_lib_with_simple_target_root.rb +11 -0
  121. data/tests/cpp/vc_cleanup/tc_vc_cleanup.rb +60 -0
  122. data/tests/mxx_ru/change_default_value/ignoring_by_build_root/build.rb +8 -0
  123. data/tests/mxx_ru/change_default_value/ignoring_by_build_root/child_1.rb +5 -0
  124. data/tests/mxx_ru/change_default_value/ignoring_by_child_1/build.rb +7 -0
  125. data/tests/mxx_ru/change_default_value/ignoring_by_child_1/child_1.rb +5 -0
  126. data/tests/mxx_ru/change_default_value/ignoring_by_child_1/child_2.rb +5 -0
  127. data/tests/mxx_ru/change_default_value/ok/build.rb +8 -0
  128. data/tests/mxx_ru/change_default_value/ok/child_1.rb +8 -0
  129. data/tests/mxx_ru/tc_makestyle_generator.rb +117 -0
  130. data/tests/mxx_ru/vc8/tc_actual_manifest.rb +230 -0
  131. data/tests/mxx_ru/vc8/tc_append_mt_commands.rb +104 -0
  132. data/tests/mxx_ru/vc8/tc_default_manifest.rb +17 -0
  133. data/tests/mxx_ru/vc8/tc_define_manifest.rb +173 -0
  134. data/tests/mxx_ru/vc8/tc_drop_default_manifest.rb +16 -0
  135. data/tests/mxx_ru/vc8/tc_invalid_params.rb +81 -0
  136. data/tests/mxx_ru/vc8/ts_vc8.rb +10 -0
  137. data/tests/qt/aclock/aclock.cpp +148 -0
  138. data/tests/qt/aclock/aclock.h +45 -0
  139. data/tests/qt/aclock/main.cpp +28 -0
  140. data/tests/qt/aclock/prj.rb +21 -0
  141. data/tests/qt/iconview/main.cpp +76 -0
  142. data/tests/qt/iconview/prj.rb +21 -0
  143. data/tests/qt/toplevel/main.cpp +9 -0
  144. data/tests/qt/toplevel/options.ui +587 -0
  145. data/tests/qt/toplevel/options.ui.h +98 -0
  146. data/tests/qt/toplevel/prj.rb +21 -0
  147. metadata +241 -0
data/COPYING ADDED
@@ -0,0 +1,26 @@
1
+ Copyright (c) 1996-2004, Yauheni Akhotnikau
2
+ Copyright (c) 2004-2006, JSC Intervale
3
+ Copyright (c) 2006 The Mxx_ru Project
4
+ All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without modification,
7
+ are permitted provided that the following conditions are met:
8
+
9
+ 1. Redistributions of source code must retain the above copyright notice, this
10
+ list of conditions and the following disclaimer.
11
+ 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ this list of conditions and the following disclaimer in the documentation
13
+ and/or other materials provided with the distribution.
14
+ 3. The name of the author may not be used to endorse or promote products
15
+ derived from this software without specific prior written permission.
16
+
17
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
18
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
20
+ EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
22
+ OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
25
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
26
+ OF SUCH DAMAGE.
data/NEWS ADDED
@@ -0,0 +1,52 @@
1
+ Changes in Mxx_ru
2
+
3
+ 1.1.0 version (2006.02..2006.04)
4
+
5
+ Documentation and commentaries are translated to english.
6
+
7
+ Simplified MXX_RU_CPP_TOOLSET environment value setup.
8
+
9
+ composite_target, dll_target, lib_target, exe_target methods are
10
+ added, which allows to simplify description of common C++ projects.
11
+
12
+ An ability to change default values for such parameters as
13
+ runtime_mode, rtti_mode, rtl_mode, threading_mode was added.
14
+
15
+ Fixed clean operations for Visual C++:
16
+ - if .exp file is exists for current target, then
17
+ corresponding .lib and .exp files are removed;
18
+ - the way PDB files created was changed to create individual PDB file
19
+ for each target, which is removed during a clean operation.
20
+
21
+ VC++ 8.0 support was added, including manifests support.
22
+
23
+ Mxx_ru is transformed to RubyGem.
24
+
25
+ 1.0.12 version (2005.11.17)
26
+
27
+ Support of RuCodeGen for C++ projects was added.
28
+ See Mxx_ru::Cpp::RuCodeGen class for details.
29
+
30
+ 1.0.10 version (2005.08.04)
31
+
32
+ mxx_ru/cpp/toolsets/gcc_sparc_solaris.rb file was added to support
33
+ GNU C++ compiler on Solaris platform.
34
+
35
+ 1.0.9 version (2005.07.12)
36
+
37
+ Bug, slowing down the work with projects containing large amount of
38
+ DLL's on unix platforms was fixed.
39
+
40
+ Added --mxx-cpp-no-depends-analyzer option, which turns off
41
+ scanning of C++ files for dependencies.
42
+
43
+ 1.0.7 version (2005.04.01)
44
+
45
+ Added Mxx_ru::Makestyle_generator class.
46
+
47
+ 1.0.6 version (2004.11.26)
48
+
49
+ Bug, slowing down the work with projects conaining deep dependencies
50
+ between each other was fixed. Problem was because of increase of
51
+ intercalls to get values of spreadable options. Now, spreadable option
52
+ values are cached and recalculated only on change.
data/README ADDED
@@ -0,0 +1,21 @@
1
+ Copyright (c) 1996-2005, Yauheni Akhotnikau
2
+
3
+ Copyright (c) 2004-2006, JSC Intervale
4
+
5
+ Copyright (c) 2006 The Mxx_ru Project
6
+
7
+ All rights reserved.
8
+
9
+ Mxx_ru (Make++ on Ruby) is a cross-platform build tool.
10
+ It's intended for C/C++ languages in general, but it's easy to extend
11
+ for handling other languages. It allows to use one project file to compile
12
+ the project on platforms like Windows, Unix (Linux, *BSD), HP NonStop, etc, using
13
+ a compilers such as Visual C++, GNU C++, Borland C++, c89, etc.
14
+
15
+ Originally mxx_ru was developed by Intervale company (http://intervale.ru).
16
+ Later, Intervale company released Mxx_ru as an Open Source project
17
+ and now Mxx_ru is developed by a group of developers, interested in Mxx_ru
18
+ evolution.
19
+
20
+ Latest versions of mxx_ru and it's documentation (including installation and setup
21
+ instruction) is available at http://www.rubyforge.org/projects/mxx-ru.
data/Rakefile ADDED
@@ -0,0 +1,32 @@
1
+ require 'rubygems'
2
+ Gem::manage_gems
3
+
4
+ require 'rake/gempackagetask'
5
+
6
+ PKG_NAME =
7
+ RKG_VERSION = '1.1.0'
8
+
9
+ spec = Gem::Specification.new do |s|
10
+ s.name = "Mxx_ru"
11
+ s.version = "1.1.0"
12
+ s.author = "The Mxx_ru Project"
13
+ s.email = "eao197@yahoo.com"
14
+ s.homepage = "http://www.rubyforge.com/projects/mxx-ru"
15
+ s.platform = Gem::Platform::RUBY
16
+ s.summary = "Mxx_ru (Make++ on Ruby) is a cross-platform build tool"
17
+ s.files = FileList[ "{bin,tests,lib,docs,examples}/**/*" ].
18
+ exclude( "rdoc" ).to_a
19
+ s.require_path = "lib"
20
+ # s.autorequire = "rucodegen"
21
+ # s.test_file = "tests/ts_rucodegen.rb"
22
+ s.has_rdoc = true
23
+ s.rdoc_options = [ '-S', '--main', 'README' ]
24
+ s.extra_rdoc_files = [ "README", "Rakefile", "COPYING", "NEWS" ] + FileList[ "docs/**/*" ].to_a
25
+ end
26
+
27
+ gem = Rake::GemPackageTask.new( spec ) do |pkg|
28
+ pkg.need_zip = true
29
+ pkg.need_tar = true
30
+ end
31
+
32
+ task :default => [ gem.package_dir + "/" + gem.name + "-" + gem.version.version + ".gem" ]
@@ -0,0 +1,15 @@
1
+ #include <iostream>
2
+
3
+ #include <say.hpp>
4
+
5
+ int
6
+ main()
7
+ {
8
+ say_hello( std::cout );
9
+
10
+ std::cout << "Exe and lib main..." << std::endl;
11
+
12
+ say_bye( std::cout );
13
+
14
+ return 0;
15
+ }
@@ -0,0 +1,11 @@
1
+ require 'mxx_ru/cpp'
2
+
3
+ Mxx_ru::Cpp::exe_target( "prj.rb" ) {
4
+ target( "exe_and_lib" )
5
+
6
+ required_prj( "say.rb" )
7
+
8
+ include_path( "." )
9
+
10
+ cpp_source( "main.cpp" )
11
+ }
@@ -0,0 +1,13 @@
1
+ #include <iostream>
2
+
3
+ void
4
+ say_hello( std::ostream & to )
5
+ {
6
+ to << "Hello!" << std::endl;
7
+ }
8
+
9
+ void
10
+ say_bye( std::ostream & to )
11
+ {
12
+ to << "Bye!" << std::endl;
13
+ }
@@ -0,0 +1,11 @@
1
+ #if !defined( _SAY_HPP_ )
2
+ #define _SAY_HPP_
3
+
4
+ #include <iostream>
5
+
6
+ void
7
+ say_hello( std::ostream & to );
8
+ void
9
+ say_bye( std::ostream & to );
10
+
11
+ #endif
@@ -0,0 +1,7 @@
1
+ require 'mxx_ru/cpp'
2
+
3
+ Mxx_ru::Cpp::lib_target( "say.rb" ) {
4
+ target( "say" )
5
+
6
+ cpp_source( "say.cpp" )
7
+ }
@@ -0,0 +1,15 @@
1
+ #include <say.hpp>
2
+
3
+ #include <inout.hpp>
4
+
5
+ inout_t::inout_t(
6
+ const std::string & method )
7
+ : m_method( method )
8
+ {
9
+ say_hello( std::cout, method );
10
+ }
11
+
12
+ inout_t::~inout_t()
13
+ {
14
+ say_bye( std::cout, m_method );
15
+ }
@@ -0,0 +1,26 @@
1
+ #if !defined( _INOUT_HPP_ )
2
+ #define _INOUT_HPP_
3
+
4
+ #include <string>
5
+
6
+ #if defined( INOUT_MSWIN )
7
+ #if defined( INOUT_PRJ )
8
+ #define INOUT_TYPE __declspec(dllexport)
9
+ #else
10
+ #define INOUT_TYPE __declspec(dllimport)
11
+ #endif
12
+ #else
13
+ #define INOUT_TYPE
14
+ #endif
15
+
16
+ class INOUT_TYPE inout_t
17
+ {
18
+ public :
19
+ inout_t( const std::string & method );
20
+ ~inout_t();
21
+
22
+ private :
23
+ std::string m_method;
24
+ };
25
+
26
+ #endif
@@ -0,0 +1,18 @@
1
+ require 'mxx_ru/cpp'
2
+
3
+ Mxx_ru::Cpp::dll_target( "inout.rb" ) {
4
+ target( "inout" )
5
+ implib_path( "." )
6
+
7
+ required_prj( "say.rb" )
8
+
9
+ include_path( "." )
10
+
11
+ define( "INOUT_PRJ" )
12
+
13
+ if "mswin" == toolset.tag( "target_os" )
14
+ define( "INOUT_MSWIN" )
15
+ end
16
+
17
+ cpp_source( "inout.cpp" )
18
+ }
@@ -0,0 +1,23 @@
1
+ #include <iostream>
2
+
3
+ #include <inout.hpp>
4
+
5
+ void
6
+ some_func()
7
+ {
8
+ inout_t braces( "some_func" );
9
+
10
+ std::cout << "Some functionality..." << std::endl;
11
+ }
12
+
13
+ int
14
+ main()
15
+ {
16
+ inout_t braces( "main" );
17
+
18
+ std::cout << "Exe, dll, lib main..." << std::endl;
19
+
20
+ some_func();
21
+
22
+ return 0;
23
+ }
@@ -0,0 +1,11 @@
1
+ require 'mxx_ru/cpp'
2
+
3
+ Mxx_ru::Cpp::exe_target( "prj.rb" ) {
4
+ target( "exe_dll_lib" )
5
+
6
+ required_prj( "inout.rb" )
7
+
8
+ include_path( "." )
9
+
10
+ cpp_source( "main.cpp" )
11
+ }
@@ -0,0 +1,13 @@
1
+ #include <say.hpp>
2
+
3
+ void
4
+ say_hello( std::ostream & to, const std::string & where )
5
+ {
6
+ to << where << ": Hello!" << std::endl;
7
+ }
8
+
9
+ void
10
+ say_bye( std::ostream & to, const std::string & where )
11
+ {
12
+ to << where << ": Bye!" << std::endl;
13
+ }
@@ -0,0 +1,12 @@
1
+ #if !defined( _SAY_HPP_ )
2
+ #define _SAY_HPP_
3
+
4
+ #include <iostream>
5
+ #include <string>
6
+
7
+ void
8
+ say_hello( std::ostream & to, const std::string & where );
9
+ void
10
+ say_bye( std::ostream & to, const std::string & where );
11
+
12
+ #endif
@@ -0,0 +1,9 @@
1
+ require 'mxx_ru/cpp'
2
+
3
+ Mxx_ru::Cpp::lib_target( "say.rb" ) {
4
+ target( "say" )
5
+
6
+ include_path( "." )
7
+
8
+ cpp_source( "say.cpp" )
9
+ }
@@ -0,0 +1,7 @@
1
+ require 'mxx_ru/cpp'
2
+
3
+ Mxx_ru::Cpp::composite_target( Mxx_ru::BUILD_ROOT ) {
4
+ required_prj( "main/prj.rb" )
5
+
6
+ global_include_path( "." )
7
+ }
@@ -0,0 +1,15 @@
1
+ #include <say/say.hpp>
2
+
3
+ #include <inout/inout.hpp>
4
+
5
+ inout_t::inout_t(
6
+ const std::string & method )
7
+ : m_method( method )
8
+ {
9
+ say_hello( std::cout, method );
10
+ }
11
+
12
+ inout_t::~inout_t()
13
+ {
14
+ say_bye( std::cout, m_method );
15
+ }
@@ -0,0 +1,26 @@
1
+ #if !defined( _INOUT_HPP_ )
2
+ #define _INOUT_HPP_
3
+
4
+ #include <string>
5
+
6
+ #if defined( INOUT_MSWIN )
7
+ #if defined( INOUT_PRJ )
8
+ #define INOUT_TYPE __declspec(dllexport)
9
+ #else
10
+ #define INOUT_TYPE __declspec(dllimport)
11
+ #endif
12
+ #else
13
+ #define INOUT_TYPE
14
+ #endif
15
+
16
+ class INOUT_TYPE inout_t
17
+ {
18
+ public :
19
+ inout_t( const std::string & method );
20
+ ~inout_t();
21
+
22
+ private :
23
+ std::string m_method;
24
+ };
25
+
26
+ #endif
@@ -0,0 +1,16 @@
1
+ require 'mxx_ru/cpp'
2
+
3
+ Mxx_ru::Cpp::dll_target( "inout/prj.rb" ) {
4
+ target( "inout" )
5
+ implib_path( "lib" )
6
+
7
+ required_prj( "say/prj.rb" )
8
+
9
+ define( "INOUT_PRJ" )
10
+
11
+ if "mswin" == toolset.tag( "target_os" )
12
+ define( "INOUT_MSWIN" )
13
+ end
14
+
15
+ cpp_source( "inout.cpp" )
16
+ }
@@ -0,0 +1,23 @@
1
+ #include <iostream>
2
+
3
+ #include <inout/inout.hpp>
4
+
5
+ void
6
+ some_func()
7
+ {
8
+ inout_t braces( "some_func" );
9
+
10
+ std::cout << "Some functionality..." << std::endl;
11
+ }
12
+
13
+ int
14
+ main()
15
+ {
16
+ inout_t braces( "main" );
17
+
18
+ std::cout << "Exe, dll, lib main..." << std::endl;
19
+
20
+ some_func();
21
+
22
+ return 0;
23
+ }
@@ -0,0 +1,9 @@
1
+ require 'mxx_ru/cpp'
2
+
3
+ Mxx_ru::Cpp::exe_target( "main/prj.rb" ) {
4
+ target( "exe_dll_lib" )
5
+
6
+ required_prj( "inout/prj.rb" )
7
+
8
+ cpp_source( "main.cpp" )
9
+ }
@@ -0,0 +1,8 @@
1
+ require 'mxx_ru/cpp'
2
+
3
+ Mxx_ru::Cpp::lib_target( "say/prj.rb" ) {
4
+ target_root( "lib" )
5
+ target( "say" )
6
+
7
+ cpp_source( "say.cpp" )
8
+ }
@@ -0,0 +1,13 @@
1
+ #include <say/say.hpp>
2
+
3
+ void
4
+ say_hello( std::ostream & to, const std::string & where )
5
+ {
6
+ to << where << ": Hello!" << std::endl;
7
+ }
8
+
9
+ void
10
+ say_bye( std::ostream & to, const std::string & where )
11
+ {
12
+ to << where << ": Bye!" << std::endl;
13
+ }
@@ -0,0 +1,12 @@
1
+ #if !defined( _SAY_HPP_ )
2
+ #define _SAY_HPP_
3
+
4
+ #include <iostream>
5
+ #include <string>
6
+
7
+ void
8
+ say_hello( std::ostream & to, const std::string & where );
9
+ void
10
+ say_bye( std::ostream & to, const std::string & where );
11
+
12
+ #endif
@@ -0,0 +1,26 @@
1
+ #include <iostream>
2
+ #include <string>
3
+
4
+ void
5
+ say_hello( std::ostream & to )
6
+ {
7
+ to << "Hello!" << std::endl;
8
+ }
9
+
10
+ void
11
+ say_bye( std::ostream & to )
12
+ {
13
+ to << "Bye!" << std::endl;
14
+ }
15
+
16
+ int
17
+ main()
18
+ {
19
+ say_hello( std::cout );
20
+
21
+ std::cout << "Simple exe main..." << std::endl;
22
+
23
+ say_bye( std::cout );
24
+
25
+ return 0;
26
+ }
@@ -0,0 +1,7 @@
1
+ require 'mxx_ru/cpp'
2
+
3
+ Mxx_ru::Cpp::exe_target( "prj.rb" ) {
4
+ target( "simple_exe" )
5
+
6
+ cpp_source( "main.cpp" )
7
+ }