X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7eef625065d0b3af4a64b5665009491426db974f..221538a27f21e52c182ae7fcc08c78c1175395b9:/tools/gras/unix_stub_generator.c diff --git a/tools/gras/unix_stub_generator.c b/tools/gras/unix_stub_generator.c index 5e1733e377..4642ef30f0 100644 --- a/tools/gras/unix_stub_generator.c +++ b/tools/gras/unix_stub_generator.c @@ -1,5 +1,3 @@ -/* $Id$ */ - /* gras_stub_generator - creates the main() to use a GRAS program */ /* Copyright (c) 2003-2007 Martin Quinson, Arnaud Legrand, Malek Cherier. */ @@ -24,8 +22,7 @@ #include - -#ifdef _XBT_WIN32 +#ifdef __BORLANDC__ /* stupid stubs so that it compiles on windows */ void generate_sim(char *project) { @@ -59,21 +56,19 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(stubgen); #define MAKEFILE_FILENAME_REMOTE "%s.Makefile.remote" #define DEPLOYMENT "%s.deploy.sh" -char *warning = NULL; - /**********************************************/ /**** Generate the file for the simulator *****/ /**********************************************/ const char *SIM_PREEMBULE = - "/* specific to Borland Compiler */\n" - "#ifdef __BORLANDC__\n" - "#pragma hdrstop\n" - "#endif\n\n" - "#include \n" - "#include \n" - "#include \"msg/msg.h\"\n" - "#include \n" "\n" "char *gras_log=NULL;\n"; + "/* specific to Borland Compiler */\n" + "#ifdef __BORLANDC__\n" + "#pragma hdrstop\n" + "#endif\n\n" + "#include \n" + "#include \n" + "#include \"msg/msg.h\"\n" + "#include \n" "\n" "char *gras_log=NULL;\n"; #define SIM_LAUNCH_FUNC \ @@ -96,15 +91,15 @@ const char *SIM_PREEMBULE = "}\n" const char *SIM_MAIN_POSTEMBULE = "\n" - "\n" - " gras_launch_application(argv[2]);\n" - "\n" - " /* Run the simulation */\n" - " gras_main();\n" - "\n" - " /* cleanup the place */\n" - " gras_clean();\n" - " if (gras_log)\n" " free(gras_log);\n" " return 0;\n" "}\n"; + "\n" + " gras_launch_application(argv[2]);\n" + "\n" + " /* Run the simulation */\n" + " gras_main();\n" + "\n" + " /* cleanup the place */\n" + " gras_clean();\n" + " if (gras_log)\n" " free(gras_log);\n" " return 0;\n" "}\n"; @@ -115,54 +110,55 @@ void generate_sim(char *project) char *key = NULL; void *data = NULL; char *filename = NULL; - FILE *OUT = NULL; + FILE *FICOUT = NULL; /* Output file: _simulator.c */ filename = xbt_new(char, strlen(project) + strlen(SIM_SOURCENAME)); sprintf(filename, SIM_SOURCENAME, project); - OUT = fopen(filename, "w"); + FICOUT = fopen(filename, "w"); - xbt_assert1(OUT, "Unable to open %s for writing", filename); + xbt_assert(FICOUT, "Unable to open %s for writing", filename); - fprintf(OUT, "%s\n", warning); - fprintf(OUT, "%s", SIM_PREEMBULE); + fprintf(FICOUT, "%s\n", warning); + fprintf(FICOUT, "%s", SIM_PREEMBULE); xbt_dict_foreach(process_function_set, cursor, key, data) { - fprintf(OUT, "int %s(int argc,char *argv[]);\n", key); + fprintf(FICOUT, "int %s(int argc,char *argv[]);\n", key); } - fprintf(OUT, "\n"); + fprintf(FICOUT, "\n"); xbt_dict_foreach(process_function_set, cursor, key, data) { - fprintf(OUT, "int launch_%s(int argc,char *argv[]);\n", key); + fprintf(FICOUT, "int launch_%s(int argc,char *argv[]);\n", key); } - fprintf(OUT, "\n%s\n", warning); + fprintf(FICOUT, "\n%s\n", warning); xbt_dict_foreach(process_function_set, cursor, key, data) { - fprintf(OUT, SIM_LAUNCH_FUNC, key, key); + fprintf(FICOUT, SIM_LAUNCH_FUNC, key, key); } - fprintf(OUT, "\n%s\n", warning); + fprintf(FICOUT, "\n%s\n", warning); - fprintf(OUT, "%s", "/* specific to Borland Compiler */\n" + fprintf(FICOUT, "%s", "/* specific to Borland Compiler */\n" "#ifdef __BORLANDDC__\n" "#pragma argsused\n" "#endif\n\n"); - fprintf(OUT, "%s", "int main (int argc,char *argv[]) {\n" + fprintf(FICOUT, "%s", "int main (int argc,char *argv[]) {\n" "\n" " /* Simulation setup */\n" " gras_global_init(&argc,argv);\n" " if (argc != 3) {\n" " fprintf(stderr, \"Usage: %s platform.xml deployment.xml [--log=...]\\n\",argv[0]);\n" " exit(1);\n" " }\n" "\n"); - fprintf(OUT, + fprintf(FICOUT, " gras_create_environment(argv[1]);\n" "\n" " /* Application deployment */\n"); xbt_dict_foreach(process_function_set, cursor, key, data) { - fprintf(OUT, " gras_function_register(\"%s\", launch_%s);\n", key, key); + fprintf(FICOUT, " gras_function_register(\"%s\", launch_%s);\n", key, + key); } - fprintf(OUT, "%s", SIM_MAIN_POSTEMBULE); - fclose(OUT); + fprintf(FICOUT, "%s", SIM_MAIN_POSTEMBULE); + fclose(FICOUT); free(filename); } @@ -175,19 +171,20 @@ void generate_rl(char *project) char *key = NULL; void *data = NULL; char *filename = NULL; - FILE *OUT = NULL; + FILE *FICOUT = NULL; xbt_dict_foreach(process_function_set, cursor, key, data) { filename = - xbt_new(char, strlen(project) + strlen(RL_SOURCENAME) + strlen(key)); + xbt_new(char, + strlen(project) + strlen(RL_SOURCENAME) + strlen(key)); sprintf(filename, RL_SOURCENAME, project, key); - OUT = fopen(filename, "w"); - xbt_assert1(OUT, "Unable to open %s for writing", filename); + FICOUT = fopen(filename, "w"); + xbt_assert(FICOUT, "Unable to open %s for writing", filename); - fprintf(OUT, "\n%s\n", warning); - fprintf(OUT, "/* specific to Borland Compiler */\n" + fprintf(FICOUT, "\n%s\n", warning); + fprintf(FICOUT, "/* specific to Borland Compiler */\n" "#ifdef __BORLANDC__\n" "#pragma hdrstop\n" "#endif\n\n" @@ -209,8 +206,8 @@ void generate_rl(char *project) " _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); + fprintf(FICOUT, "\n%s\n", warning); + fclose(FICOUT); free(filename); } } @@ -221,66 +218,66 @@ void generate_makefile_am(char *project, char *deployment) char *key = NULL; void *data = NULL; char *filename = NULL; - FILE *OUT = NULL; + FILE *FICOUT = NULL; filename = xbt_new(char, strlen(project) + strlen(MAKEFILE_FILENAME_AM)); sprintf(filename, MAKEFILE_FILENAME_AM, project); - OUT = fopen(filename, "w"); - xbt_assert1(OUT, "Unable to open %s for writing", filename); + FICOUT = fopen(filename, "w"); + xbt_assert(FICOUT, "Unable to open %s for writing", filename); - fprintf(OUT, "# AUTOMAKE variable definition\n"); - fprintf(OUT, "INCLUDES= @CFLAGS_SimGrid@\n\n"); - fprintf(OUT, "PROGRAMS="); - fprintf(OUT, SIM_BINARYNAME, project); + fprintf(FICOUT, "# AUTOMAKE variable definition\n"); + fprintf(FICOUT, "INCLUDES= @CFLAGS_SimGrid@\n\n"); + fprintf(FICOUT, "PROGRAMS="); + fprintf(FICOUT, SIM_BINARYNAME, project); xbt_dict_foreach(process_function_set, cursor, key, data) { - fprintf(OUT, " "); - fprintf(OUT, RL_BINARYNAME, project, key); + fprintf(FICOUT, " "); + fprintf(FICOUT, RL_BINARYNAME, project, key); } - fprintf(OUT, "\n\n"); - fprintf(OUT, SIM_SOURCENAME_SOURCES, project); - fprintf(OUT, "=\t"); - fprintf(OUT, SIM_SOURCENAME, project); - fprintf(OUT, " %s.c\n", project); - fprintf(OUT, SIM_SOURCENAME_LDADD, project); - fprintf(OUT, "=\tpath/to/libsimgrid.a\n\n"); + fprintf(FICOUT, "\n\n"); + fprintf(FICOUT, SIM_SOURCENAME_SOURCES, project); + fprintf(FICOUT, "=\t"); + fprintf(FICOUT, SIM_SOURCENAME, project); + fprintf(FICOUT, " %s.c\n", project); + fprintf(FICOUT, SIM_SOURCENAME_LDADD, project); + fprintf(FICOUT, "=\tpath/to/libsimgrid.a\n\n"); xbt_dict_foreach(process_function_set, cursor, key, data) { - fprintf(OUT, RL_SOURCENAME_SOURCES, project, key); - fprintf(OUT, "=\t"); - fprintf(OUT, RL_SOURCENAME, project, key); - fprintf(OUT, " %s.c\n", project); - fprintf(OUT, RL_SOURCENAME_LDADD, project, key); - fprintf(OUT, "=\tpath/to/libgras.a\n\n"); + fprintf(FICOUT, RL_SOURCENAME_SOURCES, project, key); + fprintf(FICOUT, "=\t"); + fprintf(FICOUT, RL_SOURCENAME, project, key); + fprintf(FICOUT, " %s.c\n", project); + fprintf(FICOUT, RL_SOURCENAME_LDADD, project, key); + fprintf(FICOUT, "=\tpath/to/libgras.a\n\n"); } - fprintf(OUT, + fprintf(FICOUT, "\n# cleanup temps (allowing the user to add extra clean files)\n"); - fprintf(OUT, "CLEANFILES?= \n"); - fprintf(OUT, "CLEANFILES+= "); - fprintf(OUT, SIM_SOURCENAME, project); + fprintf(FICOUT, "CLEANFILES?= \n"); + fprintf(FICOUT, "CLEANFILES+= "); + fprintf(FICOUT, SIM_SOURCENAME, project); xbt_dict_foreach(process_function_set, cursor, key, data) { - fprintf(OUT, " "); - fprintf(OUT, RL_SOURCENAME, project, key); + fprintf(FICOUT, " "); + fprintf(FICOUT, RL_SOURCENAME, project, key); } - fprintf(OUT, "\n"); + fprintf(FICOUT, "\n"); - fprintf(OUT, "\n# generate temps\n"); - fprintf(OUT, + fprintf(FICOUT, "\n# generate temps\n"); + fprintf(FICOUT, "\n# A rule to generate the source file each time the deployment file changes\n"); xbt_dict_foreach(process_function_set, cursor, key, data) { - fprintf(OUT, RL_SOURCENAME, project, key); - fprintf(OUT, " "); + fprintf(FICOUT, RL_SOURCENAME, project, key); + fprintf(FICOUT, " "); } - fprintf(OUT, SIM_SOURCENAME, project); - fprintf(OUT, ": %s\n", deployment); - fprintf(OUT, "\tgras_stub_generator %s %s >/dev/null\n", project, + fprintf(FICOUT, SIM_SOURCENAME, project); + fprintf(FICOUT, ": %s\n", deployment); + fprintf(FICOUT, "\tgras_stub_generator %s %s >/dev/null\n", project, deployment); - fclose(OUT); + fclose(FICOUT); } void generate_makefile_local(char *project, char *deployment) @@ -289,25 +286,26 @@ void generate_makefile_local(char *project, char *deployment) char *key = NULL; void *data = NULL; char *filename = NULL; - FILE *OUT = NULL; + FILE *FICOUT = NULL; - filename = xbt_new(char, strlen(project) + strlen(MAKEFILE_FILENAME_LOCAL)); + filename = + xbt_new(char, strlen(project) + strlen(MAKEFILE_FILENAME_LOCAL)); sprintf(filename, MAKEFILE_FILENAME_LOCAL, project); - OUT = fopen(filename, "w"); - xbt_assert1(OUT, "Unable to open %s for writing", filename); + FICOUT = fopen(filename, "w"); + xbt_assert(FICOUT, "Unable to open %s for writing", filename); free(filename); - fprintf(OUT, + fprintf(FICOUT, "\n" "####\n" "#### THIS FILE WAS GENERATED, DO NOT EDIT BEFORE RENAMING IT\n" "####\n\n\n"); - fprintf(OUT, "## Variable declarations\n" + fprintf(FICOUT, "## Variable declarations\n" "PROJECT_NAME=%s\n" "DISTDIR=gras-$(PROJECT_NAME)\n\n", project); - fprintf(OUT, + fprintf(FICOUT, "# Set the GRAS_ROOT environment variable to the path under which you installed SimGrid\n" "# Compilation will fail if you don't do so\n" "GRAS_ROOT?= $(shell if [ -e /usr/local/lib/libgras.so ] ; then echo /usr/local ; else echo \"\\\"<<<< GRAS_ROOT undefined !!! >>>>\\\"\"; fi)\n\n" @@ -317,53 +315,54 @@ void generate_makefile_local(char *project, char *deployment) "LIBS_SIM = -lm -L$(GRAS_ROOT)/lib/ -lsimgrid\n" "LIBS_RL = -lm -L$(GRAS_ROOT)/lib/ -lgras\n" "LIBS = \n" "\n"); - fprintf(OUT, "PRECIOUS_C_FILES ?= %s.c\n", project); + fprintf(FICOUT, "PRECIOUS_C_FILES ?= %s.c\n", project); - fprintf(OUT, "GENERATED_C_FILES = "); - fprintf(OUT, SIM_SOURCENAME " ", project); + fprintf(FICOUT, "GENERATED_C_FILES = "); + fprintf(FICOUT, SIM_SOURCENAME " ", project); xbt_dict_foreach(process_function_set, cursor, key, data) { - fprintf(OUT, RL_SOURCENAME " ", project, key); + fprintf(FICOUT, RL_SOURCENAME " ", project, key); } - fprintf(OUT, "\n"); + fprintf(FICOUT, "\n"); - fprintf(OUT, "OBJ_FILES = $(patsubst %%.c,%%.o,$(PRECIOUS_C_FILES))\n"); + fprintf(FICOUT, + "OBJ_FILES = $(patsubst %%.c,%%.o,$(PRECIOUS_C_FILES))\n"); - fprintf(OUT, "BIN_FILES = "); + fprintf(FICOUT, "BIN_FILES = "); - fprintf(OUT, SIM_BINARYNAME " ", project); + fprintf(FICOUT, SIM_BINARYNAME " ", project); xbt_dict_foreach(process_function_set, cursor, key, data) { - fprintf(OUT, RL_BINARYNAME " ", project, key); + fprintf(FICOUT, RL_BINARYNAME " ", project, key); } - fprintf(OUT, "\n"); + fprintf(FICOUT, "\n"); - fprintf(OUT, + fprintf(FICOUT, "\n" "## By default, build all the binaries\n" "all: $(BIN_FILES)\n" "\n"); - fprintf(OUT, + fprintf(FICOUT, "\n## generate temps: regenerate the source file each time the deployment file changes\n"); xbt_dict_foreach(process_function_set, cursor, key, data) { - fprintf(OUT, RL_SOURCENAME, project, key); - fprintf(OUT, " "); + fprintf(FICOUT, RL_SOURCENAME, project, key); + fprintf(FICOUT, " "); } - fprintf(OUT, SIM_SOURCENAME, project); - fprintf(OUT, ": %s\n", deployment); - fprintf(OUT, "\tgras_stub_generator %s %s >/dev/null\n", project, + fprintf(FICOUT, SIM_SOURCENAME, project); + fprintf(FICOUT, ": %s\n", deployment); + fprintf(FICOUT, "\tgras_stub_generator %s %s >/dev/null\n", project, deployment); - fprintf(OUT, "\n## Generate the binaries\n"); - fprintf(OUT, SIM_BINARYNAME ": " SIM_OBJNAME " $(OBJ_FILES)\n", project, - project); - fprintf(OUT, + fprintf(FICOUT, "\n## Generate the binaries\n"); + fprintf(FICOUT, SIM_BINARYNAME ": " SIM_OBJNAME " $(OBJ_FILES)\n", + project, project); + fprintf(FICOUT, "\t$(CC) $(INCLUDES) $(DEFS) $(CFLAGS) $^ $(LIBS_SIM) $(LIBS) $(LDADD) -o $@ \n"); xbt_dict_foreach(process_function_set, cursor, key, data) { - fprintf(OUT, RL_BINARYNAME " : " RL_OBJNAME " $(OBJ_FILES)\n", project, - key, project, key); - fprintf(OUT, + fprintf(FICOUT, RL_BINARYNAME " : " RL_OBJNAME " $(OBJ_FILES)\n", + project, key, project, key); + fprintf(FICOUT, "\t$(CC) $(INCLUDES) $(DEFS) $(CFLAGS) $^ $(LIBS_RL) $(LIBS) $(LDADD) -o $@ \n"); } - fprintf(OUT, + fprintf(FICOUT, "\n" "%%: %%.o\n" "\t$(CC) $(INCLUDES) $(DEFS) $(CFLAGS) $^ $(LIBS) $(LDADD) -o $@ \n" @@ -371,8 +370,8 @@ void generate_makefile_local(char *project, char *deployment) "%%.o: %%.c\n" "\t$(CC) $(INCLUDES) $(DEFS) $(CFLAGS) -c -o $@ $<\n" "\n"); - fprintf(OUT, - "## Rules for tarballs and cleaning\n" + fprintf(FICOUT, + "## Rules for tarballs and cleaning\n" "DIST_FILES= $(EXTRA_DIST) $(GENERATED_C_FILES) $(PRECIOUS_C_FILES) " MAKEFILE_FILENAME_LOCAL " " /*MAKEFILE_FILENAME_REMOTE */ "\n" "distdir: $(DIST_FILES)\n" "\trm -rf $(DISTDIR)\n" @@ -381,27 +380,27 @@ void generate_makefile_local(char *project, char *deployment) "\ttar c $(DISTDIR) | gzip -c9 > $(DISTDIR).tar.gz\n" "\n", project /*, project */ ); - fprintf(OUT, + fprintf(FICOUT, "clean:\n" "\trm -f $(CLEANFILES) $(BIN_FILES) $(OBJ_FILES) *~ %s.o " SIM_OBJNAME, project, project); xbt_dict_foreach(process_function_set, cursor, key, data) { - fprintf(OUT, " " RL_OBJNAME, project, key); + fprintf(FICOUT, " " RL_OBJNAME, project, key); } - fprintf(OUT, + fprintf(FICOUT, "\n" "\trm -rf $(DISTDIR)\n" "\n" ".SUFFIXES:\n" ".PHONY : clean\n" "\n"); /* - fprintf(OUT, "############ REMOTE COMPILING #########\n"); - fprintf(OUT, + fprintf(FICOUT, "############ REMOTE COMPILING #########\n"); + fprintf(FICOUT, "MACHINES ?= "); xbt_dict_foreach(machine_set,cursor,key,data) { - fprintf(OUT, "%s ",key); + fprintf(FICOUT, "%s ",key); } - fprintf(OUT,"\n"); + fprintf(FICOUT,"\n"); - fprintf(OUT, + fprintf(FICOUT, "INSTALL_PATH ?='$$HOME/tmp/src' ### Has to be an absolute path !!! \n" "GRAS_ROOT ?='$(INSTALL_PATH)' ### Has to be an absolute path !!! \n" "SRCDIR ?= ./\n" @@ -447,7 +446,7 @@ void generate_makefile_local(char *project, char *deployment) "\t fi;\\\n" "\t done;\n",project,project,project); */ - fclose(OUT); + fclose(FICOUT); } static void print(void *p)