Mercurial > hg > GearsTemplate
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 |
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 | 4 use FindBin; |
5 use lib "$FindBin::Bin/lib"; | |
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 | 8 use Getopt::Std; |
9 my %opt; | |
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 | 31 my $output = $opt{w} ? "$FindBin::Bin/context.h" : "stdout"; |
32 my $gears = Gears::Context->new(compile_sources => \@cbc_files, find_root => $FindBin::Bin, output => $output); | |
33 my $data_gears = $gears->extraction_dg_compile_sources(); | |
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 | 36 my $dg2path = $gears->update_dg_each_header_path($data_gears,$g); |
37 | |
38 my $tree = $gears->createImplTree_from_header($dg2path); | |
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 #) |