Erik Bray schrieb am 25.04.2016 um 17:18: > As some of you already know I've been doing some work on Cython on > Cygwin [in the process I I'm constantly mixing the two up in speech, > but maybe in writing I'll do better :)]. > > There are several issues with the tests on Cygwin, and that's one > thing I'll work on. But a major annoyance I've encountered when > running any tests is a huge number of warnings from gcc such as: > > embray@PC-pret-47 ~/src/cython > $ CFLAGS="-O0" ./runtests.py -vv --no-cpp addloop > Python 2.7.10 (default, Jun 1 2015, 18:05:38) > [GCC 4.9.2] > > Running tests against Cython 0.24 f68b5bd0fa620d0dc26166bffe5fe42d94068720 > Backends: c > > runTest (__main__.CythonRunTestCase) > compiling (c) and running addloop ... > === C/C++ compiler error output: === > In file included from /usr/include/python2.7/Python.h:58:0, > from addloop.c:4: > /usr/include/python2.7/pyport.h:69:27: warning: ISO C90 does not > support ‘long long’ [-Wlong-long] > #define PY_LONG_LONG long long > ^ > /usr/include/python2.7/pyport.h:793:34: note: in definition of macro > ‘PyAPI_FUNC’ > # define PyAPI_FUNC(RTYPE) RTYPE > ^ > /usr/include/python2.7/intobject.h:46:21: note: in expansion of macro > ‘PY_LONG_LONG’ > PyAPI_FUNC(unsigned PY_LONG_LONG) PyInt_AsUnsignedLongLongMask(PyObject *); > ^ > In file included from /usr/include/python2.7/Python.h:58:0, > from addloop.c:4: > ... > > And so on. > > For now an easy workaround is to add -Wno-long-long to the compiler > flags. But I was curious why I was seeing this in Cygwin but not on > my Ubuntu system, and here's why: > > In runtests.py there is a check > > https://github.com/cython/cython/blob/master/runtests.py#L829 > > if self.language=='c' and compiler='gcc': > ext_compile_flags.extend(['-std=c89', '-pedantic']) > > where in this case `compiler` is assigned > `sysconfig.get_config_var('CC')`. On my Linux system this expands to > "x86_64-linux-gnu-gcc -pthread". Whereas on Cygwin (and probably many > other systems) it expands simply to "gcc". > > I'm guessing that to do what it intended the above line should read > "and 'gcc' in compiler".
Yes. > But this also raises the question: Why are the tests run with these > flags? If Python was configured with HAVE_LONG_LONG, then these > warnings will be inevitable. Thanks for bringing this up. Adding "-Wno-long-long" seems the right thing to do, given that this depends on CPython and not Cython. Given that CPython *can* be configured without PY_LONG_LONG support, however, we should then guard any such code in Cython with HAVE_LONG_LONG, as CPython does internally, so that it actually compiles without it. I would otherwise like to keep those compiler flags, even if they didn't serve us yet, because it is not intended to put all too many constraints on the C compiler. Supporting C89, at least whenever possible, would be nice. Stefan _______________________________________________ cython-devel mailing list cython-devel@python.org https://mail.python.org/mailman/listinfo/cython-devel