Makefile.fpc 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. #
  2. # Makefile.fpc for Free Pascal units, which participates in the tests
  3. #
  4. [target]
  5. [install]
  6. fpcpackage=y
  7. [clean]
  8. units = erroru popuperr ptest
  9. [compiler]
  10. targetdir=$(TARGETSUFFIX)
  11. [default]
  12. fpcdir=../..
  13. [rules]
  14. .NOTPARALLEL:
  15. .PHONY: rtl extra fpcunit packages all clean distclean clean_ctest
  16. .PHONY: cleanrtl distcleanrtl
  17. .PHONY: cleanfpcunit distcleanfpcunit
  18. .PHONY: cleanpackages distcleanpackages
  19. TESTOPT:=-n -FE$(COMPILER_TARGETDIR) -T$(OS_TARGET) $(OPT)
  20. ifeq ($(CPU_TARGET),armeb)
  21. override TESTOPT+=-Cb
  22. endif
  23. ifneq ($(BINUTILSPREFIX),)
  24. override TESTOPT+=-XP$(BINUTILSPREFIX) -Xc
  25. endif
  26. ifeq ($(OS_TARGET),msdos)
  27. override TESTOPT+=-CX
  28. endif
  29. TESTCOMPILER:=$(FPC) $(TESTOPT)
  30. FPCFPMAKE=$(NATIVE_FPC)
  31. ifdef CROSSCOMPILE
  32. override CROSSOPT:=$(OPT)
  33. override OPT=
  34. override BUILDFULLNATIVE=
  35. # Check if there is a native compiler (ppc) which is built during building a cross-compiler.
  36. DEV_FPC=$(wildcard $(CURDIR)/../../compiler/ppc$(SRCEXEEXT))
  37. ifneq ($(DEV_FPC), )
  38. # Use this native compiler to build fpmake, since RTL is already compiled by this compiler
  39. # and using an other native compiler may produce PPU incompatibility errors.
  40. FPCFPMAKE=$(DEV_FPC)
  41. endif
  42. endif
  43. export FPCFPMAKE
  44. #############################
  45. # RTL
  46. #
  47. DUMMYINSTALLDIR=$(BASEDIR)/tmp
  48. INSTALLOPT=INSTALL_PREFIX=$(DUMMYINSTALLDIR) INSTALL_UNITDIR=$(BASEDIR)/$(COMPILER_TARGETDIR)
  49. rtl-stamp.$(FULL_TARGET):
  50. ifneq ($(inOS2),)
  51. $(MAKE) -C ../../rtl all "OPT=$(OPT) -n" "CROSSOPT=$(CROSSOPT)" FPC=$(FPC)
  52. else
  53. $(MAKE) -C ../../rtl all 'OPT=$(OPT) -n' 'CROSSOPT=$(CROSSOPT)' FPC=$(FPC)
  54. endif
  55. $(MAKE) -C ../../rtl install $(INSTALLOPT) OPT= CROSSOPT= FPC=$(FPC)
  56. $(ECHO) Compiled > rtl-stamp.$(FULL_TARGET)
  57. cleanrtl:
  58. $(DELTREE) $(COMPILER_TARGETDIR)
  59. $(DELTREE) $(DUMMYINSTALLDIR)
  60. -$(DEL) rtl-stamp.$(FULL_TARGET)
  61. distcleanrtl: cleanrtl
  62. rtl : rtl-stamp.$(FULL_TARGET)
  63. #############################
  64. # FPCUnit
  65. #
  66. DUMMYINSTALLDIR=$(BASEDIR)/tmp
  67. INSTALLOPT=INSTALL_PREFIX=$(DUMMYINSTALLDIR) INSTALL_UNITDIR=$(BASEDIR)/$(COMPILER_TARGETDIR)
  68. FPCUNITDIR=$(FPCDIR)/packages/fcl-fpcunit/src
  69. fpcunit-stamp.$(FULL_TARGET):
  70. ifneq ($(OS_TARGET),msdos)
  71. ifneq ($(CPU_TARGET),avr)
  72. ifneq ($(CPU_TARGET),jvm)
  73. $(TESTCOMPILER) -Fu$(BASEDIR)/$(COMPILER_TARGETDIR) $(FPCUNITDIR)/testutils
  74. $(TESTCOMPILER) -Fu$(BASEDIR)/$(COMPILER_TARGETDIR) $(FPCUNITDIR)/fpcunit
  75. endif
  76. endif
  77. endif
  78. $(ECHO) Compiled > fpcunit-stamp.$(FULL_TARGET)
  79. cleanfpcunit:
  80. $(DELTREE) $(COMPILER_TARGETDIR)
  81. $(DELTREE) $(DUMMYINSTALLDIR)
  82. -$(DEL) fpcunit-stamp.$(FULL_TARGET)
  83. distcleanfpcunit: cleanfpcunit
  84. $(MAKE) -C $(FPCUNITDIR)/.. clean
  85. fpcunit : fpcunit-stamp.$(FULL_TARGET)
  86. #############################
  87. # Packages
  88. #
  89. DUMMYINSTALLDIR=$(BASEDIR)/tmp
  90. INSTALLOPT=INSTALL_PREFIX=$(DUMMYINSTALLDIR) INSTALL_UNITDIR=$(BASEDIR)/$(COMPILER_TARGETDIR)
  91. PACKAGESDIR=$(FPCDIR)/packages
  92. packages-stamp.$(FULL_TARGET):
  93. ifneq ($(inOS2),)
  94. $(MAKE) -C ../../packages all "OPT=$(OPT) -n" "CROSSOPT=$(CROSSOPT)" FPC=$(FPC)
  95. else
  96. $(MAKE) -C ../../packages all 'OPT=$(OPT) -n' 'CROSSOPT=$(CROSSOPT)' FPC=$(FPC)
  97. endif
  98. $(MAKE) -C ../../packages install $(INSTALLOPT) OPT= CROSSOPT= FPC=$(FPC)
  99. $(ECHO) Compiled > packages-stamp.$(FULL_TARGET)
  100. cleanpackages:
  101. $(DELTREE) $(COMPILER_TARGETDIR)
  102. $(DELTREE) $(DUMMYINSTALLDIR)
  103. -$(DEL) packages-stamp.$(FULL_TARGET)
  104. distcleanpackages: cleanpackages
  105. packages : packages-stamp.$(FULL_TARGET)
  106. #############################
  107. # Extra units
  108. #
  109. erroru$(PPUEXT) : erroru.pp
  110. $(TESTCOMPILER) erroru.pp
  111. ptest$(PPUEXT) : ../test/cg/ptest.pp
  112. ifneq ($(OS_TARGET),msdos)
  113. $(TESTCOMPILER) ../test/cg/ptest.pp
  114. endif
  115. popuperr$(PPUEXT) : popuperr.pp
  116. $(TESTCOMPILER) popuperr.pp
  117. ifdef CCOMPILER
  118. ctest: ../test/cg/obj/ctest.c
  119. $(CCOMPILER) -c -o ../test/cg/obj/$(OS_TARGET)/$(CPU_TARGET)/ctest.o ../test/cg/obj/ctest.c
  120. else
  121. ctest:
  122. @$(ECHO) "No C compiler found"
  123. @exit 1
  124. endif
  125. extra : erroru$(PPUEXT) ptest$(PPUEXT) popuperr$(PPUEXT)
  126. #####################################################################
  127. # PPU testing targets
  128. #####################################################################
  129. PPULIST:=$(wildcard */*.ppu) $(wildcard units/*/*.ppu)
  130. PPULOGLIST:=$(subst .ppu,.log-ppu,$(PPULIST))
  131. RMPPULOGLIST:=$(subst .ppu,.rm-log-ppu,$(PPULIST))
  132. ALLPPUDIRS:=$(wildcard units/*) $(wildcard */units/*)
  133. .PHONY : ppulogs cleanppulogs testppudump $(RMPPULOGLIST)
  134. ppulogs : $(PPULOGLIST)
  135. %.log-ppu : %.ppu ../../compiler/utils/ppudump$(EXEEXT)
  136. ..$(PATHSEP)..$(PATHSEP)compiler$(PATHSEP)utils$(PATHSEP)ppudump -VA -M $< > $@
  137. %.rm-log-ppu : %.ppu ../../compiler/utils/ppudump$(EXEEXT)
  138. -$(RMPROG) $<
  139. ../../compiler/utils/ppudump$(EXEEXT):
  140. $(MAKE) -C $(COMPILERDIR)/utils ppudump$(EXEEXT)
  141. ppuinfo :
  142. echo list of PPU directories is "$(ALLPPUDIRS)"
  143. echo PPU list is "$(PPULIST)"
  144. echo PPULOG list is "$(PPULOGLIST)"
  145. cleanppulogs : $(RMPPULOGLIST)
  146. testppudump :
  147. $(MAKE) cleanppulogs ppulogs
  148. #############################
  149. # Main rules
  150. #
  151. ifdef QUICKTEST
  152. all : rtl fpcunit extra
  153. else
  154. all : rtl fpcunit packages extra
  155. endif
  156. STAMPFILES=$(wildcard *stamp*)
  157. TEMPDIRS=$(wildcard $(MAKEFILETARGETS) tmp)
  158. clean : cleanrtl cleanall cleanfpcunit cleanpackages
  159. distclean : clean distcleanrtl distcleanfpcunit distcleanpackages
  160. -$(DELTREE) $(TEMPDIRS)
  161. -$(DELTREE) $(BASEDIR)/units
  162. -$(DEL) $(STAMPFILES)
  163. clean_ctest :
  164. -$(DEL) ../test/cg/obj/$(OS_TARGET)/$(CPU_TARGET)/ctest.o