Makefile 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. #
  2. # DAHDI
  3. #
  4. # Makefile for firmware downloading/installation
  5. #
  6. # Copyright (C) 2007-2013, Digium, Inc.
  7. #
  8. # Joshua Colp <jcolp@digium.com>
  9. #
  10. #
  11. # See http://www.asterisk.org for more information about
  12. # the Asterisk project. Please do not directly contact
  13. # any of the maintainers of this project for assistance;
  14. # the project provides a web site, mailing lists and IRC
  15. # channels for your use.
  16. #
  17. # This program is free software, distributed under the terms of
  18. # the GNU General Public License Version 2 as published by the
  19. # Free Software Foundation. See the LICENSE file included with
  20. # this program for more details.
  21. #
  22. .PHONY: dist-clean clean all uninstall have_download install object-build hotplug-install hotplug-dirs hotplug-uninstall make_firmware_object firmware-loaders
  23. OCT6114_032_VERSION:=1.05.01
  24. OCT6114_064_VERSION:=1.05.01
  25. OCT6114_128_VERSION:=1.05.01
  26. OCT6114_256_VERSION:=1.05.01
  27. TC400M_VERSION:=MR6.12
  28. VPMADT032_VERSION:=1.25.0
  29. HX8_VERSION:=2.06
  30. VPMOCT032_VERSION:=1.12.0
  31. WCT820_VERSION:=1.76
  32. TE133_VERSION:=7a001e
  33. TE134_VERSION:=780017
  34. TE435_VERSION:=13001e
  35. TE436_VERSION:=10017
  36. A8A_VERSION:=1d0017
  37. A8B_VERSION:=1f001e
  38. A4A_VERSION:=a0017
  39. A4B_VERSION:=d001e
  40. FIRMWARE_URL:=http://downloads.digium.com/pub/telephony/firmware/releases
  41. ALL_FIRMWARE=FIRMWARE-OCT6114-032 FIRMWARE-OCT6114-064 FIRMWARE-OCT6114-128 FIRMWARE-OCT6114-256
  42. ALL_FIRMWARE+=FIRMWARE-TC400M FIRMWARE-HX8 FIRMWARE-VPMOCT032 FIRMWARE-TE820 FIRMWARE-TE133 FIRMWARE-TE134
  43. ALL_FIRMWARE+=FIRMWARE-A8A FIRMWARE-A8B FIRMWARE-A4A FIRMWARE-A4B FIRMWARE-TE435 FIRMWARE-TE436
  44. # Firmware files should use the naming convention: dahdi-fw-<base name>-<sub name>-<version> or dahdi-fw-<base name>-<version>
  45. # First example: dahdi-fw-oct6114-064-1.05.01
  46. # This means this is version 1.05.01 of the oct6114-064 firmware
  47. # Second example: dahdi-fw-tc400m-MR5.6
  48. # This means this is version MR5.6 of the tc400m firmware
  49. # Build a list of firmware package filenames we need
  50. FIRMWARE:=$(ALL_FIRMWARE:FIRMWARE-OCT6114-032=dahdi-fw-oct6114-032-$(OCT6114_032_VERSION).tar.gz)
  51. FIRMWARE:=$(FIRMWARE:FIRMWARE-OCT6114-064=dahdi-fw-oct6114-064-$(OCT6114_064_VERSION).tar.gz)
  52. FIRMWARE:=$(FIRMWARE:FIRMWARE-OCT6114-128=dahdi-fw-oct6114-128-$(OCT6114_128_VERSION).tar.gz)
  53. FIRMWARE:=$(FIRMWARE:FIRMWARE-OCT6114-256=dahdi-fw-oct6114-256-$(OCT6114_256_VERSION).tar.gz)
  54. FIRMWARE:=$(FIRMWARE:FIRMWARE-TC400M=dahdi-fw-tc400m-$(TC400M_VERSION).tar.gz)
  55. FIRMWARE:=$(FIRMWARE:FIRMWARE-HX8=dahdi-fw-hx8-$(HX8_VERSION).tar.gz)
  56. FIRMWARE:=$(FIRMWARE:FIRMWARE-VPMOCT032=dahdi-fw-vpmoct032-$(VPMOCT032_VERSION).tar.gz)
  57. FIRMWARE:=$(FIRMWARE:FIRMWARE-TE820=dahdi-fw-te820-$(WCT820_VERSION).tar.gz)
  58. FIRMWARE:=$(FIRMWARE:FIRMWARE-TE133=dahdi-fw-te133-$(TE133_VERSION).tar.gz)
  59. FIRMWARE:=$(FIRMWARE:FIRMWARE-TE134=dahdi-fw-te134-$(TE134_VERSION).tar.gz)
  60. FIRMWARE:=$(FIRMWARE:FIRMWARE-TE435=dahdi-fw-te435-$(TE435_VERSION).tar.gz)
  61. FIRMWARE:=$(FIRMWARE:FIRMWARE-TE436=dahdi-fw-te436-$(TE436_VERSION).tar.gz)
  62. FIRMWARE:=$(FIRMWARE:FIRMWARE-A8A=dahdi-fw-a8b-$(A8B_VERSION).tar.gz)
  63. FIRMWARE:=$(FIRMWARE:FIRMWARE-A8B=dahdi-fw-a8a-$(A8A_VERSION).tar.gz)
  64. FIRMWARE:=$(FIRMWARE:FIRMWARE-A4A=dahdi-fw-a4b-$(A4B_VERSION).tar.gz)
  65. FIRMWARE:=$(FIRMWARE:FIRMWARE-A4B=dahdi-fw-a4a-$(A4A_VERSION).tar.gz)
  66. FWLOADERS:=dahdi-fwload-vpmadt032-$(VPMADT032_VERSION).tar.gz
  67. # Build a list of object files if hotplug will not be used
  68. OBJECT_FILES:=$(ALL_FIRMWARE:FIRMWARE-OCT6114-032=dahdi-fw-oct6114-032.o)
  69. OBJECT_FILES:=$(ALL_FIRMWARE:FIRMWARE-OCT6114-064=dahdi-fw-oct6114-064.o)
  70. OBJECT_FILES:=$(OBJECT_FILES:FIRMWARE-OCT6114-128=dahdi-fw-oct6114-128.o)
  71. OBJECT_FILES:=$(OBJECT_FILES:FIRMWARE-OCT6114-256=dahdi-fw-oct6114-256.o)
  72. OBJECT_FILES:=$(OBJECT_FILES:FIRMWARE-TC400M=dahdi-fw-tc400m.o)
  73. OBJECT_FILES:=$(OBJECT_FILES:FIRMWARE-HX8=dahdi-fw-hx8.o)
  74. OBJECT_FILES:=$(OBJECT_FILES:FIRMWARE-VPMOCT032=dahdi-fw-vpmoct032.o)
  75. # Force usage of wget, for now
  76. DOWNLOAD=wget
  77. WGET=wget
  78. INSTALL_FIRMWARE=../../../build_tools/install_firmware
  79. RUN_INST=$(INSTALL_FIRMWARE) $(1) $(2) $(DESTDIR)
  80. # If "fetch" is used, --continue is not a valid option.
  81. ifeq ($(WGET),wget)
  82. WGET_ARGS:=--continue
  83. endif
  84. all: $(FIRMWARE)
  85. # Clean up any downloaded/extracted firmware packages
  86. dist-clean: clean
  87. rm -f dahdi-fw-*.bin
  88. rm -f dahdi-fw-*.tar.gz
  89. rm -f dahdi-fwload-*.tar.gz
  90. rm -f make_firmware_object
  91. # Clean up anything we built
  92. clean:
  93. rm -f dahdi-fw-*.o
  94. # Download and extract firmware tarballs
  95. dahdi-fw-%.tar.gz:
  96. @if ( [ "$(HOTPLUG_FIRMWARE)" = "no" ] ) || ( [ -d $(DESTDIR)/usr/lib/hotplug/firmware ] && ! [ -f $(DESTDIR)/usr/lib/hotplug/firmware/.$(subst .tar.gz,,$*) ] ) || ( [ -d $(DESTDIR)/lib/firmware ] && ! [ -f $(DESTDIR)/lib/firmware/.$(subst .tar.gz,,$*) ] ); then \
  97. echo "Attempting to download $@"; \
  98. if test ! -f $@; then $(DOWNLOAD) $(WGET_ARGS) $(FIRMWARE_URL)/$@; fi; \
  99. if test ! -f $@; then exit 1; fi; \
  100. fi
  101. firmware-loaders: $(FWLOADERS)
  102. .PHONY: dahdi-fwload-vpmadt032-$(VPMADT032_VERSION).tar.gz
  103. dahdi-fwload-vpmadt032-$(VPMADT032_VERSION).tar.gz:
  104. @if test ! -f $@; then echo "Attempting to download $@"; $(DOWNLOAD) $(WGET_ARGS) $(FIRMWARE_URL)/$@; fi; \
  105. if test ! -f $@; then exit 1; fi; \
  106. (cd ../../..; cat drivers/dahdi/firmware/$@ | gzip -d | tar --no-same-owner -xf -)
  107. # Create object files suitable for linking against
  108. object-build: $(FIRMWARE) $(OBJECT_FILES)
  109. $(DESTDIR)/usr/lib/hotplug/firmware $(DESTDIR)/lib/firmware:
  110. mkdir -p $@
  111. # Install all downloaded firmware images for hotplug usage
  112. hotplug-install: $(DESTDIR)/usr/lib/hotplug/firmware $(DESTDIR)/lib/firmware $(FIRMWARE)
  113. @$(call RUN_INST,dahdi-fw-oct6114-032,$(OCT6114_032_VERSION))
  114. @$(call RUN_INST,dahdi-fw-oct6114-064,$(OCT6114_064_VERSION))
  115. @$(call RUN_INST,dahdi-fw-oct6114-128,$(OCT6114_128_VERSION))
  116. @$(call RUN_INST,dahdi-fw-oct6114-256,$(OCT6114_256_VERSION))
  117. @$(call RUN_INST,dahdi-fw-tc400m,$(TC400M_VERSION))
  118. @$(call RUN_INST,dahdi-fw-hx8,$(HX8_VERSION))
  119. @$(call RUN_INST,dahdi-fw-vpmoct032,$(VPMOCT032_VERSION))
  120. @$(call RUN_INST,dahdi-fw-te820,$(WCT820_VERSION))
  121. @$(call RUN_INST,dahdi-fw-te133,$(TE133_VERSION))
  122. @$(call RUN_INST,dahdi-fw-te134,$(TE134_VERSION))
  123. @$(call RUN_INST,dahdi-fw-te435,$(TE435_VERSION))
  124. @$(call RUN_INST,dahdi-fw-te436,$(TE436_VERSION))
  125. @$(call RUN_INST,dahdi-fw-a8a,$(A8A_VERSION))
  126. @$(call RUN_INST,dahdi-fw-a8b,$(A8B_VERSION))
  127. @$(call RUN_INST,dahdi-fw-a4a,$(A4A_VERSION))
  128. @$(call RUN_INST,dahdi-fw-a4b,$(A4B_VERSION))
  129. # Uninstall any installed dahdi firmware images from hotplug firmware directories
  130. hotplug-uninstall:
  131. if [ -d $(DESTDIR)/usr/lib/hotplug/firmware ]; then \
  132. rm -f $(DESTDIR)/usr/lib/hotplug/firmware/dahdi-fw-*.bin; \
  133. rm -f $(DESTDIR)/usr/lib/hotplug/firmware/.dahdi-fw*; \
  134. fi
  135. if [ -d $(DESTDIR)/lib/firmware ]; then \
  136. rm -f $(DESTDIR)/lib/firmware/dahdi-fw-*.bin; \
  137. rm -f $(DESTDIR)/lib/firmware/.dahdi-fw*; \
  138. fi
  139. make_firmware_object: make_firmware_object.in ../dahdi-base.o
  140. @export BFDNAME=`LANG=C objdump -f ../dahdi-base.o | grep -e "dahdi-base.o:" | sed "s/.*file format \(.*\)/\1/"`; \
  141. export BFDARCH=`LANG=C objdump -f ../dahdi-base.o | grep -e "architecture:" | sed "s/.*ture: \(.*\),.*/\1/"`; \
  142. sed -e s/BFDNAME/$${BFDNAME}/ -e s/BFDARCH/$${BFDARCH}/ $< > $@
  143. @chmod +x $@
  144. # Build object file of an oct6114 032 firmware image for linking
  145. dahdi-fw-oct6114-032.o: dahdi-fw-oct6114-032-$(OCT6114_032_VERSION).tar.gz dahdi-fw-oct6114-032.bin make_firmware_object
  146. @echo Making firmware object file for dahdi-fw-oct6114-032.bin
  147. ./make_firmware_object dahdi-fw-oct6114-032.bin $@
  148. # Build object file of an oct6114 064 firmware image for linking
  149. dahdi-fw-oct6114-064.o: dahdi-fw-oct6114-064-$(OCT6114_064_VERSION).tar.gz dahdi-fw-oct6114-064.bin make_firmware_object
  150. @echo Making firmware object file for dahdi-fw-oct6114-064.bin
  151. ./make_firmware_object dahdi-fw-oct6114-064.bin $@
  152. # Build object file of an oct6114 128 firmware image for linking
  153. dahdi-fw-oct6114-128.o: dahdi-fw-oct6114-128-$(OCT6114_128_VERSION).tar.gz dahdi-fw-oct6114-128.bin make_firmware_object
  154. @echo Making firmware object file for dahdi-fw-oct6114-128.bin
  155. ./make_firmware_object dahdi-fw-oct6114-128.bin $@
  156. # Build object file of an oct6114 256 firmware image for linking
  157. dahdi-fw-oct6114-256.o: dahdi-fw-oct6114-256-$(OCT6114_256_VERSION).tar.gz dahdi-fw-oct6114-256.bin make_firmware_object
  158. @echo Making firmware object file for dahdi-fw-oct6114-256.bin
  159. ./make_firmware_object dahdi-fw-oct6114-256.bin $@
  160. # Build object file of a TC400M firmware image for linking
  161. dahdi-fw-tc400m.o: dahdi-fw-tc400m-$(TC400M_VERSION).tar.gz dahdi-fw-tc400m.bin make_firmware_object
  162. @echo Making firmware object file for dahdi-fw-tc400m.bin
  163. ./make_firmware_object dahdi-fw-tc400m.bin $@
  164. # Build object file of a VPMOCT032 firmware image for linking
  165. dahdi-fw-vpmoct032.o: dahdi-fw-vpmoct032-$(VPMOCT032_VERSION).tar.gz dahdi-fw-vpmoct032.bin make_firmware_object
  166. @echo Making firmware object file for dahdi-fw-vpmoct032.bin
  167. ./make_firmware_object dahdi-fw-vpmoct032.bin $@