gdb.mk 6.8 KB

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