Makefile
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:5k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. #
  2. # This file is subject to the terms and conditions of the GNU General Public
  3. # License.  See the file "COPYING" in the main directory of this archive
  4. # for more details.
  5. #
  6. # This file is included by the global makefile so that you can add your own
  7. # architecture-specific flags and dependencies. Remember to do have actions
  8. # for "archclean" and "archdep" for cleaning up and making dependencies for
  9. # this architecture
  10. #
  11. #
  12. # Select the object file format to substitute into the linker script.
  13. #
  14. CPP=$(CC) -E
  15. ifdef CONFIG_CPU_LITTLE_ENDIAN
  16. tool-prefix = mips64el-linux-
  17. else
  18. tool-prefix = mips64-linux-
  19. endif
  20. ifdef CONFIG_CROSSCOMPILE
  21. CROSS_COMPILE  = $(tool-prefix)
  22. endif
  23. #
  24. # The ELF GCC uses -G0 -mabicalls -fpic as default.  We don't need PIC
  25. # code in the kernel since it only slows down the whole thing.  For the
  26. # old GCC these options are just the defaults.  At some point we might
  27. # make use of global pointer optimizations.
  28. #
  29. # The DECStation requires an ECOFF kernel for remote booting, other MIPS
  30. # machines may also.  Since BFD is incredibly buggy with respect to
  31. # crossformat linking we rely on the elf2ecoff tool for format conversion.
  32. #
  33. CFLAGS += -I $(TOPDIR)/include/asm/gcc $(CFLAGS)
  34. CFLAGS += -mabi=64 -G 0 -mno-abicalls -fno-pic -Wa,--trap -pipe
  35. LINKFLAGS += -G 0 -static # -N
  36. MODFLAGS += -mlong-calls
  37. ifdef CONFIG_REMOTE_DEBUG
  38. CFLAGS := $(CFLAGS) -g
  39. endif
  40. #
  41. # CPU-dependent compiler/assembler options for optimization.
  42. #
  43. ifdef CONFIG_CPU_R4300
  44. CFLAGS := $(CFLAGS) -mcpu=r4300 -mips3
  45. endif
  46. ifdef CONFIG_CPU_R4X00
  47. CFLAGS := $(CFLAGS) -mcpu=r4600 -mips3
  48. endif
  49. ifdef CONFIG_CPU_R5000
  50. CFLAGS := $(CFLAGS) -mcpu=r8000 -mips4
  51. endif
  52. ifdef CONFIG_CPU_NEVADA
  53. CFLAGS := $(CFLAGS) -mcpu=r8000 -mips3 -mmad
  54. endif
  55. ifdef CONFIG_CPU_R8000
  56. CFLAGS := $(CFLAGS) -mcpu=r8000 -mips4
  57. endif
  58. ifdef CONFIG_CPU_R10000
  59. CFLAGS := $(CFLAGS) -mcpu=r8000 -mips4
  60. endif
  61. ifdef CONFIG_MIPS_FPU_EMULATOR
  62. CORE_FILES += arch/mips64/math-emu/fpu_emulator.o
  63. SUBDIRS += arch/mips64/math-emu
  64. endif
  65. #
  66. # Board-dependent options and extra files
  67. #
  68. ifdef CONFIG_SGI_IP22
  69. LIBS          += arch/mips64/sgi-ip22/ip22.a arch/mips64/arc/arclib.a
  70. SUBDIRS       += arch/mips64/sgi-ip22 arch/mips64/arc
  71. #
  72. # Set LOADADDR to >= 0x88069000 if you want to leave space for symmon,
  73. # 0x88004000 for production kernels.  Note that the value must be
  74. # 16kb aligned or the handling of the current variable will break.
  75. #
  76. LOADADDR      += 0x88004000
  77. endif
  78. ifdef CONFIG_SGI_IP27
  79. CORE_FILES    += arch/mips64/sgi-ip27/ip27.o
  80. LIBS          += arch/mips64/arc/arclib.a
  81. SUBDIRS       += arch/mips64/sgi-ip27 arch/mips64/arc
  82. #
  83. # Set LOADADDR to >= 0xc000000000300000 if you want to leave space for
  84. # symmon, 0xc00000000001c000 for production kernels.  Note that the value
  85. # must be 16kb aligned or the handling of the current variable will break.
  86. #
  87. #LOADADDR      += 0xa80000000001c000
  88. ifdef CONFIG_MAPPED_KERNEL
  89. LOADADDR      += 0xc001c000
  90. else
  91. LOADADDR      += 0x8001c000
  92. endif
  93. endif
  94. ifdef CONFIG_SGI_IP32
  95. LIBS += arch/mips64/sgi-ip32/ip32-kern.a arch/mips64/arc/arclib.a
  96. SUBDIRS += arch/mips64/sgi-ip32 arch/mips64/arc
  97. #
  98. # Set LOADADDR to >= 0x????????? if you want to leave space for symmon,
  99. # 0x80002000 for production kernels.  Note that the value must be
  100. # 16kb aligned or the handling of the current variable will break.
  101. #
  102. LOADADDR += 0x80002000
  103. endif
  104. #
  105. # Some machines like the Indy need 32-bit ELF binaries for booting purposes.
  106. # Other need ECOFF, so we build a 32-bit ELF binary for them which we then
  107. # convert to ECOFF using elf2ecoff.
  108. #
  109. ifdef CONFIG_BOOT_ELF32
  110. CFLAGS += -Wa,-32
  111. LINKFLAGS += -T arch/mips64/ld.script.elf32
  112. endif
  113. #
  114. # The 64-bit ELF tools are pretty broken so at this time we generate 64-bit
  115. # ELF files from 32-bit files by conversion.
  116. #
  117. ifdef CONFIG_BOOT_ELF64
  118. CFLAGS += -Wa,-32
  119. LINKFLAGS += -T arch/mips64/ld.script.elf32
  120. #AS += -64
  121. #LD += -m elf64bmip
  122. #LINKFLAGS += -T arch/mips64/ld.script.elf64
  123. endif
  124. LINKFLAGS += -Ttext $(LOADADDR)
  125. HEAD := arch/mips64/kernel/head.o arch/mips64/kernel/init_task.o
  126. SUBDIRS := $(addprefix arch/mips64/, tools) $(SUBDIRS) $(addprefix arch/mips64/, kernel mm lib)
  127. CORE_FILES := arch/mips64/kernel/kernel.o arch/mips64/mm/mm.o $(CORE_FILES)
  128. LIBS := arch/mips64/lib/lib.a $(LIBS)
  129. MAKEBOOT = $(MAKE) -C arch/$(ARCH)/boot
  130. ifdef CONFIG_CPU_LITTLE_ENDIAN
  131. 64bit-bfd = elf64-littlemips
  132. else
  133. 64bit-bfd = elf64-bigmips
  134. endif
  135. vmlinux: arch/mips64/ld.script.elf32
  136. arch/mips64/ld.script.elf32: arch/mips64/ld.script.elf32.S
  137. $(CPP) -C -P -I$(HPATH) -imacros $(HPATH)/asm-mips64/sn/mapped_kernel.h -Umips arch/mips64/ld.script.elf32.S > arch/mips64/ld.script.elf32
  138. ifdef CONFIG_MAPPED_KERNEL
  139. vmlinux.64: vmlinux
  140. $(OBJCOPY) -O $(64bit-bfd) --change-addresses=0xbfffffff40000000 $< $@
  141. else
  142. vmlinux.64: vmlinux
  143. $(OBJCOPY) -O $(64bit-bfd) --change-addresses=0xa7ffffff80000000 $< $@
  144. endif
  145. zImage: vmlinux
  146. @$(MAKEBOOT) zImage
  147. compressed: zImage
  148. zdisk: vmlinux
  149. @$(MAKEBOOT) zdisk
  150. archclean:
  151. @$(MAKEBOOT) clean
  152. $(MAKE) -C arch/$(ARCH)/tools clean
  153. rm -f vmlinux.64 arch/$(ARCH)/ld.script.elf32
  154. archmrproper:
  155. @$(MAKEBOOT) mrproper
  156. $(MAKE) -C arch/$(ARCH)/tools mrproper
  157. archdep:
  158. if [ ! -f $(TOPDIR)/include/asm-$(ARCH)/offset.h ]; then 
  159.  touch $(TOPDIR)/include/asm-$(ARCH)/offset.h; 
  160. fi;
  161. @$(MAKEBOOT) dep