diff options
author | Yann Herklotz <ymherklotz@gmail.com> | 2017-02-07 16:56:57 +0000 |
---|---|---|
committer | Yann Herklotz <ymherklotz@gmail.com> | 2017-02-07 16:56:57 +0000 |
commit | 76699050049febe4c7eb0199cd0ae9d13fb36b74 (patch) | |
tree | 612fd98f279355c529390f0c7f431ebd1f0dbc27 /makefile | |
parent | 9d94e43d23698f4804060c82482966da9680faa1 (diff) | |
download | Compiler-76699050049febe4c7eb0199cd0ae9d13fb36b74.tar.gz Compiler-76699050049febe4c7eb0199cd0ae9d13fb36b74.zip |
Changing file structure
Diffstat (limited to 'makefile')
-rw-r--r-- | makefile | 36 |
1 files changed, 18 insertions, 18 deletions
@@ -1,31 +1,31 @@ CC := g++ # this is the main compiler -# CC := clange --analyze # and comment out the linker last line +# CC := clang --analyze # and comment out the linker last line CFLAGS := -g -Wall -Wextra -Wpedantic -std=c++14 -INC := -Iinclude -bin/c_lexer: build/main.o build/c_lexer.o build/c_lexer.yy.o - @echo " Linking..." - @mkdir -p bin - @echo " $(CC) $^ -o bin/c_lexer"; $(CC) $^ -o bin/c_lexer +LEXINC := -Ic_lexer/include +LEXSRCDIR := c_lexer/src +LEXBUILDDIR := c_lexer/build +LEXTARGETDIR := bin +LEXTARGET := c_lexer -build/c_lexer.yy.o: src/c_lexer.yy.cpp - @mkdir -p build - @echo " $(CC) $(CFLAGS) $(INC) -c -o $@ $<"; $(CC) $(CFLAGS) $(INC) -c -o $@ $< +LEXSRC := $(shell find $(LEXSRCDIR) -type f -name "*.cpp") +LEXOBJ := $(patsubst $(LEXSRCDIR)/%,$(LEXBUILDDIR)/%,$(LEXSRC:.cpp=.o)) -build/main.o: src/main.cpp - @mkdir -p build - @echo " $(CC) $(CFLAGS) $(INC) -c -o $@ $<"; $(CC) $(CFLAGS) $(INC) -c -o $@ $< +$(LEXTARGETDIR)/$(LEXTARGET) : $(LEXOBJ) + @echo " Linking..." + @mkdir -p $(LEXTARGETDIR) + @echo " $(CC) $^ -o $(LEXTARGETDIR)/$(LEXTARGET)"; $(CC) $^ -o $(LEXTARGETDIR)/$(LEXTARGET) -build/c_lexer.o: src/c_lexer.cpp - @mkdir -p build - @echo " $(CC) $(CFLAGS) $(INC) -c -o $@ $<"; $(CC) $(CFLAGS) $(INC) -c -o $@ $< +$(LEXSRCDIR)/$(LEXTARGET).yy.cpp : $(LEXSRCDIR)/$(LEXTARGET).flex + @echo " flex -o $@ $<"; flex -o $@ $< -src/c_lexer.yy.cpp: src/c_lexer.flex - @echo " flex -o $@ $<"; flex -o $@ $< +$(LEXBUILDDIR)/%.o : $(LEXSRCDIR)/%.cpp + @mkdir -p $(LEXBUILDDIR) + @echo " $(CC) $(CFLAGS) $(LEXINC) -c -o $@ $<"; $(CC) $(CFLAGS) $(LEXINC) -c -o $@ $< clean: @echo " Cleaning..." - @echo " $(RM) -r build bin src/c_lexer.yy.cpp"; $(RM) -r build bin src/c_lexer.yy.cpp + @echo " $(RM) -r $(LEXBUILDDIR) $(LEXTARGETDIR) $(LEXSRCDIR)/$(LEXTARGET).yy.cpp"; $(RM) -r $(LEXBUILDDIR) $(LEXTARGETDIR) $(LEXSRCDIR)/$(LEXTARGET).yy.cpp .PHONY: clean |