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
@@ -0,0 +1,5 @@
1
+ require 'mxx_ru/cpp'
2
+
3
+ Mxx_ru::Cpp::composite_target( 'child_1.rb' ) {
4
+ default_rtti_mode Mxx_ru::Cpp::RTTI_DISABLED
5
+ }
@@ -0,0 +1,7 @@
1
+ require 'mxx_ru/cpp'
2
+
3
+ Mxx_ru::Cpp::composite_target( Mxx_ru::BUILD_ROOT ) {
4
+ required_prj 'child_1.rb'
5
+ required_prj 'child_2.rb'
6
+ }
7
+
@@ -0,0 +1,5 @@
1
+ require 'mxx_ru/cpp'
2
+
3
+ Mxx_ru::Cpp::composite_target( 'child_1.rb' ) {
4
+ default_rtti_mode Mxx_ru::Cpp::RTTI_DISABLED
5
+ }
@@ -0,0 +1,5 @@
1
+ require 'mxx_ru/cpp'
2
+
3
+ Mxx_ru::Cpp::composite_target( 'child_2.rb' ) {
4
+ default_rtti_mode Mxx_ru::Cpp::RTTI_ENABLED
5
+ }
@@ -0,0 +1,8 @@
1
+ require 'mxx_ru/cpp'
2
+
3
+ Mxx_ru::Cpp::composite_target( Mxx_ru::BUILD_ROOT ) {
4
+ default_rtti_mode Mxx_ru::Cpp::RTTI_ENABLED
5
+
6
+ required_prj 'child_1.rb'
7
+ }
8
+
@@ -0,0 +1,8 @@
1
+ require 'mxx_ru/cpp'
2
+
3
+ Mxx_ru::Cpp::composite_target( 'child_1.rb' ) {
4
+
5
+ default_rtti_mode Mxx_ru::Cpp::RTTI_ENABLED
6
+
7
+ }
8
+
@@ -0,0 +1,117 @@
1
+ require 'test/unit'
2
+
3
+ require 'mxx_ru/makestyle_generator'
4
+ require 'mxx_ru/util'
5
+
6
+ class TC_makestyle_generator < Test::Unit::TestCase
7
+ def test_new
8
+ g1 = Mxx_ru::Makestyle_generator.new(
9
+ [ "a" ], [ "b" ], [ "c" ], [ "d" ] )
10
+
11
+ assert( [ "a" ] == g1.target_files )
12
+ assert( [ "b" ] == g1.dependencies )
13
+ assert( [ "c" ] == g1.build_cmds )
14
+ assert( [ "d" ] == g1.clean_cmds )
15
+
16
+ g2 = Mxx_ru::Makestyle_generator.new(
17
+ [ "a", "b" ], [ "c", "d" ], [ "e", "f" ] )
18
+ assert_equal( [ "a", "b" ], g2.target_files )
19
+ assert_equal( [ "c", "d" ], g2.dependencies )
20
+ assert_equal( [ "e", "f" ], g2.build_cmds )
21
+ assert_equal( [], g2.clean_cmds )
22
+
23
+ g3 = Mxx_ru::Makestyle_generator.new(
24
+ "a", "b", "c", "d" )
25
+
26
+ assert( [ "a" ] == g3.target_files )
27
+ assert( [ "b" ] == g3.dependencies )
28
+ assert( [ "c" ] == g3.build_cmds )
29
+ assert( [ "d" ] == g3.clean_cmds )
30
+
31
+ end
32
+
33
+ def test_build_simple
34
+ g1 = Mxx_ru::Makestyle_generator.new(
35
+ "a", "b", "echo hello > a" )
36
+
37
+ Mxx_ru::Util.delete_file( "a" )
38
+ File.new( "b", "w" ).close
39
+
40
+ g1.build( "dummy" )
41
+
42
+ assert( FileTest.exists?( "a" ) )
43
+ end
44
+
45
+ def test_build_no_real_rebuild
46
+
47
+ Mxx_ru::Util.delete_file( "t" )
48
+ Mxx_ru::Util.delete_file( "d" )
49
+
50
+ File.new( "d", "w" ).close
51
+ File.new( "t", "w" ).close
52
+
53
+ g = Mxx_ru::Makestyle_generator.new(
54
+ "t", "d", "echo has been rebuilt > t" )
55
+
56
+ assert_equal( 0, FileTest.size( "t" ) )
57
+ end
58
+
59
+ def test_build_multiple
60
+ Mxx_ru::Util.delete_file( "t3" )
61
+
62
+ File.new( "d", "w" ).close
63
+
64
+ g = Mxx_ru::Makestyle_generator.new(
65
+ [ "t1", "t2", "t3" ], [ "d" ],
66
+ [
67
+ "echo t1 > t1",
68
+ "echo t2 > t2"
69
+ ] )
70
+ g.build( "dummy" )
71
+
72
+ assert( FileTest.size( "t1" ) > 0 )
73
+ assert( FileTest.size( "t2" ) > 0 )
74
+ assert( !FileTest.exists?( "t3" ) )
75
+
76
+ File.truncate( "t1", 0 )
77
+ File.truncate( "t2", 0 )
78
+
79
+ g.build( "dummy" )
80
+
81
+ assert( FileTest.size( "t1" ) > 0 )
82
+ assert( FileTest.size( "t2" ) > 0 )
83
+ assert( !FileTest.exists?( "t3" ) )
84
+
85
+ end
86
+
87
+ def test_clean_simple
88
+ File.new( "d", "w" ).close
89
+
90
+ g = Mxx_ru::Makestyle_generator.new(
91
+ [ "t1", "t2", "t3" ], [ "d" ],
92
+ [
93
+ "echo t1 > t1",
94
+ "echo t2 > t2",
95
+ "echo t3 > t3"
96
+ ] )
97
+ g.build( "dummy" )
98
+
99
+ assert( FileTest.size( "t1" ) > 0 )
100
+ assert( FileTest.size( "t2" ) > 0 )
101
+ assert( FileTest.size( "t3" ) > 0 )
102
+
103
+ g.clean( "dummy" )
104
+
105
+ assert( !FileTest.exists?( "t1" ) )
106
+ assert( !FileTest.exists?( "t2" ) )
107
+ assert( !FileTest.exists?( "t3" ) )
108
+ end
109
+
110
+ def teardown
111
+ [ "a", "b", "c", "d", "e",
112
+ "t", "t1", "t2", "t3" ].each do |f|
113
+ Mxx_ru::Util.delete_file( f )
114
+ end
115
+ end
116
+ end
117
+
@@ -0,0 +1,230 @@
1
+ require 'test/unit'
2
+
3
+ require 'mxx_ru/cpp'
4
+ require 'mxx_ru/cpp/toolsets/vc8'
5
+
6
+ class TC_ActualManifest < Test::Unit::TestCase
7
+ def initialize( test_method_name )
8
+ super test_method_name
9
+
10
+ # Default manifest should not be used.
11
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest nil
12
+ end
13
+
14
+ def make_exe_target( prj_alias )
15
+ Mxx_ru::Cpp::Exe_target.new( prj_alias ) {
16
+ target 'sample'
17
+ }
18
+ end
19
+
20
+ def make_dll_target( prj_alias )
21
+ Mxx_ru::Cpp::Dll_target.new( prj_alias ) {
22
+ target 'sample'
23
+ }
24
+ end
25
+
26
+ def produce_manifest( target, hash )
27
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest( hash )
28
+ Mxx_ru::Cpp::toolset.setup_mandatory_options( target )
29
+
30
+ target.vc8_actual_manifest
31
+ end
32
+
33
+ def test_target_autogen
34
+ target = make_exe_target( 'target_autogen.rb' )
35
+
36
+ m = produce_manifest( target,
37
+ :target => target,
38
+ :autogen => :to_default_file )
39
+
40
+ assert_not_nil( m, 'actual manifest expected' )
41
+ assert_equal( true, m.autogen? )
42
+ assert_equal( false, m.mt? )
43
+ assert_equal( './sample.exe.manifest', m.manifest_file )
44
+ assert_nil( m.digital_resource_id )
45
+ assert_equal( true, m.keep_manifest_file? )
46
+ end
47
+
48
+ def test_target_autogen_embed
49
+ target = make_exe_target( 'target_autogen_embed.rb' )
50
+
51
+ m = produce_manifest( target,
52
+ :target => target,
53
+ :autogen => :to_default_file,
54
+ :mt => {} )
55
+
56
+ assert_not_nil( m, 'actual manifest expected' )
57
+ assert_equal( true, m.autogen? )
58
+ assert_equal( true, m.mt? )
59
+ assert_equal( './sample.exe.manifest', m.manifest_file )
60
+ assert_equal( 1, m.digital_resource_id )
61
+ assert_equal( false, m.keep_manifest_file? )
62
+ end
63
+
64
+ def test_target_autogen_embed_keep_manifest
65
+ target = make_exe_target(
66
+ 'target_autogen_embed_keep_manifest.rb' )
67
+
68
+ m = produce_manifest( target,
69
+ :target => target,
70
+ :autogen => :to_default_file,
71
+ :mt => { :keep_manifest_file => true } )
72
+
73
+ assert_not_nil( m, 'actual manifest expected' )
74
+ assert_equal( true, m.autogen? )
75
+ assert_equal( true, m.mt? )
76
+ assert_equal( './sample.exe.manifest', m.manifest_file )
77
+ assert_equal( 1, m.digital_resource_id )
78
+ assert_equal( true, m.keep_manifest_file? )
79
+ end
80
+
81
+ def test_dlltarget_autogen_embed
82
+ target = make_dll_target( 'dlltarget_autogen_embed.rb' )
83
+
84
+ m = produce_manifest( target,
85
+ :target => target,
86
+ :autogen => :to_default_file,
87
+ :mt => {} )
88
+
89
+ assert_not_nil( m, 'actual manifest expected' )
90
+ assert_equal( true, m.autogen? )
91
+ assert_equal( true, m.mt? )
92
+ assert_equal( './sample.dll.manifest', m.manifest_file )
93
+ assert_equal( 2, m.digital_resource_id )
94
+ assert_equal( false, m.keep_manifest_file? )
95
+ end
96
+
97
+ def test_target_autogen_embed_process_manifest
98
+ target = make_exe_target(
99
+ 'target_autogen_embed_process_manifest.rb' )
100
+
101
+ m = produce_manifest( target,
102
+ :target => target,
103
+ :autogen => :to_default_file,
104
+ :mt => { :resource_id => :process_manifest } )
105
+
106
+ assert_not_nil( m )
107
+ assert_equal( true, m.autogen? )
108
+ assert_equal( true, m.mt? )
109
+ assert_equal( './sample.exe.manifest', m.manifest_file )
110
+ assert_equal( 1, m.digital_resource_id )
111
+ assert_equal( false, m.keep_manifest_file? )
112
+ end
113
+
114
+ def test_dlltarget_autogen_embed_process_manifest
115
+ target = make_dll_target(
116
+ 'dlltarget_autogen_embed_process_manifest.rb' )
117
+
118
+ m = produce_manifest( target,
119
+ :target => target,
120
+ :autogen => :to_default_file,
121
+ :mt => { :resource_id => :isolationaware_manifest } )
122
+
123
+ assert_not_nil( m )
124
+ assert_equal( true, m.autogen? )
125
+ assert_equal( true, m.mt? )
126
+ assert_equal( './sample.dll.manifest', m.manifest_file )
127
+ assert_equal( 2, m.digital_resource_id )
128
+ assert_equal( false, m.keep_manifest_file? )
129
+ end
130
+
131
+ def test_target_autogen_file_embed
132
+ target = make_exe_target(
133
+ 'target_autogen_file_embed.rb' )
134
+
135
+ m = produce_manifest( target,
136
+ :target => target,
137
+ :autogen => 'hello_world.exe.manifest',
138
+ :mt => {} )
139
+
140
+ assert_not_nil( m )
141
+ assert_equal( true, m.autogen? )
142
+ assert_equal( true, m.mt? )
143
+ assert_equal( 'hello_world.exe.manifest', m.manifest_file )
144
+ assert_equal( 1, m.digital_resource_id )
145
+ assert_equal( false, m.keep_manifest_file? )
146
+ end
147
+
148
+ def test_target_embed_file
149
+ target = make_exe_target(
150
+ 'target_embed_file.rb' )
151
+
152
+ m = produce_manifest( target,
153
+ :target => target,
154
+ :mt => { :manifest => 'hello_world.exe.manifest' } )
155
+
156
+ assert_not_nil( m )
157
+ assert_equal( false, m.autogen? )
158
+ assert_equal( true, m.mt? )
159
+ assert_equal( 'hello_world.exe.manifest', m.manifest_file )
160
+ assert_equal( 1, m.digital_resource_id )
161
+ assert_equal( true, m.keep_manifest_file? )
162
+ end
163
+
164
+ def test_dlltarget_embed_file
165
+ target = make_dll_target(
166
+ 'dlltarget_embed_file.rb' )
167
+
168
+ m = produce_manifest( target,
169
+ :target => target,
170
+ :mt => { :manifest => 'hello_world.dll.manifest' } )
171
+
172
+ assert_not_nil( m )
173
+ assert_equal( false, m.autogen? )
174
+ assert_equal( true, m.mt? )
175
+ assert_equal( 'hello_world.dll.manifest', m.manifest_file )
176
+ assert_equal( 2, m.digital_resource_id )
177
+ assert_equal( true, m.keep_manifest_file? )
178
+ end
179
+
180
+ def test_target_embed_file_isolationaware_nostaticimport
181
+ target = make_dll_target(
182
+ 'target_embed_file_isolationawate_nostaticimport.rb' )
183
+
184
+ m = produce_manifest( target,
185
+ :target => target,
186
+ :mt => {
187
+ :manifest => 'hello_world.dll.manifest',
188
+ :resource_id => :isolationaware_nostaticimport_manifest } )
189
+
190
+ assert_not_nil( m )
191
+ assert_equal( false, m.autogen? )
192
+ assert_equal( true, m.mt? )
193
+ assert_equal( 'hello_world.dll.manifest', m.manifest_file )
194
+ assert_equal( 3, m.digital_resource_id )
195
+ assert_equal( true, m.keep_manifest_file? )
196
+ end
197
+
198
+ def test_autogen
199
+ target = make_exe_target(
200
+ 'target_autogen.rb' )
201
+
202
+ m = produce_manifest( target,
203
+ :autogen => :to_default_file )
204
+
205
+ assert_not_nil( m )
206
+ assert_equal( true, m.autogen? )
207
+ assert_equal( false, m.mt? )
208
+ assert_equal( './sample.exe.manifest', m.manifest_file )
209
+ assert_nil( m.digital_resource_id )
210
+ assert_equal( true, m.keep_manifest_file? )
211
+ end
212
+
213
+ def test_autogen_embed
214
+ target = make_exe_target(
215
+ 'target_autogen_embed.rb' )
216
+
217
+ m = produce_manifest( target,
218
+ :autogen => :to_default_file,
219
+ :mt => {} )
220
+
221
+ assert_not_nil( m )
222
+ assert_equal( true, m.autogen? )
223
+ assert_equal( true, m.mt? )
224
+ assert_equal( './sample.exe.manifest', m.manifest_file )
225
+ assert_equal( 1, m.digital_resource_id )
226
+ assert_equal( false, m.keep_manifest_file? )
227
+ end
228
+ end
229
+
230
+
@@ -0,0 +1,104 @@
1
+ require 'test/unit'
2
+
3
+ require 'mxx_ru/util'
4
+ require 'mxx_ru/cpp'
5
+ require 'mxx_ru/cpp/toolsets/vc8'
6
+
7
+ class TC_AppendMtCommands < Test::Unit::TestCase
8
+
9
+ def make_exe_target( prj_alias )
10
+ Mxx_ru::Cpp::Exe_target.new( prj_alias ) {
11
+ target 'sample'
12
+ }
13
+ end
14
+
15
+ def make_dll_target( prj_alias )
16
+ Mxx_ru::Cpp::Dll_target.new( prj_alias ) {
17
+ target 'sample'
18
+ }
19
+ end
20
+
21
+ def produce_manifest( target, hash )
22
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest( hash )
23
+ Mxx_ru::Cpp::toolset.setup_mandatory_options( target )
24
+
25
+ target.vc8_actual_manifest
26
+ end
27
+
28
+ def test_exe_autogen_to_default_file
29
+ target = make_exe_target( 'exe_autogen' )
30
+
31
+ produce_manifest( target,
32
+ :target => target,
33
+ :autogen => :to_default_file,
34
+ :mt => {} )
35
+
36
+ r = Mxx_ru::Cpp::toolset.make_exe_command_lines(
37
+ './sample.exe',
38
+ Mxx_ru::Cpp::Exe_info.new( 'sample.exe', './' ),
39
+ Mxx_ru::Cpp::Linker_lists.new(),
40
+ target )
41
+
42
+ assert( r.size > 2, "r.size (#{r.size}) should be greater than 2" )
43
+ assert_equal( "del \"#{Mxx_ru::Util::native_pathname('./sample.exe.manifest')}\"", r[ -1 ] )
44
+ assert_equal( 'mt /nologo /outputresource:"./sample.exe;#1" ' +
45
+ '/manifest "./sample.exe.manifest"', r[ -2 ] )
46
+ end
47
+
48
+ def test_exe_autogen_to_default_file_keep_manifest
49
+ target = make_exe_target( 'exe_autogen_keep_manifest' )
50
+
51
+ produce_manifest( target,
52
+ :target => target,
53
+ :autogen => :to_default_file,
54
+ :mt => { :keep_manifest_file => true } )
55
+
56
+ r = Mxx_ru::Cpp::toolset.make_exe_command_lines(
57
+ './sample.exe',
58
+ Mxx_ru::Cpp::Exe_info.new( 'sample.exe', './' ),
59
+ Mxx_ru::Cpp::Linker_lists.new(),
60
+ target )
61
+
62
+ assert( r.size > 1, "r.size (#{r.size}) should be greater than 1" )
63
+ assert_equal( 'mt /nologo /outputresource:"./sample.exe;#1" ' +
64
+ '/manifest "./sample.exe.manifest"', r[ -1 ] )
65
+ end
66
+
67
+ def test_exe_noautogen_keep_manifest
68
+ target = make_exe_target( 'exe_noautogen_keep_manifest' )
69
+
70
+ produce_manifest( target,
71
+ :target => target,
72
+ :mt => { :manifest => 'some.manifest',
73
+ :keep_manifest_file => true } )
74
+
75
+ r = Mxx_ru::Cpp::toolset.make_exe_command_lines(
76
+ './sample.exe',
77
+ Mxx_ru::Cpp::Exe_info.new( 'sample.exe', './' ),
78
+ Mxx_ru::Cpp::Linker_lists.new(),
79
+ target )
80
+
81
+ assert( r.size > 1, "r.size (#{r.size}) should be greater than 1" )
82
+ assert_equal( 'mt /nologo /outputresource:"./sample.exe;#1" ' +
83
+ '/manifest "some.manifest"', r[ -1 ] )
84
+ end
85
+
86
+ def test_exe_noautogen_nokeep_manifest
87
+ target = make_exe_target( 'exe_noautogen_keep_nomanifest' )
88
+
89
+ produce_manifest( target,
90
+ :target => target,
91
+ :mt => { :manifest => 'some.manifest' } )
92
+
93
+ r = Mxx_ru::Cpp::toolset.make_exe_command_lines(
94
+ './sample.exe',
95
+ Mxx_ru::Cpp::Exe_info.new( 'sample.exe', './' ),
96
+ Mxx_ru::Cpp::Linker_lists.new(),
97
+ target )
98
+
99
+ assert( r.size > 1, "r.size (#{r.size}) should be greater than 1" )
100
+ assert_equal( 'mt /nologo /outputresource:"./sample.exe;#1" ' +
101
+ '/manifest "some.manifest"', r[ -1 ] )
102
+ end
103
+ end
104
+
@@ -0,0 +1,17 @@
1
+ require 'test/unit'
2
+
3
+ require 'mxx_ru/cpp'
4
+ require 'mxx_ru/cpp/toolsets/vc8'
5
+
6
+ class TC_DefaultManifest < Test::Unit::TestCase
7
+ def test_default
8
+ manifest_desc = Mxx_ru::Cpp::Toolsets::Vc8::default_manifest
9
+
10
+ assert_not_nil( manifest_desc )
11
+ assert_equal( manifest_desc.autogen, true )
12
+ assert_equal( manifest_desc.mt, true )
13
+ assert_equal( manifest_desc.manifest_file, :default )
14
+ assert_equal( manifest_desc.resource_id, :default )
15
+ end
16
+ end
17
+
@@ -0,0 +1,173 @@
1
+ require 'test/unit'
2
+
3
+ require 'mxx_ru/cpp'
4
+ require 'mxx_ru/cpp/toolsets/vc8'
5
+
6
+ class TC_DefineManifest < Test::Unit::TestCase
7
+ def initialize( test_method_name )
8
+ super test_method_name
9
+
10
+ # Default manifest should not be used.
11
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest nil
12
+ end
13
+
14
+ def test_target_autogen
15
+ target = Mxx_ru::Cpp::Exe_target.new( 'target_autogen.rb' )
16
+
17
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest(
18
+ :target => target,
19
+ :autogen => :to_default_file )
20
+
21
+ m = target.vc8_source_manifest
22
+
23
+ assert_not_nil( m )
24
+ assert_equal( true, m.autogen )
25
+ assert_equal( false, m.mt )
26
+ assert_equal( :default, m.manifest_file )
27
+ assert_nil( m.resource_id )
28
+ end
29
+
30
+ def test_target_autogen_embed
31
+ target = Mxx_ru::Cpp::Exe_target.new( 'target_autogen_embed.rb' )
32
+
33
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest(
34
+ :target => target,
35
+ :autogen => :to_default_file,
36
+ :mt => {} )
37
+
38
+ m = target.vc8_source_manifest
39
+
40
+ assert_not_nil( m )
41
+ assert_equal( true, m.autogen )
42
+ assert_equal( true, m.mt )
43
+ assert_equal( :default, m.manifest_file )
44
+ assert_equal( :default, m.resource_id )
45
+ assert_equal( false, m.keep_manifest_file )
46
+ end
47
+
48
+ def test_target_autogen_embed_keep_manifest
49
+ target = Mxx_ru::Cpp::Exe_target.new(
50
+ 'target_autogen_embed_keep_manifest.rb' )
51
+
52
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest(
53
+ :target => target,
54
+ :autogen => :to_default_file,
55
+ :mt => { :keep_manifest_file => true } )
56
+
57
+ m = target.vc8_source_manifest
58
+
59
+ assert_not_nil( m )
60
+ assert_equal( true, m.autogen )
61
+ assert_equal( true, m.mt )
62
+ assert_equal( :default, m.manifest_file )
63
+ assert_equal( :default, m.resource_id )
64
+ assert_equal( true, m.keep_manifest_file )
65
+ end
66
+
67
+ def test_target_autogen_embed_process_manifest
68
+ target = Mxx_ru::Cpp::Exe_target.new(
69
+ 'target_autogen_embed_process_manifest.rb' )
70
+
71
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest(
72
+ :target => target,
73
+ :autogen => :to_default_file,
74
+ :mt => { :resource_id => :process_manifest } )
75
+
76
+ m = target.vc8_source_manifest
77
+
78
+ assert_not_nil( m )
79
+ assert_equal( true, m.autogen )
80
+ assert_equal( true, m.mt )
81
+ assert_equal( :default, m.manifest_file )
82
+ assert_equal( :process_manifest, m.resource_id )
83
+ end
84
+
85
+ def test_target_autogen_file_embed
86
+ target = Mxx_ru::Cpp::Exe_target.new(
87
+ 'target_autogen_file_embed.rb' )
88
+
89
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest(
90
+ :target => target,
91
+ :autogen => 'hello_world.exe.manifest',
92
+ :mt => {} )
93
+
94
+ m = target.vc8_source_manifest
95
+
96
+ assert_not_nil( m )
97
+ assert_equal( true, m.autogen )
98
+ assert_equal( true, m.mt )
99
+ assert_equal( 'hello_world.exe.manifest', m.manifest_file )
100
+ assert_equal( :default, m.resource_id )
101
+ end
102
+
103
+ def test_target_embed_file
104
+ target = Mxx_ru::Cpp::Exe_target.new(
105
+ 'target_embed_file.rb' )
106
+
107
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest(
108
+ :target => target,
109
+ :mt => { :manifest => 'hello_world.exe.manifest' } )
110
+
111
+ m = target.vc8_source_manifest
112
+
113
+ assert_not_nil( m )
114
+ assert_equal( false, m.autogen )
115
+ assert_equal( true, m.mt )
116
+ assert_equal( 'hello_world.exe.manifest', m.manifest_file )
117
+ assert_equal( :default, m.resource_id )
118
+ end
119
+
120
+ def test_target_embed_file_isolationaware_nostaticimport
121
+ target = Mxx_ru::Cpp::Exe_target.new(
122
+ 'target_embed_file_isolationawate_nostaticimport.rb' )
123
+
124
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest(
125
+ :target => target,
126
+ :mt => {
127
+ :manifest => 'hello_world.exe.manifest',
128
+ :resource_id => :isolationaware_nostaticimport_manifest } )
129
+
130
+ m = target.vc8_source_manifest
131
+
132
+ assert_not_nil( m )
133
+ assert_equal( false, m.autogen )
134
+ assert_equal( true, m.mt )
135
+ assert_equal( 'hello_world.exe.manifest', m.manifest_file )
136
+ assert_equal( :isolationaware_nostaticimport_manifest, m.resource_id )
137
+ end
138
+
139
+ def test_autogen
140
+ target = Mxx_ru::Cpp::Exe_target.new(
141
+ 'target_autogen.rb' )
142
+
143
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest(
144
+ :autogen => :to_default_file )
145
+
146
+ m = Mxx_ru::Cpp::Toolsets::Vc8::default_manifest
147
+
148
+ assert_not_nil( m )
149
+ assert_equal( true, m.autogen )
150
+ assert_equal( false, m.mt )
151
+ assert_equal( :default, m.manifest_file )
152
+ assert_nil( m.resource_id )
153
+ end
154
+
155
+ def test_autogen_embed
156
+ target = Mxx_ru::Cpp::Exe_target.new(
157
+ 'target_autogen_embed.rb' )
158
+
159
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest(
160
+ :autogen => :to_default_file,
161
+ :mt => {} )
162
+
163
+ m = Mxx_ru::Cpp::Toolsets::Vc8::default_manifest
164
+
165
+ assert_not_nil( m )
166
+ assert_equal( true, m.autogen )
167
+ assert_equal( true, m.mt )
168
+ assert_equal( :default, m.manifest_file )
169
+ assert_equal( :default, m.resource_id )
170
+ end
171
+
172
+ end
173
+