gdb.mk 6.7 KB

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