github的一些开源项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

437 lines
14 KiB

  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 9 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 --with-aix-soname flag, and support the `aix-soname=aix'
  270. # and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT
  271. # 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_WITH([aix-soname],
  279. [AS_HELP_STRING([--with-aix-soname=aix|svr4|both],
  280. [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])],
  281. [case $withval in
  282. aix|svr4|both)
  283. ;;
  284. *)
  285. AC_MSG_ERROR([Unknown argument to --with-aix-soname])
  286. ;;
  287. esac
  288. lt_cv_with_aix_soname=$with_aix_soname],
  289. [AC_CACHE_VAL([lt_cv_with_aix_soname],
  290. [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT)
  291. with_aix_soname=$lt_cv_with_aix_soname])
  292. AC_MSG_RESULT([$with_aix_soname])
  293. if test aix != "$with_aix_soname"; then
  294. # For the AIX way of multilib, we name the shared archive member
  295. # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
  296. # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
  297. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
  298. # the AIX toolchain works better with OBJECT_MODE set (default 32).
  299. if test 64 = "${OBJECT_MODE-32}"; then
  300. shared_archive_member_spec=shr_64
  301. else
  302. shared_archive_member_spec=shr
  303. fi
  304. fi
  305. ;;
  306. *)
  307. with_aix_soname=aix
  308. ;;
  309. esac
  310. _LT_DECL([], [shared_archive_member_spec], [0],
  311. [Shared archive member basename, for filename based shared library versioning on AIX])dnl
  312. ])# _LT_WITH_AIX_SONAME
  313. LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])])
  314. LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])])
  315. LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])])
  316. # _LT_WITH_PIC([MODE])
  317. # --------------------
  318. # implement the --with-pic flag, and support the 'pic-only' and 'no-pic'
  319. # LT_INIT options.
  320. # MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'.
  321. m4_define([_LT_WITH_PIC],
  322. [AC_ARG_WITH([pic],
  323. [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
  324. [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
  325. [lt_p=${PACKAGE-default}
  326. case $withval in
  327. yes|no) pic_mode=$withval ;;
  328. *)
  329. pic_mode=default
  330. # Look at the argument we got. We use all the common list separators.
  331. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
  332. for lt_pkg in $withval; do
  333. IFS=$lt_save_ifs
  334. if test "X$lt_pkg" = "X$lt_p"; then
  335. pic_mode=yes
  336. fi
  337. done
  338. IFS=$lt_save_ifs
  339. ;;
  340. esac],
  341. [pic_mode=m4_default([$1], [default])])
  342. _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
  343. ])# _LT_WITH_PIC
  344. LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
  345. LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
  346. # Old name:
  347. AU_DEFUN([AC_LIBTOOL_PICMODE],
  348. [_LT_SET_OPTION([LT_INIT], [pic-only])
  349. AC_DIAGNOSE([obsolete],
  350. [$0: Remove this warning and the call to _LT_SET_OPTION when you
  351. put the 'pic-only' option into LT_INIT's first parameter.])
  352. ])
  353. dnl aclocal-1.4 backwards compatibility:
  354. dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
  355. ## ----------------- ##
  356. ## LTDL_INIT Options ##
  357. ## ----------------- ##
  358. m4_define([_LTDL_MODE], [])
  359. LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
  360. [m4_define([_LTDL_MODE], [nonrecursive])])
  361. LT_OPTION_DEFINE([LTDL_INIT], [recursive],
  362. [m4_define([_LTDL_MODE], [recursive])])
  363. LT_OPTION_DEFINE([LTDL_INIT], [subproject],
  364. [m4_define([_LTDL_MODE], [subproject])])
  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])])