CC = gcc-15 CFLAGS = -Wall \ -Wextra \ -Wpedantic \ -std=c23 CXX = g++-15 CXXFLAGS = -Wall \ -Werror \ -Wextra \ -Wpedantic \ -std=c++17 SRC_DIR = src SRCS = $(SRC_DIR)/asm.cpp GENERATED = $(SRC_DIR)/lex.yy.c \ $(SRC_DIR)/parser.tab.c PROG = jas OBJS = $(patsubst %.c, %.o, \ $(patsubst %.cpp, %.o, \ $(patsubst %.cxx, %.o, \ $(patsubst %.cc, %.o, $(SRCS) $(GENERATED))))) $(PROG): $(OBJS) $(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) $(SRC_DIR)/parser.tab.c: $(SRC_DIR)/parser.y bison $(BISONFLAGS) -d $< -o $@ $(SRC_DIR)/lex.yy.c: $(SRC_DIR)/lexer.l $(SRC_DIR)/parser.tab.c flex $(FLEXFLAGS) -o $@ -l $< %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ %.o: %.cpp $(CXX) $(CXXFLAGS) -c $< -o $@ %.o: %.cxx $(CXX) $(CXXFLAGS) -c $< -o $@ %.o: %.cc $(CXX) $(CXXFLAGS) -c $< -o $@ format: $(SRCS) clang-format -i $^ clean: rm -rf $(PROG) $(OBJS) $(GENERATED) .PHONY: all clean format