Peter Kümmel wrote:
Abdelrazak Younes wrote:
Bo Peng wrote:
I will change scons using this logic.
Done fr scons: iconv is required, and ICONV_CONST is also defined in
common/config.h.
Hum, it does not work here Bo. common/config.h has:

/* Define as const if the declaration of iconv() needs const. */
#define ICONV_CONST

And we need "#define ICONV_CONST const" on win32. But the test seems to
pass correctly:

Check if the declaration of iconv needs const... yes

Abdel.



I've wondered about the const test:

def checkIconvConst(conf):
    ''' check the declaration of iconv '''
    check_iconv_const = '''
#include <stdlib.h>
#include <iconv.h>

extern
#ifdef __cplusplus
"C"
#endif
#if defined(__STDC__) || defined(__cplusplus)
#ifndef LIBICONV_DLL_EXPORTED
size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, 
size_t *outbytesleft);
#endif
#else
size_t iconv();
#endif

int main()
{
    return 1;
}
'''

How does it work? Scons only tries to compile the code to see if there is a 
const second parameter?

I can't see how compiling could fail, declaring iconv(...) is in all cases 
possible, even when not
including iconv.h.

In cmake I declare iconv without a non const second parameter (linux version) 
and a different
return type, then compiling will fail on linux because overloading of the 
return type is not possible.
But it compiles on windows because there is no iconv(..) with a non const 
second parameter.

Good catch Peter. Something looks fishy there...

Abdel.

Reply via email to