Redo cython check logic and check for "no-cast-function" gcc 8+ compiler flag
diff --git a/configure.ac b/configure.ac
index e33f1ab..7082ca9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -87,16 +87,26 @@
 AC_ARG_WITH([cython],
             [AS_HELP_STRING([--without-cython],
             [build Python bindings using Cython (default is yes)])],
-            [build_cython=$withval],
-            [build_cython=yes])
-if test "$build_cython" = "yes"; then
-            AM_PATH_PYTHON(2.3)
-            AC_PROG_CYTHON(0.17.0)
-            CYTHON_PYTHON
+            [build_cython=false],
+            [build_cython=true])
+if test "$build_cython" = "true"; then
+            AC_PROG_CYTHON([0.17.0])
+            if [test "x$CYTHON" != "xfalse"]; then
+              AM_PATH_PYTHON([2.3], [
+                CYTHON_PYTHON
+                AS_COMPILER_FLAG([-Wno-cast-function-type -Werror], [
+                  CYTHON_CFLAGS+=" -Wno-cast-function-type"
+                  AC_SUBST([CYTHON_CFLAGS])
+                ], [])
+              ])
+            else
+              AC_MSG_WARN([Use the "--without-cython" option to avoid this warning.])
+            fi
 else
             CYTHON=false
 fi
 if [test "x$CYTHON" != "xfalse"]; then
+            PKG_PROG_PKG_CONFIG
             AC_MSG_CHECKING([for libplist Cython bindings])
             CYTHON_PLIST_INCLUDE_DIR=$($PKG_CONFIG --variable=includedir libplist-2.0)/plist/cython
             if [test ! -d "$CYTHON_PLIST_INCLUDE_DIR"]; then
diff --git a/cython/Makefile.am b/cython/Makefile.am
index 08ac363..3577c4e 100644
--- a/cython/Makefile.am
+++ b/cython/Makefile.am
@@ -68,7 +68,7 @@
 	-Wno-strict-aliasing \
 	-Wno-implicit-function-declaration \
 	-fvisibility=default \
-	-Wno-cast-function-type
+	$(CYTHON_CFLAGS)
 
 imobiledevice_la_LDFLAGS = \
 	-module \