make.sh 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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 [[ -f 'use/components.txt' ]]; then
  22. git submodule update --init --recursive
  23. git submodule update --recursive --remote
  24. while read -r; do
  25. if [[ -n "${REPLY}" ]] &&
  26. ! (lazbuild --verbose-pkgsearch "${REPLY}") &&
  27. ! (lazbuild --add-package "${REPLY}") &&
  28. ! [[ -e "use/${REPLY}" ]]; then
  29. declare -A VAR=(
  30. [url]="https://packages.lazarus-ide.org/${REPLY}.zip"
  31. [out]=$(mktemp)
  32. )
  33. wget --output-document "${VAR[out]}" "${VAR[url]}" 2>/dev/null
  34. unzip -o "${VAR[out]}" -d "use/${REPLY}"
  35. rm --verbose "${VAR[out]}"
  36. fi
  37. done < 'use/components.txt'
  38. find 'use' -type 'f' -name '*.lpk' -exec lazbuild --add-package-link {} +
  39. fi
  40. find 'src' -type 'f' -name '*.lpi' \
  41. -exec lazbuild --no-write-project --recursive --no-write-project --build-mode=release {} + 1>&2
  42. )
  43. function priv_main
  44. (
  45. set -euo pipefail
  46. if ((${#})); then
  47. case ${1} in
  48. build) priv_lazbuild ;;
  49. *) priv_clippit ;;
  50. esac
  51. else
  52. priv_clippit
  53. fi
  54. )
  55. priv_main "${@}" >/dev/null