goat3dgfx

annotate configure @ 32:7f0aed0fe289

uberized the configure script
author John Tsiombikas <nuclear@member.fsf.org>
date Sun, 02 Mar 2014 17:40:51 +0200
parents 0ac499409edd
children
rev   line source
nuclear@10 1 #!/bin/sh
nuclear@10 2
nuclear@10 3 prefix=/usr/local
nuclear@10 4 opt=false
nuclear@10 5 dbg=true
nuclear@10 6 vr=true
nuclear@10 7
nuclear@23 8 for arg in $#; do
nuclear@10 9 case "$arg" in
nuclear@10 10 --prefix=*)
nuclear@10 11 value=`echo $arg | sed 's/--prefix=//'`
nuclear@10 12 prefix=${value:-$prefix}
nuclear@10 13 ;;
nuclear@10 14
nuclear@10 15 --enable-opt)
nuclear@10 16 opt=true;;
nuclear@10 17 --disable-opt)
nuclear@10 18 opt=false;;
nuclear@10 19
nuclear@10 20 --enable-debug)
nuclear@10 21 dbg=true;;
nuclear@10 22 --disable-debug)
nuclear@10 23 dbg=false;;
nuclear@10 24
nuclear@10 25 --enable-vr)
nuclear@10 26 vr=true;;
nuclear@10 27 --disable-vr)
nuclear@10 28 vr=false;;
nuclear@10 29
nuclear@10 30 --help)
nuclear@10 31 echo 'usage: ./configure [options]'
nuclear@10 32 echo 'options:'
nuclear@10 33 echo ' --prefix=<path>: installation path (default: /usr/local)'
nuclear@10 34 echo ' --enable-<foo>/--disable-<foo>: enable/disable features where foo is:'
nuclear@10 35 echo ' opt: speed optimizations'
nuclear@10 36 echo ' dbg: debugging symbols'
nuclear@10 37 echo ' vr: support for virtual reality'
nuclear@10 38 echo 'all invalid options are silently ignored'
nuclear@10 39 exit 0
nuclear@10 40 ;;
nuclear@10 41 esac
nuclear@10 42 done
nuclear@10 43
nuclear@10 44 begin_emit()
nuclear@10 45 {
nuclear@10 46 emit_file=$1
nuclear@10 47 cat /dev/null >$1
nuclear@10 48 }
nuclear@10 49
nuclear@10 50 emit()
nuclear@10 51 {
nuclear@10 52 echo $* >>$emit_file
nuclear@10 53 }
nuclear@10 54
nuclear@10 55
nuclear@10 56 tmpfile_prefix=/tmp/goat3dgfx_configure-
nuclear@10 57 build_log=/tmp/goat3dgfx_configure.log
nuclear@10 58
nuclear@10 59 check_ovr()
nuclear@10 60 {
nuclear@10 61 tmpfile_bin=${tmpfile_prefix}check_ovr
nuclear@10 62 tmpfile_src=${tmpfile_bin}.cc
nuclear@10 63
nuclear@10 64 begin_emit $tmpfile_src
nuclear@10 65 emit '#include <OVR.h>'
nuclear@10 66 emit 'int main() {}'
nuclear@10 67
nuclear@10 68 echo -n 'checking for LibOVR ... '
nuclear@10 69
nuclear@10 70 if ! c++ $CFLAGS -o $tmpfile_bin $tmpfile_src -lovr >$build_log 2>&1; then
nuclear@10 71 echo not found!
nuclear@10 72 exit 1
nuclear@10 73 else
nuclear@10 74 echo ok
nuclear@10 75 fi
nuclear@10 76
nuclear@15 77 LDFLAGS="$LDFLAGS -lovr -ludev -lXinerama"
nuclear@10 78 rm -f $tmpfile_bin $tmpfile_src
nuclear@10 79 }
nuclear@10 80
nuclear@10 81 check_glew()
nuclear@10 82 {
nuclear@10 83 tmpfile_bin=${tmpfile_prefix}check_glew
nuclear@10 84 tmpfile_src=${tmpfile_bin}.c
nuclear@10 85
nuclear@10 86 begin_emit $tmpfile_src
nuclear@10 87 emit '#include <GL/glew.h>'
nuclear@10 88 emit 'int main() { return 0; }'
nuclear@10 89
nuclear@10 90 echo -n 'checking for GLEW ... '
nuclear@10 91
nuclear@10 92 if ! cc $CFLAGS -o $tmpfile_bin $tmpfile_src -lGLEW >$build_log 2>&1; then
nuclear@10 93 echo not found!
nuclear@10 94 exit 1
nuclear@10 95 else
nuclear@10 96 echo ok
nuclear@10 97 fi
nuclear@10 98
nuclear@10 99 LDFLAGS="$LDFLAGS -lGLEW"
nuclear@10 100 rm -f $tmpfile_bin $tmpfile_src
nuclear@10 101 }
nuclear@10 102
nuclear@10 103 check_opengl()
nuclear@10 104 {
nuclear@10 105 tmpfile_bin=${tmpfile_prefix}check_gl
nuclear@10 106 tmpfile_src=${tmpfile_bin}.c
nuclear@10 107
nuclear@10 108 echo -n 'checking for OpenGL ... '
nuclear@10 109
nuclear@10 110 begin_emit $tmpfile_src
nuclear@10 111 if [ "`uname -s`" = Darwin ]; then
nuclear@10 112 emit '#include <OpenGL/gl.h>'
nuclear@10 113
nuclear@10 114 libgl='-framework OpenGL'
nuclear@10 115 else
nuclear@10 116 if uname -s | grep MINGW; then
nuclear@10 117 libgl='-lopengl32 -lglu32'
nuclear@32 118 emit '#include <windows.h>'
nuclear@10 119 else
nuclear@10 120 libgl='-lGL -lGLU'
nuclear@10 121 fi
nuclear@32 122
nuclear@32 123 emit '#include <GL/gl.h>'
nuclear@10 124 fi
nuclear@10 125 emit 'int main() { return 0; }'
nuclear@10 126
nuclear@10 127 if ! cc $CFLAGS -o $tmpfile_bin $tmpfile_src $libgl >$build_log 2>&1; then
nuclear@10 128 echo not found!
nuclear@10 129 exit 1
nuclear@10 130 else
nuclear@10 131 echo ok
nuclear@10 132 fi
nuclear@10 133
nuclear@10 134 LDFLAGS="$LDFLAGS $libgl"
nuclear@10 135 rm -f $tmpfile_bin $tmpfile_src
nuclear@10 136 }
nuclear@10 137
nuclear@10 138 check_glut()
nuclear@10 139 {
nuclear@10 140 tmpfile_bin=${tmpfile_prefix}check_glut
nuclear@10 141 tmpfile_src=${tmpfile_bin}.c
nuclear@10 142
nuclear@10 143 echo -n 'checking for GLUT ... '
nuclear@10 144
nuclear@10 145 begin_emit $tmpfile_src
nuclear@10 146 if [ "`uname -s`" = Darwin ]; then
nuclear@10 147 emit '#include <GLUT/glut.h>'
nuclear@10 148
nuclear@10 149 libglut='-framework GLUT'
nuclear@10 150 else
nuclear@10 151 emit '#include <GL/glut.h>'
nuclear@10 152
nuclear@10 153 if uname -s | grep MINGW; then
nuclear@10 154 libglut='-lglut32'
nuclear@10 155 else
nuclear@10 156 libglut='-lglut'
nuclear@10 157 fi
nuclear@10 158 fi
nuclear@10 159 emit 'int main() { return 0; }'
nuclear@10 160
nuclear@10 161 if ! cc $CFLAGS -o $tmpfile_bin $tmpfile_src $libglut >$build_log 2>&1; then
nuclear@10 162 echo not found!
nuclear@10 163 exit 1
nuclear@10 164 else
nuclear@10 165 echo ok
nuclear@10 166 fi
nuclear@10 167
nuclear@10 168 LDFLAGS="$LDFLAGS $libglut"
nuclear@10 169 rm -f $tmpfile_bin $tmpfile_src
nuclear@10 170 }
nuclear@10 171
nuclear@32 172 check_lib()
nuclear@32 173 {
nuclear@32 174 libname=$1
nuclear@32 175 hdr=$2
nuclear@32 176 lib=-l$libname
nuclear@32 177 tmpfile_bin=${tmpfile_prefix}check_$libname
nuclear@32 178 tmpfile_src=${tmpfile_bin}.cc
nuclear@32 179
nuclear@32 180 echo -n "checking for $libname ... "
nuclear@32 181
nuclear@32 182 begin_emit $tmpfile_src
nuclear@32 183 emit "#include <${hdr}>"
nuclear@32 184 emit 'int main() {}'
nuclear@32 185
nuclear@32 186 if ! c++ -o $tmpfile_bin $tmpfile_src $lib -lpthread >$build_log 2>&1; then
nuclear@32 187 echo not found!
nuclear@32 188 exit 1
nuclear@32 189 else
nuclear@32 190 echo ok
nuclear@32 191 fi
nuclear@32 192
nuclear@32 193 LDFLAGS="$LDFLAGS $lib"
nuclear@32 194 rm -f $tmpfile_bin $tmpfile_src
nuclear@32 195 }
nuclear@32 196
nuclear@10 197 gen_config()
nuclear@10 198 {
nuclear@10 199 echo "generating: src/config.h ..."
nuclear@10 200 begin_emit src/config.h
nuclear@10 201
nuclear@10 202 emit '#ifndef GOAT3DGFX_CONFIG_H_'
nuclear@10 203 emit '#define GOAT3DGFX_CONFIG_H_'
nuclear@10 204
nuclear@10 205 if $vr; then
nuclear@10 206 emit '#define USE_VR'
nuclear@10 207 emit '#define USE_LIBOVR'
nuclear@10 208 else
nuclear@10 209 emit '#undef USE_VR'
nuclear@10 210 fi
nuclear@10 211
nuclear@12 212 emit '#endif // GOAT3DGFX_CONFIG_H_'
nuclear@10 213 }
nuclear@10 214
nuclear@10 215
nuclear@10 216 gen_makefile()
nuclear@10 217 {
nuclear@10 218 echo "generating: Makefile ..."
nuclear@10 219 begin_emit Makefile
nuclear@10 220
nuclear@10 221 emit '# this makefile is automatically generated. do not edit!'
nuclear@10 222 emit "PREFIX = $prefix"
nuclear@10 223 if $opt; then emit 'opt = -O3'; fi
nuclear@10 224 if $dbg; then emit 'dbg = -g'; fi
nuclear@10 225 emit "cfg_cflags = $CFLAGS"
nuclear@10 226 emit "cfg_ldflags = $LDFLAGS"
nuclear@10 227
nuclear@11 228 if $vr; then emit 'use_vr = true'; fi
nuclear@11 229
nuclear@10 230 cat Makefile.in >>Makefile
nuclear@10 231 }
nuclear@10 232
nuclear@23 233 gen_pkgconfig()
nuclear@23 234 {
nuclear@23 235 pcfile=goat3dgfx.pc
nuclear@23 236 echo "generating: $pcfile ..."
nuclear@23 237 begin_emit $pcfile
nuclear@23 238
nuclear@23 239 emit "prefix=$prefix"
nuclear@23 240 emit "ver=0.1"
nuclear@23 241
nuclear@23 242 if [ `uname -s` = Darwin ]; then
nuclear@23 243 emit 'libgl=-framework OpenGL -framework GLUT -lGLEW'
nuclear@23 244 else
nuclear@23 245 emit 'libgl=-lGL -lGLU -lglut -lGLEW'
nuclear@23 246 fi
nuclear@23 247 emit 'libovr='
nuclear@23 248
nuclear@23 249 cat ${pcfile}.in >>$pcfile
nuclear@23 250 }
nuclear@23 251
nuclear@10 252 check_opengl
nuclear@10 253 check_glut
nuclear@10 254 check_glew
nuclear@10 255 if $vr; then check_ovr; fi
nuclear@32 256 check_lib vmath vmath/vmath.h
nuclear@32 257 check_lib imago imago2.h
nuclear@32 258 check_lib anim anim/anim.h
nuclear@32 259 check_lib psys psys/psys.h
nuclear@32 260 check_lib resman resman.h
nuclear@32 261 check_lib goat3d goat3d.h
nuclear@10 262
nuclear@10 263 gen_makefile
nuclear@10 264 gen_config
nuclear@23 265 gen_pkgconfig