source: trunk/GDE/SINA/builddir/m4/arb.m4

Last change on this file was 19170, checked in by westram, 2 years ago
  • sina source
    • unpack + remove tarball
    • no longer ignore sina builddir.
File size: 9.0 KB
Line 
1AC_DEFUN([AX_LIB_ARBDB],
2[
3    AH_TEMPLATE([HAVE_ARB], [Defined to 1 if ARB libraries are present])
4    # Check for dynamic libraries
5
6    AC_ARG_WITH([arbhome],
7        AC_HELP_STRING(
8            [--with-arbhome=<PATH>],
9            [point to ARBHOME]
10        ),
11        [
12        if test x"$withval" = x"no"; then
13            WANT_ARB="no"
14        elif test x"$withval" = "yes"; then
15            WANT_ARB="yes"
16            ax_arb_path=""
17        else
18            WANT_ARB="yes"
19            ax_arb_path="$withval"
20        fi
21        ],
22        [WANT_ARB="yes"]
23    )
24
25    ARB_CPPFLAGS=""
26    ARB_LDFLAGS=""
27    ARB_LIBS=""
28    success="no"
29    if test x"$WANT_ARB" = x"yes"; then
30        if test x"$GLIB_LIBS" = x""; then
31            PKG_CHECK_MODULES([GLIB], [glib-2.0 > 2.2])
32        fi
33        if test x"$ax_arb_path" == x""; then
34            AC_MSG_CHECKING([for location of ARB headers])
35            for ax_arb_path_tmp in $ax_arb_path $ARBHOME /usr/lib/arb; do
36                if test -f "$ax_arb_path_tmp/INCLUDE/arbdb.h" \
37                && test -r "$ax_arb_path_tmp/INCLUDE/arbdb.h"; then
38                    ax_arb_path="$ax_arb_path_tmp"
39                    break
40                fi
41            done
42            if test -n "$ax_arb_path"; then
43                AC_MSG_RESULT([$ax_arb_path])
44                success="yes"
45            else
46                AC_MSG_RESULT([not found])
47                success="no"
48            fi
49        fi
50        if test x"$ax_arb_path" != x""; then
51            saved_CPPFLAGS="$CPPFLAGS"
52            CPPFLAGS="$CPPFLAGS -I$ax_arb_path/INCLUDE $GLIB_CFLAGS"
53            AC_CHECK_HEADER([arbdb.h], [
54                ax_arb_cppflags="-I$ax_arb_path/INCLUDE $GLIB_CFLAGS"
55                success="yes"
56            ],[
57                success="no"
58            ])
59            CPPFLAGS="$saved_CPPFLAGS"
60        fi
61    fi
62
63    if test x"$success" = x"yes"; then
64        AC_MSG_CHECKING([for libARBDB location])
65
66        ax_arb_lib_path=
67        for thelibext in so dylib; do
68            for ax_arb_lib_path_tmp in $ax_arb_path/lib /usr/lib/arb/lib; do
69                if test -f "$ax_arb_lib_path_tmp/libARBDB.$thelibext" \
70                && test -r "$ax_arb_lib_path_tmp/libARBDB.$thelibext"; then
71                    ax_arb_lib_path="$ax_arb_lib_path_tmp"
72                    break
73                fi
74                if test -f "$ax_arb_lib_path_tmp/libARBDB.$thelibext" \
75                && test -r "$ax_arb_lib_path_tmp/libARBDB.$thelibext"; then
76                    ax_arb_lib_path="$ax_arb_lib_path_tmp"
77                    break
78                fi
79            done
80        done
81        if test -n "$ax_arb_lib_path"; then
82            AC_MSG_RESULT([$ax_arb_lib_path])
83            success="yes"
84        else
85            AC_MSG_RESULT([not found])
86            success="no"
87        fi
88    fi
89
90    if test x"$success" = x"yes"; then
91        AC_MSG_CHECKING([for GB_open in -lARBDB])
92        saved_CPPFLAGS="$CPPFLAGS"
93        saved_LIBS="$LIBS"
94        saved_LDFLAGS="$LDFLAGS"
95
96        ax_arb_ldflags="-L$ax_arb_lib_path -Wl,-rpath -Wl,$ax_arb_lib_path"
97        ax_arb_libs="-lARBDB -lCORE $GLIB_LIBS"
98
99        CPPFLAGS="$CPPFLAGS $ax_arb_cppflags"
100        LIBS="$LIBS $ax_arb_libs"
101        LDFLAGS="$LDFLAGS $ax_arb_ldflags"
102
103        AC_LANG_PUSH(C++)
104        AC_LINK_IFELSE([
105            AC_LANG_PROGRAM([[
106                #include <arbdb.h>
107            ]], [[
108                GB_open("","");
109            ]])
110        ],[
111            AC_MSG_RESULT([yes])
112            success="yes"
113        ],[
114            AC_MSG_RESULT([not found])
115            success="no"
116        ])
117        AC_LANG_POP(C++)
118
119        LIBS="$saved_LIBS"
120        CPPFLAGS="$saved_CPPFLAGS"
121        LDFLAGS="$saved_LDFLAGS"
122    fi
123
124    if test x"$success" == x"yes"; then
125        ARB_CPPFLAGS="$ax_arb_cppflags"
126        ARB_LDFLAGS="$ax_arb_ldflags"
127        ARB_LIBS="$ax_arb_libs"
128        ARBHOME="$ax_arb_path"
129        AC_SUBST(ARB_CPPFLAGS)
130        AC_SUBST(ARB_LDFLAGS)
131        AC_SUBST(ARB_LIBS)
132        AC_SUBST(ARBHOME)
133        AC_DEFINE(HAVE_ARB)
134    fi
135])
136
137
138### Check for a function in ARB
139# Since ARB exports as C++, the full synopsis is needed.
140# => Provide HAVE_xxx name in first argument and function in second argument
141AC_DEFUN([AX_ARB_CHECK_FUNC],
142[
143    AC_REQUIRE([AX_LIB_ARBDB])
144    AH_TEMPLATE([HAVE_$1])
145
146    AC_MSG_CHECKING([for $1 in libARBDB])
147
148    saved_CPPFLAGS="$CPPFLAGS"
149    saved_LIBS="$LIBS"
150    saved_LDFLAGS="$LDFLAGS"
151
152    CPPFLAGS="$CPPFLAGS $ARB_CPPFLAGS"
153    LIBS="$LIBS $ARB_LIBS"
154    LDFLAGS="$LDFLAGS $ARB_LDFLAGS"
155
156    AC_LANG_PUSH(C++)
157    AC_LINK_IFELSE([
158        AC_LANG_PROGRAM([[
159            #include <arbdbt.h>
160        ]], [[
161            $2;
162        ]])
163    ],[
164        AC_MSG_RESULT([yes])
165        AC_DEFINE(HAVE_$1)
166    ],[
167        AC_MSG_RESULT([no])
168    ])
169    AC_LANG_POP(C++)
170
171    LIBS="$saved_LIBS"
172    CPPFLAGS="$saved_CPPFLAGS"
173    LDFLAGS="$saved_LDFLAGS"
174])
175
176### Check for static PT server interface lib
177AC_DEFUN([AX_LIB_ARB_PROBE],
178[
179    AC_REQUIRE([AX_LIB_ARBDB])
180    AH_TEMPLATE([HAVE_ARB_PROBE], [], [Defined to 1 if ARB PROBE_COM is present])
181
182    AC_MSG_CHECKING([for ARB PROBE_COM])
183    if test -f "$ARBHOME/PROBE_COM/client.a" \
184    && test -r "$ARBHOME"; then
185        AC_MSG_RESULT([found])
186        success="yes"
187    else
188        AC_MSG_RESULT([not found])
189        success="no"
190    fi
191
192    if test x"$success" = x"yes"; then
193        AC_MSG_CHECKING([for aisc_open in ARB PROBE_COM])
194        AC_LANG_PUSH(C++)
195
196        AC_LANG_CONFTEST([AC_LANG_PROGRAM([[
197            #include "PT_com.h"
198            #include "client.h"
199        ]],[[
200            T_PT_MAIN main;
201            GB_ERROR err;
202            aisc_open("", main, AISC_MAGIC_NUMBER, &err);
203        ]])])
204
205        saved_CPPFLAGS="$CPPFLAGS"
206        saved_LDFLAGS="$LDFLAGS"
207        saved_LIBS="$LIBS"
208
209        CPPFLAGS="$CPPFLAGS $ARB_CPPFLAGS"
210        LDFLAGS="$LDFLAGS $ARB_LDFLAGS"
211
212        ax_arb_probe_libs=""
213        for common in '' "$ARBHOME/PROBE_COM/common.a"; do
214            ax_arb_probe_libs_tmp="$ARBHOME/PROBE_COM/client.a $common $ARB_LIBS"
215            LIBS="$saved_LIBS $ax_arb_probe_libs_tmp"
216            AC_LINK_IFELSE([], [
217                ax_arb_probe_libs="$ax_arb_probe_libs_tmp"
218                break
219            ])
220        done
221
222        LIBS="$saved_LIBS"
223        CPPFLAGS="$saved_CPPFLAGS"
224        LDFLAGS="$saved_LDFLAGS"
225
226        AC_LANG_POP(C++)
227
228        success="yes"
229        if test -z "$ax_arb_probe_libs"; then
230            AC_MSG_RESULT([no])
231            success="no"
232        elif test -n "$common"; then
233            AC_MSG_RESULT([yes])
234        else
235            AC_MSG_RESULT([yes (common.a not needed)])
236        fi
237    fi
238    if test x"$success" = x"yes"; then
239        ARB_PROBE_LIBS="$ax_arb_probe_libs"
240        AC_SUBST(ARB_PROBE_LIBS)
241        AC_DEFINE(HAVE_ARB_PROBE)
242    fi
243])
244
245# Check for static HELIX interface lib
246AC_DEFUN([AX_LIB_ARB_HELIX],
247[
248    AC_REQUIRE([AX_LIB_ARBDB])
249
250    AH_TEMPLATE([HAVE_ARB_HELIX], [Defined to 1 if ARB SL HELIX is present])
251    AC_MSG_CHECKING([for ARB HELIX static lib])
252
253    saved_CPPFLAGS="$CPPFLAGS"
254    saved_LDFLAGS="$LDFLAGS"
255    saved_LIBS="$LIBS"
256
257    CPPFLAGS="$CPPFLAGS $ARB_CPPFLAGS"
258    LDFLAGS="$LDFLAGS $ARB_LDFLAGS"
259    LIBS="$LIBS $ARBHOME/SL/HELIX/HELIX.a $ARB_LIBS"
260
261    AC_LANG_PUSH(C++)
262    AC_LINK_IFELSE([
263        AC_LANG_PROGRAM([[
264            #include "BI_helix.hxx"
265        ]],[[
266            BI_helix h;
267            h.init((GBDATA*)0,(const char*)0);
268        ]])
269    ],[
270        AC_MSG_RESULT([yes])
271        ARB_HELIX_LIBS="$ARBHOME/SL/HELIX/HELIX.a $ARB_LIBS"
272        AC_SUBST(ARB_HELIX_LIBS)
273        AC_DEFINE(HAVE_ARB_HELIX)
274    ],[
275        AC_MSG_RESULT([no])
276    ])
277    AC_LANG_POP(C++)
278
279    LIBS="$saved_LIBS"
280    CPPFLAGS="$saved_CPPFLAGS"
281    LDFLAGS="$saved_LDFLAGS"
282])
283
284AC_DEFUN([AX_ARB_STATUS_RETURN_TYPE],
285[
286    AH_TEMPLATE([ARB_STATUS_RETURN_TYPE], [void or bool depending on version...])
287    AH_TEMPLATE([ARB_STATUS_RETURN_VALUE], ['' or true depending on RETURN_TYPE])
288    AC_REQUIRE([AX_LIB_ARBDB])
289
290    saved_CPPFLAGS="$CPPFLAGS"
291    saved_LDFLAGS="$LDFLAGS"
292    saved_LIBS="$LIBS"
293    CPPFLAGS="$CPPFLAGS $ARB_CPPFLAGS"
294    LDFLAGS="$LDFLAGS $ARB_LDFLAGS"
295    LIBS="$LIBS $ARBHOME/SL/HELIX/HELIX.a $ARB_LIBS"
296    AC_LANG_PUSH(C++)
297
298    AC_CHECK_HEADER([arb_handlers.h])
299    AC_MSG_CHECKING([ARB status return type])
300
301    ARB_STATUS_RETURN_TYPE=error
302    for sig in bool void; do
303        AC_LINK_IFELSE([
304            AC_LANG_PROGRAM([[
305                #include <arb_handlers.h>
306            ]], [[
307                arb_status_implementation status;
308                $sig (*x)(const char*) = status.set_title;
309            ]])
310        ],[
311            ARB_STATUS_RETURN_TYPE=$sig
312            break
313        ])
314    done
315    AC_MSG_RESULT([$ARB_STATUS_RETURN_TYPE])
316    if test x"$ARB_STATUS_RETURN_TYPE" == x"error"; then
317      ARB_STATUS_RETURN_TYPE=
318    fi
319    AC_DEFINE_UNQUOTED(ARB_STATUS_RETURN_TYPE, [$ARB_STATUS_RETURN_TYPE])
320    AC_SUBST(ARB_STATUS_RETURN_TYPE)
321
322    if test x"$ARB_STATUS_RETURN_TYPE" == x"bool"; then
323      ARB_STATUS_RETURN_VALUE=true
324    else
325      ARB_STAUTS_RETURN_VALUE=
326    fi
327    AC_DEFINE_UNQUOTED(ARB_STATUS_RETURN_VALUE, [$ARB_STATUS_RETURN_VALUE])
328    AC_SUBST(ARB_STATUS_RETURN_VALUE)
329
330    AC_LANG_POP(C++)
331    LIBS="$saved_LIBS"
332    CPPFLAGS="$saved_CPPFLAGS"
333    LDFLAGS="$saved_LDFLAGS"
334])
335
336
Note: See TracBrowser for help on using the repository browser.