summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--mrbgems/Makefile4gem47
1 files changed, 46 insertions, 1 deletions
diff --git a/mrbgems/Makefile4gem b/mrbgems/Makefile4gem
index a4fa3f3c9..1b6376f9a 100644
--- a/mrbgems/Makefile4gem
+++ b/mrbgems/Makefile4gem
@@ -11,6 +11,7 @@ RM := rm -f
AR := ar
SRC_DIR := src
+MRB_DIR := mrblib
INCLUDES := -I$(SRC_DIR) -I$(MRUBY_ROOT)include -I$(MRUBY_ROOT)src -I.
CFLAGS := $(INCLUDES) -O3 -g -Wall -Werror-implicit-function-declaration
@@ -27,11 +28,55 @@ endif
.PHONY : all
all : gem-info gem-all
- @echo "Gem '$(GEM)' is done"
gem-info:
@echo "Building Gem '$(GEM)'"
+# Building target for C and Ruby files
+gem-c-and-rb-files : gem_mixlib.o
+ $(AR) rs gem.a $(GEM_OBJECTS) $^
+
+gem_mixlib.c : gem_mrblib_header.ctmp gem_mrblib_irep.ctmp gem_mixlib_init.ctmp
+ cat $^ > $@
+
+gem_mixlib_init.ctmp :
+ ../../generator gem_mixlib $(GEM) > $@
+
+# Building target for C files
+gem-c-files : gem_srclib.o
+ $(AR) rs gem.a $(GEM_OBJECTS) $<
+
+gem_srclib.c :
+ ../../generator gem_srclib $(GEM) > $@
+
+# Building target for Ruby Files
+gem-rb-files : gem_mrblib.o
+ $(AR) rs gem.a $<
+
+gem_mrblib.c : gem_mrblib_header.ctmp gem_mrblib_irep.ctmp gem_mrblib_init.ctmp
+ cat $^ > $@
+
+gem_mrblib_header.ctmp :
+ ../../generator gem_mrblib > $@
+
+gem_mrblib_init.ctmp :
+ ../../generator gem_mrblib $(GEM) > $@
+
+gem_mrblib_irep.ctmp : gem_mrblib.rbtmp
+ ../../../bin/mrbc -Bgem_mrblib_irep_$(GEM) -o$@ $<
+
+gem_mrblib.rbtmp :
+ cat $(GEM_RB_FILES) > $@
+
+gem-clean-c-and-rb-files :
+ -$(RM) gem.a gem_mixlib.o gem_mixlib.c gem_mrblib_header.ctmp gem_mrblib_irep.ctmp gem_mixlib_init.ctmp gem_mrblib.rbtmp
+
+gem-clean-c-files :
+ -$(RM) gem.a gem_srclib.c gem_srclib.o $(GEM_OBJECTS)
+
+gem-clean-rb-files :
+ -$(RM) gem.a gem_mrblib.o gem_mrblib.c gem_mrblib_header.ctmp gem_mrblib_init.ctmp gem_mrblib_irep.ctmp gem_mrblib.rbtmp
+
.PHONY : clean
clean : gem-clean
@echo "Gem '$(GEM)' is clean"