Makefile (861B)
1 .PHONY: all build clean dist distclean install uninstall 2 3 include config.mk 4 5 TARGET := browse 6 7 SOURCES := browse.c 8 OBJECTS := $(SOURCES:%=$(OBJ)/%.o) 9 OBJDEPS := $(OBJECTS:%.o=%.d) 10 11 ARCHIVE := $(TARGET).tar 12 13 AUX := Makefile config.mk config.def.h browse.h browse.c 14 15 all: build 16 17 build: $(TARGET) 18 19 clean: 20 rm -rf $(OBJ) $(TARGET) 21 22 dist: build $(AUX) 23 tar cf $(ARCHIVE) $(TARGET) $(AUX) 24 25 distclean: clean 26 rm -rf $(ARCHIVE) config.h 27 28 install: build 29 mkdir -p $(DESTDIR)$(PREFIX)/bin 30 install -m 0755 $(TARGET) $(DESTDIR)$(PREFIX)/bin/$(TARGET) 31 32 uninstall: 33 rm -f $(DESTDIR)$(PREFIX)/bin/$(TARGET) 34 35 config.h: config.def.h 36 cp $< $@ 37 38 $(TARGET): $(OBJECTS) | $(BIN) 39 $(CC) -o $@ $^ $(LDFLAGS) 40 41 $(OBJECTS): config.h 42 43 $(OBJECTS): $(OBJ)/%.c.o: %.c | $(OBJ) 44 @mkdir -p $(dir $@) 45 $(CC) -MMD -o $@ -c $< $(CFLAGS) $(CPPFLAGS) 46 47 -include $(OBJDEPS) 48 49 $(OBJ): 50 mkdir $@