2
1

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