+AC_CHECK_PROGS([XPMTOPPM], [xpmtoppm])
+AC_CHECK_PROGS([PNMTOPNG], [pnmtopng])
+AC_CHECK_PROGS([CONVERT], [convert])
+AC_CHECK_PROGS([GM], [gm])
+AC_CACHE_CHECK([how to convert XPM to PNG], [dx_cv_xpm_to_png],
+[cat >conftest.xpm <<'EOF'
+/* XPM */
+static char *x[] = {
+"1 1 1 1",
+"x c #123456",
+"x"
+};
+EOF
+check_conftest_png () {
+ od conftest.png | $AWK 'BEGIN { success=0; }
+NR == 1 && $2 == "050211" && $3 == "043516" { success=1; }
+NR == 1 && $2 == "104520" && $3 == "047107" { success=1; }
+END { exit(!success); }'
+}
+rm -f conftest.png
+for dx_cv_xpm_to_png in netpbm 'gm convert' convert unknown; do
+AS_CASE([$dx_cv_xpm_to_png],
+
+[netpbm],
+[AS_IF([$XPMTOPPM conftest.xpm >conftest.ppm 2>&AS_MESSAGE_LOG_FD],
+ [], [continue])
+AS_IF([$PNMTOPNG conftest.ppm >conftest.png 2>&AS_MESSAGE_LOG_FD],
+ [], [continue])
+AS_IF([check_conftest_png], [break])],
+
+[*convert],
+[AS_CASE([$dx_cv_xpm_to_png],
+ [gm*], [test_convert="$GM convert"],
+ [test_convert="$CONVERT"])
+AS_IF([$test_convert conftest.xpm conftest.png >&AS_MESSAGE_LOG_FD 2>&1],
+ [], [continue])
+AS_IF([check_conftest_png], [break])])
+done
+rm -f conftest.xpm conftest.ppm conftest.png])
+
+AM_CONDITIONAL([USE_NETPBM], [test x"$dx_cv_xpm_to_png" = x"netpbm"])
+AM_CONDITIONAL([USE_CONVERT],
+ [AS_CASE([$dx_cv_xpm_to_png], [*convert], [], [false])])
+
+AS_IF([test x"$dx_cv_xpm_to_png" = x"gm convert"],
+ [CONVERT="$GM convert"])
+
+AC_CHECK_PROGS([OPTIPNG], [optipng])
+: "${OPTIPNG:=:}"
+