diff options
| author | Franklin Wei <git@fwei.tk> | 2016-01-15 19:13:40 -0500 |
|---|---|---|
| committer | Franklin Wei <git@fwei.tk> | 2016-01-15 19:13:40 -0500 |
| commit | 056220075ca575c17899abea7b3a2fb55e64b561 (patch) | |
| tree | c9124b79c5ec4cfd0dda135671df6f99396bbe4f /Makefile | |
| parent | 1a626ab0cbf368b8bb5e41d850f759229d7039cd (diff) | |
| download | netcosm-056220075ca575c17899abea7b3a2fb55e64b561.zip netcosm-056220075ca575c17899abea7b3a2fb55e64b561.tar.gz netcosm-056220075ca575c17899abea7b3a2fb55e64b561.tar.bz2 netcosm-056220075ca575c17899abea7b3a2fb55e64b561.tar.xz | |
revamp makefile, work on objects
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 49 |
1 files changed, 44 insertions, 5 deletions
@@ -11,21 +11,60 @@ LDFLAGS = -lgcrypt -lev HEADERS = src/*.h export/include/*.h -all: $(OUT)/$(PLATFORM).bin Makefile SOURCES $(HEADERS) +DEPS = $(NETCOSM_SRC:.c=.d) + +.PHONY: all +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 $<" + @echo "LD $@" @$(CC) $(NETCOSM_OBJ) $(CFLAGS) $(LDFLAGS) -o $(OUT)/$(PLATFORM).bin +# automatically generate dependency rules + +%.d : %.c + @echo "MKDEP $<" + @$(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) -%.o: %.c Makefile $(HEADERS) - @echo "CC $<" - @$(CC) $(CFLAGS) $(OPTFLAGS) -c $< -o $@ +.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:" |