(I just checked out svn trunk and have built on NetBSD 6 i386, with only
a few small issues.   I'm not entirely clear on whether I should be
filing bugs as some of the issues are a bit confusing.  I'm sending
separate mails as the issues are unrelated.   The good news is that I
didn't find any format-string warnings about types.)

The first issue is that in cpl_conv.cc, I got an error about atoll not
being defined.  This surprised me, because stdlib.h was included.
However there are a lot of namespacing includes in there; atoll is from
C99.  A simple test program builds fine.

Building gdal results in a complain that atoll was not declared (log at
end).

The following patch resolves the issue.  I don't understand the strategy
for turning on/off the namespacing defines, but clearly something is
going on because I normally don't see _XOPEN_SOURCE defined.

Index: port/cpl_conv.cpp
===================================================================
--- port/cpl_conv.cpp   (revision 31282)
+++ port/cpl_conv.cpp   (working copy)
@@ -31,6 +31,9 @@
 // For uselocale
 #define _XOPEN_SOURCE 700 
 
+// For atoll
+#define _ISOC99_SOURCE
+
 #ifdef MSVC_USE_VLD
 #include <vld.h>
 #endif


----------------------------------------
[The following test program compiles warning-free with -Wall with both
gcc and clang, with as gcc main.c or g++ main.cc]

#include <stdlib.h>

int main()
{
  long long i;

  i = atoll("1234");

  return 0;
}
----------------------------------------
[log from gdal without my change]

gmake[1]: Entering directory '/usr/home/gdt/SOFTWARE/GEO/gdal/port'
/bin/ksh /home/gdt/SOFTWARE/GEO/gdal/libtool --mode=compile --tag=CXX g++ 
-I/home/gdt/SOFTWARE/GEO/gdal/port -I/home/gdt/SOFTWARE/GEO/gdal/gcore 
-I/home/gdt/SOFTWARE/GEO/gdal/alg -I/home/gdt/SOFTWARE/GEO/gdal/ogr 
-I/home/gdt/SOFTWARE/GEO/gdal/ogr/ogrsf_frmts -I/home/gdt/SOFTWARE/GEO/gdal/gnm 
-I/home/gdt/SOFTWARE/GEO/gdal/apps -g -O2  -Wall -Wextra -Winit-self 
-Wunused-parameter -Wformat -Werror=format-security -Wno-format-nonliteral 
-Werror=vla -Wno-clobbered -Wmissing-declarations  -DOGR_ENABLED 
-I/usr/pkg/include -I/home/gdt/SOFTWARE/GEO/gdal/port -I/usr/pkg/include  
-DGDAL_COMPILATION      -I/usr/pkg/include  -DHAVE_CURL -DHAVE_LIBZ 
-I/usr/pkg/include/libxml2 -DHAVE_LIBXML2 -DUSE_ONLY_CRYPTODLL_ALG -c -o 
cpl_conv.lo cpl_conv.cpp
libtool: compile:  g++ -I/home/gdt/SOFTWARE/GEO/gdal/port 
-I/home/gdt/SOFTWARE/GEO/gdal/gcore -I/home/gdt/SOFTWARE/GEO/gdal/alg 
-I/home/gdt/SOFTWARE/GEO/gdal/ogr -I/home/gdt/SOFTWARE/GEO/gdal/ogr/ogrsf_frmts 
-I/home/gdt/SOFTWARE/GEO/gdal/gnm -I/home/gdt/SOFTWARE/GEO/gdal/apps -g -O2 
-Wall -Wextra -Winit-self -Wunused-parameter -Wformat -Werror=format-security 
-Wno-format-nonliteral -Werror=vla -Wno-clobbered -Wmissing-declarations 
-DOGR_ENABLED -I/usr/pkg/include -I/home/gdt/SOFTWARE/GEO/gdal/port 
-I/usr/pkg/include -DGDAL_COMPILATION -I/usr/pkg/include -DHAVE_CURL 
-DHAVE_LIBZ -I/usr/pkg/include/libxml2 -DHAVE_LIBXML2 -DUSE_ONLY_CRYPTODLL_ALG 
-c cpl_conv.cpp  -fPIC -DPIC -o .libs/cpl_conv.o
cpl_conv.cpp: In function 'GUIntBig CPLScanUIntBig(const char*, int)':
cpl_conv.cpp:915:30: error: 'atoll' was not declared in this scope
cpl_conv.cpp: In function 'GIntBig CPLAtoGIntBig(const char*)':
cpl_conv.cpp:941:29: error: 'atoll' was not declared in this scope
cpl_conv.cpp: In function 'GIntBig CPLAtoGIntBigEx(const char*, int, int*)':
cpl_conv.cpp:994:29: error: 'atoll' was not declared in this scope
cpl_conv.cpp: In function 'GIntBig CPLAtoGIntBig(const char*)':
cpl_conv.cpp:945:1: warning: control reaches end of non-void function
../GDALmake.opt:653: recipe for target 'cpl_conv.lo' failed
gmake[1]: *** [cpl_conv.lo] Error 1
gmake[1]: Leaving directory '/usr/home/gdt/SOFTWARE/GEO/gdal/port'
GNUmakefile:70: recipe for target 'port-target' failed
gmake: *** [port-target] Error 2

Attachment: signature.asc
Description: PGP signature

_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to