root/juggler/trunk/macros/tweek.m4

Revision 20974, 13.6 kB (checked in by patrick, 8 months ago)

Copyright update.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1 dnl ************* <auto-copyright.pl BEGIN do not edit this line> *************
2 dnl
3 dnl VR Juggler is (C) Copyright 1998-2008 by Iowa State University
4 dnl
5 dnl Original Authors:
6 dnl   Allen Bierbaum, Christopher Just,
7 dnl   Patrick Hartling, Kevin Meinert,
8 dnl   Carolina Cruz-Neira, Albert Baker
9 dnl
10 dnl This library is free software; you can redistribute it and/or
11 dnl modify it under the terms of the GNU Library General Public
12 dnl License as published by the Free Software Foundation; either
13 dnl version 2 of the License, or (at your option) any later version.
14 dnl
15 dnl This library is distributed in the hope that it will be useful,
16 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
17 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18 dnl Library General Public License for more details.
19 dnl
20 dnl You should have received a copy of the GNU Library General Public
21 dnl License along with this library; if not, write to the
22 dnl Free Software Foundation, Inc., 59 Temple Place - Suite 330,
23 dnl Boston, MA 02111-1307, USA.
24 dnl
25 dnl ************** <auto-copyright.pl END do not edit this line> **************
26
27 dnl ---------------------------------------------------------------------------
28 dnl NOTE: This should not be called by external code.
29 dnl ---------------------------------------------------------------------------
30 AC_DEFUN([_TWEEK_PATH_SETUP],
31 [
32     dnl Get the cflags and libraries from flagpoll
33     AC_ARG_WITH(tweek-cxx-meta-file,
34                 [  --with-tweek-cxx-meta-file=<PATH>
35                           Flagpoll metadata file for
36                           Tweek C++ API (optional)        [No default]],
37                 [tweek_cxx_meta_file="$withval"], [tweek_cxx_meta_file=""])
38     AC_ARG_WITH(tweek-java-meta-file,
39                 [  --with-tweek-java-meta-file=<PATH>
40                           Flagpoll metadata file for
41                           Tweek Java API (optional)       [No default]],
42                 [tweek_java_meta_file="$withval"], [tweek_java_meta_file=""])
43
44     dnl See if the user specified where to find the Tweek C++ API meta file.
45     dnl If not, take a guess.
46     if test "x$tweek_cxx_meta_file" != "x" ; then
47         tweek_cxx_meta_dir=`dirname $tweek_cxx_meta_file`
48         tweek_cxx_flagpoll_args="--extra-paths=$tweek_cxx_meta_dir tweek --from-file=$tweek_cxx_meta_file"
49     elif test -f "$instlinks/share/flagpoll/tweek.fpc" ; then
50         tweek_cxx_meta_dir="$instlinks/share/flagpoll"
51         tweek_cxx_flagpoll_args="--extra-paths=$tweek_cxx_meta_dir tweek --from-file=$tweek_cxx_meta_dir/tweek.fpc"
52     else
53         tweek_cxx_flagpoll_args="tweek"
54     fi
55
56     dnl See if the user specified where to find the Tweek Java API meta file.
57     dnl If not, take a guess.
58     if test "x$tweek_java_meta_file" != "x" ; then
59         tweek_java_meta_dir=`dirname $tweek_java_meta_file`
60         tweek_java_flagpoll_args="--extra-paths=$tweek_java_meta_dir tweek-java --from-file=$tweek_java_meta_file"
61     elif test -f "$instlinks/share/flagpoll/tweek.fpc" ; then
62         tweek_java_meta_dir="$instlinks/share/flagpoll"
63         tweek_java_flagpoll_args="--extra-paths=$tweek_java_meta_dir tweek-java --from-file=$tweek_java_meta_dir/tweek-java.fpc"
64     else
65         tweek_java_flagpoll_args="tweek-java"
66     fi
67
68     dnl See if the user specified where to find the Tweek Python API meta
69     dnl file. If not, take a guess.
70     if test "x$tweek_python_meta_file" != "x" ; then
71         tweek_python_meta_dir=`dirname $tweek_python_meta_file`
72         tweek_python_flagpoll_args="--extra-paths=$tweek_python_meta_dir tweek-python --from-file=$tweek_python_meta_file"
73     elif test -f "$instlinks/share/flagpoll/tweek.fpc" ; then
74         tweek_python_meta_dir="$instlinks/share/flagpoll"
75         tweek_python_flagpoll_args="--extra-paths=$tweek_python_meta_dir tweek-python --from-file=$tweek_python_meta_dir/tweek-python.fpc"
76     else
77         tweek_python_flagpoll_args="tweek-python"
78     fi
79
80     AM_PATH_FLAGPOLL([0.9.1], ,
81                      [AC_MSG_ERROR(*** Flagpoll required for Tweek flags ***)])
82
83     dnl Do a sanity check to ensure that $FLAGPOLL actually works.
84     if ! (eval $FLAGPOLL --help >/dev/null 2>&1) 2>&1 ; then
85         FLAGPOLL='no'
86         echo "*** Flagpoll is required to build Tweek."
87         echo "*** Please check that the PATH variable is set to "
88         echo "*** include the proper path to flagpoll."
89     fi
90 ])
91
92 dnl ---------------------------------------------------------------------------
93 dnl _TWEEK_VERSION_CHECK(minimum-version, [action-if-found [, action-if-not-found]])
94 dnl NOTE: This should not be called by external code.
95 dnl ---------------------------------------------------------------------------
96 AC_DEFUN([_TWEEK_VERSION_CHECK],
97 [
98    DPP_PREREQ([2.0.1])
99
100    if test "x$tweek_cxx_flagpoll_args" = "x" ; then
101       _TWEEK_PATH_SETUP()
102    fi
103
104    if test "x$FLAGPOLL" = "xno" ; then
105       ifelse([$3], , :, [$3])
106    else
107       TWEEK_VERSION=`$FLAGPOLL $tweek_cxx_flagpoll_args --modversion`
108
109       min_tweek_version=ifelse([$1], ,0.0.1,[$1])
110       DPP_VERSION_CHECK_MSG_NO_CACHE([Tweek], [$TWEEK_VERSION],
111                                      [$min_tweek_version], [$2], [$3])
112    fi
113 ])
114
115 dnl ---------------------------------------------------------------------------
116 dnl TWEEK_PATH_CXX([minimum-version, [action-if-found [, action-if-not-found]]])
117 dnl
118 dnl Tests for Tweek C++ API and then defines the following variables:
119 dnl     TWEEK_CXXFLAGS
120 dnl     TWEEK_LIBS
121 dnl     TWEEK_LIBS_STATIC
122 dnl     TWEEK_PROF_LIBS
123 dnl     TWEEK_PROF_LIBS_STATIC
124 dnl     TWEEK_CXX_IDL
125 dnl     TWEEK_CXX_IDL_OPTS
126 dnl     TWEEK_CXX_IDL_GENDIR_OPT
127 dnl ---------------------------------------------------------------------------
128 AC_DEFUN([TWEEK_PATH_CXX],
129 [
130    if test "x$tweek_cxx_flagpoll_args" = "x" ; then
131       _TWEEK_PATH_SETUP()
132    fi
133
134    TWEEK_CXXFLAGS=""
135    TWEEK_LIBS=""
136    TWEEK_LIBS_STATIC=""
137    TWEEK_PROF_LIBS=""
138    TWEEK_PROF_LIBS_STATIC=""
139    TWEEK_CXX_IDL=""
140    TWEEK_CXX_IDL_OPTS=""
141    TWEEK_CXX_IDL_GENDIR_OPT=""
142    TWEEK_CXX_IDL_INCFLAG=""
143
144    if test "x$FLAGPOLL" = "xno" ; then
145       ifelse([$3], , :, [$3])
146    else
147       if ! (eval $FLAGPOLL $tweek_cxx_flagpoll_args --modversion >/dev/null 2>&1)
148       then
149          AC_MSG_WARN([*** Flagpoll has no valid Tweek C++ configuration ***])
150          ifelse([$3], , :, [$3])
151       else
152          AC_MSG_CHECKING([whether Tweek C++ API is available])
153          has_cxx=`$FLAGPOLL $tweek_cxx_flagpoll_args --get-cxx-api-available`
154
155          if test "x$has_cxx" = "xY" ; then
156             AC_MSG_RESULT([yes])
157             if test "x$TWEEK_VERSION" = "x" ; then
158                _TWEEK_VERSION_CHECK($1, [tweek_version_okay='yes'],
159                                     [tweek_version_okay='no'
160                                      $3])
161             fi
162
163             if test "x$tweek_version_okay" = "xyes" ; then
164                TWEEK_CXXFLAGS=`$FLAGPOLL $tweek_cxx_flagpoll_args --cflags`
165                TWEEK_LIBS=`$FLAGPOLL $tweek_cxx_flagpoll_args --libs`
166                TWEEK_EXTRA_LIBS=`$FLAGPOLL $tweek_cxx_flagpoll_args --get-extra-libs`
167                TWEEK_PROF_LIBS=`$FLAGPOLL $tweek_cxx_flagpoll_args --get-profiled_libs`
168                TWEEK_LIBS_STATIC=`$FLAGPOLL $tweek_cxx_flagpoll_args --get-static-libs`
169                TWEEK_PROF_LIBS_STATIC_LD=`$FLAGPOLL $tweek_cxx_flagpoll_args --get-profiled-static-libs`
170                TWEEK_DATA_SUBDIR=`$FLAGPOLL $tweek_cxx_flagpoll_args --get-tweek-data-subdir`
171
172                TWEEK_CXX_IDL=`$FLAGPOLL $tweek_cxx_flagpoll_args --get-cxx-idl`
173                TWEEK_CXX_IDL_OPTS=`$FLAGPOLL $tweek_cxx_flagpoll_args --get-cxx-idlflags`
174                TWEEK_CXX_IDL_GENDIR_OPT=`$FLAGPOLL $tweek_cxx_flagpoll_args --get-cxx-idlgendir`
175                TWEEK_CXX_IDL_INCFLAG=`$FLAGPOLL $tweek_cxx_flagpoll_args --get-cxx-idlincflag`
176
177                ifelse([$2], , :, [$2])
178             fi
179          else
180             AC_MSG_RESULT([no])
181             ifelse([$3], , :, [$3])
182          fi
183       fi
184    fi
185
186    AC_SUBST([TWEEK_CXXFLAGS])
187    AC_SUBST([TWEEK_LIBS])
188    AC_SUBST([TWEEK_PROF_LIBS])
189    AC_SUBST([TWEEK_LIBS_STATIC])
190    AC_SUBST([TWEEK_PROF_LIBS_STATIC])
191
192    AC_SUBST([TWEEK_CXX_IDL])
193    AC_SUBST([TWEEK_CXX_IDL_OPTS])
194    AC_SUBST([TWEEK_CXX_IDL_GENDIR_OPT])
195    AC_SUBST([TWEEK_CXX_IDL_INCFLAG])
196
197 ])
198
199 dnl ---------------------------------------------------------------------------
200 dnl TWEEK_PATH_JAVA([minimum-version, [action-if-found [, action-if-not-found]]])
201 dnl
202 dnl Tests for Tweek Java API and then defines the following variables:
203 dnl     TWEEK_JAVA_IDL
204 dnl     TWEEK_JAVA_IDL_OPTS
205 dnl     TWEEK_JAVA_IDL_GENDIR_OPT
206 dnl     TWEEK_JAVA_IDL_INCFLAG
207 dnl     TWEEK_EXT_JARS
208 dnl ---------------------------------------------------------------------------
209 AC_DEFUN([TWEEK_PATH_JAVA],
210 [
211    if test "x$tweek_java_flagpoll_args" = "x" ; then
212       _TWEEK_PATH_SETUP()
213    fi
214
215    TWEEK_JAVA_IDL=''
216    TWEEK_JAVA_IDL_OPTS=''
217    TWEEK_JAVA_IDL_GENDIR_OPT=''
218    TWEEK_JAVA_IDL_INCFLAG=''
219    TWEEK_JARS=''
220    TWEEK_EXT_JARS=''
221
222    if test "x$FLAGPOLL" = "xno" ; then
223       ifelse([$3], , :, [$3])
224    else
225       if ! (eval $FLAGPOLL $tweek_java_flagpoll_args --modversion >/dev/null 2>&1)
226       then
227          AC_MSG_WARN([*** Flagpoll has no valid Tweek Java configuration ***])
228          ifelse([$3], , :, [$3])
229       else
230          AC_MSG_CHECKING([whether Tweek Java API is available])
231          has_java=`$FLAGPOLL $tweek_java_flagpoll_args --get-java-api-available`
232
233          if test "x$has_java" = "xY" ; then
234             AC_MSG_RESULT([yes])
235             if test "x$TWEEK_VERSION" = "x" ; then
236                _TWEEK_VERSION_CHECK($1, [tweek_version_okay='yes'],
237                                     [tweek_version_okay='no'
238                                      $3])
239             fi
240
241             if test "x$tweek_version_okay" = "xyes" ; then
242                TWEEK_JAVA_IDL=`$FLAGPOLL $tweek_java_flagpoll_args --get-java-idl`
243                TWEEK_JAVA_IDL_OPTS=`$FLAGPOLL $tweek_java_flagpoll_args --get-java-idlflags`
244                TWEEK_JAVA_IDL_GENDIR_OPT=`$FLAGPOLL $tweek_java_flagpoll_args --get-java-idlgendir`
245                TWEEK_JAVA_IDL_INCFLAG=`$FLAGPOLL $tweek_java_flagpoll_args --get-java-idlincflag`
246                TWEEK_JARS=`$FLAGPOLL $tweek_java_flagpoll_args --get-jars`
247                TWEEK_EXT_JARS=`$FLAGPOLL $tweek_java_flagpoll_args --get-ext-jars`
248                TWEEK_DATA_SUBDIR=`$FLAGPOLL $tweek_java_flagpoll_args --get-tweek-data-subdir`
249
250                ifelse([$2], , :, [$2])
251             fi
252          else
253             AC_MSG_RESULT([no])
254             ifelse([$3], , :, [$3])
255          fi
256       fi
257    fi
258
259    AC_SUBST([TWEEK_JAVA_IDL])
260    AC_SUBST([TWEEK_JAVA_IDL_OPTS])
261    AC_SUBST([TWEEK_JAVA_IDL_GENDIR_OPT])
262    AC_SUBST([TWEEK_JAVA_IDL_INCFLAG])
263    AC_SUBST([TWEEK_JARS])
264    AC_SUBST([TWEEK_EXT_JARS])
265 ])
266
267 dnl ---------------------------------------------------------------------------
268 dnl TWEEK_PATH_PYTHON([minimum-version, [action-if-found [, action-if-not-found]]])
269 dnl
270 dnl Tests for Tweek Python API and then defines the following variables:
271 dnl     TWEEK_PYTHON_IDL
272 dnl     TWEEK_PYTHON_IDL_OPTS
273 dnl     TWEEK_PYTHON_IDL_GENDIR_OPT
274 dnl     TWEEK_PYTHON_IDL_INCFLAG
275 dnl ---------------------------------------------------------------------------
276 AC_DEFUN([TWEEK_PATH_PYTHON],
277 [
278    if test "x$tweek_python_flagpoll_args" = "x" ; then
279       _TWEEK_PATH_SETUP()
280    fi
281
282    TWEEK_PYTHON_IDL=''
283    TWEEK_PYTHON_IDL_OPTS=''
284    TWEEK_PYTHON_IDL_GENDIR_OPT=''
285    TWEEK_PYTHON_IDL_INCFLAG=''
286
287    if test "x$FLAGPOLL" = "xno" ; then
288       ifelse([$3], , :, [$3])
289    else
290       AC_MSG_CHECKING([whether Tweek Python API is available])
291       has_java=`$FLAGPOLL $tweek_python_flagpoll_args --get-python-idl-available`
292
293       if test "x$has_java" = "xY" ; then
294          AC_MSG_RESULT([yes])
295          if test "x$TWEEK_VERSION" = "x" ; then
296             _TWEEK_VERSION_CHECK($1, [tweek_version_okay='yes'],
297                                  [tweek_version_okay='no'
298                                   $3])
299          fi
300
301          if test "x$tweek_version_okay" = "xyes" ; then
302             TWEEK_PYTHON_IDL=`$FLAGPOLL $tweek_python_flagpoll_args --get-python-idl`
303             TWEEK_PYTHON_IDL_OPTS=`$FLAGPOLL $tweek_python_flagpoll_args ---get-python-idlflags`
304             TWEEK_PYTHON_IDL_GENDIR_OPT=`$FLAGPOLL $tweek_python_flagpoll_args --get-python-idlgendir`
305             TWEEK_PYTHON_IDL_INCFLAG=`$FLAGPOLL $tweek_python_flagpoll_args --get-python-idlincflag`
306             TWEEK_DATA_SUBDIR=`$FLAGPOLL $tweek_python_flagpoll_args --get-tweek-data-subdir`
307
308             ifelse([$2], , :, [$2])
309          fi
310       else
311          AC_MSG_RESULT([no])
312          ifelse([$3], , :, [$3])
313       fi
314    fi
315
316    AC_SUBST([TWEEK_PYTHON_IDL])
317    AC_SUBST([TWEEK_PYTHON_IDL_OPTS])
318    AC_SUBST([TWEEK_PYTHON_IDL_GENDIR_OPT])
319    AC_SUBST([TWEEK_PYTHON_IDL_INCFLAG])
320 ])
321
322 dnl ---------------------------------------------------------------------------
323 dnl TWEEK_PATH([minimum-version, [action-if-found [, action-if-not-found]]])
324 dnl
325 dnl Tests for Tweek C++, Java, and Python APIs and then defines the following
326 dnl variables:
327 dnl     TWEEK_CXXFLAGS
328 dnl     TWEEK_LIBS_LD
329 dnl     TWEEK_LIBS_STATIC_LD
330 dnl     TWEEK_LIBS_CC
331 dnl     TWEEK_LIBS_STATIC_CC
332 dnl     TWEEK_CXX_IDL
333 dnl     TWEEK_CXX_IDL_OPTS
334 dnl     TWEEK_CXX_IDL_GENDIR_OPT
335 dnl     TWEEK_JAVA_IDL
336 dnl     TWEEK_JAVA_IDL_OPTS
337 dnl     TWEEK_JAVA_IDL_GENDIR_OPT
338 dnl     TWEEK_JAVA_IDL_INCFLAG
339 dnl     TWEEK_JARS
340 dnl     TWEEK_EXT_JARS
341 dnl     TWEEK_PYTHON_IDL
342 dnl     TWEEK_PYTHON_IDL_OPTS
343 dnl     TWEEK_PYTHON_IDL_GENDIR_OPT
344 dnl     TWEEK_PYTHON_IDL_INCFLAG
345 dnl ---------------------------------------------------------------------------
346 AC_DEFUN([TWEEK_PATH],
347 [
348    TWEEK_PATH_CXX($1, [tweek_have_cxx='yes'], $3)
349
350    if test "x$tweek_have_cxx" = "xyes" ; then
351       TWEEK_PATH_JAVA($1, $2, $3)
352       TWEEK_PATH_PYTHON($1, $2, $3)
353    fi
354 ])
Note: See TracBrowser for help on using the browser.