To build rsync with mgear: 1. Apply this patch to the rsync source tree. 2. Copy or symlink mgear.mk into the rsync source tree. 3. "make" as usual. diff --git a/.cvsignore b/.cvsignore index aa946de..dd2de12 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,3 +1,4 @@ +*.g ID Makefile autom4te*.cache diff --git a/Makefile.in b/Makefile.in index 499de47..8a75160 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,3 +1,11 @@ +# This is Makefile.in from rsync modified by Matt for use with mgear. +# (Of course, config.status copies the above message to Makefile.) +# +# It works for compiling the C files, and I demonstrated that warnings no longer +# disappear from Eclipse, which is pretty cool. However, not everything is +# converted to use mgear yet. +include mgear.mk + # Makefile for rsync. This is processed by configure to produce the final # Makefile @@ -23,8 +31,8 @@ SHELL=/bin/sh VERSION=@VERSION@ -.SUFFIXES: -.SUFFIXES: .c .o +#.SUFFIXES: +#.SUFFIXES: .c .o HEADERS=byteorder.h config.h errcode.h proto.h rsync.h ifuncs.h lib/pool_alloc.h LIBOBJ=lib/wildmatch.o lib/compat.o lib/snprintf.o lib/mdfour.o lib/md5.o \ @@ -53,10 +61,14 @@ CHECK_SYMLINKS = testsuite/chown-fake.test testsuite/devices-fake.test CHECK_OBJS=getgroups.o getfsdev.o t_stub.o t_unsafe.o trimslash.o wildtest.o # note that the -I. is needed to handle config.h when using VPATH -.c.o: -@OBJ_SAVE@ - $(CC) -I. -I$(srcdir) $(CFLAGS) $(CPPFLAGS) -c $< @CC_SHOBJ_FLAG@ -@OBJ_RESTORE@ +## Matt removed @OBJ_SAVE@ and @OBJ_RESTORE@ because they got in the way. +cmd-cc=$(CC) -I. -I$(srcdir) $(CFLAGS) $(CPPFLAGS) -c $< @CC_SHOBJ_FLAG@ +$(call mg-define-rule,%.o,%.c,cmd-cc) + +## Turn off the built-in implicit rule because it sometimes beats the mgear rule +## because the mgear rule depends on a genfile that might not exist yet. +## TODO: Find a better way to handle this. +%.o: %.c all: rsync$(EXEEXT) @@ -71,37 +83,35 @@ install: all install-strip: $(MAKE) INSTALL_STRIP='-s' install -rsync$(EXEEXT): $(OBJS) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) +cmd-exe=$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) + +$(call mg-define-rule,rsync$(EXEEXT),$(OBJS),cmd-exe) $(OBJS): $(HEADERS) flist.o: rounding.h -rounding.h: mkrounding$(EXEEXT) - ./mkrounding$(EXEEXT) >rounding.h +cmd-rounding.h=./mkrounding$(EXEEXT) >$@ +$(call mg-define-rule,rounding.h,mkrounding$(EXEEXT),cmd-rounding.h) -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 +define cmd-mkrounding-exe +sed '1,/^struct file_struct/d; /^}/,$$d' <$(srcdir)/rsync.h >mkrounding.h &&\ +$(CC) $(CFLAGS) $(LDFLAGS) -o $@ -I. $(srcdir)/mkrounding.c &&\ +rm mkrounding.h +endef +$(call mg-define-rule,mkrounding$(EXEEXT),mkrounding.c rsync.h,cmd-mkrounding-exe) -tls$(EXEEXT): $(TLS_OBJ) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(TLS_OBJ) $(LIBS) +$(call mg-define-rule,tls$(EXEEXT),$(TLS_OBJ),cmd-exe) -getgroups$(EXEEXT): getgroups.o - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ getgroups.o $(LIBS) +$(call mg-define-rule,getgroups$(EXEEXT),getgroups.o,cmd-exe) -getfsdev$(EXEEXT): getfsdev.o - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ getfsdev.o $(LIBS) +$(call mg-define-rule,getfsdev$(EXEEXT),getfsdev.o,cmd-exe) TRIMSLASH_OBJ = trimslash.o syscall.o lib/compat.o lib/snprintf.o -trimslash$(EXEEXT): $(TRIMSLASH_OBJ) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(TRIMSLASH_OBJ) $(LIBS) +$(call mg-define-rule,trimslash$(EXEEXT),$(TRIMSLASH_OBJ),cmd-exe) T_UNSAFE_OBJ = t_unsafe.o syscall.o util.o t_stub.o lib/compat.o lib/snprintf.o -t_unsafe$(EXEEXT): $(T_UNSAFE_OBJ) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(T_UNSAFE_OBJ) $(LIBS) +$(call mg-define-rule,t_unsafe$(EXEEXT),$(T_UNSAFE_OBJ),cmd-exe) gen: cd $(srcdir) && $(MAKE) -f prepare-source.mak gen @@ -112,9 +122,11 @@ man: proto: cd $(srcdir) && $(MAKE) -f prepare-source.mak proto.h +## Let mgear do the cleaning. clean: cleantests - rm -f *~ $(OBJS) $(TLS_OBJ) $(CHECK_PROGS) $(CHECK_OBJS) $(CHECK_SYMLINKS) \ - mkrounding mkrounding.h rounding.h +# rm -f *~ $(OBJS) $(TLS_OBJ) $(CHECK_PROGS) $(CHECK_OBJS) $(CHECK_SYMLINKS) \ +# mkrounding mkrounding.h rounding.h + $(call mg-clean-cmd,.) cleantests: rm -rf ./testtmp* @@ -160,9 +172,11 @@ check: all $(CHECK_PROGS) $(CHECK_SYMLINKS) check29: all $(CHECK_PROGS) $(CHECK_SYMLINKS) rsync_bin=`pwd`/rsync$(EXEEXT) $(srcdir)/runtests.sh --protocol=29 + wildtest.o: wildtest.c lib/wildmatch.c rsync.h -wildtest$(EXEEXT): wildtest.o lib/compat.o lib/snprintf.o @BUILD_POPT@ - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ wildtest.o lib/compat.o lib/snprintf.o @BUILD_POPT@ $(LIBS) +$(call mg-define-rule,wildtest$(EXEEXT),wildtest.o lib/compat.o lib/snprintf.o @BUILD_POPT@,cmd-exe) + +### Matt stopped here. testsuite/chown-fake.test: ln -s chown.test $(srcdir)/testsuite/chown-fake.test diff --git a/doc/.cvsignore b/doc/.cvsignore index 82b2f29..40fcb95 100644 --- a/doc/.cvsignore +++ b/doc/.cvsignore @@ -1,2 +1,3 @@ +*.g rsync.pdf rsync.ps diff --git a/lib/.cvsignore b/lib/.cvsignore index 421376d..5f68c87 100644 --- a/lib/.cvsignore +++ b/lib/.cvsignore @@ -1 +1,2 @@ +*.g dummy diff --git a/popt/.cvsignore b/popt/.cvsignore index 337b0d0..391f286 100644 --- a/popt/.cvsignore +++ b/popt/.cvsignore @@ -1,3 +1,4 @@ +*.g ID Makefile config.cache diff --git a/zlib/.cvsignore b/zlib/.cvsignore index 421376d..5f68c87 100644 --- a/zlib/.cvsignore +++ b/zlib/.cvsignore @@ -1 +1,2 @@ +*.g dummy