Makefile: automate adding headers for new load balancers
[charm.git] / src / ck-ldb / Makefile_lb.sh
1 #!/bin/sh
2 LOADBALANCERS="DummyLB ComboCentLB RandCentLB RefineLB RefineKLB  RefineCommLB GreedyLB GreedyCommLB GreedyAgentLB GridCommLB GridCommRefineLB GridMetisLB GridHybridLB GridHybridSeedLB Comm1LB OrbLB RecBisectBfLB MetisLB PhasebyArrayLB RotateLB NeighborLB NeighborCommLB WSLB TopoLB RefineTopoLB TopoCentLB HybridLB HbmLB BlockLB"
3
4 out="Make.lb"
5
6 echo "# Automatically generated by script Makefile_lb.sh" > $out
7 echo "#  by" `id` >>$out
8 echo "#  at" `hostname` >>$out
9 echo "#  on" `date` >> $out
10 echo "LOADBALANCERS=\\" >> $out
11 for bal in $LOADBALANCERS 
12 do 
13         echo "   \$(L)/libmodule$bal.a \\" >> $out 
14 done
15 echo "   manager.o" >> $out
16 echo >> $out
17
18 for bal in $LOADBALANCERS 
19 do 
20         dep=""
21         [ -r libmodule$bal.dep ] && dep="cp -f libmodule$bal.dep "'$'"(L)/"
22         manager=""
23         [ $bal = 'GreedyCommLB' ] && manager="manager.o"
24         [ $bal = 'GridCommLB' ] && manager="manager.o"
25         [ $bal = 'GridCommRefineLB' ] && manager="manager.o"
26         [ $bal = 'GridHybridLB' ] && manager="manager.o"
27         [ $bal = 'GridHybridSeedLB' ] && manager="manager.o"
28         cat >> $out << EOB 
29
30 \$(L)/libmodule$bal.a: $bal.o $manager
31         \$(CHARMC) -o \$(L)/libmodule$bal.a $bal.o $manager
32         $dep
33 LBHEADERS += $bal.h $bal.decl.h
34
35 EOB
36 done
37
38 echo "" >  EveryLB.ci
39 echo "module EveryLB {" >> EveryLB.ci
40 for bal in $LOADBALANCERS
41 do
42         echo "   extern module $bal;" >> EveryLB.ci
43 done
44 echo "   initnode void initEveryLB(void);" >>EveryLB.ci
45 echo "};" >> EveryLB.ci
46
47 echo "# used for make dependes" >>$out
48 echo "LB_OBJ=EveryLB.o \\" >>$out
49 for bal in $LOADBALANCERS
50 do
51         echo "    $bal.o \\" >>$out
52 done
53 echo "    manager.o" >> $out
54 cat >> $out <<EOB
55
56 \$(L)/libmoduleEveryLB.a: \$(LB_OBJ)
57         \$(CHARMC) -o \$(L)/libmoduleEveryLB.a \$(LB_OBJ)
58         cp libmoduleEveryLB.dep \$(L)/
59 EOB