summaryrefslogtreecommitdiffhomepage
path: root/tools/mrbc/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'tools/mrbc/Makefile')
-rw-r--r--tools/mrbc/Makefile67
1 files changed, 67 insertions, 0 deletions
diff --git a/tools/mrbc/Makefile b/tools/mrbc/Makefile
new file mode 100644
index 000000000..9ecda4a59
--- /dev/null
+++ b/tools/mrbc/Makefile
@@ -0,0 +1,67 @@
+# makefile discription.
+# basic build file for mruby-compiler
+
+# project-specific macros
+# extension of the executable-file is modifiable(.exe .out ...)
+BASEDIR := ../../src
+TARGET := ../../bin/mrbc
+LIBR := ../../lib/libmruby_core.a
+ifeq ($(OS),Windows_NT)
+EXE := $(TARGET).exe
+else
+EXE := $(TARGET)
+endif
+EXCEPT1 :=
+OBJ0 := $(patsubst %.c,%.o,$(wildcard $(BASEDIR)/../tools/mrbc/*.c))
+#OBJ1 := $(patsubst %.c,%.o,$(filter-out $(EXCEPT1),$(wildcard $(BASEDIR)/*.c)))
+#OBJ2 := $(patsubst %.c,%.o,$(wildcard $(BASEDIR)/ext/regex/*.c))
+#OBJ3 := $(patsubst %.c,%.o,$(wildcard $(BASEDIR)/ext/enc/*.c))
+OBJS := $(OBJ0)
+
+# libraries, includes
+LIBS = -lm
+INCLUDES = -I$(BASEDIR) -I$(BASEDIR)/../include
+
+# compiler, linker (gcc)
+CC = gcc
+LL = gcc
+YACC = bison
+DEBUG_MODE = 1
+ifeq ($(DEBUG_MODE),1)
+CFLAGS = -g -O3
+else
+CFLAGS = -O3
+endif
+ALL_CFLAGS = -Wall -Werror-implicit-function-declaration $(CFLAGS)
+ifeq ($(OS),Windows_NT)
+ MAKE_FLAGS = CC=$(CC) LL=$(LL) ALL_CFLAGS="$(ALL_CFLAGS)"
+else
+ MAKE_FLAGS = CC='$(CC)' LL='$(LL)' ALL_CFLAGS='$(ALL_CFLAGS)'
+endif
+
+##############################
+# generic build targets, rules
+
+.PHONY : all
+all : $(EXE)
+
+# executable constructed using linker from object files
+$(EXE) : $(OBJS) $(LIBR)
+ $(LL) -o $@ $(OBJS) $(LIBR) $(LIBS)
+
+-include $(OBJS:.o=.d)
+
+# objects compiled from source
+$(OBJS) : %.o : %.c
+ $(CC) $(ALL_CFLAGS) -MMD $(INCLUDES) -c $< -o $@
+
+# C library compile
+$(LIBR) :
+ @$(MAKE) -C $(BASEDIR) $(MAKE_FLAGS)
+
+# clean up
+.PHONY : clean
+clean :
+ @echo "make: removing targets, objects and depend files of `pwd`"
+ -rm -f $(EXE) $(OBJS)
+ -rm -f $(OBJS:.o=.d)