Makefile.usermode revision 1.16 1 # $NetBSD: Makefile.usermode,v 1.16 2011/09/03 12:28:45 jmcneill Exp $
2
3 MACHINE_ARCH= usermode
4 USETOOLS?= no
5 NEED_OWN_INSTALL_TARGET?= no
6 .include <bsd.own.mk>
7
8 ##
9 ## (1) port identification
10 ##
11 USERMODE= $S/arch/usermode
12 GENASSYM_CONF= ${USERMODE}/usermode/genassym.cf
13
14 ##
15 ## (2) compile settings
16 ##
17 USERMODE_LIBS= -lrt
18 USERMODE_CPPFLAGS=-U_KERNEL -I/usr/include
19 USERMODE_CPPFLAGS+=${CWARNFLAGS} ${NOGCCERROR:D:U-Werror}
20
21 DEFCOPTS= -fno-omit-frame-pointer
22 CPPFLAGS+= -Dusermode
23 CPPFLAGS.init_main.c+= -Dmain=kernmain
24
25 OPT_SDL= %SDL%
26 OPT_URKELVISOR= %URKELVISOR%
27
28 .if !empty(OPT_SDL)
29 SDL_CFLAGS!= sdl-config --cflags
30 SDL_LIBS!= sdl-config --libs
31 USERMODE_LIBS+= -Wl,-Bdynamic ${SDL_LIBS}
32 .endif
33
34 CPPFLAGS.thunk.c+= ${USERMODE_CPPFLAGS}
35 CPPFLAGS.thunk_sdl.c+= ${SDL_CFLAGS} ${USERMODE_CPPFLAGS}
36 CPPFLAGS.urkelvisor.c+= ${USERMODE_CPPFLAGS}
37
38 ##
39 ## (3) libkern and compat
40 ##
41 KERN_AS= obj
42 COMPAT_AS= obj
43
44 ##
45 ## (4) local objects, compile rules, and dependencies
46 ##
47 MD_OBJS= thunk.o
48 MD_CFILES= ${USERMODE}/usermode/thunk.c
49 MD_SFILES=
50
51 .if !empty(OPT_URKELVISOR)
52 MD_OBJS+= urkelvisor.o
53 MD_CFILES+= ${USERMODE}/usermode/urkelvisor.c
54 .endif
55
56 .if !empty(OPT_SDL)
57 MD_OBJS+= thunk_sdl.o
58 MD_CFILES+= ${USERMODE}/usermode/thunk_sdl.c
59 .endif
60
61 ##
62 ## (5) link settings
63 ##
64 SYSTEM_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}
68 NVFLAGS= -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
80 thunk.d: ${USERMODE}/usermode/thunk.c
81 ${MKDEP} -f ${.TARGET} -- ${MKDEP_CFLAGS} \
82 ${CPPFLAGS.thunk.c} ${USERMODE}/usermode/thunk.c
83
84 thunk.o: ${USERMODE}/usermode/thunk.c
85 ${CC} ${CPPFLAGS.thunk.c} -c -o $@ ${USERMODE}/usermode/thunk.c
86
87 thunk_sdl.d: ${USERMODE}/usermode/thunk.c
88 ${MKDEP} -f ${.TARGET} -- ${MKDEP_CFLAGS} \
89 ${CPPFLAGS.thunk_sdl.c} ${USERMODE}/usermode/thunk_sdl.c
90
91 thunk_sdl.o: ${USERMODE}/usermode/thunk_sdl.c
92 ${CC} ${CPPFLAGS.thunk_sdl.c} -c -o $@ ${USERMODE}/usermode/thunk_sdl.c
93
94 urkelvisor.d: ${USERMODE}/usermode/urkelvisor.c
95 ${MKDEP} -f ${.TARGET} -- ${MKDEP_CFLAGS} \
96 ${CPPFLAGS.urkelvisor.c} ${USERMODE}/usermode/urkelvisor.c
97
98 urkelvisor.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