ref: 056f0df601d2fd1150c29564cb57f53a3e74e3e2
parent: 8865ed9510427f9af64eeeaa18f8209c91aeb456
author: Ori Bernstein <[email protected]>
date: Wed Jun 13 10:56:16 EDT 2012
Rebuild dependent libraries. Also, don't rely on cflags/ldflags.
--- a/8/Makefile
+++ b/8/Makefile
@@ -4,9 +4,7 @@
reduce.o \
regalloc.o \
-CFLAGS+=-I../parse -I../opt
-LDFLAGS+=-L../parse -lparse -L../opt -lopt
-EXTRADEP=../parse/libparse.a ../opt/libopt.a
+LIBDEPS=../parse/libparse.a ../opt/libopt.a
include ../mk/lexyacc.mk
include ../mk/c.mk
--- a/mk/c.mk
+++ b/mk/c.mk
@@ -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,12 +15,19 @@
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)
- $(CC) -o $@ $(OBJ) $(LDFLAGS)
+$(BIN): $(OBJ) $(EXTRADEP) libs
+ $(CC) -o $@ $(OBJ) $(_LIBSRCHPATHS) $(_LIBPATHS)
+libs: $(LIBDEPS)
+ @for i in $(dir $(LIBDEPS)); do (\
+ cd $$i && \
+ $(MAKE) || \
+ exit 1 \
+ ) || exit 1; done
+
subdirs:
@for i in $(SUB); do (\
cd $$i && \
@@ -64,10 +75,10 @@
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)