annotate src/parallel_execution/auto_generate_context.pl @ 577:f78ad1f89524

add static genmode
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Mon, 25 Nov 2019 19:37:17 +0900
parents 3e3158198cb5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
564
9cca20bcb558 add auto_generate_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #!/usr/bin/env perl
9cca20bcb558 add auto_generate_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 use strict;
9cca20bcb558 add auto_generate_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 use warnings;
575
3e3158198cb5 bug fix...
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 574
diff changeset
4 use FindBin;
3e3158198cb5 bug fix...
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 574
diff changeset
5 use lib "$FindBin::Bin/lib";
3e3158198cb5 bug fix...
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 574
diff changeset
6
572
3c35bcb82f08 mv Gears.pm to Gears/Context.pm
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 568
diff changeset
7 use Gears::Context;
575
3e3158198cb5 bug fix...
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 574
diff changeset
8 use Getopt::Std;
3e3158198cb5 bug fix...
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 574
diff changeset
9 my %opt;
3e3158198cb5 bug fix...
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 574
diff changeset
10 getopts("w" => \%opt);
577
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
11
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
12 my $h = find_target_from_camke_list();
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
13
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
14 my $target = shift;
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
15 unless (exists $h->{$target}) {
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
16 map { print "$_\n" } keys %$h;
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
17 print "invalid target name\n";
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
18 exit 0;
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
19 }
574
7d66643d837d impl auto_gen_context toolset
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 573
diff changeset
20
577
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
21 my @cbc_files;
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
22
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
23 for my $file_name (split / /, $h->{$target}) {
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
24 if ($file_name =~ /^\s*$/) {
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
25 next;
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
26 }
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
27 chomp $file_name;
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
28 push(@cbc_files,$file_name);
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
29 }
566
dada17cba91d interface to struct...
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 564
diff changeset
30
575
3e3158198cb5 bug fix...
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 574
diff changeset
31 my $output = $opt{w} ? "$FindBin::Bin/context.h" : "stdout";
3e3158198cb5 bug fix...
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 574
diff changeset
32 my $gears = Gears::Context->new(compile_sources => \@cbc_files, find_root => $FindBin::Bin, output => $output);
3e3158198cb5 bug fix...
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 574
diff changeset
33 my $data_gears = $gears->extraction_dg_compile_sources();
3e3158198cb5 bug fix...
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 574
diff changeset
34 my $g = $gears->set_data_gear_header_path();
564
9cca20bcb558 add auto_generate_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35
575
3e3158198cb5 bug fix...
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 574
diff changeset
36 my $dg2path = $gears->update_dg_each_header_path($data_gears,$g);
3e3158198cb5 bug fix...
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 574
diff changeset
37
3e3158198cb5 bug fix...
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 574
diff changeset
38 my $tree = $gears->createImplTree_from_header($dg2path);
3e3158198cb5 bug fix...
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 574
diff changeset
39 $gears->tree2create_context_h($tree);
574
7d66643d837d impl auto_gen_context toolset
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 573
diff changeset
40
577
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
41
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
42 sub find_target_from_camke_list {
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
43 open my $fh, '<', "CMakeLists.txt";
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
44 my $in_gears = 0;
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
45 my $target;
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
46 my %res;
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
47
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
48 while (my $line = <$fh>) {
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
49 if ($in_gears == 1) {
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
50 $in_gears++;
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
51 next;
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
52 }
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
53
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
54 if ($in_gears == 2) {
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
55 $line =~ s/\s*(\w+)\s*/$1/g;
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
56 $target = $line;
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
57 chomp $target;
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
58 $in_gears++;
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
59 next;
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
60 }
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
61
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
62 if ($in_gears == 3) {
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
63 $in_gears++;
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
64 next;
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
65 }
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
66
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
67 if ($in_gears == 4) {
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
68 $res{$target} = $line;
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
69 chomp $res{$target};
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
70 $in_gears = 0;
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
71 next;
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
72 }
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
73
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
74 if ($line =~ /^GearsCommand\(/) {
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
75 $in_gears++;
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
76 }
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
77
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
78 }
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
79 return \%res;
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
80 }
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
81
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
82 #GearsCommand(
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
83 # TARGET
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
84 # rbtree
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
85 # SOURCES
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
86 # SingleLinkedQueue.cbc test/rbTree_test.cbc RedBlackTree.cbc SingleLinkedStack.cbc compare.c
f78ad1f89524 add static genmode
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 575
diff changeset
87 #)