Update materials for building rsync with mgear.
[mgear/mgear.git] / experiments / rsync-mgear.diff
CommitLineData
56467abb
MM
1To build rsync with mgear:
21. Apply this patch to the rsync source tree.
32. Copy or symlink mgear.mk into the rsync source tree.
43. "make" as usual.
5
6diff --git a/.cvsignore b/.cvsignore
7index aa946de..dd2de12 100644
8--- a/.cvsignore
9+++ b/.cvsignore
10@@ -1,3 +1,4 @@
11+*.g
12 ID
13 Makefile
14 autom4te*.cache
15diff --git a/Makefile.in b/Makefile.in
16index 499de47..8a75160 100644
17--- a/Makefile.in
18+++ b/Makefile.in
19@@ -1,3 +1,11 @@
20+# This is Makefile.in from rsync modified by Matt for use with mgear.
21+# (Of course, config.status copies the above message to Makefile.)
22+#
23+# It works for compiling the C files, and I demonstrated that warnings no longer
24+# disappear from Eclipse, which is pretty cool. However, not everything is
25+# converted to use mgear yet.
26+include mgear.mk
27+
28 # Makefile for rsync. This is processed by configure to produce the final
29 # Makefile
30
31@@ -23,8 +31,8 @@ SHELL=/bin/sh
32
33 VERSION=@VERSION@
34
35-.SUFFIXES:
36-.SUFFIXES: .c .o
37+#.SUFFIXES:
38+#.SUFFIXES: .c .o
39
40 HEADERS=byteorder.h config.h errcode.h proto.h rsync.h ifuncs.h lib/pool_alloc.h
41 LIBOBJ=lib/wildmatch.o lib/compat.o lib/snprintf.o lib/mdfour.o lib/md5.o \
42@@ -53,10 +61,14 @@ CHECK_SYMLINKS = testsuite/chown-fake.test testsuite/devices-fake.test
43 CHECK_OBJS=getgroups.o getfsdev.o t_stub.o t_unsafe.o trimslash.o wildtest.o
44
45 # note that the -I. is needed to handle config.h when using VPATH
46-.c.o:
47-@OBJ_SAVE@
48- $(CC) -I. -I$(srcdir) $(CFLAGS) $(CPPFLAGS) -c $< @CC_SHOBJ_FLAG@
49-@OBJ_RESTORE@
50+## Matt removed @OBJ_SAVE@ and @OBJ_RESTORE@ because they got in the way.
51+cmd-cc=$(CC) -I. -I$(srcdir) $(CFLAGS) $(CPPFLAGS) -c $< @CC_SHOBJ_FLAG@
52+$(call mg-define-rule,%.o,%.c,cmd-cc)
53+
54+## Turn off the built-in implicit rule because it sometimes beats the mgear rule
55+## because the mgear rule depends on a genfile that might not exist yet.
56+## TODO: Find a better way to handle this.
57+%.o: %.c
58
59 all: rsync$(EXEEXT)
60
61@@ -71,37 +83,35 @@ install: all
62 install-strip:
63 $(MAKE) INSTALL_STRIP='-s' install
64
65-rsync$(EXEEXT): $(OBJS)
66- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
67+cmd-exe=$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
68+
69+$(call mg-define-rule,rsync$(EXEEXT),$(OBJS),cmd-exe)
70
71 $(OBJS): $(HEADERS)
72
73 flist.o: rounding.h
74
75-rounding.h: mkrounding$(EXEEXT)
76- ./mkrounding$(EXEEXT) >rounding.h
77+cmd-rounding.h=./mkrounding$(EXEEXT) >$@
78+$(call mg-define-rule,rounding.h,mkrounding$(EXEEXT),cmd-rounding.h)
79
80-mkrounding$(EXEEXT): mkrounding.c rsync.h
81- @sed '1,/^struct file_struct/d; /^}/,$$d' <$(srcdir)/rsync.h >mkrounding.h
82- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ -I. $(srcdir)/mkrounding.c
83- @rm mkrounding.h
84+define cmd-mkrounding-exe
85+sed '1,/^struct file_struct/d; /^}/,$$d' <$(srcdir)/rsync.h >mkrounding.h &&\
86+$(CC) $(CFLAGS) $(LDFLAGS) -o $@ -I. $(srcdir)/mkrounding.c &&\
87+rm mkrounding.h
88+endef
89+$(call mg-define-rule,mkrounding$(EXEEXT),mkrounding.c rsync.h,cmd-mkrounding-exe)
90
91-tls$(EXEEXT): $(TLS_OBJ)
92- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(TLS_OBJ) $(LIBS)
93+$(call mg-define-rule,tls$(EXEEXT),$(TLS_OBJ),cmd-exe)
94
95-getgroups$(EXEEXT): getgroups.o
96- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ getgroups.o $(LIBS)
97+$(call mg-define-rule,getgroups$(EXEEXT),getgroups.o,cmd-exe)
98
99-getfsdev$(EXEEXT): getfsdev.o
100- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ getfsdev.o $(LIBS)
101+$(call mg-define-rule,getfsdev$(EXEEXT),getfsdev.o,cmd-exe)
102
103 TRIMSLASH_OBJ = trimslash.o syscall.o lib/compat.o lib/snprintf.o
104-trimslash$(EXEEXT): $(TRIMSLASH_OBJ)
105- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(TRIMSLASH_OBJ) $(LIBS)
106+$(call mg-define-rule,trimslash$(EXEEXT),$(TRIMSLASH_OBJ),cmd-exe)
107
108 T_UNSAFE_OBJ = t_unsafe.o syscall.o util.o t_stub.o lib/compat.o lib/snprintf.o
109-t_unsafe$(EXEEXT): $(T_UNSAFE_OBJ)
110- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(T_UNSAFE_OBJ) $(LIBS)
111+$(call mg-define-rule,t_unsafe$(EXEEXT),$(T_UNSAFE_OBJ),cmd-exe)
112
113 gen:
114 cd $(srcdir) && $(MAKE) -f prepare-source.mak gen
115@@ -112,9 +122,11 @@ man:
116 proto:
117 cd $(srcdir) && $(MAKE) -f prepare-source.mak proto.h
118
119+## Let mgear do the cleaning.
120 clean: cleantests
121- rm -f *~ $(OBJS) $(TLS_OBJ) $(CHECK_PROGS) $(CHECK_OBJS) $(CHECK_SYMLINKS) \
122- mkrounding mkrounding.h rounding.h
123+# rm -f *~ $(OBJS) $(TLS_OBJ) $(CHECK_PROGS) $(CHECK_OBJS) $(CHECK_SYMLINKS) \
124+# mkrounding mkrounding.h rounding.h
125+ $(call mg-clean-cmd,.)
126
127 cleantests:
128 rm -rf ./testtmp*
129@@ -160,9 +172,11 @@ check: all $(CHECK_PROGS) $(CHECK_SYMLINKS)
130 check29: all $(CHECK_PROGS) $(CHECK_SYMLINKS)
131 rsync_bin=`pwd`/rsync$(EXEEXT) $(srcdir)/runtests.sh --protocol=29
132
133+
134 wildtest.o: wildtest.c lib/wildmatch.c rsync.h
135-wildtest$(EXEEXT): wildtest.o lib/compat.o lib/snprintf.o @BUILD_POPT@
136- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ wildtest.o lib/compat.o lib/snprintf.o @BUILD_POPT@ $(LIBS)
137+$(call mg-define-rule,wildtest$(EXEEXT),wildtest.o lib/compat.o lib/snprintf.o @BUILD_POPT@,cmd-exe)
138+
139+### Matt stopped here.
140
141 testsuite/chown-fake.test:
142 ln -s chown.test $(srcdir)/testsuite/chown-fake.test
143diff --git a/doc/.cvsignore b/doc/.cvsignore
144index 82b2f29..40fcb95 100644
145--- a/doc/.cvsignore
146+++ b/doc/.cvsignore
147@@ -1,2 +1,3 @@
148+*.g
149 rsync.pdf
150 rsync.ps
151diff --git a/lib/.cvsignore b/lib/.cvsignore
152index 421376d..5f68c87 100644
153--- a/lib/.cvsignore
154+++ b/lib/.cvsignore
155@@ -1 +1,2 @@
156+*.g
157 dummy
158diff --git a/popt/.cvsignore b/popt/.cvsignore
159index 337b0d0..391f286 100644
160--- a/popt/.cvsignore
161+++ b/popt/.cvsignore
162@@ -1,3 +1,4 @@
163+*.g
164 ID
165 Makefile
166 config.cache
167diff --git a/zlib/.cvsignore b/zlib/.cvsignore
168index 421376d..5f68c87 100644
169--- a/zlib/.cvsignore
170+++ b/zlib/.cvsignore
171@@ -1 +1,2 @@
172+*.g
173 dummy