summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'mrbgems/Makefile')
-rw-r--r--mrbgems/Makefile67
1 files changed, 67 insertions, 0 deletions
diff --git a/mrbgems/Makefile b/mrbgems/Makefile
new file mode 100644
index 000000000..462540c09
--- /dev/null
+++ b/mrbgems/Makefile
@@ -0,0 +1,67 @@
+# makefile description.
+# add gems to the ruby library
+
+LIBR := ../lib/libmruby.a
+INIT := init_gems
+RM_F := rm -f
+CC_FLAGS := -Wall -Werror-implicit-function-declaration -g -O3 -MMD -I. -I./../include
+
+export CC = gcc
+export LL = gcc
+export AR = ar
+
+GENERATOR := ./generator
+ifeq ($(OS),Windows_NT)
+ GENERATOR_BIN := $(GENERATOR).exe
+else
+ GENERATOR_BIN := $(GENERATOR)
+endif
+GEM_MAKEFILE := g/Makefile
+GEM_MAKEFILE_LIST := g/MakefileGemList
+GEMDLIB := g/mrbgemtest.ctmp
+
+##############################
+# generic build targets, rules
+
+.PHONY : all
+all : all_gems gem_init.a
+
+gem_init.a : $(INIT).o
+ $(AR) rs gem_init.a $(INIT).o
+
+all_gems : $(GENERATOR_BIN)
+ @echo "Generate Gem List Makefile"
+ $(GENERATOR_BIN) makefile_list > $(GEM_MAKEFILE_LIST)
+ @echo "Generate Gem Makefile"
+ $(GENERATOR_BIN) makefile > $(GEM_MAKEFILE)
+ @echo "Build all gems"
+ $(MAKE) -C g
+
+$(INIT).c : $(GENERATOR_BIN)
+ @echo "Generate Gem driver"
+ $(GENERATOR_BIN) $(INIT) > $@
+
+$(INIT).o : $(INIT).c
+ @echo "Build the driver which initializes all gems"
+ $(CC) $(CC_FLAGS) -MMD -c $< -o $@
+
+# Generator
+
+$(GENERATOR_BIN) : $(GENERATOR).o
+ @echo "Build the generator which creates the driver and Gem Makefile"
+ $(LL) -o $@ $(CC_FLAGS) $<
+
+$(GENERATOR).o : $(GENERATOR).c
+ $(CC) $(CC_FLAGS) -MMD -c $< -o $@
+
+.PHONY : prepare-test
+prepare-test :
+ @$(MAKE) prepare-test -C g
+
+# clean driver and all gems
+.PHONY : clean
+clean : $(GENERATOR_BIN)
+ @echo "Cleanup Gems"
+ $(GENERATOR_BIN) makefile > $(GEM_MAKEFILE)
+ $(MAKE) clean -C g
+ -$(RM_F) $(INIT).c *.o *.d $(GENERATOR_BIN) $(GEM_MAKEFILE) $(GEM_MAKEFILE_LIST) gem_init.a