Sylvain Beucler wrote: > I'm working on a cross-build of GNU FreeDink to make it run on Sony > PlayStation Portable. The build is based on a slightly modified gcc > cross-compiler for mipsel, and a minimal libc on top off of newlib > (ftp://sources.redhat.com/pub/newlib/) - check 'psptoolchain' and > 'pspsdk' at > http://svn.ps2dev.org/listing.php?repname=psp&path=%2Ftrunk%2F . > > (My notes to reproduce the compilation environment can be found at: > http://git.savannah.gnu.org/cgit/freedink.git/tree/doc/psp.txt ) > > The build now runs fine but I had to make a few slight changes in > gnulib, some I think are bugs, some others may not :) > > Most of the time I don't use the modules directly, but they are pulled > as dependencies by gnulib-tool. > > Can you tell me general guidelines to properly deal with these > compilation errors? Or is pspdev out of the scope of gnulib? > > > - using pathconf when HAVE_PATHCONF isn't defined: > > This simple patch avoids link-time error about missing > pathconf. PATH_MAX falls back to MAXPATHLEN (below in the file), > defined to 1024 in pspdev. > > diff --git a/lib/pathmax.h b/lib/pathmax.h > index 6941e45..34ad3ab 100644 > --- a/lib/pathmax.h > +++ b/lib/pathmax.h > @@ -27,9 +27,11 @@ > # endif > > # if !defined PATH_MAX && defined _PC_PATH_MAX > +# if defined HAVE_PATHCONF > # define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 \ > : pathconf ("/", _PC_PATH_MAX)) > # endif > +# endif > > /* Don't include sys/param.h if it already has been. */ > # if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN
Hi Sylvain, Thanks for the report. How about the following? I'll push that tomorrow, along with a ChangeLog entry. >From 5dbda863b54b47a97ea84c18ecc1c34244683723 Mon Sep 17 00:00:00 2001 From: Jim Meyering <meyer...@redhat.com> Date: Sun, 22 Mar 2009 09:30:44 +0100 Subject: [PATCH] pathmax: PATH_MAX: use pathconf only when available * lib/pathmax.h (PATH_MAX): Select the pathconf-using definition only if HAVE_PATHCONF is defined. Patch by Sylvain Beucler. * m4/pathmax.m4 (gl_PATHMAX): Check for pathconf. This avoids a link failure in a PSP cross-compilation environment described in http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/17048 --- lib/pathmax.h | 4 ++-- m4/pathmax.m4 | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/pathmax.h b/lib/pathmax.h index 6941e45..f18d760 100644 --- a/lib/pathmax.h +++ b/lib/pathmax.h @@ -1,5 +1,5 @@ /* Define PATH_MAX somehow. Requires sys/types.h. - Copyright (C) 1992, 1999, 2001, 2003, 2005 Free Software Foundation, Inc. + Copyright (C) 1992, 1999, 2001, 2003, 2005, 2009 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,7 +26,7 @@ # define _POSIX_PATH_MAX 256 # endif -# if !defined PATH_MAX && defined _PC_PATH_MAX +# if !defined PATH_MAX && defined _PC_PATH_MAX && defined HAVE_PATHCONF # define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 \ : pathconf ("/", _PC_PATH_MAX)) # endif diff --git a/m4/pathmax.m4 b/m4/pathmax.m4 index e88fdb4..4651801 100644 --- a/m4/pathmax.m4 +++ b/m4/pathmax.m4 @@ -1,4 +1,4 @@ -# pathmax.m4 serial 7 +# pathmax.m4 serial 8 dnl Copyright (C) 2002, 2003, 2005, 2006, 2009 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -7,5 +7,6 @@ dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_PATHMAX], [ dnl Prerequisites of lib/pathmax.h. + AC_CHECK_FUNCS_ONCE([pathconf]) AC_CHECK_HEADERS_ONCE([sys/param.h]) ]) -- 1.6.2.rc1.285.gc5f54