make.sh 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #!/usr/bin/env bash
  2. function priv_clippit
  3. (
  4. cat <<EOF
  5. Usage: bash ${0} [OPTIONS]
  6. Options:
  7. build Build program
  8. EOF
  9. )
  10. function priv_lazbuild
  11. (
  12. if ! (which lazbuild); then
  13. source '/etc/os-release'
  14. case ${ID:?} in
  15. debian | ubuntu)
  16. sudo apt-get update
  17. sudo apt-get install -y lazarus
  18. ;;
  19. esac
  20. fi
  21. if [[ -d 'use' ]]; then
  22. git submodule update --init --recursive
  23. git submodule update --recursive --remote
  24. if [[ -f 'use/components.txt' ]]; then
  25. while read -r; do
  26. if [[ -n "${REPLY}" ]] &&
  27. ! (lazbuild --verbose-pkgsearch "${REPLY}") &&
  28. ! (lazbuild --add-package "${REPLY}") &&
  29. ! [[ -e "use/${REPLY}" ]]; then
  30. declare -A VAR=(
  31. [url]="https://packages.lazarus-ide.org/${REPLY}.zip"
  32. [out]=$(mktemp)
  33. )
  34. wget --output-document "${VAR[out]}" "${VAR[url]}" 2>/dev/null
  35. unzip -o "${VAR[out]}" -d "use/${REPLY}"
  36. rm --verbose "${VAR[out]}"
  37. fi
  38. done < 'use/components.txt'
  39. fi
  40. find 'use' -type 'f' -name '*.lpk' -exec lazbuild --add-package-link {} +
  41. fi
  42. find 'src' -type 'f' -name '*.lpi' \
  43. -exec lazbuild --no-write-project --recursive --no-write-project --build-mode=release {} + 1>&2
  44. )
  45. function priv_main
  46. (
  47. set -euo pipefail
  48. if ((${#})); then
  49. case ${1} in
  50. build) priv_lazbuild ;;
  51. *) priv_clippit ;;
  52. esac
  53. else
  54. priv_clippit
  55. fi
  56. )
  57. priv_main "${@}" >/dev/null