xref: /netbsd-src/share/mk/bsd.x11.mk (revision aaf4ece63a859a04e37cf3a7229b5fab0157cc06)
1#	$NetBSD: bsd.x11.mk,v 1.51 2005/11/12 22:57:46 spz Exp $
2
3.include <bsd.init.mk>
4
5BINDIR=			${X11BINDIR}
6LIBDIR=			${X11USRLIBDIR}
7MANDIR=			${X11MANDIR}
8
9COPTS+=			-fno-strict-aliasing
10
11X11FLAGS.VERSION=	-DOSMAJORVERSION=1 -DOSMINORVERSION=6		# XXX
12
13#	 THREADS_DEFINES
14X11FLAGS.THREADS=	-DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API \
15			-DXNO_MTSAFE_PWDAPI
16
17#	 CONNECTION_FLAGS
18X11FLAGS.CONNECTION=	-DTCPCONN -DUNIXCONN -DHAS_STICKY_DIR_BIT \
19			-DHAS_FCHOWN
20
21.if (${USE_INET6} != "no")
22X11FLAGS.CONNECTION+=	-DIPv6
23.endif
24
25#	 EXT_DEFINES
26X11FLAGS.EXTENSION=	-DMITMISC -DXTEST -DXTRAP -DXSYNC -DXCMISC -DXRECORD \
27			-DMITSHM -DBIGREQS -DXF86MISC -DDBE -DDPMSExtension \
28			-DEVI -DSCREENSAVER -DXV -DXVMC -DGLXEXT \
29			-DGLX_USE_MESA -DFONTCACHE -DRES
30
31X11FLAGS.DRI=		-DGLXEXT -DXF86DRI -DGLX_DIRECT_RENDERING \
32			-DGLX_USE_DLOPEN -DGLX_USE_MESA
33
34.if ${X11DRI} != "no"
35X11FLAGS.EXTENSION+=	${X11FLAGS.DRI}
36.endif
37
38#	 ServerDefines
39X11FLAGS.SERVER=	-DSHAPE -DXKB -DLBX -DXAPPGROUP -DXCSECURITY \
40			-DTOGCUP -DXF86BIGFONT -DDPMSExtension -DPIXPRIV \
41			-DPANORAMIX -DRENDER -DRANDR -DGCCUSESGAS \
42			-DAVOID_GLYPHBLT -DSINGLEDEPTH -DXvExtension \
43			-DXFree86Server -DXvMCExtension -DSMART_SCHEDULE \
44			-DBUILDDEBUG -DXResExtension -DNDEBUG
45
46#	 OS_DEFINES
47X11FLAGS.OS_DEFINES=	-DDDXOSINIT -DSERVER_LOCK -DDDXOSFATALERROR \
48			-DDDXOSVERRORF -DDDXTIME -DUSB_HID
49
50.if !(${MACHINE} == "acorn32"	|| \
51    ${MACHINE} == "alpha"	|| \
52    ${MACHINE} == "amiga"	|| \
53    ${MACHINE} == "pmax"	|| \
54    ${MACHINE} == "sun3"	|| \
55    ${MACHINE} == "vax")
56#	EXT_DEFINES
57X11FLAGS.EXTENSION+=	-DXF86VIDMODE
58
59#	ServerDefines
60X11FLAGS.SERVER+=	-DXINPUT -DXFreeXDGA -DXF86VIDMODE
61.endif
62
63.if ${MACHINE_ARCH} == "alpha"	|| \
64    ${MACHINE_ARCH} == "sparc64" || \
65    ${MACHINE_ARCH} == "x86_64"
66#	ServerDefines
67X11FLAGS.SERVER+=	-D_XSERVER64
68X11FLAGS.EXTENSION+=	-D__GLX_ALIGN64
69.endif
70
71.if ${MACHINE} == "amd64"	|| \
72    ${MACHINE} == "cats"	|| \
73    ${MACHINE} == "i386"	|| \
74    ${MACHINE} == "macppc"	|| \
75    ${MACHINE} == "sgimips"	|| \
76    ${MACHINE} == "sparc64"	|| \
77    ${MACHINE} == "sparc"
78#	LOADABLE
79X11FLAGS.LOADABLE=	-DXFree86LOADER -DIN_MODULE -DXFree86Module \
80			-fno-merge-constants
81.endif
82
83# Extract X11VERSION
84PRINTX11VERSION=awk '/^\#define XF86_VERSION_MAJOR/ {major = $$3} \
85		     /^\#define XF86_VERSION_MINOR/ {minor = $$3} \
86		     /^\#define XF86_VERSION_PATCH/ {patch = $$3} \
87		     /^\#define XF86_VERSION_SNAP/ {snap = $$3} \
88		     END { print "((("major") * 10000000) + (("minor") * 100000) + (("patch") * 1000) + "snap")"}' \
89		     ${X11SRCDIR.xc}/programs/Xserver/hw/xfree86/xf86Version.h
90
91# Commandline to convert 'XCOMM' comments and 'XHASH' to '#', among other
92# things. Transformed from the "CppSedMagic" macro from "Imake.rules".
93#
94X11TOOL_UNXCOMM=    sed	-e '/^\#  *[0-9][0-9]*  *.*$$/d' \
95			-e '/^\#line  *[0-9][0-9]*  *.*$$/d' \
96			-e '/^[ 	]*XCOMM$$/s/XCOMM/\#/' \
97			-e '/^[ 	]*XCOMM[^a-zA-Z0-9_]/s/XCOMM/\#/' \
98			-e '/^[ 	]*XHASH/s/XHASH/\#/' \
99			-e '/\@\@$$/s/\@\@$$/\\/'
100
101
102CPPFLAGS+=		-DCSRG_BASED -DFUNCPROTO=15 -DNARROWPROTO
103CPPFLAGS+=		-I${DESTDIR}${X11INCDIR}
104
105.if ${MACHINE_ARCH} == "x86_64"
106CPPFLAGS+=		-D__AMD64__
107.endif
108
109LDFLAGS+=		-Wl,-rpath-link,${DESTDIR}${X11USRLIBDIR} \
110			-R${X11USRLIBDIR} \
111			-L${DESTDIR}${X11USRLIBDIR}
112
113
114#
115# .cpp -> "" handling
116# CPPSCRIPTS		list of files/scripts to run through cpp
117# CPPSCRIPTFLAGS	extra flags to ${CPP}
118# CPPSCRIPTFLAGS_fn	extra flags to ${CPP} for file `fn'
119#
120.if defined(CPPSCRIPTS)						# {
121.SUFFIXES:	.cpp
122
123.cpp:
124	${_MKTARGET_CREATE}
125	rm -f ${.TARGET}
126	${CPP} -undef -traditional \
127	    ${CPPSCRIPTFLAGS_${.TARGET}:U${CPPSCRIPTFLAGS}} \
128	    < ${.IMPSRC} | ${X11TOOL_UNXCOMM} > ${.TARGET}
129
130realall: ${CPPSCRIPTS}
131
132clean: cleancppscripts
133cleancppscripts: .PHONY
134	rm -f ${CPPSCRIPTS}
135.endif								# }
136
137
138#
139# APPDEFS (app defaults) handling
140#
141.if defined(APPDEFS)						# {
142appdefsinstall:: .PHONY ${APPDEFS:@S@${DESTDIR}${X11LIBDIR}/app-defaults/${S:T:R}@}
143.PRECIOUS:	${APPDEFS:@S@${DESTDIR}${X11LIBDIR}/app-defaults/${S:T:R}@}
144
145__appdefinstall: .USE
146	${INSTALL_FILE} -o ${BINOWN} -g ${BINGRP} -m ${NONBINMODE} \
147	    ${SYSPKGTAG} ${.ALLSRC} ${.TARGET}
148
149.for S in ${APPDEFS:O:u}
150${DESTDIR}${X11LIBDIR}/app-defaults/${S:T:R}: ${S} __appdefinstall
151.endfor
152
153realinstall: appdefsinstall
154.endif								# }
155
156
157#
158# .man page handling
159#
160.if (${MKMAN} != "no" && (${MAN:U} != "" || ${PROG:U} != ""))	# {
161cleandir: cleanx11man
162cleanx11man: .PHONY
163	rm -f ${MAN:U${PROG:D${PROG.1}}}
164.endif								# }
165
166.SUFFIXES:	.man .1 .3 .4 .5 .7
167
168.man.1 .man.3 .man.4 .man.5 .man.7:
169	${_MKTARGET_CREATE}
170	rm -f ${.TARGET}
171	sed -e 's/\\$$/\\ /' ${.IMPSRC} \
172	| ${CPP} -undef -traditional \
173	    -D__apploaddir__=${X11ROOTDIR}/lib/X11/app-defaults \
174	    -D__libmansuffix__=3 \
175	    -D__filemansuffix__=5 \
176	    -D__miscmansuffix__=7 \
177	    -D__drivermansuffix__=4 \
178	    -D__adminmansuffix__=8 \
179	    -D__projectroot__=${X11ROOTDIR} \
180	    -D__xorgversion__='"Release 6.6" "X Version 11"' \
181	    -D__vendorversion__="XFree86 4.5.0" \
182	    ${X11EXTRAMANDEFS} \
183	| ${X11TOOL_UNXCOMM} > ${.TARGET}
184