Post release version bump
[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 m4_define([my_version], [3.1.1])
29
30 # Below is m4 magic to extract and compute the git revision number,
31 # the decimalized short revision number, a beta version string and a
32 # flag indicating a development version (my_isgit). The latter works
33 # by requiring the final tag in the repository.
34 m4_define([git_revision],
35           m4_esyscmd([git rev-parse --short HEAD | tr -d '\n\r']))
36 m4_define([git_revision_dec],
37           m4_esyscmd_s([echo $((0x$(echo ]git_revision[|head -c 4)))]))
38 m4_define([git_betastring],
39           m4_esyscmd_s([git describe --tags --match 'gpg4win-[0-9].*.*[0-9]' \
40                        --long | awk -F- '$3!=0{print"-beta"$3}']))
41 m4_define([my_isgit],m4_if(git_betastring,[],[no],[yes]))
42 m4_define([my_full_version],[my_version[]git_betastring])
43
44 AC_INIT([gpg4win],[my_full_version],[gpg4win-devel@wald.intevation.org])
45
46 # Remember to update these version numbers also in the NEWS file.
47 MANUALVERSION_EINSTEIGER="2.0.2"
48 MANUALDATE_EINSTEIGER="30. Mai 2006"
49 MANUALVERSION_DURCHBLICKER="2.0.2"
50 MANUALDATE_DURCHBLICKER="30. Mai 2006"
51 MANUALVERSION_NOVICES="1.0.0"
52 MANUALDATE_NOVICES="Nov. 30, 2006"
53 MANUALVERSION_ADVANCED="0.0.0"
54 MANUALDATE_ADVANCED="Nov. 30, 2006"
55 COMPENDIUM_VERSION_DE="4.0.1"
56 COMPENDIUM_DATE_DE="3. April 2018"
57 COMPENDIUMINPROGRESS_DE="zuletzt geringfügig korrigiert am 3. April 2018"
58 COMPENDIUM_VERSION_EN="3.0.0"
59 COMPENDIUM_DATE_EN="30th November 2016"
60 COMPENDIUMINPROGRESS_EN="last minor changes from 30th November 2016"
61
62 MANUALINPROGRESS_DE=m4_if(my_isgit,[yes],["~und evtl. seitdem weiter bearbeitet"])
63 MANUALINPROGRESS_EN=m4_if(my_isgit,[yes],["~and may have been further edited"])
64 PACKAGE=$PACKAGE_NAME
65 VERSION=$PACKAGE_VERSION
66 GIT_REVISION=git_revision
67 GIT_REVISION_DEC=git_revision_dec
68
69
70 AC_CONFIG_SRCDIR(src/config.nsi.in)
71 AC_CONFIG_MACRO_DIR(m4)
72
73 AM_INIT_AUTOMAKE([tar-ustar])
74 AM_MAINTAINER_MODE
75 AC_CANONICAL_HOST
76 AM_CONFIG_HEADER(config.h)
77
78 # Language support
79 AM_PO_SUBDIRS
80
81
82 AC_SUBST(PACKAGE)
83 AC_SUBST(VERSION)
84 AC_SUBST(MANUALVERSION_EINSTEIGER)
85 AC_SUBST(MANUALDATE_EINSTEIGER)
86 AC_SUBST(MANUALVERSION_DURCHBLICKER)
87 AC_SUBST(MANUALDATE_DURCHBLICKER)
88 AC_SUBST(MANUALINPROGRESS_DE)
89 AC_SUBST(MANUALVERSION_NOVICES)
90 AC_SUBST(MANUALDATE_NOVICES)
91 AC_SUBST(MANUALVERSION_ADVANCED)
92 AC_SUBST(MANUALDATE_ADVANCED)
93 AC_SUBST(MANUALINPROGRESS_EN)
94 AC_SUBST(COMPENDIUM_VERSION_DE)
95 AC_SUBST(COMPENDIUM_DATE_DE)
96 AC_SUBST(COMPENDIUMINPROGRESS_DE)
97 AC_SUBST(COMPENDIUM_VERSION_EN)
98 AC_SUBST(COMPENDIUM_DATE_EN)
99 AC_SUBST(COMPENDIUMINPROGRESS_EN)
100
101 if echo "${PACKAGE_VERSION}" | egrep 'svn|rc|beta|git' >/dev/null ; then
102   IS_BETA_BUILD=yes
103 else
104   IS_BETA_BUILD=no
105 fi
106 AC_SUBST(IS_BETA_BUILD)
107
108 # Generate extended version information.  Note, that for NSIS use we
109 # must not translate the dots to commas in the BUILD_FILEVERSION.
110 BUILD_TIMESTAMP=`date --iso-8601=minutes`
111 BUILD_ISODATE=`date --iso-8601`
112 changequote(,)dnl
113 BUILD_FILEVERSION=`echo "$VERSION" | sed 's/\([0-9.]*\).*/\1./'`
114 changequote([,])dnl
115 BUILD_FILEVERSION="${BUILD_FILEVERSION}${GIT_REVISION_DEC}"
116 AC_SUBST(BUILD_TIMESTAMP)
117 AC_SUBST(BUILD_ISODATE)
118 AC_SUBST(BUILD_FILEVERSION)
119
120 # To test the manuals using an actual web server, the preview target
121 # may be used in doc/manuals.  The default is my (wk) test environment
122 # but may be overriden using another preview variable.  PREVIEWHOST is
123 # expected to be the target for an rsync command.
124 if test -z "$PREVIEWHOST" ; then
125    PREVIEWHOST="vigenere:/var/www/all/preview.gpg4win.org/htdocs/"
126 fi
127 AC_SUBST(PREVIEWHOST)
128
129 # The final release is copied to an archive server.  The default
130 # location may be changed by setting the RELEASEHOST envvar.
131 if test -z "$RELEASEHOST" ; then
132    RELEASEHOST="vigenere:tarballs/gpg4win"
133    if test "${IS_BETA_BUILD}" = yes ; then
134       RELEASEHOST="${RELEASEHOST}/Beta"
135    fi
136 fi
137 AC_SUBST(RELEASEHOST)
138
139 # Substitutions to set generated files in a Emacs buffer to read-only.
140 AC_SUBST(emacs_local_vars_begin, ['Local Variables:'])
141 AC_SUBST(emacs_local_vars_read_only, ['buffer-read-only: t'])
142 AC_SUBST(emacs_local_vars_end, ['End:'])
143
144 # For development of this package it is useful to build without
145 # creating the source installer (takes a long time).  This option may
146 # be used to suppress creation of the source installer.
147 AC_ARG_ENABLE(source-installer,
148     AC_HELP_STRING([--disable-source-installer],
149                    [Do not create the Source installer]),
150                     build_source_installer=$enableval,
151                     build_source_installer=yes)
152 AM_CONDITIONAL(BUILD_SOURCE_INSTALLER, test "$build_source_installer" = yes)
153
154
155 # You can build a light version of the installer in addition to the
156 # regular version.  This one does not contain the manuals.
157 AC_ARG_ENABLE(light-installer,
158     AC_HELP_STRING([--disable-light-installer],
159                    [Do not create the light version of the installer]),
160                     build_light_installer=$enableval,
161                     build_light_installer=no)
162 AM_CONDITIONAL(BUILD_LIGHT_INSTALLER, test "$build_light_installer" = yes)
163
164 # You can build a vanilla version of the installer, featuring only
165 # GnuPG, a pinentry and GPGME, in addition to the regular version.
166 # This one does not contain the manuals.
167 AC_ARG_ENABLE(vanilla-installer,
168     AC_HELP_STRING([--disable-vanilla-installer],
169                    [Do not create the vanilla version of the installer]),
170                     build_vanilla_installer=$enableval,
171                     build_vanilla_installer=no)
172 AM_CONDITIONAL(BUILD_VANILLA_INSTALLER, test "$build_vanilla_installer" = yes)
173
174 # If you want to build only the light or vanilla installer, you may
175 # disable building of the full installer.
176 AC_ARG_ENABLE(full-installer,
177     AC_HELP_STRING([--disable-full-installer],
178                    [Do not create the full version of the installer]),
179                     build_full_installer=$enableval,
180                     build_full_installer=yes)
181 AM_CONDITIONAL(BUILD_FULL_INSTALLER, test "$build_full_installer" = yes)
182
183 # For development it is often faster to build without manuals.
184 AC_ARG_ENABLE(manuals,
185     AC_HELP_STRING([--disable-manuals],
186                    [Do not build the manuals (for debugging)]),
187                     build_manuals=$enableval,
188                     build_manuals=yes)
189 AM_CONDITIONAL(BUILD_MANUALS, test "$build_manuals" = yes)
190
191 # Additionaly enable building gpgex for another host
192 AC_ARG_WITH([additional-gpgex-host],
193     AC_HELP_STRING([--with-additional-gpgex-host=HOST],
194                    [Additionaly build gpgex for this host]),
195                    [if test "$withval" = yes; then
196                       AC_MSG_FAILURE(
197                           [--with-additional-gpgex-host was given,
198                            but no host specified])
199                     else
200                       gpgex_host=$withval
201                     fi
202                    ],
203                     gpgex_host=no)
204
205 if test "$gpgex_host" != no; then
206     GPGEX_ADD_HOST="$gpgex_host"
207 fi
208 AC_SUBST(GPGEX_ADD_HOST)
209
210 AC_ARG_ENABLE(fast-makensis,
211     AC_HELP_STRING([--enable-fast-makensis],
212                    [Use a less efficient compressor to speed up building]),
213                     use_fast_makensis=$enableval,
214                     use_fast_makensis=no)
215 if test "$use_fast_makensis" = yes; then
216   EXTRA_MAKENSIS_FLAGS="${EXTRA_MAKENSIS_FLAGS} -DDISABLE_LZMA=1"
217 fi
218 AC_SUBST(EXTRA_MAKENSIS_FLAGS)
219
220
221 # Required tools.
222 AC_PROG_CC
223 AC_PROG_CPP
224 AC_PROG_RANLIB
225 AC_CHECK_TOOL(AR, ar, :)
226 AC_CHECK_TOOLS(STRIP, strip)
227 AC_CHECK_TOOLS(DLLTOOL, dlltool)
228 AC_CHECK_PROGS(MAKE, make)
229 AC_CHECK_PROGS(UNZIP, unzip)
230 AC_CHECK_PROGS(TAR, tar)
231 AC_CHECK_PROGS(MKDIR, mkdir)
232 AC_CHECK_PROGS(CP, cp)
233 AC_CHECK_PROGS(RM, rm)
234 AC_CHECK_PROGS(STOW, stow)
235 AC_CHECK_PROGS(MAKENSIS, makensis)
236 AC_CHECK_PROGS(ZCAT, zcat)
237 AC_CHECK_PROGS(TEXI2DVI, texi2dvi)
238 AC_CHECK_PROGS(DVIPDF, dvipdf)
239 AC_CHECK_PROGS(CONVERT, convert)
240 AC_CHECK_PROGS(SHA1SUM, sha1sum)
241 AC_CHECK_PROGS(MSGFMT, msgfmt)
242 AC_CHECK_PROGS(GITLOG_TO_CHANGELOG, gitlog-to-changelog,
243                [build-aux/gitlog-to-changelog])
244 AC_CHECK_PROGS(BUILD_CC, gcc cc)
245 AC_PROG_INSTALL
246
247 if test -n "$GPGEX_ADD_HOST"; then
248     AC_CHECK_TOOLS(STRIP_EX, ${GPGEX_ADD_HOST}-strip)
249 fi
250
251 if test -z "$GPG4WIN_PARALLEL"; then
252     JOBS=$(nproc 2>/dev/null || echo 1)
253     GPG4WIN_PARALLEL=-j$JOBS
254     AC_MSG_NOTICE([Using autodetected $JOBS make jobs. You can override this by setting GPG4WIN_PARALLEL.])
255 fi
256 AC_SUBST(GPG4WIN_PARALLEL)
257
258 missing_tools=
259 for i in DLLTOOL MAKE UNZIP TAR MKDIR CP RM STOW MAKENSIS ZCAT TEXI2DVI \
260          DVIPDF CONVERT SHA1SUM MSGFMT BUILD_CC; do
261    eval tmp='$'$i
262    if test -z "$tmp"; then
263       missing_tools="$missing_tools `echo $i | tr 'A-Z' 'a-z'`"
264    fi
265 done
266
267 # Additional runtime libraries from mingw.
268 GPG4WIN_RUNTIME_LIBRARY(libgcc_s_sjlj-1)
269 GPG4WIN_RUNTIME_LIBRARY(libstdc++-6)
270 GPG4WIN_RUNTIME_LIBRARY(libwinpthread-1)
271
272 AC_CHECK_PROGS(GLIB_GENMARSHAL, glib-genmarshal)
273 AC_CHECK_PROGS(GLIB_COMPILE_SCHEMAS, glib-compile-schemas)
274 AC_CHECK_PROGS(GLIB_COMPILE_RESOURCES, glib-compile-resources)
275 AC_CHECK_PROGS(GDK_PIXBUF_CSOURCE, gdk-pixbuf-csource)
276
277
278 missing_opt_tools=
279 for i in GLIB_GENMARSHAL GLIB_COMPILE_SCHEMAS GLIB_COMPILE_RESOURCES \
280          GDK_PIXBUF_CSOURCE; do
281    eval tmp='$'$i
282    if test -z "$tmp"; then
283       missing_opt_tools="$missing_opt_tools `echo $i | tr 'A-Z' 'a-z'`"
284    fi
285 done
286
287
288
289 # Optional tools.
290
291 AC_CHECK_PROGS(WGET, wget)
292
293
294 # Packages.
295 gpg4win_dup_sources=""
296
297
298 GPG4WIN_SPKG([zlib])
299
300 GPG4WIN_BPKG_GTK([pkgconfig])
301
302 GPG4WIN_SPKG([libffi], [pkgconfig])
303 GPG4WIN_SPKG([glib], [libiconv gettext pkgconfig libffi zlib])
304 GPG4WIN_BPKG_GTK_DEV([atk], [glib pkgconfig])
305 GPG4WIN_BPKG_GTK_DEV([pango], [glib pkgconfig])
306 GPG4WIN_BPKG_GTK_DEV([cairo], [glib pkgconfig])
307 GPG4WIN_BPKG_GTK_DEV([expat])
308 GPG4WIN_BPKG_GTK_DEV([freetype], [pkgconfig zlib])
309 GPG4WIN_BPKG_GTK_DEV([fontconfig], [pkgconfig zlib expat])
310 GPG4WIN_SPKG([gdk-pixbuf], [glib])
311 GPG4WIN_SPKG([gtk+], [libiconv gettext pkgconfig atk pango dnl
312                       glib gdk-pixbuf cairo])
313 GPG4WIN_SPKG([libpng], [pkgconfig])
314
315 GPG4WIN_SPKG([bzip2])
316 GPG4WIN_SPKG([libgpg-error], [libiconv gettext])
317 GPG4WIN_SPKG([libassuan], [libgpg-error w32pth])
318 GPG4WIN_SPKG([pinentry], [qtbase libiconv gtk+])
319 GPG4WIN_SPKG([gpgme], [libgpg-error glib qtbase])
320 GPG4WIN_SPKG([gpgol], [gpgme libassuan])
321 GPG4WIN_SPKG([gpgex], [libassuan])
322 GPG4WIN_SPKG([paperkey])
323 GPG4WIN_SPKG([gpa], [libiconv gettext zlib gtk+ libpng glib gpgme])
324 GPG4WIN_SPKG([w32pth])
325 GPG4WIN_SPKG([libiconv])
326 GPG4WIN_SPKG([gettext], [libiconv])
327
328
329 # Packages needed for gpgex
330 GPG4WIN_SPKGEX([libgpg-error])
331 GPG4WIN_SPKGEX([libassuan], [libgpg-error])
332 GPG4WIN_SPKGEX([gpgex], [libassuan])
333 GPG4WIN_SPKGEX([gpgme], [libgpg-error libassuan])
334 GPG4WIN_SPKGEX([gpgol], [gpgme])
335
336 GPG4WIN_IPKG([compendium])
337
338 # The GnuPG Package.
339 GPG4WIN_BPKG_BINSRC([gnupg-w32])
340 # See the script kde-l10n.sh how this package is created.
341 GPG4WIN_BPKG_BINSRC([kde-l10n])
342
343 # Qt related stuff.
344 GPG4WIN_SPKG([qtbase], [libpng])
345 GPG4WIN_SPKG([qttools], [qtbase])
346 GPG4WIN_SPKG([qttranslations], [qtsvg qttools qtwinextras])
347 GPG4WIN_SPKG([qtwinextras], [qtbase])
348 GPG4WIN_SPKG([qtsvg], [qtbase])
349 GPG4WIN_SPKG([boost], [expat zlib bzip2])
350 GPG4WIN_KDEPKG([breeze-icons], [extra-cmake-modules qtbase])
351 GPG4WIN_KDEPKG([kleopatra], [gnupg-w32 breeze-icons kxmlgui libkleo kde-l10n kitemmodels qttranslations])
352 GPG4WIN_KDEPKG([extra-cmake-modules])
353 GPG4WIN_KDEPKG([kconfig], [qtbase qttools extra-cmake-modules])
354 GPG4WIN_KDEPKG([ki18n], [qtbase gettext qttools extra-cmake-modules])
355 GPG4WIN_KDEPKG([kwidgetsaddons], [kconfig qttools qtbase])
356 GPG4WIN_KDEPKG([kcompletion], [kwidgetsaddons])
357 GPG4WIN_KDEPKG([kwindowsystem], [qtbase qtwinextras])
358 GPG4WIN_KDEPKG([kcoreaddons], [qtbase qttools])
359 GPG4WIN_KDEPKG([kcodecs], [qtbase qttools])
360 GPG4WIN_KDEPKG([kguiaddons], [qtbase qttools])
361 GPG4WIN_KDEPKG([kmime], [kcodecs])
362 GPG4WIN_KDEPKG([kconfigwidgets], [kwidgetsaddons kguiaddons ki18n kcodecs kconfig])
363 GPG4WIN_KDEPKG([kitemviews], [qtbase qttools])
364 GPG4WIN_KDEPKG([kitemmodels], [qtbase qttools])
365 GPG4WIN_KDEPKG([karchive], [qtbase qttools extra-cmake-modules])
366 GPG4WIN_KDEPKG([kcrash], [kwindowsystem kcoreaddons])
367 GPG4WIN_KDEPKG([kiconthemes], [qtsvg kconfigwidgets karchive])
368 GPG4WIN_KDEPKG([kxmlgui], [kiconthemes kconfigwidgets kitemviews])
369 GPG4WIN_KDEPKG([libkleo], [kmime kwidgetsaddons kwindowsystem kcompletion kconfig gpgme])
370 GPG4WIN_KDEPKG([gpg4win-tools], [libkleo gpgme])
371
372 GPG4WIN_FINALIZE
373
374 # Throw an error if required tools are missing
375 if test -n "$missing_tools"; then
376     for i in $missing_tools; do
377       AC_MSG_NOTICE([$i is missing])
378     done
379     AC_MSG_ERROR([[
380 ***
381 *** Required tools not found. Please consult the above messages
382 *** and install them before running configure again.
383 ***]])
384 fi
385
386 # Throw an error if any duplicate source packages have been found
387 if test -n "$gpg4win_dup_sources"; then
388     tmp=
389     for i in $gpg4win_dup_sources; do
390       tmp="$tmp
391 $i"
392     done
393     tmp2="
394 You might remove them with:"
395     for i in $gpg4win_rm_candidates; do
396         if ! grep -q $(basename $i) packages/packages.current; then
397             tmp2="$tmp2
398 rm $i"
399         fi
400     done
401     AC_MSG_ERROR([Packages with more that one source version:$tmp$tmp2])
402 fi
403
404
405 # Finalize.
406
407 AC_CONFIG_FILES(Makefile)
408 AC_CONFIG_FILES(packages/Makefile src/Makefile po/Makefile.in)
409 AC_CONFIG_FILES(po/build-cc)
410 AC_CONFIG_FILES(src/config.nsi src/gpg4win.mk)
411 AC_CONFIG_FILES(doc/Makefile)
412 AC_CONFIG_FILES(doc/logo/Makefile)
413 AC_CONFIG_FILES(doc/manual/Makefile doc/manual/version.tex)
414 AC_CONFIG_FILES(src/toolchain.cmake)
415 AC_OUTPUT
416
417 # Throw a warning if optional tools are missing
418 if test -n "$missing_opt_tools"; then
419     AC_MSG_WARN([[
420 ***
421 *** Some tools not found.  They may or may not be needed depending on
422 *** the packages you want to include.  For example GLIB and GTK+
423 *** require certain tools; you may need to install a recent version of
424 *** GLIB and GTK+ on the build machine to allow for cross-compiling.
425 ***]])
426     for i in $missing_opt_tools; do
427       AC_MSG_NOTICE([$i is missing])
428     done
429 fi
430
431 echo -n "
432         $PACKAGE_NAME-$PACKAGE_VERSION prepared for make
433
434         Revision: ${GIT_REVISION}  (${GIT_REVISION_DEC})
435         32bit platform: $host
436         64bit platform: ${GPGEX_ADD_HOST}
437 "
438 if test -n "$JOBS"; then
439     echo "        make jobs: ${JOBS}"
440 else
441     echo ""
442 fi