Add 64bit version of GpgOL
[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], [2.3.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="3.0.0"
56 COMPENDIUM_DATE_DE="3. August 2015"
57 COMPENDIUMINPROGRESS_DE="zuletzt geringfügig korrigiert am 3. August 2015"
58 COMPENDIUM_VERSION_EN="3.0.0"
59 COMPENDIUM_DATE_EN="3rd August 2015"
60 COMPENDIUMINPROGRESS_EN="last minor changes from 3rd August 2015"
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=yes)
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=yes)
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 missing_tools=
252 for i in DLLTOOL MAKE UNZIP TAR MKDIR CP RM STOW MAKENSIS ZCAT TEXI2DVI \
253          DVIPDF CONVERT SHA1SUM MSGFMT BUILD_CC; do
254    eval tmp='$'$i
255    if test -z "$tmp"; then
256       missing_tools="$missing_tools `echo $i | tr 'A-Z' 'a-z'`"
257    fi
258 done
259
260 # GpgOL and GpgEx need the runtime libaries
261 # The default path should probably be more generic
262 changequote(,)dnl
263 gcc_major_minor=$($CC --version \
264                   | awk 'NR==1 {split($NF,a,"."); print a[1] "." a[2]}')
265 changequote([,])dnl
266
267 libgcc_dll=no
268 AC_ARG_WITH([libgcc_s_sjlj-1-dll],
269            AC_HELP_STRING([--with-libgcc_s_sjlj-1-dll=FILE],
270                           [use the libgcc_s_sjlj-1 DLL]),
271            [libgcc_dll=$withval])
272
273 if test "$libgcc_dll" = "no"; then
274   file="/usr/lib/gcc/$host/$gcc_major_minor/libgcc_s_sjlj-1.dll"
275   if test -r "$file"; then
276     libgcc_dll="$file"
277   fi
278 fi
279 if test "$libgcc_dll" = "no"; then
280   missing_opt_tools="libgcc_s_sjlj-1.dll $missing_opt_tools"
281 else
282   if test -r "$libgcc_dll"; then
283     cp $libgcc_dll src/libgcc_s_sjlj-1.dll-x
284   else
285     missing_opt_tools="libgcc_s_sjlj-1.dll $missing_opt_tools"
286   fi
287 fi
288
289 libstdcpp_dll=no
290 AC_ARG_WITH([libstdc++-6-dll],
291            AC_HELP_STRING([--with-libstdc++-6-dll=FILE],
292                           [use the libstd++-6 DLL]),
293            [libstdcpp_dll=$withval])
294 if test "$libstdcpp_dll" = "no"; then
295   file="/usr/lib/gcc/$host/$gcc_major_minor/libstdc++-6.dll"
296   if test -r "$file"; then
297     libstdcpp_dll="$file"
298   fi
299 fi
300 if test "$libstdcpp_dll" = "no"; then
301   missing_opt_tools="libstdc++-6.dll $missing_opt_tools"
302 else
303   if test -r "$libstdcpp_dll"; then
304     cp $libstdcpp_dll src/libstdc++-6.dll-x
305   else
306     missing_opt_tools="libstdc++-6.dll $missing_opt_tools"
307  fi
308 fi
309
310 AC_CHECK_PROGS(GLIB_GENMARSHAL, glib-genmarshal)
311 AC_CHECK_PROGS(GLIB_COMPILE_SCHEMAS, glib-compile-schemas)
312 AC_CHECK_PROGS(GLIB_COMPILE_RESOURCES, glib-compile-resources)
313 AC_CHECK_PROGS(GDK_PIXBUF_CSOURCE, gdk-pixbuf-csource)
314
315
316 missing_opt_tools=
317 for i in GLIB_GENMARSHAL GLIB_COMPILE_SCHEMAS GLIB_COMPILE_RESOURCES \
318          GDK_PIXBUF_CSOURCE; do
319    eval tmp='$'$i
320    if test -z "$tmp"; then
321       missing_opt_tools="$missing_opt_tools `echo $i | tr 'A-Z' 'a-z'`"
322    fi
323 done
324
325
326
327 # Optional tools.
328
329 AC_CHECK_PROGS(WGET, wget)
330
331
332 # Packages.
333 gpg4win_dup_sources=""
334
335
336 GPG4WIN_SPKG([zlib])
337
338 GPG4WIN_BPKG_GTK([pkgconfig])
339
340 GPG4WIN_SPKG([libffi], [pkgconfig])
341 GPG4WIN_SPKG([glib], [libiconv gettext pkgconfig libffi zlib])
342 GPG4WIN_BPKG_GTK_DEV([atk], [glib pkgconfig])
343 GPG4WIN_BPKG_GTK_DEV([pango], [glib pkgconfig])
344 GPG4WIN_BPKG_GTK_DEV([cairo], [glib pkgconfig])
345 GPG4WIN_BPKG_GTK_DEV([expat])
346 GPG4WIN_BPKG_GTK_DEV([freetype], [pkgconfig zlib])
347 GPG4WIN_BPKG_GTK_DEV([fontconfig], [pkgconfig zlib expat])
348 GPG4WIN_SPKG([gdk-pixbuf], [glib])
349 GPG4WIN_SPKG([gtk+], [libiconv gettext pkgconfig atk pango dnl
350                       glib gdk-pixbuf cairo])
351 GPG4WIN_SPKG([libpng], [pkgconfig])
352
353 GPG4WIN_SPKG([bzip2])
354 GPG4WIN_SPKG([adns])
355 GPG4WIN_SPKG([libgpg-error], [libiconv gettext])
356 GPG4WIN_SPKG([libgcrypt], [libgpg-error])
357 GPG4WIN_SPKG([libksba], [libgpg-error])
358 GPG4WIN_SPKG([libassuan], [libgpg-error w32pth])
359 GPG4WIN_SPKG([dirmngr], [libgpg-error libgcrypt libassuan libksba w32pth])
360 GPG4WIN_SPKG([pinentry], [libiconv gtk+])
361 GPG4WIN_SPKG([gpgme], [libgpg-error gnupg2 glib])
362 GPG4WIN_SPKG([curl], [zlib gnutls])
363 GPG4WIN_SPKG([gnupg2], [libiconv libgcrypt libksba libassuan libgpg-error dnl
364                         w32pth zlib bzip2 adns pinentry])
365 GPG4WIN_SPKG([gpgol], [gpgme libassuan])
366 GPG4WIN_SPKG([gpgex], [libassuan])
367 GPG4WIN_SPKG([scute], [libgpg-error libassuan])
368 GPG4WIN_SPKG([paperkey])
369 GPG4WIN_SPKG([gpa], [libiconv gettext zlib gtk+ libpng glib gpgme])
370 GPG4WIN_SPKG([libgsasl])
371 GPG4WIN_SPKG([libtasn1])
372 GPG4WIN_SPKG([gnutls], [libgsasl libtasn1 libgcrypt])
373 GPG4WIN_SPKG([w32pth])
374 GPG4WIN_SPKG([libiconv])
375 GPG4WIN_SPKG([gettext], [libiconv])
376
377
378 # Packages needed for gpgex
379 GPG4WIN_SPKGEX([libgpg-error])
380 GPG4WIN_SPKGEX([libassuan], [libgpg-error])
381 GPG4WIN_SPKGEX([gpgex], [libassuan])
382 GPG4WIN_SPKGEX([gpgme], [libgpg-error libassuan])
383 GPG4WIN_SPKGEX([gpgol], [gpgme])
384
385 GPG4WIN_IPKG([compendium])
386
387 # Qt related stuff.
388 GPG4WIN_BPKG_GNUWIN32([dbus])
389 GPG4WIN_BPKG_BINSRC([oxygen-icons])
390 GPG4WIN_BPKG_GNUWIN32([qt], [dbus])
391 GPG4WIN_BPKG_BINSRC([kleopatra], [gpgme gnupg2 qt oxygen-icons])
392
393 GPG4WIN_FINALIZE
394
395 # Throw an error if required tools are missing
396 if test -n "$missing_tools"; then
397     for i in $missing_tools; do
398       AC_MSG_NOTICE([$i is missing])
399     done
400     AC_MSG_ERROR([[
401 ***
402 *** Required tools not found. Please consult the above messages
403 *** and install them before running configure again.
404 ***]])
405 fi
406
407 # Throw an error if any duplicate source packages have been found
408 if test -n "$gpg4win_dup_sources"; then
409     tmp=
410     for i in $gpg4win_dup_sources; do
411       tmp="$tmp
412 $i"
413     done
414     AC_MSG_ERROR([Packages with more that one source version:$tmp])
415 fi
416
417
418 # Finalize.
419
420 AC_CONFIG_COMMANDS([gpg4win-conf],[[
421 chmod +x patches/gnupg2/01-version.patch
422 ]])
423
424 AC_CONFIG_FILES(Makefile)
425 AC_CONFIG_FILES(packages/Makefile src/Makefile po/Makefile.in)
426 AC_CONFIG_FILES(po/build-cc)
427 AC_CONFIG_FILES(src/config.nsi src/gpg4win.mk)
428 AC_CONFIG_FILES(doc/Makefile)
429 AC_CONFIG_FILES(doc/logo/Makefile)
430 AC_CONFIG_FILES(doc/manual/Makefile doc/manual/version.tex)
431 AC_CONFIG_FILES(src/dictionaries/Makefile)
432 AC_CONFIG_FILES(patches/gnupg2/01-version.patch)
433 AC_OUTPUT
434
435 # Throw a warning if optional tools are missing
436 if test -n "$missing_opt_tools"; then
437     AC_MSG_WARN([[
438 ***
439 *** Some tools not found.  They may or may not be needed depending on
440 *** the packages you want to include.  For example GLIB and GTK+
441 *** require certain tools; you may need to install a recent version of
442 *** GLIB and GTK+ on the build machine to allow for cross-compiling.
443 ***]])
444     for i in $missing_opt_tools; do
445       AC_MSG_NOTICE([$i is missing])
446     done
447 fi
448
449 echo "
450         $PACKAGE_NAME-$PACKAGE_VERSION prepared for make
451
452         Revision: ${GIT_REVISION}  (${GIT_REVISION_DEC})
453         32bit platform: $host
454         64bit platform: ${GPGEX_ADD_HOST}
455 "