poco_env.bash 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. # usage:
  2. # . env.bash
  3. # or
  4. # source env.bash
  5. self="${BASH_SOURCE[0]}"
  6. if [ "$self" == "$0" ] ; then
  7. echo "This file must be sourced from bash, not run."
  8. echo "Usage: . $0"
  9. exit 1
  10. fi
  11. if [ -d "$self" ] ; then
  12. basedir="$(cd "$self" || exit; pwd -P)"
  13. else
  14. basedir="$(cd "$(dirname "$self")" || exit; pwd -P)"
  15. fi
  16. OSNAME="${OSNAME:=$(uname -s)}"
  17. export OSNAME
  18. OSARCH="${OSARCH:=$(uname -m)}"
  19. export OSARCH
  20. POCO_BASE="$basedir"
  21. export POCO_BASE
  22. POCO_LIB_PATH=$POCO_BASE/lib/$OSNAME/$OSARCH
  23. POCO_BIN_PATH=$POCO_BASE/Foundation/testsuite/bin/$OSNAME/$OSARCH
  24. POCO_PATHS=$POCO_BASE:$POCO_LIB_PATH:$POCO_BIN_PATH
  25. if [[ "$PATH" != *"$POCO_PATHS"* ]]; then
  26. PATH=$POCO_PATHS:$PATH
  27. export PATH
  28. fi
  29. explibpath=
  30. expbinpath=
  31. exppocopath=
  32. function setPath {
  33. # adds POCO_PATHS to system PATH only if they are not there already
  34. IFS=':' read -ra PATHDIR <<< "$1"
  35. for i in "${PATHDIR[@]}"; do
  36. if [[ "$POCO_LIB_PATH" == "$i" ]]; then
  37. explibpath+="$i"
  38. elif [[ "$POCO_BIN_PATH" == "$i" ]]; then
  39. expbinpath+="$i"
  40. elif [[ "$POCO_BASE" == "$i" ]]; then
  41. exppocopath+="$i"
  42. fi
  43. done
  44. }
  45. setPath "$PATH"
  46. if [[ -z "$exppocopath" ]]; then
  47. export PATH="$POCO_BASE:$PATH"
  48. fi
  49. if [[ -z "$explibpath" ]]; then
  50. export PATH="$POCO_LIB_PATH:$PATH"
  51. fi
  52. if [[ -z "$expbinpath" ]]; then
  53. export PATH="$POCO_BIN_PATH:$PATH"
  54. fi
  55. explibpath=
  56. function setLibPath {
  57. # adds POCO_LIB_PATH to (DY)LD_LIBRARY_PATH only if it is not there already
  58. IFS=':' read -ra LIBDIR <<< "$1"
  59. for i in "${LIBDIR[@]}"; do
  60. if [[ "$POCO_LIB_PATH" == "$i" ]]; then
  61. explibpath="$1"
  62. break
  63. fi
  64. done
  65. }
  66. case "${OSNAME}" in
  67. Linux*)
  68. setLibPath "$LD_LIBRARY_PATH"
  69. if [[ -z "$explibpath" ]]; then
  70. export LD_LIBRARY_PATH="$POCO_LIB_PATH:$DYLD_LIBRARY_PATH"
  71. fi
  72. ;;
  73. Darwin*)
  74. setLibPath "$DYLD_LIBRARY_PATH"
  75. if [[ -z "$explibpath" ]]; then
  76. export DYLD_LIBRARY_PATH="$POCO_LIB_PATH:$DYLD_LIBRARY_PATH"
  77. fi
  78. ;;
  79. esac
  80. # uncomment for sanitizer builds
  81. #LSAN_OPTIONS=verbosity=1:log_threads=1
  82. #export LSAN_OPTIONS
  83. #TSAN_OPTIONS="suppressions=$POCO_BASE/tsan.suppress,second_deadlock_stack=1"
  84. #export TSAN_OPTIONS
  85. echo "\$OSNAME = $OSNAME"
  86. echo "\$OSARCH = $OSARCH"
  87. echo "\$POCO_BASE = $POCO_BASE"
  88. echo "\$PATH = $PATH"
  89. case "${OSNAME}" in
  90. Linux*) echo "\$LD_LIBRARY_PATH = $LD_LIBRARY_PATH";;
  91. Darwin*) echo "\$DYLD_LIBRARY_PATH = $DYLD_LIBRARY_PATH";;
  92. esac