Makefile.fpc 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. #
  2. # Makefile.fpc for Free Pascal GDB Interface
  3. #
  4. [package]
  5. name=gdbint
  6. version=2.0.0
  7. [target]
  8. units=gdbint gdbcon
  9. examples=testgdb symify
  10. [compiler]
  11. objectdir=$(GDBLIBDIR)
  12. librarydir=$(GDBLIBDIR)
  13. [require]
  14. libc=y
  15. [install]
  16. fpcpackage=y
  17. [default]
  18. fpcdir=../../..
  19. [prerules]
  20. # For unix be sure to use the locally created gdbver
  21. ifdef inUnix
  22. CURRDIR=./
  23. else
  24. CURRDIR=
  25. endif
  26. # Look for a valid GDBLIBDIR environment variable
  27. ifdef GDBLIBDIR
  28. override LIBGDBFILE:=$(firstword $(wildcard $(addsuffix /libgdb.a,$(GDBLIBDIR))))
  29. endif
  30. # Use default dirs if not available
  31. ifeq ($(LIBGDBFILE),)
  32. # Default locations <target>/<cpu> (linux) or <target> (win32,go32v2) only
  33. override GDBLIBDIR=$(wildcard $(FPCDIR)/libgdb/$(OS_TARGET)/$(CPU_TARGET))
  34. ifeq ($(GDBLIBDIR),)
  35. override GDBLIBDIR=$(FPCDIR)/libgdb/$(OS_TARGET)
  36. endif
  37. # Detect if libgdb.a is available
  38. override LIBGDBFILE:=$(firstword $(wildcard $(addsuffix /libgdb.a,$(GDBLIBDIR))))
  39. endif
  40. # Set GDBFOUND variable
  41. ifeq ($(LIBGDBFILE),)
  42. GDBFOUND=0
  43. else
  44. GDBFOUND=1
  45. endif
  46. [rules]
  47. ifeq ($(FULL_SOURCE),$(FULL_TARGET))
  48. CAN_RUN_GDBVER=1
  49. endif
  50. ifeq ($(FULL_SOURCE),i386-win32)
  51. ifeq ($(FULL_TARGET),i386-go32v2)
  52. CAN_RUN_GDBVER=1
  53. endif
  54. endif
  55. ifdef CAN_RUN_GDBVER
  56. ifeq ($(GDBFOUND),1)
  57. # libgdb.a found
  58. $(CURRDIR)getver$(EXEEXT) : gdbver.pp
  59. $(COMPILER) -o$(CURRDIR)getver$(EXEEXT) gdbver.pp
  60. ifndef GOTGDBVER
  61. # gdbver doesn't exists, build it first
  62. gdbint$(PPUEXT): $(CURRDIR)gdbver$(EXEEXT) gdbint.pp
  63. $(MAKE) gdbint$(PPUEXT) GOTGDBVER=1
  64. else
  65. # gdbver exists
  66. GDBVER:=GDB_V$(strip $(shell $(CURRDIR)gdbver$(EXEEXT) -n))
  67. gdbver.inc: gdbver$(EXEEXT)
  68. ./gdbver$(EXEEXT) -o gdbver.inc
  69. gdbint$(PPUEXT): gdbint.pp gdbver.inc
  70. @$(ECHO) Using GDB $(GDBVER)
  71. $(COMPILER) -d$(GDBVER) gdbint.pp
  72. $(DEL) gdbver$(EXEEXT) gdbver$(OEXT)
  73. endif
  74. else
  75. # libgdb.a not found, default to libgdb v6
  76. GDBVER=GDB_V606
  77. gdbver.inc:
  78. $(CPPROG) gdbver_nogdb.inc gdbver.inc
  79. gdbint$(PPUEXT): gdbint.pp gdbver.inc
  80. @$(ECHO) libgdb.a not found, using default GDB $(GDBVER)
  81. $(COMPILER) -d$(GDBVER) gdbint.pp
  82. endif
  83. else
  84. # Different OS_TARGET, default to libgdb v6
  85. GDBVER=GDB_V606
  86. gdbver.inc:
  87. $(CPPROG) gdbver_nogdb.inc gdbver.inc
  88. gdbint$(PPUEXT): gdbint.pp gdbver.inc
  89. @$(ECHO) Different target os or cpu, using default GDB $(GDBVER)
  90. $(COMPILER) -d$(GDBVER) gdbint.pp
  91. endif
  92. gdbcon$(PPUEXT): gdbcon.pp gdbint$(PPUEXT)
  93. ifeq ($(OS_TARGET),go32v2)
  94. DBGCOM=dbgcom$(OEXT)
  95. else
  96. DBGCOM=
  97. endif
  98. ifdef $(COMPILEDBGCOM)
  99. # FPC conditionnal remove the file watching mecanism introduced
  100. # in v2.02 of dbgcom.c because it relies
  101. # on the fact that all files are opened via C lib calls
  102. # which is wrong for FPC !!
  103. $(DBGCOM): ../v4.16/dbgcom.c
  104. gcc -c -DFPC -Dother_sel -gstabs -o dbgcom.o -I../v4.16 ../v4.16/dbgcom.c
  105. else
  106. $(DBGCOM):
  107. endif
  108. simple: $(DBGCOM)
  109. -rm gdbint.ppu
  110. ppc386 -dUSE_LIBGDB gdbint
  111. ppc386 testgdb
  112. testgdb$(EXEEXT): testgdb.pp gdbint$(PPUEXT) gdbcon$(PPUEXT) $(DBGCOM)
  113. # Allow test for example
  114. .PHONY: test
  115. test: examples
  116. clean: fpc_clean
  117. $(DEL) gdbver$(EXEEXT) gdbver$(OEXT)
  118. distclean: fpc_distclean
  119. $(DEL) gdbver.inc
  120. .NOTPARALLEL: