Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use kasher comments
[simgrid.git] / tools / gras / stub_generator.c
index 65db90f..b97d0a0 100644 (file)
@@ -67,21 +67,22 @@ const char *SIM_PREEMBULE =
 "  return retcode;\n" \
 "}\n"
 
-const char* SIM_MAIN_PREEMBULE =
-"int main (int argc,char *argv[]) {\n"
-"  int i,j;\n"
-"\n"
-"  /*  Simulation setup */\n"
-"  MSG_global_init_args(&argc,argv);\n"
-"  if (argc != 3) {\n"
-"    fprintf(stderr, \"Usage: %s platform_file application_description.txt [--gras-log=...]\\n\",argv[0]);\n"
-"    exit(1);\n"
-"  }\n"
-"\n"
-"  MSG_set_channel_number(10); // GRAS_MAX_CHANNEL hardcoded since Alvin killed its definition\n"
-"  MSG_create_environment(argv[1]);\n"
-"\n"
-"  /*  Application deployment */\n";
+#define SIM_MAIN_PREEMBULE \
+"int main (int argc,char *argv[]) {\n" \
+"  int i,j;\n" \
+"\n" \
+"  /*  Simulation setup */\n" \
+"  MSG_global_init_args(&argc,argv);\n" \
+"  if (argc != 3) {\n" \
+"    fprintf(stderr, \"Usage: %%s platform_file application_description.txt [--gras-log=...]\\n\",argv[0]);\n" \
+"    exit(1);\n" \
+"  }\n" \
+"\n" \
+"  MSG_paje_output(\"%s.trace\");\n" \
+"  MSG_set_channel_number(10); /* Using at most 10 channel (ports) per host. Change it here if needed */\n" \
+"  MSG_create_environment(argv[1]);\n" \
+"\n" \
+"  /*  Application deployment */\n"
 
 const char *SIM_MAIN_POSTEMBULE = "\n"
 "\n"
@@ -97,25 +98,7 @@ const char *SIM_MAIN_POSTEMBULE = "\n"
 "  return 0;\n"
 "}\n";
 
-/**********************************************/
-/**** Generate the file for the real life *****/
-/**********************************************/
 
-#define RL_CODE \
-"#include <stdio.h>\n" \
-"#include <signal.h>\n" \
-"#include <gras.h>\n" \
-"\n" \
-"/* user code */\n" \
-"int %s(int argc, char *argv[]);\n" \
-"\n" \
-"int main(int argc, char *argv[]){\n" \
-"  int errcode;\n" \
-"\n" \
-"  errcode=%s(argc,argv);\n"\
-" \n" \
-"  return errcode;\n"\
-"}\n"
 
 /**********************************************/
 /********* Parse XML deployment file **********/
@@ -198,7 +181,7 @@ static void generate_sim(char *project)
   }
   fprintf(OUT, "\n%s\n",warning);
 
-  fprintf(OUT, "%s", SIM_MAIN_PREEMBULE);
+  fprintf(OUT, SIM_MAIN_PREEMBULE, project);
   xbt_dict_foreach(process_function_set,cursor,key,data) {
     fprintf(OUT,"  MSG_function_register(\"%s\", launch_%s);\n",key,key);
   }
@@ -207,6 +190,9 @@ static void generate_sim(char *project)
   free(filename);
 }
 
+/**********************************************/
+/**** Generate the file for the real life *****/
+/**********************************************/
 static void generate_rl(char *project)
 {
   xbt_dict_cursor_t cursor=NULL;
@@ -223,7 +209,23 @@ static void generate_rl(char *project)
     xbt_assert1(OUT, "Unable to open %s for writing",filename);
 
     fprintf(OUT, "\n%s\n",warning);
-    fprintf(OUT, RL_CODE, key,key);
+    fprintf(OUT, "#include <stdio.h>\n" \
+                 "#include <signal.h>\n" \
+                 "#include <gras.h>\n" \
+                 "\n" \
+                 "extern const char *_gras_procname;\n" \
+                 "/* user code */\n" \
+                 "int %s(int argc, char *argv[]);\n" \
+                 "\n" \
+                 "int main(int argc, char *argv[]){\n" \
+                 "  int errcode;\n" \
+                 "\n" \
+                 "  _gras_procname = \"%s\";\n" \
+                 "  errcode=%s(argc,argv);\n"\
+                 " \n" \
+                 "  return errcode;\n"\
+                 "}\n",
+           key,key,key);
     fprintf(OUT, "\n%s\n",warning);
     fclose(OUT);
     free(filename);
@@ -307,7 +309,8 @@ static void generate_makefile_local(char *project, char *deployment)
   
   OUT=fopen(filename,"w");
   xbt_assert1(OUT, "Unable to open %s for writing",filename);
-
+  free(filename);
+   
   fprintf(OUT, "############ PROJECT COMPILING AND ARCHIVING #########\n");
   fprintf(OUT, "PROJECT_NAME=%s\n",project);
   fprintf(OUT, 
@@ -600,5 +603,6 @@ int main(int argc, char *argv[])
   generate_deployment(project_name, deployment_file);
 
   free(warning);
+  surf_finalize();
   return 0;
 }