X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=Makefile.in;h=e6dbd572fb53a0f854f2e43b084406fecdc2c8d1;hb=23e3b1e6652bac4a003a7eb1e074bdaf7ebb4900;hp=c8168bbe4cb1a0988a3d73bb8b562ac8b16db921;hpb=d0f47327f81a278d6adb3d0a6c235ea715798d01;p=thirdparty%2Fbird.git diff --git a/Makefile.in b/Makefile.in index c8168bbe4..e6dbd572f 100644 --- a/Makefile.in +++ b/Makefile.in @@ -9,6 +9,8 @@ MAKEFLAGS += -r CPPFLAGS=-I$(objdir) -I$(srcdir) @CPPFLAGS@ CFLAGS=$(CPPFLAGS) @CFLAGS@ LDFLAGS=@LDFLAGS@ +M4FLAGS=@M4FLAGS@ +BISONFLAGS=@BISONFLAGS@ LIBS=@LIBS@ DAEMON_LIBS=@DAEMON_LIBS@ CLIENT_LIBS=@CLIENT_LIBS@ @@ -21,11 +23,6 @@ INSTALL=@INSTALL@ INSTALL_PROGRAM=@INSTALL_PROGRAM@ INSTALL_DATA=@INSTALL_DATA@ -git-label:=$(strip $(shell git describe --always --dirty=-x 2>/dev/null)) -ifneq ($(git-label),) - CFLAGS += -DGIT_LABEL="$(git-label)" -endif - client=$(addprefix $(exedir)/,@CLIENT@) daemon=$(exedir)/bird protocols=@protocols@ @@ -36,12 +33,18 @@ bindir=@bindir@ sbindir=@sbindir@ sysconfdir=@sysconfdir@ localstatedir=@localstatedir@ +runstatedir=@runstatedir@ docdir=@prefix@/doc srcdir := @srcdir@ objdir := @objdir@ exedir := @exedir@ +git-label:=$(strip $(shell cd $(srcdir) && [ "$$(git rev-parse --show-toplevel)" = "$$(readlink -f .)" ] && git describe --always --dirty=-x 2>/dev/null)) +ifneq ($(git-label),) + CFLAGS += -DGIT_LABEL="$(git-label)" +endif + ifeq ($(objdir),.) objdir := $(realpath .) endif @@ -54,11 +57,16 @@ else Q:= endif +ifneq ($(COLOR),) + CFLAGS += -fdiagnostics-color=always +endif + # Meta rules docgoals := docs userdocs progdocs testgoals := check test tests tests_run cleangoals := clean distclean testsclean -.PHONY: all daemon cli $(docgoals) $(testgoals) $(cleangoals) tags cscope +.PHONY: all daemon cli $(docgoals) $(testgoals) $(cleangoals) tags cscope prepare + all: daemon cli daemon: $(daemon) @@ -69,6 +77,8 @@ $(daemon): LIBS += $(DAEMON_LIBS) # Include directories dirs := client conf doc filter lib nest test $(addprefix proto/,$(protocols)) @sysdep_dirs@ +# conf/Makefile declarations needed for all other modules +conf-lex-targets := $(addprefix $(objdir)/conf/,cf-lex.o) conf-y-targets := $(addprefix $(objdir)/conf/,cf-parse.y keywords.h commands.h) cf-local = $(conf-y-targets): $(s)config.Y @@ -92,30 +102,55 @@ endef clean = $(eval $(call clean_in,$(1))) +# Include main Makefiles of the directories include $(addsuffix /Makefile,$(addprefix $(srcdir)/,$(dirs))) # Generic rules - -$(objdir)/%.o: $(srcdir)/%.c $(objdir)/.dir-stamp $(objdir)/sysdep/paths.h +# Object file rules +$(objdir)/%.o: $(srcdir)/%.c | prepare $(E)echo CC -o $@ -c $< $(Q)$(CC) $(CFLAGS) -MMD -MP -o $@ -c $< -$(objdir)/%.o: $(objdir)/%.c $(objdir)/.dir-stamp $(objdir)/sysdep/paths.h +$(objdir)/%.o: $(objdir)/%.c | prepare $(E)echo CC -o $@ -c $< $(Q)$(CC) $(CFLAGS) -MMD -MP -o $@ -c $< +# Debug: Preprocessed source rules +$(objdir)/%.E: $(srcdir)/%.c | prepare + $(E)echo CC -o $@ -E $< + $(Q)$(CC) $(CFLAGS) -MMD -MP -o $@ -E $< + +$(objdir)/%.E: $(objdir)/%.c | prepare + $(E)echo CC -o $@ -E $< + $(Q)$(CC) $(CFLAGS) -MMD -MP -o $@ -E $< -$(objdir)/%.S: $(srcdir)/%.c $(objdir)/.dir-stamp $(objdir)/sysdep/paths.h +# Debug: Assembler object rules +$(objdir)/%.S: $(srcdir)/%.c | prepare $(E)echo CC -o $@ -S $< $(Q)$(CC) $(CFLAGS) -MMD -MP -o $@ -S $< -$(objdir)/%.S: $(objdir)/%.c $(objdir)/.dir-stamp $(objdir)/sysdep/paths.h +$(objdir)/%.S: $(objdir)/%.c | prepare $(E)echo CC -o $@ -S $< $(Q)$(CC) $(CFLAGS) -MMD -MP -o $@ -S $< +# Finally include the computed dependencies: +DEPS = $(shell find $(objdir) -name '*.d') +# ## if there is at least one non-clean goal +ifneq ($(filter-out $(cleangoals),$(MAKECMDGOALS)),) +-include $(DEPS) +endif + +# ## if the implicit goal is called +ifeq ($(MAKECMDGOALS),) +-include $(DEPS) +endif -$(objdir)/.dir-stamp: +# Rule for pre-generating all generated includables +# before compiling any C file +prepare: $(objdir)/sysdep/paths.h | $(objdir)/.dir-stamp + +$(objdir)/.dir-stamp: Makefile $(E)echo MKDIR -p $(addprefix $(objdir)/,$(dirs) doc) $(Q)mkdir -p $(addprefix $(objdir)/,$(dirs) doc) $(Q)touch $@ @@ -134,7 +169,7 @@ $(objdir)/sysdep/paths.h: Makefile tests_targets_ok = $(addsuffix .ok,$(tests_targets)) -$(tests_targets): %: %.o $(tests_objs) +$(tests_targets): %: %.o $(tests_objs) | prepare $(E)echo LD $(LDFLAGS) -o $@ $< "..." $(LIBS) $(Q)$(CC) $(LDFLAGS) -o $@ $^ $(LIBS) @@ -149,16 +184,6 @@ check: tests tests_run tests: $(tests_targets) tests_run: $(tests_targets_ok) -# Finally include the computed dependencies - -ifneq ($(filter-out $(cleangoals),$(MAKECMDGOALS)),) --include $(shell find $(objdir) -name "*.d") -endif - -ifeq ($(MAKECMDGOALS),) --include $(shell find $(objdir) -name "*.d") -endif - tags: cd $(srcdir) ; etags -lc `find $(dirs) -name *.[chY]` @@ -168,12 +193,10 @@ cscope: # Install install: all - $(INSTALL) -d $(DESTDIR)/$(sbindir) $(DESTDIR)/$(sysconfdir) $(DESTDIR)/@runtimedir@ - $(INSTALL_PROGRAM) $(exedir)/bird $(DESTDIR)/$(sbindir)/bird - $(INSTALL_PROGRAM) $(exedir)/birdcl $(DESTDIR)/$(sbindir)/birdcl - if test -n "@CLIENT@" ; then \ - $(INSTALL_PROGRAM) $(exedir)/birdc $(DESTDIR)/$(sbindir)/birdc ; \ - fi + $(INSTALL) -d $(DESTDIR)/$(sbindir) $(DESTDIR)/$(sysconfdir) $(DESTDIR)/$(runstatedir) + for BIN in bird @CLIENT@ ; do \ + $(INSTALL_PROGRAM) $(exedir)/$$BIN $(DESTDIR)/$(sbindir)/$$BIN ; \ + done if ! test -f $(DESTDIR)/@CONFIG_FILE@ ; then \ $(INSTALL_DATA) $(srcdir)/doc/bird.conf.example $(DESTDIR)/@CONFIG_FILE@ ; \ else \