Makefile.fpc 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. #
  2. # Makefile.fpc for Free Pascal FreeRTOS RTL
  3. #
  4. [package]
  5. main=rtl
  6. [target]
  7. loaders=$(LOADERS)
  8. # not all targets include enough features to build all units so
  9. # the common units which are not compiled for all CPUs are stored in
  10. # CPU_SPECIFIC_COMMON_UNITS
  11. units=$(SYSTEMUNIT) $(CPU_UNITS) $(UUCHARUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) heapmgr consoleio $(CPU_SPECIFIC_COMMON_UNITS) \
  12. # $(MACPASUNIT) $(ISO7185UNIT) $(STRINGSUNIT)
  13. $(STRINGSUNIT) \
  14. $(SORTBASEUNIT) \
  15. $(DOSUNIT) \
  16. $(CTYPESUNIT) \
  17. $(CHARSETUNIT) $(CPALLUNIT) \
  18. $(SYSCONSTUNIT) \
  19. $(CHARACTERUNIT)
  20. implicitunits=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)
  21. #rsts=$(MATHUNIT) $(RTLCONSTSUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(UNICODEDATAUNIT)
  22. [require]
  23. nortl=y
  24. [install]
  25. fpcpackage=y
  26. [default]
  27. target=freertos
  28. [compiler]
  29. includedir=$(INC) $(PROCINC)
  30. sourcedir=$(INC) $(PROCINC) $(COMMON) $(ARCH)
  31. [prerules]
  32. RTL=..
  33. INC=$(RTL)/inc
  34. COMMON=$(RTL)/common
  35. PROCINC=$(RTL)/$(CPU_TARGET)
  36. UNITPREFIX=rtl
  37. LOADERS=
  38. ifdef RELEASE
  39. override FPCOPT+=-Ur
  40. endif
  41. CPU_UNITS=
  42. SYSINIT_UNITS=
  43. CPU_SPECIFIC_COMMON_UNITS=
  44. # Dos unit, local source
  45. DOSDIR=.
  46. # Dos unit uses objfpc mode
  47. DOS_DEPS_OS=$(OBJPASUNIT)$(PPUEXT)
  48. ifeq ($(ARCH),arm)
  49. CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MACPASUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT)
  50. ifeq ($(SUBARCH),armv7m)
  51. CPU_UNITS=stm32f103xe cortexm3 cortexm4 # thumb2_bare
  52. CPU_UNITS_DEFINED=1
  53. endif
  54. ifeq ($(SUBARCH),armv7em)
  55. CPU_UNITS=stm32f401xe cortexm3 cortexm4 cortexm7 # thumb2_bare
  56. CPU_UNITS_DEFINED=1
  57. endif
  58. ifeq ($(SUBARCH),armv6m)
  59. CPU_UNITS=stm32g071xx cortexm0
  60. CPU_UNITS_DEFINED=1
  61. endif
  62. ifeq ($(CPU_UNITS_DEFINED),)
  63. $(error No CPUs enabled for given SUBARCH, pass either a SUBARCH or set CPU_UNITS_DEFINED=1 if you know what you are doing)
  64. endif
  65. endif
  66. ifeq ($(ARCH),riscv32)
  67. CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MACPASUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT)
  68. ifeq ($(SUBARCH),rv32imc)
  69. override FPCOPT+=-Cprv32imc
  70. CPU_UNITS=esp32c2 esp32c3 esp32c3idf_40400 esp32c2idf_50000 esp32c3idf_50000 esp32c2idf_50200 esp32c3idf_50200
  71. CPU_UNITS_DEFINED=1
  72. endif
  73. ifeq ($(SUBARCH),rv32imac)
  74. override FPCOPT+=-Cprv32imac
  75. CPU_UNITS=esp32c6 esp32c6idf_50200
  76. CPU_UNITS_DEFINED=1
  77. endif
  78. ifeq ($(CPU_UNITS_DEFINED),)
  79. $(error No CPUs enabled for given SUBARCH, pass either a SUBARCH or set CPU_UNITS_DEFINED=1 if you know what you are doing)
  80. endif
  81. endif
  82. ifeq ($(ARCH),xtensa)
  83. CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MACPASUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT)
  84. ifeq ($(SUBARCH),lx6)
  85. CPU_UNITS=esp32 espidf_40100 espidf_40200 espidf_40400 espidf_50000 espidf_50200
  86. CPU_UNITS_DEFINED=1
  87. endif
  88. ifeq ($(SUBARCH),lx7hf)
  89. CPU_UNITS=esp32s3 espidf_40400 espidf_50000 espidf_50200
  90. CPU_UNITS_DEFINED=1
  91. endif
  92. ifeq ($(SUBARCH),lx7)
  93. CPU_UNITS=esp32s2 espidf_40400 espidf_50000 espidf_50200
  94. CPU_UNITS_DEFINED=1
  95. endif
  96. ifeq ($(SUBARCH),lx106)
  97. CPU_UNITS=esp8266 esp8266rtos_30300 esp8266rtos_30400
  98. CPU_UNITS_DEFINED=1
  99. endif
  100. ifeq ($(CPU_UNITS_DEFINED),)
  101. $(error No CPUs enabled for given SUBARCH, pass either a SUBARCH or set CPU_UNITS_DEFINED=1 if you know what you are doing)
  102. endif
  103. endif
  104. # Paths
  105. OBJPASDIR=$(RTL)/objpas
  106. [rules]
  107. # .NOTPARALLEL:
  108. # Get the system independent include file names.
  109. # This will set the following variables :
  110. # SYSINCNAMES
  111. include $(INC)/makefile.inc
  112. SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
  113. # Get the processor dependent include file names.
  114. # This will set the following variables :
  115. # CPUINCNAMES
  116. include $(PROCINC)/makefile.cpu
  117. SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
  118. # Put system unit dependencies together.
  119. SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS) $(INC)/softfpu.pp
  120. override FPC_SYSTEM_OPT += @system.cfg
  121. #
  122. # Base Units (System, $(STRINGSUNIT), os-dependent-base-unit)
  123. #
  124. consoleio$(PPUEXT) : consoleio.pp $(SYSTEMUNIT)$(PPUEXT)
  125. $(COMPILER) $<
  126. heapmgr$(PPUEXT) : heapmgr.pp $(SYSTEMUNIT)$(PPUEXT)
  127. $(COMPILER) $<
  128. #
  129. # Unit specific rules
  130. #
  131. define CPU_UNITS_RULE
  132. ifneq ($(filter $(ARCH),arm riscv32 xtensa),)
  133. $(1)$(PPUEXT): $(ARCH)/$(1).pp consoleio$(PPUEXT) heapmgr$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  134. else
  135. $(1)$(PPUEXT): $(ARCH)/$(1).pp $(SYSTEMUNIT)$(PPUEXT)
  136. endif
  137. endef
  138. $(foreach unit,$(CPU_UNITS),$(eval $(call CPU_UNITS_RULE,$(unit))))
  139. $(addsuffix $(PPUEXT),$(CPU_UNITS)):
  140. $(COMPILER) -g $<