Add patch for positional params in passphrase dlg
[gpg4win.git] / configure.ac
1 # configure.ac for GPG4Win
2 # Copyright (C) 2005, 2006, 2007, 2008, 2010 g10 Code GmbH
3 #
4 # This file is part of GPG4Win
5 #
6 # GPG4Win is free software; you can redistribute it and/or modify it
7 # under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
10 #
11 # GPG4Win is distributed in the hope that it will be useful, but
12 # WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 # General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, see <http://www.gnu.org/licenses/>.
18
19 # (Process this file with autoconf to produce a configure script.)
20
21 AC_PREREQ(2.59)
22 min_automake_version="1.9.3"
23
24 # To build a release you need to create a tag with the version number
25 # (git tag -s gpg4win-2.x.y) and run "./autogen.sh --force".  Please
26 # bump the version number immediately after the release and do another
27 # commit and push so that the git magic is able to work.
28 #
29 # After a release the make target "copy-news" is to be called as well!
30 m4_define([my_version], [2.1.1])
31
32 # Below is m4 magic to extract and compute the git revision number,
33 # the decimalized short revision number, a beta version string and a
34 # flag indicating a development version (my_isgit). The latter works
35 # by requiring the final tag in the repository.
36 m4_define([git_revision], m4_esyscmd([git branch -v 2>/dev/null \
37           | awk '/^\* / {printf "%s",$3}']))
38 m4_define([git_revision_dec],
39           m4_esyscmd_s([echo $((0x$(echo ]git_revision[|head -c 4)))]))
40 m4_define([git_betastring],
41           m4_esyscmd_s([git describe --match 'gpg4win-[0-9].*.*[0-9]' --long|\
42                         awk -F- '$3!=0{print"-beta"$3}']))
43 m4_define([my_isgit],m4_if(git_betastring,[],[no],[yes]))
44 m4_define([my_full_version],[my_version[]git_betastring])
45
46 AC_INIT([gpg4win],[my_full_version],[gpg4win-devel@wald.intevation.org])
47
48 # Remember to update these version numbers also in the NEWS file.
49 MANUALVERSION_EINSTEIGER="2.0.2"
50 MANUALDATE_EINSTEIGER="30. Mai 2006"
51 MANUALVERSION_DURCHBLICKER="2.0.2"
52 MANUALDATE_DURCHBLICKER="30. Mai 2006"
53 MANUALVERSION_NOVICES="1.0.0"
54 MANUALDATE_NOVICES="Nov. 30, 2006"
55 MANUALVERSION_ADVANCED="0.0.0"
56 MANUALDATE_ADVANCED="Nov. 30, 2006"
57 COMPENDIUM_VERSION_DE="3.0.0"
58 COMPENDIUM_DATE_DE="21. Mai 2010"
59 COMPENDIUMINPROGRESS_DE="zuletzt geringfügig korrigiert am 4. Januar 2012"
60 COMPENDIUM_VERSION_EN="3.0.0-beta1"
61 COMPENDIUM_DATE_EN="31. August 2010"
62 COMPENDIUMINPROGRESS_EN="last minor changes from 4. January 2012"
63
64 MANUALINPROGRESS_DE=m4_if(my_isgit,[yes],["~und evtl. seitdem weiter bearbeitet"])
65 MANUALINPROGRESS_EN=m4_if(my_isgit,[yes],["~and may have been further edited"])
66 PACKAGE=$PACKAGE_NAME
67 VERSION=$PACKAGE_VERSION
68 GIT_REVISION=git_revision
69 GIT_REVISION_DEC=git_revision_dec
70
71
72 AC_CONFIG_SRCDIR(include/config.nsi.in)
73 AC_CONFIG_MACRO_DIR(m4)
74
75 AM_INIT_AUTOMAKE([tar-ustar])
76 AM_MAINTAINER_MODE
77 AC_CANONICAL_HOST
78 AM_CONFIG_HEADER(config.h)
79
80 # Language support
81 AM_PO_SUBDIRS
82
83
84 AC_SUBST(PACKAGE)
85 AC_SUBST(VERSION)
86 AC_SUBST(MANUALVERSION_EINSTEIGER)
87 AC_SUBST(MANUALDATE_EINSTEIGER)
88 AC_SUBST(MANUALVERSION_DURCHBLICKER)
89 AC_SUBST(MANUALDATE_DURCHBLICKER)
90 AC_SUBST(MANUALINPROGRESS_DE)
91 AC_SUBST(MANUALVERSION_NOVICES)
92 AC_SUBST(MANUALDATE_NOVICES)
93 AC_SUBST(MANUALVERSION_ADVANCED)
94 AC_SUBST(MANUALDATE_ADVANCED)
95 AC_SUBST(MANUALINPROGRESS_EN)
96 AC_SUBST(COMPENDIUM_VERSION_DE)
97 AC_SUBST(COMPENDIUM_DATE_DE)
98 AC_SUBST(COMPENDIUMINPROGRESS_DE)
99 AC_SUBST(COMPENDIUM_VERSION_EN)
100 AC_SUBST(COMPENDIUM_DATE_EN)
101 AC_SUBST(COMPENDIUMINPROGRESS_EN)
102
103 if echo "${PACKAGE_VERSION}" | egrep 'svn|rc|beta|git' >/dev/null ; then
104   IS_BETA_BUILD=yes
105 else
106   IS_BETA_BUILD=no
107 fi
108 AC_SUBST(IS_BETA_BUILD)
109
110 # Generate extended version information.  Note, that for NSIS use we
111 # must not translate the dots to commas in the BUILD_FILEVERSION.
112 BUILD_TIMESTAMP=`date --iso-8601=minutes`
113 BUILD_ISODATE=`date --iso-8601`
114 changequote(,)dnl
115 BUILD_FILEVERSION=`echo "$VERSION" | sed 's/\([0-9.]*\).*/\1./'`
116 changequote([,])dnl
117 BUILD_FILEVERSION="${BUILD_FILEVERSION}${GIT_REVISION_DEC}"
118 AC_SUBST(BUILD_TIMESTAMP)
119 AC_SUBST(BUILD_ISODATE)
120 AC_SUBST(BUILD_FILEVERSION)
121
122 # To test the manuals using an actual web server, the preview target
123 # may be used in doc/manuals.  The default is my (wk) test environment
124 # but may be overriden using another preview variable.  PREVIEWHOST is
125 # expected to be the target for an rsync command.
126 if test -z "$PREVIEWHOST" ; then
127    PREVIEWHOST="vigenere:/var/www/all/preview.gpg4win.org/htdocs/"
128 fi
129 AC_SUBST(PREVIEWHOST)
130
131 # The final release is copied to an archive server.  The default
132 # location may be changed by setting the RELEASEHOST envvar.
133 if test -z "$RELEASEHOST" ; then
134    RELEASEHOST="vigenere:tarballs/gpg4win"
135    if test "${IS_BETA_BUILD}" = yes ; then
136       RELEASEHOST="${RELEASEHOST}/Beta"
137    fi
138 fi
139 AC_SUBST(RELEASEHOST)
140
141 # Substitutions to set generated files in a Emacs buffer to read-only.
142 AC_SUBST(emacs_local_vars_begin, ['Local Variables:'])
143 AC_SUBST(emacs_local_vars_read_only, ['buffer-read-only: t'])
144 AC_SUBST(emacs_local_vars_end, ['End:'])
145
146 # For development of this package it is useful to build without
147 # creating the source installer (takes a long time).  This option may
148 # be used to suppress creation of the source installer.
149 AC_ARG_ENABLE(source-installer,
150     AC_HELP_STRING([--disable-source-installer],
151                    [Do not create the Source installer]),
152                     build_source_installer=$enableval,
153                     build_source_installer=yes)
154 AM_CONDITIONAL(BUILD_SOURCE_INSTALLER, test "$build_source_installer" = yes)
155
156
157 # You can build a light version of the installer in addition to the
158 # regular version.  This one does not contain the manuals.
159 AC_ARG_ENABLE(light-installer,
160     AC_HELP_STRING([--disable-light-installer],
161                    [Do not create the light version of the installer]),
162                     build_light_installer=$enableval,
163                     build_light_installer=yes)
164 AM_CONDITIONAL(BUILD_LIGHT_INSTALLER, test "$build_light_installer" = yes)
165
166 # You can build a vanilla version of the installer, featuring only
167 # GnuPG, a pinentry and GPGME, in addition to the regular version.
168 # This one does not contain the manuals.
169 AC_ARG_ENABLE(vanilla-installer,
170     AC_HELP_STRING([--disable-vanilla-installer],
171                    [Do not create the vanilla version of the installer]),
172                     build_vanilla_installer=$enableval,
173                     build_vanilla_installer=yes)
174 AM_CONDITIONAL(BUILD_VANILLA_INSTALLER, test "$build_vanilla_installer" = yes)
175
176 # If you want to build only the light or vanilla installer, you may
177 # disable building of the full installer.
178 AC_ARG_ENABLE(full-installer,
179     AC_HELP_STRING([--disable-full-installer],
180                    [Do not create the full version of the installer]),
181                     build_full_installer=$enableval,
182                     build_full_installer=yes)
183 AM_CONDITIONAL(BUILD_FULL_INSTALLER, test "$build_full_installer" = yes)
184
185 # For development it is often faster to build without manuals.
186 AC_ARG_ENABLE(manuals,
187     AC_HELP_STRING([--disable-manuals],
188                    [Do not build the manuals (for debugging)]),
189                     build_manuals=$enableval,
190                     build_manuals=yes)
191 AM_CONDITIONAL(BUILD_MANUALS, test "$build_manuals" = yes)
192
193
194 AC_ARG_ENABLE(fast-makensis,
195     AC_HELP_STRING([--enable-fast-makensis],
196                    [Use a less efficient compressor to speed up building]),
197                     use_fast_makensis=$enableval,
198                     use_fast_makensis=no)
199 if test "$use_fast_makensis" = yes; then
200   EXTRA_MAKENSIS_FLAGS="${EXTRA_MAKENSIS_FLAGS} -DDISABLE_LZMA=1"
201 fi
202 AC_SUBST(EXTRA_MAKENSIS_FLAGS)
203
204
205 # Required tools.
206 AC_PROG_CC
207 AC_PROG_CPP
208 AC_PROG_RANLIB
209 AC_CHECK_TOOL(AR, ar, :)
210 AC_CHECK_TOOLS(STRIP, strip)
211 AC_CHECK_TOOLS(DLLTOOL, dlltool)
212 AC_CHECK_PROGS(MAKE, make)
213 AC_CHECK_PROGS(UNZIP, unzip)
214 AC_CHECK_PROGS(TAR, tar)
215 AC_CHECK_PROGS(MKDIR, mkdir)
216 AC_CHECK_PROGS(CP, cp)
217 AC_CHECK_PROGS(RM, rm)
218 AC_CHECK_PROGS(STOW, stow)
219 AC_CHECK_PROGS(MAKENSIS, makensis)
220 AC_CHECK_PROGS(ZCAT, zcat)
221 AC_CHECK_PROGS(TEXI2DVI, texi2dvi)
222 AC_CHECK_PROGS(DVIPDF, dvipdf)
223 AC_CHECK_PROGS(CONVERT, convert)
224 AC_CHECK_PROGS(SHA1SUM, sha1sum)
225 AC_CHECK_PROGS(MSGFMT, msgfmt)
226 AC_CHECK_PROGS(GITLOG_TO_CHANGELOG, gitlog-to-changelog,
227                [build-aux/gitlog-to-changelog])
228 AC_PROG_INSTALL
229
230 missing_tools=
231 for i in DLLTOOL MAKE UNZIP TAR MKDIR CP RM STOW MAKENSIS ZCAT TEXI2DVI \
232          DVIPDF CONVERT SHA1SUM MSGFMT ; do
233    eval tmp='$'$i
234    if test -z "$tmp"; then
235       missing_tools="$missing_tools `echo $i | tr 'A-Z' 'a-z'`"
236    fi
237 done
238
239 AC_CHECK_PROGS(GLIB_GENMARSHAL, glib-genmarshal)
240 AC_CHECK_PROGS(GLIB_COMPILE_SCHEMAS, glib-compile-schemas)
241 AC_CHECK_PROGS(GLIB_COMPILE_RESOURCES, glib-compile-resources)
242 AC_CHECK_PROGS(GDK_PIXBUF_CSOURCE, gdk-pixbuf-csource)
243 AC_CHECK_PROGS(GS, gs)
244 # For the claws manual we need:
245 AC_CHECK_PROGS(DOCBOOK2HTML, docbook2html)
246 AC_CHECK_PROGS(DOCBOOK2TXT, docbook2txt)
247 AC_CHECK_PROGS(DOCBOOK2PS, docbook2ps)
248 AC_CHECK_PROGS(DOCBOOK2PDF, docbook2pdf)
249
250
251 missing_opt_tools=
252 for i in GLIB_GENMARSHAL GLIB_COMPILE_SCHEMAS GLIB_COMPILE_RESOURCES \
253          GDK_PIXBUF_CSOURCE GS \
254          DOCBOOK2PDF DOCBOOK2TXT DOCBOOK2PS DOCBOOK2PDF; do
255    eval tmp='$'$i
256    if test -z "$tmp"; then
257       missing_opt_tools="$missing_opt_tools `echo $i | tr 'A-Z' 'a-z'`"
258    fi
259 done
260
261
262
263 # Optional tools.
264
265 AC_CHECK_PROGS(WGET, wget)
266
267
268 # Packages.
269 gpg4win_dup_sources=""
270
271 GPG4WIN_BPKG_GNU([libiconv])
272 GPG4WIN_BPKG_GNU([gettext], [libiconv])
273
274 GPG4WIN_SPKG([zlib])
275 GPG4WIN_BPKG_GNUWIN32([bsfilter])
276
277 GPG4WIN_BPKG_GTK([pkgconfig])
278
279 GPG4WIN_SPKG([libffi], [pkgconfig])
280 GPG4WIN_SPKG([glib], [libiconv gettext pkgconfig libffi zlib])
281 GPG4WIN_BPKG_GTK_DEV([atk], [glib pkgconfig])
282 GPG4WIN_BPKG_GTK_DEV([pango], [glib pkgconfig])
283 GPG4WIN_BPKG_GTK_DEV([cairo], [glib pkgconfig])
284 GPG4WIN_BPKG_GTK_DEV([expat])
285 GPG4WIN_BPKG_GTK_DEV([freetype], [pkgconfig zlib])
286 GPG4WIN_BPKG_GTK_DEV([fontconfig], [pkgconfig zlib expat])
287 GPG4WIN_SPKG([gdk-pixbuf], [glib])
288 GPG4WIN_SPKG([gtk+], [libiconv gettext pkgconfig atk pango dnl
289                       glib gdk-pixbuf cairo])
290 GPG4WIN_SPKG([libpng], [pkgconfig])
291 GPG4WIN_SPKG([enchant], [pkgconfig glib])
292
293 GPG4WIN_SPKG([bzip2])
294 GPG4WIN_SPKG([adns])
295 GPG4WIN_SPKG([libgpg-error], [libiconv gettext])
296 GPG4WIN_SPKG([libgcrypt], [libgpg-error])
297 GPG4WIN_SPKG([libksba], [libgpg-error])
298 GPG4WIN_SPKG([w32pth])
299 GPG4WIN_SPKG([libassuan], [libgpg-error w32pth])
300 GPG4WIN_SPKG([dirmngr], [libgpg-error libgcrypt libassuan libksba w32pth])
301 GPG4WIN_SPKG([pinentry], [libiconv gtk+])
302 GPG4WIN_SPKG([gpgme], [libgpg-error gnupg2 glib])
303 GPG4WIN_SPKG([curl], [zlib gnutls])
304 GPG4WIN_SPKG([gnupg2], [libiconv libgcrypt libksba libassuan libgpg-error dnl
305                         w32pth zlib bzip2 adns pinentry])
306 GPG4WIN_SPKG([pthreads-w32])
307 GPG4WIN_SPKG([gpgol], [gpgme libassuan])
308 GPG4WIN_SPKG([gpgex], [libassuan])
309 GPG4WIN_SPKG([scute], [libgpg-error libassuan])
310 GPG4WIN_SPKG([paperkey])
311 GPG4WIN_SPKG([gpa], [libiconv gettext zlib gtk+ libpng glib gpgme])
312 GPG4WIN_SPKG([libgsasl])
313 GPG4WIN_SPKG([libtasn1])
314 GPG4WIN_SPKG([gnutls], [libgsasl libtasn1 libgcrypt])
315 GPG4WIN_SPKG([libetpan], [pthreads-w32 gnutls])
316 GPG4WIN_SPKG([libxml2], [zlib])
317 GPG4WIN_SPKG([regex])
318 GPG4WIN_SPKG([crypt])
319 GPG4WIN_SPKG([claws-mail], [libiconv gettext zlib gtk+ libpng enchant glib dnl
320                             gpgme pthreads-w32 crypt regex libetpan gnutls])
321 GPG4WIN_SPKG([notification_plugin], [claws-mail])
322 GPG4WIN_SPKG([gtkhtml2_viewer], [curl claws-mail libxml2])
323 GPG4WIN_SPKG([vcalendar], [curl claws-mail])
324 GPG4WIN_SPKG([rssyl], [curl claws-mail])
325 GPG4WIN_SPKG([tnef_parse], [claws-mail])
326 GPG4WIN_SPKG([attachwarner], [claws-mail])
327 GPG4WIN_SPKG([bsfilter_plugin], [claws-mail])
328 GPG4WIN_IPKG([compendium])
329
330 # Qt related stuff.
331 GPG4WIN_BPKG_GNUWIN32([kdesupport])
332 GPG4WIN_BPKG_BINSRC([oxygen-icons])
333 GPG4WIN_BPKG_GNUWIN32([qt], [kdesupport])
334 GPG4WIN_BPKG_GNUWIN32([kdelibs], [qt oxygen-icons])
335 GPG4WIN_BPKG_BINSRC([kleopatra], [gpgme gnupg2 kdelibs])
336 #GPG4WIN_BPKG_GNUWIN32([kleopatra], [gpgme gnupg2 kdelibs])
337
338 GPG4WIN_FINALIZE
339
340 # Qt is compiled with -mthreads, and thus requires the mingwm10.dll.
341 mingwm_dll=no
342 AC_ARG_WITH([mingwm-dll],
343             AC_HELP_STRING([--with-mingwm-dll=FILE], [use the mingwm DLL]),
344             [mingwm_dll=$withval])
345 if test "$mingwm_dll" = "no"; then
346   file="/usr/share/doc/mingw32-runtime/mingwm10.dll.gz"
347   if test -r "$file"; then
348     mingwm_dll="$file"
349   fi
350 fi
351 if test "$mingwm_dll" = "no"; then
352   missing_tools="mingwm10.dll $missing_tools"
353 fi
354 # To make things simple, we just install a copy of the file in the
355 # source directory.  No need to make this ugly hack any uglier by
356 # messing around with the build system.
357 case "$mingwm_dll" in
358     *.gz)
359       $ZCAT $mingwm_dll > src/mingwm10.dll
360       ;;
361     *)
362       cp $mingwm_dll src/mingwm10.dll
363       ;;
364 esac
365
366
367 # Throw an error if required tools are missing
368 if test -n "$missing_tools"; then
369     for i in $missing_tools; do
370       AC_MSG_NOTICE([$i is missing])
371     done
372     AC_MSG_ERROR([[
373 ***
374 *** Required tools not found. Please consult the above messages
375 *** and install them before running configure again.
376 ***]])
377 fi
378
379 # Throw an error if any duplicate source packages have been found
380 if test -n "$gpg4win_dup_sources"; then
381     tmp=
382     for i in $gpg4win_dup_sources; do
383       tmp="$tmp
384 $i"
385     done
386     AC_MSG_ERROR([Packages with more that one source version:$tmp])
387 fi
388
389
390 # Finalize.
391
392 AC_CONFIG_COMMANDS([gpg4win-conf],[[
393 chmod +x patches/gnupg2/01-version.patch
394 ]])
395
396 AC_CONFIG_FILES(Makefile)
397 AC_CONFIG_FILES(packages/Makefile include/Makefile src/Makefile po/Makefile.in)
398 AC_CONFIG_FILES(include/config.nsi src/gpg4win.mk)
399 AC_CONFIG_FILES(doc/Makefile)
400 AC_CONFIG_FILES(doc/logo/Makefile)
401 AC_CONFIG_FILES(doc/manual/Makefile doc/manual/version.tex)
402 AC_CONFIG_FILES(src/dictionaries/Makefile)
403 AC_CONFIG_FILES(patches/gnupg2/01-version.patch)
404 AC_OUTPUT
405
406 # Throw a warning if optional tools are missing
407 if test -n "$missing_opt_tools"; then
408     AC_MSG_WARN([[
409 ***
410 *** Some tools not found.  They may or may not be needed depending on
411 *** the packages you want to include.  For example GLIB and GTK+
412 *** require certain tools; you may need to install a recent version of
413 *** GLIB and GTK+ on the build machine to allow for cross-compiling.
414 ***]])
415     for i in $missing_opt_tools; do
416       AC_MSG_NOTICE([$i is missing])
417     done
418 fi
419
420 echo "
421         $PACKAGE_NAME-$PACKAGE_VERSION prepared for make
422
423         Revision: ${GIT_REVISION}  (${GIT_REVISION_DEC})
424         Platform: $host
425 "