Makefile.mips
上传用户:wudi5211
上传日期:2010-01-21
资源大小:607k
文件大小:6k
源码类别:

嵌入式Linux

开发平台:

C/C++

  1. # This material is inherited from the Linux Makefile: arch/mips/Makefile:
  2. #
  3. ifdef CONFIG_CPU_LITTLE_ENDIAN
  4. tool-prefix = mipsel-linux-
  5. else
  6. tool-prefix = mips-linux-
  7. endif
  8. ifdef CONFIG_CROSSCOMPILE
  9. CROSS_COMPILE  = $(tool-prefix)
  10. endif
  11. #
  12. # The ELF GCC uses -G0 -mabicalls -fpic as default.  We don't need PIC
  13. # code in the kernel since it only slows down the whole thing.  For the
  14. # old GCC these options are just the defaults.  At some point we might
  15. # make use of global pointer optimizations.
  16. #
  17. # The DECStation requires an ECOFF kernel for remote booting, other MIPS
  18. # machines may also.  Since BFD is incredibly buggy with respect to
  19. # crossformat linking we rely on the elf2ecoff tool for format conversion.
  20. #
  21. GCCFLAGS := -G 0 -mno-abicalls -fno-pic
  22. LINKFLAGS += -static -G 0
  23. MODFLAGS += -mlong-calls
  24. ifdef CONFIG_REMOTE_DEBUG
  25. CFLAGS := $(CFLAGS) -g
  26. endif
  27. #
  28. # CPU-dependent compiler/assembler options for optimization.
  29. #
  30. ifdef CONFIG_CPU_R3000
  31. GCCFLAGS += -mcpu=r3000 -mips1
  32. endif
  33. ifdef CONFIG_CPU_R6000
  34. GCCFLAGS += -mcpu=r6000 -mips2 -Wa,--trap
  35. endif
  36. ifdef CONFIG_CPU_R4300
  37. GCCFLAGS += -mcpu=r4300 -mips2 -Wa,--trap
  38. endif
  39. ifdef CONFIG_CPU_R4X00
  40. GCCFLAGS += -mcpu=r4600 -mips2 -Wa,--trap
  41. endif
  42. ifdef CONFIG_CPU_R5000
  43. GCCFLAGS += -mcpu=r8000 -mips2 -Wa,--trap
  44. endif
  45. ifdef CONFIG_CPU_NEVADA
  46. GCCFLAGS += -mcpu=r8000 -mips2 -Wa,--trap -mmad
  47. endif
  48. ifdef CONFIG_CPU_RM7000
  49. GCCFLAGS += -mcpu=r8000 -mips2 -Wa,--trap
  50. endif
  51. ifdef CONFIG_CPU_R8000
  52. GCCFLAGS += -mcpu=r8000 -mips2 -Wa,--trap
  53. endif
  54. ifdef CONFIG_CPU_R10000
  55. GCCFLAGS += -mcpu=r8000 -mips2 -Wa,--trap
  56. endif
  57. ifdef CONFIG_CPU_VR41XX
  58. CFLAGS += -mcpu=r4600 -mips2 -Wa,-m4100,--trap
  59. endif
  60. ifdef CONFIG_CPU_R39XX
  61. # if your toolchain supports this, change to
  62. # CFLAGS += -mcpu=r3900 -mips1
  63. CFLAGS += -mcpu=r3000 -mips1
  64. endif
  65. ifdef CONFIG_MIPS_FPU_EMULATOR
  66. CORE_FILES      +=arch/mips/fpu_emulator/fpu_emulator.o
  67. SUBDIRS         +=arch/mips/fpu_emulator
  68. endif
  69. #
  70. # The pipe options is bad for my low-mem machine
  71. # Uncomment this if you want this.
  72. #
  73. GCCFLAGS += -pipe
  74. CFLAGS += $(GCCFLAGS) $(MODFLAGS)
  75. AFLAGS += $(GCCFLAGS)
  76. #
  77. # Board-dependent options and extra files
  78. #
  79. ifdef CONFIG_ALGOR_P4032
  80. CORE_FILES    += arch/mips/algor/algor.o
  81. SUBDIRS       += arch/mips/algor
  82. #LOADADDR      += 0x80000000
  83. endif
  84. #
  85. # DECstation family
  86. #
  87. ifdef CONFIG_DECSTATION
  88. CORE_FILES    += arch/mips/dec/dec.o
  89. SUBDIRS       += arch/mips/dec arch/mips/dec/prom
  90. LIBS          += arch/mips/dec/prom/rexlib.a
  91. LOADADDR      += 0x80040000
  92. endif
  93. #
  94. # Acer PICA 61, Mips Magnum 4000 and Olivetti M700.
  95. #
  96. ifdef CONFIG_MIPS_JAZZ
  97. CORE_FILES    += arch/mips/jazz/jazz.o
  98. SUBDIRS       += arch/mips/jazz arch/mips/arc
  99. LIBS          += arch/mips/arc/arclib.a
  100. LOADADDR      += 0x80080000
  101. endif
  102. ifdef CONFIG_COBALT_MICRO_SERVER
  103. ARCHIVES      += arch/mips/cobalt/cobalt.o
  104. SUBDIRS       += arch/mips/cobalt
  105. LOADADDR      += 0x80000000
  106. endif
  107. ifdef CONFIG_SNI_RM200_PCI
  108. CORE_FILES    += arch/mips/sni/sni.o
  109. SUBDIRS       += arch/mips/sni arch/mips/arc
  110. LIBS          += arch/mips/arc/arclib.a
  111. LOADADDR      += 0x80080000
  112. endif
  113. ifdef CONFIG_SGI_IP22
  114. LIBS          += arch/mips/sgi/kernel/sgikern.a arch/mips/arc/arclib.a
  115. SUBDIRS       += arch/mips/sgi/kernel arch/mips/arc
  116. #
  117. # Set LOADADDR to >= 0x88069000 if you want to leave space for symmon,
  118. # 0x88002000 for production kernels.  Note that the value must be
  119. # 8kb aligned or the handling of the current variable will break.
  120. #
  121. LOADADDR      += 0x88002000
  122. endif
  123. #
  124. # Baget/MIPS
  125. #
  126. ifdef CONFIG_BAGET_MIPS
  127. SUBDIRS       += arch/mips/baget arch/mips/baget/prom
  128. LIBS          += arch/mips/baget/baget.a arch/mips/baget/prom/bagetlib.a
  129. LOADADDR      += 0x80001000
  130. endif
  131. #
  132. # NEC DDB Vrc-5074
  133. #
  134. ifdef CONFIG_DDB5074
  135. SUBDIRS       += arch/mips/ddb5074
  136. LIBS          += arch/mips/ddb5074/ddb5074.a
  137. LOADADDR      += 0x80080000
  138. endif
  139. #
  140. # Orion Board
  141. #
  142. ifdef CONFIG_ORION
  143. LIBS          += arch/mips/orion/orionkern.a
  144. SUBDIRS       += arch/mips/orion
  145. LINKSCRIPT    = arch/mips/orion/ld.script.orion
  146. endif
  147. #
  148. # VR41XX-based devices
  149. #
  150. ifdef CONFIG_CPU_VR41XX
  151.   CORE_FILES    += arch/mips/vr41xx/vr41xx.o
  152.   SUBDIRS       += arch/mips/vr41xx
  153.   # Link kernel just above exception vectors (default).
  154.   LOADADDR      = 0x80001000
  155.   # arch/mips/config.in can provide .text and .data addresses.
  156.   ifdef CONFIG_LINK_TEXT
  157.     LOADADDR = $(CONFIG_LINK_TEXT)
  158.   endif
  159.   ifdef CONFIG_LINK_DATA
  160.     DATAADDR = $(CONFIG_LINK_DATA)
  161.   endif
  162.   ifdef CONFIG_XIP_ROM
  163.     ifndef CONFIG_LINK_TEXT
  164.       # For XIP ROM, .text address is likely to vary from platform to platform,
  165.       # and even from device to device depending on ROM configuration,
  166.       # so instead of providing a default and giving a potententially
  167.       # false sense of well-being, cause an error instead.
  168.       LOADADDR = Error_no_link_text_address_specified_for_xip_rom.
  169.     endif
  170.     LINKSCRIPT    = arch/mips/vr41xx/rom.lds
  171.   endif
  172. endif
  173. #
  174. # R39XX-based devices
  175. #
  176. ifdef CONFIG_CPU_R39XX
  177. CORE_FILES    += arch/mips/r39xx/r39xx.o
  178. SUBDIRS       += arch/mips/r39xx arch/mips/r39xx/prom
  179. LIBS          += arch/mips/r39xx/prom/r39xxlib.a
  180. ifdef CONFIG_VTECH_HELIO
  181.   ifndef CONFIG_XIP_ROM
  182.     # This is really a condition on whether we plan to use hfload.  Fix later.
  183.     # Stay away from the bootloader.
  184.     LOADADDR      += 0x80004000
  185.   else
  186.     LOADADDR      = 0x80000000
  187.     # arch/mips/config.in can provide .text and .data addresses.
  188.     ifdef CONFIG_LINK_TEXT
  189.       LOADADDR = $(CONFIG_LINK_TEXT)
  190.     endif
  191.     ifdef CONFIG_LINK_DATA
  192.       DATAADDR = $(CONFIG_LINK_DATA)
  193.     endif
  194.     ifndef CONFIG_LINK_TEXT
  195.       # For XIP ROM, .text address is likely to vary from platform to platform,
  196.       # and even from device to device depending on ROM configuration,
  197.       # so instead of providing a default and giving a potententially
  198.       # false sense of well-being, cause an error instead.
  199.       LOADADDR = Error_no_link_text_address_specified_for_xip_rom.
  200.     endif
  201.     LINKSCRIPT    = arch/mips/r39xx/rom.lds
  202.   endif
  203. endif
  204. endif
  205. # Choosing incompatible machines durings configuration will result in
  206. # error messages during linking.  Select a default linkscript if
  207. # none has been choosen above.
  208. #
  209. ifndef LINKSCRIPT
  210. ifndef CONFIG_CPU_LITTLE_ENDIAN
  211. LINKSCRIPT    = arch/mips/ld.script.big
  212. else
  213. LINKSCRIPT    = arch/mips/ld.script.little
  214. endif
  215. endif
  216. LINKFLAGS     += -T $(word 1,$(LINKSCRIPT))
  217. ifdef LOADADDR
  218. LINKFLAGS     += -Ttext $(word 1,$(LOADADDR))
  219. endif
  220. ifdef DATAADDR
  221. LINKFLAGS     += -Tdata $(word 1,$(DATAADDR))
  222. endif