MoDISReleaseCustom.pl
3.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#!/usr/bin/perl
use ANSI;
use createMoDIS;
$|=1;
$ENV{PERLIO}="crlf";
$relMode = "Debug";
while ($#ARGV != -1) {
if (lc($ARGV[0]) eq "-release") {
$relMode = "Release";
} elsif (lc($ARGV[0]) eq "-debug") {
$relMode = "Debug";
}
shift(@ARGV);
}
if((!-d "MoDIS")||(!-d "MoDIS\\${relMode}")||(!-e "MoDIS\\${relMode}\\MoDIS.exe")) {
warn "MoDIS\\${relMode}\\MoDIS.exe does NOT exist\nWe do NOT recommend you to use this utility\n";
sleep 10;
}
###############################################################
# global variable
###############################################################
my @libs;
my %selected_libs;
my %default_libs;
###############################################################
# default libs
###############################################################
$default_libs{'MoDIS'} = 1;
###############################################################
# search the all library
###############################################################
opendir D,"." or die "Can't opendir this directory\n";
my @dirs = sort readdir(D);
closedir D;
foreach my $i (@dirs) {
next if($i eq '.');
next if($i eq '..');
next if(exists $default_libs{$i});
next if((!-d $i)||(!-d "${i}\\${relMode}")||(!-e "${i}\\${relMode}\\${i}.lib"));
push @libs,$i;
}
###############################################################
# User choose the libs
###############################################################
while(1)
{
print "Select the librarys\n";
for(my $i=0;$i<=$#libs;$i++)
{
my $lib = $libs[$i];
print "\n" if (($i %4) == 0);
print "\e[1;33m" if($selected_libs{$lib});
printf "[%2d] %-14s",$i+1,$lib;
print "\e[0m";
}
print "\e[1;31m";
print "\n\n[GO] Start to slim modis [L] Load the last setting";
print "\nChoose the library which you need to debug :";
print "\e[0m";
my $item = <>;
$item =~ s/^\s+//gs;
$item =~ s/\s+$//gs;
$item = lc($item);
last if($item eq 'go');
if($item eq 'l')
{
open F,"<_MoDISReleaseCustom.ini" or die "Can't open _MoDISReleaseCustom.ini";
my @tmp = <F>;
close F;
undef %selected_libs;
foreach my $t (@tmp)
{
$t =~ s/\s+$//gs;
$selected_libs{$t} = 1;
}
}
if(0< $item && $item <= $#libs+1)
{
if(exists $selected_libs{$libs[$item-1]})
{
delete $selected_libs{$libs[$item-1]};
}
else
{
$selected_libs{$libs[$item-1]}=1;
}
}
}
###############################################################
# Save the choose to _MoDISReleaseCustom.ini
###############################################################
open F,">_MoDISReleaseCustom.ini" or die "Can't open _MoDISReleaseCustom.ini";
syswrite F,join("\n",sort (keys %selected_libs));
close F;
###############################################################
# Generate Main solution
###############################################################
{
my %WIN32_COMPILE_OPTION;
my $list;
for(my $i=0;$i<=$#libs;$i++)
{
my $lib = $libs[$i];
if(!exists $selected_libs{$lib})
{
if (-e "${lib}\\${relMode}\\${lib}.lib") {
$list .= "../$lib/${relMode}/$lib.lib\n";
} else {
warn "${lib}\\${relMode}\\${lib}.lib does NOT exist\n";
}
}
}
## create MoDIS_Custom.vcproj file
createMoDIS::update_lib_project(
"MoDIS/MoDIS.vcproj",
"MoDIS/MoDIS_Custom.vcproj",
"MoDIS_LIB",
$list,
"FALSE");
my %lib_GUID;
my $GUID_modis_cusRel = createMoDIS::generate("MoDIS", "Custom", "Release");
my @tmp = (sort keys %selected_libs);
foreach my $lib (@tmp) {
$lib_GUID{$lib} = createMoDIS::generate($lib, $lib, $lib);
}
createMoDIS::create_solution(
$GUID_modis_cusRel,
"MoDIS_Custom.sln",
\@tmp,
\%lib_GUID
);
}