Commit df91989b authored by Daniel Bovensiepen's avatar Daniel Bovensiepen

Optimize Makefiles

parent 0e7d5a2e
...@@ -5,29 +5,37 @@ LIBR := ../lib/libmruby.a ...@@ -5,29 +5,37 @@ LIBR := ../lib/libmruby.a
INIT := init_gems INIT := init_gems
RM_F := rm -f RM_F := rm -f
CC_FLAGS := -Wall -Werror-implicit-function-declaration -g -O3 -MMD -I. -I./../include CC_FLAGS := -Wall -Werror-implicit-function-declaration -g -O3 -MMD -I. -I./../include
MMAKER := ./generator
MMAKER_BIN := $(MMAKER)
export CC = gcc export CC = gcc
export LL = gcc export LL = gcc
export AR = ar export AR = ar
GENERATOR := ./generator
ifeq ($(OS),Windows_NT)
GENERATOR_BIN := $(GENERATOR).exe
else
GENERATOR_BIN := $(GENERATOR)
endif
GEM_MAKEFILE := g/Makefile
GEMDLIB := g/mrbgemtest.ctmp
############################## ##############################
# generic build targets, rules # generic build targets, rules
.PHONY : all .PHONY : all
all : $(INIT).o all_gems all : $(INIT).o all_gems
all_gems : g/Makefile all_gems : GEM_MAKEFILE
@echo "Build all gems" @echo "Build all gems"
$(MAKE) -C g $(MAKE) -C g
g/Makefile : $(MMAKER_BIN) GEM_MAKEFILE : $(GENERATOR_BIN)
@echo "Generate Gem Makefile" @echo "Generate Gem Makefile"
$(MMAKER_BIN) makefile > $@ $(GENERATOR_BIN) makefile > $@
$(INIT).c : $(MMAKER_BIN) $(INIT).c : $(GENERATOR_BIN)
@echo "Generate Gem driver" @echo "Generate Gem driver"
$(MMAKER_BIN) $(INIT) > $@ $(GENERATOR_BIN) $(INIT) > $@
$(INIT).o : $(INIT).c $(INIT).o : $(INIT).c
@echo "Build the driver which initializes all gems" @echo "Build the driver which initializes all gems"
...@@ -36,21 +44,22 @@ $(INIT).o : $(INIT).c ...@@ -36,21 +44,22 @@ $(INIT).o : $(INIT).c
# Generator # Generator
$(MMAKER_BIN) : $(MMAKER).o $(GENERATOR_BIN) : $(GENERATOR).o
@echo "Build the generator which creates the driver and Gem Makefile" @echo "Build the generator which creates the driver and Gem Makefile"
$(LL) -o $@ $(CC_FLAGS) $< $(LL) -o $@ $(CC_FLAGS) $<
$(MMAKER).o : $(MMAKER).c $(GENERATOR).o : $(GENERATOR).c
$(CC) $(CC_FLAGS) -MMD -c $< -o $@ $(CC) $(CC_FLAGS) -MMD -c $< -o $@
.PHONY : prepare-test .PHONY : prepare-test
prepare-test : prepare-test : $(GEMDLIB)
$(GEMDLIB) :
@$(MAKE) prepare-test -C g @$(MAKE) prepare-test -C g
# clean driver and all gems # clean driver and all gems
.PHONY : clean .PHONY : clean
clean : $(MMAKER_BIN) clean : GEM_MAKEFILE
@echo "Cleanup Gems" @echo "Cleanup Gems"
$(MMAKER_BIN) makefile > g/Makefile
$(MAKE) clean -C g $(MAKE) clean -C g
-$(RM_F) $(INIT).c *.o *.d $(MMAKER_BIN) g/Makefile -$(RM_F) $(INIT).c *.o *.d $(GENERATOR_BIN) GEM_MAKEFILE
...@@ -102,6 +102,10 @@ for_each_gem (char before[1024], char after[1024], ...@@ -102,6 +102,10 @@ for_each_gem (char before[1024], char after[1024],
puts(complete_line); puts(complete_line);
} }
/*
* Gem Makefile Generator
*
*/
void void
make_gem_makefile() make_gem_makefile()
{ {
...@@ -156,6 +160,10 @@ make_gem_makefile() ...@@ -156,6 +160,10 @@ make_gem_makefile()
for_each_gem("\t@$(MAKE) clean -C ", " $(MAKE_FLAGS)\n", "", "", ""); for_each_gem("\t@$(MAKE) clean -C ", " $(MAKE_FLAGS)\n", "", "", "");
} }
/*
* init_gems.c Generator
*
*/
void void
make_init_gems() make_init_gems()
{ {
......
...@@ -10,6 +10,8 @@ MLIB := $(TARGET).o ...@@ -10,6 +10,8 @@ MLIB := $(TARGET).o
CLIB := $(TARGET).c CLIB := $(TARGET).c
INIT := init_$(TARGET).c INIT := init_$(TARGET).c
DLIB := $(TARGET).ctmp DLIB := $(TARGET).ctmp
GEMDIR := ../mrbgems
GEMDLIB := $(GEMDIR)/g/mrbgemtest.ctmp
RLIB := $(TARGET).rbtmp RLIB := $(TARGET).rbtmp
DEPLIB := $(TARGET).d driver.d DEPLIB := $(TARGET).d driver.d
ASSLIB := $(BASEDIR)/assert.rb ASSLIB := $(BASEDIR)/assert.rb
...@@ -42,14 +44,13 @@ endif ...@@ -42,14 +44,13 @@ endif
# mruby compiler and test driver # mruby compiler and test driver
ifeq ($(OS),Windows_NT) ifeq ($(OS),Windows_NT)
MRBC = ../bin/mrbc.exe MRBC = ../bin/mrbc.exe
EXE := $(TARGET).exe EXE := $(TARGET).exe
else else
MRBC = ../bin/mrbc MRBC = ../bin/mrbc
EXE := $(TARGET) EXE := $(TARGET)
endif endif
############################## ##############################
# generic build targets, rules # generic build targets, rules
...@@ -68,15 +69,18 @@ $(OBJS) : %.o : %.c ...@@ -68,15 +69,18 @@ $(OBJS) : %.o : %.c
$(CC) $(ALL_CFLAGS) -MMD $(INCLUDES) -c $< -o $@ $(CC) $(ALL_CFLAGS) -MMD $(INCLUDES) -c $< -o $@
# Compile C source from merged mruby source # Compile C source from merged mruby source
$(CLIB) : ../mrbgems/g/mrbgemtest.ctmp $(RLIB) $(MRBC) $(INIT) $(CLIB) : $(DLIB) $(GEMDLIB) $(INIT)
$(MRBC) -Bmrbtest_irep -o$(DLIB) $(RLIB); $(CAT) $(INIT) $(DLIB) ../mrbgems/g/mrbgemtest.ctmp > $@ $(CAT) $(INIT) $(DLIB) $(GEMDLIB) > $@
$(DLIB) : $(RLIB) $(MRBC)
$(MRBC) -Bmrbtest_irep -o$@ $(RLIB)
# merge mruby sources # merge mruby sources
$(RLIB) : $(ASSLIB) $(MRBS) $(RLIB) : $(ASSLIB) $(MRBS)
$(CAT) $(ASSLIB) $(MRBS) > $@ $(CAT) $(ASSLIB) $(MRBS) > $@
../mrbgems/g/mrbgemtest.ctmp : $(GEMDLIB) :
@$(MAKE) prepare-test -C ../mrbgems @$(MAKE) prepare-test -C $(GEMDIR)
# clean up # clean up
.PHONY : clean .PHONY : clean
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment