gdb.mk 6.3 KB

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