diff options
Diffstat (limited to 'mk/c.mk')
-rw-r--r-- | mk/c.mk | 31 |
1 files changed, 21 insertions, 10 deletions
@@ -1,9 +1,13 @@ -DEPSDIR = .deps -DEPS=$(addprefix $(DEPSDIR)/, $(OBJ:.o=.d)) +_DEPSDIR = .deps +_DEPS=$(addprefix $(_DEPSDIR)/, $(OBJ:.o=.d)) + +_LIBSRCHPATHS=$(addprefix -L, $(dir $(LIBDEPS))) +_LIBINCPATHS=$(addprefix -I, $(dir $(LIBDEPS))) +_LIBPATHS=$(addprefix -l, $(patsubst lib%.a,%,$(notdir $(LIBDEPS)))) CFLAGS += -Wall -Werror -Wextra -Wno-unused-parameter -Wno-missing-field-initializers CFLAGS += -g -CFLAGS += -MMD -MP -MF ${DEPSDIR}/$(subst /,-,$*).d +CFLAGS += -MMD -MP -MF ${_DEPSDIR}/$(subst /,-,$*).d .PHONY: clean clean-gen clean-bin clean-obj clean-misc clean-backups .PHONY: all @@ -11,11 +15,18 @@ CFLAGS += -MMD -MP -MF ${DEPSDIR}/$(subst /,-,$*).d all: subdirs $(BIN) $(LIB) $(EXTRA) install: subdirs-install install-bin install-lib install-hdr install-pc -$(LIB): $(OBJ) - $(AR) -rcs $@ $^ +$(LIB): $(OBJ) libs + $(AR) -rcs $@ $(OBJ) + +$(BIN): $(OBJ) $(EXTRADEP) libs + $(CC) -o $@ $(OBJ) $(_LIBSRCHPATHS) $(_LIBPATHS) -$(BIN): $(OBJ) $(EXTRADEP) - $(CC) -o $@ $(OBJ) $(LDFLAGS) +libs: $(LIBDEPS) + @for i in $(dir $(LIBDEPS)); do (\ + cd $$i && \ + $(MAKE) || \ + exit 1 \ + ) || exit 1; done subdirs: @for i in $(SUB); do (\ @@ -64,10 +75,10 @@ clean-backups: find ./ -name *.bak -exec rm -f {} \; %.o: %.c .deps - $(CC) -c $(CFLAGS) $< + $(CC) -c $(CFLAGS) $(_LIBINCPATHS) $< .deps: - mkdir -p $(DEPSDIR) + mkdir -p $(_DEPSDIR) --include $(DEPS) +-include $(_DEPS) |