aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/m4/bindle-libbindle.m4
blob: c077959283eb1d2b61cf44d42c64f7073acead78 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#
#   Bindle Binaries Tools
#   Copyright (C) 2022 David M. Syzdek <david@syzdek.net>.
#
#   Redistribution and use in source and binary forms, with or without
#   modification, are permitted provided that the following conditions are
#   met:
#
#      * Redistributions of source code must retain the above copyright
#        notice, this list of conditions and the following disclaimer.
#      * Redistributions in binary form must reproduce the above copyright
#        notice, this list of conditions and the following disclaimer in the
#        documentation and/or other materials provided with the distribution.
#      * Neither the name of Bindle Binaries nor the
#        names of its contributors may be used to endorse or promote products
#        derived from this software without specific prior written permission.
#
#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
#   IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
#   THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
#   PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BINDLE BINARIES BE LIABLE FOR
#   ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
#   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
#   SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
#   CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
#   LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
#   OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
#   SUCH DAMAGE.
#


# AC_BINDLE_LIBBINDLE()
# ______________________________________________________________________________
AC_DEFUN([AC_BINDLE_LIBBINDLE],[dnl

   AC_REQUIRE([AC_PROG_CC])
   AC_REQUIRE([AC_BINDLE])

   LIBBINDLE_PREFIX="$1"
   LIBBINDLE_OPTION="$2"

   ENABLE_BUILTIN_BINDLE="no"
   ENABLE_LIBBINDLE_SRCS="no"
   ENABLE_LIBBINDLE="no"

   enableval=""
   AC_ARG_ENABLE(
      builtin-bindle,
      [AS_HELP_STRING([--enable-builtin-bindle], [enable builtin bindletools library])],
      [ EBUILTINBINDLE=$enableval ],
      [ EBUILTINBINDLE=$enableval ]
   )
   if test "x${LIBBINDLE_OPTION}" = "xyes";then
      ENABLE_BUILTIN_BINDLE=yes
      ENABLE_LIBBINDLE_SRCS=yes
   elif test "x${LIBBINDLE_OPTION}" = "xno";then
      ENABLE_BUILTIN_BINDLE=no
      ENABLE_LIBBINDLE_SRCS=no
   elif test "x${LIBBINDLE_OPTION}" = "xinstall";then
      ENABLE_BUILTIN_BINDLE=no
      ENABLE_LIBBINDLE_SRCS=no
      ENABLE_LIBBINDLE=yes
      ENABLE_BINDLE_TESTS=yes
   elif test "x${LIBBINDLE_OPTION}" = "xsources";then
      ENABLE_BUILTIN_BINDLE=no
      ENABLE_LIBBINDLE_SRCS=yes
   elif test "x${EBUILTINBINDLE}" = "xyes";then
      ENABLE_BUILTIN_BINDLE=yes
      ENABLE_LIBBINDLE_SRCS=yes
   else
      LIBBINDLE_OPTION=auto
   fi

   # look for installed libbindle
   AC_CHECK_HEADERS([termios.h],     [], [])
   AC_CHECK_HEADERS([sgtty.h],       [], [])
   if test "x${LIBBINDLE_OPTION}" = "xauto";then
      FOUND_LIBBINDLE=yes
      AC_CHECK_HEADERS([bindle.h],                    [], [FOUND_LIBBINDLE=no])
      AC_CHECK_LIB([bindle], [bindle_free],           [], [FOUND_LIBBINDLE=no])
      AC_CHECK_LIB([bindle], [bindle_obj_release],    [], [FOUND_LIBBINDLE=no])
      AC_CHECK_LIB([bindle], [bindle_obj_retain],     [], [FOUND_LIBBINDLE=no])
      if test "x${FOUND_LIBBINDLE}" = "xyes";then
         ENABLE_BUILTIN_BINDLE=no
         ENABLE_LIBBINDLE_SRCS=no
      elif test "x${EBUILTINBINDLE}" = "xno";then
         AC_MSG_ERROR([libbindle not found])
      else
         ENABLE_BUILTIN_BINDLE=yes
         ENABLE_LIBBINDLE_SRCS=yes
      fi
   fi

   if test "x${ENABLE_BUILTIN_BINDLE}" = "xyes";then
      ENABLE_BINDLE_TESTS=yes
   fi

   # determine prefix
   if test "x${LIBBINDLE_PREFIX}" = "x";then
      LIBBINDLE_PREFIX="bindle_"
   elif test "x${ENABLE_LIBBINDLE_SRCS}" = "xno";then
      LIBBINDLE_PREFIX="bindle_"
   fi

   AC_SUBST([LIBBINDLE_PREFIX],                 [${LIBBINDLE_PREFIX}])
   if test "x${LIBBINDLE_PREFIX}" != "xbindle_";then
      AC_DEFINE_UNQUOTED([LIBBINDLE_PREFIX],       ["$LIBBINDLE_PREFIX"],  [libbindle.la function prefix])
      AC_DEFINE_UNQUOTED([HAVE_BINDLE_PREFIX_H],   1,  [use bindle_prefix.h])
   fi
   #
   AM_CONDITIONAL([WITH_BINDLE_PREFIX_H],       [test "x${LIBBINDLE_PREFIX}"      != "xbindle_"])
   AM_CONDITIONAL([WITHOUT_BINDLE_PREFIX_H],    [test "x${LIBBINDLE_PREFIX}"       = "xbindle_"])
   #
   AM_CONDITIONAL([ENABLE_BUILTIN_BINDLE],      [test "x${ENABLE_BUILTIN_BINDLE}"  = "xyes"])
   AM_CONDITIONAL([DISABLE_BUILTIN_BINDLE],     [test "x${ENABLE_BUILTIN_BINDLE}" != "xyes"])
   #
   AM_CONDITIONAL([ENABLE_LIBBINDLE_SOURCES],   [test "x${ENABLE_LIBBINDLE_SRCS}"  = "xyes"])
   AM_CONDITIONAL([DISABLE_LIBBINDLE_SOURCES],  [test "x${ENABLE_LIBBINDLE_SRCS}" != "xyes"])
   #
   AM_CONDITIONAL([ENABLE_LIBBINDLE],           [test "x${ENABLE_LIBBINDLE}"       = "xyes"])
   AM_CONDITIONAL([DISABLE_LIBBINDLE],          [test "x${ENABLE_LIBBINDLE}"      != "xyes"])
   #
   AM_CONDITIONAL([ENABLE_BINDLE_TESTS],        [test "x${ENABLE_BINDLE_TESTS}"    = "xyes"])
   AM_CONDITIONAL([DISABLE_BINDLE_TESTS],       [test "x${ENABLE_BINDLE_TESTS}"   != "xyes"])
])dnl


# end of m4 file