def _check_cython_sources(self, extension):
        """
        Where relevant, make sure that the .c files associated with .pyx
        modules are present (if building without Cython installed).
        """

        # Determine the compiler we'll be using
        if self.compiler is None:
            compiler = get_default_compiler()
        else:
            compiler = self.compiler

        # Replace .pyx with C-equivalents, unless c files are missing
        for jdx, src in enumerate(extension.sources):
            base, ext = os.path.splitext(src)
            pyxfn = base + '.pyx'
            cfn = base + '.c'
            cppfn = base + '.cpp'

            if not os.path.isfile(pyxfn):
                continue

            if self._uses_cython:
                extension.sources[jdx] = pyxfn
            else:
                if os.path.isfile(cfn):
                    extension.sources[jdx] = cfn
                elif os.path.isfile(cppfn):
                    extension.sources[jdx] = cppfn
                else:
                    msg = (
                        'Could not find C/C++ file {0}.(c/cpp) for Cython '
                        'file {1} when building extension {2}. Cython '
                        'must be installed to build from a git '
                        'checkout.'.format(base, pyxfn, extension.name))
                    raise IOError(errno.ENOENT, msg, cfn)

            # Cython (at least as of 0.29.2) uses deprecated Numpy API features
            # the use of which produces a few warnings when compiling.
            # These additional flags should squelch those warnings.
            # TODO: Feel free to remove this if/when a Cython update
            # removes use of the deprecated Numpy API
            if compiler == 'unix':
                extension.extra_compile_args.extend([
                    '-Wp,-w', '-Wno-unused-function'])