shithub: mc

Download patch

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)