Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
stupid me. each process should pick its own port number for its master socket
[simgrid.git] / examples / gras / alltoall / alltoall.Makefile.local
1 ############ PROJECT COMPILING AND ARCHIVING #########
2 PROJECT_NAME=alltoall
3 DISTDIR=gras-$(PROJECT_NAME)
4
5 GRAS_ROOT?= $(shell echo "\"<<<< GRAS_ROOT undefined !!! >>>>\"")
6 CFLAGS = -O3 -w -g
7 INCLUDES = -I$(GRAS_ROOT)/include
8 LIBS_SIM = -lm  -L$(GRAS_ROOT)/lib/ -lsimgrid
9 LIBS_RL = -lm  -L$(GRAS_ROOT)/lib/ -lgras
10 LIBS = 
11
12 C_FILES = _alltoall_simulator.c _alltoall_node.c alltoall.c
13 OBJ_FILES = 
14 BIN_FILES = alltoall_simulator alltoall_node 
15
16 all: $(BIN_FILES)
17
18 alltoall_simulator: _alltoall_simulator.o alltoall.o
19         $(CC) $(INCLUDES) $(DEFS) $(CFLAGS) $^ $(LIBS_SIM) $(LIBS) $(LDADD) -o $@ 
20 alltoall_node : _alltoall_node.o alltoall.o
21         $(CC) $(INCLUDES) $(DEFS) $(CFLAGS) $^ $(LIBS_RL) $(LIBS) $(LDADD) -o $@ 
22
23 %: %.o
24         $(CC) $(INCLUDES) $(DEFS) $(CFLAGS) $^ $(LIBS) $(LDADD) -o $@ 
25
26 %.o: %.c
27         $(CC) $(INCLUDES) $(DEFS) $(CFLAGS) -c -o $@ $<
28
29 DIST_FILES= $(C_FILES) alltoall.Makefile.local alltoall.Makefile.remote
30 distdir: $(DIST_FILES)
31         rm -rf $(DISTDIR)
32         mkdir -p $(DISTDIR)
33         cp $^ $(DISTDIR)
34
35 dist: clean distdir
36         tar c $(DISTDIR) | gzip -c > $(DISTDIR).tar.gz
37
38 clean:
39         rm -f $(BIN_FILES) $(OBJ_FILES) *~ alltoall.o _alltoall_simulator.o _alltoall_node.o
40         rm -rf $(DISTDIR)
41
42 .SUFFIXES:
43 .PHONY : clean
44
45 ############ REMOTE COMPILING #########
46 MACHINES ?= Bourassa Fafard Ginette Jupiter Tremblay 
47 INSTALL_PATH ?='$$HOME/tmp/src' ### Has to be an absolute path !!! 
48 GRAS_ROOT ?='$(INSTALL_PATH)' ### Has to be an absolute path !!! 
49 SRCDIR ?= ./
50 SIMGRID_URL ?=http://gcl.ucsd.edu/simgrid/dl/
51 SIMGRID_VERSION ?=2.92
52 GRAS_PROJECT ?= alltoall
53 GRAS_PROJECT_URL ?= http://www-id.imag.fr/Laboratoire/Membres/Legrand_Arnaud/gras_test/
54
55 remote:
56         @echo;echo "----[ Compile the package on remote hosts ]----"
57         @test -e $(SRCDIR)/buildlogs/ || mkdir -p $(SRCDIR)/buildlogs/
58          for site in $(MACHINES) ; do \
59            machine=`echo $$site |sed 's/^\([^%]*\)%.*$$/\1/'`;\
60            machine2=`echo $$site |sed 's/^\([^%]*\)%\(.*\)$$/\2/'`;\
61            cmd_mkdir="\"sh -c 'env INSTALL_PATH=$(INSTALL_PATH) GRAS_ROOT=$(GRAS_ROOT) \
62                                 SIMGRID_URL=$(SIMGRID_URL) SIMGRID_VERSION=$(SIMGRID_VERSION) GRAS_PROJECT=$(GRAS_PROJECT) \
63                                 GRAS_PROJECT_URL=$(GRAS_PROJECT_URL)  mkdir -p $(INSTALL_PATH) 2>&1'\"";\
64            cmd_make="\"sh -c 'env INSTALL_PATH=$(INSTALL_PATH) GRAS_ROOT=$(GRAS_ROOT) \
65                                 SIMGRID_URL=$(SIMGRID_URL) SIMGRID_VERSION=$(SIMGRID_VERSION) GRAS_PROJECT=$(GRAS_PROJECT) \
66                                 GRAS_PROJECT_URL=$(GRAS_PROJECT_URL)  make -C $(INSTALL_PATH) -f alltoall.Makefile.remote $(ACTION) 2>&1'\"";\
67            if echo $$site | grep  '%' >/dev/null ; then \
68              echo "----[ Compile on $$machine2 (behind $$machine) ]----";\
69            else \
70              machine=$$site;\
71              echo "----[ Compile on $$machine ]----";\
72            fi;\
73            if echo $$site | grep  '%' >/dev/null ; then \
74              if ssh $$machine "ssh -A $$machine2 $$cmd_mkdir" 2>&1 > $(SRCDIR)/buildlogs/$$site.log;\
75              then true; else failed=1;echo "Failed (check $(SRCDIR)/buildlogs/$$site.log)"; fi;\
76            else \
77              if ssh $$machine "eval $$cmd_mkdir" 2>&1 > $(SRCDIR)/buildlogs/$$site.log ;\
78              then true; else failed=1;echo "Failed (check $(SRCDIR)/buildlogs/$$site.log)"; fi; \
79            fi;\
80            echo "-- Copy the data over"; \
81            scp alltoall.Makefile.remote $$site:$(INSTALL_PATH) ;\
82            echo "-- Compiling... (the output gets into $(SRCDIR)/buildlogs/$$site.log)"; \
83            if echo $$site | grep  '%' >/dev/null ; then \
84              if ssh $$machine "ssh -A $$machine2 $$cmd_make" 2>&1 >> $(SRCDIR)/buildlogs/$$site.log;\
85              then echo "Sucessful"; else failed=1;echo "Failed (check $(SRCDIR)/buildlogs/$$site.log)"; fi;echo; \
86            else \
87              if ssh $$machine "eval $$cmd_make" 2>&1 >> $(SRCDIR)/buildlogs/$$site.log ;\
88              then echo "Sucessful"; else failed=1;echo "Failed (check $(SRCDIR)/buildlogs/$$site.log)"; fi;echo; \
89            fi;\
90          done;