Makefile.usermode revision 1.18
1# $NetBSD: Makefile.usermode,v 1.18 2011/09/03 18:42:13 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= -lrt 25USERMODE_CPPFLAGS=-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 33.endif 34 35DEFCOPTS= -fno-omit-frame-pointer 36CPPFLAGS+= -Dusermode -D__NetBSD__ -Wno-unused-but-set-variable 37CPPFLAGS.init_main.c+= -Dmain=kernmain 38 39OPT_SDL= %SDL% 40OPT_URKELVISOR= %URKELVISOR% 41 42.if !empty(OPT_SDL) 43SDL_CFLAGS!= sdl-config --cflags 44SDL_LIBS!= sdl-config --libs 45USERMODE_LIBS+= -Wl,-Bdynamic ${SDL_LIBS} 46.endif 47 48CPPFLAGS.thunk.c+= ${USERMODE_CPPFLAGS} 49CPPFLAGS.thunk_sdl.c+= ${SDL_CFLAGS} ${USERMODE_CPPFLAGS} 50CPPFLAGS.urkelvisor.c+= ${USERMODE_CPPFLAGS} 51 52## 53## (3) libkern and compat 54## 55KERN_AS= library 56COMPAT_AS= library 57 58## 59## (4) local objects, compile rules, and dependencies 60## 61MD_OBJS= thunk.o 62MD_CFILES= ${USERMODE}/usermode/thunk.c 63MD_SFILES= 64 65.if !empty(OPT_URKELVISOR) 66MD_OBJS+= urkelvisor.o 67MD_CFILES+= ${USERMODE}/usermode/urkelvisor.c 68.endif 69 70.if !empty(OPT_SDL) 71MD_OBJS+= thunk_sdl.o 72MD_CFILES+= ${USERMODE}/usermode/thunk_sdl.c 73.endif 74 75## 76## (5) link settings 77## 78SYSTEM_LD= @${_MKSHMSG} " link ${.CURDIR:T}/${.TARGET}"; \ 79 ${_MKSHECHO}\ 80 ${CC} -static ${COPTS} -Wl,-Map,$@.map -o $@ '$${SYSTEM_OBJ}' '$${EXTRA_OBJ}' vers.o ${USERMODE_LIBS}; \ 81 ${CC} -static ${COPTS} -Wl,-Map,$@.map -o $@ ${SYSTEM_OBJ} ${EXTRA_OBJ} vers.o ${USERMODE_LIBS} 82NVFLAGS= -n 83 84## 85## (6) port specific target dependencies 86## 87 88.if !make(obj) && !make(clean) && !make(cleandir) 89.BEGIN: 90 @rm -f i386 && \ 91 ln -s $S/arch/i386/include i386 92.endif 93 94thunk.d: ${USERMODE}/usermode/thunk.c 95 ${MKDEP} -f ${.TARGET} -- ${MKDEP_CFLAGS} \ 96 ${CPPFLAGS.thunk.c} ${USERMODE}/usermode/thunk.c 97 98thunk.o: ${USERMODE}/usermode/thunk.c 99 ${CC} ${CPPFLAGS.thunk.c} -c -o $@ ${USERMODE}/usermode/thunk.c 100 101thunk_sdl.d: ${USERMODE}/usermode/thunk.c 102 ${MKDEP} -f ${.TARGET} -- ${MKDEP_CFLAGS} \ 103 ${CPPFLAGS.thunk_sdl.c} ${USERMODE}/usermode/thunk_sdl.c 104 105thunk_sdl.o: ${USERMODE}/usermode/thunk_sdl.c 106 ${CC} ${CPPFLAGS.thunk_sdl.c} -c -o $@ ${USERMODE}/usermode/thunk_sdl.c 107 108urkelvisor.d: ${USERMODE}/usermode/urkelvisor.c 109 ${MKDEP} -f ${.TARGET} -- ${MKDEP_CFLAGS} \ 110 ${CPPFLAGS.urkelvisor.c} ${USERMODE}/usermode/urkelvisor.c 111 112urkelvisor.o: ${USERMODE}/usermode/urkelvisor.c 113 ${CC} ${CPPFLAGS.urkelvisor.c} -c -o $@ ${USERMODE}/usermode/urkelvisor.c 114 115## 116## (7) misc settings 117## 118 119## 120## (8) config(8) generated machinery 121%INCLUDES 122 123%OBJS 124 125%CFILES 126 127%SFILES 128 129%LOAD 130 131%RULES 132 133## 134## (9) port independent kernel machinery 135## 136.include "$S/conf/Makefile.kern.inc" 137 138## 139## (10) appending make options 140## 141%MAKEOPTIONSAPPEND 142