1/* Cygwin/X vendor strings and version */
2#include "xorgversion.def"
3
4#ifndef CygxVersionMajor
5# define CygxVersionMajor	XORG_VERSION_MAJOR
6#endif
7#ifndef CygxVersionMinor
8# define CygxVersionMinor	XORG_VERSION_MINOR
9#endif
10#ifndef CygxVersionPatch
11# define CygxVersionPatch	XORG_VERSION_PATCH
12#endif
13#ifndef CygxVersionSnap
14# define CygxVersionSnap	XORG_VERSION_SNAP
15#endif
16#ifndef CygxVersionServer
17# define CygxVersionServer	0
18#endif
19
20#ifndef CygxVersion
21# define CygxVersion (10000000 * CygxVersionMajor + 100000 * CygxVersionMinor + 1000 * CygxVersionPatch + CygxVersionSnap)
22#endif
23
24#ifndef CygxVersionString
25# define CygxVersionString `echo CygxVersionMajor CygxVersionMinor CygxVersionPatch CygxVersionSnap%CygxVersionServer| sed -e 's/ /./g' -e 's/%/-/g'`
26#endif
27
28#ifndef CygxManVersionString
29# define CygxManVersionString `echo CygxVersionMajor CygxVersionMinor CygxVersionPatch CygxVersionSnap| sed -e 's/ /./g' -e 's/^/Version\\\ /'`
30#endif
31
32#ifndef XVendorString
33# define XVendorString "The Cygwin/X Project"
34#endif
35#ifndef XVendorRelease
36# define XVendorRelease CygxVersion
37#endif
38#ifndef XVendorManVersionString
39# define XVendorManVersionString CygxManVersionString
40#endif
41#ifndef XVendorManNameString
42# define XVendorManNameString "Cygwin/X"
43#endif
44#ifndef XVendorContact
45# define XVendorContact "cygwin-xfree@cygwin.com"
46#endif
47
48/* Operating system strings and version */
49#ifndef OSName
50# define OSName			Cygwin
51#endif
52#ifndef OSVendor
53# define OSVendor		Red Hat Inc.
54#endif
55#ifndef OSMajorVersion
56# define OSMajorVersion		DefaultOSMajorVersion
57#endif
58#ifndef OSMinorVersion
59# define OSMinorVersion		DefaultOSMinorVersion
60#endif
61#ifndef OSTeenyVersion
62# define OSTeenyVersion		DefaultOSTeenyVersion
63#endif
64
65#ifndef XAppLoadDir
66# define XAppLoadDir			EtcX11Directory/app-defaults
67#endif
68#ifndef SystemManDirectory
69# define SystemManDirectory	/usr/share/man
70#endif
71
72#if !CrossCompiling
73#ifndef HasGcc2
74# define HasGcc2		YES
75#endif /* HasGcc2 */
76#endif /* !CrossCompiling */
77#define HasGcc2ForCplusplus	YES
78#define GccUsesGas		YES
79#define UseGas			YES
80#define GnuCpp			YES
81#define UnixCpp /* Just a flag that affects Concat macros in Imake.rules */
82
83#define ExtraLoadFlags		-Wl,--enable-auto-import,--enable-runtime-pseudo-reloc
84
85#define HasShadowPasswd		NO
86#define HasLibCrypt		YES
87#define HasPutenv		YES
88#define HasPoll			NO
89#if (OSMajorVersion > 1) || (OSMajorVersion == 1 && OSMinorVersion >= 5)
90# define HasStrlcat		YES
91#endif
92#define HasShm			YES
93
94#define HasSnprintf		YES
95#ifndef HasMakefileSafeInclude
96# define HasMakefileSafeInclude YES
97#endif
98
99/*
100 * Cygwin has Tcl/Tk, but you need to keep the version numbers
101 * of the libs in sync.  These version numbers may change
102 * occassionally.
103 */
104#define Hastcl			YES
105#define Hastk			YES
106#define TclLibName		tcl84
107#define TkLibName		tk84
108
109#define HasSockets		YES
110#define GzipFontCompression	YES
111#define HasZlib			YES
112
113/* We don't need -lm */
114#define MathLibrary		/**/
115
116/*
117 * /lib/libtermcap.a doesn't have tgetent, which is needed for
118 * xc/programs/xterm/resize.exe
119 */
120#define TermcapLibrary		-lncurses
121
122#define AvoidNullMakeCommand	YES
123#define StripInstalledPrograms	YES
124#define CompressAllFonts	YES
125#define Malloc0ReturnsNull	NO
126#define NeedConstPrototypes	YES
127#define NeedFunctionPrototypes	YES
128#define NeedNestedPrototypes	YES
129#define NeedVarargsPrototypes	YES
130#define NeedWidePrototypes	NO
131#define SetTtyGroup		YES
132#define ExpandManNames		YES
133#define HasDlopen		NO
134#define HasGnuMake		YES
135#define UseGccMakeDepend	NO
136#define ThreadedX		YES
137#define HasThreadSafeAPI	YES
138#if !CrossCompiling
139#define CaseSensitiveFileSystem	NO
140#endif
141#define HasWChar32		YES
142#define HasBasename		NO /* basename() in libc */
143
144#define LnCmd			ln -s
145#ifndef CcCmd
146# define CcCmd			gcc
147#endif /* CcCmd */
148#ifndef CplusplusCmd
149# define CplusplusCmd		g++
150#endif /* CplusplusCmd */
151#ifndef AsCmd
152# define AsCmd			as
153#endif /* AsCmd */
154
155#define GccGasOption		-DGCCUSESGAS
156#define AsmDefines		-DUSE_GAS -DGCCUSESGAS
157
158#ifndef LdCmd
159# define LdCmd			gcc -lautomode
160#endif /* LdCmd */
161
162#define MkdirHierCmd		mkdir -p
163
164#ifndef CppCmd
165# define CppCmd			cpp
166#endif /* CppCmd */
167#ifndef YaccCmd
168# define YaccCmd		bison -y
169#endif /* YaccCmd */
170
171#define LexCmd			flex -l
172#define LexLib			-lfl
173#define HasFlex			YES
174#ifndef CrossCompileDir
175# ifndef HasExpat
176#  define HasExpat		YES
177# endif
178# ifndef HasFreetype2
179#  define HasFreetype2		YES
180# endif
181# ifndef HasFontconfig
182#  define HasFontconfig		YES
183# endif
184#endif
185
186/* Cygwin-specific Windows resource compiler command */
187#ifdef CrossCompileDir
188# ifndef WindresCmd
189#  define WindresCmd		Concat3(CrossCompileDir,/,windres)
190# endif
191#else
192# ifndef WindresCmd
193#  define WindresCmd		windres
194# endif
195#endif
196
197#define PreProcessCmd		CcCmd -E
198
199#ifndef PostIncDir
200# ifdef CrossCompileDir
201#  define PostIncDir		`CrossCompileDir/CcCmd --print-libgcc-file-name | sed 's,\\\\,/,g' | sed 's,libgcc.a,include,'`
202# else
203#  define PostIncDir		`CcCmd --print-libgcc-file-name | sed 's,\\\\,/,g' | sed 's,libgcc.a,include,'`
204# endif
205#endif
206#ifndef ExtraIncDir
207# ifdef CrossCompileDir
208#  define ExtraIncDir		CrossCompileDir/../include/w32api
209# else
210#  define ExtraIncDir		/usr/include/w32api
211# endif
212#endif
213
214#ifndef BourneShell
215/*
216 * This will cause builds/installs to terminate on errors, as on other
217 * platforms.
218 */
219#define BourneShell		/bin/sh -e
220#endif
221
222#define LdCombineFlags		-r
223
224#ifndef DefaultCCOptions
225# define DefaultCCOptions	-Wall -Wpointer-arith
226#endif
227
228/* Cygwin 1.5.x now includes alloca */
229#if OSMinorVersion >= 5
230# define AllocateLocalDefines	-DINCLUDE_ALLOCA_H
231#else
232# define AllocateLocalDefines	-DNO_ALLOCA
233#endif
234
235#ifndef OptimizedCDebugFlags
236# define OptimizedCDebugFlags	-O2 -fno-strength-reduce
237#endif
238
239/*
240 * -DFD_SETSIZE=256 is needed for xfs and the xserver. cygwin defines the
241 * FD_SETSIZE as 64 but some code expects it to be larger.
242 */
243#define StandardDefines		-D__i386__ -DWIN32_LEAN_AND_MEAN -DX_LOCALE \
244				-D_X86_ -D__CYGWIN__ -D_XOPEN_SOURCE \
245				-D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE \
246				-D_SVID_SOURCE -D_GNU_SOURCE -DFD_SETSIZE=256 \
247				-DXResExtension
248#define XawI18nDefines		-DHAS_WCHAR_H -DHAS_WCTYPE_H \
249				-DHAS_ISW_FUNCS -DNO_WIDEC_H
250#define StandardCppOptions	-traditional
251
252/* Cygwin shared memory requires cygipc package or cygserver. */
253#if UseCygIPC
254# if ThreadedX
255#  define StandardCppDefines	-DHAS_THREADS -DHAS_SHM StandardDefines
256# else
257#  define StandardCppDefines	-DHAS_SHM StandardDefines
258# endif
259#else
260# if ThreadedX
261#  define StandardCppDefines	-DHAS_THREADS StandardDefines
262# else
263#  define StandardCppDefines	StandardDefines
264# endif
265#endif
266
267/* IPv6 not yet supported */
268#ifndef BuildIPv6
269# define BuildIPv6		NO
270#endif
271
272#if 0
273/* 2004/02/29 - Harold - This doesn't do anything yet.  Stay tuned. */
274/* Support for accelerating OpenGL with Win32's OpenGL layer. */
275#ifndef BuildXWinDRI
276# define BuildXWinDRI		NO
277#endif
278#if BuildXWinDRI
279# define GlxExtraDefines	-DGLX_DIRECT_RENDERING GlxArchDefines
280#endif
281#endif
282
283/* XWin Server specific build flags */
284#ifndef GlxUseWindows
285# define GlxUseWindows		YES
286#endif
287#ifndef BuildXWinClipboard
288# define BuildXWinClipboard	YES
289#endif
290#ifndef BuildXWinEmulatePseudo
291# define BuildXWinEmulatePseudo	NO
292#endif
293#ifndef BuildXWinMultiWindow
294# define BuildXWinMultiWindow	YES
295#endif
296#ifndef BuildXWinMultiWindowExtWM
297# define BuildXWinMultiWindowExtWM YES
298#endif
299#ifndef BuildXWinNativeGDI
300# define BuildXWinNativeGDI	NO
301#endif
302#ifndef BuildXWinPrimaryFB
303# define BuildXWinPrimaryFB	NO
304#endif
305#ifndef BuildXWinUpdateStats
306# define BuildXWinUpdateStats	NO
307#endif
308#ifndef BuildXWinXF86Config
309# define BuildXWinXF86Config	NO
310#endif
311
312/* XWin specific build flags - 1st order dependency */
313#if BuildXWinMultiWindowExtWM && !defined(BuildWindowsWMLibrary)
314# define BuildWindowsWMLibrary	YES
315#elif !defined(BuildWindowsWMLibrary)
316# define BuildWindowsWMLibrary	NO
317#endif /* BuildXWinMultiWindowExtWM && BuildWindowsWMLibrary */
318
319/* XWin Server specific defines */
320#if BuildXWinClipboard
321# define XWinClipboardDefines	-DXWIN_CLIPBOARD
322#else
323# define XWinClipboardDefines
324#endif /* BuildXWinClipboard */
325#if BuildXWinEmulatePseudo
326# define XWinEmulatePseudoDefines -DXWIN_EMULATEPSEUDO
327#else
328# define XWinEmulatePseudoDefines
329#endif /* BuildXWinEmulatePseudo */
330#if BuildXWinMultiWindow
331# define XWinMultiWindowDefines	-DXWIN_MULTIWINDOW
332#else
333# define XWinMultiWindowDefines
334#endif /* BuildXWinMultiWindow */
335#if BuildXWinMultiWindowExtWM
336# define BuildRootless		YES
337# define XWinMultiWindowExtWMDefines -DXWIN_MULTIWINDOWEXTWM
338#else /* BuildXWinMultiWindowExtWM */
339# define XWinMultiWindowExtWMDefines
340#endif /* BuildXWinMultiWindowExtWM */
341#if BuildXWinNativeGDI
342# define XWinNativeGDIDefines	-DXWIN_NATIVEGDI
343#else
344# define XWinNativeGDIDefines
345#endif /* BuildXWinNativeGDI */
346#if BuildXWinPrimaryFB
347# define XWinPrimaryFBDefines	-DXWIN_PRIMARYFB
348#else
349# define XWinPrimaryFBDefines
350#endif /* BuildXWinPrimaryFB */
351#if BuildXWinUpdateStats
352# define XWinUpdateStatsDefines	-DXWIN_UPDATESTATS
353#else
354# define XWinUpdateStatsDefines
355#endif /* BuildXWinUpdateStats */
356#if BuildXWinXF86Config
357# define XWinXF86ConfigDefines	-DXWIN_XF86CONFIG
358#else
359# define XWinXF86ConfigDefines
360#endif /* BuildXWinXF86Config */
361
362/*
363 * XFree86Server is defined for the w32api headers, which protects some
364 * colliding names with #ifdef XFree86Server.
365 */
366#define XWinServerDefines	-DPIXPRIV \
367				-DXFree86Server \
368				-DX_BYTE_ORDER=ByteOrder \
369				XWinXF86ConfigDefines XWinNativeGDIDefines \
370				XWinPrimaryFBDefines \
371				XWinEmulatePseudoDefines \
372				XWinUpdateStatsDefines \
373				XWinClipboardDefines XWinMultiWindowDefines \
374				XWinMultiWindowExtWMDefines \
375				-DDDXBEFORERESET
376#define ServerOSDefines		-DDDXTIME -DDDXOSINIT \
377				-DDDXOSVERRORF -DDDXOSFATALERROR
378#define XkbServerDefines	-DXKB_ALWAYS_USES_SOFT_REPEAT
379#define ServerExtraDefines	-DGCCUSESGAS XWinServerDefines \
380				AllocateLocalDefines
381#define ConnectionFlags		-DTCPCONN -DUNIXCONN
382#define ExtraLibraries
383#define InstUidFlags		-m 4711
384#define UseRgbTxt		YES
385#define ExtraFilesToClean	*.obj *.orig *.rej junk.c *.exe *.dll *.lib *~
386
387/* Flags for which the default in X11.tmpl is not what we want. */
388#ifndef BuildXinerama
389# define BuildXinerama		NO	/* Not supported by XWin Server */
390#endif
391#ifndef BuildXIE
392# define BuildXIE		NO	/* Deprecated */
393#endif
394#ifndef BuildDPMS
395# define BuildDPMS		NO	/* Not supported by XWin Server */
396#endif
397#ifndef BuildXInputExt
398# define BuildXInputExt		YES	/* Not enabled by default */
399#endif
400#ifndef BuildRandR
401# define BuildRandR		YES	/* Not supported by XWin Server */
402#endif
403#ifndef BuildXF86BigfontExt
404# define BuildXF86BigfontExt	YES	/* Not enabled by default */
405#endif
406#ifndef BuildGlxExt
407# define BuildGlxExt		YES	/* Not enabled by default */
408#endif
409#ifndef BuildXprintLib
410# define BuildXprintLib		NO     /* Not enabled when Xprt disabled */
411#endif
412#ifndef BuildXterm
413# define BuildXterm		NO	/* Built separately on Cygwin */
414#endif
415#ifndef BuildXResExt
416# define BuildXResExt		YES	/* Not enabled by default */
417#endif
418#ifndef BuildFreeType
419# define BuildFreeType		YES	/* Not enabled by default */
420#endif
421#ifndef BuildXTrueType
422# define BuildXTrueType		YES	/* Not enabled by default */
423#endif
424
425/* Server build rules */
426#ifndef XnestServer
427# define XnestServer		YES
428#endif
429#ifndef XprtServer
430# define XprtServer		NO
431#endif
432#ifndef XVirtualFramebufferServer
433# define XVirtualFramebufferServer YES
434#endif
435#ifndef XWinServer
436# define XWinServer		YES
437#endif
438
439/* We need libX11 and libXext for the XWin Server */
440#if XWinServer
441# define BuildX11Lib		YES
442#endif
443
444/*
445 * --unix option of Cygwin make fools the standard MakeFlagsToShellFlags macro
446 */
447#define MakeFlagsToShellFlags(makeflags,shellcmd) \
448	for flag in ${MAKEFLAGS} ''; do \				@@\
449	  case "$$flag" in *=*) ;;--*) ;; *[makeflags]*) shellcmd;; esac; done
450
451#define MakeNamedTargetSubdir(dir,flags,subname)\
452	$(MAKE) -C dir $(MFLAGS) $(PARALLELMFLAGS) flags subname
453
454#ifndef ManSuffix
455# define ManSuffix	1
456#endif
457
458#ifndef XtransFailSoft
459#define XtransFailSoft		YES
460#endif
461
462#ifndef HasDevWindows
463# define HasDevWindows		YES
464#endif
465
466#include <cygwin.rules>
467
468#if CrossCompiling
469#include <cross.def>
470#endif
471