1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 all: $(OUT)/$(PLATFORM).bin Makefile SOURCES $(HEADERS) $(DEPS) %.o: %.c Makefile %.d @echo "CC $<" @$(CC) $(CFLAGS) $(OPTFLAGS) -c $< -o $@ $(OUT)/$(PLATFORM).bin: $(NETCOSM_OBJ) $(HEADERS) Makefile @mkdir -p $(OUT) @echo "LD $@" @$(CC) $(NETCOSM_OBJ) $(CFLAGS) $(LDFLAGS) -o $(OUT)/$(PLATFORM).bin # automatically generate dependency rules %.d : %.c @$(CC) $(CCFLAGS) -MF"$@" -MG -MM -MP -MT"$@" -MT"$(<:.c=.o)" "$<" # -MF write the generated dependency rule to a file # -MG assume missing headers will be generated and don't stop with an error # -MM generate dependency rule for prerequisite, skipping system headers # -MP add phony target for each header to prevent errors when header is missing # -MT add a target to the generated dependency -include $(DEPS) .PHONY: depend depend: $(DEPS) @echo "Dependencies (re)generated." .PHONY: install install: $(OUT)/$(PLATFORM).bin @install $(OUT)/$(PLATFORM).bin /bin/netcosm .PHONY: clean clean: @echo "Cleaning build directory..." @rm -f $(OUT)/$(PLATFORM).bin @rm -f $(NETCOSM_OBJ) .PHONY: depclean depclean: @echo "Cleaning dependencies..." @rm -f $(DEPS) .PHONY: veryclean veryclean: clean depclean .PHONY: help help: @echo "Cleaning targets:" @echo " clean - Remove object files" @echo " depclean - Remove dependency files" @echo " veryclean - Remove object and dependency files" @echo "Build targets:"