linux.cf revision b8df70be
1XCOMM $XdotOrg: xc/config/cf/linux.cf,v 1.24 2005/03/06 01:05:00 branden Exp $
2XCOMM platform:  $Xorg: linux.cf,v 1.3 2000/08/17 19:41:47 cpqbld Exp $
3
4
5
6
7
8XCOMM platform:  $XFree86: xc/config/cf/linux.cf,v 3.220 2003/12/30 22:38:33 tsi Exp $
9
10#ifndef LinuxElfDefault
11# define LinuxElfDefault	YES
12#endif
13
14#ifndef UseElfFormat
15# define UseElfFormat		LinuxElfDefault
16#endif
17
18#ifndef OSBinaryType
19# if UseElfFormat
20#  define OSBinaryType		[ELF]
21# else
22#  ifdef AlphaArchitecture
23#   define OSBinaryType		[ECOFF]
24#  else
25#   define OSBinaryType		[a.out]
26#  endif
27# endif
28#endif
29
30#ifndef OSName
31# define OSName			DefaultOSName OSBinaryType
32#endif
33
34#ifndef OSVendor
35# define OSVendor		/**/
36#endif
37#ifndef OSMajorVersion
38# define OSMajorVersion		DefaultOSMajorVersion
39#endif
40#ifndef OSMinorVersion
41# define OSMinorVersion		DefaultOSMinorVersion
42#endif
43#ifndef OSTeenyVersion
44# define OSTeenyVersion		DefaultOSTeenyVersion
45#endif
46
47#ifndef LinuxDistribution
48# define LinuxDistribution	DefaultLinuxDistribution
49/*
50  Add "#define LinuxDistribution Linux<mumble>" to your site.def or host.def.
51  Currently only LinuxSuSE, LinuxRedHat and LinuxDebian will be figured out
52  automatically.
53  Valid values are (from the list at www.linux.org in Oct. '97):
54    LinuxUnknown    (0)
55    LinuxSuSE       (1)
56    LinuxCaldera    (2)
57    LinuxCraftworks (3)
58    LinuxDebian     (4)
59    LinuxInfoMagic  (5)
60    LinuxKheops     (6)
61    LinuxPro        (7)
62    LinuxRedHat     (8)
63    LinuxSlackware  (9)
64    LinuxTurbo      (10)
65    LinuxWare       (11)
66    LinuxYggdrasil  (12)
67*/
68#endif
69#ifndef LinuxDistName
70# define LinuxDistName		DefaultLinuxDistName
71#endif
72#ifndef LinuxCLibMajorVersion
73# define LinuxCLibMajorVersion	DefaultLinuxCLibMajorVersion
74#endif
75#ifndef LinuxCLibMinorVersion
76# define LinuxCLibMinorVersion	DefaultLinuxCLibMinorVersion
77#endif
78#ifndef LinuxCLibTeenyVersion
79# define LinuxCLibTeenyVersion	DefaultLinuxCLibTeenyVersion
80#endif
81
82#ifndef HasGhostScript
83# define HasGhostScript YES
84#endif
85#ifndef BuildPDFdocs
86# define BuildPDFdocs NO
87#endif
88
89#ifndef LinuxBinUtilsMajorVersion
90# define LinuxBinUtilsMajorVersion	DefaultLinuxBinUtilsMajorVersion
91#endif
92
93XCOMM operating system:  OSName (OSMajorVersion./**/OSMinorVersion./**/OSTeenyVersion)
94XCOMM libc:	(LinuxCLibMajorVersion./**/LinuxCLibMinorVersion./**/LinuxCLibTeenyVersion)
95XCOMM binutils:	(LinuxBinUtilsMajorVersion)
96
97#if LinuxDistribution == LinuxDebian
98# if !defined(NothingOutsideProjectRoot) || !NothingOutsideProjectRoot
99#  define SystemManDirectory	/usr/share/man
100# endif
101# define HasPam			YES
102/* un-comment this when it is un-broken */
103/* # define JoystickSupport YES */
104# if !defined(NothingOutsideProjectRoot) || !NothingOutsideProjectRoot
105#  define XAppLoadDir		EtcX11Directory/app-defaults
106# define XFileSearchPathDefault	Concat4(EtcX11Directory/%L/%T/%N%C,%S:EtcX11Directory/%l/%T/%N%C,%S:EtcX11Directory/%T/%N%C,%S:EtcX11Directory/%L/%T/%N%S:EtcX11Directory/%l/%T/%N%S:EtcX11Directory/%T/%N%S):Concat4($(LIBDIR)/%L/%T/%N%C,%S:$(LIBDIR)/%l/%T/%N%C,%S:$(LIBDIR)/%T/%N%C,%S:$(LIBDIR)/%L/%T/%N%S:$(LIBDIR)/%l/%T/%N%S:$(LIBDIR)/%T/%N%S)
107/* the relative symlink created by this rule causes problems for us */
108# if defined(InstallAppDefFiles) && InstallAppDefFiles
109#  define InstallAppDefaultsLong(file,class)				@@\
110InstallNamedTarget(install,file.ad,$(INSTAPPFLAGS),$(XAPPLOADDIR),class)
111# else
112#  define InstallAppDefaultsLong(file,class)				@@\
113InstallNamedTargetNoClobber(install,file.ad,$(INSTAPPFLAGS),$(XAPPLOADDIR),class)
114# endif /* InstallAppDefFiles */
115# endif /* !defined(NothingOutsideProjectRoot) || !NothingOutsideProjectRoot */
116# define SharedLibXdmGreet	NO
117# define LinkGLToUsrInclude	NO
118# define LinkGLToUsrLib		NO
119# define SharedLibFont		NO
120# define SharedLibGlu		YES
121# define NormalLibGlu		YES
122# define FSUseSyslog		YES
123
124# define BuildLibGlxWithoutPIC  NO
125
126# define DriverManSuffix       4x
127# define DriverManDir          $(MANSOURCEPATH)4
128
129# define MiscManSuffix         7x
130# define MiscManDir            $(MANSOURCEPATH)7
131
132/*
133 *
134 *
135# define DebianMaintainer	YES
136 *
137 *
138 */
139
140# ifdef DebianMaintainer
141#  ifndef XorgCustomVersion
142#   define XorgCustomVersion		"Debian"
143#  endif
144#  ifndef BuilderEMailAddr
145#   define BuilderEMailAddr		"debian-x@lists.debian.org"
146#  endif
147#  define XFree86Devel			YES
148#  define BuildAllSpecsDocs		YES
149#  define InstallXinitConfig		YES
150#  define InstallXdmConfig		YES
151#  define InstallFSConfig		YES
152#  define DebuggableLibraries		YES
153#  define ForceNormalLib		YES
154#  define BuildSpecsDocs		YES
155#  define SpecsDocDirs			CTEXT GL ICCCM X11 Xext Xv i18n xterm
156#  define BuildRman			NO
157#  define BuildHtmlManPages		NO
158
159/* we build-depend on libfreetype6-dev (FreeType 2.x) */
160#   define BuildFreetype2Library	NO
161#   define HasFreetype2			YES
162/* m68k has no 2.4 kernel yet */
163#   ifndef Mc68020Architecture
164#    define HasLinuxInput		YES
165#   endif
166#   define HasXdmAuth			YES
167#   define HasLatex			YES
168/* at present, glide2 only works on i386 */
169#   if defined(__linux__) && defined(i386Architecture)
170#    define HasGlide2			YES
171#    define Glide2IncDir		/usr/include/glide
172#   endif /* __linux__ && i386Architecture */
173/* at present, glide3 only works on alpha, amd64, i386 and ia64 */
174#   if defined(__linux__) && (defined(i386Architecture) || \
175       defined(AlphaArchitecture) || defined(ia64Architecture) || \
176       defined(AMD64Architecture))
177#    define HasGlide3			YES
178#    define Glide3IncDir		/usr/include/glide3
179#   endif /* __linux__ && (i386Architecture || AlphaArchitecture || \
180             ia64Architecture || AMD64Architecture) */
181/* extended instruction set support */
182#   ifdef i386Architecture
183#   define HasX86Support		YES
184#    define HasMMXSupport		YES
185#    define Has3DNowSupport		YES
186/* 2.4 is not yet the official (or predominant) kernel in unstable */
187#    define HasSSESupport		NO
188#   endif /* i386Architecture */
189# endif /* DebianMaintainer */
190#endif /* LinuxDebian */
191
192#if LinuxDistribution == LinuxRedHat
193# define FSUseSyslog		YES
194# define BuildRman		NO
195# define BuildHtmlManPages	NO
196# define ProjectRoot		/usr
197# define ManPath		/usr/share/man
198# define XAppLoadDir		/usr/share/X11/app-defaults
199# define ConfigDir		/usr/share/X11/config
200#endif
201
202#ifndef HasDevRandom
203# define HasDevRandom YES
204# ifndef RandomDeviceName
205#  define RandomDeviceName /dev/urandom
206# endif
207#endif
208
209/*
210 * The Linux BinUtils major version.  25 => 2.5.x, which is what is included
211 * with Slackware 3.0
212 *
213 * This remains for compatibility only.
214 *
215 */
216#ifndef BinUtilsMajorVersion
217# define BinUtilsMajorVersion	LinuxBinUtilsMajorVersion
218#endif
219
220#if (LinuxCLibMajorVersion >= 6 || LinuxDistribution == LinuxSuSE)
221# define LinuxLocaleDefines	/**/
222#else
223# define LinuxLocaleDefines	-DX_LOCALE
224#endif
225
226#ifndef  LinuxAdditionalIncludes
227# define LinuxAdditionalIncludes	/**/
228#endif
229
230#ifndef LinuxGnuSourceDefines
231# ifdef UseInstalled
232#  define LinuxGnuSourceDefines	/**/
233# else
234#  define LinuxGnuSourceDefines	-D_GNU_SOURCE
235# endif
236#endif
237
238#if LinuxCLibMajorVersion >= 6
239# define LinuxSourceDefines	-D_POSIX_C_SOURCE=199309L \
240				-D_POSIX_SOURCE -D_XOPEN_SOURCE \
241				-D_BSD_SOURCE -D_SVID_SOURCE \
242                                -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 \
243				LinuxAdditionalIncludes LinuxGnuSourceDefines \
244				LinuxLocaleDefines
245# define XawI18nDefines		-DHAS_WCHAR_H -DHAS_WCTYPE_H -DNO_WIDEC_H
246# define HasPosixThreads	YES
247# define ThreadedX		YES
248# define HasThreadSafeAPI	YES
249# define ThreadsLibraries	-lpthread
250# define SystemMTDefines	-D_REENTRANT
251# ifndef HasLibCrypt
252#  define HasLibCrypt		YES
253# endif
254/* netscape wraps select but not poll as of communicator 4.72 */
255# ifndef HasPoll
256#  define HasPoll		NO
257# endif
258#else
259# define LinuxSourceDefines	-D_POSIX_SOURCE -D_POSIX_C_SOURCE=2 \
260				-D_BSD_SOURCE -D_SVID_SOURCE \
261				LinuxGnuSourceDefines LinuxLocaleDefines
262# define XawI18nDefines		-DUSE_XWCHAR_STRING -DUSE_XMBTOWC
263# ifndef HasLibCrypt
264#  define HasLibCrypt		NO
265# endif
266# ifndef HasBasename
267#  define HasBasename		NO
268# endif
269  /* Proliferation of C99isms makes -ansi unpalatable... */
270# if !defined(DefaultCCOptions) && !defined(UseInstalled) && HasGcc
271#  define DefaultCCOptions	GccWarningOptions
272# endif
273#endif
274
275#ifndef InstallXloadSetGID
276#define InstallXloadSetGID	NO
277#endif
278
279/*
280 * XXX Check which versions of Linux really have IPv6.  glibc 2.0 on
281 * Red Hat 5.2 doesn't.
282 */
283#if LinuxCLibMajorVersion < 6 || \
284    (LinuxCLibMajorVersion == 6 && LinuxCLibMinorVersion == 0)
285#define BuildIPv6		NO
286#endif
287
288/* <linux/input.h> support mainly for USB support */
289#ifndef HasLinuxInput
290# if defined(__linux__) && (OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion >= 4))
291#  define HasLinuxInput YES
292# else
293#  define HasLinuxInput NO
294# endif
295#endif
296
297#ifndef JoystickSupport
298# define JoystickSupport	NO	/* joystick driver is broken */
299#endif
300
301/* <linux/joystick.h> appeared in 2.1.45 (officially) */
302#ifndef HasLinuxSupport
303# if defined(__linux__) && (JoystickSupport || \
304     (OSMajorVersion > 2) || \
305     ((OSMajorVersion == 2) && (OSMinorVersion > 1)) || \
306     ((OSMajorVersion == 2) && (OSMinorVersion == 1) && (OSTeenyVersion >= 45)))
307#  define HasLinuxJoystick	YES
308# else
309#  define HasLinuxJoystick	NO
310# endif
311#endif
312
313/* Libtool on linux always uses minor numbers */
314#define LibtoolMinorVersions	YES
315
316/* On x86, determine whether to build with MTRR support */
317#ifndef HasMTRRSupport
318# if defined (i386Architecture) || defined (AMD64Architecture)
319#  if OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion > 1) || \
320      (OSMajorVersion == 2 && OSMinorVersion == 1 && OSTeenyVersion >= 99)
321#   define HasMTRRSupport	YES
322#  else
323#   define HasMTRRSupport	NO
324#  endif
325# else
326#  define HasMTRRSupport	NO	/* no for non-ix86 */
327# endif
328#endif
329
330#ifndef XF86INT10_BUILD
331# if defined(__linux__) && defined(i386Architecture)
332#  define XF86INT10_BUILD	X86VM
333# elif defined(__linux__) && defined(AMD64Architecture)
334#  define XF86INT10_BUILD	X86EMU_OS
335# else
336#  define XF86INT10_BUILD	X86EMU_GENERIC
337# endif
338#endif
339
340/*
341 * Let the OS restore console fonts instead of the generic VGA
342 * layer. This exists for Linux only at the moment so put it
343 * here.
344 */
345#ifndef DoOSFontRestore
346# define DoOSFontRestore YES
347#endif
348
349/* Should we check the OS version to determine if the kernel supports it? */
350#if DoOSFontRestore
351# ifndef FontRestoreCheckOsVersion
352#  define FontRestoreCheckOsVersion YES
353# endif
354#endif
355
356/* The DRM module requires kernel services that appeared in late 2.1.x
357   kernels and are known to be present in 2.2.x kernels. */
358#ifndef BuildXF86DRI
359#  if defined(AlphaArchitecture)
360#    define BuildXF86DRI	YES
361#  elif defined(Arm32Architecture)
362#    define BuildXF86DRI	NO
363#  elif defined(HPArchitecture)
364#    define BuildXF86DRI	YES
365#  elif defined(i386Architecture)
366#    if (defined(__linux__) && (OSMajorVersion > 2 || (OSMajorVersion == 2 && \
367        OSMinorVersion >= 2))) || \
368        defined(__FreeBSD_kernel__)
369#      define BuildXF86DRI	YES
370#    else
371#      define BuildXF86DRI	NO
372#    endif
373#  elif defined(ia64Architecture)
374#    define BuildXF86DRI	YES
375#  elif defined(Mc68020Architecture)
376#    define BuildXF86DRI	NO
377#  elif defined(MipsArchitecture)
378#    define BuildXF86DRI	NO
379#  elif defined(PpcArchitecture)
380#    define BuildXF86DRI	YES
381#  elif defined(Ppc64Architecture)
382#    define BuildXF86DRI	NO
383#  elif defined(s390Architecture) || defined(s390xArchitecture)
384#    define BuildXF86DRI	NO
385#  elif defined(SparcArchitecture)
386#    define BuildXF86DRI	YES
387#  elif defined(SuperHArchitecture)
388#    define BuildXF86DRI	NO
389#  elif defined(AMD64Architecture)
390#    define BuildXF86DRI	YES
391#  else
392#    define BuildXF86DRI	NO
393#  endif
394#endif
395
396/*
397 * Build shared libGL and the DRI modules without -fPIC on some architectures.
398 * This improves performance.
399 */
400#ifndef BuildLibGlxWithoutPIC
401# if BuildXF86DRI
402#  if defined(i386Architecture)
403#   define BuildLibGlxWithoutPIC	YES
404#  endif
405# endif
406#endif
407
408#ifndef HasAgpGart
409#  if defined(i386Architecture) || defined(ia64Architecture) || defined(AMD64Architecture)
410     /* The AGPGART header file is included in os-support/linux, which
411        allows all drivers that depend on AGP to build properly. */
412#    define HasAgpGart	YES
413#  else
414#    define HasAgpGart	NO
415#  endif
416#endif
417
418/*
419 * Support for Intel's SSE Native Instructions, also known as the
420 * Streaming SIMD Extensions, was introduced in the 2.4.x kernels.
421 */
422#ifndef HasSSESupport
423#  if defined(i386Architecture)
424#    if OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion >= 4)
425#      define HasSSESupport		YES
426#    else
427#      define HasSSESupport		NO
428#    endif
429#  else
430#    define HasSSESupport		NO
431#  endif
432#endif
433
434/*
435 * Support for MMX isn't present in the Assembler used in Red Hat 4.2, so
436 * don't enable it for libc5 as a reasonable default.
437 */
438#ifndef HasMMXSupport
439#  if defined(i386Architecture)
440#    if (LinuxCLibMajorVersion > 5)
441#      define HasMMXSupport		YES
442#    else
443#      define HasMMXSupport		NO
444#    endif
445#  else
446#    define HasMMXSupport		NO
447#  endif
448#endif
449
450/*
451 * Support for 3DNow isn't present in the Assembler used in Red Hat 4.2, so
452 * don't enable it for libc5 as a reasonable default.
453 *
454 * XXX This is preliminary.
455 */
456#ifndef Has3DNowSupport
457#  if defined(i386Architecture)
458#    if (LinuxCLibMajorVersion > 5)
459#      define Has3DNowSupport		YES
460#    else
461#      define Has3DNowSupport		NO
462#    endif
463#  else
464#    define Has3DNowSupport		NO
465#  endif
466#endif
467
468/*
469 * The Rush extension support.
470 */
471#ifndef BuildXF86RushExt
472# define BuildXF86RushExt	YES
473#endif
474
475#if defined(__linux__) && !defined(LinuxFBDevSupport)
476# define LinuxFBDevSupport	YES
477#endif
478
479/* For compatibility */
480#define SourceDefines		LinuxSourceDefines
481
482#define BuildLibPathVar		LD_LIBRARY_PATH
483#define GccUsesGas		YES
484#define UseGas			YES
485#define GnuCpp			YES
486#if UseElfFormat
487# ifndef HasDlopen
488#  define HasDlopen		YES
489# endif
490#endif
491#define HasWeakSymbols		UseElfFormat
492#ifndef HasShadowPasswd
493# if UseElfFormat
494#  define HasShadowPasswd	YES
495# else
496#  define HasShadowPasswd	NO
497# endif
498#endif
499#define HasPutenv		YES
500#ifndef HasShm
501# define HasShm			YES
502#endif
503
504/* Use SecureRPC (used for SUN-DES-1 auth. and other goodies) when
505 * glibc has support for it */
506#ifndef HasSecureRPC
507# if !(LinuxCLibMajorVersion < 6 || \
508       (LinuxCLibMajorVersion == 6 && LinuxCLibMinorVersion < 3))
509#  define HasSecureRPC          YES
510# endif
511#endif
512
513#define HasSockets		YES
514#if UseElfFormat || defined(AlphaArchitecture)
515#ifndef HasSnprintf
516#define HasSnprintf		YES
517#endif
518#define HasMkstemp		YES
519#endif
520/* getresuid() appeared in 2.1.4, and getresgid in 2.1.44 */
521#if !defined(HasGetresuid) && \
522 (((OSMajorVersion*100000) + (OSMinorVersion*1000) + OSTeenyVersion) >= 201044)
523#define HasGetresuid		YES
524#endif
525#if OSMajorVersion >= 2
526#define HasUsableFileMmap	YES
527#endif
528#ifndef HasNCurses
529#define HasNCurses		YES
530#endif
531
532#ifndef HasGroff
533#define HasGroff		YES
534#endif
535
536#ifndef HasZlib
537#define HasZlib			YES
538#endif
539
540#ifndef HasLibpng
541#define HasLibpng		YES
542#endif
543
544#ifndef HasExpat
545# define HasExpat		YES
546#endif
547
548#ifndef HasFreetype2
549# define HasFreetype2		YES
550#endif
551
552#define AvoidNullMakeCommand	YES
553#ifndef DebuggableLibraries
554#define DebuggableLibraries	NO
555#endif
556#define CompressAllFonts	YES
557#define Malloc0ReturnsNull	YES
558#define NeedConstPrototypes	YES
559#define NeedFunctionPrototypes	YES
560#define NeedNestedPrototypes	YES
561#define NeedVarargsPrototypes	YES
562#ifndef NeedWidePrototypes
563#define NeedWidePrototypes	NO
564#endif
565#define SetTtyGroup		YES
566
567#ifndef UseStaticTermcapLib
568#define UseStaticTermcapLib	NO
569#endif
570
571#ifndef HasCookieMaker
572#define HasCookieMaker		YES
573#define MkCookieCmd		mcookie
574#endif
575
576#ifndef BourneShell
577/*
578 * This will cause builds/installs to terminate on errors, as on other
579 * platforms.
580 */
581#define BourneShell		/bin/sh -e
582#endif
583
584#define MkdirHierCmd		mkdir -p
585
586#ifndef HaveLib64
587# if defined (AMD64Architecture) || defined (s390xArchitecture) || defined (Ppc64Architecture) || defined (AArch64Architecture)
588#  define HaveLib64	YES
589# else
590#  define HaveLib64	NO
591# endif
592#endif
593
594#if UseElfFormat
595# ifndef DoLoadableServer
596#  if defined(MipsArchitecture) || defined(SuperHArchitecture)
597#   define DoLoadableServer	NO
598#  else
599#   define DoLoadableServer	YES
600#  endif
601# endif
602#endif
603
604
605#if LinuxElfDefault
606# if UseElfFormat
607#  ifdef MipsArchitecture
608#   ifndef AsCmd
609#     define AsCmd		gcc -c -x assembler-with-cpp
610#   endif
611#   ifndef MakeDllModules
612#     define MakeDllModules	YES
613#   endif
614#  endif /* MipsArchitecure */
615#  if defined (i386Architecture) && ((GccMajorVersion >3) \
616   || ((GccMajorVersion == 3) &&  (GccMinorVersion >= 1)))
617#   ifndef CcCmd
618#    define CcCmd		gcc -m32
619#   endif
620#   ifndef CplusplusCmd
621#    define CplusplusCmd	c++ -m32
622#   endif
623#  endif
624#  if defined (Ppc64Architecture)
625#   ifndef CcCmd
626#    define CcCmd		gcc -m64
627#   endif
628#   ifndef CplusplusCmd
629#    define CplusplusCmd	c++ -m64
630#   endif
631#  endif
632#  ifndef CcCmd
633#   define CcCmd		gcc
634#   define CplusplusCmd		c++
635#  endif
636#  ifndef AsCmd
637#   define AsCmd		CcCmd -c -x assembler
638#  endif
639#  define AsmDefines		-D__ELF__
640#  ifndef LdCmd
641#   define LdCmd		CcCmd -nostdlib
642#  endif
643#  ifndef LinuxUsesNcurses
644#   if LinuxCLibMajorVersion >= 6 || (LinuxDistribution == LinuxSuSE)
645#    define LinuxUsesNcurses	YES
646#   else
647#    define LinuxUsesNcurses	NO
648#   endif
649#  endif
650#  ifndef TermcapLibrary
651#   if UseStaticTermcapLib
652#    if LinuxUsesNcurses
653#     if !HaveLib64
654#      define TermcapLibrary	StaticLibrary(/usr/lib,ncurses)
655#     else
656#      define TermcapLibrary	StaticLibrary(/usr/lib64,ncurses)
657#     endif
658#    else
659#     if !HaveLib64
660#      define TermcapLibrary	StaticLibrary(/usr/lib/termcap,termcap)
661#     else
662#      define TermcapLibrary	StaticLibrary(/usr/lib64/termcap,termcap)
663#     endif
664#    endif
665#   else
666#    if LinuxUsesNcurses
667#     define TermcapLibrary	-lncurses
668#    else
669#     define TermcapLibrary	-ltermcap
670#    endif
671#   endif
672#  endif
673# else /* UseElfFormat */
674#  ifdef AlphaArchitecture
675#   define CcCmd		gcc -b alpha-linuxecoff
676#   define CplusplusCmd		g++ -b alpha-linuxecoff
677#   define AsCmd		CcCmd -c -x assembler
678#   define LdCmd		CcCmd -nostdlib -Wl,"-m alpha"
679#   define AsmDefines		-DUSE_GAS -U__ELF__
680#  endif /* AlphaArchitecture */
681#  ifdef HPArchitecture
682#   define CcCmd		gcc
683#   define CplusplusCmd		g++
684#   define AsCmd		CcCmd -c -x assembler
685#   define LdCmd		CcCmd -nostdlib
686#   define AsmDefines		-DUSE_GAS -U__ELF__
687#  endif /* HPArchitecture */
688#  ifdef i386Architecture
689#   define CcCmd		gcc -b i486-linuxaout
690#   define CplusplusCmd		g++ -b i486-linuxaout
691#   define AsCmd		CcCmd -c -x assembler
692#   define LdCmd		CcCmd -nostdlib -Wl,"-m i386linux"
693#   define AsmDefines		-DUSE_GAS -U__ELF__
694#  endif /* i386Architecture */
695#  ifdef ia64Architecture
696#   define CcCmd		gcc
697#   define CplusplusCmd		g++
698#   define AsCmd		CcCmd -c -x assembler
699#   define LdCmd		CcCmd -nostdlib
700#   define AsmDefines		-DUSE_GAS -U__ELF__
701#  endif /* ia64Architecture */
702#  ifdef Mc68020Architecture
703#   define CcCmd		gcc -b m68k-linuxaout
704#   define CplusplusCmd		g++ -b m68k-linuxaout
705#   define AsCmd		CcCmd -c -x assembler
706#   define LdCmd		CcCmd -nostdlib -Wl,"-m m68klinux"
707#   define AsmDefines		-DUSE_GAS -U__ELF__
708#  endif /* Mc68020Architecture */
709#  ifdef AMD64Architecture
710#   define CcCmd		gcc
711#   define CplusplusCmd		g++
712#   define AsCmd		CcCmd -c -x assembler
713#   define LdCmd		CcCmd -nostdlib
714#   define AsmDefines		-DUSE_GAS -U__ELF__
715#  endif /* AMD64Architecture */
716# endif /* UseElfFormat */
717#else
718# if UseElfFormat
719#  ifdef AlphaArchitecture
720#   define CcCmd		gcc -b alpha-linux
721#   define AsCmd		CcCmd -c -x assembler
722#   define LdCmd		CcCmd -nostdlib -Wl,"-m elf64alpha"
723#   define AsmDefines		-D__ELF__
724#   define CplusplusCmd		c++ -b alpha-linux
725#  endif /* AlphaArchitecture */
726#  ifdef HPArchitecture
727#   define CcCmd		gcc
728#   define CplusplusCmd		g++
729#   define AsCmd		CcCmd -c -x assembler
730#   define LdCmd		CcCmd -nostdlib
731#   define AsmDefines		-D__ELF__
732#   define SharedLibXau		YES
733#  endif /* HPArchitecture */
734#  ifdef i386Architecture
735#   define CcCmd		gcc -b i486-linux
736#   define AsCmd		CcCmd -c -x assembler
737#   define LdCmd		CcCmd -nosdlib -Wl,"-m elf_i386"
738#   define AsmDefines		-D__ELF__
739#   define CplusplusCmd		c++ -b i486-linux
740#  endif /* i386Architecture */
741#  ifdef ia64Architecture
742#   define CcCmd		gcc
743#   define CplusplusCmd		g++
744#   define AsCmd		CcCmd -c -x assembler
745#   define LdCmd		CcCmd -nostdlib
746#   define AsmDefines		-D__ELF__
747#  endif /* ia64Architecture */
748#  ifdef Mc68020Architecture
749#   define CcCmd		gcc -b m68k-linux
750#   define AsCmd		CcCmd -c -x assembler
751#   define LdCmd		CcCmd -nostdlib -W,l"-m m68kelf"
752#   define AsmDefines		-D__ELF__
753#   define CplusplusCmd		c++ -b m68k-linux
754#  endif /* Mc68020Architecture */
755#  ifdef AMD64Architecture
756#   define CcCmd                 gcc
757#   define CplusplusCmd          g++
758#   define AsCmd                 CcCmd -c -x assembler
759#   define LdCmd                 CcCmd -nostdlib
760#   define AsmDefines            -D__ELF__
761#  endif /* AMD64Architecture */
762# else
763#  define CcCmd			gcc
764#  define AsCmd			CcCmd -c -x assembler
765#  define LdCmd			CcCmd -nostdlib
766#  define AsmDefines		-DUSE_GAS
767# endif
768#endif
769
770/*
771 * Some older distros still need /lib/cpp.  There's probably a better
772 * test, but this handles the older Red Hat releases at least.
773 */
774#ifndef CppCmd
775# if (LinuxDistribution == LinuxRedHat) && \
776     ((LinuxCLibMajorVersion < 6) || \
777      (LinuxCLibMajorVersion == 6 && LinuxCLibMinorVersion < 1))
778#  define CppCmd		/lib/cpp
779# else
780#  define CppCmd		cpp
781# endif
782#endif
783
784/* Some Linux distributions have yacc, some don't. All have bison. */
785#define YaccCmd			bison -y
786#define LexCmd			flex -l
787#define HasFlex			YES
788#define LexLib			-lfl
789#define PreProcessCmd		CcCmd -E
790#define PostIncDir		DefaultGccIncludeDir
791#define LdCombineFlags		-r
792#ifndef LdPostLib
793# define LdPostLib		/* Never needed */
794#endif
795#define HasWChar32		YES
796#define StandardCppOptions	-traditional
797#define StandardCppDefines	StandardDefines
798
799#define HasVarRun		YES
800#ifndef VarDbDirectory
801# define VarDbDirectory		$(VARDIR)/lib
802#endif
803
804#ifndef XF86OSCardDrivers
805# ifdef __linux__
806#  define XF86OSCardDrivers	fbdev v4l sisusb
807# else
808#  define XF86OSCardDrivers	/**/
809# endif
810#endif
811
812#ifndef OSXInputDrivers
813# if HasLinuxJoystick
814#  define OSXInputDrivers1	ur98
815# else
816#  define OSXInputDrivers1	/**/
817# endif
818# if HasLinuxInput
819#  define OSXInputDrivers2	aiptek evdev
820# else
821#  define OSXInputDrivers2	/**/
822# endif
823# define OSXInputDrivers	OSXInputDrivers1 OSXInputDrivers2
824#endif
825
826#if UseElfFormat
827# define HasPlugin			YES
828# define VendorHasX11R6_3libXext	YES	/* XC or XFree86 >= 3.3.1 */
829#endif
830
831#ifdef AlphaArchitecture
832# ifndef OptimizedCDebugFlags
833#  define OptimizedCDebugFlags	DefaultGcc2AxpOpt
834# endif
835# define LinuxMachineDefines	-D__alpha__
836# define ServerOSDefines	XFree86ServerOSDefines -DDDXTIME
837# define ServerExtraDefines	-DGCCUSESGAS XFree86ServerDefines -D_XSERVER64 -DJENSEN_SUPPORT
838# ifdef UseCompaqMathLibrary
839#  define MathLibrary		-lcpml -lm
840# endif
841#endif /* AlphaArchitecture */
842
843#ifdef Arm32Architecture
844# define DefaultCCOptions
845# ifndef OptimizedCDebugFlags
846#  define OptimizedCDebugFlags	-O3
847# endif
848# define LinuxMachineDefines	-D__arm__ -D__arm32__ -U__arm -Uarm
849# define ServerOSDefines	XFree86ServerOSDefines -DDDXTIME
850# define ServerExtraDefines	-DGCCUSESGAS XFree86ServerDefines
851#endif /* Arm32Achitecture */
852
853#ifdef HPArchitecture
854# define OptimizedCDebugFlags	-O2  GccAliasingArgs
855# define LinuxMachineDefines	-D__hppa__
856# define ServerOSDefines	XFree86ServerOSDefines -DDDXTIME
857# define ServerExtraDefines	-DGCCUSESGAS XFree86ServerDefines
858#endif
859
860#ifdef i386Architecture
861# ifndef OptimizedCDebugFlags
862#  define OptimizedCDebugFlags	DefaultGcc2i386Opt
863# endif
864# define LinuxMachineDefines	-D__i386__
865# define ServerOSDefines	XFree86ServerOSDefines -DDDXTIME
866# define ServerExtraDefines	-DGCCUSESGAS XFree86ServerDefines
867#endif /* i386Architecture */
868
869#ifdef ia64Architecture
870# ifndef OptimizedCDebugFlags
871#  define OptimizedCDebugFlags	-O2  GccAliasingArgs
872# endif
873# define LinuxMachineDefines	-D__ia64__
874# define ServerOSDefines	XFree86ServerOSDefines -DDDXTIME
875# define ServerExtraDefines	-DGCCUSESGAS XFree86ServerDefines -D_XSERVER64
876#endif /* ia64Architecture */
877
878#ifdef Mc68020Architecture
879# ifndef OptimizedCDebugFlags
880#  define OptimizedCDebugFlags	-O2  GccAliasingArgs
881# endif
882# define LinuxMachineDefines	-D__mc68000__
883# define ServerOSDefines	XFree86ServerOSDefines -DDDXTIME
884# define ServerExtraDefines	-DGCCUSESGAS XFree86ServerDefines
885#endif /* Mc68020Architecture */
886
887#ifdef MipsArchitecture
888# ifndef OptimizedCDebugFlags
889#  define OptimizedCDebugFlags	DefaultGcc2MipsOpt
890# endif
891# define LinuxMachineDefines	-D__mips__
892# define ServerOSDefines	XFree86ServerOSDefines -DDDXTIME
893# define ServerExtraDefines	-DGCCUSESGAS XFree86ServerDefines
894#endif
895
896#ifdef OpenRISC1000Architecture
897# ifndef OptimizedCDebugFlags
898#  define OptimizedCDebugFlags	DefaultGcc2OpenRISC1000Opt
899# endif
900# define LinuxMachineDefines	-D__or1k__
901# define ServerOSDefines	XFree86ServerOSDefines -DDDXTIME
902# define ServerExtraDefines	-DGCCUSESGAS XFree86ServerDefines
903#endif
904
905#ifdef Ppc64Architecture
906# define DefaultCCOptions	-mminimal-toc
907# ifndef OptimizedCDebugFlags
908#  define OptimizedCDebugFlags	DefaultGcc2Ppc64Opt
909# endif
910# define LinuxMachineDefines	-D__powerpc64__ -D__powerpc__
911# define ServerOSDefines	XFree86ServerOSDefines -DDDXTIME -DPART_NET
912# define ServerExtraDefines	-DGCCUSESGAS XFree86ServerDefines -D_XSERVER64
913#endif /* Ppc64Architecture */
914
915#ifdef PpcArchitecture
916# define DefaultCCOptions
917# ifndef OptimizedCDebugFlags
918#  define OptimizedCDebugFlags	DefaultGcc2PpcOpt
919# endif
920# define LinuxMachineDefines	-D__powerpc__
921# define ServerOSDefines	XFree86ServerOSDefines -DDDXTIME
922# define ServerExtraDefines	-DGCCUSESGAS XFree86ServerDefines
923#endif /* PpcArchitecture */
924
925#ifdef s390Architecture
926# ifndef OptimizedCDebugFlags
927#  define OptimizedCDebugFlags	-O2 -fomit-frame-pointer GccAliasingArgs
928# endif
929# define LinuxMachineDefines	-D__s390__
930# define ServerOSDefines	XFree86ServerOSDefines -DDDXTIME
931# define ServerExtraDefines	-DGCCUSESGAS XFree86ServerDefines
932#endif /* s390Architecture */
933
934#ifdef s390xArchitecture
935/*#define DefaultCCOptions	-fsigned-char */
936#define OptimizedCDebugFlags	-O3 -fomit-frame-pointer
937#define LinuxMachineDefines	-D__s390x__
938#define ServerOSDefines		XFree86ServerOSDefines -DDDXTIME
939#define ServerExtraDefines	-DGCCUSESGAS XFree86ServerDefines -D_XSERVER64
940#endif /* s390xArchitecture */
941
942#ifdef SparcArchitecture
943# ifndef OptimizedCDebugFlags
944#  define OptimizedCDebugFlags	-O2  GccAliasingArgs
945# endif
946# define LinuxMachineDefines	-D__sparc__
947# define ServerOSDefines	XFree86ServerOSDefines -DDDXTIME
948# define ServerExtraDefines	-DGCCUSESGAS XFree86ServerDefines
949# define AsVISOption		-Av9a
950# ifdef Sparc64Architecture
951#  define AsOutputArchSize	64
952# else
953#  define AsOutputArchSize	32
954# endif
955#endif
956
957#ifdef SuperHArchitecture
958# ifndef SuperHArchOptFlags
959#  ifdef SuperH4Architecture
960#   define SuperHArchOptFlags	-m4
961#  elif defined(SuperH4NOFPUArchitecture)
962#   define SuperHArchOptFlags	-m4-nofpu
963#  else
964#   define SuperHArchOptFlags	-m3
965#  endif
966# endif
967# ifndef SuperHebArchitecture
968#  ifdef SuperHebArchitecture
969#   define SuperHEndianFlags	-mb
970#  else
971#   define SuperHEndianFlags	-ml
972#  endif
973# endif
974# ifndef OptimizedCDebugFlags
975#  define OptimizedCDebugFlags	-O2 SuperHArchOptFlags SuperHEndianFlags  GccAliasingArgs
976# endif
977# define LinuxMachineDefines	-D__sh__
978# define ServerOSDefines	XFree86ServerOSDefines -DDDXTIME
979# define ServerExtraDefines	-DGCCUSESGAS XFree86ServerDefines
980# ifndef DoLoadableServer
981#  define DoLoadableServer NO
982# endif
983#endif
984
985#ifdef AMD64Architecture
986# ifndef OptimizedCDebugFlags
987#  define OptimizedCDebugFlags	DefaultGcc2AMD64Opt
988# endif
989# define LinuxMachineDefines   -D__amd64__
990# define ServerOSDefines	XFree86ServerOSDefines -DDDXTIME
991# define ServerExtraDefines	-DGCCUSESGAS XFree86ServerDefines -D_XSERVER64
992#endif /* AMD64Architecture */
993
994#ifdef AArch64Architecture
995# ifndef OptimizedCDebugFlags
996#  define OptimizedCDebugFlags DefaultGcc2AArch64Opt
997# endif
998# define LinuxMachineDefines   -D__aarch64__
999# define ServerOSDefines   XFree86ServerOSDefines -DDDXTIME
1000# define ServerExtraDefines    -DGCCUSESGAS XFree86ServerDefines -D_XSERVER64
1001#endif /* AArch64Architecture */
1002
1003#ifndef StandardDefines
1004# ifdef __linux__
1005#  define StandardDefines	-Dlinux LinuxMachineDefines LinuxSourceDefines
1006# else
1007#  define StandardDefines	LinuxMachineDefines LinuxSourceDefines
1008# endif
1009#endif
1010
1011#if UseElfFormat
1012# define DlLibrary		-rdynamic -ldl
1013#else
1014# define DlLibrary		/**/
1015#endif
1016
1017#define ServerExtraSysLibs	/**/
1018
1019#ifndef PamLibraries
1020#define PamLibraries		-lpam DlLibrary
1021#endif
1022
1023#ifndef PamMiscLibraries
1024#define PamMiscLibraries	-lpam_misc
1025#endif
1026
1027#ifndef HasDECnet
1028#define HasDECnet		NO
1029#endif
1030#if HasDECnet
1031# define ConnectionFlags	-DUNIXCONN -DTCPCONN -DDNETCONN
1032# define ExtraLibraries		-ldnet
1033#else
1034# define ConnectionFlags	-DUNIXCONN -DTCPCONN
1035#endif
1036
1037/* Some of these man page defaults are overriden in the above OS sections */
1038#ifndef ManSuffix
1039# define ManSuffix	1x
1040#endif
1041#ifndef ManDir
1042# define ManDir		$(MANSOURCEPATH)1
1043#endif
1044#ifndef LibManSuffix
1045# define LibManSuffix	3x
1046#endif
1047#ifndef LibmanDir
1048# define LibmanDir	$(MANSOURCEPATH)3
1049#endif
1050#ifndef FileManSuffix
1051# define FileManSuffix	5x
1052#endif
1053#ifndef FileManDir
1054# define FileManDir	$(MANSOURCEPATH)5
1055#endif
1056
1057#ifndef StaticLibrary
1058# define StaticLibrary(libpath,libname) -Wl,-Bstatic Concat(-L,libpath) Concat(-l,libname) -Wl,-Bdynamic
1059#endif
1060
1061#ifndef LinkGLToUsrLib
1062# define LinkGLToUsrLib		YES
1063#endif
1064# ifndef LinkGLToUsrInclude
1065# define LinkGLToUsrInclude	YES
1066#endif
1067
1068
1069#define HasGnuMake		YES
1070
1071#define MakeNamedTargetSubdir(dir,flags,subname)\
1072	$(MAKE) -C dir $(MFLAGS) $(PARALLELMFLAGS) flags subname
1073
1074#define ArchitectureDefines	-DLINUX_ARCHITECTURE
1075
1076#define TtClientLibs $(TTLIB) $(XTOOLLIB) $(XLIB)
1077#define TtClientDepLibs $(DEPTTLIB) $(DEPXTOOLLIB) $(DEPXLIB)
1078
1079#if HaveLib64
1080# ifndef LibDirName
1081#  define LibDirName		lib64
1082# endif
1083# ifndef SystemUsrLibDir
1084#  define SystemUsrLibDir	/usr/lib64
1085# endif
1086# ifndef TkLibDir
1087#  define TkLibDir		/usr/lib64
1088# endif
1089#endif
1090
1091#ifndef BuildDmx
1092#define BuildDmx	YES
1093#endif
1094
1095#include <lnxLib.rules>
1096# include <xorg.cf>
1097
1098#ifndef XFree86ServerOSDefines
1099# define XFree86ServerOSDefines
1100#endif
1101