component.mk 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. ifeq ($(GCC_NOT_5_2_0), 1)
  2. ifdef CONFIG_NEWLIB_NANO_FORMAT
  3. LIBC := c_nano
  4. else # CONFIG_NEWLIB_NANO_FORMAT
  5. LIBC := c
  6. endif # CONFIG_NEWLIB_NANO_FORMAT
  7. # Order of linking matters: libnewlib.a should go before libc.a
  8. COMPONENT_ADD_LDFLAGS := -lnewlib -l$(LIBC) -lm
  9. COMPONENT_ADD_INCLUDEDIRS := platform_include
  10. ifdef CONFIG_SPIRAM_CACHE_WORKAROUND
  11. COMPONENT_ADD_LDFRAGMENTS := esp32-spiram-rom-functions-c.lf
  12. endif
  13. # Forces the linker to include locks, heap, and syscalls from this component,
  14. # instead of the implementations provided by newlib.
  15. COMPONENT_ADD_LDFLAGS += -u newlib_include_locks_impl
  16. COMPONENT_ADD_LDFLAGS += -u newlib_include_heap_impl
  17. COMPONENT_ADD_LDFLAGS += -u newlib_include_syscalls_impl
  18. else # GCC_NOT_5_2_0
  19. # Remove this section when GCC 5.2.0 is no longer supported
  20. ifdef CONFIG_SPIRAM_CACHE_WORKAROUND
  21. LIBC_PATH := $(COMPONENT_PATH)/lib/libc-psram-workaround.a
  22. LIBM_PATH := $(COMPONENT_PATH)/lib/libm-psram-workaround.a
  23. COMPONENT_ADD_LDFRAGMENTS := esp32-spiram-rom-functions-psram-workaround.lf
  24. else
  25. ifdef CONFIG_NEWLIB_NANO_FORMAT
  26. LIBC_PATH := $(COMPONENT_PATH)/lib/libc_nano.a
  27. else
  28. LIBC_PATH := $(COMPONENT_PATH)/lib/libc.a
  29. endif # CONFIG_NEWLIB_NANO_FORMAT
  30. LIBM_PATH := $(COMPONENT_PATH)/lib/libm.a
  31. endif # CONFIG_SPIRAM_CACHE_WORKAROUND
  32. COMPONENT_ADD_LDFLAGS := $(LIBC_PATH) $(LIBM_PATH) -lnewlib
  33. COMPONENT_ADD_LINKER_DEPS := $(LIBC_PATH) $(LIBM_PATH)
  34. COMPONENT_ADD_INCLUDEDIRS := platform_include include
  35. endif # GCC_NOT_5_2_0
  36. COMPONENT_ADD_LDFRAGMENTS += newlib.lf
  37. heap.o: CFLAGS += -fno-builtin