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. ifneq ($(filter xtensa%,$(ARCH)),)
  17. include target/xtensa/patch.in
  18. GDB_PATCH_EXTRA:=$(call XTENSA_PATCH,gdb,$(GDB_PATCH_DIR),. ..)
  19. endif
  20. GDB_DIR:=$(TOOLCHAIN_DIR)/gdb-$(GDB_VERSION)
  21. $(DL_DIR)/$(GDB_SOURCE):
  22. $(call DOWNLOAD,$(GDB_SITE)/$(GDB_SOURCE))
  23. gdb-unpacked: $(GDB_DIR)/.unpacked
  24. $(GDB_DIR)/.unpacked: $(DL_DIR)/$(GDB_SOURCE)
  25. mkdir -p $(GDB_DIR)
  26. $(GDB_CAT) $(DL_DIR)/$(GDB_SOURCE) | tar -C $(GDB_DIR) $(TAR_STRIP_COMPONENTS)=1 $(TAR_OPTIONS) -
  27. ifneq ($(wildcard $(GDB_PATCH_DIR)),)
  28. support/scripts/apply-patches.sh $(GDB_DIR) $(GDB_PATCH_DIR) \*.patch $(GDB_PATCH_EXTRA)
  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=$(REAL_GNU_TARGET_NAME) \
  63. --target=$(REAL_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. $(MAKE) CC="$(TARGET_CC)" MT_CFLAGS="$(TARGET_CFLAGS)" \
  81. -C $(GDB_TARGET_DIR)
  82. $(TARGET_DIR)/usr/bin/gdb: $(GDB_TARGET_DIR)/gdb/gdb
  83. install -c -D $(GDB_TARGET_DIR)/gdb/gdb $(TARGET_DIR)/usr/bin/gdb
  84. gdb_target: ncurses $(TARGET_DIR)/usr/bin/gdb
  85. gdb_target-source: $(DL_DIR)/$(GDB_SOURCE)
  86. gdb_target-clean:
  87. -$(MAKE) -C $(GDB_DIR) clean
  88. gdb_target-dirclean:
  89. rm -rf $(GDB_DIR)
  90. ######################################################################
  91. #
  92. # gdbserver
  93. #
  94. ######################################################################
  95. GDB_SERVER_DIR:=$(BUILD_DIR)/gdbserver-$(GDB_VERSION)
  96. $(GDB_SERVER_DIR)/.configured: $(GDB_DIR)/.unpacked
  97. mkdir -p $(GDB_SERVER_DIR)
  98. (cd $(GDB_SERVER_DIR); \
  99. $(TARGET_CONFIGURE_OPTS) \
  100. gdb_cv_func_sigsetjmp=yes \
  101. bash_cv_have_mbstate_t=yes \
  102. $(GDB_DIR)/gdb/gdbserver/configure $(QUIET) \
  103. --cache-file=/dev/null \
  104. --build=$(GNU_HOST_NAME) \
  105. --host=$(REAL_GNU_TARGET_NAME) \
  106. --target=$(REAL_GNU_TARGET_NAME) \
  107. --prefix=/usr \
  108. --exec-prefix=/usr \
  109. --bindir=/usr/bin \
  110. --sbindir=/usr/sbin \
  111. --libexecdir=/usr/lib \
  112. --sysconfdir=/etc \
  113. --datadir=/usr/share \
  114. --localstatedir=/var \
  115. --mandir=/usr/man \
  116. --infodir=/usr/info \
  117. --includedir=$(STAGING_DIR)/usr/include \
  118. $(DISABLE_NLS) \
  119. --without-uiout $(DISABLE_GDBMI) \
  120. --disable-tui --disable-gdbtk --without-x \
  121. --without-included-gettext \
  122. )
  123. touch $@
  124. $(GDB_SERVER_DIR)/gdbserver: $(GDB_SERVER_DIR)/.configured
  125. $(MAKE) CC="$(TARGET_CC)" MT_CFLAGS="$(TARGET_CFLAGS)" \
  126. -C $(GDB_SERVER_DIR)
  127. $(TARGET_DIR)/usr/bin/gdbserver: $(GDB_SERVER_DIR)/gdbserver
  128. ifeq ($(BR2_CROSS_TOOLCHAIN_TARGET_UTILS),y)
  129. mkdir -p $(STAGING_DIR)/usr/$(REAL_GNU_TARGET_NAME)/target_utils
  130. install -c $(GDB_SERVER_DIR)/gdbserver \
  131. $(STAGING_DIR)/usr/$(REAL_GNU_TARGET_NAME)/target_utils/gdbserver
  132. endif
  133. install -c -D $(GDB_SERVER_DIR)/gdbserver $(TARGET_DIR)/usr/bin/gdbserver
  134. gdbserver: $(TARGET_DIR)/usr/bin/gdbserver
  135. gdbserver-source: $(DL_DIR)/$(GDB_SOURCE)
  136. gdbserver-clean:
  137. -$(MAKE) -C $(GDB_SERVER_DIR) clean
  138. gdbserver-dirclean:
  139. rm -rf $(GDB_SERVER_DIR)
  140. ######################################################################
  141. #
  142. # gdb on host
  143. #
  144. ######################################################################
  145. GDB_HOST_DIR:=$(TOOLCHAIN_DIR)/gdbhost-$(GDB_VERSION)
  146. $(GDB_HOST_DIR)/.configured: $(GDB_DIR)/.unpacked
  147. mkdir -p $(GDB_HOST_DIR)
  148. (cd $(GDB_HOST_DIR); \
  149. gdb_cv_func_sigsetjmp=yes \
  150. bash_cv_have_mbstate_t=yes \
  151. $(HOST_CONFIGURE_OPTS) \
  152. $(GDB_DIR)/configure $(QUIET) \
  153. --cache-file=/dev/null \
  154. --prefix=$(STAGING_DIR) \
  155. --build=$(GNU_HOST_NAME) \
  156. --host=$(GNU_HOST_NAME) \
  157. --target=$(REAL_GNU_TARGET_NAME) \
  158. $(DISABLE_NLS) \
  159. --without-uiout $(DISABLE_GDBMI) \
  160. --disable-tui --disable-gdbtk --without-x \
  161. --without-included-gettext \
  162. --enable-threads \
  163. --disable-werror \
  164. )
  165. touch $@
  166. $(GDB_HOST_DIR)/gdb/gdb: $(GDB_HOST_DIR)/.configured
  167. # force ELF support since it fails due to BFD linking problems
  168. gdb_cv_var_elf=yes \
  169. $(MAKE) -C $(GDB_HOST_DIR)
  170. strip $(GDB_HOST_DIR)/gdb/gdb
  171. $(TARGET_CROSS)gdb: $(GDB_HOST_DIR)/gdb/gdb
  172. install -c $(GDB_HOST_DIR)/gdb/gdb $(TARGET_CROSS)gdb
  173. ln -snf $(REAL_GNU_TARGET_NAME)-gdb \
  174. $(HOST_DIR)/usr/bin/$(GNU_TARGET_NAME)-gdb
  175. gdbhost: host-expat $(TARGET_CROSS)gdb
  176. gdbhost-source: $(DL_DIR)/$(GDB_SOURCE)
  177. gdbhost-clean:
  178. -$(MAKE) -C $(GDB_HOST_DIR) clean
  179. gdbhost-dirclean:
  180. rm -rf $(GDB_HOST_DIR)
  181. #############################################################
  182. #
  183. # Toplevel Makefile options
  184. #
  185. #############################################################
  186. ifeq ($(BR2_PACKAGE_GDB),y)
  187. TARGETS+=gdb_target
  188. endif
  189. ifeq ($(BR2_PACKAGE_GDB_SERVER),y)
  190. TARGETS+=gdbserver
  191. endif
  192. ifeq ($(BR2_PACKAGE_GDB_HOST),y)
  193. TARGETS+=gdbhost
  194. endif