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