summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/Makefile
diff options
context:
space:
mode:
authorDaniel Bovensiepen <[email protected]>2012-09-19 07:27:07 +0900
committerDaniel Bovensiepen <[email protected]>2012-09-19 07:27:07 +0900
commitc6a520c6b5362e26cb9d741eed08f4fc3426b3ad (patch)
tree05955125080e5e4d3b19809bda7fdfa7d02f2197 /mrbgems/Makefile
parentac235e25e54c55784b175cf9e66b8db89a54bd44 (diff)
downloadmruby-c6a520c6b5362e26cb9d741eed08f4fc3426b3ad.tar.gz
mruby-c6a520c6b5362e26cb9d741eed08f4fc3426b3ad.zip
Built generator for an variable amount of gems
Diffstat (limited to 'mrbgems/Makefile')
-rw-r--r--mrbgems/Makefile41
1 files changed, 30 insertions, 11 deletions
diff --git a/mrbgems/Makefile b/mrbgems/Makefile
index b8f35f2a9..970baadac 100644
--- a/mrbgems/Makefile
+++ b/mrbgems/Makefile
@@ -5,24 +5,43 @@ LIBRGEMS := ../lib/libmruby_gems.a
INIT := init_gems
RM_F := rm -f
CC_FLAGS := -Wall -Werror-implicit-function-declaration -g -O3 -MMD -I. -I./../include
-GEM_DIRS := $(wildcard g/*)
+MMAKER := ./gem_helper
+MMAKER_BIN := $(MMAKER)
+export CC = gcc
+export LL = gcc
##############################
# generic build targets, rules
.PHONY : all
-all : $(GEM_DIRS)
- echo $(GEM_DIRS)
+all : $(INIT).o all_gems
-# driver build rule
-#$(INIT).o : $(INIT).c
-# gcc $(CC_FLAGS) -c $(INIT).c -o $(INIT).o
+$(INIT).o : $(INIT).c
+ @echo "Build the driver which initiailizes all gems"
+ gcc $(CC_FLAGS) -c $< -o $@
-$(GEM_DIRS) :
- echo $@
+all_gems : $(MMAKER_BIN) g/Makefile
+ @echo "Build all gems"
+ $(MAKE) -C g
+
+$(MMAKER_BIN) : $(MMAKER).o
+ @echo "Build the generator which creates the driver and Gem Makefile"
+ $(LL) -o $@ $(CC_FLAGS) $<
+$(MMAKER).o : $(MMAKER).c
+ $(CC) $(CC_FLAGS) -MMD -c $< -o $@
+
+$(INIT).c : $(MMAKER_BIN)
+ @echo "Generate Gem driver"
+ $(MMAKER_BIN) $(INIT) > $@
+
+g/Makefile :
+ @echo "Generate Gem Makefile"
+ $(MMAKER_BIN) makefile > $@
# clean driver and all gems
.PHONY : clean
-clean : g/*
- $(RM_F) $(INIT).o $(INIT).d $(LIBRGEMS)
- $(MAKE) clean -C $<
+clean : $(MMAKER_BIN)
+ @echo "Cleanup Gems"
+ $(MMAKER_BIN) makefile > g/Makefile
+ $(MAKE) clean -C g
+ -$(RM_F) $(INIT).c *.o *.d $(MMAKER_BIN) g/Makefile