Home | History | Annotate | Download | only in m4
      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.
     14 AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
     15 
     16 
     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_]], [_])])
     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.
     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
     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.
     39 m4_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.
     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
     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.
     62 m4_defun([_LT_SET_OPTIONS],
     63 [# Set options
     64 m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
     65     [_LT_SET_OPTION([$1], _LT_Option)])
     66 
     67 m4_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 # -----------------------------------------
     95 m4_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 # -----------------------------------------------
    101 m4_define([LT_OPTION_DEFINE],
    102 [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
    103 ])# LT_OPTION_DEFINE
    104 
    105 
    106 # dlopen
    107 # ------
    108 LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
    109 ])
    110 
    111 AU_DEFUN([AC_LIBTOOL_DLOPEN],
    112 [_LT_SET_OPTION([LT_INIT], [dlopen])
    113 AC_DIAGNOSE([obsolete],
    114 [$0: Remove this warning and the call to _LT_SET_OPTION when you
    115 put the `dlopen' option into LT_INIT's first parameter.])
    116 ])
    117 
    118 dnl aclocal-1.4 backwards compatibility:
    119 dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
    120 
    121 
    122 # win32-dll
    123 # ---------
    124 # Declare package support for building win32 dll's.
    125 LT_OPTION_DEFINE([LT_INIT], [win32-dll],
    126 [enable_win32_dll=yes
    127 
    128 case $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   ;;
    134 esac
    135 
    136 test -z "$AS" && AS=as
    137 _LT_DECL([], [AS],      [1], [Assembler program])dnl
    138 
    139 test -z "$DLLTOOL" && DLLTOOL=dlltool
    140 _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
    141 
    142 test -z "$OBJDUMP" && OBJDUMP=objdump
    143 _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
    144 ])# win32-dll
    145 
    146 AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
    147 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
    148 _LT_SET_OPTION([LT_INIT], [win32-dll])
    149 AC_DIAGNOSE([obsolete],
    150 [$0: Remove this warning and the call to _LT_SET_OPTION when you
    151 put the `win32-dll' option into LT_INIT's first parameter.])
    152 ])
    153 
    154 dnl aclocal-1.4 backwards compatibility:
    155 dnl 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'.
    163 m4_define([_LT_ENABLE_SHARED],
    164 [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
    165 AC_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 
    191 LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
    192 LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
    193 
    194 # Old names:
    195 AC_DEFUN([AC_ENABLE_SHARED],
    196 [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
    197 ])
    198 
    199 AC_DEFUN([AC_DISABLE_SHARED],
    200 [_LT_SET_OPTION([LT_INIT], [disable-shared])
    201 ])
    202 
    203 AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
    204 AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
    205 
    206 dnl aclocal-1.4 backwards compatibility:
    207 dnl AC_DEFUN([AM_ENABLE_SHARED], [])
    208 dnl 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'.
    217 m4_define([_LT_ENABLE_STATIC],
    218 [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
    219 AC_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 
    245 LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
    246 LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
    247 
    248 # Old names:
    249 AC_DEFUN([AC_ENABLE_STATIC],
    250 [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
    251 ])
    252 
    253 AC_DEFUN([AC_DISABLE_STATIC],
    254 [_LT_SET_OPTION([LT_INIT], [disable-static])
    255 ])
    256 
    257 AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
    258 AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
    259 
    260 dnl aclocal-1.4 backwards compatibility:
    261 dnl AC_DEFUN([AM_ENABLE_STATIC], [])
    262 dnl 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'.
    271 m4_define([_LT_ENABLE_FAST_INSTALL],
    272 [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
    273 AC_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 
    299 LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
    300 LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
    301 
    302 # Old names:
    303 AU_DEFUN([AC_ENABLE_FAST_INSTALL],
    304 [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
    305 AC_DIAGNOSE([obsolete],
    306 [$0: Remove this warning and the call to _LT_SET_OPTION when you put
    307 the `fast-install' option into LT_INIT's first parameter.])
    308 ])
    309 
    310 AU_DEFUN([AC_DISABLE_FAST_INSTALL],
    311 [_LT_SET_OPTION([LT_INIT], [disable-fast-install])
    312 AC_DIAGNOSE([obsolete],
    313 [$0: Remove this warning and the call to _LT_SET_OPTION when you put
    314 the `disable-fast-install' option into LT_INIT's first parameter.])
    315 ])
    316 
    317 dnl aclocal-1.4 backwards compatibility:
    318 dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
    319 dnl 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'.
    327 m4_define([_LT_WITH_PIC],
    328 [AC_ARG_WITH([pic],
    329     [AS_HELP_STRING([--with-pic],
    330 	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
    331     [pic_mode="$withval"],
    332     [pic_mode=default])
    333 
    334 test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
    335 
    336 _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
    337 ])# _LT_WITH_PIC
    338 
    339 LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
    340 LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
    341 
    342 # Old name:
    343 AU_DEFUN([AC_LIBTOOL_PICMODE],
    344 [_LT_SET_OPTION([LT_INIT], [pic-only])
    345 AC_DIAGNOSE([obsolete],
    346 [$0: Remove this warning and the call to _LT_SET_OPTION when you
    347 put the `pic-only' option into LT_INIT's first parameter.])
    348 ])
    349 
    350 dnl aclocal-1.4 backwards compatibility:
    351 dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
    352 
    353 ## ----------------- ##
    354 ## LTDL_INIT Options ##
    355 ## ----------------- ##
    356 
    357 m4_define([_LTDL_MODE], [])
    358 LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
    359 		 [m4_define([_LTDL_MODE], [nonrecursive])])
    360 LT_OPTION_DEFINE([LTDL_INIT], [recursive],
    361 		 [m4_define([_LTDL_MODE], [recursive])])
    362 LT_OPTION_DEFINE([LTDL_INIT], [subproject],
    363 		 [m4_define([_LTDL_MODE], [subproject])])
    364 
    365 m4_define([_LTDL_TYPE], [])
    366 LT_OPTION_DEFINE([LTDL_INIT], [installable],
    367 		 [m4_define([_LTDL_TYPE], [installable])])
    368 LT_OPTION_DEFINE([LTDL_INIT], [convenience],
    369 		 [m4_define([_LTDL_TYPE], [convenience])])
    370