chiark / gitweb /
Merge branch 'master' of git.distorted.org.uk:~mdw/publish/public-git/disorder
[disorder] / acinclude.m4
index 9a11b7a350b4d98d6f877bfbf97a1ca74f4b4268..287c256de0904f696c0b4f594bdd8400537a2908 100644 (file)
@@ -1,27 +1,25 @@
 # This file is part of DisOrder.
 # Copyright (C) 2004, 2005, 2007, 2008 Richard Kettlewell
 #
-# This program is free software; you can redistribute it and/or modify
+# This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# the Free Software Foundation, either version 3 of the License, or
 # (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-# USA
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 
 AC_DEFUN([RJK_FIND_GC_H],[
   AC_CACHE_CHECK([looking for <gc.h>],[rjk_cv_gc_h],[
-    AC_PREPROC_IFELSE([
+    AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
                       #include <gc.h>
-                     ],
+                     ],[])],
                      [rjk_cv_gc_h="on default include path"],[
       oldCPPFLAGS="${CPPFLAGS}"
       for dir in /usr/include/gc /usr/local/include/gc; do
@@ -30,9 +28,9 @@ AC_DEFUN([RJK_FIND_GC_H],[
        else
          CPPFLAGS="${oldCPPFLAGS} -I$dir"
        fi
-       AC_PREPROC_IFELSE([
+       AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
                           #include <gc.h>
-                         ],
+                         ],[])],
                          [rjk_cv_gc_h=$dir;break],[rjk_cv_gc_h="not found"])
       done
       CPPFLAGS="${oldCPPFLAGS}"
@@ -103,6 +101,44 @@ AC_DEFUN([RJK_REQUIRE_PCRE_UTF8],[
   fi
 ])
 
+AC_DEFUN([RJK_REQUIRE_PCRE2_UTF8],[
+  AC_CACHE_CHECK([whether libpcre2 was built with UTF-8 support],
+                 [rjk_cv_pcre_utf8],[
+    save_CFLAGS="$CFLAGS" save_LIBS="$LIBS"
+    CFLAGS="$CFLAGS $1" LIBS="$LIBS $2"
+    AC_RUN_IFELSE([AC_LANG_PROGRAM([
+                    #define PCRE2_CODE_UNIT_WIDTH 8
+                    #include <pcre2.h>
+                    #include <stdio.h>
+                  ],
+                  [
+                    pcre2_code *r;
+                    int errcode;
+                    int erroffset;
+                    char errbuf[[128]];
+
+                    r = pcre2_compile("\x80\x80", 2, PCRE2_UTF,
+                                     &errcode, &erroffset, 0);
+                    if(!r) {
+                      pcre2_get_error_message(errcode, errbuf, sizeof(errbuf));
+                      fprintf(stderr, "pcre2_compile: %s at %d",
+                              errbuf, erroffset);
+                      exit(0);
+                    } else {
+                      fprintf(stderr, "accepted bogus UTF-8 string\n");
+                      exit(1);
+                    }
+                  ])],
+                  [rjk_cv_pcre_utf8=yes],
+                  [rjk_cv_pcre_utf8=no],
+                  [AC_MSG_WARN([cross-compiling, cannot check libpcre2 behaviour])])
+    CFLAGS="$save_CFLAGS" LIBS="$save_LIBS"
+  ])
+  if test $rjk_cv_pcre_utf8 = no; then
+    AC_MSG_ERROR([please rebuild your pcre library with --enable-utf8])
+  fi
+])
+
 AC_DEFUN([RJK_GCOV],[
   GCOV=${GCOV:-true}
   AC_ARG_WITH([gcov],