I'll have to let Brice comment on the config change. All I can say is that "tolower" on my CentOS box is defined in <ctype.h>, and that has to be included in the misc.h header.
On Sep 8, 2014, at 5:49 PM, Gilles Gouaillardet <gilles.gouaillar...@iferc.org> wrote: > Ralph and Brice, > > i noted Ralph commited r32685 in order to fix a problem with Intel > compilers. > The very similar issue occurs with clang 3.2 (gcc and clang 3.4 are ok > for me) > > imho, the root cause is in the hwloc configure. > in this case, configure fails to detect strncasecmp is part of the C > include files. > > in order to achieve this, the conftest.1.c program is compiled and a > failure means that > strncasecmp is supported since it is declared in some C include files. > > gcc and clang 3.4 both fail to compile this program : > > $ gcc -c /tmp/conftest.1.c ; echo $? > /tmp/conftest.1.c:592: warning: data definition has no type or storage class > /tmp/conftest.1.c:592: error: conflicting types for ‘strncasecmp’ > 1 > > $ clang --version > clang version 3.4 (tags/RELEASE_34/final) > Target: x86_64-redhat-linux-gnu > Thread model: posix > $ clang -c /tmp/conftest.1.c ; echo $? > /tmp/conftest.1.c:592:8: warning: type specifier missing, defaults to 'int' > [-Wimplicit-int] > strncasecmp(int,long,int,long,int,long,int,long,int,long); > ^~~~~~~~~~~ > /tmp/conftest.1.c:592:8: error: conflicting types for 'strncasecmp' > /usr/include/string.h:540:12: note: previous declaration is here > extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n) > ^ > /tmp/conftest.1.c:596:19: error: too many arguments to function call, > expected > 3, have 10 > strncasecmp(1,2,3,4,5,6,7,8,9,10); > ~~~~~~~~~~~ ^~~~~~~~~~~~~~ > 1 warning and 2 errors generated. > 1 > > > but clang 3.2 and icc simply issue a warning and no error : > > $ clang --version > clang version 3.2 (tags/RELEASE_32/final) > Target: x86_64-unknown-linux-gnu > Thread model: posix > $ clang -c /tmp/conftest.1.c ; echo $? > /tmp/conftest.1.c:592:8: warning: type specifier missing, defaults to 'int' > [-Wimplicit-int] > strncasecmp(int,long,int,long,int,long,int,long,int,long); > ^~~~~~~~~~~ > /tmp/conftest.1.c:592:8: warning: incompatible redeclaration of library > function > 'strncasecmp' > /usr/include/string.h:540:12: note: 'strncasecmp' is a builtin with type > 'int > (const char *, const char *, size_t)' > extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n) > ^ > 2 warnings generated. > 0 > > $ icc -c conftest.1.c ; echo $? > conftest.1.c(592): warning #77: this declaration has no storage class or > type specifier > strncasecmp(int,long,int,long,int,long,int,long,int,long); > ^ > > conftest.1.c(592): warning #147: declaration is incompatible with "int > strncasecmp(const char *, const char *, size_t={unsigned long})" > (declared at line 540 of "/usr/include/string.h") > strncasecmp(int,long,int,long,int,long,int,long,int,long); > ^ > > 0 > > > the attached hwloc_config.patch is used in order to make the test > program slightly different (conftest.2.c) and it does fail with all the > compilers. > > > that being said, r32685 might not be reversed since in the case > strncasecmp is not supported by the system (i do not even know if such > os exist) > ctype.h must be #include'd in order to get the prototype of the > tolower() function. > > > could you please review the hwloc_config.patch and comment ? > > Cheers, > > Gilles > <conftest.1.c><hwloc_config.patch><conftest.2.c>_______________________________________________ > devel mailing list > de...@open-mpi.org > Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel > Link to this post: > http://www.open-mpi.org/community/lists/devel/2014/09/15775.php