| 1 #!/bin/sh |
1 #!/bin/sh |
| |
2 |
| |
3 |
| |
4 # some utility functions |
| |
5 isplatform() |
| |
6 { |
| |
7 for p in $PLATFORM |
| |
8 do |
| |
9 if [ "$p" = "$1" ]; then |
| |
10 return 0 |
| |
11 fi |
| |
12 done |
| |
13 return 1 |
| |
14 } |
| |
15 notisplatform() |
| |
16 { |
| |
17 for p in $PLATFORM |
| |
18 do |
| |
19 if [ "$p" = "$1" ]; then |
| |
20 return 1 |
| |
21 fi |
| |
22 done |
| |
23 return 0 |
| |
24 } |
| |
25 istoolchain() |
| |
26 { |
| |
27 for t in $TOOLCHAIN |
| |
28 do |
| |
29 if [ "$t" = "$1" ]; then |
| |
30 return 0 |
| |
31 fi |
| |
32 done |
| |
33 return 1 |
| |
34 } |
| |
35 notistoolchain() |
| |
36 { |
| |
37 for t in $TOOLCHAIN |
| |
38 do |
| |
39 if [ "$t" = "$1" ]; then |
| |
40 return 1 |
| |
41 fi |
| |
42 done |
| |
43 return 0 |
| |
44 } |
| |
45 |
| |
46 # clean abort |
| |
47 abort_configure() |
| |
48 { |
| |
49 rm -Rf "$TEMP_DIR" |
| |
50 exit 1 |
| |
51 } |
| |
52 |
| |
53 # Test for availability of pkg-config |
| |
54 PKG_CONFIG=`command -v pkg-config` |
| |
55 : ${PKG_CONFIG:="false"} |
| |
56 |
| |
57 # Simple uname based platform detection |
| |
58 # $PLATFORM is used for platform dependent dependency selection |
| |
59 OS=`uname -s` |
| |
60 OS_VERSION=`uname -r` |
| |
61 printf "detect platform... " |
| |
62 if [ "$OS" = "SunOS" ]; then |
| |
63 PLATFORM="solaris sunos unix svr4" |
| |
64 elif [ "$OS" = "Linux" ]; then |
| |
65 PLATFORM="linux unix" |
| |
66 elif [ "$OS" = "FreeBSD" ]; then |
| |
67 PLATFORM="freebsd bsd unix" |
| |
68 elif [ "$OS" = "OpenBSD" ]; then |
| |
69 PLATFORM="openbsd bsd unix" |
| |
70 elif [ "$OS" = "NetBSD" ]; then |
| |
71 PLATFORM="netbsd bsd unix" |
| |
72 elif [ "$OS" = "Darwin" ]; then |
| |
73 PLATFORM="macos osx bsd unix" |
| |
74 elif echo "$OS" | grep -i "MINGW" > /dev/null; then |
| |
75 PLATFORM="windows mingw" |
| |
76 fi |
| |
77 : ${PLATFORM:="unix"} |
| |
78 |
| |
79 PLATFORM_NAME=`echo "$PLATFORM" | cut -f1 -d' ' -` |
| |
80 echo "$PLATFORM_NAME" |
| |
81 |
| |
82 |
| |
83 # help text |
| |
84 printhelp() |
| |
85 { |
| |
86 echo "Usage: $0 [OPTIONS]..." |
| |
87 cat << __EOF__ |
| |
88 Installation directories: |
| |
89 --prefix=PREFIX path prefix for architecture-independent files |
| |
90 [$prefix] |
| |
91 --exec-prefix=EPREFIX path prefix for architecture-dependent files |
| |
92 [PREFIX] |
| |
93 |
| |
94 --bindir=DIR user executables [EPREFIX/bin] |
| |
95 --sbindir=DIR system admin executables [EPREFIX/sbin] |
| |
96 --libexecdir=DIR program executables [EPREFIX/libexec] |
| |
97 --sysconfdir=DIR system configuration files [PREFIX/etc] |
| |
98 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] |
| |
99 --localstatedir=DIR modifiable single-machine data [PREFIX/var] |
| |
100 --runstatedir=DIR run-time variable data [LOCALSTATEDIR/run] |
| |
101 --libdir=DIR object code libraries [EPREFIX/lib] |
| |
102 --includedir=DIR C header files [PREFIX/include] |
| |
103 --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] |
| |
104 --datadir=DIR read-only architecture-independent data [DATAROOTDIR] |
| |
105 --infodir=DIR info documentation [DATAROOTDIR/info] |
| |
106 --mandir=DIR man documentation [DATAROOTDIR/man] |
| |
107 --localedir=DIR locale-dependent data [DATAROOTDIR/locale] |
| |
108 |
| |
109 Build Types: |
| |
110 --debug add extra compile flags for debug builds |
| |
111 --release add extra compile flags for release builds |
| |
112 |
| |
113 __EOF__ |
| |
114 } |
| 2 |
115 |
| 3 # create temporary directory |
116 # create temporary directory |
| 4 TEMP_DIR=".tmp-`uname -n`" |
117 TEMP_DIR=".tmp-`uname -n`" |
| 5 rm -Rf "$TEMP_DIR" |
118 rm -Rf "$TEMP_DIR" |
| 6 if mkdir -p "$TEMP_DIR"; then |
119 if mkdir -p "$TEMP_DIR"; then |
| 33 mandir= |
146 mandir= |
| 34 |
147 |
| 35 # custom variables |
148 # custom variables |
| 36 |
149 |
| 37 # features |
150 # features |
| 38 |
|
| 39 # clean abort |
|
| 40 abort_configure() |
|
| 41 { |
|
| 42 rm -Rf "$TEMP_DIR" |
|
| 43 exit 1 |
|
| 44 } |
|
| 45 |
|
| 46 # help text |
|
| 47 printhelp() |
|
| 48 { |
|
| 49 echo "Usage: $0 [OPTIONS]..." |
|
| 50 cat << __EOF__ |
|
| 51 Installation directories: |
|
| 52 --prefix=PREFIX path prefix for architecture-independent files |
|
| 53 [/usr] |
|
| 54 --exec-prefix=EPREFIX path prefix for architecture-dependent files |
|
| 55 [PREFIX] |
|
| 56 |
|
| 57 --bindir=DIR user executables [EPREFIX/bin] |
|
| 58 --sbindir=DIR system admin executables [EPREFIX/sbin] |
|
| 59 --libexecdir=DIR program executables [EPREFIX/libexec] |
|
| 60 --sysconfdir=DIR system configuration files [PREFIX/etc] |
|
| 61 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] |
|
| 62 --localstatedir=DIR modifiable single-machine data [PREFIX/var] |
|
| 63 --runstatedir=DIR run-time variable data [LOCALSTATEDIR/run] |
|
| 64 --libdir=DIR object code libraries [EPREFIX/lib] |
|
| 65 --includedir=DIR C header files [PREFIX/include] |
|
| 66 --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] |
|
| 67 --datadir=DIR read-only architecture-independent data [DATAROOTDIR] |
|
| 68 --infodir=DIR info documentation [DATAROOTDIR/info] |
|
| 69 --mandir=DIR man documentation [DATAROOTDIR/man] |
|
| 70 --localedir=DIR locale-dependent data [DATAROOTDIR/locale] |
|
| 71 |
|
| 72 __EOF__ |
|
| 73 } |
|
| 74 |
151 |
| 75 # |
152 # |
| 76 # parse arguments |
153 # parse arguments |
| 77 # |
154 # |
| 78 BUILD_TYPE="default" |
155 BUILD_TYPE="default" |
| 92 "--localstatedir="*) localstatedir=${ARG#--localstatedir=} ;; |
169 "--localstatedir="*) localstatedir=${ARG#--localstatedir=} ;; |
| 93 "--includedir="*) includedir=${ARG#--includedir=} ;; |
170 "--includedir="*) includedir=${ARG#--includedir=} ;; |
| 94 "--infodir="*) infodir=${ARG#--infodir=} ;; |
171 "--infodir="*) infodir=${ARG#--infodir=} ;; |
| 95 "--mandir"*) mandir=${ARG#--mandir} ;; |
172 "--mandir"*) mandir=${ARG#--mandir} ;; |
| 96 "--localedir"*) localedir=${ARG#--localedir} ;; |
173 "--localedir"*) localedir=${ARG#--localedir} ;; |
| 97 "--help"*) printhelp; abort_configure ;; |
174 "--help"*) printhelp; abort_configure ;; |
| 98 "--debug") BUILD_TYPE="debug" ;; |
175 "--debug") BUILD_TYPE="debug" ;; |
| 99 "--release") BUILD_TYPE="release" ;; |
176 "--release") BUILD_TYPE="release" ;; |
| 100 "-"*) echo "unknown option: $ARG"; abort_configure ;; |
177 "-"*) echo "unknown option: $ARG"; abort_configure ;; |
| 101 esac |
178 esac |
| 102 done |
179 done |
| 103 |
180 |
| 104 |
181 |
| 136 printf "loading site defaults... " |
213 printf "loading site defaults... " |
| 137 . "$prefix/etc/config.site" |
214 . "$prefix/etc/config.site" |
| 138 echo ok |
215 echo ok |
| 139 fi |
216 fi |
| 140 |
217 |
| 141 # Test for availability of pkg-config |
|
| 142 PKG_CONFIG=`command -v pkg-config` |
|
| 143 : ${PKG_CONFIG:="false"} |
|
| 144 |
|
| 145 # Simple uname based platform detection |
|
| 146 # $PLATFORM is used for platform dependent dependency selection |
|
| 147 OS=`uname -s` |
|
| 148 OS_VERSION=`uname -r` |
|
| 149 printf "detect platform... " |
|
| 150 if [ "$OS" = "SunOS" ]; then |
|
| 151 PLATFORM="solaris sunos unix svr4" |
|
| 152 fi |
|
| 153 if [ "$OS" = "Linux" ]; then |
|
| 154 PLATFORM="linux unix" |
|
| 155 fi |
|
| 156 if [ "$OS" = "FreeBSD" ]; then |
|
| 157 PLATFORM="freebsd bsd unix" |
|
| 158 fi |
|
| 159 if [ "$OS" = "Darwin" ]; then |
|
| 160 PLATFORM="macos osx bsd unix" |
|
| 161 fi |
|
| 162 if echo "$OS" | grep -i "MINGW" > /dev/null; then |
|
| 163 PLATFORM="windows mingw" |
|
| 164 fi |
|
| 165 : ${PLATFORM:="unix"} |
|
| 166 |
|
| 167 PLATFORM_NAME=`echo "$PLATFORM" | cut -f1 -d' ' -` |
|
| 168 echo "$PLATFORM_NAME" |
|
| 169 |
|
| 170 isplatform() |
|
| 171 { |
|
| 172 for p in $PLATFORM |
|
| 173 do |
|
| 174 if [ "$p" = "$1" ]; then |
|
| 175 return 0 |
|
| 176 fi |
|
| 177 done |
|
| 178 return 1 |
|
| 179 } |
|
| 180 notisplatform() |
|
| 181 { |
|
| 182 for p in $PLATFORM |
|
| 183 do |
|
| 184 if [ "$p" = "$1" ]; then |
|
| 185 return 1 |
|
| 186 fi |
|
| 187 done |
|
| 188 return 0 |
|
| 189 } |
|
| 190 |
|
| 191 |
218 |
| 192 # generate vars.mk |
219 # generate vars.mk |
| 193 cat > "$TEMP_DIR/vars.mk" << __EOF__ |
220 cat > "$TEMP_DIR/vars.mk" << __EOF__ |
| 194 prefix="$prefix" |
221 prefix=$prefix |
| 195 exec_prefix="$exec_prefix" |
222 exec_prefix=$exec_prefix |
| 196 bindir="$bindir" |
223 bindir=$bindir |
| 197 sbindir="$sbindir" |
224 sbindir=$sbindir |
| 198 libdir="$libdir" |
225 libdir=$libdir |
| 199 libexecdir="$libexecdir" |
226 libexecdir=$libexecdir |
| 200 datarootdir="$datarootdir" |
227 datarootdir=$datarootdir |
| 201 datadir="$datadir" |
228 datadir=$datadir |
| 202 sysconfdir="$sysconfdir" |
229 sysconfdir=$sysconfdir |
| 203 sharedstatedir="$sharedstatedir" |
230 sharedstatedir=$sharedstatedir |
| 204 localstatedir="$localstatedir" |
231 localstatedir=$localstatedir |
| 205 runstatedir="$runstatedir" |
232 runstatedir=$runstatedir |
| 206 includedir="$includedir" |
233 includedir=$includedir |
| 207 infodir="$infodir" |
234 infodir=$infodir |
| 208 mandir="$mandir" |
235 mandir=$mandir |
| 209 localedir="$localedir" |
236 localedir=$localedir |
| 210 __EOF__ |
237 __EOF__ |
| 211 |
238 |
| 212 # toolchain detection utilities |
239 # toolchain detection utilities |
| 213 . make/toolchain.sh |
240 . make/toolchain.sh |
| 214 |
241 |
| 252 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags SDL2_ttf`" |
287 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags SDL2_ttf`" |
| 253 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs SDL2_ttf`" |
288 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs SDL2_ttf`" |
| 254 else |
289 else |
| 255 break |
290 break |
| 256 fi |
291 fi |
| 257 echo yes |
292 print_check_msg "$dep_checked_sdl2_ttf" "yes\n" |
| |
293 dep_checked_sdl2_ttf=1 |
| 258 return 1 |
294 return 1 |
| 259 done |
295 done |
| 260 |
296 |
| 261 echo no |
297 print_check_msg "$dep_checked_sdl2_ttf" "no\n" |
| |
298 dep_checked_sdl2_ttf=1 |
| 262 return 0 |
299 return 0 |
| 263 } |
300 } |
| 264 dependency_error_sdl2() |
301 dependency_error_sdl2() |
| 265 { |
302 { |
| 266 printf "checking for sdl2... " |
303 print_check_msg "$dep_checked_sdl2" "checking for sdl2... " |
| 267 # dependency sdl2 |
304 # dependency sdl2 |
| 268 while true |
305 while true |
| 269 do |
306 do |
| 270 if [ -z "$PKG_CONFIG" ]; then |
307 if [ -z "$PKG_CONFIG" ]; then |
| 271 break |
308 break |
| 274 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags sdl2`" |
311 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags sdl2`" |
| 275 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs sdl2`" |
312 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs sdl2`" |
| 276 else |
313 else |
| 277 break |
314 break |
| 278 fi |
315 fi |
| 279 echo yes |
316 print_check_msg "$dep_checked_sdl2" "yes\n" |
| |
317 dep_checked_sdl2=1 |
| 280 return 1 |
318 return 1 |
| 281 done |
319 done |
| 282 |
320 |
| 283 echo no |
321 print_check_msg "$dep_checked_sdl2" "no\n" |
| |
322 dep_checked_sdl2=1 |
| 284 return 0 |
323 return 0 |
| 285 } |
324 } |
| 286 dependency_error_glew() |
325 dependency_error_glew() |
| 287 { |
326 { |
| 288 printf "checking for glew... " |
327 print_check_msg "$dep_checked_glew" "checking for glew... " |
| 289 # dependency glew |
328 # dependency glew |
| 290 while true |
329 while true |
| 291 do |
330 do |
| 292 if [ -z "$PKG_CONFIG" ]; then |
331 if [ -z "$PKG_CONFIG" ]; then |
| 293 break |
332 break |
| 296 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags glew`" |
335 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags glew`" |
| 297 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs glew`" |
336 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs glew`" |
| 298 else |
337 else |
| 299 break |
338 break |
| 300 fi |
339 fi |
| 301 echo yes |
340 print_check_msg "$dep_checked_glew" "yes\n" |
| |
341 dep_checked_glew=1 |
| 302 return 1 |
342 return 1 |
| 303 done |
343 done |
| 304 |
344 |
| 305 echo no |
345 print_check_msg "$dep_checked_glew" "no\n" |
| |
346 dep_checked_glew=1 |
| 306 return 0 |
347 return 0 |
| 307 } |
348 } |
| 308 dependency_error_ucx() |
349 dependency_error_ucx() |
| 309 { |
350 { |
| 310 printf "checking for ucx... " |
351 print_check_msg "$dep_checked_ucx" "checking for ucx... " |
| 311 # dependency ucx |
352 # dependency ucx |
| 312 while true |
353 while true |
| 313 do |
354 do |
| 314 if check_lib ucx cx/common.h > /dev/null ; then |
355 if check_lib ucx cx/common.h > /dev/null ; then |
| 315 : |
356 : |
| 316 else |
357 else |
| 317 break |
358 break |
| 318 fi |
359 fi |
| 319 TEMP_LDFLAGS="$TEMP_LDFLAGS -lucx" |
360 TEMP_LDFLAGS="$TEMP_LDFLAGS -lucx" |
| 320 echo yes |
361 print_check_msg "$dep_checked_ucx" "yes\n" |
| |
362 dep_checked_ucx=1 |
| 321 return 1 |
363 return 1 |
| 322 done |
364 done |
| 323 |
365 |
| 324 echo no |
366 print_check_msg "$dep_checked_ucx" "no\n" |
| 325 return 0 |
367 dep_checked_ucx=1 |
| 326 } |
368 return 0 |
| 327 |
369 } |
| 328 |
|
| 329 |
|
| 330 |
370 |
| 331 # start collecting dependency information |
371 # start collecting dependency information |
| 332 echo > "$TEMP_DIR/flags.mk" |
372 echo > "$TEMP_DIR/flags.mk" |
| 333 |
373 |
| 334 DEPENDENCIES_FAILED= |
374 DEPENDENCIES_FAILED= |
| 335 ERROR=0 |
375 ERROR=0 |
| 336 # unnamed dependencies |
376 # unnamed dependencies |
| 337 TEMP_CFLAGS= |
377 TEMP_CFLAGS="$CFLAGS" |
| 338 TEMP_CXXFLAGS= |
378 TEMP_CXXFLAGS="$CXXFLAGS" |
| 339 TEMP_LDFLAGS= |
379 TEMP_LDFLAGS="$LDFLAGS" |
| 340 while true |
380 while true |
| 341 do |
381 do |
| 342 while true |
382 while true |
| 343 do |
383 do |
| 344 if [ -z "$lang_c" ] ; then |
384 if [ -z "$lang_c" ] ; then |
| 351 break |
391 break |
| 352 done |
392 done |
| 353 |
393 |
| 354 # add general dependency flags to flags.mk |
394 # add general dependency flags to flags.mk |
| 355 echo "# general flags" >> "$TEMP_DIR/flags.mk" |
395 echo "# general flags" >> "$TEMP_DIR/flags.mk" |
| 356 if [ -n "${TEMP_CFLAGS}" -a -n "$lang_c" ]; then |
396 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then |
| 357 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" |
397 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" |
| 358 fi |
398 fi |
| 359 if [ -n "${TEMP_CXXFLAGS}" -a -n "$lang_cpp" ]; then |
399 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then |
| 360 echo "CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" |
400 echo "CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" |
| 361 fi |
401 fi |
| 362 if [ -n "${TEMP_LDFLAGS}" ]; then |
402 if [ -n "${TEMP_LDFLAGS}" ]; then |
| 363 echo "LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" |
403 echo "LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" |
| 364 fi |
404 fi |
| 396 fi |
436 fi |
| 397 |
437 |
| 398 # Features |
438 # Features |
| 399 |
439 |
| 400 |
440 |
| 401 if [ -n "${TEMP_CFLAGS}" -a -n "$lang_c" ]; then |
441 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then |
| 402 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" |
442 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" |
| 403 fi |
443 fi |
| 404 if [ -n "${TEMP_CXXFLAGS}" -a -n "$lang_cpp" ]; then |
444 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then |
| 405 echo "CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" |
445 echo "CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" |
| 406 fi |
446 fi |
| 407 if [ "$BUILD_TYPE" = "debug" ]; then |
447 if [ "$BUILD_TYPE" = "debug" ]; then |
| 408 if [ -n "$lang_c" ]; then |
448 if [ -n "$lang_c" ]; then |
| 409 echo 'CFLAGS += ${DEBUG_CC_FLAGS}' >> "$TEMP_DIR/flags.mk" |
449 echo 'CFLAGS += ${DEBUG_CC_FLAGS}' >> "$TEMP_DIR/flags.mk" |