1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- # building depends on debian packages: "g++" "llvm-dev" "bison" "flex" (and "make", duh)
- # running depends on "llvm" if not statically linked
- CXX := clang++
- LLVMCONFIG := llvm-config-5.0
- INCLUDEDIRS := -I$(shell $(LLVMCONFIG) --includedir):. -I.. -Isem/
- CXXFLAGS := -std=c++17 $(INCLUDEDIRS) -w # -Wall -Wextra
- ifdef STATIC
- LDFLAGS := $(shell $(LLVMCONFIG) --link-static --ldflags --system-libs --libs all) -static -dead-strip -s
- else
- LDFLAGS := $(shell $(LLVMCONFIG) --ldflags --system-libs --libs all)
- endif
- YACC := bison
- YACCFLAGS := -d
- LEX := flex
- LEXFLAGS := "-8"
- #OBJECTS := $(patsubst %.cpp, %.o, $(wildcard *.cpp */*.cpp))
- OBJECTS := $(patsubst %.cpp, %.o, $(wildcard *.cpp)) \
- parser.o lexer.o
- LIBRARIES :=
- EXECUTABLE := qlow
- .PHONY: all
- all: $(EXECUTABLE)
- release: CXXFLAGS += -O3 -flto
- release: LDFLAGS += -O3 -flto
- release: all
- debug: CXXFLAGS += -DDEBUGGING -g
- debug: all
- $(EXECUTABLE): $(OBJECTS)
- $(CXX) $^ $(LDFLAGS) -o $@
- parser.o: parser.cpp
- $(CXX) -c -o $@ $< $(CXXFLAGS) -fno-strict-aliasing
- %.o: %.cpp
- $(CXX) -c -o $@ $< $(CXXFLAGS)
- %.cpp: %.y
- $(YACC) -o $@ $< $(YACCFLAGS)
- %.cpp: %.l parser.cpp
- $(LEX) $(LEXFLAGS) -o $@ $<
- .PHONY: clean
- clean:
- rm -f $(EXECUTABLE) $(OBJECTS) parser.cpp parser.hpp lexer.cpp
|