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