Makefile.fpc.fpcmake 4.3 KB

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