Makefile 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. #
  2. # $Id$
  3. #
  4. # Makefile to create libgdb.a / libgdb.so
  5. #
  6. ifeq ($(GDB_SRC),)
  7. ifeq ($(OS),DJGPP)
  8. GDB_SRC=$(DJDIR)/gnu/gdb-4.18
  9. else
  10. ifeq ($(OS_TARGET),win32)
  11. GDB_SRC=d:/cygwin/cygwin-b20/gnu/gdb-4.18
  12. else
  13. GDB_SRC=/usr/src/gdb-4.18
  14. endif
  15. endif
  16. endif
  17. ifeq ($(GDB_OBJ),)
  18. GDB_OBJ=$(GDB_SRC)
  19. endif
  20. ifeq ($(OS)),DJGPP)
  21. OS_CFLAGS=-DMAINTENANCE_CMDS=0 -DHAVE_CONFIG_H -O2 -DHAVE_LONG_DOUBLE=1 \
  22. -DPRINTF_HAS_LONG_DOUBLE=1
  23. OS_FLAGS=
  24. MMALLOC_INC=
  25. MMALLOC_CFLAGS=-DNO_MMALLOC -DNO_MMALLOC_CHECK
  26. MMALLOC_LIB=
  27. MMALLOC_LIB_DIR=
  28. OS_FLAGS+=MMALLOC=$(MMALLOC) MMALLOC_CFLAGS="$(MMALLOC_CFLAGS)"
  29. CHECKS=check_echo check_awk
  30. EXCLUDE_REGEX=
  31. else
  32. OS_CFLAGS=-DMAINTENANCE_CMDS=1 -DHAVE_CONFIG_H -O2 -DNO_MMALLOC
  33. #MMALLOC=../mmalloc/libmmalloc.a
  34. #MMALLOC_INC=o_gdb/mmalloc s_gdb/mmalloc
  35. #CHECKS=
  36. #EXCLUDE_REGEX=| sed -e '/.*gnu-regex.*/d'
  37. endif
  38. MMALLOC_LIB=$(subst ..,$(GDB_OBJ),$(MMALLOC))
  39. MMALLOC_LIB_DIR=$(subst /libmmalloc.a,,$(MMALLOC_LIB))
  40. vpath %.a $(GDB_OBJ)/bfd $(GDB_OBJ)/intl $(GDB_OBJ)/libiberty $(GDB_OBJ)/opcodes $(GDB_OBJ)/readline $(MMALLOC_LIB_DIR)
  41. _INCS=o_gdb/gdb s_gdb/gdb s_gdb/include s_gdb/gdb/config \
  42. o_gdb/bfd s_gdb/bfd \
  43. o_gdb/opcodes s_gdb/opcodes \
  44. o_gdb/intl s_gdb/intl \
  45. o_gdb/readline s_gdb/readline \
  46. o_gdb/libiberty s_gdb/libiberty \
  47. $(MMALLOC_INC)
  48. INCS=$(subst s_gdb,$(GDB_SRC),$(subst o_gdb,$(GDB_OBJ),$(_INCS)))
  49. INC_PATH=$(addprefix -I,$(INCS))
  50. all:: libgdb.a
  51. libgdb.c: Makefile
  52. echo '#include <defs.h>' > libgdb.c
  53. echo '#include <breakpoint.h>' >> libgdb.c
  54. echo '#include <symtab.h>' >> libgdb.c
  55. echo '#include <symfile.h>' >> libgdb.c
  56. echo '#include <objfiles.h>' >> libgdb.c
  57. echo '#include <inferior.h>' >> libgdb.c
  58. echo '#include <gnu-regex.h>' >> libgdb.c
  59. echo '#include <expression.h>' >> libgdb.c
  60. echo '#include <language.h>' >> libgdb.c
  61. echo '#include <complaints.h>' >> libgdb.c
  62. echo '#include <coff/internal.h>' >> libgdb.c
  63. echo '#include <libcoff.h>' >> libgdb.c
  64. echo '#include <ctype.h>' >> libgdb.c
  65. echo '#include <string.h>' >> libgdb.c
  66. echo '#include <buildsym.h>' >> libgdb.c
  67. echo '#include <gdb-stabs.h>' >> libgdb.c
  68. echo '#include <stabsread.h>' >> libgdb.c
  69. echo '#include <gdbcmd.h>' >> libgdb.c
  70. echo '#include <setjmp.h>' >> libgdb.c
  71. echo '#include <demangle.h>' >> libgdb.c
  72. echo '#include <annotate.h>' >> libgdb.c
  73. echo '#include <top.h>' >> libgdb.c
  74. LIBGDB_FLAGS+=$(OS_FLAGS)
  75. CFLAGS+=$(OS_CFLAGS)
  76. $(GDB_OBJ)/bfd/bfd.h:
  77. $(MAKE) -C $(dir $@) $(notdir $@)
  78. ifneq ($(LIBGDB_H),)
  79. libgdb.h: $(LIBGDB_H)
  80. ln -sf $(LIBGDB_H) libgdb.h
  81. else
  82. libgdb.h: $(GDB_OBJ)/bfd/bfd.h libgdb.c
  83. gcc -E -P $(INC_PATH) $(CFLAGS) $(MMALLOC_CFLAGS) libgdb.c \
  84. | sed -e '/^[ ]*$$/d' > libgdb.h
  85. gcc -E -P -dM $(INC_PATH) $(CFLAGS) $(MMALLOC_CFLAGS) libgdb.c \
  86. | sed -e '/^[ ]*$$/d' >> libgdb.h
  87. endif
  88. gdb.t: $(GDB_OBJ)/gdb/libgdb-files
  89. printf "%s\n" $(shell cat $<) | sed -n -e 's,^.*\.o,$(dir $<)&,p' $(EXCLUDE_REGEX) > $@
  90. %.t: %.a
  91. ar t $< | sed -e 's,^.*\.o,$(dir $<)&,' > $@
  92. libbfd.t: $(GDB_OBJ)/bfd/libbfd.a
  93. libintl.t: $(GDB_OBJ)/intl/libintl.a
  94. libiberty.t: $(GDB_OBJ)/libiberty/libiberty.a
  95. libopcodes.t: $(GDB_OBJ)/opcodes/libopcodes.a
  96. libreadline.t: $(GDB_OBJ)/readline/libreadline.a
  97. libmmalloc.t: $(GDB_OBJ)/mmalloc/libmmalloc.a
  98. $(GDB_OBJ)/%.a:
  99. $(MAKE) -C $(dir $@) CFLAGS="$(CFLAGS)" $(LIBGDB_FLAGS)
  100. $(GDB_OBJ)/gdb/libgdb-files:
  101. # this is needed, because the file is part of the src distrib, but
  102. # the object files not (at least in DJGPP)
  103. rm -f $@
  104. $(MAKE) -C $(dir $@) $(notdir $@) CFLAGS="$(CFLAGS)" $(LIBGDB_FLAGS)
  105. T_FILES= libbfd.t libiberty.t libintl.t libopcodes.t libreadline.t $(notdir $(subst .a,.t,$(MMALLOC_LIB))) gdb.t
  106. list: $(T_FILES)
  107. libgdb.a: $(CHECKS) list
  108. rm -f libgdb.a
  109. # do not use any xmalloc.o, because it is defined in utils.o
  110. ar rcs $@ $(shell cat $(T_FILES) | sed -e '/.*xmalloc.*/d')
  111. rm -f $(T_FILES)
  112. libgdb.so: $(CHECKS) list
  113. rm -f libgdb.so
  114. # do not use any xmalloc.o, because it is defined in utils.o
  115. ld -shared -o $@ $(shell cat $(T_FILES) | sed -e '/.*xmalloc.*/d')
  116. rm -f $(T_FILES)
  117. lib.zip : libgdb.a
  118. zip lib libgdb.a