Hi, Here are some tiny patch to fix cross-compilation of squid 3.0.13. Here host is x86_64-pc-linux-gnu and dest is i586-geode-linux-uclibc.
There is a first issue with cf_gen. cf_gen is generated with TARGETCXX
and should be build with HOSTCXX as it is used on runtime compilation.
squid-3.0.13-BJA-cf_gen-HOSTCXX.diff :
libtool: link: ( cd ".libs" && rm -f "libauth.la" && ln -s "../libauth.la"
"libauth.la" )
/bin/sh ../libtool --tag=CXX --mode=link i586-geode-linux-uclibc-g++ -Wall
-Wpointer-arith -Wwrite-strings -fhuge-objects -D_REENTRANT -Os -pipe
-march=k6-2 -fomit-frame-pointer -I/usr/i586-geode-linux-uclibc/usr/include/
-I/usr/i586-geode-linux-uclibc/include/ -o cf_gen cf_gen.o debug.o time.o
globals.o libsquid.la libauth.la -L../lib -lmiscutil -lpthread -lm -lresolv
-lnsl -ldl
libtool: link: i586-geode-linux-uclibc-g++ -Wall -Wpointer-arith
-Wwrite-strings -fhuge-objects -D_REENTRANT -Os -pipe -march=k6-2
-fomit-frame-pointer -I/usr/i586-geode-linux-uclibc/usr/include/
-I/usr/i586-geode-linux-uclibc/include/ -o cf_gen cf_gen.o debug.o time.o
globals.o ./.libs/libsquid.a -L/usr/i586-geode-linux-uclibc/bin
./.libs/libauth.a /usr/lib/gcc/i586-geode-linux-uclibc/3.4.6/libstdc++.so
-L/usr/i586-geode-linux-uclibc/lib -L/usr/lib/gcc/i586-geode-linux-uclibc/3.4.6
-L/usr/lib/gcc/i586-geode-linux-uclibc/3.4.6/../../../../i586-geode-linux-uclibc/lib
-L/usr/i586-geode-linux-uclibc/usr/lib -lgcc_s -lc
-L/usr/i586-geode-linux-uclibc/tmp/portage/net-proxy/squid-3.0.13/work/squid-3.0.STABLE13/lib
-lmiscutil -lpthread -lm -lresolv -lnsl -ldl -Wl,-rpath
-Wl,/usr/lib/gcc/i586-geode-linux-uclibc/3.4.6 -Wl,-rpath
-Wl,/usr/lib/gcc/i586-geode-linux-uclibc/3.4.6
./cf_gen cf.data ./cf.data.depend
make[1]: ./cf_gen: Command not found
make[1]: *** [cf_parser.h] Error 127
make[1]: Leaving directory
`/usr/i586-geode-linux-uclibc/tmp/portage/net-proxy/squid-3.0.13/work/squid-3.0.STABLE13/src'
make: *** [all-recursive] Error 1
I did patch src/Makefile.in which is not the perfect way to do that. I
failed to implement that in src/Makefile.am.
Then, I got many errors about xstr* which are not totaly cast
compliant. squid-3.0.13-BJA-util-cast-xstr.diff correct it :
x86_64-pc-linux-gnu-g++ -I. -I. -I../include -I../include
-I../lib/libTrie/include -DNDEBUG -DBUILD_HOST_TOOL -o cf_gen \
./cf_gen.cc ../lib/util.c ../lib/assert.c
../lib/util.c: In function 'char* xstrdup(const char*)':
../lib/util.c:758: error: invalid conversion from 'void*' to 'char*'
../lib/util.c: In function 'char* xstrndup(const char*, size_t)':
../lib/util.c:777: error: invalid conversion from 'void*' to 'char*'
../lib/util.c:777: error: initializing argument 1 of 'char* xstrncpy(char*,
const char*, size_t)'
../lib/util.c:781: error: invalid conversion from 'void*' to 'char*'
../lib/util.c: In function 'const char* xint64toa(int64_t)':
../lib/util.c:926: warning: format '%lld' expects type 'long long int', but
argument 4 has type 'int64_t'
../lib/util.c:926: warning: format '%lld' expects type 'long long int', but
argument 4 has type 'int64_t'
make[1]: *** [cf_gen] Error 1
make[1]: Leaving directory
`/usr/i586-geode-linux-uclibc/tmp/portage/net-proxy/squid-3.0.13/work/squid-3.0.STABLE13/src'
make: *** [all-recursive] Error 1
You can see that correct HOSTCXX is used. But my HOSTCXX is gcc 4.3.3
which is a bit less compliant.
PS: Could you CC me it there is any reply as I'm not subscribe to the
list.
Thanks,
Bertrand Jacquin
--
Beber
--- src/Makefile.in.ori 2009-04-17 00:31:36.000000000 +0200
+++ src/Makefile.in 2009-04-17 00:33:30.000000000 +0200
@@ -4227,7 +4227,12 @@
$(CXXLINK) $(DiskIO_DiskDaemon_diskd_OBJECTS) $(DiskIO_DiskDaemon_diskd_LDADD) $(LIBS)
cf_gen$(EXEEXT): $(cf_gen_OBJECTS) $(cf_gen_DEPENDENCIES)
@rm -f cf_gen$(EXEEXT)
+ifneq (${HOSTCXX},${CXXLINK})
+ ${HOSTCXX} ${INCLUDES} -DNDEBUG -DBUILD_HOST_TOOL -o cf_gen$(EXEEXT) \
+ $(srcdir)/cf_gen.cc $(top_srcdir)/lib/util.c $(top_srcdir)/lib/assert.c
+else
$(CXXLINK) $(cf_gen_OBJECTS) $(cf_gen_LDADD) $(LIBS)
+endif
dnsserver$(EXEEXT): $(dnsserver_OBJECTS) $(dnsserver_DEPENDENCIES)
@rm -f dnsserver$(EXEEXT)
$(CXXLINK) $(dnsserver_OBJECTS) $(dnsserver_LDADD) $(LIBS)
--- lib/util.c.ori 2009-04-17 01:06:16.000000000 +0200
+++ lib/util.c 2009-04-17 01:07:20.000000000 +0200
@@ -755,7 +755,7 @@
PROF_stop(xstrdup);
- return p;
+ return (char *)p;
}
/*
@@ -765,7 +765,7 @@
xstrndup(const char *s, size_t n)
{
size_t sz;
- void *p;
+ char *p;
PROF_start(xstrndup);
assert(s != NULL);
assert(n);
@@ -774,7 +774,7 @@
if (sz > n)
sz = n;
- p = xstrncpy(xmalloc(sz), s, sz);
+ p = xstrncpy((char *)xmalloc(sz), s, sz);
PROF_stop(xstrndup);
@@ -923,7 +923,7 @@
xint64toa(int64_t num)
{
static char buf[24]; /* 2^64 = 18446744073709551616 */
- snprintf(buf, sizeof(buf), "%" PRId64, num);
+ snprintf(buf, sizeof(buf), "%" PRId64, (long long int)num);
return buf;
}
signature.asc
Description: PGP signature
