Mxx_ru 1.4.3 → 1.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/mxx_ru/abstract_target.rb +28 -1
- data/lib/mxx_ru/cpp/target.rb +8 -3
- data/lib/mxx_ru/cpp/toolset.rb +36 -25
- data/lib/mxx_ru/version.rb +1 -1
- data/tests/cpp/lib_from_lib_dependecies/a.cpp +3 -0
- data/tests/cpp/lib_from_lib_dependecies/a.rb +8 -0
- data/tests/cpp/lib_from_lib_dependecies/b.cpp +6 -0
- data/tests/cpp/lib_from_lib_dependecies/b.rb +10 -0
- data/tests/cpp/lib_from_lib_dependecies/checker.cpp +10 -0
- data/tests/cpp/lib_from_lib_dependecies/checker.rb +12 -0
- data/tests/cpp/lib_from_lib_dependecies/etalon/first.txt +2 -0
- data/tests/cpp/lib_from_lib_dependecies/etalon/second.txt +2 -0
- data/tests/cpp/lib_from_lib_dependecies/first.ut.rb +11 -0
- data/tests/cpp/lib_from_lib_dependecies/o/main.obj +0 -0
- data/tests/cpp/lib_from_lib_dependecies/second.ut.rb +11 -0
- data/tests/cpp/lib_from_lib_dependecies/tc_checker.rb +47 -0
- data/tests/cpp/rucodegen/host_config.rb +3 -1
- data/tests/cpp/rucodegen/impl/conn_params.rb +3 -1
- metadata +19 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#--
|
|
2
2
|
# Copyright (c) 1996-2004, Yauheni Akhotnikau
|
|
3
3
|
# Copyright (c) 2004-2006, JSC Intervale
|
|
4
|
-
# Copyright (c) 2006, The Mxx_ru Project
|
|
4
|
+
# Copyright (c) 2006-2008, The Mxx_ru Project
|
|
5
5
|
# All rights reserved.
|
|
6
6
|
#
|
|
7
7
|
# Redistribution and use in source and binary forms, with or without modification,
|
|
@@ -83,6 +83,33 @@ module MxxRu
|
|
|
83
83
|
return TargetState.new( state )
|
|
84
84
|
end
|
|
85
85
|
|
|
86
|
+
# Checks collection of statuses.
|
|
87
|
+
#
|
|
88
|
+
# Returns true if at least one of statuses have value REBUILT or ABSENT.
|
|
89
|
+
#
|
|
90
|
+
# Typical usage is:
|
|
91
|
+
# subprojects_status = build_subprojects
|
|
92
|
+
# self_files_status = build_self_files
|
|
93
|
+
#
|
|
94
|
+
# if TargetState.rebuilding_needed?(
|
|
95
|
+
# subprojects_status, self_files_status )
|
|
96
|
+
# do_rebuild
|
|
97
|
+
# end
|
|
98
|
+
#
|
|
99
|
+
# Since v.1.4.4
|
|
100
|
+
#
|
|
101
|
+
def TargetState.rebuilding_needed?( *statuses )
|
|
102
|
+
nil != statuses.find { |s| EXISTS != s.state }
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# Creates and returns objects of state ABSENT
|
|
106
|
+
#
|
|
107
|
+
# Since v.1.4.4
|
|
108
|
+
#
|
|
109
|
+
def TargetState.make_absent
|
|
110
|
+
TargetState.new( ABSENT )
|
|
111
|
+
end
|
|
112
|
+
|
|
86
113
|
end # Class TargetState
|
|
87
114
|
|
|
88
115
|
# For compatibility with previous versions.
|
data/lib/mxx_ru/cpp/target.rb
CHANGED
|
@@ -1103,17 +1103,22 @@ module MxxRu
|
|
|
1103
1103
|
objs_state,
|
|
1104
1104
|
res_state )
|
|
1105
1105
|
|
|
1106
|
+
rebuilding_needed = TargetState.rebuilding_needed?(
|
|
1107
|
+
required_prjs_state,
|
|
1108
|
+
objs_state,
|
|
1109
|
+
res_state )
|
|
1110
|
+
|
|
1106
1111
|
state = nil
|
|
1107
1112
|
toolset = MxxRu::Cpp::toolset
|
|
1108
1113
|
if nil == target_type
|
|
1109
1114
|
raise MxxRu::UnsupportedTargetTypeEx.new(
|
|
1110
1115
|
self.class.name, "nil" )
|
|
1111
1116
|
elsif target_type.name == LibTargetType::TYPE
|
|
1112
|
-
state = toolset.make_lib( self )
|
|
1117
|
+
state = toolset.make_lib( self, rebuilding_needed )
|
|
1113
1118
|
elsif target_type.name == DllTargetType::TYPE
|
|
1114
|
-
state = toolset.make_dll( self )
|
|
1119
|
+
state = toolset.make_dll( self, rebuilding_needed )
|
|
1115
1120
|
elsif target_type.name == ExeTargetType::TYPE
|
|
1116
|
-
state = toolset.make_exe( self )
|
|
1121
|
+
state = toolset.make_exe( self, rebuilding_needed )
|
|
1117
1122
|
else
|
|
1118
1123
|
raise MxxRu::UnsupportedTargetTypeEx.new(
|
|
1119
1124
|
self.class.name, target_type.name )
|
data/lib/mxx_ru/cpp/toolset.rb
CHANGED
|
@@ -428,9 +428,8 @@ module MxxRu
|
|
|
428
428
|
cpp_objs.each { |o| target.obj_file( o.name ) }
|
|
429
429
|
|
|
430
430
|
# Also informing if some object files were rebuilt.
|
|
431
|
-
state =
|
|
432
|
-
|
|
433
|
-
cpp_objs_to_build.size() )
|
|
431
|
+
state = (c_objs_to_build.empty? && cpp_objs_to_build.empty?) ?
|
|
432
|
+
TargetState::EXISTS : TargetState::REBUILT
|
|
434
433
|
|
|
435
434
|
return TargetState.new( state )
|
|
436
435
|
end
|
|
@@ -505,7 +504,11 @@ module MxxRu
|
|
|
505
504
|
# Perform static library build.
|
|
506
505
|
# Target parameter should be an object of a class, inherited from
|
|
507
506
|
# MxxRu::Cpp::Target.
|
|
508
|
-
|
|
507
|
+
#
|
|
508
|
+
# If force_rebuilding is true then library will be rebuilt whitout
|
|
509
|
+
# checking its dependecies.
|
|
510
|
+
#
|
|
511
|
+
def make_lib( target, force_rebuilding = false )
|
|
509
512
|
# Creating result file name. Also determining in which folder
|
|
510
513
|
# lib should be. The name of that folder should be included in
|
|
511
514
|
# libraries search paths of given target.
|
|
@@ -514,8 +517,8 @@ module MxxRu
|
|
|
514
517
|
# Determining target status.
|
|
515
518
|
lib_file = lib_info.full_name
|
|
516
519
|
|
|
517
|
-
lib_state = MxxRu::TargetState
|
|
518
|
-
|
|
520
|
+
lib_state = force_rebuilding ? MxxRu::TargetState.make_absent :
|
|
521
|
+
MxxRu::TargetState::detect( lib_file, target.mxx_obj_files )
|
|
519
522
|
if MxxRu::TargetState::EXISTS != lib_state.state
|
|
520
523
|
# File should be rebuilt.
|
|
521
524
|
cmd_lines = make_lib_command_lines(
|
|
@@ -582,24 +585,26 @@ module MxxRu
|
|
|
582
585
|
# Perform dynamic library build.
|
|
583
586
|
# Target parameter should be an object of a class, inherited from
|
|
584
587
|
# MxxRu::Cpp::Target.
|
|
585
|
-
|
|
588
|
+
#
|
|
589
|
+
# If force_rebuilding is true then DLL will be rebuilt whitout
|
|
590
|
+
# checking its dependecies.
|
|
591
|
+
#
|
|
592
|
+
def make_dll( target, force_rebuilding = false )
|
|
586
593
|
# Creating result file name.
|
|
587
594
|
dll_info = make_dll_name( target.mxx_target_name, target )
|
|
588
|
-
|
|
589
|
-
# Creating dependencies list.
|
|
590
|
-
all_depend_files = create_executable_depend_list( target )
|
|
591
|
-
|
|
592
|
-
# This values will be required later during a calculation of
|
|
593
|
-
# dependencies of that DLL.
|
|
594
|
-
link_lists = prepare_linker_lists( target )
|
|
595
|
-
|
|
596
595
|
dll_file = dll_info.full_name
|
|
597
596
|
|
|
598
|
-
dll_state =
|
|
599
|
-
|
|
597
|
+
dll_state = if force_rebuilding
|
|
598
|
+
MxxRu::TargetState.make_absent
|
|
599
|
+
else
|
|
600
|
+
MxxRu::TargetState::detect(
|
|
601
|
+
dll_file,
|
|
602
|
+
create_executable_depend_list( target ) )
|
|
603
|
+
end
|
|
604
|
+
|
|
600
605
|
if MxxRu::TargetState::EXISTS != dll_state.state
|
|
601
606
|
# Target should be rebuilt.
|
|
602
|
-
|
|
607
|
+
link_lists = prepare_linker_lists( target )
|
|
603
608
|
cmd_lines = make_dll_command_lines(
|
|
604
609
|
dll_file, dll_info, link_lists, target )
|
|
605
610
|
|
|
@@ -655,17 +660,23 @@ module MxxRu
|
|
|
655
660
|
# Perform executable file build.
|
|
656
661
|
# Target parameter should be an object of a class, inherited from
|
|
657
662
|
# MxxRu::Cpp::Target.
|
|
658
|
-
|
|
663
|
+
#
|
|
664
|
+
# If force_rebuilding is true then EXE will be rebuilt whitout
|
|
665
|
+
# checking its dependecies.
|
|
666
|
+
#
|
|
667
|
+
def make_exe( target, force_rebuilding = false )
|
|
659
668
|
# Creating result file name.
|
|
660
669
|
exe_info = make_exe_name( target.mxx_target_name, target )
|
|
661
|
-
|
|
662
|
-
# Creating dependencies list.
|
|
663
|
-
all_depend_files = create_executable_depend_list( target )
|
|
664
|
-
|
|
665
670
|
exe_file = exe_info.full_name
|
|
666
671
|
|
|
667
|
-
exe_state =
|
|
668
|
-
|
|
672
|
+
exe_state = if force_rebuilding
|
|
673
|
+
MxxRu::TargetState.make_absent
|
|
674
|
+
else
|
|
675
|
+
MxxRu::TargetState::detect(
|
|
676
|
+
exe_file,
|
|
677
|
+
create_executable_depend_list( target ) )
|
|
678
|
+
end
|
|
679
|
+
|
|
669
680
|
if MxxRu::TargetState::EXISTS != exe_state.state
|
|
670
681
|
# Target should be rebuilt.
|
|
671
682
|
|
data/lib/mxx_ru/version.rb
CHANGED
|
Binary file
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
|
|
3
|
+
require File.dirname( __FILE__ ) + '/../../test_with_compilation'
|
|
4
|
+
|
|
5
|
+
class TC_NormalBuild < Test::Unit::TestCase
|
|
6
|
+
include TestWithCompilation
|
|
7
|
+
|
|
8
|
+
test_path 'tests/cpp/lib_from_lib_dependecies'
|
|
9
|
+
|
|
10
|
+
FIRST = 'first.ut.rb'
|
|
11
|
+
SECOND = 'second.ut.rb'
|
|
12
|
+
|
|
13
|
+
test_case :first_and_second_builds do
|
|
14
|
+
write_first_content
|
|
15
|
+
clean FIRST
|
|
16
|
+
clean SECOND
|
|
17
|
+
build FIRST
|
|
18
|
+
|
|
19
|
+
puts "sleeping for several seconds..."
|
|
20
|
+
sleep( 2 )
|
|
21
|
+
write_second_content
|
|
22
|
+
build SECOND
|
|
23
|
+
|
|
24
|
+
clean FIRST, SECOND
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def write_first_content
|
|
28
|
+
File.open( 'a.cpp', 'w' ) do |file|
|
|
29
|
+
file << <<EOS
|
|
30
|
+
#include <cstdio>
|
|
31
|
+
|
|
32
|
+
void A() { std::printf( "A\\n" ); }
|
|
33
|
+
EOS
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def write_second_content
|
|
38
|
+
File.open( 'a.cpp', 'w' ) do |file|
|
|
39
|
+
file << <<EOS
|
|
40
|
+
#include <cstdio>
|
|
41
|
+
|
|
42
|
+
void A() { std::printf( "A2\\n" ); }
|
|
43
|
+
EOS
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
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.4.
|
|
4
|
+
version: 1.4.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- The Mxx_ru Project
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2008-
|
|
12
|
+
date: 2008-04-03 00:00:00 +04:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies: []
|
|
15
15
|
|
|
@@ -72,7 +72,24 @@ files:
|
|
|
72
72
|
- tests/cpp/custom_target_prefix
|
|
73
73
|
- tests/cpp/custom_target_prefix/dll.cpp
|
|
74
74
|
- tests/cpp/custom_target_prefix/dll.rb
|
|
75
|
+
- tests/cpp/custom_target_prefix/o
|
|
75
76
|
- tests/cpp/custom_target_prefix/tc_custom_target_prefix.rb
|
|
77
|
+
- tests/cpp/lib_from_lib_dependecies
|
|
78
|
+
- tests/cpp/lib_from_lib_dependecies/a.cpp
|
|
79
|
+
- tests/cpp/lib_from_lib_dependecies/a.rb
|
|
80
|
+
- tests/cpp/lib_from_lib_dependecies/b.cpp
|
|
81
|
+
- tests/cpp/lib_from_lib_dependecies/b.rb
|
|
82
|
+
- tests/cpp/lib_from_lib_dependecies/checker.cpp
|
|
83
|
+
- tests/cpp/lib_from_lib_dependecies/checker.rb
|
|
84
|
+
- tests/cpp/lib_from_lib_dependecies/etalon
|
|
85
|
+
- tests/cpp/lib_from_lib_dependecies/etalon/first.txt
|
|
86
|
+
- tests/cpp/lib_from_lib_dependecies/etalon/second.txt
|
|
87
|
+
- tests/cpp/lib_from_lib_dependecies/first.ut.rb
|
|
88
|
+
- tests/cpp/lib_from_lib_dependecies/o
|
|
89
|
+
- tests/cpp/lib_from_lib_dependecies/o/main.obj
|
|
90
|
+
- tests/cpp/lib_from_lib_dependecies/out
|
|
91
|
+
- tests/cpp/lib_from_lib_dependecies/second.ut.rb
|
|
92
|
+
- tests/cpp/lib_from_lib_dependecies/tc_checker.rb
|
|
76
93
|
- tests/cpp/mswin_res_dll
|
|
77
94
|
- tests/cpp/mswin_res_dll/build.rb
|
|
78
95
|
- tests/cpp/mswin_res_dll/dll.cpp
|