xref: /freebsd/contrib/file/m4/ltoptions.m4 (revision cd0d51baaa4509a1db83251a601d34404d20c990)
1# Helper functions for option handling.                    -*- Autoconf -*-
2#
3#   Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
4#   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 7 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  ])
86])# _LT_SET_OPTIONS
87
88
89## --------------------------------- ##
90## Macros to handle LT_INIT options. ##
91## --------------------------------- ##
92
93# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
94# -----------------------------------------
95m4_define([_LT_MANGLE_DEFUN],
96[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
97
98
99# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
100# -----------------------------------------------
101m4_define([LT_OPTION_DEFINE],
102[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
103])# LT_OPTION_DEFINE
104
105
106# dlopen
107# ------
108LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
109])
110
111AU_DEFUN([AC_LIBTOOL_DLOPEN],
112[_LT_SET_OPTION([LT_INIT], [dlopen])
113AC_DIAGNOSE([obsolete],
114[$0: Remove this warning and the call to _LT_SET_OPTION when you
115put the `dlopen' option into LT_INIT's first parameter.])
116])
117
118dnl aclocal-1.4 backwards compatibility:
119dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
120
121
122# win32-dll
123# ---------
124# Declare package support for building win32 dll's.
125LT_OPTION_DEFINE([LT_INIT], [win32-dll],
126[enable_win32_dll=yes
127
128case $host in
129*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
130  AC_CHECK_TOOL(AS, as, false)
131  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
132  AC_CHECK_TOOL(OBJDUMP, objdump, false)
133  ;;
134esac
135
136test -z "$AS" && AS=as
137_LT_DECL([], [AS],      [1], [Assembler program])dnl
138
139test -z "$DLLTOOL" && DLLTOOL=dlltool
140_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
141
142test -z "$OBJDUMP" && OBJDUMP=objdump
143_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
144])# win32-dll
145
146AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
147[AC_REQUIRE([AC_CANONICAL_HOST])dnl
148_LT_SET_OPTION([LT_INIT], [win32-dll])
149AC_DIAGNOSE([obsolete],
150[$0: Remove this warning and the call to _LT_SET_OPTION when you
151put the `win32-dll' option into LT_INIT's first parameter.])
152])
153
154dnl aclocal-1.4 backwards compatibility:
155dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
156
157
158# _LT_ENABLE_SHARED([DEFAULT])
159# ----------------------------
160# implement the --enable-shared flag, and supports the `shared' and
161# `disable-shared' LT_INIT options.
162# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
163m4_define([_LT_ENABLE_SHARED],
164[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
165AC_ARG_ENABLE([shared],
166    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
167	[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
168    [p=${PACKAGE-default}
169    case $enableval in
170    yes) enable_shared=yes ;;
171    no) enable_shared=no ;;
172    *)
173      enable_shared=no
174      # Look at the argument we got.  We use all the common list separators.
175      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
176      for pkg in $enableval; do
177	IFS="$lt_save_ifs"
178	if test "X$pkg" = "X$p"; then
179	  enable_shared=yes
180	fi
181      done
182      IFS="$lt_save_ifs"
183      ;;
184    esac],
185    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
186
187    _LT_DECL([build_libtool_libs], [enable_shared], [0],
188	[Whether or not to build shared libraries])
189])# _LT_ENABLE_SHARED
190
191LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
192LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
193
194# Old names:
195AC_DEFUN([AC_ENABLE_SHARED],
196[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
197])
198
199AC_DEFUN([AC_DISABLE_SHARED],
200[_LT_SET_OPTION([LT_INIT], [disable-shared])
201])
202
203AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
204AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
205
206dnl aclocal-1.4 backwards compatibility:
207dnl AC_DEFUN([AM_ENABLE_SHARED], [])
208dnl AC_DEFUN([AM_DISABLE_SHARED], [])
209
210
211
212# _LT_ENABLE_STATIC([DEFAULT])
213# ----------------------------
214# implement the --enable-static flag, and support the `static' and
215# `disable-static' LT_INIT options.
216# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
217m4_define([_LT_ENABLE_STATIC],
218[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
219AC_ARG_ENABLE([static],
220    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
221	[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
222    [p=${PACKAGE-default}
223    case $enableval in
224    yes) enable_static=yes ;;
225    no) enable_static=no ;;
226    *)
227     enable_static=no
228      # Look at the argument we got.  We use all the common list separators.
229      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
230      for pkg in $enableval; do
231	IFS="$lt_save_ifs"
232	if test "X$pkg" = "X$p"; then
233	  enable_static=yes
234	fi
235      done
236      IFS="$lt_save_ifs"
237      ;;
238    esac],
239    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
240
241    _LT_DECL([build_old_libs], [enable_static], [0],
242	[Whether or not to build static libraries])
243])# _LT_ENABLE_STATIC
244
245LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
246LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
247
248# Old names:
249AC_DEFUN([AC_ENABLE_STATIC],
250[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
251])
252
253AC_DEFUN([AC_DISABLE_STATIC],
254[_LT_SET_OPTION([LT_INIT], [disable-static])
255])
256
257AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
258AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
259
260dnl aclocal-1.4 backwards compatibility:
261dnl AC_DEFUN([AM_ENABLE_STATIC], [])
262dnl AC_DEFUN([AM_DISABLE_STATIC], [])
263
264
265
266# _LT_ENABLE_FAST_INSTALL([DEFAULT])
267# ----------------------------------
268# implement the --enable-fast-install flag, and support the `fast-install'
269# and `disable-fast-install' LT_INIT options.
270# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
271m4_define([_LT_ENABLE_FAST_INSTALL],
272[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
273AC_ARG_ENABLE([fast-install],
274    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
275    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
276    [p=${PACKAGE-default}
277    case $enableval in
278    yes) enable_fast_install=yes ;;
279    no) enable_fast_install=no ;;
280    *)
281      enable_fast_install=no
282      # Look at the argument we got.  We use all the common list separators.
283      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
284      for pkg in $enableval; do
285	IFS="$lt_save_ifs"
286	if test "X$pkg" = "X$p"; then
287	  enable_fast_install=yes
288	fi
289      done
290      IFS="$lt_save_ifs"
291      ;;
292    esac],
293    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
294
295_LT_DECL([fast_install], [enable_fast_install], [0],
296	 [Whether or not to optimize for fast installation])dnl
297])# _LT_ENABLE_FAST_INSTALL
298
299LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
300LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
301
302# Old names:
303AU_DEFUN([AC_ENABLE_FAST_INSTALL],
304[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
305AC_DIAGNOSE([obsolete],
306[$0: Remove this warning and the call to _LT_SET_OPTION when you put
307the `fast-install' option into LT_INIT's first parameter.])
308])
309
310AU_DEFUN([AC_DISABLE_FAST_INSTALL],
311[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
312AC_DIAGNOSE([obsolete],
313[$0: Remove this warning and the call to _LT_SET_OPTION when you put
314the `disable-fast-install' option into LT_INIT's first parameter.])
315])
316
317dnl aclocal-1.4 backwards compatibility:
318dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
319dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
320
321
322# _LT_WITH_PIC([MODE])
323# --------------------
324# implement the --with-pic flag, and support the `pic-only' and `no-pic'
325# LT_INIT options.
326# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
327m4_define([_LT_WITH_PIC],
328[AC_ARG_WITH([pic],
329    [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
330	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
331    [lt_p=${PACKAGE-default}
332    case $withval in
333    yes|no) pic_mode=$withval ;;
334    *)
335      pic_mode=default
336      # Look at the argument we got.  We use all the common list separators.
337      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
338      for lt_pkg in $withval; do
339	IFS="$lt_save_ifs"
340	if test "X$lt_pkg" = "X$lt_p"; then
341	  pic_mode=yes
342	fi
343      done
344      IFS="$lt_save_ifs"
345      ;;
346    esac],
347    [pic_mode=default])
348
349test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
350
351_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
352])# _LT_WITH_PIC
353
354LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
355LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
356
357# Old name:
358AU_DEFUN([AC_LIBTOOL_PICMODE],
359[_LT_SET_OPTION([LT_INIT], [pic-only])
360AC_DIAGNOSE([obsolete],
361[$0: Remove this warning and the call to _LT_SET_OPTION when you
362put the `pic-only' option into LT_INIT's first parameter.])
363])
364
365dnl aclocal-1.4 backwards compatibility:
366dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
367
368## ----------------- ##
369## LTDL_INIT Options ##
370## ----------------- ##
371
372m4_define([_LTDL_MODE], [])
373LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
374		 [m4_define([_LTDL_MODE], [nonrecursive])])
375LT_OPTION_DEFINE([LTDL_INIT], [recursive],
376		 [m4_define([_LTDL_MODE], [recursive])])
377LT_OPTION_DEFINE([LTDL_INIT], [subproject],
378		 [m4_define([_LTDL_MODE], [subproject])])
379
380m4_define([_LTDL_TYPE], [])
381LT_OPTION_DEFINE([LTDL_INIT], [installable],
382		 [m4_define([_LTDL_TYPE], [installable])])
383LT_OPTION_DEFINE([LTDL_INIT], [convenience],
384		 [m4_define([_LTDL_TYPE], [convenience])])
385