Opened 15 years ago
Closed 14 years ago
#949 closed defect (wontfix)
strings.h error when compiling recent versions of nviz
Reported by: | jkaplan | Owned by: | |
---|---|---|---|
Priority: | normal | Milestone: | 6.4.0 |
Component: | Tcl/Tk NVIZ | Version: | svn-develbranch6 |
Keywords: | grass6_wxnviz.i, strcasecmp, fink | Cc: | |
CPU: | OSX/Intel | Platform: | MacOSX |
Description
Hello GRASS developers,
When trying to compile recent versions of GRASS (v.6 development branch or GRASS 7) I encountered an error during compilation of nviz related to the function 'strcasecmp' which seems to be included through several layers of the wxgtk libraries. Please see the command line output below.
admin@Abies:~/Downloads/grass6/grass6_devel/gui/wxpython/nviz > make python setup.py build_ext --swig=/sw/bin/swig --swig-opts=-c++ --build-lib=OBJ.i386-apple-darwin10.2.0 --build-temp=OBJ.i386-apple-darwin10.2.0 running build_ext building '_grass6_wxnviz' extension swigging grass6_wxnviz.i to grass6_wxnviz_wrap.cpp /sw/bin/swig -python -c++ -o grass6_wxnviz_wrap.cpp grass6_wxnviz.i gcc -fno-strict-aliasing -mno-fused-madd -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DPACKAGE="grasslibs" -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -I/Users/admin/Downloads/grass6/grass6_devel/dist.i386-apple-darwin10.2.0/include -I/Library/Frameworks/GDAL.framework/Versions/1.6/Headers -I/sw/lib/wx/include/gtk2-unicode-release-2.8 -I/sw/include/wx-2.8 -I/usr/X11/include -I/usr/X11R6/include -I/sw/include/python2.5 -c grass6_wxnviz_wrap.cpp -o OBJ.i386-apple-darwin10.2.0/grass6_wxnviz_wrap.o cc1plus: warning: command line option "-Wstrict-prototypes" is valid for C/ObjC but not for C++ In file included from /sw/include/wx-2.8/wx/memory.h:16, from /sw/include/wx-2.8/wx/object.h:20, from /sw/include/wx-2.8/wx/wx.h:16, from nviz.h:23, from grass6_wxnviz_wrap.cpp:2612: /sw/include/wx-2.8/wx/string.h: In function 'int Stricmp(const char*, const char*)': /sw/include/wx-2.8/wx/string.h:141: error: 'strcasecmp' was not declared in this scope error: command 'gcc' failed with exit status 1 make: *** [OBJ.i386-apple-darwin10.2.0/_grass6_wxnviz.so] Error 1
I am not experienced enough of a programmer to know the "right" way to solve this problem, but I was able to make a workaround by modifying the file grass6_devel/gui/wxpython/nviz/grass6_wxnviz.i to include the statement #include <strings.h>
The first lines of grass6_wxnviz.i in my patched version (which does compile) look like this:
/* File: nviz.i */ %module grass6_wxnviz %{ #include <strings.h> #include "nviz.h" #include <grass/gsurf.h> #include <grass/gstypes.h> #undef check %}
etc...
Change History (2)
comment:1 by , 15 years ago
comment:2 by , 14 years ago
Resolution: | → wontfix |
---|---|
Status: | new → closed |
In GRASS 7.0 and 6.5 has been wxNviz C++ component replaced by Python version. Closing this ticket as wontfix. Martin
Replying to jkaplan:
This looks like a bug in wxWidgets. strcasecmp() isn't an ANSI C function, so it detects if it's available and provides its own version if it isn't. It appears to be getting the detection wrong.
<strings.h> isn't portable.
The <wx/string.h> header includes <strings.h> if it's available and required:
For whatever reason, the test appears to be incorrect, i.e. it's not including it even though it's required.