Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Debug help
[simgrid.git] / tools / gras / stub_generator.c
index 8d32cda..3d14c01 100644 (file)
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(stubgen,gras,"Stub generator");
 
-const char *WARN = "/***********\n * DO NOT EDIT! THIS FILE WERE AUTOMATICALLY GENERATED FROM %s BY gras_stub_generator\n ***********/\n";
-const char *SIM_FILENAME = "_%s_simulator.c";
-const char *SIM_BINARYNAME = "%s_simulator";
-const char *SIM_FILENAME_LDADD = "%s_simulator_LDADD";
-const char *SIM_FILENAME_SOURCES = "%s_simulator_SOURCES";
-const char *RL_FILENAME = "_%s_%s.c";
-const char *RL_BINARYNAME = "%s_%s";
-const char *RL_FILENAME_LDADD = "%s_%s_LDADD";
-const char *RL_FILENAME_SOURCES = "%s_%s_SOURCES";
-const char *MAKEFILE_FILENAME = "%s.Makefile.am";
+#define WARN "/***********\n * DO NOT EDIT! THIS FILE HAS BEEN AUTOMATICALLY GENERATED FROM %s BY gras_stub_generator\n ***********/\n"
+#define SIM_FILENAME  "_%s_simulator.c"
+#define SIM_BINARYNAME  "%s_simulator"
+#define SIM_FILENAME_LDADD  "%s_simulator_LDADD"
+#define SIM_FILENAME_SOURCES  "%s_simulator_SOURCES"
+#define RL_FILENAME  "_%s_%s.c"
+#define RL_BINARYNAME  "%s_%s"
+#define RL_FILENAME_LDADD  "%s_%s_LDADD"
+#define RL_FILENAME_SOURCES  "%s_%s_SOURCES"
+#define MAKEFILE_FILENAME  "%s.Makefile.am"
 
 char *warning = NULL;
 
@@ -42,24 +42,24 @@ const char *SIM_PREEMBULE =
 "char *gras_log=NULL;\n";
 
 
-const char *SIM_LAUNCH_FUNC =
-"int launch_%s(int argc, char **argv) {\n"
-"  char **myargv=argv;\n"
-"  int myargc=argc;\n"
-"  int i;\n"
-"  int retcode;\n"
-"    \n"
-"  if (gras_log) {\n"
-"    myargv=malloc((argc+1) * sizeof(char**));\n"
-"    for (i=0; i<argc; i++)\n"
-"      myargv[i] = argv[i];\n"
-"    myargv[myargc++] = gras_log;\n"
-"  }\n"
-"  retcode = %s(myargc,myargv);\n"
-"  if (myargv != argv)\n"
-"    free(myargv);\n"
-"  return retcode;\n"
-"}\n";
+#define SIM_LAUNCH_FUNC  \
+"int launch_%s(int argc, char **argv) {\n" \
+"  char **myargv=argv;\n" \
+"  int myargc=argc;\n" \
+"  int i;\n" \
+"  int retcode;\n"\
+"    \n"\
+"  if (gras_log) {\n"\
+"    myargv=malloc((argc+1) * sizeof(char**));\n" \
+"    for (i=0; i<argc; i++)\n" \
+"      myargv[i] = argv[i];\n" \
+"    myargv[myargc++] = gras_log;\n" \
+"  }\n" \
+"  retcode = %s(myargc,myargv);\n" \
+"  if (myargv != argv)\n" \
+"    free(myargv);\n" \
+"  return retcode;\n" \
+"}\n"
 
 const char* SIM_MAIN_PREEMBULE =
 "int main (int argc,char *argv[]) {\n"
@@ -68,7 +68,7 @@ const char* SIM_MAIN_PREEMBULE =
 "  /*  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"
+"    fprintf(stderr, \"Usage: %s platform_file application_description.txt [--gras-log=...]\\n\",argv[0]);\n"
 "    exit(1);\n"
 "  }\n"
 "\n"
@@ -95,21 +95,21 @@ const char *SIM_MAIN_POSTEMBULE = "\n"
 /**** Generate the file for the real life *****/
 /**********************************************/
 
-const char *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";
+#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 **********/
@@ -118,7 +118,7 @@ xbt_dict_t process_function_set = NULL;
 
 static void parse_process_init(void)
 { 
-  void *p = (void *) 1231;
+  void *p = (void *) 1234;
   xbt_dict_set(process_function_set, A_process_function, p, NULL);
 }
 
@@ -136,7 +136,7 @@ static void generate_sim(char *project)
   xbt_assert1(OUT, "Unable to open %s for writing",filename);
 
   fprintf(OUT, "%s\n",warning);
-  fprintf(OUT, SIM_PREEMBULE);
+  fprintf(OUT, "%s", SIM_PREEMBULE);
   xbt_dict_foreach(process_function_set,cursor,key,data) {
     fprintf(OUT,"int %s(int argc,char *argv[]);\n",key);
   }
@@ -150,13 +150,13 @@ static void generate_sim(char *project)
   }
   fprintf(OUT, "\n%s\n",warning);
 
-  fprintf(OUT, SIM_MAIN_PREEMBULE);
+  fprintf(OUT, "%s", SIM_MAIN_PREEMBULE);
   xbt_dict_foreach(process_function_set,cursor,key,data) {
     fprintf(OUT,"  MSG_function_register(\"%s\", launch_%s);\n",key,key);
   }
-  fprintf(OUT, SIM_MAIN_POSTEMBULE);
+  fprintf(OUT, "%s", SIM_MAIN_POSTEMBULE);
   fclose(OUT);
-  xbt_free(filename);
+  free(filename);
 }
 
 static void generate_rl(char *project)
@@ -178,7 +178,7 @@ static void generate_rl(char *project)
     fprintf(OUT, RL_CODE, key,key);
     fprintf(OUT, "\n%s\n",warning);
     fclose(OUT);
-    xbt_free(filename);
+    free(filename);
   }
 }
 
@@ -242,7 +242,12 @@ static void generate_makefile(char *project, char *deployment)
   }
   fprintf(OUT, SIM_FILENAME, project);
   fprintf(OUT, ": %s\n", deployment);
-  fprintf(OUT, "\tstub_generator %s %s >/dev/null\n", project, filename);
+  fprintf(OUT, "\tstub_generator %s %s >/dev/null\n", project, deployment);
+}
+
+static void print(void *p)
+{
+  printf("%p",p);
 }
 
 int main(int argc, char *argv[])
@@ -267,10 +272,24 @@ int main(int argc, char *argv[])
   warning = xbt_new(char,strlen(WARN)+strlen(deployment_file)+10);
   sprintf(warning,WARN,deployment_file);
 
+  if(XBT_LOG_ISENABLED(stubgen, xbt_log_priority_debug)) {
+    xbt_dict_cursor_t cursor=NULL;
+    char *key = NULL;
+    void *data = NULL;
+
+    for (cursor=NULL, xbt_dict_cursor_first((process_function_set),&(cursor)) ;
+        xbt_dict_cursor_get_or_free(&(cursor),&(key),(void**)(&data));
+        xbt_dict_cursor_step(cursor) ) {
+      DEBUG1("Function %s", key);      
+    }
+    
+    xbt_dict_dump(process_function_set,print);
+  }
+
   generate_sim(project_name);
   generate_rl(project_name);
   generate_makefile(project_name, deployment_file);
 
-  xbt_free(warning);
+  free(warning);
   return 0;
 }