1############################################################################ 2# Usage: 3# SIM_AC_HAVE_COIN_IFELSE( IF-FOUND, IF-NOT-FOUND ) 4# 5# Description: 6# This macro locates the Coin development system. If it is found, 7# the set of variables listed below are set up as described and made 8# available to the configure script. 9# 10# The $sim_ac_coin_desired variable can be set to false externally to 11# make Coin default to be excluded. 12# 13# Autoconf Variables: 14# > $sim_ac_coin_desired true | false (defaults to true) 15# < $sim_ac_coin_avail true | false 16# < $sim_ac_coin_cppflags (extra flags the preprocessor needs) 17# < $sim_ac_coin_cflags (extra flags the C compiler needs) 18# < $sim_ac_coin_cxxflags (extra flags the C++ compiler needs) 19# < $sim_ac_coin_ldflags (extra flags the linker needs) 20# < $sim_ac_coin_libs (link library flags the linker needs) 21# < $sim_ac_coin_datadir (location of Coin data files) 22# < $sim_ac_coin_includedir (location of Coin headers) 23# < $sim_ac_coin_version (the libCoin version) 24# < $sim_ac_coin_msvcrt (the MSVC++ C library Coin was built with) 25# < $sim_ac_coin_configcmd (the path to coin-config or "false") 26# 27# Authors: 28# Lars J. Aas, <larsa@sim.no> 29# Morten Eriksen, <mortene@sim.no> 30# 31# TODO: 32# 33 34AC_DEFUN([SIM_AC_HAVE_COIN_IFELSE], [ 35AC_PREREQ([2.14a]) 36 37# official variables 38sim_ac_coin_avail=false 39sim_ac_coin_cppflags= 40sim_ac_coin_cflags= 41sim_ac_coin_cxxflags= 42sim_ac_coin_ldflags= 43sim_ac_coin_libs= 44sim_ac_coin_datadir= 45sim_ac_coin_includedir= 46sim_ac_coin_version= 47 48# internal variables 49: ${sim_ac_coin_desired=true} 50sim_ac_coin_extrapath= 51 52AC_ARG_WITH([coin], 53AC_HELP_STRING([--with-coin], [enable use of Coin [[default=yes]]]) 54AC_HELP_STRING([--with-coin=DIR], [give prefix location of Coin]), 55 [ case $withval in 56 no) sim_ac_coin_desired=false ;; 57 yes) sim_ac_coin_desired=true ;; 58 *) sim_ac_coin_desired=true 59 sim_ac_coin_extrapath=$withval ;; 60 esac], 61 []) 62 63case $build in 64*-mks ) sim_ac_pathsep=";" ;; 65* ) sim_ac_pathsep="${PATH_SEPARATOR}" ;; 66esac 67 68if $sim_ac_coin_desired; then 69 sim_ac_path=$PATH 70 test -z "$sim_ac_coin_extrapath" || ## search in --with-coin path 71 sim_ac_path="$sim_ac_coin_extrapath/bin${sim_ac_pathsep}$sim_ac_path" 72 test x"$prefix" = xNONE || ## search in --prefix path 73 sim_ac_path="$sim_ac_path${sim_ac_pathsep}$prefix/bin" 74 75 AC_PATH_PROG(sim_ac_coin_configcmd, coin-config, false, $sim_ac_path) 76 77 if test "X$sim_ac_coin_configcmd" != "Xfalse"; then 78 test -n "$CONFIG" && 79 $sim_ac_coin_configcmd --alternate=$CONFIG >/dev/null 2>/dev/null && 80 sim_ac_coin_configcmd="$sim_ac_coin_configcmd --alternate=$CONFIG" 81 fi 82 83 if $sim_ac_coin_configcmd; then 84 sim_ac_coin_version=`$sim_ac_coin_configcmd --version` 85 sim_ac_coin_cppflags=`$sim_ac_coin_configcmd --cppflags` 86 sim_ac_coin_cflags=`$sim_ac_coin_configcmd --cflags 2>/dev/null` 87 sim_ac_coin_cxxflags=`$sim_ac_coin_configcmd --cxxflags` 88 sim_ac_coin_ldflags=`$sim_ac_coin_configcmd --ldflags` 89 sim_ac_coin_libs=`$sim_ac_coin_configcmd --libs` 90 sim_ac_coin_datadir=`$sim_ac_coin_configcmd --datadir` 91 # Hide stderr on the following, as ``--includedir'', ``--msvcrt'' 92 # and ``--cflags'' options were added late to coin-config. 93 sim_ac_coin_includedir=`$sim_ac_coin_configcmd --includedir 2>/dev/null` 94 sim_ac_coin_msvcrt=`$sim_ac_coin_configcmd --msvcrt 2>/dev/null` 95 sim_ac_coin_cflags=`$sim_ac_coin_configcmd --cflags 2>/dev/null` 96 AC_CACHE_CHECK( 97 [if we can compile and link with the Coin library], 98 sim_cv_coin_avail, 99 [sim_ac_save_cppflags=$CPPFLAGS 100 sim_ac_save_cxxflags=$CXXFLAGS 101 sim_ac_save_ldflags=$LDFLAGS 102 sim_ac_save_libs=$LIBS 103 CPPFLAGS="$CPPFLAGS $sim_ac_coin_cppflags" 104 CXXFLAGS="$CXXFLAGS $sim_ac_coin_cxxflags" 105 LDFLAGS="$LDFLAGS $sim_ac_coin_ldflags" 106 LIBS="$sim_ac_coin_libs $LIBS" 107 AC_LANG_PUSH(C++) 108 109 AC_TRY_LINK( 110 [#include <Inventor/SoDB.h>], 111 [SoDB::init();], 112 [sim_cv_coin_avail=true], 113 [sim_cv_coin_avail=false]) 114 115 AC_LANG_POP 116 CPPFLAGS=$sim_ac_save_cppflags 117 CXXFLAGS=$sim_ac_save_cxxflags 118 LDFLAGS=$sim_ac_save_ldflags 119 LIBS=$sim_ac_save_libs 120 ]) 121 sim_ac_coin_avail=$sim_cv_coin_avail 122 123 if $sim_ac_coin_avail; then :; else 124 AC_MSG_WARN([ 125Compilation and/or linking with the Coin main library SDK failed, for 126unknown reason. If you are familiar with configure-based configuration 127and building, investigate the 'config.log' file for clues. 128 129If you can not figure out what went wrong, please forward the 'config.log' 130file to the email address <coin-support@coin3d.org> and ask for help by 131describing the situation where this failed. 132]) 133 fi 134 else # no 'coin-config' found 135 136# FIXME: test for Coin without coin-config script here 137 if test x"$COINDIR" != x""; then 138 sim_ac_coindir=`cygpath -u "$COINDIR" 2>/dev/null || echo "$COINDIR"` 139 if test -d $sim_ac_coindir/bin && test -d $sim_ac_coindir/lib && test -d $sim_ac_coindir/include/Inventor; then 140 # using newest version (last alphabetically) in case of multiple libs 141 sim_ac_coin_lib_file=`echo $sim_ac_coindir/lib/coin*.lib | sed -e 's,.* ,,g'` 142 if test -f $sim_ac_coin_lib_file; then 143 sim_ac_coin_lib_name=`echo $sim_ac_coin_lib_file | sed -e 's,.*/,,g' -e 's,.lib,,'` 144 sim_ac_save_cppflags=$CPPFLAGS 145 sim_ac_save_libs=$LIBS 146 sim_ac_save_ldflags=$LDFLAGS 147 CPPFLAGS="$CPPFLAGS -I$sim_ac_coindir/include" 148 if test -f $sim_ac_coindir/bin/$sim_ac_coin_lib_name.dll; then 149 CPPFLAGS="$CPPFLAGS -DCOIN_DLL" 150 fi 151 LDFLAGS="$LDFLAGS -L$sim_ac_coindir/lib" 152 LIBS="-l$sim_ac_coin_lib_name -lopengl32 $LIBS" 153 154 AC_LANG_PUSH(C++) 155 156 AC_TRY_LINK( 157 [#include <Inventor/SoDB.h>], 158 [SoDB::init();], 159 [sim_cv_coin_avail=true], 160 [sim_cv_coin_avail=false]) 161 162 AC_LANG_POP 163 CPPFLAGS=$sim_ac_save_cppflags 164 LDFLAGS=$sim_ac_save_ldflags 165 LIBS=$sim_ac_save_libs 166 sim_ac_coin_avail=$sim_cv_coin_avail 167 fi 168 fi 169 fi 170 171 if $sim_ac_coin_avail; then 172 sim_ac_coin_cppflags=-I$sim_ac_coindir/include 173 if test -f $sim_ac_coindir/bin/$sim_ac_coin_lib_name.dll; then 174 sim_ac_coin_cppflags="$sim_ac_coin_cppflags -DCOIN_DLL" 175 fi 176 sim_ac_coin_ldflags=-L$sim_ac_coindir/lib 177 sim_ac_coin_libs="-l$sim_ac_coin_lib_name -lopengl32" 178 sim_ac_coin_datadir=$sim_ac_coindir/data 179 else 180 locations=`IFS="${sim_ac_pathsep}"; for p in $sim_ac_path; do echo " -> $p/coin-config"; done` 181 AC_MSG_WARN([cannot find 'coin-config' at any of these locations: 182$locations]) 183 AC_MSG_WARN([ 184Need to be able to run 'coin-config' to figure out how to build and link 185against the Coin library. To rectify this problem, you most likely need 186to a) install Coin if it has not been installed, b) add the Coin install 187bin/ directory to your PATH environment variable. 188]) 189 fi 190 fi 191fi 192 193if $sim_ac_coin_avail; then 194 ifelse([$1], , :, [$1]) 195else 196 ifelse([$2], , :, [$2]) 197fi 198]) # SIM_AC_HAVE_COIN_IFELSE() 199 200