xref: /freebsd/contrib/openpam/m4/ltoptions.m4 (revision ee3960cba1068e12fb032a68c46d74841d9edab3)
1# Helper functions for option handling.                    -*- Autoconf -*-
2#
3#   Copyright (C) 2004-2005, 2007-2009, 2011-2019, 2021-2024 Free
4#   Software Foundation, Inc.
5#   Written by Gary V. Vaughan, 2004
6#
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.
10
11# serial 10 ltoptions.m4
12
13# This is to help aclocal find these macros, as it can't see m4_define.
14AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
15
16
17# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
18# ------------------------------------------
19m4_define([_LT_MANGLE_OPTION],
20[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
21
22
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
27# saved as a flag.
28m4_define([_LT_SET_OPTION],
29[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
30m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
31        _LT_MANGLE_DEFUN([$1], [$2]),
32    [m4_warning([Unknown $1 option '$2'])])[]dnl
33])
34
35
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.
39m4_define([_LT_IF_OPTION],
40[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
41
42
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
46# are set.
47m4_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
51m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
52])[]dnl
53])
54
55
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.
62m4_defun([_LT_SET_OPTIONS],
63[# Set options
64m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
65    [_LT_SET_OPTION([$1], _LT_Option)])
66
67m4_if([$1],[LT_INIT],[
68  dnl
69  dnl Simply set some default values (i.e off) if boolean options were not
70  dnl specified:
71  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
72  ])
73  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
74  ])
75  dnl
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])])
87  ])
88])# _LT_SET_OPTIONS
89
90
91## --------------------------------- ##
92## Macros to handle LT_INIT options. ##
93## --------------------------------- ##
94
95# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
96# -----------------------------------------
97m4_define([_LT_MANGLE_DEFUN],
98[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
99
100
101# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
102# -----------------------------------------------
103m4_define([LT_OPTION_DEFINE],
104[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
105])# LT_OPTION_DEFINE
106
107
108# dlopen
109# ------
110LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
111])
112
113AU_DEFUN([AC_LIBTOOL_DLOPEN],
114[_LT_SET_OPTION([LT_INIT], [dlopen])
115AC_DIAGNOSE([obsolete],
116[$0: Remove this warning and the call to _LT_SET_OPTION when you
117put the 'dlopen' option into LT_INIT's first parameter.])
118])
119
120dnl aclocal-1.4 backwards compatibility:
121dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
122
123
124# win32-dll
125# ---------
126# Declare package support for building win32 dll's.
127LT_OPTION_DEFINE([LT_INIT], [win32-dll],
128[enable_win32_dll=yes
129
130case $host in
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)
135  ;;
136esac
137
138test -z "$AS" && AS=as
139_LT_DECL([], [AS],      [1], [Assembler program])dnl
140
141test -z "$DLLTOOL" && DLLTOOL=dlltool
142_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
143
144test -z "$OBJDUMP" && OBJDUMP=objdump
145_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
146])# win32-dll
147
148AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
149[AC_REQUIRE([AC_CANONICAL_HOST])dnl
150_LT_SET_OPTION([LT_INIT], [win32-dll])
151AC_DIAGNOSE([obsolete],
152[$0: Remove this warning and the call to _LT_SET_OPTION when you
153put the 'win32-dll' option into LT_INIT's first parameter.])
154])
155
156dnl aclocal-1.4 backwards compatibility:
157dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
158
159
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'.
165m4_define([_LT_ENABLE_SHARED],
166[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
167AC_ARG_ENABLE([shared],
168    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
169	[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
170    [p=${PACKAGE-default}
171    case $enableval in
172    yes) enable_shared=yes ;;
173    no) enable_shared=no ;;
174    *)
175      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
179	IFS=$lt_save_ifs
180	if test "X$pkg" = "X$p"; then
181	  enable_shared=yes
182	fi
183      done
184      IFS=$lt_save_ifs
185      ;;
186    esac],
187    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
188
189    _LT_DECL([build_libtool_libs], [enable_shared], [0],
190	[Whether or not to build shared libraries])
191])# _LT_ENABLE_SHARED
192
193LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
194LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
195
196# Old names:
197AC_DEFUN([AC_ENABLE_SHARED],
198[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
199])
200
201AC_DEFUN([AC_DISABLE_SHARED],
202[_LT_SET_OPTION([LT_INIT], [disable-shared])
203])
204
205AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
206AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
207
208dnl aclocal-1.4 backwards compatibility:
209dnl AC_DEFUN([AM_ENABLE_SHARED], [])
210dnl AC_DEFUN([AM_DISABLE_SHARED], [])
211
212
213
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'.
219m4_define([_LT_ENABLE_STATIC],
220[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
221AC_ARG_ENABLE([static],
222    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
223	[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
224    [p=${PACKAGE-default}
225    case $enableval in
226    yes) enable_static=yes ;;
227    no) enable_static=no ;;
228    *)
229     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
233	IFS=$lt_save_ifs
234	if test "X$pkg" = "X$p"; then
235	  enable_static=yes
236	fi
237      done
238      IFS=$lt_save_ifs
239      ;;
240    esac],
241    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
242
243    _LT_DECL([build_old_libs], [enable_static], [0],
244	[Whether or not to build static libraries])
245])# _LT_ENABLE_STATIC
246
247LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
248LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
249
250# Old names:
251AC_DEFUN([AC_ENABLE_STATIC],
252[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
253])
254
255AC_DEFUN([AC_DISABLE_STATIC],
256[_LT_SET_OPTION([LT_INIT], [disable-static])
257])
258
259AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
260AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
261
262dnl aclocal-1.4 backwards compatibility:
263dnl AC_DEFUN([AM_ENABLE_STATIC], [])
264dnl AC_DEFUN([AM_DISABLE_STATIC], [])
265
266
267
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'.
273m4_define([_LT_ENABLE_FAST_INSTALL],
274[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
275AC_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}
279    case $enableval in
280    yes) enable_fast_install=yes ;;
281    no) enable_fast_install=no ;;
282    *)
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
287	IFS=$lt_save_ifs
288	if test "X$pkg" = "X$p"; then
289	  enable_fast_install=yes
290	fi
291      done
292      IFS=$lt_save_ifs
293      ;;
294    esac],
295    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
296
297_LT_DECL([fast_install], [enable_fast_install], [0],
298	 [Whether or not to optimize for fast installation])dnl
299])# _LT_ENABLE_FAST_INSTALL
300
301LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
302LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
303
304# Old names:
305AU_DEFUN([AC_ENABLE_FAST_INSTALL],
306[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
307AC_DIAGNOSE([obsolete],
308[$0: Remove this warning and the call to _LT_SET_OPTION when you put
309the 'fast-install' option into LT_INIT's first parameter.])
310])
311
312AU_DEFUN([AC_DISABLE_FAST_INSTALL],
313[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
314AC_DIAGNOSE([obsolete],
315[$0: Remove this warning and the call to _LT_SET_OPTION when you put
316the 'disable-fast-install' option into LT_INIT's first parameter.])
317])
318
319dnl aclocal-1.4 backwards compatibility:
320dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
321dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
322
323
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'.
329m4_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
331shared_archive_member_spec=
332case $host,$enable_shared in
333power*-*-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[@:>@.])],
338    [case $enableval in
339     aix|svr4|both)
340       ;;
341     *)
342       AC_MSG_ERROR([Unknown argument to --enable-aix-soname])
343       ;;
344     esac
345     lt_cv_with_aix_soname=$enable_aix_soname],
346    [_AC_ENABLE_IF([with], [aix-soname],
347        [case $withval in
348         aix|svr4|both)
349           ;;
350         *)
351           AC_MSG_ERROR([Unknown argument to --with-aix-soname])
352           ;;
353         esac
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
368    else
369      shared_archive_member_spec=shr
370    fi
371  fi
372  ;;
373*)
374  with_aix_soname=aix
375  ;;
376esac
377
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
381
382LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])])
383LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])])
384LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])])
385
386
387# _LT_WITH_PIC([MODE])
388# --------------------
389# implement the --enable-pic flag, and support the 'pic-only' and 'no-pic'
390# LT_INIT options.
391# MODE is either 'yes' or 'no'.  If omitted, it defaults to 'both'.
392m4_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}
397     case $enableval in
398     yes|no) pic_mode=$enableval ;;
399     *)
400       pic_mode=default
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
404	 IFS=$lt_save_ifs
405	 if test "X$lt_pkg" = "X$lt_p"; then
406	   pic_mode=yes
407	 fi
408       done
409       IFS=$lt_save_ifs
410       ;;
411     esac],
412    [dnl Continue to support --with-pic and --without-pic, for backward
413     dnl compatibility.
414     _AC_ENABLE_IF([with], [pic],
415	[lt_p=${PACKAGE-default}
416	 case $withval in
417	 yes|no) pic_mode=$withval ;;
418	 *)
419	   pic_mode=default
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
423	     IFS=$lt_save_ifs
424	     if test "X$lt_pkg" = "X$lt_p"; then
425	       pic_mode=yes
426	     fi
427	   done
428	   IFS=$lt_save_ifs
429	   ;;
430	 esac],
431	[pic_mode=m4_default([$1], [default])])]
432    )
433
434_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
435])# _LT_WITH_PIC
436
437LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
438LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
439
440# Old name:
441AU_DEFUN([AC_LIBTOOL_PICMODE],
442[_LT_SET_OPTION([LT_INIT], [pic-only])
443AC_DIAGNOSE([obsolete],
444[$0: Remove this warning and the call to _LT_SET_OPTION when you
445put the 'pic-only' option into LT_INIT's first parameter.])
446])
447
448dnl aclocal-1.4 backwards compatibility:
449dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
450
451## ----------------- ##
452## LTDL_INIT Options ##
453## ----------------- ##
454
455m4_define([_LTDL_MODE], [])
456LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
457		 [m4_define([_LTDL_MODE], [nonrecursive])])
458LT_OPTION_DEFINE([LTDL_INIT], [recursive],
459		 [m4_define([_LTDL_MODE], [recursive])])
460LT_OPTION_DEFINE([LTDL_INIT], [subproject],
461		 [m4_define([_LTDL_MODE], [subproject])])
462
463m4_define([_LTDL_TYPE], [])
464LT_OPTION_DEFINE([LTDL_INIT], [installable],
465		 [m4_define([_LTDL_TYPE], [installable])])
466LT_OPTION_DEFINE([LTDL_INIT], [convenience],
467		 [m4_define([_LTDL_TYPE], [convenience])])
468