Check glib atomic implementation for mutex use.
[ardour.git] / gtk2_ardour / ardour.sh.in
1 #!/bin/sh
2
3 export GTK_PATH=%INSTALL_PREFIX%/%LIBDIR%/ardour3:$GTK_PATH
4
5 export LD_LIBRARY_PATH=%INSTALL_PREFIX%/%LIBDIR%/ardour3:$LD_LIBRARY_PATH 
6 # DYLD_LIBRARY_PATH is for Darwin
7 export DYLD_LIBRARY_PATH=$LD_LIBRARY_PATH
8
9 ## Memlock check
10
11 MLOCK_LIMIT=$(ulimit -l)
12 if [ "$MLOCK_LIMIT" != "unlimited" ]; then
13         echo "WARNING: Your system has a limit for maximum amount of locked memory!"
14         echo "         This might cause Ardour to run out of memory before your system runs"
15         echo "         out of memory. You can view the memory limit with 'ulimit -l', and it"
16         echo "         is normally controlled by /etc/security/limits.conf"
17         echo ""
18
19 fi
20
21
22 ## Glib atomic test
23
24 GLIB=$(ldd %INSTALL_PREFIX%/%LIBDIR%/ardour3/ardour-%VERSION% 2> /dev/null | grep glib-2.0 | sed 's/.*=> \([^ ]*\) .*/\1/')
25
26 if [ "$GLIB" = "" ]; then
27         echo "WARNING: Could not check your glib-2.0 for mutex locking atomic operations."
28         echo ""
29 elif [ $(nm -D --radix=dec --defined-only -S $GLIB | grep -w g_atomic_int_add | cut -d ' ' -f 2) -gt 32 ]; then
30         echo "WARNING: Your system contains a suspect libglib-2.0. Your version might be built"
31         echo "         to use mutex locking atomic operations. This is a fallback solution to"
32         echo "         a more robust hardware supported atomicity. It might cause reduced "
33         echo "         performance and/or deadlocks. Please contact your distribution support"
34         echo "         about this issue."
35         echo "         Unfortunately this check is not 100% accurate, so this might not be"
36         echo "         the case with your system."
37         echo ""
38 fi
39
40 exec %INSTALL_PREFIX%/%LIBDIR%/ardour3/ardour-%VERSION% "$@"
41
42