CC = gcc-15 SRC_DIR = src SRCS = $(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))))) $(PROG): $(OBJS) $(CC) $(CFLAGS) -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 $@ clean: rm -rf $(PROG) $(OBJS) $(SRC_DIR)/lex.yy.c $(SRC_DIR)/parser.tab.c $(SRC_DIR)/parser.tab.h .PHONY: all clean