1/* MingGW 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 "Xming"
43#endif
44#ifndef XVendorContact
45# define XVendorContact "win32-x11@sources.redhat.com"
46#endif
47
48/* Operating system strings and version */
49#ifndef OSName
50# define OSName			Windows
51#endif
52#ifndef OSVendor
53# define OSVendor		Microsoft
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 ProjectRoot
66# define ProjectRoot 		/usr/X11R6
67#endif
68
69/*
70 * GNU Compiler stuff
71 */
72#ifndef HasGcc3
73# define HasGcc3 NO
74#endif
75#ifndef HasGcc2
76# define HasGcc2 HasGcc3
77#endif
78#ifndef HasGcc
79# define HasGcc HasGcc2
80#endif
81#ifndef HasGcc2ForCplusplus
82# define HasGcc2ForCplusplus HasGcc2
83#endif
84
85#if HasGcc
86# ifndef Gcc28Warnings
87#  if (GccMajorVersion > 2) || \
88      ((GccMajorVersion == 2) && (GccMinorVersion >= 8))
89#   define Gcc28Warnings -Wundef
90#  else
91#   define Gcc28Warnings /* */
92#  endif
93# ifndef HasGcc33
94#  if (((GccMajorVersion == 3) && (GccMinorVersion >= 3)) ||	\
95 	(GccMajorVersion > 3))
96#   define HasGcc33 YES
97#  else
98#   define HasGcc33 NO
99#  endif
100# endif
101# ifndef HasGcc34
102#  if (((GccMajorVersion == 3) && (GccMinorVersion >= 4)) ||	\
103 	(GccMajorVersion > 3))
104#   define HasGcc34 YES
105#  else
106#   define HasGcc34 NO
107#  endif
108# endif
109# endif
110# ifndef GccWarningOptions
111#  if XFree86Devel
112#   define GccWarningOptions -Wall -Wpointer-arith -Wstrict-prototypes \
113			  -Wmissing-prototypes -Wmissing-declarations \
114			  -Wredundant-decls -Wnested-externs Gcc28Warnings
115#  else
116#   define GccWarningOptions -Wall -Wpointer-arith Gcc28Warnings
117#  endif
118# endif
119# ifndef DefaultCCOptions
120#  if defined(UseInstalled)
121#   define DefaultCCOptions
122#  else
123#   define DefaultCCOptions GccWarningOptions
124#  endif
125# endif
126# if defined(UseInstalled)
127#  ifndef UseGccMakeDepend
128#   define UseGccMakeDepend YES
129#  endif
130# endif
131#endif
132
133#define GccUsesGas		YES
134#define UseGas			YES
135#define GnuCpp			YES
136#define UnixCpp /* Just a flag that affects Concat macros in Imake.rules */
137#define HasShadowPasswd		NO
138#define HasLibCrypt		YES
139#define HasPutenv		YES
140#define HasFchown		NO
141#define HasPoll			NO
142#if (OSMajorVersion > 1) || (OSMajorVersion == 1 && OSMinorVersion >= 5)
143# define HasStrlcat		YES
144#endif
145#define HasShm			NO
146
147/* snprintf from windows runtime does return -1 if the buffer is to small */
148#define HasSnprintf		NO
149
150#define HasFfs			NO
151
152#ifndef HasMakefileSafeInclude
153# define HasMakefileSafeInclude YES
154#endif
155
156#define Hastcl			NO
157#define Hastk			NO
158
159#define HasSockets		NO
160#define GzipFontCompression	YES
161#define HasZlib			NO
162#define HasFreetype2	NO
163
164/* We don't need -lm */
165#define MathLibrary		/**/
166
167/*
168 * /lib/libtermcap.a doesn't have tgetent, which is needed for
169 * xc/programs/xterm/resize.exe
170 */
171#define TermcapLibrary		-lncurses.dll
172
173#define AvoidNullMakeCommand	YES
174#define StripInstalledPrograms	YES
175#define CompressAllFonts	YES
176#define Malloc0ReturnsNull	NO
177#define NeedConstPrototypes	YES
178#define NeedFunctionPrototypes	YES
179#define NeedNestedPrototypes	YES
180#define NeedVarargsPrototypes	YES
181#define NeedWidePrototypes	NO
182#define SetTtyGroup		YES
183#define ExpandManNames		YES
184#define HasDlopen		NO
185#define HasGnuMake		YES
186#define UseGccMakeDepend	NO
187#define ThreadedX		YES
188#define HasThreadSafeAPI	YES
189#if !CrossCompiling
190#define CaseSensitiveFileSystem	NO
191#endif
192#define HasWChar32		YES
193#define HasBasename		NO /* basename() in libc */
194
195#define LnCmd			ln -s
196#ifndef CcCmd
197# define CcCmd			gcc
198#endif /* CcCmd */
199#ifndef CplusplusCmd
200# define CplusplusCmd		g++
201#endif /* CplusplusCmd */
202#ifndef AsCmd
203# define AsCmd			as
204#endif /* AsCmd */
205
206#define GccGasOption		-DGCCUSESGAS
207#define AsmDefines		-DUSE_GAS -DGCCUSESGAS
208
209#ifndef LdCmd
210# define LdCmd			gcc -lautomode
211#endif /* LdCmd */
212
213#define MkdirHierCmd		mkdir -p
214
215#ifndef CppCmd
216# define CppCmd			cpp
217#endif /* CppCmd */
218#ifndef YaccCmd
219# define YaccCmd		bison -y
220#endif /* YaccCmd */
221
222#define LexCmd			flex -l
223#define LexLib			-lfl
224#define HasFlex			YES
225#ifndef CrossCompileDir
226# ifndef HasExpat
227#  define HasExpat		YES
228# endif
229# ifndef HasFreetype2
230#  define HasFreetype2		YES
231# endif
232# ifndef HasFontconfig
233#  define HasFontconfig		YES
234# endif
235#endif
236
237/* Cygwin-specific Windows resource compiler command */
238#ifdef CrossCompileDir
239# ifndef WindresCmd
240#  define WindresCmd		Concat3(CrossCompileDir,/,windres)
241# endif
242#else
243# ifndef WindresCmd
244#  define WindresCmd		windres
245# endif
246#endif
247
248#define PreProcessCmd		CcCmd -E
249
250#ifndef PostIncDir
251# ifdef CrossCompileDir
252#  define PostIncDir		`CrossCompileDir/CcCmd --print-libgcc-file-name | sed 's,\\\\,/,g' | sed 's,libgcc.a,include,'`
253# else
254#  define PostIncDir		`CcCmd --print-libgcc-file-name | sed 's,\\\\,/,g' | sed 's,libgcc.a,include,'`
255# endif
256#endif
257#ifndef ExtraIncDir
258# ifdef CrossCompileDir
259#  define ExtraIncDir		CrossCompileDir/../include/w32api
260# else
261#  define ExtraIncDir		/usr/include/w32api
262# endif
263#endif
264
265#ifndef BourneShell
266/*
267 * This will cause builds/installs to terminate on errors, as on other
268 * platforms.
269 */
270#define BourneShell		/bin/sh -e
271#endif
272
273#define LdCombineFlags		-r
274
275#ifndef DefaultCCOptions
276# define DefaultCCOptions	-Wall -Wpointer-arith
277#endif
278
279/* Cygwin 1.5.x now includes alloca */
280#if OSMinorVersion >= 5
281# define AllocateLocalDefines	-DINCLUDE_ALLOCA_H
282#else
283# define AllocateLocalDefines	-DNO_ALLOCA
284#endif
285
286#ifndef OptimizedCDebugFlags
287# define OptimizedCDebugFlags	-O2 -fno-strength-reduce
288#endif
289
290/*
291 * -DFD_SETSIZE=256 is needed for xfs and the xserver. cygwin defines the
292 * FD_SETSIZE as 64 but some code expects it to be larger.
293 */
294#define StandardDefines		-D__i386__ -DWIN32_LEAN_AND_MEAN -DX_LOCALE \
295				-D_X86_ -DWIN32 -D_XOPEN_SOURCE \
296				-D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE \
297				-D_SVID_SOURCE -D_GNU_SOURCE -DFD_SETSIZE=1024 \
298				-DXResExtension
299#define XawI18nDefines		-DHAS_WCHAR_H -DHAS_WCTYPE_H \
300				-DHAS_ISW_FUNCS -DNO_WIDEC_H
301#define StandardCppOptions	-traditional
302
303/* Cygwin shared memory requires cygipc package or cygserver. */
304#if UseCygIPC
305# if ThreadedX
306#  define StandardCppDefines	-DHAS_THREADS -DHAS_SHM StandardDefines
307# else
308#  define StandardCppDefines	-DHAS_SHM StandardDefines
309# endif
310#else
311# if ThreadedX
312#  define StandardCppDefines	-DHAS_THREADS StandardDefines
313# else
314#  define StandardCppDefines	StandardDefines
315# endif
316#endif
317
318#define BuildIPv6		NO
319#define BuildLBX		NO
320
321/*
322 * This requires the pthreads-win32 library
323 * It is available from http://www.sourceware.org/pthreads-win32
324 */
325#ifndef HasPThreads
326# define HasPThreads		YES
327#endif
328
329/* Most libraries do not compile with mingw. Build only the servers. */
330#ifndef BuildServersOnly
331# define BuildServersOnly	YES
332#endif
333
334/* Enable those parts that do work and are required for running Xming */
335#ifndef BuildXextLib
336# define BuildXextLib		YES
337#endif
338#ifndef BuildXkbcomp
339# define BuildXkbcomp		YES
340#endif
341
342/* XWin Server specific build flags */
343#ifndef GlxUseWindows
344# define GlxUseWindows		YES
345#endif
346#if !GlxUseWindows
347# define GlxExtraDefines -DAPIENTRY=GLAPIENTRY
348#endif
349
350#ifndef BuildXWinClipboard
351# define BuildXWinClipboard	HasPThreads
352#endif
353#ifndef BuildXWinEmulatePseudo
354# define BuildXWinEmulatePseudo	NO
355#endif
356#ifndef BuildXWinMultiWindow
357# define BuildXWinMultiWindow	HasPThreads
358#endif
359#ifndef BuildXWinMultiWindowExtWM
360# define BuildXWinMultiWindowExtWM HasPThreads
361#endif
362#ifndef BuildXWinNativeGDI
363# define BuildXWinNativeGDI	NO
364#endif
365#ifndef BuildXWinPrimaryFB
366# define BuildXWinPrimaryFB	NO
367#endif
368#ifndef BuildXWinUpdateStats
369# define BuildXWinUpdateStats	NO
370#endif
371#ifndef BuildXWinXF86Config
372# define BuildXWinXF86Config	NO
373#endif
374
375/* XWin specific build flags - 1st order dependency */
376#if BuildXWinMultiWindowExtWM && !defined(BuildWindowsWMLibrary)
377# define BuildWindowsWMLibrary	YES
378#elif !defined(BuildWindowsWMLibrary)
379# define BuildWindowsWMLibrary	NO
380#endif /* BuildXWinMultiWindowExtWM && BuildWindowsWMLibrary */
381
382#if (BuildXWinClipboard || BuildXWinMultiWindow || BuildXWinMultiWindowExtWM) && !defined(BuildX11Lib)
383#  define BuildX11Lib YES
384#endif
385
386/* XWin Server specific defines */
387#if BuildXWinClipboard
388# define XWinClipboardDefines	-DXWIN_CLIPBOARD
389#else
390# define XWinClipboardDefines
391#endif /* BuildXWinClipboard */
392#if BuildXWinEmulatePseudo
393# define XWinEmulatePseudoDefines -DXWIN_EMULATEPSEUDO
394#else
395# define XWinEmulatePseudoDefines
396#endif /* BuildXWinEmulatePseudo */
397#if BuildXWinMultiWindow
398# define XWinMultiWindowDefines	-DXWIN_MULTIWINDOW
399#else
400# define XWinMultiWindowDefines
401#endif /* BuildXWinMultiWindow */
402#if BuildXWinMultiWindowExtWM
403# define BuildRootless		YES
404# define XWinMultiWindowExtWMDefines -DXWIN_MULTIWINDOWEXTWM
405#else /* BuildXWinMultiWindowExtWM */
406# define XWinMultiWindowExtWMDefines
407#endif /* BuildXWinMultiWindowExtWM */
408#if BuildXWinNativeGDI
409# define XWinNativeGDIDefines	-DXWIN_NATIVEGDI
410#else
411# define XWinNativeGDIDefines
412#endif /* BuildXWinNativeGDI */
413#if BuildXWinPrimaryFB
414# define XWinPrimaryFBDefines	-DXWIN_PRIMARYFB
415#else
416# define XWinPrimaryFBDefines
417#endif /* BuildXWinPrimaryFB */
418#if BuildXWinUpdateStats
419# define XWinUpdateStatsDefines	-DXWIN_UPDATESTATS
420#else
421# define XWinUpdateStatsDefines
422#endif /* BuildXWinUpdateStats */
423#if BuildXWinXF86Config
424# define XWinXF86ConfigDefines	-DXWIN_XF86CONFIG
425#else
426# define XWinXF86ConfigDefines
427#endif /* BuildXWinXF86Config */
428
429#if HasPThreads
430# define XWinPThreadsDefines -DPTW32_DLLPORT=
431#else
432# define XWinPThreadsDefines
433#endif /* HasPThreads */
434
435/*
436 * XFree86Server is defined for the w32api headers, which protects some
437 * colliding names with #ifdef XFree86Server.
438 */
439#define XWinServerDefines	-DPIXPRIV \
440				-DXFree86Server \
441				-DX_BYTE_ORDER=ByteOrder \
442				XvExtensionDefines \
443				XWinXF86ConfigDefines XWinNativeGDIDefines \
444				XWinPrimaryFBDefines \
445				XWinEmulatePseudoDefines \
446				XWinUpdateStatsDefines \
447				XWinClipboardDefines XWinMultiWindowDefines \
448				XWinMultiWindowExtWMDefines \
449				XWinPThreadsDefines \
450				-DDDXBEFORERESET
451#define ServerOSDefines		-DDDXTIME -DDDXOSINIT \
452				-DDDXOSVERRORF -DDDXOSFATALERROR
453#define XkbServerDefines	-DXKB_ALWAYS_USES_SOFT_REPEAT
454#define ServerExtraDefines	-DGCCUSESGAS XWinServerDefines \
455				AllocateLocalDefines
456#define ConnectionFlags		-DTCPCONN
457#define ExtraLibraries
458#define InstUidFlags		-m 4711
459#define UseRgbTxt		YES
460#define ExtraFilesToClean	*.obj *.orig *.rej junk.c *.exe *.dll *.lib *~
461
462/* Flags for which the default in X11.tmpl is not what we want. */
463#ifndef BuildXinerama
464# define BuildXinerama		NO	/* Not supported by XWin Server */
465#endif
466#ifndef BuildXIE
467# define BuildXIE		NO	/* Deprecated */
468#endif
469#ifndef BuildDPMS
470# define BuildDPMS		NO	/* Not supported by XWin Server */
471#endif
472#ifndef BuildXInputExt
473# define BuildXInputExt		YES	/* Not enabled by default */
474#endif
475#ifndef BuildRandR
476# define BuildRandR		YES	/* Not supported by XWin Server */
477#endif
478#ifndef BuildXF86BigfontExt
479# define BuildXF86BigfontExt	NO
480#endif
481#ifndef BuildGlxExt
482# define BuildGlxExt		YES
483#endif
484#ifndef BuildXprintLib
485# define BuildXprintLib		NO
486#endif
487#ifndef BuildXprint
488# define BuildXprint		NO
489#endif
490#ifndef BuildXterm
491# define BuildXterm		NO	/* Built separately on Cygwin */
492#endif
493#ifndef BuildXResExt
494# define BuildXResExt		YES	/* Not enabled by default */
495#endif
496#ifndef BuildFreeType
497# define BuildFreeType		YES	/* Not enabled by default */
498#endif
499#ifndef BuildXTrueType
500# define BuildXTrueType		YES	/* Not enabled by default */
501#endif
502
503/* Server build rules */
504#ifndef XnestServer
505# define XnestServer		NO
506#endif
507#ifndef XprtServer
508# define XprtServer		NO
509#endif
510#ifndef XVirtualFramebufferServer
511# define XVirtualFramebufferServer NO
512#endif
513#ifndef XWinServer
514# define XWinServer		YES
515#endif
516
517/*
518 * --unix option of Cygwin make fools the standard MakeFlagsToShellFlags macro
519 */
520#define MakeFlagsToShellFlags(makeflags,shellcmd) \
521	for flag in ${MAKEFLAGS} ''; do \				@@\
522	  case "$$flag" in *=*) ;;--*) ;; *[makeflags]*) shellcmd;; esac; done
523
524#define MakeNamedTargetSubdir(dir,flags,subname)\
525	$(MAKE) -C dir $(MFLAGS) $(PARALLELMFLAGS) flags subname
526
527#ifndef ManSuffix
528# define ManSuffix	1
529#endif
530
531#ifndef XtransFailSoft
532#define XtransFailSoft		YES
533#endif
534
535#ifndef HasDevWindows
536# define HasDevWindows		NO
537#endif
538
539#ifndef RelocateProjectRoot
540# define RelocateProjectRoot	YES
541#endif
542
543#ifndef UseInstalledOnCrossCompile
544# define UseInstalledOnCrossCompile YES
545#endif
546
547#include <mingw.rules>
548
549#if CrossCompiling
550#include <cross.def>
551#endif
552