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