Mxx_ru 1.1.0

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