Makefile.fpc 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  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)
  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=esp32c3 esp32c3idf_40400 esp32c3idf_50000
  71. CPU_UNITS_DEFINED=1
  72. endif
  73. ifeq ($(CPU_UNITS_DEFINED),)
  74. $(error No CPUs enabled for given SUBARCH, pass either a SUBARCH or set CPU_UNITS_DEFINED=1 if you know what you are doing)
  75. endif
  76. endif
  77. ifeq ($(ARCH),xtensa)
  78. CPU_SPECIFIC_COMMON_UNITS=$(SYSUTILSUNIT) $(MATHUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MACPASUNIT) $(TYPINFOUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(GETOPTSUNIT) $(LINEINFOUNIT)
  79. ifeq ($(SUBARCH),lx6)
  80. CPU_UNITS=esp32 espidf_40100 espidf_40200 espidf_40400
  81. CPU_UNITS_DEFINED=1
  82. endif
  83. ifeq ($(SUBARCH),lx106)
  84. CPU_UNITS=esp8266 esp8266rtos_30300 esp8266rtos_30400
  85. CPU_UNITS_DEFINED=1
  86. endif
  87. ifeq ($(CPU_UNITS_DEFINED),)
  88. $(error No CPUs enabled for given SUBARCH, pass either a SUBARCH or set CPU_UNITS_DEFINED=1 if you know what you are doing)
  89. endif
  90. endif
  91. # Paths
  92. OBJPASDIR=$(RTL)/objpas
  93. [rules]
  94. # .NOTPARALLEL:
  95. # Get the system independent include file names.
  96. # This will set the following variables :
  97. # SYSINCNAMES
  98. include $(INC)/makefile.inc
  99. SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
  100. # Get the processor dependent include file names.
  101. # This will set the following variables :
  102. # CPUINCNAMES
  103. include $(PROCINC)/makefile.cpu
  104. SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
  105. # Put system unit dependencies together.
  106. SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS) $(INC)/softfpu.pp
  107. override FPC_SYSTEM_OPT += @system.cfg
  108. #
  109. # Base Units (System, $(STRINGSUNIT), os-dependent-base-unit)
  110. #
  111. consoleio$(PPUEXT) : consoleio.pp $(SYSTEMUNIT)$(PPUEXT)
  112. $(COMPILER) $<
  113. heapmgr$(PPUEXT) : heapmgr.pp $(SYSTEMUNIT)$(PPUEXT)
  114. $(COMPILER) $<
  115. #
  116. # Unit specific rules
  117. #
  118. define CPU_UNITS_RULE
  119. ifneq ($(filter $(ARCH),arm riscv32 xtensa),)
  120. $(1)$(PPUEXT): $(ARCH)/$(1).pp consoleio$(PPUEXT) heapmgr$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  121. else
  122. $(1)$(PPUEXT): $(ARCH)/$(1).pp $(SYSTEMUNIT)$(PPUEXT)
  123. endif
  124. endef
  125. $(foreach unit,$(CPU_UNITS),$(eval $(call CPU_UNITS_RULE,$(unit))))
  126. $(addsuffix $(PPUEXT),$(CPU_UNITS)):
  127. $(COMPILER) -g $<