| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | # | 
| Paul Mundt | c2f1755 | 2007-11-21 22:13:34 +0900 | [diff] [blame] | 2 | # arch/sh/Makefile | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 3 | # | 
|  | 4 | # Copyright (C) 1999  Kaz Kojima | 
|  | 5 | # Copyright (C) 2002, 2003, 2004  Paul Mundt | 
|  | 6 | # Copyright (C) 2002  M. R. Brown | 
|  | 7 | # | 
| Paul Mundt | c2f1755 | 2007-11-21 22:13:34 +0900 | [diff] [blame] | 8 | # This file is subject to the terms and conditions of the GNU General Public | 
|  | 9 | # License.  See the file "COPYING" in the main directory of this archive | 
|  | 10 | # for more details. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 11 | # | 
| Paul Mundt | cad8244 | 2006-01-16 22:14:19 -0800 | [diff] [blame] | 12 | isa-y					:= any | 
| Paul Mundt | e5723e0 | 2006-09-27 17:38:11 +0900 | [diff] [blame] | 13 | isa-$(CONFIG_SH_DSP)			:= sh | 
| Paul Mundt | cad8244 | 2006-01-16 22:14:19 -0800 | [diff] [blame] | 14 | isa-$(CONFIG_CPU_SH2)			:= sh2 | 
| Paul Mundt | e5723e0 | 2006-09-27 17:38:11 +0900 | [diff] [blame] | 15 | isa-$(CONFIG_CPU_SH2A)			:= sh2a | 
| Paul Mundt | cad8244 | 2006-01-16 22:14:19 -0800 | [diff] [blame] | 16 | isa-$(CONFIG_CPU_SH3)			:= sh3 | 
|  | 17 | isa-$(CONFIG_CPU_SH4)			:= sh4 | 
|  | 18 | isa-$(CONFIG_CPU_SH4A)			:= sh4a | 
| Paul Mundt | e5723e0 | 2006-09-27 17:38:11 +0900 | [diff] [blame] | 19 | isa-$(CONFIG_CPU_SH4AL_DSP)		:= sh4al | 
| Paul Mundt | c20c200 | 2007-11-08 18:52:35 +0900 | [diff] [blame] | 20 | isa-$(CONFIG_CPU_SH5)			:= shmedia | 
| Paul Mundt | cad8244 | 2006-01-16 22:14:19 -0800 | [diff] [blame] | 21 | isa-$(CONFIG_SH_DSP)			:= $(isa-y)-dsp | 
|  | 22 |  | 
| Paul Mundt | e5723e0 | 2006-09-27 17:38:11 +0900 | [diff] [blame] | 23 | ifndef CONFIG_SH_DSP | 
| Paul Mundt | cad8244 | 2006-01-16 22:14:19 -0800 | [diff] [blame] | 24 | ifndef CONFIG_SH_FPU | 
|  | 25 | isa-y			:= $(isa-y)-nofpu | 
|  | 26 | endif | 
| Paul Mundt | e5723e0 | 2006-09-27 17:38:11 +0900 | [diff] [blame] | 27 | endif | 
| Paul Mundt | cad8244 | 2006-01-16 22:14:19 -0800 | [diff] [blame] | 28 |  | 
| Paul Mundt | da2f5f7 | 2007-08-21 16:56:56 +0900 | [diff] [blame] | 29 | isa-y			:= $(isa-y)-up | 
|  | 30 |  | 
| Paul Mundt | 6240d92 | 2007-06-01 17:25:42 +0900 | [diff] [blame] | 31 | cflags-$(CONFIG_CPU_SH2)		:= $(call cc-option,-m2,) | 
| Paul Mundt | aab1b16 | 2007-07-12 09:48:54 +0900 | [diff] [blame] | 32 | cflags-$(CONFIG_CPU_SH2A)		+= $(call cc-option,-m2a,) \ | 
| Paul Mundt | 6240d92 | 2007-06-01 17:25:42 +0900 | [diff] [blame] | 33 | $(call cc-option,-m2a-nofpu,) | 
|  | 34 | cflags-$(CONFIG_CPU_SH3)		:= $(call cc-option,-m3,) | 
|  | 35 | cflags-$(CONFIG_CPU_SH4)		:= $(call cc-option,-m4,) \ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 36 | $(call cc-option,-mno-implicit-fp,-m4-nofpu) | 
| Paul Mundt | aab1b16 | 2007-07-12 09:48:54 +0900 | [diff] [blame] | 37 | cflags-$(CONFIG_CPU_SH4A)		+= $(call cc-option,-m4a,) \ | 
| Paul Mundt | 6240d92 | 2007-06-01 17:25:42 +0900 | [diff] [blame] | 38 | $(call cc-option,-m4a-nofpu,) | 
| Paul Mundt | c20c200 | 2007-11-08 18:52:35 +0900 | [diff] [blame] | 39 | cflags-$(CONFIG_CPU_SH5)		:= $(call cc-option,-m5-32media-nofpu,) | 
| Paul Mundt | 5364408 | 2006-11-21 11:12:19 +0900 | [diff] [blame] | 40 |  | 
|  | 41 | cflags-$(CONFIG_CPU_BIG_ENDIAN)		+= -mb | 
|  | 42 | cflags-$(CONFIG_CPU_LITTLE_ENDIAN)	+= -ml | 
|  | 43 |  | 
| Paul Mundt | e509013 | 2008-06-09 16:49:43 +0900 | [diff] [blame] | 44 | cflags-y	+= $(call cc-option,-mno-fdpic) | 
|  | 45 |  | 
| Paul Mundt | da2f5f7 | 2007-08-21 16:56:56 +0900 | [diff] [blame] | 46 | # | 
|  | 47 | # -Wa,-isa= tuning implies -Wa,-dsp for the versions of binutils that | 
|  | 48 | # support it, while -Wa,-dsp by itself limits the range of usable opcodes | 
|  | 49 | # on certain CPU subtypes. Try the ISA variant first, and if that fails, | 
|  | 50 | # fall back on -Wa,-dsp for the old binutils versions. Even without DSP | 
|  | 51 | # opcodes, we always want the best ISA tuning the version of binutils | 
|  | 52 | # will provide. | 
|  | 53 | # | 
|  | 54 | isaflags-y	:= $(call as-option,-Wa$(comma)-isa=$(isa-y),) | 
|  | 55 |  | 
|  | 56 | isaflags-$(CONFIG_SH_DSP)		:= \ | 
|  | 57 | $(call as-option,-Wa$(comma)-isa=$(isa-y),-Wa$(comma)-dsp) | 
|  | 58 |  | 
|  | 59 | cflags-y	+= $(isaflags-y) -ffreestanding | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 60 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 61 | cflags-$(CONFIG_MORE_COMPILE_OPTIONS)	+= \ | 
|  | 62 | $(shell echo $(CONFIG_COMPILE_OPTIONS) | sed -e 's/"//g') | 
|  | 63 |  | 
| Paul Mundt | c2f1755 | 2007-11-21 22:13:34 +0900 | [diff] [blame] | 64 | OBJCOPYFLAGS	:= -O binary -R .note -R .note.gnu.build-id -R .comment \ | 
|  | 65 | -R .stab -R .stabstr -S | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 66 |  | 
| Paul Mundt | c2f1755 | 2007-11-21 22:13:34 +0900 | [diff] [blame] | 67 | # Give the various platforms the opportunity to set default image types | 
| Paul Mundt | 35a7449 | 2007-11-23 13:54:34 +0900 | [diff] [blame] | 68 | defaultimage-$(CONFIG_SUPERH32)	:= zImage | 
| Paul Mundt | c2f1755 | 2007-11-21 22:13:34 +0900 | [diff] [blame] | 69 |  | 
|  | 70 | # Set some sensible Kbuild defaults | 
| Paul Mundt | cfb81f3 | 2008-07-29 20:19:43 +0900 | [diff] [blame] | 71 | KBUILD_DEFCONFIG	:= shx3_defconfig | 
| Paul Mundt | c2f1755 | 2007-11-21 22:13:34 +0900 | [diff] [blame] | 72 | KBUILD_IMAGE		:= $(defaultimage-y) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 73 |  | 
|  | 74 | # | 
|  | 75 | # Choosing incompatible machines durings configuration will result in | 
|  | 76 | # error messages during linking. | 
|  | 77 | # | 
| Paul Mundt | b4db3ae | 2007-11-20 15:38:11 +0900 | [diff] [blame] | 78 | ifdef CONFIG_SUPERH32 | 
|  | 79 | LDFLAGS_vmlinux	+= -e _stext | 
|  | 80 | else | 
| Paul Mundt | 36763b2 | 2007-11-21 15:34:33 +0900 | [diff] [blame] | 81 | LDFLAGS_vmlinux	+= --defsym phys_stext=_stext-$(CONFIG_PAGE_OFFSET) \ | 
| Paul Mundt | b4db3ae | 2007-11-20 15:38:11 +0900 | [diff] [blame] | 82 | --defsym phys_stext_shmedia=phys_stext+1 \ | 
|  | 83 | -e phys_stext_shmedia | 
|  | 84 | endif | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 85 |  | 
|  | 86 | ifdef CONFIG_CPU_LITTLE_ENDIAN | 
|  | 87 | LDFLAGS_vmlinux		+= --defsym 'jiffies=jiffies_64' | 
|  | 88 | LDFLAGS			+= -EL | 
|  | 89 | else | 
|  | 90 | LDFLAGS_vmlinux		+= --defsym 'jiffies=jiffies_64+4' | 
|  | 91 | LDFLAGS			+= -EB | 
|  | 92 | endif | 
|  | 93 |  | 
| Paul Mundt | 4c91d6b | 2007-11-11 17:41:56 +0900 | [diff] [blame] | 94 | head-y			:= arch/sh/kernel/init_task.o | 
|  | 95 | head-$(CONFIG_SUPERH32)	+= arch/sh/kernel/head_32.o | 
|  | 96 | head-$(CONFIG_SUPERH64)	+= arch/sh/kernel/head_64.o | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 97 |  | 
| Sam Ravnborg | a0f97e0 | 2007-10-14 22:21:35 +0200 | [diff] [blame] | 98 | LIBGCC := $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 99 |  | 
|  | 100 | core-y				+= arch/sh/kernel/ arch/sh/mm/ | 
| Takashi YOSHII | 4b56568 | 2006-09-27 17:15:32 +0900 | [diff] [blame] | 101 | core-$(CONFIG_SH_FPU_EMU)	+= arch/sh/math-emu/ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 102 |  | 
| Paul Mundt | 939a24a | 2008-07-29 21:41:37 +0900 | [diff] [blame] | 103 | # Boards and Mach groups | 
|  | 104 | machdir-$(CONFIG_SOLUTION_ENGINE)		+= mach-se | 
| Paul Mundt | da2014a | 2008-07-29 21:01:19 +0900 | [diff] [blame] | 105 | machdir-$(CONFIG_SH_HP6XX)			+= mach-hp6xx | 
|  | 106 | machdir-$(CONFIG_SH_DREAMCAST)			+= mach-dreamcast | 
|  | 107 | machdir-$(CONFIG_SH_SH03)			+= mach-sh03 | 
|  | 108 | machdir-$(CONFIG_SH_SECUREEDGE5410)		+= mach-snapgear | 
|  | 109 | machdir-$(CONFIG_SH_RTS7751R2D)			+= mach-r2d | 
|  | 110 | machdir-$(CONFIG_SH_7751_SYSTEMH)		+= mach-systemh | 
|  | 111 | machdir-$(CONFIG_SH_EDOSK7705)			+= mach-edosk7705 | 
|  | 112 | machdir-$(CONFIG_SH_HIGHLANDER)			+= mach-highlander | 
|  | 113 | machdir-$(CONFIG_SH_MIGOR)			+= mach-migor | 
|  | 114 | machdir-$(CONFIG_SH_SDK7780)			+= mach-sdk7780 | 
|  | 115 | machdir-$(CONFIG_SH_X3PROTO)			+= mach-x3proto | 
|  | 116 | machdir-$(CONFIG_SH_RSK7203)			+= mach-rsk7203 | 
|  | 117 | machdir-$(CONFIG_SH_AP325RXA)			+= mach-ap325rxa | 
|  | 118 | machdir-$(CONFIG_SH_SH7763RDP)			+= mach-sh7763rdp | 
|  | 119 | machdir-$(CONFIG_SH_SH7785LCR)			+= mach-sh7785lcr | 
|  | 120 | machdir-$(CONFIG_SH_SH4202_MICRODEV)		+= mach-microdev | 
|  | 121 | machdir-$(CONFIG_SH_LANDISK)			+= mach-landisk | 
|  | 122 | machdir-$(CONFIG_SH_TITAN)			+= mach-titan | 
|  | 123 | machdir-$(CONFIG_SH_SHMIN)			+= mach-shmin | 
|  | 124 | machdir-$(CONFIG_SH_LBOX_RE2)			+= mach-lboxre2 | 
|  | 125 | machdir-$(CONFIG_SH_MAGIC_PANEL_R2)		+= mach-magicpanelr2 | 
|  | 126 | machdir-$(CONFIG_SH_CAYMAN)			+= mach-cayman | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 127 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 128 | ifneq ($(machdir-y),) | 
| Paul Mundt | 25f8151 | 2007-05-14 19:12:37 +0900 | [diff] [blame] | 129 | core-y	+= $(addprefix arch/sh/boards/, \ | 
|  | 130 | $(filter-out ., $(patsubst %,%/,$(machdir-y)))) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 131 | endif | 
|  | 132 |  | 
|  | 133 | # Companion chips | 
| Kristoffer Ericson | 4aafae27 | 2007-07-17 13:52:38 +0900 | [diff] [blame] | 134 | core-$(CONFIG_HD6446X_SERIES)	+= arch/sh/cchips/hd6446x/ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 135 |  | 
| Paul Mundt | 93dc544 | 2008-07-29 22:46:55 +0900 | [diff] [blame^] | 136 | # | 
|  | 137 | # CPU header paths | 
|  | 138 | # | 
|  | 139 | # These are ordered by optimization level. A CPU family that is a subset | 
|  | 140 | # of another (ie, SH-2A / SH-2), is picked up first, with increasing | 
|  | 141 | # levels of genericness if nothing more suitable is situated in the | 
|  | 142 | # hierarchy. | 
|  | 143 | # | 
|  | 144 | # As an example, in order of preference, SH-2A > SH-2 > common definitions. | 
|  | 145 | # | 
|  | 146 | cpuincdir-$(CONFIG_CPU_SH2A)	+= cpu-sh2a | 
|  | 147 | cpuincdir-$(CONFIG_CPU_SH2)	+= cpu-sh2 | 
|  | 148 | cpuincdir-$(CONFIG_CPU_SH3)	+= cpu-sh3 | 
|  | 149 | cpuincdir-$(CONFIG_CPU_SH4)	+= cpu-sh4 | 
|  | 150 | cpuincdir-$(CONFIG_CPU_SH5)	+= cpu-sh5 | 
|  | 151 | cpuincdir-y			+= cpu-common	# Must be last | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 152 |  | 
| Paul Mundt | c20c200 | 2007-11-08 18:52:35 +0900 | [diff] [blame] | 153 | libs-$(CONFIG_SUPERH32)		:= arch/sh/lib/	$(libs-y) | 
|  | 154 | libs-$(CONFIG_SUPERH64)		:= arch/sh/lib64/ $(libs-y) | 
|  | 155 | libs-y				+= $(LIBGCC) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 156 |  | 
|  | 157 | drivers-y			+= arch/sh/drivers/ | 
|  | 158 | drivers-$(CONFIG_OPROFILE)	+= arch/sh/oprofile/ | 
|  | 159 |  | 
|  | 160 | boot := arch/sh/boot | 
|  | 161 |  | 
| Paul Mundt | 93dc544 | 2008-07-29 22:46:55 +0900 | [diff] [blame^] | 162 | cflags-y	+= $(foreach d, $(cpuincdir-y), -Iarch/sh/include/$(d)) \ | 
|  | 163 | $(foreach d, $(machdir-y), -Iarch/sh/include/$(d)) | 
| Paul Mundt | cad8244 | 2006-01-16 22:14:19 -0800 | [diff] [blame] | 164 |  | 
| Paul Mundt | f15cbe6 | 2008-07-29 08:09:44 +0900 | [diff] [blame] | 165 | KBUILD_CFLAGS		+= -pipe $(cflags-y) | 
|  | 166 | KBUILD_CPPFLAGS		+= $(cflags-y) | 
|  | 167 | KBUILD_AFLAGS		+= $(cflags-y) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 168 |  | 
| Paul Smith | 4f19336 | 2006-03-05 17:14:10 -0500 | [diff] [blame] | 169 | PHONY += maketools FORCE | 
| Paul Mundt | d088f32 | 2007-11-21 22:28:28 +0900 | [diff] [blame] | 170 |  | 
| Sam Ravnborg | cca6e6f | 2005-09-09 20:28:49 +0200 | [diff] [blame] | 171 | maketools:  include/linux/version.h FORCE | 
| Paul Mundt | f15cbe6 | 2008-07-29 08:09:44 +0900 | [diff] [blame] | 172 | $(Q)$(MAKE) $(build)=arch/sh/tools arch/sh/include/asm/machtypes.h | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 173 |  | 
| Paul Mundt | c2f1755 | 2007-11-21 22:13:34 +0900 | [diff] [blame] | 174 | all: $(KBUILD_IMAGE) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 175 |  | 
| Paul Mundt | cf00e20 | 2006-12-07 17:00:32 +0900 | [diff] [blame] | 176 | zImage uImage uImage.srec vmlinux.srec: vmlinux | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 177 | $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ | 
|  | 178 |  | 
|  | 179 | compressed: zImage | 
|  | 180 |  | 
| Paul Mundt | f15cbe6 | 2008-07-29 08:09:44 +0900 | [diff] [blame] | 181 | archprepare: maketools arch/sh/lib64/syscalltab.h | 
| Paul Mundt | d088f32 | 2007-11-21 22:28:28 +0900 | [diff] [blame] | 182 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 183 | archclean: | 
|  | 184 | $(Q)$(MAKE) $(clean)=$(boot) | 
|  | 185 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 186 | define archhelp | 
| Paul Mundt | cf00e20 | 2006-12-07 17:00:32 +0900 | [diff] [blame] | 187 | @echo '* zImage 	           - Compressed kernel image' | 
|  | 188 | @echo '  vmlinux.srec	           - Create an ELF S-record' | 
|  | 189 | @echo '  uImage  	           - Create a bootable image for U-Boot' | 
|  | 190 | @echo '  uImage.srec  	           - Create an S-record for U-Boot' | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 191 | endef | 
| Paul Mundt | d088f32 | 2007-11-21 22:28:28 +0900 | [diff] [blame] | 192 |  | 
|  | 193 | define filechk_gen-syscalltab | 
|  | 194 | (set -e; \ | 
|  | 195 | echo "/*"; \ | 
|  | 196 | echo " * DO NOT MODIFY."; \ | 
|  | 197 | echo " *"; \ | 
|  | 198 | echo " * This file was generated by arch/sh/Makefile"; \ | 
|  | 199 | echo " * Any changes will be reverted at build time."; \ | 
|  | 200 | echo " */"; \ | 
|  | 201 | echo ""; \ | 
|  | 202 | echo "#ifndef __SYSCALLTAB_H"; \ | 
|  | 203 | echo "#define __SYSCALLTAB_H"; \ | 
|  | 204 | echo ""; \ | 
|  | 205 | echo "#include <linux/kernel.h>"; \ | 
|  | 206 | echo ""; \ | 
|  | 207 | echo "struct syscall_info {"; \ | 
|  | 208 | echo "	const char *name;"; \ | 
|  | 209 | echo "} syscall_info_table[] = {"; \ | 
|  | 210 | sed -e '/^.*\.long /!d;s//	{ "/;s/\(\([^/]*\)\/\)\{1\}.*/\2/; \ | 
|  | 211 | s/[ \t]*$$//g;s/$$/" },/;s/\("\)sys_/\1/g'; \ | 
|  | 212 | echo "};"; \ | 
|  | 213 | echo ""; \ | 
|  | 214 | echo "#define NUM_SYSCALL_INFO_ENTRIES ARRAY_SIZE(syscall_info_table)";\ | 
|  | 215 | echo ""; \ | 
|  | 216 | echo "#endif /* __SYSCALLTAB_H */" ) | 
|  | 217 | endef | 
|  | 218 |  | 
|  | 219 | arch/sh/lib64/syscalltab.h: arch/sh/kernel/syscalls_64.S | 
|  | 220 | $(call filechk,gen-syscalltab) | 
|  | 221 |  | 
|  | 222 | CLEAN_FILES += arch/sh/lib64/syscalltab.h \ | 
| Paul Mundt | f15cbe6 | 2008-07-29 08:09:44 +0900 | [diff] [blame] | 223 | arch/sh/include/asm/machtypes.h |