Rebuild the Makefile when it is not up-to-date.
[rsync/rsync.git] / Makefile.in
index a5bf03f..4716aba 100644 (file)
@@ -59,7 +59,7 @@ CHECK_OBJS=tls.o getgroups.o getfsdev.o t_stub.o t_unsafe.o trimslash.o wildtest
        $(CC) -I. -I$(srcdir) $(CFLAGS) $(CPPFLAGS) -c $< @CC_SHOBJ_FLAG@
 @OBJ_RESTORE@
 
-all: conf_stop rsync$(EXEEXT) @MAKE_MAN@
+all: conf_stop make_stop rsync$(EXEEXT) @MAKE_MAN@
 
 install: all
        -mkdir -p ${DESTDIR}${bindir}
@@ -80,21 +80,22 @@ $(CHECK_OBJS): $(HEADERS)
 
 flist.o: rounding.h
 
-rounding.h: mkrounding$(EXEEXT)
-       @if test x@cross_compiling@ = xno; then \
-           ./mkrounding$(EXEEXT) >rounding.h; \
-       else \
-           echo "Copy the mkrounding$(EXEEXT) command to the target machine and run it like this:"; \
-           echo "    ./mkrounding$(EXEEXT) >rounding.h"; \
-           echo "Then copy the resulting rounding.h file to this build machine and rerun \"make\"."; \
+rounding.h: rounding.c rsync.h
+       @for r in 0 1 3; do \
+           if $(CC) $(CFLAGS) $(LDFLAGS) -o rounding -DEXTRA_ROUNDING=$$r -I. $(srcdir)/rounding.c >/dev/null 2>&1; then \
+               echo "#define EXTRA_ROUNDING $$r" >rounding.h; \
+               if test -f "$$HOME/build_farm/build_test.fns"; then \
+                   echo "EXTRA_ROUNDING is $$r" >&2; \
+               fi; \
+               break; \
+           fi; \
+       done
+       @rm -f rounding
+       @if test -f rounding.h; then : ; else \
+           echo "Failed to create rounding.h!"; \
            exit 1; \
        fi
 
-mkrounding$(EXEEXT): mkrounding.c rsync.h
-       @sed '1,/^struct file_struct/d; /^}/,$$d' <$(srcdir)/rsync.h >mkrounding.h
-       $(CC) $(CFLAGS) $(LDFLAGS) -o $@ -I. $(srcdir)/mkrounding.c
-       @rm mkrounding.h
-
 tls$(EXEEXT): $(TLS_OBJ)
        $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(TLS_OBJ) $(LIBS)
 
@@ -133,6 +134,13 @@ reconfigure:
        ./config.status --recheck
        ./config.status
 
+make_stop: Makefile
+
+Makefile: Makefile.in config.status
+       @./config.status
+       @echo "Makefile updated -- rerun your make command."
+       @exit 1
+
 proto: proto.h-tstamp
 
 proto.h: proto.h-tstamp
@@ -153,7 +161,7 @@ rsyncd.conf.5: rsyncd.conf.yo
 
 clean: cleantests
        rm -f *~ $(OBJS) $(CHECK_PROGS) $(CHECK_OBJS) $(CHECK_SYMLINKS) \
-               mkrounding mkrounding.h rounding.h
+               rounding rounding.h
 
 cleantests:
        rm -rf ./testtmp*