summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDaniel Bovensiepen <[email protected]>2012-11-23 19:42:29 +0800
committerDaniel Bovensiepen <[email protected]>2012-11-23 19:42:29 +0800
commite32077fed14a322dc465e9fc751fdf659e254515 (patch)
treec1d955ea756104f352ae865e6c0221900f95e104
parent660eb545dbb60bbf0c338a3b381aef4dc3734c51 (diff)
downloadmruby-e32077fed14a322dc465e9fc751fdf659e254515.tar.gz
mruby-e32077fed14a322dc465e9fc751fdf659e254515.zip
Respect dynamic GEMS.active file in mrbgems/generator.c
-rw-r--r--mrbgems/generator.c56
1 files changed, 28 insertions, 28 deletions
diff --git a/mrbgems/generator.c b/mrbgems/generator.c
index a167b848b..668f7471c 100644
--- a/mrbgems/generator.c
+++ b/mrbgems/generator.c
@@ -65,7 +65,7 @@ char *replace(const char *s, const char *old, const char *new)
static char*
for_each_gem (char before[1024], char after[1024],
char start[1024], char end[1024],
- int full_path)
+ int full_path, char active_gems[1024])
{
/* active GEM check */
FILE *active_gem_file;
@@ -82,7 +82,7 @@ for_each_gem (char before[1024], char after[1024],
strcat(complete_line, start);
/* Read out the active GEMs */
- active_gem_file = fopen("GEMS.active", "r+");
+ active_gem_file = fopen(active_gems, "r+");
if (active_gem_file != NULL) {
char_index = 0;
gem_index = 0;
@@ -124,7 +124,7 @@ for_each_gem (char before[1024], char after[1024],
*
*/
void
-make_gem_makefile()
+make_gem_makefile(char active_gems[1024])
{
char *gem_check = { 0 };
int gem_empty;
@@ -137,7 +137,7 @@ make_gem_makefile()
"endif\n\n");
/* is there any GEM available? */
- gem_check = for_each_gem("", "", "", "", TRUE);
+ gem_check = for_each_gem("", "", "", "", TRUE, active_gems);
if (strcmp(gem_check, "") == 0)
gem_empty = TRUE;
else
@@ -153,7 +153,7 @@ make_gem_makefile()
/* Call make for every GEM */
printf("all_gems :\n%s\n",
- for_each_gem("\t@$(MAKE) -C ", " $(MAKE_FLAGS)\n", "", "", TRUE)
+ for_each_gem("\t@$(MAKE) -C ", " $(MAKE_FLAGS)\n", "", "", TRUE, active_gems)
);
printf("\n");
}
@@ -165,10 +165,10 @@ make_gem_makefile()
);
if (!gem_empty)
printf("%s",
- for_each_gem(" ", "/test/*.rb ", "\tcat", " > mrbgemtest.rbtmp", TRUE)
+ for_each_gem(" ", "/test/*.rb ", "\tcat", " > mrbgemtest.rbtmp", TRUE, active_gems)
);
else
- printf("\t../generator rbtmp > mrbgemtest.rbtmp");
+ printf("\t../generator rbtmp \"%s\"> mrbgemtest.rbtmp", active_gems);
printf("\n\t../../bin/mrbc -Bmrbgemtest_irep -omrbgemtest.ctmp mrbgemtest.rbtmp\n\n");
@@ -179,7 +179,7 @@ make_gem_makefile()
"\t$(RM) *.c *.d *.rbtmp *.ctmp *.o mrbtest\n");
if (!gem_empty)
printf("%s",
- for_each_gem("\t@$(MAKE) clean -C ", " $(MAKE_FLAGS)\n", "", "", TRUE)
+ for_each_gem("\t@$(MAKE) clean -C ", " $(MAKE_FLAGS)\n", "", "", TRUE, active_gems)
);
}
@@ -191,10 +191,10 @@ make_gem_makefile()
*
*/
void
-make_gem_makefile_list()
+make_gem_makefile_list(char active_gems[1024])
{
printf("%s",
- for_each_gem(" ", "/mrb-#GEMNAME#-gem.a", "GEM_LIST := ", "\n", TRUE)
+ for_each_gem(" ", "/mrb-#GEMNAME#-gem.a", "GEM_LIST := ", "\n", TRUE, active_gems)
);
printf("GEM_ARCHIVE_FILES := $(GEM_LIST)\n"
@@ -206,7 +206,7 @@ make_gem_makefile_list()
*
*/
void
-make_gem_init()
+make_gem_init(char active_gems[1024])
{
printf("/*\n"
" * This file contains a list of all\n"
@@ -221,7 +221,7 @@ make_gem_init()
/* Protoype definition of all initialization methods */
printf("\n%s",
- for_each_gem("void GENERATED_TMP_mrb_", "_gem_init(mrb_state*);\n", "", "", FALSE)
+ for_each_gem("void GENERATED_TMP_mrb_", "_gem_init(mrb_state*);\n", "", "", FALSE, active_gems)
);
printf("\n");
@@ -229,7 +229,7 @@ make_gem_init()
printf("void\n"
"mrb_init_mrbgems(mrb_state *mrb) {\n");
printf( "%s",
- for_each_gem(" GENERATED_TMP_mrb_", "_gem_init(mrb);\n", "", "", FALSE)
+ for_each_gem(" GENERATED_TMP_mrb_", "_gem_init(mrb);\n", "", "", FALSE, active_gems)
);
printf("}");
}
@@ -241,7 +241,7 @@ make_gem_init()
*
*/
void
-make_rbtmp()
+make_rbtmp(char active_gems[1024])
{
printf("\n");
}
@@ -253,7 +253,7 @@ make_rbtmp()
*
*/
void
-make_gem_mrblib_header()
+make_gem_mrblib_header(char active_gems[1024])
{
printf("/*\n"
" * This file is loading the irep\n"
@@ -278,7 +278,7 @@ make_gem_mrblib_header()
*
*/
void
-make_gem_mrblib(char argv[1024])
+make_gem_mrblib(char argv[1024], char active_gems[1024])
{
printf("\n"
"void\n"
@@ -300,7 +300,7 @@ make_gem_mrblib(char argv[1024])
*
*/
void
-make_gem_srclib(char argv[1024])
+make_gem_srclib(char argv[1024], char active_gems[1024])
{
printf("/*\n"
" * This file is loading the irep\n"
@@ -331,7 +331,7 @@ make_gem_srclib(char argv[1024])
*
*/
void
-make_gem_mixlib(char argv[1024])
+make_gem_mixlib(char argv[1024], char active_gems[1024])
{
printf("\n"
"void mrb_%s_gem_init(mrb_state*);\n", argv);
@@ -357,29 +357,29 @@ int
main (int argc, char *argv[])
{
const char * argument_info = "Wrong argument! Options: 'makefile', 'gem_init', 'rbtmp', 'gem_mrblib', gem_srclib\n";
- if (argc == 2) {
+ if (argc == 3) {
if (strcmp(argv[1], "makefile") == 0)
- make_gem_makefile();
+ make_gem_makefile(argv[2]);
else if (strcmp(argv[1], "makefile_list") == 0)
- make_gem_makefile_list();
+ make_gem_makefile_list(argv[2]);
else if (strcmp(argv[1], "gem_init") == 0)
- make_gem_init();
+ make_gem_init(argv[2]);
else if (strcmp(argv[1], "rbtmp") == 0)
- make_rbtmp();
+ make_rbtmp(argv[2]);
else if (strcmp(argv[1], "gem_mrblib") == 0)
- make_gem_mrblib_header();
+ make_gem_mrblib_header(argv[2]);
else {
printf("%s", argument_info);
return 1;
}
}
- else if (argc == 3) {
+ else if (argc == 4) {
if (strcmp(argv[1], "gem_mrblib") == 0)
- make_gem_mrblib(argv[2]);
+ make_gem_mrblib(argv[2], argv[3]);
else if (strcmp(argv[1], "gem_srclib") == 0)
- make_gem_srclib(argv[2]);
+ make_gem_srclib(argv[2], argv[3]);
else if (strcmp(argv[1], "gem_mixlib") == 0)
- make_gem_mixlib(argv[2]);
+ make_gem_mixlib(argv[2], argv[3]);
else {
printf("%s", argument_info);
return 1;