1 # Helper functions for option handling. -*- Autoconf -*-
3 # Copyright (C) 2004-2005, 2007-2009, 2011-2019, 2021-2024 Free
4 # Software Foundation, Inc.
5 # Written by Gary V. Vaughan, 2004
7 # This file is free software; the Free Software Foundation gives
8 # unlimited permission to copy and/or distribute it, with or without
9 # modifications, as long as this notice is preserved.
11 # serial 10 ltoptions.m4
13 # This is to help aclocal find these macros, as it can't see m4_define.
14 AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
17 # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
18 # ------------------------------------------
19 m4_define([_LT_MANGLE_OPTION],
20 [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
23 # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
24 # ---------------------------------------
25 # Set option OPTION-NAME for macro MACRO-NAME, and if there is a
26 # matching handler defined, dispatch to it. Other OPTION-NAMEs are
28 m4_define([_LT_SET_OPTION],
29 [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
30 m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
31 _LT_MANGLE_DEFUN([$1], [$2]),
32 [m4_warning([Unknown $1 option '$2'])])[]dnl
36 # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
37 # ------------------------------------------------------------
38 # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
39 m4_define([_LT_IF_OPTION],
40 [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
43 # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
44 # -------------------------------------------------------
45 # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
47 m4_define([_LT_UNLESS_OPTIONS],
48 [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
49 [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
50 [m4_define([$0_found])])])[]dnl
51 m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
56 # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
57 # ----------------------------------------
58 # OPTION-LIST is a space-separated list of Libtool options associated
59 # with MACRO-NAME. If any OPTION has a matching handler declared with
60 # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
61 # the unknown option and exit.
62 m4_defun([_LT_SET_OPTIONS],
64 m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
65 [_LT_SET_OPTION([$1], _LT_Option)])
67 m4_if([$1],[LT_INIT],[
69 dnl Simply set some default values (i.e off) if boolean options were not
71 _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
73 _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
76 dnl If no reference was made to various pairs of opposing options, then
77 dnl we run the default mode handler for the pair. For example, if neither
78 dnl 'shared' nor 'disable-shared' was passed, we enable building of shared
79 dnl archives by default:
80 _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
81 _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
82 _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
83 _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
84 [_LT_ENABLE_FAST_INSTALL])
85 _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4],
86 [_LT_WITH_AIX_SONAME([aix])])
91 ## --------------------------------- ##
92 ## Macros to handle LT_INIT options. ##
93 ## --------------------------------- ##
95 # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
96 # -----------------------------------------
97 m4_define([_LT_MANGLE_DEFUN],
98 [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
101 # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
102 # -----------------------------------------------
103 m4_define([LT_OPTION_DEFINE],
104 [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
110 LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
113 AU_DEFUN([AC_LIBTOOL_DLOPEN],
114 [_LT_SET_OPTION([LT_INIT], [dlopen])
115 AC_DIAGNOSE([obsolete],
116 [$0: Remove this warning and the call to _LT_SET_OPTION when you
117 put the 'dlopen' option into LT_INIT's first parameter.])
120 dnl aclocal-1.4 backwards compatibility:
121 dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
126 # Declare package support for building win32 dll's.
127 LT_OPTION_DEFINE([LT_INIT], [win32-dll],
128 [enable_win32_dll=yes
131 *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-cegcc*)
132 AC_CHECK_TOOL(AS, as, false)
133 AC_CHECK_TOOL(DLLTOOL, dlltool, false)
134 AC_CHECK_TOOL(OBJDUMP, objdump, false)
138 test -z "$AS" && AS=as
139 _LT_DECL([], [AS], [1], [Assembler program])dnl
141 test -z "$DLLTOOL" && DLLTOOL=dlltool
142 _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
144 test -z "$OBJDUMP" && OBJDUMP=objdump
145 _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
148 AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
149 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
150 _LT_SET_OPTION([LT_INIT], [win32-dll])
151 AC_DIAGNOSE([obsolete],
152 [$0: Remove this warning and the call to _LT_SET_OPTION when you
153 put the 'win32-dll' option into LT_INIT's first parameter.])
156 dnl aclocal-1.4 backwards compatibility:
157 dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
160 # _LT_ENABLE_SHARED([DEFAULT])
161 # ----------------------------
162 # implement the --enable-shared flag, and supports the 'shared' and
163 # 'disable-shared' LT_INIT options.
164 # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
165 m4_define([_LT_ENABLE_SHARED],
166 [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
167 AC_ARG_ENABLE([shared],
168 [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
169 [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
170 [p=${PACKAGE-default}
172 yes) enable_shared=yes ;;
173 no) enable_shared=no ;;
176 # Look at the argument we got. We use all the common list separators.
177 lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
178 for pkg in $enableval; do
180 if test "X$pkg" = "X$p"; then
187 [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
189 _LT_DECL([build_libtool_libs], [enable_shared], [0],
190 [Whether or not to build shared libraries])
191 ])# _LT_ENABLE_SHARED
193 LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
194 LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
197 AC_DEFUN([AC_ENABLE_SHARED],
198 [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
201 AC_DEFUN([AC_DISABLE_SHARED],
202 [_LT_SET_OPTION([LT_INIT], [disable-shared])
205 AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
206 AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
208 dnl aclocal-1.4 backwards compatibility:
209 dnl AC_DEFUN([AM_ENABLE_SHARED], [])
210 dnl AC_DEFUN([AM_DISABLE_SHARED], [])
214 # _LT_ENABLE_STATIC([DEFAULT])
215 # ----------------------------
216 # implement the --enable-static flag, and support the 'static' and
217 # 'disable-static' LT_INIT options.
218 # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
219 m4_define([_LT_ENABLE_STATIC],
220 [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
221 AC_ARG_ENABLE([static],
222 [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
223 [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
224 [p=${PACKAGE-default}
226 yes) enable_static=yes ;;
227 no) enable_static=no ;;
230 # Look at the argument we got. We use all the common list separators.
231 lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
232 for pkg in $enableval; do
234 if test "X$pkg" = "X$p"; then
241 [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
243 _LT_DECL([build_old_libs], [enable_static], [0],
244 [Whether or not to build static libraries])
245 ])# _LT_ENABLE_STATIC
247 LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
248 LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
251 AC_DEFUN([AC_ENABLE_STATIC],
252 [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
255 AC_DEFUN([AC_DISABLE_STATIC],
256 [_LT_SET_OPTION([LT_INIT], [disable-static])
259 AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
260 AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
262 dnl aclocal-1.4 backwards compatibility:
263 dnl AC_DEFUN([AM_ENABLE_STATIC], [])
264 dnl AC_DEFUN([AM_DISABLE_STATIC], [])
268 # _LT_ENABLE_FAST_INSTALL([DEFAULT])
269 # ----------------------------------
270 # implement the --enable-fast-install flag, and support the 'fast-install'
271 # and 'disable-fast-install' LT_INIT options.
272 # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
273 m4_define([_LT_ENABLE_FAST_INSTALL],
274 [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
275 AC_ARG_ENABLE([fast-install],
276 [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
277 [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
278 [p=${PACKAGE-default}
280 yes) enable_fast_install=yes ;;
281 no) enable_fast_install=no ;;
283 enable_fast_install=no
284 # Look at the argument we got. We use all the common list separators.
285 lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
286 for pkg in $enableval; do
288 if test "X$pkg" = "X$p"; then
289 enable_fast_install=yes
295 [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
297 _LT_DECL([fast_install], [enable_fast_install], [0],
298 [Whether or not to optimize for fast installation])dnl
299 ])# _LT_ENABLE_FAST_INSTALL
301 LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
302 LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
305 AU_DEFUN([AC_ENABLE_FAST_INSTALL],
306 [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
307 AC_DIAGNOSE([obsolete],
308 [$0: Remove this warning and the call to _LT_SET_OPTION when you put
309 the 'fast-install' option into LT_INIT's first parameter.])
312 AU_DEFUN([AC_DISABLE_FAST_INSTALL],
313 [_LT_SET_OPTION([LT_INIT], [disable-fast-install])
314 AC_DIAGNOSE([obsolete],
315 [$0: Remove this warning and the call to _LT_SET_OPTION when you put
316 the 'disable-fast-install' option into LT_INIT's first parameter.])
319 dnl aclocal-1.4 backwards compatibility:
320 dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
321 dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
324 # _LT_WITH_AIX_SONAME([DEFAULT])
325 # ----------------------------------
326 # implement the --enable-aix-soname configure option, and support the
327 # `aix-soname=aix' and `aix-soname=both' and `aix-soname=svr4' LT_INIT options.
328 # DEFAULT is either `aix', `both', or `svr4'. If omitted, it defaults to `aix'.
329 m4_define([_LT_WITH_AIX_SONAME],
330 [m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl
331 shared_archive_member_spec=
332 case $host,$enable_shared in
333 power*-*-aix[[5-9]]*,yes)
334 AC_MSG_CHECKING([which variant of shared library versioning to provide])
335 AC_ARG_ENABLE([aix-soname],
336 [AS_HELP_STRING([--enable-aix-soname=aix|svr4|both],
337 [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])],
342 AC_MSG_ERROR([Unknown argument to --enable-aix-soname])
345 lt_cv_with_aix_soname=$enable_aix_soname],
346 [_AC_ENABLE_IF([with], [aix-soname],
351 AC_MSG_ERROR([Unknown argument to --with-aix-soname])
354 lt_cv_with_aix_soname=$with_aix_soname],
355 [AC_CACHE_VAL([lt_cv_with_aix_soname],
356 [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT)])
357 enable_aix_soname=$lt_cv_with_aix_soname])
358 with_aix_soname=$enable_aix_soname
359 AC_MSG_RESULT([$with_aix_soname])
360 if test aix != "$with_aix_soname"; then
361 # For the AIX way of multilib, we name the shared archive member
362 # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
363 # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
364 # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
365 # the AIX toolchain works better with OBJECT_MODE set (default 32).
366 if test 64 = "${OBJECT_MODE-32}"; then
367 shared_archive_member_spec=shr_64
369 shared_archive_member_spec=shr
378 _LT_DECL([], [shared_archive_member_spec], [0],
379 [Shared archive member basename, for filename based shared library versioning on AIX])dnl
380 ])# _LT_WITH_AIX_SONAME
382 LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])])
383 LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])])
384 LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])])
387 # _LT_WITH_PIC([MODE])
388 # --------------------
389 # implement the --enable-pic flag, and support the 'pic-only' and 'no-pic'
391 # MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'.
392 m4_define([_LT_WITH_PIC],
393 [AC_ARG_ENABLE([pic],
394 [AS_HELP_STRING([--enable-pic@<:@=PKGS@:>@],
395 [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
396 [lt_p=${PACKAGE-default}
398 yes|no) pic_mode=$enableval ;;
401 # Look at the argument we got. We use all the common list separators.
402 lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
403 for lt_pkg in $enableval; do
405 if test "X$lt_pkg" = "X$lt_p"; then
412 [dnl Continue to support --with-pic and --without-pic, for backward
414 _AC_ENABLE_IF([with], [pic],
415 [lt_p=${PACKAGE-default}
417 yes|no) pic_mode=$withval ;;
420 # Look at the argument we got. We use all the common list separators.
421 lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
422 for lt_pkg in $withval; do
424 if test "X$lt_pkg" = "X$lt_p"; then
431 [pic_mode=m4_default([$1], [default])])]
434 _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
437 LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
438 LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
441 AU_DEFUN([AC_LIBTOOL_PICMODE],
442 [_LT_SET_OPTION([LT_INIT], [pic-only])
443 AC_DIAGNOSE([obsolete],
444 [$0: Remove this warning and the call to _LT_SET_OPTION when you
445 put the 'pic-only' option into LT_INIT's first parameter.])
448 dnl aclocal-1.4 backwards compatibility:
449 dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
451 ## ----------------- ##
452 ## LTDL_INIT Options ##
453 ## ----------------- ##
455 m4_define([_LTDL_MODE], [])
456 LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
457 [m4_define([_LTDL_MODE], [nonrecursive])])
458 LT_OPTION_DEFINE([LTDL_INIT], [recursive],
459 [m4_define([_LTDL_MODE], [recursive])])
460 LT_OPTION_DEFINE([LTDL_INIT], [subproject],
461 [m4_define([_LTDL_MODE], [subproject])])
463 m4_define([_LTDL_TYPE], [])
464 LT_OPTION_DEFINE([LTDL_INIT], [installable],
465 [m4_define([_LTDL_TYPE], [installable])])
466 LT_OPTION_DEFINE([LTDL_INIT], [convenience],
467 [m4_define([_LTDL_TYPE], [convenience])])