gdb.mk 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. ######################################################################
  2. #
  3. # gdb
  4. #
  5. ######################################################################
  6. GDB_VERSION:=$(call qstrip,$(BR2_GDB_VERSION))
  7. GDB_OFFICIAL_VERSION:=$(GDB_VERSION)$(VENDOR_SUFFIX)$(VENDOR_GDB_RELEASE)
  8. GDB_SOURCE:=gdb-$(GDB_OFFICIAL_VERSION).tar.bz2
  9. GDB_CAT:=$(BZCAT)
  10. ifeq ($(BR2_TOOLCHAIN_EXTERNAL_SOURCE),y)
  11. GDB_SITE:=$(VENDOR_SITE)
  12. GDB_PATCH_DIR:=toolchain/gdb/ext_source/$(VENDOR_PATCH_DIR)/$(GDB_OFFICIAL_VERSION)
  13. else ifeq ($(findstring avr32,$(GDB_VERSION)),avr32)
  14. GDB_SITE:=ftp://www.at91.com/pub/buildroot/
  15. GDB_PATCH_DIR:=toolchain/gdb/$(GDB_OFFICIAL_VERSION)
  16. else
  17. GDB_SITE:=$(BR2_GNU_MIRROR)/gdb
  18. GDB_PATCH_DIR:=toolchain/gdb/$(GDB_OFFICIAL_VERSION)
  19. endif
  20. ifneq ($(filter xtensa%,$(ARCH)),)
  21. include target/xtensa/patch.in
  22. GDB_PATCH_EXTRA:=$(call XTENSA_PATCH,gdb,$(GDB_PATCH_DIR),. ..)
  23. endif
  24. GDB_DIR:=$(TOOLCHAIN_DIR)/gdb-$(GDB_OFFICIAL_VERSION)
  25. $(DL_DIR)/$(GDB_SOURCE):
  26. $(call DOWNLOAD,$(GDB_SITE),$(GDB_SOURCE))
  27. gdb-unpacked: $(GDB_DIR)/.unpacked
  28. $(GDB_DIR)/.unpacked: $(DL_DIR)/$(GDB_SOURCE)
  29. mkdir -p $(TOOLCHAIN_DIR)
  30. $(GDB_CAT) $(DL_DIR)/$(GDB_SOURCE) | tar -C $(TOOLCHAIN_DIR) $(TAR_OPTIONS) -
  31. ifeq ($(GDB_VERSION),snapshot)
  32. GDB_REAL_DIR=$(shell \
  33. tar jtf $(DL_DIR)/$(GDB_SOURCE) | head -1 | cut -d"/" -f1)
  34. ln -sf $(TOOLCHAIN_DIR)/$(shell tar jtf $(DL_DIR)/$(GDB_SOURCE) | head -1 | cut -d"/" -f1) $(GDB_DIR)
  35. endif
  36. ifneq ($(wildcard $(GDB_PATCH_DIR)),)
  37. toolchain/patch-kernel.sh $(GDB_DIR) $(GDB_PATCH_DIR) \*.patch $(GDB_PATCH_EXTRA)
  38. endif
  39. $(CONFIG_UPDATE) $(@D)
  40. touch $@
  41. gdb-patched: $(GDB_DIR)/.unpacked
  42. gdb-source: $(DL_DIR)/$(GDB_SOURCE)
  43. gdb-dirclean:
  44. rm -rf $(GDB_DIR)
  45. ######################################################################
  46. #
  47. # gdb target
  48. #
  49. ######################################################################
  50. GDB_TARGET_DIR:=$(BUILD_DIR)/gdb-$(GDB_VERSION)-target
  51. GDB_TARGET_CONFIGURE_VARS:= \
  52. ac_cv_type_uintptr_t=yes \
  53. gt_cv_func_gettext_libintl=yes \
  54. ac_cv_func_dcgettext=yes \
  55. gdb_cv_func_sigsetjmp=yes \
  56. bash_cv_func_strcoll_broken=no \
  57. bash_cv_must_reinstall_sighandlers=no \
  58. bash_cv_func_sigsetjmp=present \
  59. bash_cv_have_mbstate_t=yes
  60. $(GDB_TARGET_DIR)/.configured: $(GDB_DIR)/.unpacked
  61. mkdir -p $(GDB_TARGET_DIR)
  62. (cd $(GDB_TARGET_DIR); \
  63. gdb_cv_func_sigsetjmp=yes \
  64. $(TARGET_CONFIGURE_OPTS) \
  65. CFLAGS_FOR_TARGET="$(TARGET_CFLAGS) $(TARGET_LDFLAGS) -Wno-error" \
  66. CFLAGS="$(TARGET_CFLAGS) $(TARGET_LDFLAGS) -Wno-error" \
  67. $(GDB_TARGET_CONFIGURE_VARS) \
  68. $(GDB_DIR)/configure $(QUIET) \
  69. --cache-file=/dev/null \
  70. --build=$(GNU_HOST_NAME) \
  71. --host=$(REAL_GNU_TARGET_NAME) \
  72. --target=$(REAL_GNU_TARGET_NAME) \
  73. --prefix=/usr \
  74. $(DISABLE_NLS) \
  75. --without-uiout $(DISABLE_GDBMI) \
  76. --disable-tui --disable-gdbtk --without-x \
  77. --disable-sim --enable-gdbserver \
  78. --without-included-gettext \
  79. --disable-werror \
  80. $(QUIET) \
  81. )
  82. ifeq ($(BR2_ENABLE_LOCALE),y)
  83. -$(SED) "s,^INTL *=.*,INTL = -lintl,g;" $(GDB_DIR)/gdb/Makefile
  84. endif
  85. touch $@
  86. $(GDB_TARGET_DIR)/gdb/gdb: $(GDB_TARGET_DIR)/.configured
  87. $(MAKE) CC=$(TARGET_CC) MT_CFLAGS="$(TARGET_CFLAGS)" \
  88. -C $(GDB_TARGET_DIR)
  89. $(STRIPCMD) $(GDB_TARGET_DIR)/gdb/gdb
  90. $(TARGET_DIR)/usr/bin/gdb: $(GDB_TARGET_DIR)/gdb/gdb
  91. install -c -D $(GDB_TARGET_DIR)/gdb/gdb $(TARGET_DIR)/usr/bin/gdb
  92. gdb_target: ncurses $(TARGET_DIR)/usr/bin/gdb
  93. gdb_target-source: $(DL_DIR)/$(GDB_SOURCE)
  94. gdb_target-clean:
  95. -$(MAKE) -C $(GDB_DIR) clean
  96. gdb_target-dirclean:
  97. rm -rf $(GDB_DIR)
  98. ######################################################################
  99. #
  100. # gdbserver
  101. #
  102. ######################################################################
  103. GDB_SERVER_DIR:=$(BUILD_DIR)/gdbserver-$(GDB_VERSION)
  104. $(GDB_SERVER_DIR)/.configured: $(GDB_DIR)/.unpacked
  105. mkdir -p $(GDB_SERVER_DIR)
  106. (cd $(GDB_SERVER_DIR); \
  107. $(TARGET_CONFIGURE_OPTS) \
  108. gdb_cv_func_sigsetjmp=yes \
  109. bash_cv_have_mbstate_t=yes \
  110. $(GDB_DIR)/gdb/gdbserver/configure $(QUIET) \
  111. --cache-file=/dev/null \
  112. --build=$(GNU_HOST_NAME) \
  113. --host=$(REAL_GNU_TARGET_NAME) \
  114. --target=$(REAL_GNU_TARGET_NAME) \
  115. --prefix=/usr \
  116. --exec-prefix=/usr \
  117. --bindir=/usr/bin \
  118. --sbindir=/usr/sbin \
  119. --libexecdir=/usr/lib \
  120. --sysconfdir=/etc \
  121. --datadir=/usr/share \
  122. --localstatedir=/var \
  123. --mandir=/usr/man \
  124. --infodir=/usr/info \
  125. --includedir=$(STAGING_DIR)/usr/include \
  126. $(DISABLE_NLS) \
  127. --without-uiout $(DISABLE_GDBMI) \
  128. --disable-tui --disable-gdbtk --without-x \
  129. --without-included-gettext \
  130. )
  131. touch $@
  132. $(GDB_SERVER_DIR)/gdbserver: $(GDB_SERVER_DIR)/.configured
  133. $(MAKE) CC=$(TARGET_CC) MT_CFLAGS="$(TARGET_CFLAGS)" \
  134. -C $(GDB_SERVER_DIR)
  135. $(STRIPCMD) $(GDB_SERVER_DIR)/gdbserver
  136. $(TARGET_DIR)/usr/bin/gdbserver: $(GDB_SERVER_DIR)/gdbserver
  137. ifeq ($(BR2_CROSS_TOOLCHAIN_TARGET_UTILS),y)
  138. mkdir -p $(STAGING_DIR)/usr/$(REAL_GNU_TARGET_NAME)/target_utils
  139. install -c $(GDB_SERVER_DIR)/gdbserver \
  140. $(STAGING_DIR)/usr/$(REAL_GNU_TARGET_NAME)/target_utils/gdbserver
  141. endif
  142. install -c -D $(GDB_SERVER_DIR)/gdbserver $(TARGET_DIR)/usr/bin/gdbserver
  143. gdbserver: $(TARGET_DIR)/usr/bin/gdbserver
  144. gdbserver-clean:
  145. -$(MAKE) -C $(GDB_SERVER_DIR) clean
  146. gdbserver-dirclean:
  147. rm -rf $(GDB_SERVER_DIR)
  148. ######################################################################
  149. #
  150. # gdb on host
  151. #
  152. ######################################################################
  153. GDB_HOST_DIR:=$(TOOLCHAIN_DIR)/gdbhost-$(GDB_VERSION)
  154. $(GDB_HOST_DIR)/.configured: $(GDB_DIR)/.unpacked
  155. mkdir -p $(GDB_HOST_DIR)
  156. (cd $(GDB_HOST_DIR); \
  157. gdb_cv_func_sigsetjmp=yes \
  158. bash_cv_have_mbstate_t=yes \
  159. $(GDB_DIR)/configure $(QUIET) \
  160. --cache-file=/dev/null \
  161. --prefix=$(STAGING_DIR) \
  162. --build=$(GNU_HOST_NAME) \
  163. --host=$(GNU_HOST_NAME) \
  164. --target=$(REAL_GNU_TARGET_NAME) \
  165. $(DISABLE_NLS) \
  166. --without-uiout $(DISABLE_GDBMI) \
  167. --disable-tui --disable-gdbtk --without-x \
  168. --without-included-gettext \
  169. --enable-threads \
  170. --disable-werror \
  171. )
  172. touch $@
  173. $(GDB_HOST_DIR)/gdb/gdb: $(GDB_HOST_DIR)/.configured
  174. $(MAKE) -C $(GDB_HOST_DIR)
  175. strip $(GDB_HOST_DIR)/gdb/gdb
  176. $(TARGET_CROSS)gdb: $(GDB_HOST_DIR)/gdb/gdb
  177. install -c $(GDB_HOST_DIR)/gdb/gdb $(TARGET_CROSS)gdb
  178. ln -snf ../../bin/$(REAL_GNU_TARGET_NAME)-gdb \
  179. $(STAGING_DIR)/usr/$(REAL_GNU_TARGET_NAME)/bin/gdb
  180. ln -snf $(REAL_GNU_TARGET_NAME)-gdb \
  181. $(STAGING_DIR)/usr/bin/$(GNU_TARGET_NAME)-gdb
  182. gdbhost: $(TARGET_CROSS)gdb
  183. gdbhost-clean:
  184. -$(MAKE) -C $(GDB_HOST_DIR) clean
  185. gdbhost-dirclean:
  186. rm -rf $(GDB_HOST_DIR)
  187. #############################################################
  188. #
  189. # Toplevel Makefile options
  190. #
  191. #############################################################
  192. ifeq ($(BR2_PACKAGE_GDB),y)
  193. TARGETS+=gdb_target
  194. endif
  195. ifeq ($(BR2_PACKAGE_GDB_SERVER),y)
  196. TARGETS+=gdbserver
  197. endif
  198. ifeq ($(BR2_PACKAGE_GDB_HOST),y)
  199. TARGETS+=gdbhost
  200. endif