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;
 }
 

Attachment: signature.asc
Description: PGP signature

Reply via email to