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

Reply via email to