configure.ac
author J. Ali Harlow <ali@juiblex.co.uk>
Tue Apr 25 17:41:00 2023 +0100 (2023-04-25)
changeset 109 2947214c450e
parent 107 6ae203c8b28d
permissions -rw-r--r--
Partial fix for #5537
     1 #                                               -*- Autoconf -*-
     2 # Process this file with autoconf to produce a configure script.
     3 
     4 AC_INIT([plover],[0.6.1],[ali@juiblex.co.uk])
     5 AC_PREREQ(2.59)
     6 AC_CONFIG_AUX_DIR([config])
     7 AC_CONFIG_SRCDIR([plover/plover.h])
     8 AC_CONFIG_HEADER([config.h])
     9 AC_CONFIG_MACRO_DIR([m4])
    10 AC_CONFIG_FILES([Makefile
    11 plover/Makefile
    12 plover/plover.pc
    13 plover-gtk/Makefile
    14 plover-gtk/plover-gtk.pc
    15 setup/Makefile
    16 setup/resources.rc
    17 update/Makefile
    18 update/resources.rc
    19 pre-inst/Makefile
    20 pre-inst/resources.rc
    21 app-manager/Makefile
    22 app-manager/resources.rc
    23 plover-open/Makefile
    24 plover-open/resources.rc
    25 tests/Makefile
    26 tests/plover/Makefile
    27 tests/plover-gtk/Makefile
    28 tests/pre-inst/Makefile
    29 ])
    30 PLOVER_MSWIN_MANIFEST([setup/setup.exe.manifest:setup/manifest.xml.in
    31 update/update.exe.manifest:update/manifest.xml.in
    32 pre-inst/pre-inst.exe.manifest:pre-inst/manifest.xml.in
    33 app-manager/app-manager.exe.manifest:app-manager/manifest.xml.in
    34 plover-open/plover-open.exe.manifest:plover-open/manifest.xml.in
    35 ])
    36 AM_INIT_AUTOMAKE(no-define parallel-tests)
    37 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
    38 AC_SUBST(PLOVER_MAJOR_VERSION,[[`echo $VERSION | \
    39   sed -e 's/^[^.]*$/0/' -e 's/\..*//'`]])
    40 AC_SUBST(PLOVER_MINOR_VERSION,[[`echo $VERSION | \
    41   sed -e 's/.*/&.0.0/' -e 's/[^.]*\.\([^.]*\)\..*/\1/'`]])
    42 AC_SUBST(PLOVER_MICRO_VERSION,[[`echo $VERSION | \
    43   sed -e 's/.*/&.0.0.0/' -e 's/\([^.]*\.\)\{2\}\([^.]*\)\..*/\2/'`]])
    44 AC_SUBST(PLOVER_PATCH_LEVEL,[[`echo $VERSION | \
    45   sed -e 's/.*/&.0.0.0.0/' -e 's/\([^.]*\.\)\{3\}\([^.]*\)\..*/\2/'`]])
    46 AC_CANONICAL_HOST
    47 AC_SUBST(HOST_OS,$host_os)
    48 AC_SUBST(HOST_CPU,$host_cpu)
    49 case $host_os in
    50     mingw*)
    51 	host_mingw="yes"
    52 	;;
    53     *)
    54 	host_mingw=""
    55 	;;
    56 esac
    57 AM_CONDITIONAL(PLOVER_MINGW,[test -n "$host_mingw"])
    58 
    59 # libtool versioning for libplover. For a release one of the following
    60 # must apply:
    61 #
    62 # - If interfaces have been changed or added, but binary compatibility has
    63 #   been preserved, increment CURRENT and AGE and set REVISION to 0.
    64 # - If binary compatibility has been broken (eg removed or changed interfaces),
    65 #   increment CURRENT and set AGE and REVISION to 0.
    66 # - If the interface is the same as the previous version, increment REVISION.
    67 #
    68 lt_current=6
    69 lt_revision=0
    70 lt_age=3
    71 LIBPLOVER_LT_VERSION_INFO="$lt_current:$lt_revision:$lt_age"
    72 AC_SUBST(LIBPLOVER_LT_VERSION_INFO)
    73 
    74 # and likewise for plover-gtk.
    75 #
    76 lt_current=2
    77 lt_revision=0
    78 lt_age=1
    79 PLOVER_GTK_LT_VERSION_INFO="$lt_current:$lt_revision:$lt_age"
    80 AC_SUBST(PLOVER_GTK_LT_VERSION_INFO)
    81 
    82 ##################################################
    83 # Checks for programs.
    84 ##################################################
    85 AC_PROG_CC
    86 AC_PROG_CXX
    87 AC_LIBTOOL_WIN32_DLL
    88 AC_PROG_LIBTOOL
    89 PKG_PROG_PKG_CONFIG
    90 AC_CHECK_TOOL([WINDRES],[windres],[no])
    91 AM_CONDITIONAL([HAVE_WINDRES],[test x$WINDRES != xno])
    92 AC_CHECK_PROGS([RSVG_CONVERT],[rsvg rsvg-convert],[no])
    93 if test "$RSVG_CONVERT" = no; then
    94     AC_MSG_ERROR([no program found to convert SVG files to bitmaps])
    95 fi
    96 if test "$RSVG_CONVERT" = rsvg; then
    97     RSVG_CONVERT="sh \$(top_srcdir)/config/rsvg_convert"
    98 fi
    99 AX_VALGRIND_CHECK
   100 AS_IF([test "$enable_valgrind" != "no"],[[
   101     major=`$VALGRIND --version | \
   102       sed -e 's/^valgrind-//' -e 's/^[^.]*$/0/' -e 's/\..*//'`
   103     minor=`$VALGRIND --version | \
   104       sed -e 's/^valgrind-//' -e 's/.*/&.0.0/' -e 's/[^.]*\.\([^.]*\)\..*/\1/'`
   105 ]],[major=0; minor=0])
   106 AM_CONDITIONAL([HAVE_VALGRIND_3_9],[test 0$major -gt 3 -o 0$minor -gt 8])
   107 AX_CODE_COVERAGE
   108 AC_CHECK_TOOL([RAZOR],[razor],[no])
   109 AC_CHECK_TOOL([RPMBUILD],[rpmbuild],[no])
   110 AC_CHECK_TOOL([CREATEREPO],[createrepo],[no])
   111 AC_CHECK_TOOL([COMPILE_RESOURCES],[glib-compile-resources],[no])
   112 AM_CONDITIONAL([HAVE_CHECK_TOOLS],
   113   [test x$RAZOR != xno -a x$RPMBUILD != xno -a x$CREATEREPO != xno -a \
   114    x$COMPILE_RESOURCES != xno])
   115 
   116 ##################################################
   117 # Checks for header files.
   118 ##################################################
   119 AC_HEADER_STDC
   120 AC_CHECK_HEADERS([winhttp.h],[],[],
   121 [#include <windows.h>
   122 ])
   123 
   124 ##################################################
   125 # Checks for typedefs, structures, and compiler characteristics.
   126 ##################################################
   127 AH_VERBATIM([NO_PARENTHESES],
   128 [/* Disable warnings on parentheses even if specified in CFLAGS. */
   129 #pragma GCC diagnostic ignored "-Wparentheses"])
   130 
   131 ##################################################
   132 # Checks for libraries.
   133 ##################################################
   134 PKG_CHECK_MODULES(WHELK,[whelk])
   135 PKG_CHECK_MODULES(RAZOR,[razor >= 0.5.4],[:],[RAZOR_LIBS=-lrazor])
   136 PKG_CHECK_MODULES(EXPAT,[expat >= 2.2],[:],
   137   [PKG_CHECK_MODULES(EXPAT,[expat22],[:],[EXPAT_LIBS=-lexpat])])
   138 PKG_CHECK_MODULES(ZLIB,[zlib],[:],[ZLIB_LIBS=-lz])
   139 PKG_CHECK_MODULES(LUA,[lua],[:],[LUA_LIBS=-llua])
   140 PKG_CHECK_MODULES(GIO,[gio-2.0])
   141 PKG_CHECK_MODULES(GTK,[gtk+-2.0])
   142 PKG_CHECK_MODULES(GMODULE_EXPORT,[gmodule-export-2.0])
   143 LIBPLOVER_CFLAGS="$RAZOR_CFLAGS $EXPAT_CFLAGS $ZLIB_CFLAGS $GIO_CFLAGS"
   144 LIBPLOVER_LIBS="$RAZOR_LIBS $EXPAT_LIBS $ZLIB_LIBS $GIO_LIBS"
   145 LIBPLOVER_REQUIREMENTS="razor expat zlib glib2"
   146 AC_SUBST(LIBPLOVER_CFLAGS)
   147 AC_SUBST(LIBPLOVER_LIBS)
   148 AC_SUBST(LIBPLOVER_REQUIREMENTS)
   149 PLOVER_GTK_CFLAGS="$GTK_CFLAGS $RAZOR_CFLAGS"
   150 PLOVER_GTK_LIBS="$GTK_LIBS $RAZOR_LIBS"
   151 AC_SUBST(PLOVER_GTK_CFLAGS)
   152 AC_SUBST(PLOVER_GTK_LIBS)
   153 save_LIBS="$LIBS"
   154 AC_SEARCH_LIBS([crypt],[crypt])
   155 LUA_POSIX_CFLAGS="$LUA_CFLAGS"
   156 LUA_POSIX_LIBS="-llua-posix $LUA_LIBS $LIBS"
   157 LIBS="$save_LIBS"
   158 AC_SUBST(LUA_POSIX_CFLAGS)
   159 AC_SUBST(LUA_POSIX_LIBS)
   160 save_PKG_CONFIG="$PKG_CONFIG"
   161 PKG_CONFIG="$PKG_CONFIG --static"
   162 PKG_CHECK_MODULES(SETUP,[whelk razor >= 0.5.4 expat >= 2.2 zlib gio-2.0],[:],
   163   [PKG_CHECK_MODULES(SETUP,[whelk razor >= 0.5.4 expat22 zlib gio-2.0])])
   164 if test -n "$host_mingw"; then
   165     # Hacks:
   166     # -liconv is required for mingw. This probably stems from our use of
   167     # libiconv rather than win-iconv that Fedora uses, but should be addressed
   168     # somewhere in the stack below us.
   169     # -ldnsapi is required by gio. This probably represents a gio bug.
   170     SETUP_LIBS="$SETUP_LIBS -liconv -ldnsapi"
   171 fi
   172 PKG_CONFIG="$save_PKG_CONFIG"
   173 SETUP_CFLAGS="$SETUP_CFLAGS $LUA_POSIX_CFLAGS"
   174 SETUP_LIBS="$SETUP_LIBS $LUA_POSIX_LIBS"
   175 AC_SUBST(SETUP_LIBS)
   176 AC_SUBST(SETUP_CFLAGS)
   177 save_LIBS="$LIBS"
   178 LIBS="$LIBS -lcrypt32"
   179 AC_MSG_CHECKING([for library containing CertEnumCertificatesInStore])
   180 AC_LINK_IFELSE([AC_LANG_PROGRAM(
   181   [[#include <windows.h>]],
   182   [return !CertEnumCertificatesInStore((HCERTSTORE)0,NULL);])],
   183   [FETCH_LIBS="-lcrypt32"])
   184 if test -z "$FETCH_LIBS"; then
   185     AC_MSG_RESULT([no])
   186 else
   187     AC_MSG_RESULT([$FETCH_LIBS])
   188 fi
   189 AC_SUBST([FETCH_LIBS])
   190 LIBS="$save_LIBS"
   191 AC_ARG_WITH([breakpad],
   192   [AS_HELP_STRING([--with-breakpad],
   193     [produce minidumps on crash @<:@default=check@:>@])],
   194   [],[with_breakpad=check])
   195 if test "$with_breakpad" != no; then
   196     PKG_CHECK_MODULES([BREAKPAD],[breakpad-client],
   197       [have_breakpad="yes";REQUIREMENTS="$REQUIREMENTS x11"],[have_breakpad="no"])
   198     if test "$have_breakpad" = yes; then
   199 	AC_DEFINE([HAVE_BREAKPAD],[1],[Define if breakpad is available.])
   200 	LIBPLOVER_PRIVATE_REQUIREMENTS="breakpad-client"
   201 	# breakpad-client uses C++. This should probably go into
   202 	# Libs.private in breakpad-client.pc
   203 	AS_IF([test -n "$host_mingw"],[
   204 	    static_stdcxx=`$CXX --print-file-name=libstdc++.a`
   205 	    LIBPLOVER_PRIVATE_LIBS="-lversion -lgcc_eh $static_stdcxx"
   206 	])
   207     elif test "$with_breakpad" = yes; then
   208 	AC_MSG_ERROR([$BREAKPAD_PKG_ERRORS])
   209     fi
   210 else
   211     have_breakpad="no"
   212 fi
   213 AC_SUBST(LIBPLOVER_PRIVATE_REQUIREMENTS)
   214 AC_SUBST(LIBPLOVER_PRIVATE_LIBS)
   215 AM_CONDITIONAL([HAVE_BREAKPAD],[test $have_breakpad = yes])
   216 GUI_CFLAGS="$GMODULE_EXPORT_CFLAGS $WHELK_CFLAGS $PLOVER_GTK_CFLAGS \
   217   $LIBPLOVER_CFLAGS $LUA_POSIX_CFLAGS"
   218 GUI_LIBS="$GMODULE_EXPORT_LIBS $WHELK_LIBS $PLOVER_GTK_LIBS \
   219   $LIBPLOVER_LIBS $LIBPLOVER_PRIVATE_LIBS $LUA_POSIX_LIBS"
   220 AC_SUBST(GUI_CFLAGS)
   221 AC_SUBST(GUI_LIBS)
   222 
   223 ##################################################
   224 # Checks for library functions.
   225 ##################################################
   226 AC_CHECK_FUNCS_ONCE([fchdir fpathconf dirfd localtime_r])
   227 
   228 ##################################################
   229 # Checks for processor independent files.
   230 ##################################################
   231 
   232 ##################################################
   233 # Generate the various configured files
   234 ##################################################
   235 AC_OUTPUT