aboutsummaryrefslogtreecommitdiffstats
path: root/makefile
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2017-02-07 19:02:06 +0000
committerYann Herklotz <ymherklotz@gmail.com>2017-02-07 19:02:06 +0000
commit49ff65e37739480fc843b81d3c27a3deb5f9f0bf (patch)
treea43ff33ee6ccc1af33bb0e37b36a40edec0af1f7 /makefile
parent934fc643b33e1af6c13e5658133c93a6a35b7cbd (diff)
downloadCompiler-49ff65e37739480fc843b81d3c27a3deb5f9f0bf.tar.gz
Compiler-49ff65e37739480fc843b81d3c27a3deb5f9f0bf.zip
Started parser but not working yet, finished makefile
Diffstat (limited to 'makefile')
-rw-r--r--makefile45
1 files changed, 40 insertions, 5 deletions
diff --git a/makefile b/makefile
index 4c0b301..9980f95 100644
--- a/makefile
+++ b/makefile
@@ -7,6 +7,12 @@ LEXINC := -Ic_lexer/include
LEXBUILDDIR := c_lexer/build
LEXSRCDIR := c_lexer/src
+PARINC := -Ic_parser/include
+PARBUILDDIR := c_parser/build
+PARSRCDIR := c_parser/src
+
+all : bin/c_lexer bin/c_parser
+
# Make the c_lexer
bin/c_lexer : $(LEXBUILDDIR)/main.o $(LEXBUILDDIR)/c_lexer.o $(LEXBUILDDIR)/c_lexer.yy.o
@echo "Linking..."
@@ -23,14 +29,43 @@ $(LEXBUILDDIR)/%.yy.o : $(LEXSRCDIR)/%.yy.cpp
@echo " mkdir -p $(LEXBUILDDIR)"; mkdir -p $(LEXBUILDDIR)
@echo " $(CC) $(CFLAGS) $(LEXINC) -c -o $@ $<"; $(CC) $(CFLAGS) $(LEXINC) -c -o $@ $<
-$(LEXSRCDIR)/%.yy.cpp : $(LEXSRCDIR)/%.flex
+$(LEXSRCDIR)/c_lexer.yy.cpp : $(LEXSRCDIR)/c_lexer.flex
@echo "Creating flex"
@echo " flex -o $@ $<"; flex -o $@ $<
-clean:
+# Make the c_parser
+bin/c_parser : $(PARBUILDDIR)/parser_main.o $(PARBUILDDIR)/c_parser.tab.o $(PARBUILDDIR)/c_lexer.yy.o
+ @echo "Linking..."
+ @echo " mkdir -p bin"; mkdir -p bin
+ @echo " $(CC) $^ -o bin/c_parser"; $(CC) $^ -o bin/c_parser
+
+$(PARBUILDDIR)/%.o : $(PARSRCDIR)/%.cpp
+ @echo "Building sources..."
+ @echo " mkdir -p $(PARBUILDDIR)"; mkdir -p $(PARBUILDDIR)
+ @echo " $(CC) $(CFLAGS) $(PARINC) -c -o $@ $<"; $(CC) $(CFLAGS) $(PARINC) -c -o $@ $<
+
+$(PARBUILDDIR)/%.yy.o : $(PARSRCDIR)/%.yy.cpp
+ @echo "Building lex..."
+ @echo " mkdir -p $(PARBUILDDIR)"; mkdir -p $(PARBUILDDIR)
+ @echo " $(CC) $(CFLAGS) $(PARINC) -c -o $@ $<"; $(CC) $(CFLAGS) $(PARINC) -c -o $@ $<
+
+$(PARBUILDDIR)/c_parser.tab.o : $(PARSRCDIR)/c_parser.tab.cpp
+ @echo "Building yacc..."
+ @echo " mkdir -p $(PARBUILDDIR)"; mkdir -p $(PARBUILDDIR)
+ @echo " $(CC) $(CFLAGS) $(PARINC) -c -o $@ $<"; $(CC) $(CFLAGS) $(PARINC) -c -o $@ $<
+
+$(PARSRCDIR)/c_lexer.yy.cpp : $(PARSRCDIR)/c_lexer.flex
+ @echo "Creating lex..."
+ @echo " flex -o $@ $<"; flex -o $@ $<
+
+$(PARSRCDIR)/c_parser.tab.cpp $(PARSRCDIR)/c_parser.tab.hpp : $(PARSRCDIR)/c_parser.y
+ @echo "Creating yacc..."
+ @echo " bison -v -d $< -o $(PARSRCDIR)/c_parser.tab.cpp"; bison -v -d $< -o $(PARSRCDIR)/c_parser.tab.cpp
+
+clean :
@echo "Cleaning..."
- @echo " rm -r $(LEXBUILDDIR) bin $(LEXSRCDIR)/c_lexer.yy.cpp"; rm -r $(LEXBUILDDIR) bin $(LEXSRCDIR)/c_lexer.yy.cpp
+ @echo " rm -r $(LEXBUILDDIR) bin $(LEXSRCDIR)/c_lexer.yy.cpp"; rm -r bin $(LEXBUILDDIR) $(LEXSRCDIR)/c_lexer.yy.cpp $(PARBUILDDIR) $(PARSRCDIR)/c_lexer.yy.cpp $(PARSRCDIR)/c_parser.tab.cpp $(PARSRCDIR)/c_parser.tab.hpp
-.PHONY: clean
+.PHONY : clean
-.PRECIOUS: $(LEXSRCDIR)/%.yy.cpp
+.PRECIOUS : $(LEXSRCDIR)/%.yy.cpp