1# $NetBSD: bsd.x11.mk,v 1.161 2025/03/09 08:26:29 mrg Exp $ 2 3.include <bsd.init.mk> 4 5BINDIR= ${X11BINDIR} 6LIBDIR= ${X11USRLIBDIR} 7MANDIR= ${X11MANDIR} 8 9COPTS+= -fno-strict-aliasing 10 11.include <bsd.sys.mk> 12 13.if !defined(NOSSP) && (${USE_SSP:Uno} != "no") 14CPPFLAGS+= -DNO_ALLOCA 15.endif 16 17X11FLAGS.VERSION= -DOSMAJORVERSION=5 -DOSMINORVERSION=99 # XXX 18 19# THREADS_DEFINES 20X11FLAGS.THREADS= -DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API \ 21 -DXNO_MTSAFE_PWDAPI 22 23# CONNECTION_FLAGS 24X11FLAGS.CONNECTION= -DTCPCONN -DUNIXCONN -DHAS_STICKY_DIR_BIT \ 25 -DHAS_FCHOWN -DHAVE_GETADDRINFO -DHAVE_INET_NTOP \ 26 -DHAVE_STRUCT_SOCKADDR_STORAGE 27 28.if (${USE_INET6} != "no") 29X11FLAGS.CONNECTION+= -DIPv6 30.endif 31 32# EXT_DEFINES 33X11FLAGS.BASE_EXTENSION= -DMITMISC -DXTEST -DXTRAP -DXSYNC -DXCMISC \ 34 -DXRECORD -DMITSHM -DBIGREQS -DXF86VIDMODE \ 35 -DDPMSExtension -DEVI \ 36 -DSCREENSAVER -DXV -DXVMC -DGLXEXT \ 37 -DRES 38 39X11FLAGS.PERVASIVE_EXTENSION= -DSHAPE -DXINPUT -DXKB -DLBX -DXAPPGROUP \ 40 -DXCSECURITY -DTOGCUP -DXF86BIGFONT \ 41 -DDPMSExtension -DPIXPRIV -DPANORAMIX \ 42 -DRENDER -DRANDR -DXFIXES -DDAMAGE \ 43 -DCOMPOSITE -DXEVIE 44X11FLAGS.EXTENSION= ${X11FLAGS.BASE_EXTENSION} \ 45 ${X11FLAGS.PERVASIVE_EXTENSION} 46 47X11FLAGS.DIX= -DHAVE_DIX_CONFIG_H -D_BSD_SOURCE -DHAS_FCHOWN \ 48 -DHAS_STICKY_DIR_BIT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L \ 49 -DHAVE_XORG_CONFIG_H 50X11INCS.DIX= -I${DESTDIR}${X11INCDIR}/freetype2 \ 51 -I${DESTDIR}${X11INCDIR}/pixman-1 \ 52 -I$(X11SRCDIR.xorg-server)/include \ 53 -I$(X11SRCDIR.xorg-server)/Xext \ 54 -I$(X11SRCDIR.xorg-server)/composite \ 55 -I$(X11SRCDIR.xorg-server)/damageext \ 56 -I$(X11SRCDIR.xorg-server)/xfixes \ 57 -I$(X11SRCDIR.xorg-server)/Xi \ 58 -I$(X11SRCDIR.xorg-server)/mi \ 59 -I$(X11SRCDIR.xorg-server)/miext/shadow \ 60 -I$(X11SRCDIR.xorg-server)/miext/damage \ 61 -I$(X11SRCDIR.xorg-server)/render \ 62 -I$(X11SRCDIR.xorg-server)/randr \ 63 -I$(X11SRCDIR.xorg-server)/fb \ 64 -I$(X11SRCDIR.xorg-server)/../include 65 66X11FLAGS.DRI= -DGLXEXT -DXF86DRI -DGLX_DIRECT_RENDERING \ 67 -DGLX_USE_DLOPEN -DGLX_USE_MESA 68 69.if ${X11DRI} != "no" 70X11FLAGS.EXTENSION+= ${X11FLAGS.DRI} 71.endif 72 73# ServerDefines 74X11FLAGS.SERVER= -DSHAPE -DXKB -DLBX -DXAPPGROUP -DXCSECURITY \ 75 -DTOGCUP -DXF86BIGFONT -DDPMSExtension -DPIXPRIV \ 76 -DPANORAMIX -DRENDER -DRANDR -DGCCUSESGAS \ 77 -DAVOID_GLYPHBLT -DSINGLEDEPTH -DXvExtension \ 78 -DXFree86Server -DXvMCExtension -DSMART_SCHEDULE \ 79 -DBUILDDEBUG -DXResExtension -DNDEBUG 80 81# OS_DEFINES 82X11FLAGS.OS_DEFINES= -DDDXOSINIT -DSERVER_LOCK -DDDXOSFATALERROR \ 83 -DDDXOSVERRORF -DDDXTIME -DUSB_HID 84 85.if !(${MACHINE} == "acorn32" || \ 86 ${MACHINE} == "sun3" || \ 87 ${MACHINE} == "x68k") 88# EXT_DEFINES 89X11FLAGS.EXTENSION+= -DXF86VIDMODE 90 91X11FLAGS.DIX+= -DDBE -DXRECORD -DPRESENT 92 93# ServerDefines 94X11FLAGS.SERVER+= -DXFreeXDGA -DXF86VIDMODE 95X11FLAGS.SERVER+= -DXINPUT -DXSERVER_LIBPCIACCESS 96.endif 97 98.if ${MACHINE_ARCH} == "alpha" || \ 99 ${MACHINE_ARCH} == "ia64" || \ 100 ${MACHINE_ARCH} == "powerpc64" || \ 101 ${MACHINE_ARCH} == "sparc64" || \ 102 ${MACHINE_ARCH} == "x86_64" || \ 103 ${MACHINE_CPU} == "aarch64" 104# ServerDefines 105X11FLAGS.SERVER+= -D_XSERVER64 106X11FLAGS.EXTENSION+= -D__GLX_ALIGN64 107.endif 108 109.if ${MACHINE} == "amd64" || \ 110 ${MACHINE} == "cats" || \ 111 ${MACHINE} == "i386" || \ 112 ${MACHINE} == "macppc" || \ 113 ${MACHINE} == "netwinder" || \ 114 ${MACHINE} == "ofppc" || \ 115 ${MACHINE} == "prep" || \ 116 ${MACHINE} == "sgimips" || \ 117 ${MACHINE} == "sparc64" || \ 118 ${MACHINE} == "sparc" || \ 119 ${MACHINE} == "shark" || \ 120 ${MACHINE} == "zaurus" 121# LOADABLE 122.if ${XORG_SERVER_SUBDIR:Uxorg-server.old} == "xorg-server.old" 123X11FLAGS.LOADABLE= -DXFree86LOADER 124.endif 125X11FLAGS.LOADABLE+= ${${ACTIVE_CXX} == "gcc":? -fno-merge-constants :} 126.endif 127 128# XXX FIX ME 129.if ${XORG_SERVER_SUBDIR:Uxorg-server.old} == "xorg-server.old" 130XORG_SERVER_MAJOR= 1 131XORG_SERVER_MINOR= 10 132XORG_SERVER_TEENY= 6 133XORG_VERSION_CURRENT="(((${XORG_SERVER_MAJOR}) * 10000000) + ((${XORG_SERVER_MINOR}) * 100000) + ((${XORG_SERVER_TEENY}) * 1000) + 0)" 134.else 135XORG_SERVER_MAJOR= 21 136XORG_SERVER_MINOR= 1 137XORG_SERVER_TEENY= 16 138XORG_VERSION_CURRENT="((10000000) + ((${XORG_SERVER_MAJOR}) * 100000) + ((${XORG_SERVER_MINOR}) * 1000) + ${XORG_SERVER_TEENY})" 139.endif 140 141XVENDORNAMESHORT= '"X.Org"' 142XVENDORNAME= '"The X.Org Foundation"' 143XORG_RELEASE= '"Release ${XORG_SERVER_MAJOR}.${XORG_SERVER_MINOR}.${XORG_SERVER_TEENY}"' 144__XKBDEFRULES__= '"xorg"' 145XLOCALE.DEFINES= -DXLOCALEDIR=\"${X11LIBDIR}/locale\" \ 146 -DXLOCALELIBDIR=\"${X11LIBDIR}/locale\" 147 148PRINT_PACKAGE_VERSION= ${TOOL_AWK} '/^PACKAGE_VERSION=/ { \ 149 match($$1, "([0-9]+\\.)+[0-9]+"); \ 150 version = substr($$1, RSTART, RLENGTH); \ 151 } END { print version }' 152 153_CONFIGURE_PATH= 154.if exists(${X11SRCDIR.${PROG}}/configure) 155_CONFIGURE_PATH=${X11SRCDIR.${PROG}}/configure 156.elif exists(${X11SRCDIR.${LIB}}/configure) 157_CONFIGURE_PATH=${X11SRCDIR.${LIB}}/configure 158.endif 159 160.if exists(${_CONFIGURE_PATH}) 161_PRINT_PACKAGE_STRING= ${TOOL_AWK} -F= '/^PACKAGE_STRING=/ { print $$2 }' \ 162 ${_CONFIGURE_PATH} 163PACKAGE_STRING!= ${_PRINT_PACKAGE_STRING} 164.else 165PACKAGE_STRING= "X11 program" 166.endif 167 168# Commandline to convert 'XCOMM' comments and 'XHASH' to '#', among other 169# things. Transformed from the "CppSedMagic" macro from "Imake.rules". 170# 171X11TOOL_UNXCOMM= ${TOOL_SED} -e '/^\# *[0-9][0-9]* *.*$$/d' \ 172 -e '/^\#line *[0-9][0-9]* *.*$$/d' \ 173 -e '/^[ ]*XCOMM$$/s/XCOMM/\#/' \ 174 -e '/^[ ]*XCOMM[^a-zA-Z0-9_]/s/XCOMM/\#/' \ 175 -e '/^[ ]*XHASH/s/XHASH/\#/' \ 176 -e '/\@\@$$/s/\@\@$$/\\/' 177 178 179CPPFLAGS+= -DCSRG_BASED -DFUNCPROTO=15 -DNARROWPROTO 180CPPFLAGS+= -I${DESTDIR}${X11INCDIR} 181 182.if ${MACHINE_ARCH} == "x86_64" 183CPPFLAGS+= -D__AMD64__ 184.endif 185 186LDFLAGS+= -Wl,-rpath,${X11USRLIBDIR} -L=${X11USRLIBDIR} 187 188 189# 190# .cpp -> "" handling 191# CPPSCRIPTS list of files/scripts to run through cpp 192# CPPSCRIPTFLAGS extra flags to ${CPP} 193# CPPSCRIPTFLAGS_fn extra flags to ${CPP} for file `fn' 194# 195.if defined(CPPSCRIPTS) # { 196.SUFFIXES: .cpp 197 198.cpp: 199 ${_MKTARGET_CREATE} 200 rm -f ${.TARGET} 201 ${CC} -E -undef -traditional - \ 202 ${CPPSCRIPTFLAGS_${.TARGET}:U${CPPSCRIPTFLAGS}} \ 203 < ${.IMPSRC} | ${X11TOOL_UNXCOMM} > ${.TARGET} 204 205realall: ${CPPSCRIPTS} 206 207CLEANFILES+= ${CPPSCRIPTS} 208.endif # } 209 210# Used by pkg-config and manual handling to ensure we picked up all 211# the necessary changes. 212# 213# Skip any line that starts with .IN (old X11 indexing method), 214# or between a tab(@) and .TE. 215_X11SKIP_FALSE_POSITIVE_GREP_CMD= \ 216 ${TOOL_SED} -e '/tab(@)/,/^\.TE/d' -e '/^\.IN /d' ${.TARGET}.tmp | \ 217 ${TOOL_GREP} -E '@([^ ]+)@' 218 219# 220# X.Org pkgconfig files handling 221# 222# PKGCONFIG is expected to contain a list of pkgconfig module names. 223# They will produce the files <module1>.pc, <module2>.pc, etc, to be 224# put in X11USRLIBDIR/pkgconfig. 225# 226# PKGDIST contains the name of a X11SRCDIR subscript where to find the 227# source file for the pkgconfig files. 228# 229# If PKGDIST is not suitable, a consumer can set PKGDIST.<module> with 230# the full path to the source file. 231# 232# Also, the consumer can use PKGDIST alone, and a PKGCONFIG will be 233# derived from it. Many times, PKGDIST is capitalized and PKGCONFIG is 234# the lower case version. 235# 236 237.if defined(PKGDIST) && !defined(PKGCONFIG) 238PKGCONFIG= ${PKGDIST:tl} 239.endif 240.if defined(PKGCONFIG) && !defined(MLIBDIR) 241 242.include <bsd.files.mk> 243 244_PKGCONFIG_FILES= ${PKGCONFIG:C/$/.pc/} 245 246.PHONY: pkgconfig-install 247pkgconfig-install: 248 249realall: ${_PKGCONFIG_FILES:O:u} 250realinstall: pkgconfig-install 251 252.for _pkg in ${PKGCONFIG:O:u} # { 253 254PKGDIST.${_pkg}?= ${X11SRCDIR.${PKGDIST:U${_pkg}}} 255_PKGDEST.${_pkg}= ${DESTDIR}${X11USRLIBDIR}/pkgconfig/${_pkg}.pc 256 257.PATH: ${PKGDIST.${_pkg}} 258 259FILESOWN_${_pkg}.pc= ${BINOWN} 260FILESGRP_${_pkg}.pc= ${BINGRP} 261FILESMODE_${_pkg}.pc= ${NONBINMODE} 262 263${_PKGDEST.${_pkg}}: ${_pkg}.pc __fileinstall 264pkgconfig-install: ${_PKGDEST.${_pkg}} 265 266# Add a dependancy on the configure file if it exists; this way we 267# will rebuild the .pc file if the version in configure changes. 268.if exists(${PKGDIST.${_pkg}}/configure) 269${_pkg}.pc: ${PKGDIST.${_pkg}}/configure Makefile 270.endif 271 272.endfor # } 273 274# XXX 275# The sed script is very, very ugly. What we actually need is a 276# mknative-xorg script that will generate all the .pc files from 277# running the autoconfigure script. 278# And yes, it has to be split in multiple parts otherwise it's 279# too long for sed to handle. 280 281# hacky transforms: 282# @XCBPROTO_VERSION@ 283 284.SUFFIXES: .pc.in .pc 285.pc.in.pc: 286 ${_MKTARGET_CREATE} 287 rm -f ${.TARGET} 288 if [ -n '${PKGCONFIG_VERSION.${.PREFIX}}' ]; then \ 289 _pkg_version='${PKGCONFIG_VERSION.${.PREFIX}}'; \ 290 else \ 291 _pkg_version=$$(${PRINT_PACKAGE_VERSION} \ 292 ${PKGDIST.${.PREFIX}}/configure); \ 293 fi; \ 294 ${TOOL_SED} \ 295 ${PKGCONFIG_SED_FLAGS} \ 296 -e "s,@prefix@,${X11ROOTDIR},; \ 297 s,@INSTALL_DIR@,${X11ROOTDIR},; \ 298 s,@exec_prefix@,\\$$\{prefix\},; \ 299 s,@libdir@,\\$$\{prefix\}/lib,; \ 300 s,@includedir@,\\$$\{prefix\}/include,; \ 301 s,@datarootdir@,\\$$\{prefix\}/share,; \ 302 s,@datadir@,\\$$\{datarootdir\},; \ 303 s,@appdefaultdir@,\\$$\{libdir}/X11/app-defaults,; \ 304 s,@MAPDIR@,\\$$\{libdir\}/X11/fonts/util,; \ 305 s,@ICONDIR@,\\$$\{datarootdir\}/icons,; \ 306 s,@PACKAGE_VERSION@,$${_pkg_version},; \ 307 s,@VERSION@,$${_pkg_version},; \ 308 s,@COMPOSITEEXT_VERSION@,$${_pkg_version%.*},; \ 309 s,@DAMAGEEXT_VERSION@,$${_pkg_version%.*},; \ 310 s,@FIXESEXT_VERSION@,$${_pkg_version%.*},; \ 311 s,@PRESENTEXT_VERSION@,$${_pkg_version%.*},; \ 312 s,@RANDR_VERSION@,$${_pkg_version%.*},; \ 313 s,@RENDER_VERSION@,$${_pkg_version%.*}," \ 314 -e "s,@LIBS@,,; \ 315 s,@Z_LIBS@,-lz,; \ 316 s,@LIBZ@,-lz,; \ 317 s,@LIBBZ2@,-lbz2,; \ 318 s,@xkb_base@,\\$$\{prefix\}/lib/X11/xkb,; \ 319 s,@xcbincludedir@,\\$$\{prefix\}/share/xcb,; \ 320 s,@fontrootdir@,\\$$\{libdir\}/X11/fonts,; \ 321 s,@LIBXML2_LIBS@,,; \ 322 s,@LIBXML2_CFLAGS@,,; \ 323 s,@ICONV_CFLAGS@,,; \ 324 s,@ICONV_LIBS@,,; \ 325 s,@NEEDED@,,; \ 326 s,@FT2_EXTRA_LIBS@,," \ 327 -e "s,@moduledir@,\\$$\{libdir\}/modules,; \ 328 s,@sdkdir@,\\$$\{includedir\}/xorg,; \ 329 s,@PIXMAN_CFLAGS@,,; \ 330 s,@LIB_DIR@,/lib,; \ 331 s,@INSTALL_LIB_DIR@,\\$$\{prefix\}/lib,; \ 332 s,@INSTALL_INC_DIR@,\\$$\{prefix\}/include,; \ 333 s,@XKBPROTO_REQUIRES@,kbproto,; \ 334 s,@XCBPROTO_VERSION@,1.7,; \ 335 s,@FREETYPE_REQUIRES@,freetype2,; \ 336 s,@EXPAT_LIBS@,-lexpat,; \ 337 s,@FREETYPE_LIBS@,-lfreetype,; \ 338 s,@DEP_CFLAGS@,,; \ 339 s,@DEP_LIBS@,,; \ 340 s,@X11_EXTRA_DEPS@,,; \ 341 s,@XTHREAD_CFLAGS@,-D_REENTRANT,; \ 342 s,@XTHREADLIB@,-lpthread,; \ 343 s,@GL_LIB@,GL,; \ 344 s,@GL_PC_REQ_PRIV@,x11 xext,; \ 345 s,@GL_PC_LIB_PRIV@,-lm -lpthread,; \ 346 s,@GL_PC_CFLAGS@,,; \ 347 s,@GLX_TLS@,no," \ 348 -e "s,@GLU_LIB@,GLU,; \ 349 s,@GLU_PC_REQ@,gl,; \ 350 s,@GLU_PC_REQ_PRIV@,,; \ 351 s,@GLU_PC_LIB_PRIV@,-lGLU,; \ 352 s,@GLU_PC_CFLAGS@,,; \ 353 s,@GLUT_LIB@,glut,; \ 354 s,@GLUT_PC_REQ_PRIV@,gl glu,; \ 355 s,@GLUT_PC_LIB_PRIV@,-lglut,; \ 356 s,@GLUT_PC_CFLAGS@,,; \ 357 s,@GLW_PC_CFLAGS@,,; \ 358 s,@GLW_PC_REQ_PRIV@,x11 xt,; \ 359 s,@GLW_PC_LIB_PRIV@,,; \ 360 s,@DRI_DRIVER_DIR@,\\$$\{libdir\}/modules/dri,; \ 361 s,@DRI_PC_REQ_PRIV@,,; \ 362 s,@GLW_LIB@,GLw,; \ 363 s,@GBM_PC_REQ_PRIV@,,; \ 364 s,@GBM_PC_LIB_PRIV@,,; \ 365 s,@abi_ansic@,0.4,; \ 366 s,@abi_videodrv@,5.0,; \ 367 s,@abi_xinput@,4.0,; \ 368 s,@abi_extension@,2.0,; \ 369 s,@abi_font@,0.6,; \ 370 s,@fchown_define@,-DHAS_FCHOWN,; \ 371 s,@sticky_bit_define@,-DHAS_STICKY_DIR_BIT,;" \ 372 -e "s,@PKG_CONFIG_LIBS@,${PKG_CONFIG_LIBS},; \ 373 s,@PACKAGE@,${PKGDIST},; \ 374 s,@PKGCONFIG_REQUIRES@,${PKGCONFIG_REQUIRES},; \ 375 s,@PKGCONFIG_REQUIRES_PRIVATELY@,${PKGCONFIG_REQUIRES_PRIVATELY},; \ 376 s,@ERRORDBDIR@,${X11LIBDIR},; \ 377 s,@EXPAT_CFLAGS@,,; \ 378 s,@FREETYPE_CFLAGS@,-I${X11ROOTDIR}/include/freetype2 -I${X11ROOTDIR}/include,;" \ 379 -e '/^Libs:/ s%-L\([^ ]*\)%-Wl,-rpath,\1 &%g' \ 380 < ${.IMPSRC} > ${.TARGET}.tmp 381 if ${_X11SKIP_FALSE_POSITIVE_GREP_CMD}; then \ 382 echo "pkg-config ${.TARGET} matches @.*@, probably missing updates" 1>&2; \ 383 false; \ 384 else \ 385 ${MV} ${.TARGET}.tmp ${.TARGET}; \ 386 fi 387 388CLEANFILES+= ${_PKGCONFIG_FILES} ${_PKGCONFIG_FILES:C/$/.tmp/} 389.endif 390 391# 392# APPDEFS (app defaults) handling 393# 394.if defined(APPDEFS) # { 395appdefsinstall:: .PHONY ${APPDEFS:@S@${DESTDIR}${X11LIBDIR}/app-defaults/${S:T:R}@} 396.PRECIOUS: ${APPDEFS:@S@${DESTDIR}${X11LIBDIR}/app-defaults/${S:T:R}@} 397 398__appdefinstall: .USE 399 ${_MKTARGET_INSTALL} 400 ${INSTALL_FILE} -o ${BINOWN} -g ${BINGRP} -m ${NONBINMODE} \ 401 ${.ALLSRC} ${.TARGET} 402 403.for S in ${APPDEFS:O:u} 404${DESTDIR}${X11LIBDIR}/app-defaults/${S:T:R}: ${S} __appdefinstall 405.endfor 406 407realinstall: appdefsinstall 408.endif # } 409 410 411# 412# .man page handling 413# 414.if (${MKMAN} != "no" && (${MAN:U} != "" || ${PROG:U} != "")) # { 415CLEANDIRFILES+= ${MAN:U${PROG:D${PROG.1}}} 416.endif # } 417 418.SUFFIXES: .man .man.pre .1 .3 .4 .5 .7 .8 419 420# Note the escaping trick for _X11MANTRANSFORM using % to replace spaces 421XORGVERSION= '"X Version 11"' 422 423_X11MANTRANSFORM= \ 424 ${X11EXTRAMANTRANSFORMS} 425 426# These ones used to appear as __foo__ but may be now @foo@. 427_X11MANTRANSFORMS_BOTH=\ 428 ${X11EXTRAMANTRANSFORMS_BOTH} \ 429 appmansuffix 1 \ 430 APP_MAN_SUFFIX 1 \ 431 LIB_MAN_SUFFIX 3 \ 432 libmansuffix 3 \ 433 oslibmansuffix 3 \ 434 drivermansuffix 4 \ 435 filemansuffix 5 \ 436 MISC_MAN_SUFFIX 7 \ 437 miscmansuffix 7 \ 438 adminmansuffix 8 \ 439 XORG_MAN_PAGE "X Version 11" \ 440 logdir /var/log \ 441 sysconfdir /etc \ 442 apploaddir ${X11ROOTDIR}/lib/X11/app-defaults \ 443 bindir ${X11BINDIR} \ 444 datadir ${X11LIBDIR} \ 445 libdir ${X11ROOTDIR}/lib \ 446 mandir ${X11MANDIR} \ 447 projectroot ${X11ROOTDIR} \ 448 xkbconfigroot ${X11LIBDIR}/xkb \ 449 vendorversion ${XORGVERSION:C/ /%/gW} \ 450 XCONFIGFILE xorg.conf \ 451 xconfigfile xorg.conf \ 452 XCONFIGFILEMAN 'xorg.conf(5)' \ 453 xlocaledir ${X11LIBDIR}/locale \ 454 xorgversion ${XORGVERSION:C/ /%/gW} \ 455 XSERVERNAME Xorg \ 456 xservername Xorg 457 458.if !empty(PACKAGE_STRING) 459_X11MANTRANSFORMS_BOTH+=\ 460 PACKAGE_STRING ${PACKAGE_STRING} 461.endif 462 463.for __def__ __value__ in ${_X11MANTRANSFORMS_BOTH} 464_X11MANTRANSFORM+= \ 465 __${__def__}__ ${__value__} \ 466 @${__def__}@ ${__value__} 467.endfor 468 469_X11MANTRANSFORM+= \ 470 471_X11MANTRANSFORMCMD= ${TOOL_SED} -e 's/\\$$/\\ /' ${.IMPSRC} 472 473# XXX document me. 474X11MANCPP?= no 475 476.if ${X11MANCPP} != "no" 477_X11MANTRANSFORMCMD+= | ${CC} -E -undef -traditional - 478. for __def__ __value__ in ${_X11MANTRANSFORM} 479_X11MANTRANSFORMCMD+= -D${__def__}=${__value__:C/%/ /gW} 480. endfor 481.else 482_X11MANTRANSFORMCMD+= | ${TOOL_SED} 483. for __def__ __value__ in ${_X11MANTRANSFORM} 484_X11MANTRANSFORMCMD+= -e s,${__def__},${__value__:C/%/ /gW},g 485. endfor 486.endif 487_X11MANTRANSFORMCMD+= ${X11EXTRAMANDEFS} 488 489.man.1 .man.3 .man.4 .man.5 .man.7 .man.8 .man.pre.1 .man.pre.4 .man.pre.5: 490 ${_MKTARGET_CREATE} 491 rm -f ${.TARGET} 492 ${_X11MANTRANSFORMCMD} | ${X11TOOL_UNXCOMM} > ${.TARGET}.tmp 493 if ${_X11SKIP_FALSE_POSITIVE_GREP_CMD}; then \ 494 echo "manual ${.TARGET} matches @.*@, probably missing updates" 1>&2; \ 495 false; \ 496 else \ 497 ${MV} ${.TARGET}.tmp ${.TARGET}; \ 498 fi 499 500##### Pull in related .mk logic 501.include <bsd.clean.mk> 502