Changed the creation of rounding.h to use a set of compile-time checks
[rsync/rsync.git] / Makefile.in
index a5bf03f..5323654 100644 (file)
@@ -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: mkrounding.c rsync.h
+       @for r in 0 1 3; do \
+           if $(CC) $(CFLAGS) $(LDFLAGS) -o mkrounding -DEXTRA_ROUNDING=$$r -I. $(srcdir)/mkrounding.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 mkrounding
+       @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)
 
@@ -153,7 +154,7 @@ rsyncd.conf.5: rsyncd.conf.yo
 
 clean: cleantests
        rm -f *~ $(OBJS) $(CHECK_PROGS) $(CHECK_OBJS) $(CHECK_SYMLINKS) \
-               mkrounding mkrounding.h rounding.h
+               mkrounding rounding.h
 
 cleantests:
        rm -rf ./testtmp*