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