config.mk 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. #
  2. # RT-Thread Makefile
  3. # CFLAGS for C compiler flags
  4. # CPPFLAGS for C++ compiler flags
  5. # LDFLAGS for ld link flags
  6. # LDLIBS for libraries should be linked
  7. # AFLAGS for assemble flags
  8. #
  9. include $(KERNEL_ROOT)/config.local
  10. include $(KERNEL_ROOT)/config.target
  11. #
  12. # toolchain variables
  13. #
  14. CC = $(PREFIX)gcc
  15. CXX = $(PREFIX)g++
  16. LD = $(PREFIX)ld
  17. AR = $(PREFIX)ar
  18. AS = $(PREFIX)as
  19. RANLIB = $(PREFIX)ranlib
  20. NM = $(PREFIX)nm
  21. OBJCOPY = $(PREFIX)objcopy
  22. OBJDUMP = $(PREFIX)objdump
  23. STRIP = $(PREFIX)strip
  24. SIZE = $(PREFIX)size
  25. RM = rm -rf
  26. MKDIR = mkdir -p
  27. #
  28. # start object and library
  29. #
  30. STARTOBJ = $(KERNEL_ROOT)/lib/start_$(CPU).o
  31. LIBCPU = $(KERNEL_ROOT)/lib/libcpu_$(CPU).a
  32. KERNEL = $(KERNEL_ROOT)/lib/libkernel_$(ARCH).a
  33. LIBBSP = $(KERNEL_ROOT)/lib/libbsp_$(BOARD).a
  34. LIBFINSH = $(KERNEL_ROOT)/lib/libfinsh_$(ARCH).a
  35. LIBEFSL = $(KERNEL_ROOT)/lib/libefsl-fs-vfat.a \
  36. $(KERNEL_ROOT)/lib/libefsl-base.a
  37. LIBRTGUI = $(KERNEL_ROOT)/lib/librtgui_widgets.a \
  38. $(KERNEL_ROOT)/lib/librtgui_server.a \
  39. $(KERNEL_ROOT)/lib/librtgui_common.a \
  40. $(KERNEL_ROOT)/lib/librtgui_app.a
  41. LIBLWIP = $(KERNEL_ROOT)/lib/liblwip_$(ARCH).a
  42. LIBCPP = $(KERNEL_ROOT)/lib/librtt++_$(ARCH).a
  43. LIBMINIC = $(KERNEL_ROOT)/lib/libminilibc_$(ARCH).a
  44. LDLIBS = -lcpu_$(CPU) -lkernel_$(ARCH) -lbsp_$(BOARD)
  45. #
  46. # ld script, according to build type, RAM or ROM
  47. #
  48. ifeq ($(BUILDTYPE), RAM)
  49. LDSCRIPT= $(KERNEL_ROOT)/bsp/$(BOARD)/$(BOARD)_ram.lds
  50. else
  51. LDSCRIPT= $(KERNEL_ROOT)/bsp/$(BOARD)/$(BOARD)_rom.lds
  52. endif
  53. #
  54. # RT-Thread component
  55. #
  56. ifeq ($(RT_USING_FINSH), 1)
  57. CFLAGS += -I$(KERNEL_ROOT)/finsh
  58. LDLIBS += -lfinsh_$(ARCH)
  59. endif
  60. ifeq ($(RT_USING_RTGUI), 1)
  61. CFLAGS += -I$(KERNEL_ROOT)/rtgui/include
  62. LDLIBS += -lrtgui_server -lrtgui_common -lrtgui_widgets -lrtgui_app
  63. endif
  64. ifeq ($(RT_USING_LWIP), 1)
  65. CFLAGS += -I$(KERNEL_ROOT)/net/lwip/src \
  66. -I$(KERNEL_ROOT)/net/lwip/src/include \
  67. -I$(KERNEL_ROOT)/net/lwip/src/include/ipv4 \
  68. -I$(KERNEL_ROOT)/net/lwip/src/arch/include
  69. LDLIBS += -llwip_$(ARCH)
  70. endif
  71. ifeq ($(RT_USING_EFSL), 1)
  72. CFLAGS += -I$(KERNEL_ROOT)/filesystem/efsl/src/fs/vfat/include \
  73. -I$(KERNEL_ROOT)/filesystem/efsl/src/base/include \
  74. -I$(KERNEL_ROOT)/filesystem/efsl/src/include \
  75. -I$(KERNEL_ROOT)/filesystem/efsl/conf
  76. LDLIBS += -lefsl-base -lefsl-fs-vfat
  77. endif
  78. ifeq ($(RT_USING_CPLUSPLUS), 1)
  79. CFLAGS +=
  80. LDLIBS += -lrtt++_$(ARCH)
  81. endif
  82. ifeq ($(RT_USING_NEWLIB), 1)
  83. CFLAGS += -I$(KERNEL_ROOT)/newlib/libc/include
  84. LDLIBS += -lnewlib_$(ARCH)
  85. else
  86. ifeq ($(RT_USING_MINILIBC), 1)
  87. CFLAGS += -I$(KERNEL_ROOT)/libc/minilibc
  88. LDLIBS += -lminilibc_$(ARCH)
  89. endif
  90. endif
  91. #
  92. # compiler, assemble and ld link flag
  93. #
  94. CFLAGS += -I$(KERNEL_ROOT)/include -I$(KERNEL_ROOT)/bsp/$(BOARD) -Wall -nostdinc -fno-builtin
  95. ifeq ($(RELEASETYPE), DEBUG)
  96. CFLAGS += -ggdb
  97. AFLAGS += -ggdb
  98. else
  99. CFLAGS += -O2
  100. CFLAGS +=
  101. AFLAGS +=
  102. endif
  103. ifeq ($(BUILDTYPE), RAM)
  104. #AFLAGS +=
  105. #AFLAGS += -x assembler-with-cpp -DTEXT_BASE=$(TEXTBASE)
  106. #AFLAGS += -x assembler-with-cpp
  107. else
  108. #AFLAGS +=
  109. #AFLAGS += -x assembler-with-cpp -DTEXT_BASE=$(TEXTBASE) -D__FLASH_BUILD__
  110. endif
  111. LDFLAGS += -L$(KERNEL_ROOT)/lib --start-group $(LDLIBS) --end-group
  112. CPPFLAGS = $(CFLAGS) -fno-rtti
  113. #
  114. # Common rules
  115. #
  116. .c.o:
  117. $(CC) -c $(CFLAGS) -o $@ $<
  118. .cpp.o:
  119. $(CXX) -c $(CPPFLAGS) -o $@ $<
  120. .S.o:
  121. $(CC) -c $(AFLAGS) -o $@ $<