root/juggler/branches/2.2/modules/vrjuggler/configure.ac

Revision 20959, 28.6 kB (checked in by patrick, 9 months ago)

MFT r20958: Fixed linker errors when building with X11 as the windowing

system on Mac OS X 10.5.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1 # ************** <auto-copyright.pl BEGIN do not edit this line> **************
2 #
3 # VR Juggler is (C) Copyright 1998-2007 by Iowa State University
4 #
5 # Original Authors:
6 #   Allen Bierbaum, Christopher Just,
7 #   Patrick Hartling, Kevin Meinert,
8 #   Carolina Cruz-Neira, Albert Baker
9 #
10 # This library is free software; you can redistribute it and/or
11 # modify it under the terms of the GNU Library General Public
12 # License as published by the Free Software Foundation; either
13 # version 2 of the License, or (at your option) any later version.
14 #
15 # This library is distributed in the hope that it will be useful,
16 # but WITHOUT ANY WARRANTY; without even the implied warranty of
17 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18 # Library General Public License for more details.
19 #
20 # You should have received a copy of the GNU Library General Public
21 # License along with this library; if not, write to the
22 # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
23 # Boston, MA 02111-1307, USA.
24 #
25 # *************** <auto-copyright.pl END do not edit this line> ***************
26
27 # -----------------------------------------------------------------------------
28 # Base configure.in for VR Juggler.
29 # -----------------------------------------------------------------------------
30 # This file is "compiled" by GNU autoconf to generate the configure script
31 # that is actually run.
32 # -----------------------------------------------------------------------------
33
34 AC_INIT([VR Juggler], [2.2], [vrjuggler-devel@lists.sourceforge.net])
35 AC_CONFIG_HEADERS([vrj/vrjDefines.h])
36 AC_PREREQ([2.53])
37 AC_COPYRIGHT([VR Juggler is (C) Copyright 1998-2007 by Iowa State University])
38 AC_CONFIG_SRCDIR([vrj/vrjConfig.h])
39 AC_REVISION($Revision$)
40 AC_CONFIG_AUX_DIR([../../share/config])
41 DPP_PREREQ([2.1.2])
42 DPP_INIT
43
44 # Generate the reconfig script first so that it's easy to run configure again
45 # if it fails later on.
46 DPP_GEN_RECONFIG
47
48 # -----------------------------------------------------------------------------
49 # Command-line arguments (--enable-option, --with-pkg=package_name).
50 # -----------------------------------------------------------------------------
51
52 # ------------------------------------------------------ #
53 # --enable-feature[=arg] and --disable-feature arguments #
54 # ------------------------------------------------------ #
55
56 DPP_STD_CPP(yes)
57
58 # Enable compilation of the OpenGL API.  Possible values are "yes" or "no".
59 # "yes" is set with --enable-gl-api and "no" is set with --disable-gl-api.
60 # The default is "yes".
61 AC_ARG_ENABLE(gl-api,
62               [  --enable-gl-api         Use OpenGL API                  [default=yes]],
63               _enable_gl_api="$enableval", _enable_gl_api='yes')
64
65 # Enable compilation of the Performer API.  Possible values are "yes" or "no".
66 # "yes" is set with --enable-pf-api and "no" is set with --disable-pf-api.
67 # The default is "yes".
68 AC_ARG_ENABLE(pf-api,
69               [  --enable-pf-api         Use Perfromer API               [default=yes]],
70               _enable_pf_api="$enableval", _enable_pf_api='yes')
71
72 # Enable versioning by default
73 AC_ARG_ENABLE([versioning],
74               [  --disable-versioning    Disable all versioning capabilities],
75               [ENABLE_VERSIONING="$enableval"], [ENABLE_VERSIONING='yes'])
76 # -------------------------------------------- #
77 # --with-pkg[=arg] and --without-pkg arguments #
78 # -------------------------------------------- #
79
80 # Force the use of GCC as the compiler.
81 # NOTE: This is not fully implemented yet for any platform, but it is partially
82 # usable on Windows.
83 DPP_WITH_GCC(no)
84
85 # Define the binary format.
86 DPP_ABI_SETUP
87
88 # -----------------------------------------------------------------------------
89 # System-dependent stuff.
90 # -----------------------------------------------------------------------------
91 DPP_WIN32_SETUP
92 DPP_SYSTEM_SETUP
93
94 # Depending on the target operating system, set various command options and
95 # such.
96 case $target_os in
97     # SGI running IRIX 6.*.
98     irix6*)
99         if test "x$USE_GCC" != "xyes" ; then
100             DBG_FLAGS="$DBG_FLAGS -gslim"
101         fi
102         ;;
103 esac
104
105 # -----------------------------------------------------------------------------
106 # Path setup.
107 # -----------------------------------------------------------------------------
108
109 # $srcdir is the root directory of the juggler source tree.  To get a value for
110 # $VJROOT_ABS, we cd there and save the value of running pwd.  Then return to
111 # the directory where configure is being run ($topdir).
112 cd "$srcdir"
113 VJROOT_ABS=`pwd`
114 cd "$VJROOT_ABS/../.."
115 UNIX_JUGGLERROOT_ABS=`pwd`
116 cd "$topdir"
117
118 if test "x$CYGPATH" != "xno" ; then
119    JUGGLERROOT_ABS=`cygpath -w "$UNIX_JUGGLERROOT_ABS" | sed -e 's/\\\\/\\//g'`
120 else
121    JUGGLERROOT_ABS="$UNIX_JUGGLERROOT_ABS"
122 fi
123
124 # -----------------------------------------------------------------------------
125 # Checks for programs.
126 # -----------------------------------------------------------------------------
127 VJ_COMPILER_SETUP
128 VJ_PROG_CC_PROF_FLAG(yes)
129 VJ_PROG_CXX_PROF_FLAG(yes)
130
131 # Ensure that the C++ compiler we've found is capable of compiling the newer
132 # newer C++ features that we need.
133 DPP_CXX_NAMESPACE(AC_MSG_ERROR(*** The library requires C++ namesapce support ***))
134 DPP_CXX_HAVE_STD
135 DPP_CXX_INLINE(AC_MSG_ERROR(*** The library requires C++ inline support ***))
136 DPP_CXX_RTTI(AC_MSG_ERROR(*** The library requires C++ RTTI support ***))
137 DPP_CXX_STATIC_CAST(AC_MSG_ERROR(*** The library requires C++ static_cast<> ***))
138 DPP_CXX_DYNAMIC_CAST(AC_MSG_ERROR(*** The library requires C++ dynamic_cast<> ***))
139
140 # Ensure that a version of Perl greater than or equal to 5.004 is available.
141 DPP_PERL_VER(5.004, , , [AC_MSG_ERROR([*** Perl is required ***])])
142 AC_CHECK_PROG([MTREE_CMD], [mtree], [mtree], [\$(PERL) \$(scriptdir)/mtree.pl])
143
144 DPP_HAVE_GNU_MAKE([3.78], ,
145     [AC_MSG_ERROR([*** The build system requires GNU make 3.78 or newer ***])])
146 DPP_BASIC_PROGS($PLATFORM, $OS_TYPE)
147 DPP_PROG_INSTALL
148 VJ_LINKER_SETUP
149
150 # -----------------------------------------------------------------------------
151 # Checks for header files.
152 # -----------------------------------------------------------------------------
153 AC_HEADER_STDC
154 AC_CHECK_HEADERS(strings.h sys/time.h unistd.h)
155
156 DPP_LANG_SAVE
157 DPP_LANG_CPLUSPLUS
158 AC_CHECK_HEADERS([ext/functional])
159 DPP_LANG_RESTORE
160
161 # -----------------------------------------------------------------------------
162 # Checks for libraries.
163 # -----------------------------------------------------------------------------
164 VPR_PATH([1.1.49], , [AC_MSG_ERROR(*** VPR required for VR Juggler ***)])
165
166 JCCL_PATH_CXX([1.1.5], ,
167               [AC_MSG_ERROR(*** JCCL C++ API required for VR Juggler ***)])
168 GADGETEER_PATH([1.1.25], ,
169                [AC_MSG_ERROR(*** Gadgeteer required for VR Juggler ***)])
170 SNX_PATH([1.1.4], , [AC_MSG_ERROR(*** Sonix required for VR Juggler ***)])
171
172 VRJ_USE_X11="$GADGET_USE_X11"
173 if test "x$VRJ_USE_X11" = "xyes" ; then
174    AC_PATH_XTRA
175
176    if test "x$PLATFORM" = "xDarwin" ; then
177       vjsave_CPPFLAGS="$CPPFLAGS"
178       AC_MSG_CHECKING([for extra flags needed to include GL/glx.h])
179       AC_TRY_CPP([#include <GL/glx.h>], [AC_MSG_RESULT([none])],
180          [CPPFLAGS="$CPPFLAGS -I/usr/X11R6/include"
181           AC_TRY_CPP([#include <GL/glx.h>],
182              [X_CFLAGS="$X_CFLAGS -I/usr/X11R6/include"
183               AC_MSG_RESULT([-I/usr/X11R6/include])],
184              [AC_MSG_RESULT([failed to preprocess GL/glx.h])
185               AC_MSG_ERROR([*** GLX header required ***])]
186          )]
187       )
188       CPPFLAGS="$vjsave_CPPFLAGS"
189    fi
190
191    AC_DEFINE([VRJ_USE_X11], , [Define if the X Window System will be used.])
192 # IF we are not using X11 on Mac OS X, then we need to make sure that we can
193 # build Objective-C and Objective-C++ code.
194 elif test "x$PLATFORM" = "xDarwin" ; then
195    DPP_PROG_OBJC
196    DPP_PROG_OBJCXX
197    AC_DEFINE([VRJ_USE_COCOA], , [Define if Cocoa will be used.])
198 fi
199
200 GMTL_PATH([0.4.11], , [AC_MSG_ERROR([*** GMTL required for VR Juggler ***])])
201
202 # ------------
203 # OpenGL API.
204 # ------------
205 OPENGL_API=''                   # 'Y' then we are using OpenGL
206
207 # Test for the OpenGL library if the OpenGL API was enabled.
208 if test "x${_enable_gl_api}" = "xyes" ; then
209     DPP_HAVE_OPENGL(/usr, no,
210         [OPENGL_API='Y'],
211         [AC_MSG_ERROR(*** OpenGL API will not be used (GL files not found) ***)])
212 fi
213
214 # The following determines whether we have to link against libXxf86vm
215 # explicitly.  This is a little tricky because the Mesa libGL is always
216 # linked against it (either statically or implicitly), but the NVidia libGL
217 # implementation is not.
218 # We only need to worry about this on non-Darwin UNIX-based platforms.
219 if test "x$OS_TYPE" = "xUNIX" -a "x$PLATFORM" != "xDarwin" ; then
220    DPP_LANG_SAVE
221    DPP_LANG_C
222
223    vjsave_CFLAGS="$CFLAGS"
224    vjsave_LIBS="$LIBS"
225    vjsave_LDFLAGS="$LDFLAGS"
226
227    CFLAGS="$CFLAGS $X_CFLAGS"
228    LDFLAGS="$LDFLAGS $X_PRE_LIBS $X_LIBS -lX11 $X_EXTRA_LIBS"
229
230    # First, make sure that libXxf86vm even exists and that the function that
231    # we'll use for testing below is available.  If this test fails, we assume
232    # that we are not using XFree86 or X.org.
233    AC_CHECK_LIB([Xxf86vm], [XF86VidModeQueryExtension], [using_xf86='yes'],
234                 [using_xf86='no'])
235
236    if test "x$using_xf86" = "xyes" ; then
237       CFLAGS="$vjsave_CFLAGS $OGL_INCLUDES"
238       LIBS="$GL_LIB $vjsave_LIBS"
239       LDFLAGS="$vjsave_LDFLAGS $OGL_LDFLAGS"
240
241       AC_CACHE_CHECK([if we need to link against libXxf86vm],
242                      [vj_cv_need_libXxf86vm],
243                      [AC_TRY_LINK([#include <stdlib.h>
244 #include <X11/Xlib.h>],
245                         [XF86VidModeQueryExtension(NULL, NULL, NULL);],
246                         [vj_cv_need_libXxf86vm='no'],
247                         [vj_cv_need_libXxf86vm='yes'])])
248
249       # If we have to link against libXxf86vm, we can do that most easily by
250       # adding it to the list of existing OpenGL libraries we'll be using.
251       if test "x$vj_cv_need_libXxf86vm" = "xyes" ; then
252          LIBOPENGL="$LIBOPENGL -lXxf86vm"
253       fi
254    fi
255
256    CFLAGS="$vjsave_CFLAGS"
257    LIBS="$vjsave_LIBS"
258    LDFLAGS="$vjsave_LDFLAGS"
259
260    DPP_LANG_RESTORE
261 fi
262
263 # ---------------------
264 # OpenGL Performer API.
265 # ---------------------
266 PERFORMER_API=''                # 'Y' then we are using Performer
267
268 # Test for the Performer library if the Performer API was enabled.
269 if test "x${_enable_pf_api}" = "xyes" ; then
270     DPP_HAVE_PERFORMER(/usr, 2.4,
271         [PERFORMER_API='Y'],
272         [AC_MSG_WARN(*** Performer API will not be used (files not found) ***)])
273 fi
274
275 DPP_HAVE_CPPUNIT([1.9.10])
276
277 # -----------------------------------------------------------------------------
278 # Checks for typedefs, structures, and compiler characteristics.
279 # -----------------------------------------------------------------------------
280 AC_TYPE_SIZE_T
281
282 # -----------------------------------------------------------------------------
283 # Miscellaneous checks.
284 # -----------------------------------------------------------------------------
285 DPP_INSTALLER(vrjuggler, 0644, 0755, 0755)
286
287 # -----------------------------------------------------------------------------
288 # Finalize substitution settings.
289 # -----------------------------------------------------------------------------
290
291 VJ_VERSION_GROK(VERSION)
292
293 # Set the form of the version number used for versioned directory and file
294 # naming. Unstable builds use all three version numbers; stable builds use
295 # only the major and minor version numbers.
296 if test "x$ENABLE_VERSIONING" = "xyes" ; then
297    VERSION_DOT="$MAJOR_VERSION.$MINOR_VERSION"
298    VERSION_UNDERSCORE="${MAJOR_VERSION}_${MINOR_VERSION}"
299
300    HEADER_VERSION="vrjuggler-$VERSION_DOT"
301    CLOSE_HEADER_VERSION='..'
302    LIBRARY_VERSION="-$VERSION_UNDERSCORE"
303    DATA_VERSION="vrjuggler-$VERSION_DOT"
304    PLUGIN_VERSION="vrjuggler-$VERSION_DOT"
305
306    AC_DEFINE([VRJ_USE_VERSIONING], ,
307              [Define if full package versioning capabilities are enabled])
308    AC_DEFINE_UNQUOTED([VRJ_VERSION_DOT], ["$VERSION_DOT"],
309                       [VR Juggler version string])
310
311 # If versioning is disabled, then none of the version variables need to be
312 # set except for $DATA_VERSION and $PLUGIN_VERSION. Their use is different
313 # than the others. The important thing to note is that the directory name is
314 # unversioned in this case.
315 else
316    DATA_VERSION="vrjuggler"
317    PLUGIN_VERSION="vrjuggler"
318 fi
319
320 # Add these C++ options when compiling with G++.
321 #if test "x$GXX" = "xyes" ; then
322 #   CXXFLAGS="-fhonor-std $CXXFLAGS"
323 #fi
324
325 CXXFLAGS="$CXXFLAGS $CXX_VISIBILITY_FLAGS $GADGET_CXXFLAGS $SNX_CXXFLAGS"
326 OBJCXXFLAGS="$CXXFLAGS -fobjc-exceptions"
327 BASE_APP_LINK_FLAGS="$STDFLAGS $BASE_APP_LINK_FLAGS"
328 DEPEND_FLAGS="$GADGET_CXXFLAGS $SNX_CXXFLAGS"
329 vrj_cxxflags="$STDFLAGS"
330
331 # Compiler-specific settings when GCC is not being used.
332 if test "x$USE_GCC" != "xyes" ; then
333    if test "x$PLATFORM" = "xIRIX" ; then
334 #      CFLAGS="$CFLAGS -woff 1685,515,608,658,799,803,852,1048,1233,1499"
335       CXXFLAGS="$CXXFLAGS -w2"
336       BASE_APP_LINK_FLAGS="$BASE_APP_LINK_FLAGS -J4 -all"
337    elif test "x$OS_TYPE" = "xWin32" ; then
338       vc_cflags='/QIfdiv /QI0f'
339       vc_cxxflags='/GR /GX /EHc /QIfdiv /QI0f'
340       CFLAGS="$CFLAGS $vc_cflags"
341       CXXFLAGS="$CXXFLAGS $vc_cxxflags"
342       BASE_APP_LINK_FLAGS="$BASE_APP_LINK_FLAGS /nologo /incremental:no"
343       DBG_FLAGS="$DBG_FLAGS /MDd"
344       OPT_FLAGS="$OPT_FLAGS /MD"
345       vrj_cxxflags="$vc_cxxflags $vrj_cxxflags"
346    fi
347 fi
348
349 if test "x$PLATFORM" = "xDarwin" ; then
350    changequote(<<, >>)
351    vpr_gcc_major=`echo $dpp_gcc_ver | sed -e 's/^\([0-9]*\)\..*/\1/'`
352    changequote([, ])
353
354    # GCC 4.0 in Darwin removed -fexport-coalesced.
355    if test $vpr_gcc_major -lt 4 ; then
356       CFLAGS_DYNLIB="$CFLAGS_DYNLIB -fexport-coalesced"
357       CXXFLAGS_DYNLIB="$CXXFLAGS_DYNLIB -fexport-coalesced"
358       OBJCXXFLAGS_DYNLIB="$OBJCXXFLAGS_DYNLIB -fexport-coalesced"
359    fi
360
361    BASE_APP_LINK_FLAGS="$BASE_APP_LINK_FLAGS -Wl,-bind_at_load"
362 fi
363
364 if test "x$x_includes" != "xNONE" -a "x$x_includes" != "x" ; then
365    INCLUDES="$INCLUDES -I$x_includes"
366    vrj_cxxflags="$vrj_cxxflags -I$x_includes"
367 fi
368
369 if test "x$OGL_INCLUDES" != "x" ; then
370    INCLUDES="$INCLUDES $OGL_INCLUDES"
371    vrj_cxxflags="$vrj_cxxflags $OGL_INCLUDES"
372 fi
373
374 if test "x$PF_INCLUDES" != "x" ; then
375    INCLUDES="$INCLUDES $PF_INCLUDES"
376    vrj_cxxflags="$vrj_cxxflags $PF_INCLUDES"
377 fi
378
379 if test "x$PLATFORM" = "xDarwin" -a "x$VRJ_USE_X11" = "xyes" ; then
380    vrj_cxxflags="$vrj_cxxflags $X_CFLAGS"
381 fi
382
383 # For makedepend(1) to work properly on HP-UX with aCC, we have to include
384 # these extra paths.
385 if test "x$PLATFORM" = "xHP" ; then
386     _aCC_ROOT="/opt/aCC"
387     DEPEND_EXTRAS="$DEPEND_EXTRAS -I${_aCC_ROOT} -I${_aCC_ROOT}/include -I${_aCC_ROOT}/include/iostream"
388 elif test "x$OS_TYPE" = "xWin32" ; then
389     DEPEND_EXTRAS="$DEPEND_EXTRAS -D__cplusplus"
390 fi
391
392 # Remove duplicated arguments from each of the following.  This can help speed
393 # up compile times, and it reduces the (perceived) complexity of the commands.
394 # These steps are performed here because no further additions are made to any
395 # of these variables after this point.
396 VJ_STRIP_DUPLICATE_ARGS(CFLAGS, [$CFLAGS])
397 VJ_STRIP_DUPLICATE_ARGS(CXXFLAGS, [$CXXFLAGS])
398 VJ_STRIP_DUPLICATE_ARGS(OBJCXXFLAGS, [$OBJCXXFLAGS])
399 VJ_STRIP_DUPLICATE_ARGS(DEPEND_FLAGS, [$DEPEND_FLAGS])
400 VJ_STRIP_DUPLICATE_ARGS(DEPEND_EXTRAS, [$DEPEND_EXTRAS])
401 VJ_STRIP_DUPLICATE_ARGS(INCLUDES, [$INCLUDES])
402 VJ_STRIP_DUPLICATE_ARGS(vrj_cxxflags, [$vrj_cxxflags])
403
404 VJ_APP_CXXFLAGS='$(VRJ_CXX_FLAGS)'
405 VJ_APP_EXTRA_LIBS='$(VRJ_EXTRA_LIBS_STATIC)'
406 VJ_APP_EXTRA_LIBS_INST='$(VRJ_EXTRA_LIBS)'
407
408 # Enable warnings when building applications with GCC.
409 if test "x$GXX" = "xyes" ; then
410    VJ_APP_CXXFLAGS="$VJ_APP_CXXFLAGS -Wall"
411 fi
412
413 # Variables set in Makefiles found in the application trees.  All variables
414 # listed are for use only in the Makefile.in's found in that tree unless
415 # otherwise noted.  They are used in the following way:
416 #
417 #     * APP_EXTRA_LIBS_GL: The OpenGL libraries needed for compiling with the
418 #       OpenGL API.
419 #     * APP_EXTRA_LIBS_PF: The Performer libraries needed for compiling with
420 #       the Performer API.
421 #     * APP_EXTRA_LIBS_OSG: The OpenSceneGraph libraries needed for compiling
422 #       with the Open Scene Graph.
423
424 # Put together the basic information needed to compile VR Juggler applications.
425 VJ_APP_COMPILER($CC, $CFLAGS, $CXX, $VJ_APP_CXXFLAGS, $DBG_FLAGS, $OPT_FLAGS,
426                 VJ_BASE_DIR, $DEFS, , ${_EXTRA_FLAGS}, $HEADER_VERSION)
427 VJ_APP_LINKER_DOOZER([$CXX], [$BASE_APP_LINK_FLAGS], [$LDOPTS_DBG],
428                      [$LDOPTS_OPT], ['$(VRJ_LIBS)'],
429                      [$VJ_APP_EXTRA_LIBS])
430
431 APP_BASE_DIR='$(topdir)/instlinks'
432 APP_BASE_DIR_INST='$(VJ_BASE_DIR)'
433
434 vrj_lib_name="vrj$LIBRARY_VERSION"
435 vrj_prof_lib_name="vrj_p$LIBRARY_VERSION"
436
437 vrjogl_lib_name="vrj_ogl$LIBRARY_VERSION"
438 vrjogl_prof_lib_name="vrj_ogl_p$LIBRARY_VERSION"
439
440 vrjpf_lib_name="vrj_pf$LIBRARY_VERSION"
441 vrjpf_prof_lib_name="vrj_pf_p$LIBRARY_VERSION"
442
443 if test "$OS_TYPE" = "UNIX" ; then
444     REQ_EXTRA_LIBS="$LDFLAGS $SNX_LIBS $GADGET_LIBS -lm"
445     DYLIB_DEPS_VJ="$REQ_EXTRA_LIBS"
446     DYLIB_DEPS_GL="$REQ_EXTRA_LIBS"
447     DYLIB_DEPS_PF="$PF_LDFLAGS $LIBPERFORMER $REQ_EXTRA_LIBS"
448
449     osx_core_frameworks=''
450     osx_gl_frameworks=''
451
452     if test "x$VRJ_USE_X11" != "xyes" ; then
453         osx_core_frameworks="-framework AppKit -framework Cocoa"
454         osx_gl_frameworks="$osx_core_frameworks"
455     fi
456
457     REQ_EXTRA_PROF_LIBS="$LDFLAGS $SNX_PROF_LIBS $GADGET_PROF_LIBS $LIBS -lm"
458     DYLIB_PROF_DEPS_VJ="$REQ_EXTRA_PROF_LIBS"
459     DYLIB_PROF_DEPS_GL="-L\$(LIBDIR) -l$vrj_prof_lib_name $OGL_LDFLAGS $LIBOPENGL $REQ_EXTRA_PROF_LIBS"
460     DYLIB_PROF_DEPS_PF="-L\$(LIBDIR) -l$vrj_prof_lib_name $PF_LDFLAGS $LIBPERFORMER $REQ_EXTRA_PROF_LIBS"
461
462     if test "x$PLATFORM" = "xDarwin" ; then
463         DYLIB_DEPS_VJ="$DYLIB_DEPS_VJ $osx_core_frameworks"
464
465         if test "x$VRJ_USE_X11" = "xyes" ; then
466             # Deal with a bug in Mac OS X 10.5.0 and 10.5.1 (at lesat) when
467             # linking against the X11 libGL.dylib.
468             case $target_os in
469                darwin9*)
470                   gl_hack='-Wl,-dylib_file,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib'
471                   ;;
472             esac
473
474             CFLAGS="$CFLAGS $X_CFLAGS"
475             CXXFLAGS="$CXXFLAGS $X_CFLAGS"
476             DYLIB_DEPS_GL="$DYLIB_DEPS_GL -lGLU -lGL $X_PRE_LIBS $X_LIBS -lX11 $X_EXTRA_LIBS $osx_gl_frameworks $gl_hack"
477             DYLIB_PROF_DEPS_GL="$DYLIB_PROF_DEPS_GL -lGLU -lGL $X_PRE_LIBS $X_LIBS -lX11 $X_EXTRA_LIBS $osx_gl_frameworks $gl_hack"
478         else
479             DYLIB_DEPS_GL="$DYLIB_DEPS_GL $OGL_LDFLAGS $LIBOPENGL $osx_gl_frameworks"
480             DYLIB_PROF_DEPS_GL="$DYLIB_DEPS_GL $OGL_LDFLAGS $LIBOPENGL $osx_gl_frameworks"
481         fi
482     else
483         DYLIB_DEPS_GL="$DYLIB_DEPS_GL $OGL_LDFLAGS $LIBOPENGL"
484         DYLIB_PROF_DEPS_GL="$DYLIB_PROF_DEPS_GL $OGL_LDFLAGS $LIBOPENGL"
485     fi
486
487     if test "x$VRJ_USE_X11" = "xyes" ; then
488         APP_EXTRA_LIBS_X11="$X_PRE_LIBS $X_LIBS -lX11 $X_EXTRA_LIBS"
489     fi
490
491     APP_EXTRA_LIBS_OSG='-L$(OSGHOME)/lib -losg -losgDB -losgGA -losgUtil -lOpenThreads'
492
493     if test "x$OGL_LDFLAGS" != "x" ; then
494         if test "x$PLATFORM" = "xDarwin" ; then
495             if test "x$VRJ_USE_X11" = "xyes" ; then
496                 APP_EXTRA_LIBS_GL="-lGLU -lGL $osx_core_frameworks $gl_hack"
497             else
498                 APP_EXTRA_LIBS_GL="$OGL_LDFLAGS $osx_core_frameworks"
499             fi
500         else
501             APP_EXTRA_LIBS_GL="-L$OGLROOT/lib$LIBBITSUF $LIBOPENGL"
502         fi
503     else
504         APP_EXTRA_LIBS_GL="$LIBOPENGL"
505     fi
506
507     if test "x$PF_LDFLAGS" != "x" ; then
508         APP_EXTRA_LIBS_PF="-L$PFROOT/lib$LIBBITSUF $LIBPERFORMER"
509     else
510         APP_EXTRA_LIBS_PF="$LIBPERFORMER"
511     fi
512
513     VJ_BUILD_LIB_FILE_LIST([$DYLIB_DEPS_VJ], [DYLIB_DEP_FILES_VJ])
514     VJ_BUILD_LIB_FILE_LIST([$DYLIB_DEPS_GL], [DYLIB_DEP_FILES_GL])
515     VJ_BUILD_LIB_FILE_LIST([$DYLIB_DEPS_PF], [DYLIB_DEP_FILES_PF])
516     VJ_BUILD_LIB_FILE_LIST([$DYLIB_PROF_DEPS_VJ], [DYLIB_PROF_DEP_FILES_VJ])
517     VJ_BUILD_LIB_FILE_LIST([$DYLIB_PROF_DEPS_GL], [DYLIB_PROF_DEP_FILES_GL])
518     VJ_BUILD_LIB_FILE_LIST([$DYLIB_PROF_DEPS_PF], [DYLIB_PROF_DEP_FILES_PF])
519
520     # This is done after the call to VJ_BUILD_LIB_FILE_LIST() to prevent the
521     # build from getting confused and using a path to the wrong libvrj.
522     # Unfortunately, this means that libvrj will not be identified as a
523     # dependency of libvrj_ogl or of libvrj_pf, but that generally shouldn't
524     # be a problem since the regular header file dependency stuff will cause
525     # object files to be rebuilt appropriately.
526     # XXX: This is, of cousre, a hack.
527     DYLIB_DEPS_GL="-L\$(LIBDIR) -l$vrj_lib_name $DYLIB_DEPS_GL"
528     DYLIB_DEPS_PF="-L\$(LIBDIR) -l$vrj_lib_name $DYLIB_DEPS_PF"
529 elif test "$OS_TYPE" = "Win32" ; then
530     REQ_EXTRA_LIBS="$LDFLAGS $GADGET_LIBS $SNX_LIBS $LIBS"
531     BASIC_WIN32_LIBS='comctl32.lib user32.lib gdi32.lib'
532     DYLIB_DEPS_BASIC="$REQ_EXTRA_LIBS $BASIC_WIN32_LIBS"
533     DYLIB_DEPS_VJ="/libpath:\$(LIBDIR) $DYLIB_DEPS_BASIC"
534     DYLIB_DEPS_GL="/libpath:\$(LIBDIR) vrj.lib $DYLIB_DEPS_BASIC $OGL_LDFLAGS $LIBOPENGL"
535     DYLIB_DEPS_PF="/libpath:\$(LIBDIR) vrj.lib $PF_LDFLAGS_LINK_EXE $LIBPERFORMER_LINK_EXE $OGL_LDFLAGS $LIBOPENGL $REQ_EXTRA_LIBS"
536     DYLIB_PROF_DEPS_VJ="$DYLIB_DEPS_VJ"
537     DYLIB_PROF_DEPS_GL="$DYLIB_DEPS_GL"
538     DYLIB_PROF_DEPS_PF="$DYLIB_DEPS_PF"
539
540     APP_EXTRA_LIBS_GL="$OGL_LDFLAGS $LIBOPENGL"
541     APP_EXTRA_LIBS_PF="$PF_LDFLAGS_LINK_EXE $LIBPERFORMER_LINK_EXE"
542     APP_EXTRA_LIBS_OSG='/libpath:$(OSGHOME)/lib osg.lib osgDB.lib osgGA.lib osgUtil.lib'
543 fi
544
545
546 # Define the base path to the source directory using $(VJROOT_ABS) as an
547 # alternative to using $(srcdir).
548 UNIX_VJROOT_ABS="$VJROOT_ABS"
549
550 # Translate paths from UNIX-style to Win32.
551 if test "x$OS_TYPE" = "xWin32" ; then
552     VJROOT_ABS=`dospath -p "$VJROOT_ABS"`
553     JUGGLERROOT_ABS=`dospath -p "$JUGGLERROOT_ABS"`
554
555 #    DEPEND_EXTRAS=`dospath "$DEPEND_EXTRAS"`
556 #    INCLUDES=`dospath "$INCLUDES"`
557 #    LIBS=`dospath "$LIBS"`
558     LN_S='cp -r'
559     RM_LN='rm -rf'
560     MTREE_CMD=`dospath "$MTREE_CMD"`
561
562     JDK_HOME=`dospath -p "$JDK_HOME"`
563
564 #    APP_EXTRA_LIBS=`dospath "$APP_EXTRA_LIBS"`
565 #    APP_EXTRA_LIBS_GL=`dospath "$APP_EXTRA_LIBS_GL"`
566 #    APP_EXTRA_LIBS_PF=`dospath "$APP_EXTRA_LIBS_PF"`
567 else
568     RM_LN='rm -f'
569     VJROOT_ABS="$VJROOT_ABS"
570     JUGGLERROOT_ABS="$JUGGLERROOT_ABS"
571 fi
572
573 # Set up some sed expressions that will help separate the share directory from
574 # the full installation prefix.
575 if test "x$prefix" = "xNONE" ; then
576     _prefix_exp="s|^$ac_default_prefix/||"
577 else
578     _prefix_exp="s|^$prefix/||"
579 fi
580
581 VJ_CLEAN_LINKER_ARGS(LDFLAGS, [$LDFLAGS])
582 VJ_CLEAN_LINKER_ARGS(LIBS, [$LIBS])
583 VJ_CLEAN_LINKER_ARGS(DYLIB_DEPS_VJ, [$DYLIB_DEPS_VJ])
584 VJ_CLEAN_LINKER_ARGS(DYLIB_DEPS_GL, [$DYLIB_DEPS_GL])
585
586 # XXX: This will mangle the default Performer installation path on Windows.
587 # Having to deal with spaces in path names sucks.
588 if test "x$OS_TYPE" != "xWin32" ; then
589    VJ_CLEAN_LINKER_ARGS(DYLIB_DEPS_PF, [$DYLIB_DEPS_PF])
590 fi
591
592 # In Autoconf 2.60, datadir has been renamed to datarootdir.
593 if test "x$datarootdir" != "x" ; then
594    data_var="$datarootdir"
595 else
596    data_var="$datadir"
597 fi
598
599 # Make a best-effort attempt to extract the actual share directory from the
600 # full installation prefix.  This is not foolproof, but it will work in almost
601 # all cases.  A person would have to be doing something malicious or foolish
602 # to make it break.
603 data_subdir=`echo "$data_var" | sed -e 's|^${prefix}/||' -e "${_prefix_exp}"`
604 VJ_SHARE_DIR="$data_subdir/$DATA_VERSION"
605
606 # Information needed to generate vrjuggler-config.
607 # $vrj_extra_libs only lists the external (non-Juggler) libraries needed by
608 # VR Juggler.
609 vrj_ldflags="-L\$prefix/lib\$LIBBITSUF"
610 vrj_extra_libs="$LDFLAGS $APP_EXTRA_LIBS_GL $APP_EXTRA_LIBS_X11 $LIBS"
611
612 vrj_libs="-l$vrj_lib_name"
613 vrj_prof_libs="-l$vrj_prof_lib_name"
614 vrj_ogl_lib="-l$vrjogl_lib_name"
615 vrj_ogl_prof_lib="-l$vrjogl_prof_lib_name"
616
617 if test "x$PERFORMER_API" = "xY" ; then
618    vrj_pf_lib="-l$vrjpf_lib_name"
619    vrj_pf_prof_lib="-l$vrjpf_prof_lib_name"
620    vrj_pf_extra_libs="$APP_EXTRA_LIBS_PF"
621 fi
622
623 # XXX: Ideally, -lm would not be added "manually" like this.
624 vrj_extra_libs="$LDFLAGS $APP_EXTRA_LIBS_X11 $LIBS -lm"
625 vrj_ogl_extra_libs="$APP_EXTRA_LIBS_GL"
626
627 if test "x$PLATFORM" = "xIRIX" -a "x$USE_GCC" != "xyes" ; then
628     vrj32_flags='-n32'
629     vrj64_flags='-64'
630 elif test "x$GCC" = "xyes" ; then
631     vrj32_flags='-m32'
632     vrj64_flags='-m64'
633 fi
634
635 vrj_extra_ldflags="$APP_EXTRA_LIBS_BEGIN"
636
637 # -----------------------------------------------------------------------------
638 # Do Makefile substitutions.
639 # -----------------------------------------------------------------------------
640 includedir="$includedir/$HEADER_VERSION"
641 vrj_header_subdir="$HEADER_VERSION"
642 vrj_data_subdir="$DATA_VERSION"
643 vrj_plugin_subdir="$PLUGIN_VERSION"
644
645 DPP_SUBST
646
647 AC_SUBST(data_subdir)
648 AC_SUBST(topdir)
649 AC_SUBST(UNIX_VJROOT_ABS)
650 AC_SUBST(UNIX_JUGGLERROOT_ABS)
651 AC_SUBST(VJROOT_ABS)
652 AC_SUBST(JUGGLERROOT_ABS)
653 AC_SUBST(VJ_SHARE_DIR)
654
655 AC_SUBST(VERSION_DOT)
656 AC_SUBST(VERSION_UNDERSCORE)
657 AC_SUBST(HEADER_VERSION)
658 AC_SUBST(CLOSE_HEADER_VERSION)
659 AC_SUBST(LIBRARY_VERSION)
660 AC_SUBST(DATA_VERSION)
661 AC_SUBST(PLUGIN_VERSION)
662
663 AC_SUBST(ANT)
664 AC_SUBST(EXTRA_LDFLAGS)
665 AC_SUBST(RM_LN)
666 AC_SUBST(VPR_SUBSYSTEM)
667
668 AC_SUBST(OPENGL_API)
669 AC_SUBST(PERFORMER_API)
670
671 AC_SUBST(APP_BASE_DIR)
672 AC_SUBST(APP_BASE_DIR_INST)
673
674 AC_SUBST(DYLIB_DEPS_VJ)
675 AC_SUBST(DYLIB_DEPS_GL)
676 AC_SUBST(DYLIB_DEPS_PF)
677 AC_SUBST(DYLIB_DEP_FILES_VJ)
678 AC_SUBST(DYLIB_DEP_FILES_GL)
679 AC_SUBST(DYLIB_DEP_FILES_PF)
680 AC_SUBST(DYLIB_PROF_DEPS_VJ)
681 AC_SUBST(DYLIB_PROF_DEPS_GL)
682 AC_SUBST(DYLIB_PROF_DEPS_PF)
683 AC_SUBST(DYLIB_PROF_DEP_FILES_VJ)
684 AC_SUBST(DYLIB_PROF_DEP_FILES_GL)
685 AC_SUBST(DYLIB_PROF_DEP_FILES_PF)
686
687 AC_SUBST(VJ_APP_EXTRA_LIBS_INST)
688 AC_SUBST(APP_EXTRA_LIBS_GL)
689 AC_SUBST(APP_EXTRA_LIBS_OSG)
690 AC_SUBST(APP_EXTRA_LIBS_PF)
691
692 AC_SUBST(vrj_cxxflags)
693 AC_SUBST(vrj_extra_cxxflags)
694 AC_SUBST(vrj_ldflags)
695 AC_SUBST(vrj_extra_ldflags)
696 AC_SUBST(vrj_extra_libs)
697 AC_SUBST(vrj32_flags)
698 AC_SUBST(vrj64_flags)
699
700 AC_SUBST(vrj_libs)
701 AC_SUBST(vrj_ogl_lib)
702 AC_SUBST(vrj_pf_lib)
703 AC_SUBST(vrj_prof_libs)
704 AC_SUBST(vrj_ogl_prof_lib)
705 AC_SUBST(vrj_pf_prof_lib)
706 AC_SUBST(vrj_extra_libs)
707 AC_SUBST(vrj_ogl_extra_libs)
708 AC_SUBST(vrj_pf_extra_libs)
709 AC_SUBST(vrj_header_subdir)
710 AC_SUBST(vrj_data_subdir)
711 AC_SUBST(vrj_plugin_subdir)
712
713 AC_SUBST(tweek_java_api_jars_bundle)
714 AC_SUBST(tweek_ext_java_api_jars_bundle)
715
716 # -----------------------------------------------------------------------------
717 # Final file generation step.
718 # -----------------------------------------------------------------------------
719
720 VJ_MTREE_LIB_GEN(VJ, mtree, $PLATFORM, $ISA)
721
722 AC_CONFIG_FILES([
723    vrjuggler.fpc
724    vrjuggler-opengl.fpc
725    vrjuggler-performer.fpc
726    Makefile
727    Makefile.inc
728    common.defs.mk
729    make.defs.mk
730    vrj/Makefile
731    vrj/Display/Makefile
732    vrj/Draw/Makefile
733    vrj/Draw/OGL/Makefile
734    vrj/Draw/OSG/Makefile
735    vrj/Draw/OpenSG/Makefile
736    vrj/Draw/Pf/Makefile
737    vrj/Kernel/Makefile
738    vrj/Performance/Makefile
739    vrj/Sound/Makefile
740    vrj/Test/Makefile
741    vrj/Util/Makefile
742    vrj.appdefs.mk
743    samples/Makefile
744    samples/OGL/Makefile
745    samples/OGL/advanced/Makefile
746    samples/OGL/advanced/glove/Makefile
747    samples/OGL/advanced/navgrab/Makefile
748    samples/OGL/simple/Makefile
749    samples/OGL/simple/ConfigApp/Makefile
750    samples/OGL/simple/MPApp/Makefile
751    samples/OGL/simple/SimpleApp/Makefile
752    samples/OGL/simple/contextApp/Makefile
753    samples/OGL/simple/simpleInput/Makefile
754    samples/OGL/ext/Makefile
755    samples/OGL/ext/proceduralApp/Makefile
756    samples/OSG/Makefile
757    samples/OSG/advanced/Makefile
758    samples/OSG/advanced/OSGNavGrab/Makefile
759    samples/OSG/simple/Makefile
760    samples/OSG/simple/osgNav/Makefile
761    samples/OpenSG/Makefile
762    samples/OpenSG/advanced/Makefile
763    samples/OpenSG/advanced/OpenSGNavGrab/Makefile
764    samples/OpenSG/simple/Makefile
765    samples/OpenSG/simple/OpenSGNav/Makefile
766    samples/Pf/Makefile
767    samples/Pf/advanced/Makefile
768    samples/Pf/advanced/pfConfigNav/Makefile
769    samples/Pf/advanced/pfNav/Makefile
770    samples/Pf/simple/Makefile
771    samples/Pf/simple/simplePf/Makefile
772    samples/sound/Makefile
773    samples/sound/simple/Makefile
774    samples/sound/simple/sonix/Makefile
775    samples/sound/simple/soundManager/Makefile
776    samples/speech/Makefile
777    samples/speech/simple/Makefile
778    samples/speech/simple/SpeechRecogApp/Makefile
779    test/Makefile
780    test/Cluster/Makefile
781    test/Cluster/applicationData/Makefile
782    test/Draw/Makefile
783    test/Draw/OGL/Makefile
784    test/Draw/OGL/analog/Makefile
785    test/Draw/OGL/combo/Makefile
786    test/Draw/OGL/cubes/Makefile
787    test/Draw/OGL/digitalGlove/Makefile
788    test/Draw/OGL/logger/Makefile
789    test/Draw/OGL/simpleGlove/Makefile
790    test/Draw/OGL/swapSync/Makefile   
791    test/Draw/OGL/texture/Makefile
792    test/Draw/OGL/torus/Makefile
793    test/Draw/OGL/WallTest/Makefile
794    test/Draw/OGL/wand/Makefile
795    test/PerfMon/Makefile
796    test/PerfMon/collideApp/Makefile
797    test/RTRC/Makefile
798    test/TestSuite/Makefile
799    test/TestSuite/test.defs.mk
800    test/TestSuite/TestCases/Makefile
801    test/TestSuite/TestCases/Pf/Makefile
802    tools/Makefile
803    mtree/VJ.data.dist
804    mtree/VJ.include.dist
805    mtree/VJ.install.dist
806    mtree/VJ.java.dist
807    mtree/VJ.samples.dist
808    mtree/VJ.test.dist
809    mtree/VJ.tools.dist
810    VARS.pl
811    ]
812    )
813
814 AC_OUTPUT
Note: See TracBrowser for help on using the browser.