makerelease.sh 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #!/bin/sh
  2. srcdir="$(dirname "$0")"
  3. [ "$(echo "$srcdir" | cut -c1)" = '/' ] || srcdir="$PWD/$srcdir"
  4. die() { echo "$*"; exit 1; }
  5. # Import the makerelease.lib
  6. # http://bues.ch/gitweb?p=misc.git;a=blob_plain;f=makerelease.lib;hb=HEAD
  7. for path in $(echo "$PATH" | tr ':' ' '); do
  8. [ -f "$MAKERELEASE_LIB" ] && break
  9. MAKERELEASE_LIB="$path/makerelease.lib"
  10. done
  11. [ -f "$MAKERELEASE_LIB" ] && . "$MAKERELEASE_LIB" || die "makerelease.lib not found."
  12. hook_get_version()
  13. {
  14. local file="$1/firmware/version.h"
  15. local regex='#define[[:space:]]VERSION[[:space:]]'
  16. version="$(grep -e "$regex" "$file" | head -n1 | cut -d'"' -f2)"
  17. }
  18. hook_testbuild()
  19. {
  20. default_hook_testbuild "$1/firmware"
  21. }
  22. hook_regression_tests()
  23. {
  24. make -C "$1/firmware" tests
  25. }
  26. do_build()
  27. {
  28. local fwdir="$1"
  29. local targetdir="$2"
  30. shift 2
  31. echo
  32. echo "Building configuration: $*"
  33. mkdir -p "$targetdir"
  34. echo "$*" > "$targetdir/build_config.txt"
  35. make -C "$fwdir" all "$@"
  36. echo "Fuse configuration:" > "$targetdir/fuses.txt"
  37. echo >> "$targetdir/fuses.txt"
  38. make --no-print-directory -C "$fwdir" print_fuses "$@" >> "$targetdir/fuses.txt"
  39. mv "$fwdir"/*.hex "$targetdir"/
  40. make -C "$fwdir" distclean "$@"
  41. }
  42. hook_pre_archives()
  43. {
  44. # Build the hex files.
  45. for hw in legacy smd; do
  46. for dev in 88 328p; do
  47. for dbg in release debug; do
  48. local fwdir="$2/firmware"
  49. local targetdir="$2/hex/board_$hw/atmega$dev/$dbg"
  50. [ $dev = 88 ] && local CONF_KCONF=0
  51. [ $dev != 88 ] && local CONF_KCONF=1
  52. [ $dbg = debug ] && local CONF_DEBUG=1
  53. [ $dbg != debug ] && local CONF_DEBUG=0
  54. do_build "$fwdir" "$targetdir" \
  55. HW=$hw DEV=m$dev \
  56. CONF_CALIB=0 \
  57. CONF_DEBUG=$CONF_DEBUG \
  58. CONF_KCONF=$CONF_KCONF
  59. done
  60. done
  61. done
  62. # Move the documentation.
  63. mv "$2"/schematics-lf1600/lf1600.pdf "$2"/schematics-lf1600.pdf
  64. # Update the README
  65. local makefile="$2/firmware/Makefile"
  66. for arch in M88 M328P; do
  67. local lfuse="$(grep -e "$arch"'_LFUSE[[:space:]]*:=' "$makefile" | head -n1 | cut -d'=' -f2 | tr -d '[[:space:]]')"
  68. local hfuse="$(grep -e "$arch"'_HFUSE[[:space:]]*:=' "$makefile" | head -n1 | cut -d'=' -f2 | tr -d '[[:space:]]')"
  69. local efuse="$(grep -e "$arch"'_EFUSE[[:space:]]*:=' "$makefile" | head -n1 | cut -d'=' -f2 | tr -d '[[:space:]]')"
  70. sed -i -e 's/%%'"$arch"'_LFUSE%%/'"$lfuse"'/g' \
  71. -e 's/%%'"$arch"'_HFUSE%%/'"$hfuse"'/g' \
  72. -e 's/%%'"$arch"'_EFUSE%%/'"$efuse"'/g' \
  73. "$2/README.md"
  74. done
  75. }
  76. project=xytronic-lf
  77. default_archives="tar.xz"
  78. makerelease "$@"