1 1.21 yamt # $NetBSD: Makefile.xen,v 1.21 2008/01/01 11:35:33 yamt Exp $ 2 1.1 cl # NetBSD: Makefile.i386,v 1.132 2003/07/05 16:56:10 simonb Exp 3 1.1 cl 4 1.1 cl # Makefile for NetBSD 5 1.1 cl # 6 1.1 cl # This makefile is constructed from a machine description: 7 1.1 cl # config machineid 8 1.1 cl # Most changes should be made in the machine description 9 1.1 cl # /sys/arch/xen/conf/``machineid'' 10 1.1 cl # after which you should do 11 1.1 cl # config machineid 12 1.1 cl # Machine generic makefile changes should be made in 13 1.1 cl # /sys/arch/xen/conf/Makefile.xen 14 1.1 cl # after which config should be rerun for all machines of that type. 15 1.1 cl # 16 1.1 cl # To specify debugging, add the config line: makeoptions DEBUG="-g" 17 1.1 cl # A better way is to specify -g only for a few files. 18 1.1 cl # 19 1.1 cl # makeoptions DEBUGLIST="uvm* trap if_*" 20 1.1 cl 21 1.2 cl .include "$S/arch/xen/conf/Makefile.arch.inc" 22 1.1 cl USETOOLS?= no 23 1.1 cl NEED_OWN_INSTALL_TARGET?=no 24 1.1 cl .include <bsd.own.mk> 25 1.1 cl 26 1.1 cl ## 27 1.1 cl ## (1) port identification 28 1.1 cl ## 29 1.1 cl XEN= $S/arch/xen 30 1.10 yamt I386= $S/arch/i386 31 1.20 bouyer AMD64= $S/arch/amd64 32 1.20 bouyer .if ${XEN_BUILD} == "i386" 33 1.20 bouyer GENASSYM_CONF= $S/arch/xen/i386/genassym.cf 34 1.20 bouyer .else 35 1.20 bouyer GENASSYM_CONF= $S/arch/${XEN_BUILD}/${XEN_BUILD}/genassym.cf 36 1.20 bouyer .endif 37 1.20 bouyer 38 1.20 bouyer .if ${XEN_BUILD} == "amd64" 39 1.20 bouyer ARCH_INC= $S/arch/xen/include/amd64 40 1.20 bouyer .elif ${XEN_BUILD} == "i386" 41 1.20 bouyer ARCH_INC= $S/arch/xen/include 42 1.20 bouyer .endif 43 1.1 cl 44 1.1 cl ## 45 1.1 cl ## (2) compile settings 46 1.1 cl ## 47 1.20 bouyer DEFCOPTS= -O2 48 1.2 cl CPPFLAGS+= -D${XEN_BUILD} 49 1.19 ad AFLAGS+= -x assembler-with-cpp -traditional-cpp ${DBG} -D__XEN__ 50 1.1 cl EXTRA_INCLUDES= -I${.CURDIR}/xen-ma 51 1.1 cl 52 1.20 bouyer .if ${XEN_BUILD} == "amd64" 53 1.20 bouyer CPPFLAGS+= -Dx86_64 54 1.20 bouyer CFLAGS+= -mcmodel=kernel 55 1.20 bouyer CFLAGS+= -mno-red-zone 56 1.20 bouyer .endif 57 1.20 bouyer 58 1.20 bouyer 59 1.1 cl ## 60 1.1 cl ## (3) libkern and compat 61 1.1 cl ## 62 1.1 cl KERN_AS= obj 63 1.1 cl 64 1.1 cl ## 65 1.1 cl ## (4) local objects, compile rules, and dependencies 66 1.1 cl ## 67 1.20 bouyer MD_OBJS= locore.o spl.o copy.o vector.o 68 1.1 cl MD_CFILES= 69 1.20 bouyer 70 1.20 bouyer .if ${XEN_BUILD} == i386 71 1.10 yamt MD_SFILES= ${XEN}/${XEN_BUILD}/locore.S \ 72 1.10 yamt ${XEN}/${XEN_BUILD}/spl.S \ 73 1.20 bouyer ${XEN}/${XEN_BUILD}/vector.S \ 74 1.20 bouyer ${I386}/i386/copy.S 75 1.10 yamt 76 1.10 yamt copy.o: ${I386}/i386/copy.S assym.h 77 1.10 yamt ${NORMAL_S} 78 1.10 yamt 79 1.2 cl locore.o: ${XEN}/${XEN_BUILD}/locore.S assym.h 80 1.1 cl ${NORMAL_S} 81 1.1 cl 82 1.2 cl spl.o: ${XEN}/${XEN_BUILD}/spl.S assym.h 83 1.1 cl ${NORMAL_S} 84 1.1 cl 85 1.2 cl vector.o: ${XEN}/${XEN_BUILD}/vector.S assym.h 86 1.1 cl ${NORMAL_S} 87 1.20 bouyer .elif ${XEN_BUILD} == amd64 88 1.20 bouyer MD_SFILES= ${AMD64}/amd64/locore.S \ 89 1.20 bouyer ${AMD64}/amd64/spl.S \ 90 1.20 bouyer ${AMD64}/amd64/copy.S \ 91 1.20 bouyer ${AMD64}/amd64/vector.S 92 1.20 bouyer 93 1.20 bouyer locore.o: ${AMD64}/amd64/locore.S assym.h 94 1.20 bouyer ${NORMAL_S} 95 1.20 bouyer 96 1.20 bouyer spl.o: ${AMD64}/amd64/spl.S assym.h 97 1.20 bouyer ${NORMAL_S} 98 1.20 bouyer 99 1.20 bouyer copy.o: ${AMD64}/amd64/copy.S assym.h 100 1.20 bouyer ${NORMAL_S} 101 1.20 bouyer 102 1.20 bouyer vector.o: ${AMD64}/amd64/vector.S assym.h 103 1.20 bouyer ${NORMAL_S} 104 1.20 bouyer .endif 105 1.1 cl 106 1.7 sjg .ifndef noBEGIN 107 1.1 cl .if !make(obj) && !make(clean) && !make(cleandir) 108 1.1 cl .BEGIN: 109 1.2 cl .for A in ${XEN_MACHINE_ARCHS} 110 1.2 cl rm -f ${A} 111 1.2 cl ln -s $S/arch/${A}/include ${A} 112 1.2 cl .endfor 113 1.5 jmc -rm -rf xen-ma 114 1.1 cl mkdir xen-ma 115 1.3 cl ln -s ../${XEN_BUILD} xen-ma/machine 116 1.20 bouyer rm -f machine 117 1.20 bouyer ln -s ${ARCH_INC} machine 118 1.1 cl .endif 119 1.7 sjg .endif 120 1.1 cl 121 1.1 cl ## 122 1.1 cl ## (5) link settings 123 1.1 cl ## 124 1.20 bouyer .if ${XEN_BUILD} == i386 125 1.20 bouyer TEXTADDR?= 0xc0100000 126 1.20 bouyer .elif ${XEN_BUILD} == amd64 127 1.20 bouyer TEXTADDR?= 0xffffffff80100000 128 1.20 bouyer .endif 129 1.1 cl LINKFLAGS_NORMAL= -X 130 1.1 cl .if (${OBJECT_FMT} == "ELF") 131 1.18 pavel KERN_LDSCRIPT?= kern.ldscript.Xen 132 1.2 cl LINKFORMAT= -T $S/arch/${XEN_BUILD}/conf/${KERN_LDSCRIPT} 133 1.1 cl .else 134 1.1 cl LINKFORMAT= -z 135 1.1 cl .endif 136 1.1 cl 137 1.1 cl ## 138 1.1 cl ## (6) port specific target dependencies 139 1.1 cl ## 140 1.1 cl 141 1.20 bouyer .if ${XEN_BUILD} == i386 142 1.1 cl freebsd_sigcode.o ibcs2_sigcode.o linux_sigcode.o: assym.h 143 1.1 cl svr4_sigcode.o mach_sigcode.o: assym.h 144 1.1 cl apmcall.o in_cksum.o pnpbioscall.o bioscall.o: assym.h 145 1.1 cl mptramp.o: assym.h 146 1.20 bouyer .elif ${XEN_BUILD} == amd64 147 1.20 bouyer locore.o machdep.o: Makefile 148 1.21 yamt netbsd32_sigcode.o: assym.h 149 1.20 bouyer .endif 150 1.21 yamt busfunc.o cpufunc.o: assym.h 151 1.1 cl clock.o: config_time.h 152 1.1 cl 153 1.1 cl ## 154 1.1 cl ## (7) misc settings 155 1.1 cl ## 156 1.1 cl 157 1.1 cl ## 158 1.1 cl ## (8) config(8) generated machinery 159 1.1 cl ## 160 1.1 cl %INCLUDES 161 1.1 cl 162 1.1 cl %OBJS 163 1.1 cl 164 1.1 cl %CFILES 165 1.1 cl 166 1.1 cl %SFILES 167 1.1 cl 168 1.1 cl %LOAD 169 1.1 cl 170 1.1 cl %RULES 171 1.1 cl 172 1.16 gdamore ## Include rules for Atheros WLAN 173 1.16 gdamore .include "$S/contrib/dev/ath/netbsd/Makefile.ath.inc" 174 1.8 chs 175 1.1 cl ## 176 1.1 cl ## (9) port independent kernel machinery 177 1.1 cl ## 178 1.1 cl .include "$S/conf/Makefile.kern.inc" 179 1.4 thorpej 180 1.4 thorpej ## 181 1.4 thorpej ## (10) Appending make options. 182 1.4 thorpej ## 183 1.4 thorpej %MAKEOPTIONSAPPEND 184