ltoptions.m4 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467
  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. # serial 10 ltoptions.m4
  11. # This is to help aclocal find these macros, as it can't see m4_define.
  12. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
  13. # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
  14. # ------------------------------------------
  15. m4_define([_LT_MANGLE_OPTION],
  16. [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
  17. # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
  18. # ---------------------------------------
  19. # Set option OPTION-NAME for macro MACRO-NAME, and if there is a
  20. # matching handler defined, dispatch to it. Other OPTION-NAMEs are
  21. # saved as a flag.
  22. m4_define([_LT_SET_OPTION],
  23. [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
  24. m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
  25. _LT_MANGLE_DEFUN([$1], [$2]),
  26. [m4_warning([Unknown $1 option '$2'])])[]dnl
  27. ])
  28. # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
  29. # ------------------------------------------------------------
  30. # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
  31. m4_define([_LT_IF_OPTION],
  32. [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
  33. # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
  34. # -------------------------------------------------------
  35. # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
  36. # are set.
  37. m4_define([_LT_UNLESS_OPTIONS],
  38. [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
  39. [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
  40. [m4_define([$0_found])])])[]dnl
  41. m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
  42. ])[]dnl
  43. ])
  44. # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
  45. # ----------------------------------------
  46. # OPTION-LIST is a space-separated list of Libtool options associated
  47. # with MACRO-NAME. If any OPTION has a matching handler declared with
  48. # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
  49. # the unknown option and exit.
  50. m4_defun([_LT_SET_OPTIONS],
  51. [# Set options
  52. m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
  53. [_LT_SET_OPTION([$1], _LT_Option)])
  54. m4_if([$1],[LT_INIT],[
  55. dnl
  56. dnl Simply set some default values (i.e off) if boolean options were not
  57. dnl specified:
  58. _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
  59. ])
  60. _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
  61. ])
  62. dnl
  63. dnl If no reference was made to various pairs of opposing options, then
  64. dnl we run the default mode handler for the pair. For example, if neither
  65. dnl 'shared' nor 'disable-shared' was passed, we enable building of shared
  66. dnl archives by default:
  67. _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
  68. _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
  69. _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
  70. _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
  71. [_LT_ENABLE_FAST_INSTALL])
  72. _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4],
  73. [_LT_WITH_AIX_SONAME([aix])])
  74. ])
  75. ])# _LT_SET_OPTIONS
  76. ## --------------------------------- ##
  77. ## Macros to handle LT_INIT options. ##
  78. ## --------------------------------- ##
  79. # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
  80. # -----------------------------------------
  81. m4_define([_LT_MANGLE_DEFUN],
  82. [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
  83. # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
  84. # -----------------------------------------------
  85. m4_define([LT_OPTION_DEFINE],
  86. [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
  87. ])# LT_OPTION_DEFINE
  88. # dlopen
  89. # ------
  90. LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
  91. ])
  92. AU_DEFUN([AC_LIBTOOL_DLOPEN],
  93. [_LT_SET_OPTION([LT_INIT], [dlopen])
  94. AC_DIAGNOSE([obsolete],
  95. [$0: Remove this warning and the call to _LT_SET_OPTION when you
  96. put the 'dlopen' option into LT_INIT's first parameter.])
  97. ])
  98. dnl aclocal-1.4 backwards compatibility:
  99. dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
  100. # win32-dll
  101. # ---------
  102. # Declare package support for building win32 dll's.
  103. LT_OPTION_DEFINE([LT_INIT], [win32-dll],
  104. [enable_win32_dll=yes
  105. case $host in
  106. *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-cegcc*)
  107. AC_CHECK_TOOL(AS, as, false)
  108. AC_CHECK_TOOL(DLLTOOL, dlltool, false)
  109. AC_CHECK_TOOL(OBJDUMP, objdump, false)
  110. ;;
  111. esac
  112. test -z "$AS" && AS=as
  113. _LT_DECL([], [AS], [1], [Assembler program])dnl
  114. test -z "$DLLTOOL" && DLLTOOL=dlltool
  115. _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
  116. test -z "$OBJDUMP" && OBJDUMP=objdump
  117. _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
  118. ])# win32-dll
  119. AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
  120. [AC_REQUIRE([AC_CANONICAL_HOST])dnl
  121. _LT_SET_OPTION([LT_INIT], [win32-dll])
  122. AC_DIAGNOSE([obsolete],
  123. [$0: Remove this warning and the call to _LT_SET_OPTION when you
  124. put the 'win32-dll' option into LT_INIT's first parameter.])
  125. ])
  126. dnl aclocal-1.4 backwards compatibility:
  127. dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
  128. # _LT_ENABLE_SHARED([DEFAULT])
  129. # ----------------------------
  130. # implement the --enable-shared flag, and supports the 'shared' and
  131. # 'disable-shared' LT_INIT options.
  132. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
  133. m4_define([_LT_ENABLE_SHARED],
  134. [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
  135. AC_ARG_ENABLE([shared],
  136. [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
  137. [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
  138. [p=${PACKAGE-default}
  139. case $enableval in
  140. yes) enable_shared=yes ;;
  141. no) enable_shared=no ;;
  142. *)
  143. enable_shared=no
  144. # Look at the argument we got. We use all the common list separators.
  145. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
  146. for pkg in $enableval; do
  147. IFS=$lt_save_ifs
  148. if test "X$pkg" = "X$p"; then
  149. enable_shared=yes
  150. fi
  151. done
  152. IFS=$lt_save_ifs
  153. ;;
  154. esac],
  155. [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
  156. _LT_DECL([build_libtool_libs], [enable_shared], [0],
  157. [Whether or not to build shared libraries])
  158. ])# _LT_ENABLE_SHARED
  159. LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
  160. LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
  161. # Old names:
  162. AC_DEFUN([AC_ENABLE_SHARED],
  163. [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
  164. ])
  165. AC_DEFUN([AC_DISABLE_SHARED],
  166. [_LT_SET_OPTION([LT_INIT], [disable-shared])
  167. ])
  168. AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
  169. AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
  170. dnl aclocal-1.4 backwards compatibility:
  171. dnl AC_DEFUN([AM_ENABLE_SHARED], [])
  172. dnl AC_DEFUN([AM_DISABLE_SHARED], [])
  173. # _LT_ENABLE_STATIC([DEFAULT])
  174. # ----------------------------
  175. # implement the --enable-static flag, and support the 'static' and
  176. # 'disable-static' LT_INIT options.
  177. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
  178. m4_define([_LT_ENABLE_STATIC],
  179. [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
  180. AC_ARG_ENABLE([static],
  181. [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
  182. [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
  183. [p=${PACKAGE-default}
  184. case $enableval in
  185. yes) enable_static=yes ;;
  186. no) enable_static=no ;;
  187. *)
  188. enable_static=no
  189. # Look at the argument we got. We use all the common list separators.
  190. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
  191. for pkg in $enableval; do
  192. IFS=$lt_save_ifs
  193. if test "X$pkg" = "X$p"; then
  194. enable_static=yes
  195. fi
  196. done
  197. IFS=$lt_save_ifs
  198. ;;
  199. esac],
  200. [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
  201. _LT_DECL([build_old_libs], [enable_static], [0],
  202. [Whether or not to build static libraries])
  203. ])# _LT_ENABLE_STATIC
  204. LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
  205. LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
  206. # Old names:
  207. AC_DEFUN([AC_ENABLE_STATIC],
  208. [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
  209. ])
  210. AC_DEFUN([AC_DISABLE_STATIC],
  211. [_LT_SET_OPTION([LT_INIT], [disable-static])
  212. ])
  213. AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
  214. AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
  215. dnl aclocal-1.4 backwards compatibility:
  216. dnl AC_DEFUN([AM_ENABLE_STATIC], [])
  217. dnl AC_DEFUN([AM_DISABLE_STATIC], [])
  218. # _LT_ENABLE_FAST_INSTALL([DEFAULT])
  219. # ----------------------------------
  220. # implement the --enable-fast-install flag, and support the 'fast-install'
  221. # and 'disable-fast-install' LT_INIT options.
  222. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
  223. m4_define([_LT_ENABLE_FAST_INSTALL],
  224. [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
  225. AC_ARG_ENABLE([fast-install],
  226. [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
  227. [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
  228. [p=${PACKAGE-default}
  229. case $enableval in
  230. yes) enable_fast_install=yes ;;
  231. no) enable_fast_install=no ;;
  232. *)
  233. enable_fast_install=no
  234. # Look at the argument we got. We use all the common list separators.
  235. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
  236. for pkg in $enableval; do
  237. IFS=$lt_save_ifs
  238. if test "X$pkg" = "X$p"; then
  239. enable_fast_install=yes
  240. fi
  241. done
  242. IFS=$lt_save_ifs
  243. ;;
  244. esac],
  245. [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
  246. _LT_DECL([fast_install], [enable_fast_install], [0],
  247. [Whether or not to optimize for fast installation])dnl
  248. ])# _LT_ENABLE_FAST_INSTALL
  249. LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
  250. LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
  251. # Old names:
  252. AU_DEFUN([AC_ENABLE_FAST_INSTALL],
  253. [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
  254. AC_DIAGNOSE([obsolete],
  255. [$0: Remove this warning and the call to _LT_SET_OPTION when you put
  256. the 'fast-install' option into LT_INIT's first parameter.])
  257. ])
  258. AU_DEFUN([AC_DISABLE_FAST_INSTALL],
  259. [_LT_SET_OPTION([LT_INIT], [disable-fast-install])
  260. AC_DIAGNOSE([obsolete],
  261. [$0: Remove this warning and the call to _LT_SET_OPTION when you put
  262. the 'disable-fast-install' option into LT_INIT's first parameter.])
  263. ])
  264. dnl aclocal-1.4 backwards compatibility:
  265. dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
  266. dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
  267. # _LT_WITH_AIX_SONAME([DEFAULT])
  268. # ----------------------------------
  269. # implement the --enable-aix-soname configure option, and support the
  270. # `aix-soname=aix' and `aix-soname=both' and `aix-soname=svr4' LT_INIT options.
  271. # DEFAULT is either `aix', `both', or `svr4'. If omitted, it defaults to `aix'.
  272. m4_define([_LT_WITH_AIX_SONAME],
  273. [m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl
  274. shared_archive_member_spec=
  275. case $host,$enable_shared in
  276. power*-*-aix[[5-9]]*,yes)
  277. AC_MSG_CHECKING([which variant of shared library versioning to provide])
  278. AC_ARG_ENABLE([aix-soname],
  279. [AS_HELP_STRING([--enable-aix-soname=aix|svr4|both],
  280. [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])],
  281. [case $enableval in
  282. aix|svr4|both)
  283. ;;
  284. *)
  285. AC_MSG_ERROR([Unknown argument to --enable-aix-soname])
  286. ;;
  287. esac
  288. lt_cv_with_aix_soname=$enable_aix_soname],
  289. [_AC_ENABLE_IF([with], [aix-soname],
  290. [case $withval in
  291. aix|svr4|both)
  292. ;;
  293. *)
  294. AC_MSG_ERROR([Unknown argument to --with-aix-soname])
  295. ;;
  296. esac
  297. lt_cv_with_aix_soname=$with_aix_soname],
  298. [AC_CACHE_VAL([lt_cv_with_aix_soname],
  299. [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT)])
  300. enable_aix_soname=$lt_cv_with_aix_soname])
  301. with_aix_soname=$enable_aix_soname
  302. AC_MSG_RESULT([$with_aix_soname])
  303. if test aix != "$with_aix_soname"; then
  304. # For the AIX way of multilib, we name the shared archive member
  305. # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
  306. # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
  307. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
  308. # the AIX toolchain works better with OBJECT_MODE set (default 32).
  309. if test 64 = "${OBJECT_MODE-32}"; then
  310. shared_archive_member_spec=shr_64
  311. else
  312. shared_archive_member_spec=shr
  313. fi
  314. fi
  315. ;;
  316. *)
  317. with_aix_soname=aix
  318. ;;
  319. esac
  320. _LT_DECL([], [shared_archive_member_spec], [0],
  321. [Shared archive member basename, for filename based shared library versioning on AIX])dnl
  322. ])# _LT_WITH_AIX_SONAME
  323. LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])])
  324. LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])])
  325. LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])])
  326. # _LT_WITH_PIC([MODE])
  327. # --------------------
  328. # implement the --enable-pic flag, and support the 'pic-only' and 'no-pic'
  329. # LT_INIT options.
  330. # MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'.
  331. m4_define([_LT_WITH_PIC],
  332. [AC_ARG_ENABLE([pic],
  333. [AS_HELP_STRING([--enable-pic@<:@=PKGS@:>@],
  334. [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
  335. [lt_p=${PACKAGE-default}
  336. case $enableval in
  337. yes|no) pic_mode=$enableval ;;
  338. *)
  339. pic_mode=default
  340. # Look at the argument we got. We use all the common list separators.
  341. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
  342. for lt_pkg in $enableval; do
  343. IFS=$lt_save_ifs
  344. if test "X$lt_pkg" = "X$lt_p"; then
  345. pic_mode=yes
  346. fi
  347. done
  348. IFS=$lt_save_ifs
  349. ;;
  350. esac],
  351. [dnl Continue to support --with-pic and --without-pic, for backward
  352. dnl compatibility.
  353. _AC_ENABLE_IF([with], [pic],
  354. [lt_p=${PACKAGE-default}
  355. case $withval in
  356. yes|no) pic_mode=$withval ;;
  357. *)
  358. pic_mode=default
  359. # Look at the argument we got. We use all the common list separators.
  360. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
  361. for lt_pkg in $withval; do
  362. IFS=$lt_save_ifs
  363. if test "X$lt_pkg" = "X$lt_p"; then
  364. pic_mode=yes
  365. fi
  366. done
  367. IFS=$lt_save_ifs
  368. ;;
  369. esac],
  370. [pic_mode=m4_default([$1], [default])])]
  371. )
  372. _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
  373. ])# _LT_WITH_PIC
  374. LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
  375. LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
  376. # Old name:
  377. AU_DEFUN([AC_LIBTOOL_PICMODE],
  378. [_LT_SET_OPTION([LT_INIT], [pic-only])
  379. AC_DIAGNOSE([obsolete],
  380. [$0: Remove this warning and the call to _LT_SET_OPTION when you
  381. put the 'pic-only' option into LT_INIT's first parameter.])
  382. ])
  383. dnl aclocal-1.4 backwards compatibility:
  384. dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
  385. ## ----------------- ##
  386. ## LTDL_INIT Options ##
  387. ## ----------------- ##
  388. m4_define([_LTDL_MODE], [])
  389. LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
  390. [m4_define([_LTDL_MODE], [nonrecursive])])
  391. LT_OPTION_DEFINE([LTDL_INIT], [recursive],
  392. [m4_define([_LTDL_MODE], [recursive])])
  393. LT_OPTION_DEFINE([LTDL_INIT], [subproject],
  394. [m4_define([_LTDL_MODE], [subproject])])
  395. m4_define([_LTDL_TYPE], [])
  396. LT_OPTION_DEFINE([LTDL_INIT], [installable],
  397. [m4_define([_LTDL_TYPE], [installable])])
  398. LT_OPTION_DEFINE([LTDL_INIT], [convenience],
  399. [m4_define([_LTDL_TYPE], [convenience])])