I am cross-compiling rsync 2.6.2 on Linux i386 for Linux ARM. I pass the
following to configure:
LDSHARED=~/buildroot/build_arm_nofpu/staging_dir/bin/arm-linux-uclibc-gcc
CXX=~/buildroot/build_arm_nofpu/staging_dir/bin/arm-linux-uclibc-g++
CC=~/buildroot/build_arm_nofpu/staging_dir/bin/arm-linux-uclibc-gcc
AR=~/buildroot/build_arm_nofpu/staging_dir/bin/arm-linux-uclibc-ar
RANLIB=~/buildroot/build_arm_nofpu/staging_dir/bin/arm-linux-uclibc-ranlib
./configure --host=arm-linux
(1) The build fails on the first file because of rsync.h.
------
#if (SIZEOF_LONG == 8)
#define uint64 unsigned long
#elif (SIZEOF_INT == 8)
#define uint64 unsigned int
#elif HAVE_LONGLONG
#define uint64 unsigned long long
#else
/* As long as it gets... */
#define uint64 unsigned off_t
#endif
------
The last arm of the #if/#else is taken, but "unsigned off_t" causes a
problem the first time it is used.
kiss@debian_sh:~/buildroot/build_arm_nofpu/rsync-2.6.2$ make
~/buildroot/build_arm_nofpu/staging_dir/bin/arm-linux-uclibc-gcc -I. -I.
-g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt -c rsync.c -o rsync.o
In file included from rsync.c:23:
rsync.h:353: warning: no semicolon at end of struct or union
rsync.h:353: error: parse error before "inode"
rsync.h:354: error: parse error before "dev"
rsync.h:354: warning: type defaults to `int' in declaration of `dev'
rsync.h:354: warning: data definition has no type or storage class
make: *** [rsync.o] Error 1
I replace "unsigned off_t" with __uint64_t and all is well.
(2) The file lib/compat.c fails:
~/buildroot/build_arm_nofpu/staging_dir/bin/arm-linux-uclibc-gcc -I. -I.
-g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt -c lib/compat.c -o lib/compat.o
lib/compat.c: In function `sys_gettimeofday':
lib/compat.c:202: error: too few arguments to function `gettimeofday'
make: *** [lib/compat.o] Error 1
So the problem here is that the second arm of the #if/#else/#end if
taken when the first should be.
------
/* some systems don't take the 2nd argument */
int sys_gettimeofday(struct timeval *tv)
{
#if HAVE_GETTIMEOFDAY_TZ
return gettimeofday(tv, NULL);
#else
return gettimeofday(tv);
#endif
}
------
I tried rsync-HEAD-20040921-1616GMT and both problems still exist.
I can make the build work locally, but it seems that the work of an
autoconf wizard is in order. I would be happy to test any patches or
provide any additional information.
-- Richard
--
Richard Kiss
Health Hero Network, Inc.
2570 El Camino Real, Suite 111
Mountain View, CA 94040
650-559-1010
E-mail: kiss@healthhero.com