Makefile.usermode revision 1.24
1# $NetBSD: Makefile.usermode,v 1.24 2011/09/16 11:28:36 jmcneill Exp $ 2 3OPT_CPU_HOST= %CPU_HOST% 4.if !empty(OPT_CPU_HOST) 5MACHINE_ARCH= ${OPT_CPU_HOST} 6.else 7MACHINE_ARCH= usermode 8.endif 9USETOOLS?= no 10NEED_OWN_INSTALL_TARGET?= no 11.include <bsd.own.mk> 12 13## 14## (1) port identification 15## 16USERMODE= $S/arch/usermode 17GENASSYM_CONF= ${USERMODE}/usermode/genassym.cf 18 19## 20## (2) compile settings 21## 22USERMODE_HOSTOS!=uname -s 23USERMODE_HOSTMACHINE!=uname -m 24USERMODE_LIBS= -lc -lrt 25USERMODE_CPPFLAGS=${DEBUG} -U_KERNEL -I/usr/include 26USERMODE_CPPFLAGS+=${CWARNFLAGS} ${NOGCCERROR:D:U-Werror} 27 28.if ${USERMODE_HOSTOS} == "Linux" 29USERMODE_LIBS+= -lpthread 30CPPFLAGS+=-Dstrtoul=netbsd_strtoul 31CPPFLAGS+=-Dstrtoll=netbsd_strtoll 32CPPFLAGS+=-Dstrtoull=netbsd_strtoull 33CPPFLAGS+=-D__NetBSD__ -Wno-unused-but-set-variable 34.endif 35 36DEFCOPTS= -fno-omit-frame-pointer 37CPPFLAGS+= -Dusermode 38CPPFLAGS.init_main.c+= -Dmain=kernmain 39 40OPT_SDL= %SDL% 41OPT_URKELVISOR= %URKELVISOR% 42 43.if !empty(OPT_SDL) 44SDL_CFLAGS!= sdl-config --cflags 45SDL_LIBS!= sdl-config --libs 46USERMODE_LIBS+= -Wl,-Bdynamic ${SDL_LIBS} 47.endif 48 49CPPFLAGS.thunk.c+= ${USERMODE_CPPFLAGS} 50CPPFLAGS.thunk_sdl.c+= ${SDL_CFLAGS} ${USERMODE_CPPFLAGS} 51CPPFLAGS.urkelvisor.c+= ${USERMODE_CPPFLAGS} 52 53## 54## (3) libkern and compat 55## 56KERN_AS= library 57COMPAT_AS= library 58 59## 60## (4) local objects, compile rules, and dependencies 61## 62MD_OBJS= thunk.o 63MD_CFILES= ${USERMODE}/usermode/thunk.c 64MD_SFILES= 65 66.if !empty(OPT_URKELVISOR) 67MD_OBJS+= urkelvisor.o 68MD_CFILES+= ${USERMODE}/usermode/urkelvisor.c 69.endif 70 71.if !empty(OPT_SDL) 72MD_OBJS+= thunk_sdl.o 73MD_CFILES+= ${USERMODE}/usermode/thunk_sdl.c 74.endif 75 76## 77## (5) link settings 78## 79TEXTADDR?= %TEXTADDR% 80 81LINKFLAGS_NORMAL= -X 82KERN_LDSCRIPT?= kern.ldscript 83#LINKFORMAT= -T ${USERMODE}/conf/${KERN_LDSCRIPT} 84 85SYSTEM_LD= @${_MKSHMSG} " link ${.CURDIR:T}/${.TARGET}"; \ 86 ${_MKSHECHO}\ 87 ${CC} -static ${COPTS} -Wl,-Map,$@.map -o $@ ${LINKFORMAT} -Ttext ${TEXTADDR} '$${SYSTEM_OBJ}' '$${EXTRA_OBJ}' vers.o ${USERMODE_LIBS}; \ 88 ${CC} -static ${COPTS} -Wl,-Map,$@.map -o $@ ${LINKFORMAT} -Ttext ${TEXTADDR} ${SYSTEM_OBJ} ${EXTRA_OBJ} vers.o ${USERMODE_LIBS} 89NVFLAGS= -n 90 91## 92## (6) port specific target dependencies 93## 94 95.if !make(obj) && !make(clean) && !make(cleandir) 96.BEGIN: 97 @rm -f i386 && \ 98 ln -s $S/arch/i386/include i386 99.endif 100 101thunk.d: ${USERMODE}/usermode/thunk.c 102 ${MKDEP} -f ${.TARGET} -- ${MKDEP_CFLAGS} \ 103 ${CPPFLAGS.thunk.c} ${USERMODE}/usermode/thunk.c 104 105thunk.o: ${USERMODE}/usermode/thunk.c 106 ${CC} ${CPPFLAGS.thunk.c} -c -o $@ ${USERMODE}/usermode/thunk.c 107 108thunk_sdl.d: ${USERMODE}/usermode/thunk.c 109 ${MKDEP} -f ${.TARGET} -- ${MKDEP_CFLAGS} \ 110 ${CPPFLAGS.thunk_sdl.c} ${USERMODE}/usermode/thunk_sdl.c 111 112thunk_sdl.o: ${USERMODE}/usermode/thunk_sdl.c 113 ${CC} ${CPPFLAGS.thunk_sdl.c} -c -o $@ ${USERMODE}/usermode/thunk_sdl.c 114 115urkelvisor.d: ${USERMODE}/usermode/urkelvisor.c 116 ${MKDEP} -f ${.TARGET} -- ${MKDEP_CFLAGS} \ 117 ${CPPFLAGS.urkelvisor.c} ${USERMODE}/usermode/urkelvisor.c 118 119urkelvisor.o: ${USERMODE}/usermode/urkelvisor.c 120 ${CC} ${CPPFLAGS.urkelvisor.c} -c -o $@ ${USERMODE}/usermode/urkelvisor.c 121 122## 123## (7) misc settings 124## 125 126## 127## (8) config(8) generated machinery 128%INCLUDES 129 130%OBJS 131 132%CFILES 133 134%SFILES 135 136%LOAD 137 138%RULES 139 140## 141## (9) port independent kernel machinery 142## 143.include "$S/conf/Makefile.kern.inc" 144 145## 146## (10) appending make options 147## 148%MAKEOPTIONSAPPEND 149