2009-12-08 Marcus Brinkmann <marcus@g10code.de>
[libgcrypt.git] / m4 / ltoptions.m4
1 # Helper functions for option handling.                    -*- Autoconf -*-
2 #
3 #   Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
4 #   Written by Gary V. Vaughan, 2004
5 #
6 # This file is free software; the Free Software Foundation gives
7 # unlimited permission to copy and/or distribute it, with or without
8 # modifications, as long as this notice is preserved.
9
10 # serial 6 ltoptions.m4
11
12 # This is to help aclocal find these macros, as it can't see m4_define.
13 AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
14
15
16 # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
17 # ------------------------------------------
18 m4_define([_LT_MANGLE_OPTION],
19 [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
20
21
22 # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
23 # ---------------------------------------
24 # Set option OPTION-NAME for macro MACRO-NAME, and if there is a
25 # matching handler defined, dispatch to it.  Other OPTION-NAMEs are
26 # saved as a flag.
27 m4_define([_LT_SET_OPTION],
28 [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
29 m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
30         _LT_MANGLE_DEFUN([$1], [$2]),
31     [m4_warning([Unknown $1 option `$2'])])[]dnl
32 ])
33
34
35 # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
36 # ------------------------------------------------------------
37 # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
38 m4_define([_LT_IF_OPTION],
39 [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
40
41
42 # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
43 # -------------------------------------------------------
44 # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
45 # are set.
46 m4_define([_LT_UNLESS_OPTIONS],
47 [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
48             [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
49                       [m4_define([$0_found])])])[]dnl
50 m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
51 ])[]dnl
52 ])
53
54
55 # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
56 # ----------------------------------------
57 # OPTION-LIST is a space-separated list of Libtool options associated
58 # with MACRO-NAME.  If any OPTION has a matching handler declared with
59 # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
60 # the unknown option and exit.
61 m4_defun([_LT_SET_OPTIONS],
62 [# Set options
63 m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
64     [_LT_SET_OPTION([$1], _LT_Option)])
65
66 m4_if([$1],[LT_INIT],[
67   dnl
68   dnl Simply set some default values (i.e off) if boolean options were not
69   dnl specified:
70   _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
71   ])
72   _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
73   ])
74   dnl
75   dnl If no reference was made to various pairs of opposing options, then
76   dnl we run the default mode handler for the pair.  For example, if neither
77   dnl `shared' nor `disable-shared' was passed, we enable building of shared
78   dnl archives by default:
79   _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
80   _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
81   _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
82   _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
83                    [_LT_ENABLE_FAST_INSTALL])
84   ])
85 ])# _LT_SET_OPTIONS
86
87
88 ## --------------------------------- ##
89 ## Macros to handle LT_INIT options. ##
90 ## --------------------------------- ##
91
92 # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
93 # -----------------------------------------
94 m4_define([_LT_MANGLE_DEFUN],
95 [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
96
97
98 # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
99 # -----------------------------------------------
100 m4_define([LT_OPTION_DEFINE],
101 [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
102 ])# LT_OPTION_DEFINE
103
104
105 # dlopen
106 # ------
107 LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
108 ])
109
110 AU_DEFUN([AC_LIBTOOL_DLOPEN],
111 [_LT_SET_OPTION([LT_INIT], [dlopen])
112 AC_DIAGNOSE([obsolete],
113 [$0: Remove this warning and the call to _LT_SET_OPTION when you
114 put the `dlopen' option into LT_INIT's first parameter.])
115 ])
116
117 dnl aclocal-1.4 backwards compatibility:
118 dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
119
120
121 # win32-dll
122 # ---------
123 # Declare package support for building win32 dll's.
124 LT_OPTION_DEFINE([LT_INIT], [win32-dll],
125 [enable_win32_dll=yes
126
127 case $host in
128 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
129   AC_CHECK_TOOL(AS, as, false)
130   AC_CHECK_TOOL(DLLTOOL, dlltool, false)
131   AC_CHECK_TOOL(OBJDUMP, objdump, false)
132   ;;
133 esac
134
135 test -z "$AS" && AS=as
136 _LT_DECL([], [AS],      [0], [Assembler program])dnl
137
138 test -z "$DLLTOOL" && DLLTOOL=dlltool
139 _LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
140
141 test -z "$OBJDUMP" && OBJDUMP=objdump
142 _LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl
143 ])# win32-dll
144
145 AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
146 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
147 _LT_SET_OPTION([LT_INIT], [win32-dll])
148 AC_DIAGNOSE([obsolete],
149 [$0: Remove this warning and the call to _LT_SET_OPTION when you
150 put the `win32-dll' option into LT_INIT's first parameter.])
151 ])
152
153 dnl aclocal-1.4 backwards compatibility:
154 dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
155
156
157 # _LT_ENABLE_SHARED([DEFAULT])
158 # ----------------------------
159 # implement the --enable-shared flag, and supports the `shared' and
160 # `disable-shared' LT_INIT options.
161 # DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
162 m4_define([_LT_ENABLE_SHARED],
163 [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
164 AC_ARG_ENABLE([shared],
165     [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
166         [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
167     [p=${PACKAGE-default}
168     case $enableval in
169     yes) enable_shared=yes ;;
170     no) enable_shared=no ;;
171     *)
172       enable_shared=no
173       # Look at the argument we got.  We use all the common list separators.
174       lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
175       for pkg in $enableval; do
176         IFS="$lt_save_ifs"
177         if test "X$pkg" = "X$p"; then
178           enable_shared=yes
179         fi
180       done
181       IFS="$lt_save_ifs"
182       ;;
183     esac],
184     [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
185
186     _LT_DECL([build_libtool_libs], [enable_shared], [0],
187         [Whether or not to build shared libraries])
188 ])# _LT_ENABLE_SHARED
189
190 LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
191 LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
192
193 # Old names:
194 AC_DEFUN([AC_ENABLE_SHARED],
195 [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
196 ])
197
198 AC_DEFUN([AC_DISABLE_SHARED],
199 [_LT_SET_OPTION([LT_INIT], [disable-shared])
200 ])
201
202 AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
203 AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
204
205 dnl aclocal-1.4 backwards compatibility:
206 dnl AC_DEFUN([AM_ENABLE_SHARED], [])
207 dnl AC_DEFUN([AM_DISABLE_SHARED], [])
208
209
210
211 # _LT_ENABLE_STATIC([DEFAULT])
212 # ----------------------------
213 # implement the --enable-static flag, and support the `static' and
214 # `disable-static' LT_INIT options.
215 # DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
216 m4_define([_LT_ENABLE_STATIC],
217 [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
218 AC_ARG_ENABLE([static],
219     [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
220         [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
221     [p=${PACKAGE-default}
222     case $enableval in
223     yes) enable_static=yes ;;
224     no) enable_static=no ;;
225     *)
226      enable_static=no
227       # Look at the argument we got.  We use all the common list separators.
228       lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
229       for pkg in $enableval; do
230         IFS="$lt_save_ifs"
231         if test "X$pkg" = "X$p"; then
232           enable_static=yes
233         fi
234       done
235       IFS="$lt_save_ifs"
236       ;;
237     esac],
238     [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
239
240     _LT_DECL([build_old_libs], [enable_static], [0],
241         [Whether or not to build static libraries])
242 ])# _LT_ENABLE_STATIC
243
244 LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
245 LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
246
247 # Old names:
248 AC_DEFUN([AC_ENABLE_STATIC],
249 [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
250 ])
251
252 AC_DEFUN([AC_DISABLE_STATIC],
253 [_LT_SET_OPTION([LT_INIT], [disable-static])
254 ])
255
256 AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
257 AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
258
259 dnl aclocal-1.4 backwards compatibility:
260 dnl AC_DEFUN([AM_ENABLE_STATIC], [])
261 dnl AC_DEFUN([AM_DISABLE_STATIC], [])
262
263
264
265 # _LT_ENABLE_FAST_INSTALL([DEFAULT])
266 # ----------------------------------
267 # implement the --enable-fast-install flag, and support the `fast-install'
268 # and `disable-fast-install' LT_INIT options.
269 # DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
270 m4_define([_LT_ENABLE_FAST_INSTALL],
271 [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
272 AC_ARG_ENABLE([fast-install],
273     [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
274     [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
275     [p=${PACKAGE-default}
276     case $enableval in
277     yes) enable_fast_install=yes ;;
278     no) enable_fast_install=no ;;
279     *)
280       enable_fast_install=no
281       # Look at the argument we got.  We use all the common list separators.
282       lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
283       for pkg in $enableval; do
284         IFS="$lt_save_ifs"
285         if test "X$pkg" = "X$p"; then
286           enable_fast_install=yes
287         fi
288       done
289       IFS="$lt_save_ifs"
290       ;;
291     esac],
292     [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
293
294 _LT_DECL([fast_install], [enable_fast_install], [0],
295          [Whether or not to optimize for fast installation])dnl
296 ])# _LT_ENABLE_FAST_INSTALL
297
298 LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
299 LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
300
301 # Old names:
302 AU_DEFUN([AC_ENABLE_FAST_INSTALL],
303 [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
304 AC_DIAGNOSE([obsolete],
305 [$0: Remove this warning and the call to _LT_SET_OPTION when you put
306 the `fast-install' option into LT_INIT's first parameter.])
307 ])
308
309 AU_DEFUN([AC_DISABLE_FAST_INSTALL],
310 [_LT_SET_OPTION([LT_INIT], [disable-fast-install])
311 AC_DIAGNOSE([obsolete],
312 [$0: Remove this warning and the call to _LT_SET_OPTION when you put
313 the `disable-fast-install' option into LT_INIT's first parameter.])
314 ])
315
316 dnl aclocal-1.4 backwards compatibility:
317 dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
318 dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
319
320
321 # _LT_WITH_PIC([MODE])
322 # --------------------
323 # implement the --with-pic flag, and support the `pic-only' and `no-pic'
324 # LT_INIT options.
325 # MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
326 m4_define([_LT_WITH_PIC],
327 [AC_ARG_WITH([pic],
328     [AS_HELP_STRING([--with-pic],
329         [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
330     [pic_mode="$withval"],
331     [pic_mode=default])
332
333 test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
334
335 _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
336 ])# _LT_WITH_PIC
337
338 LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
339 LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
340
341 # Old name:
342 AU_DEFUN([AC_LIBTOOL_PICMODE],
343 [_LT_SET_OPTION([LT_INIT], [pic-only])
344 AC_DIAGNOSE([obsolete],
345 [$0: Remove this warning and the call to _LT_SET_OPTION when you
346 put the `pic-only' option into LT_INIT's first parameter.])
347 ])
348
349 dnl aclocal-1.4 backwards compatibility:
350 dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
351
352 ## ----------------- ##
353 ## LTDL_INIT Options ##
354 ## ----------------- ##
355
356 m4_define([_LTDL_MODE], [])
357 LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
358                  [m4_define([_LTDL_MODE], [nonrecursive])])
359 LT_OPTION_DEFINE([LTDL_INIT], [recursive],
360                  [m4_define([_LTDL_MODE], [recursive])])
361 LT_OPTION_DEFINE([LTDL_INIT], [subproject],
362                  [m4_define([_LTDL_MODE], [subproject])])
363
364 m4_define([_LTDL_TYPE], [])
365 LT_OPTION_DEFINE([LTDL_INIT], [installable],
366                  [m4_define([_LTDL_TYPE], [installable])])
367 LT_OPTION_DEFINE([LTDL_INIT], [convenience],
368                  [m4_define([_LTDL_TYPE], [convenience])])