bundled_lib.m4 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. dnl * Copyright 2014 Luke Dashjr
  2. dnl *
  3. dnl * This program is free software; you can redistribute it and/or modify it
  4. dnl * under the terms of the GNU General Public License as published by the Free
  5. dnl * Software Foundation; either version 3 of the License, or (at your option)
  6. dnl * any later version. See COPYING for more details.
  7. m4_divert_text([DEFAULTS], [
  8. origin_LDFLAGS=
  9. origin_LDFLAGS_checked=false
  10. maybe_ldconfig=
  11. maybe_ldconfig_checked=false
  12. BUNDLED_LIB_RULES=
  13. ])
  14. AC_SUBST(BUNDLED_LIB_RULES)
  15. AC_DEFUN([BFG_CHECK_LD_ORIGIN],[
  16. if ! $origin_LDFLAGS_checked; then
  17. save_LDFLAGS="$LDFLAGS"
  18. LDFLAGS="$LDFLAGS -Wl,-zorigin"
  19. AC_MSG_CHECKING([whether the linker recognizes the -zorigin option])
  20. AC_TRY_LINK([],[],[
  21. AC_MSG_RESULT([yes])
  22. origin_LDFLAGS=',-zorigin'
  23. ],[
  24. AC_MSG_RESULT([no])
  25. ])
  26. LDFLAGS="$save_LDFLAGS"
  27. origin_LDFLAGS_checked=true
  28. fi
  29. ])
  30. AC_DEFUN([BFG_CHECK_LDCONFIG],[
  31. if ! $maybe_ldconfig_checked; then
  32. _ROOTPATH=$PATH$PATH_SEPARATOR`echo $PATH | sed s/bin/sbin/g`
  33. possible_ldconfigs="${target}-ldconfig"
  34. if test "x$cross_compiling" != "xyes"; then
  35. possible_ldconfigs="${possible_ldconfigs} ldconfig"
  36. fi
  37. AC_CHECK_PROGS([LDCONFIG],[${possible_ldconfigs}],[],[$_ROOTPATH])
  38. if test "x$LDCONFIG" != "x"; then
  39. maybe_ldconfig=" && $LDCONFIG"
  40. fi
  41. maybe_ldconfig_checked=true
  42. fi
  43. ])
  44. AC_DEFUN([BFG_BUNDLED_LIB_VARS],[
  45. BFG_CHECK_LD_ORIGIN
  46. _AC_SRCDIRS(["$ac_dir"])
  47. $1_CFLAGS='-I'"${ac_abs_top_srcdir}"'/$2'
  48. $1_LIBS='-L'"${ac_abs_top_srcdir}"'/$2/.libs -Wl,-rpath,\$$ORIGIN/$2/.libs'"$origin_LDFLAGS"' m4_foreach_w([mylib],[$3],[ -l[]mylib])'
  49. $1_SUBDIRS=$2
  50. $1_EXTRADEPS=$1_directory
  51. BUNDLED_LIB_RULES="$BUNDLED_LIB_RULES
  52. $1_directory:
  53. \$(MAKE) -C $2
  54. "
  55. AM_SUBST_NOTMAKE([BUNDLED_LIB_RULES])
  56. if $have_cygwin; then
  57. $1_EXTRADEPS="$$1_EXTRADEPS m4_foreach_w([mylib],[$3],[ cyg[]mylib[]-0.dll])"
  58. BUNDLED_LIB_RULES="$BUNDLED_LIB_RULES[]m4_foreach_w([mylib],[$3],[
  59. cyg[]mylib[]-0.dll: $2/.libs/cyg[]mylib[]-0.dll
  60. cp -p \$< \$[]@
  61. ])"
  62. fi
  63. ])
  64. dnl BFG_BUNDLED_LIB([PKG-NAME],PKGCONF-NAME],[DEFAULT:YES/NO/AUTO],[PATH],[LIBS],[DEPENDENT-PKGS],[CONFIGURE-ARGS],[CONFIGURE-ARGS])
  65. AC_DEFUN([BFG_BUNDLED_LIB],[
  66. AC_ARG_WITH([system-$1],[ifelse([$3],[no],AC_HELP_STRING([--with-system-$1], [Use system $1 rather than bundled one (default disabled)]),AC_HELP_STRING([--without-system-$1], [Use bundled $1 rather than system one]))],[true],[with_system_$1=$3])
  67. if test "x$with_system_$1" != "xno"; then
  68. PKG_CHECK_MODULES([$1],[$2],[
  69. with_system_$1=yes
  70. ],[
  71. if test "x$with_system_$1" = "xyes"; then
  72. AC_MSG_ERROR([Could not find system $1])
  73. else
  74. AC_MSG_NOTICE([Didn't find system $1, using bundled copy])
  75. with_system_$1=no
  76. fi
  77. ])
  78. fi
  79. if test "x$with_system_$1" = "xno"; then
  80. BFG_BUNDLED_LIB_VARS([$1],[$4],[$5])
  81. BFG_CUSTOM_SUBDIR([$4],[$7],[$8 m4_foreach_w([mydep],[$6],[ mydep[]_LIBS='$mydep[]_LIBS' mydep[]_CFLAGS='$mydep[]_CFLAGS'])])
  82. BFG_CHECK_LDCONFIG
  83. else
  84. $1_SUBDIRS=
  85. $1_EXTRADEPS=
  86. fi
  87. AC_SUBST($1_CFLAGS)
  88. AC_SUBST($1_LIBS)
  89. AC_SUBST($1_SUBDIRS)
  90. AC_SUBST($1_EXTRADEPS)
  91. AM_CONDITIONAL(NEED_[]m4_toupper([$1]), [test x$with_system_$1 != xyes])
  92. ])