XCOMM platform:  $XFree86: xc/config/cf/NetBSD.cf,v 3.127 2005/02/04 02:58:27 dawes Exp $

/*
 * Copyright (c) 1994-2004 by The XFree86 Project, Inc.
 * All rights reserved.
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject
 * to the following conditions:
 *
 *   1.  Redistributions of source code must retain the above copyright
 *       notice, this list of conditions, and the following disclaimer.
 *
 *   2.  Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer
 *       in the documentation and/or other materials provided with the
 *       distribution, and in the same place and form as other copyright,
 *       license and disclaimer information.
 *
 *   3.  The end-user documentation included with the redistribution,
 *       if any, must include the following acknowledgment: "This product
 *       includes software developed by The XFree86 Project, Inc
 *       (http://www.xfree86.org/) and its contributors", in the same
 *       place and form as other third-party acknowledgments.  Alternately,
 *       this acknowledgment may appear in the software itself, in the
 *       same form and location as other such third-party acknowledgments.
 *
 *   4.  Except as contained in this notice, the name of The XFree86
 *       Project, Inc shall not be used in advertising or otherwise to
 *       promote the sale, use or other dealings in this Software without
 *       prior written authorization from The XFree86 Project, Inc.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE XFREE86 PROJECT, INC OR ITS CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef OSName
#define OSName			DefaultOSName OSBinaryType
#endif
#ifndef OSMajorVersion
#define OSMajorVersion		DefaultOSMajorVersion
#endif
#ifndef OSMinorVersion
#define OSMinorVersion		DefaultOSMinorVersion
#endif
#ifndef OSTeenyVersion
#define OSTeenyVersion		DefaultOSTeenyVersion
#endif


#ifndef OSVendor
#define	OSVendor		The NetBSD Foundation, Inc.
#endif
XCOMM operating system:  OSName (OSMajorVersion./**/OSMinorVersion./**/OSTeenyVersion)

/*
 * Enable support for "xdmauth" authentification.
 */
#ifndef HasXdmAuth
#define HasXdmAuth YES
#endif

/*
 * C library features
 */
#if ((OSMajorVersion > 1) || \
     (OSMajorVersion == 1 && OSMinorVersion > 2) || \
     (OSMajorVersion == 1 && OSMinorVersion == 2 && OSTeenyVersion > 1))
# define HasPoll			YES
#endif
#define HasNdbm         	YES
#define HasPutenv       	YES
#if (OSMajorVersion == 1 && OSMinorVersion > 4 || OSMajorVersion > 1)
# define HasStrlcat		YES
#endif
#define HasSnprintf		YES
#define HasAsprintf		YES
#define HasBSD44Sockets 	YES
#define Malloc0ReturnsNull	NO
#define SetTtyGroup     	YES
#define DBMLibrary		/**/
#define HasDlopen		YES
#define HasSetProcTitle		YES
#ifndef HasLibCrypt
# define HasLibCrypt		YES
#endif
#ifndef HasShm
/*
 * Shm memory was removed in 0.9B because it was encumbered.
 * A free version was added in 0.9C
 */
# if (OSMajorVersion == 0 && OSMinorVersion == 9 && OSTeenyVersion == 2)
#  define HasShm          	NO
# else
#  define HasShm          	YES
# endif
#endif
#define HasWChar32		YES
/*
 * There's a bug in NetBSD 1.0, 1.1 and 1.2 dlsym()
 */
#if ((OSMajorVersion == 1 && OSMinorVersion < 2) || \
     (OSMajorVersion == 1 && OSMinorVersion == 2 && OSTeenyVersion < 2))
# define HasDlsymBug		YES
#endif
/* Mkstemp is there since 1.2 (at least) */
#if ((OSMajorVersion > 1) || \
     (OSMajorVersion == 1 && OSMinorVersion >= 2)) 
# define HasMkstemp		YES
#endif
/* But the standalone mktemp doesn't exist before NetBSD 1.5*/
#if ((OSMajorVersion == 0) || \
     (OSMajorVersion == 1 && OSMinorVersion <= 4))
# define HasMktemp		NO
#else
# define HasMktemp		YES
#endif

#ifndef HasIssetugid
# if ((OSMajorVersion > 1) || \
      (OSMajorVersion == 1 && OSMinorVersion >= 5))
#  define HasIssetugid          YES
# endif
#endif

#if ((OSMajorVersion > 1) || \
     (OSMajorVersion == 1 && OSMinorVersion >= 5))
# define HasGetIfAddrs		YES
#endif

#define HasUsableFileMmap	YES

#define HasVarRun		YES
#define HasVarDb		YES

#define HasShadowPasswd		NO

#define InstallXloadSetGID	NO

#if ((OSMajorVersion < 1) || \
     (OSMajorVersion == 1 && OSMinorVersion < 5))
# define BuildIPv6		NO
#endif

#define IPv6SocketsAlsoIPv4	NO

/*
 * NetBSD 1.6M and newer supports POSIX Threads.
 */

#ifndef NetBSDThreads
# define NetBSDThreads		YES
#endif

#if NetBSDThreads && \
    ((OSMajorVersion > 1) || \
     (OSMajorVersion == 1 && OSMinorVersion > 6) || \
     (OSMajorVersion == 1 && OSMinorVersion == 6 && OSTeenyVersion >= 13))

# define HasPosixThreads	YES
# define ThreadedX		YES
# define HasThreadSafeAPI	YES
# define ThreadsLibraries	-lpthread
# define SystemMTDefines	-D_REENTRANT
# define MTSafeAPIDefines	-DXUSE_MTSAFE_API -DXNO_MTSAFE_PWDAPI
# if ((OSMajorVersion == 2 && OSMinorVersion == 99 && OSTeenyVersion < 11) || \
      (OSMajorVersion == 2 && OSMinorVersion < 99) || \
      (OSMajorVersion < 2))
#  define LibraryMTDefines	-DUSE_NBSD_THREADLIB
# endif
#else 
# define ThreadedX		NO
#endif

/*
 * Use rnd(4) under NetBSD from 1.4 to 1.6A and arc4random(3) under 1.6B
 * and above.
 */
#if ((OSMajorVersion > 1) || \
     (OSMajorVersion == 1 && OSMinorVersion == 6 && OSTeenyVersion >= 2))
# define HasArc4Random		YES
#elif ((OSMajorVersion > 1) || \
       (OSMajorVersion == 1 && OSMinorVersion > 3))
# define HasDevRandom		YES
# define RandomDeviceFile	/dev/urandom
#endif

/*
 * Compiler Features
 */
#define GccUsesGas		YES
#define UseGas			YES
#define GnuCpp			YES

#define NeedConstPrototypes	YES
#define NeedFunctionPrototypes	YES
#define NeedNestedPrototypes	YES
#define NeedVarargsPrototypes	YES
#define NeedWidePrototypes	NO

#define MkdirHierCmd		mkdir -p

#undef CcCmd
#define CcCmd 			gcc
#ifndef DefaultCCOptions
# if defined(UseInstalled)
#  define DefaultCCOptions 	/**/
# else
#  define DefaultCCOptions 	-ansi -Dasm=__asm
# endif
#endif

#define CppCmd			cpp
#define StandardCppOptions	-traditional
#define StandardCppDefines	/**/
#define PreProcessCmd   	CcCmd -E
#define PostIncDir		/usr/include

#define GccGasOption 		-DGCCUSESGAS
#define AsmDefines 		-DUSE_GAS

/* UseElfFormat defaults to YES if __ELF__ set */
#ifndef UseElfFormat
# ifdef __ELF__
#  undef __ELF__			/* other imake files shouldn't care */
#  define UseElfFormat YES
# else
#  define UseElfFormat NO
# endif
#endif

#ifndef OSBinaryType
#if UseElfFormat
#define OSBinaryType	[ELF]
#else
#define OSBinaryType	/**/
#endif
#endif

/*
 * Dynamic loading supported starting in 1.0 on a.out platforms,
 * and on all ELF platforms.
 *
 * XXX May not be correct on NetBSD/pmax (ELF, but might not have
 * working shared libs).
 *
 * Disabled for NetBSD/vax until I figure out the scheme. --CS 
 */
#if UseElfFormat
# if (OSMajorVersion > 0 && defined(i386Architecture)) || \
      defined(PpcArchitecture) || defined(Sparc64Architecture) || \
      defined(ArmArchitecture)
#  ifndef  DoLoadableServer
#   define DoLoadableServer	YES
#  endif
# endif
# if \
     !defined(ns32kArchitecture) && \
     !defined(m68000Architecture) && \
     !(OSMajorVersion < 2 && defined(sh3Architecture)) && \
     !defined(sh5Architecture) && \
     !(GccMajorVersion == 3 && defined(VaxArchitecture)) && \
     1
#  ifndef  HasSharedLibraries
#   define HasSharedLibraries	YES
#  endif
# endif

# define DlLibrary		-rdynamic /* no -ldl yet */
#else /* UseElfFormat */
# define DlLibrary		/**/
# if (OSMajorVersion > 0) && \
     (!defined(AlphaArchitecture) && !defined(MipsArchitecture))
   /* XXX: which port lacked a.out shlib support? */
#  ifndef  HasSharedLibraries
#   define HasSharedLibraries	YES
#  endif
   /* XXX: which port had a.out dynamic loding support? Only i386? */
#  ifndef  DoLoadableServer
#   define DoLoadableServer	YES
#  endif
# endif
#endif /* UseElfFormat */

#ifndef HasSharedLibraries
# define HasSharedLibraries	NO
#endif
#ifndef DoLoadableServer
# define DoLoadableServer	NO
#endif

/* All ELF NetBSD systems support Weak symbols */
#define HasWeakSymbols		UseElfFormat 


/*
 * MACHINE_CPU specific toolchain options
 */
/* arm specific options */
#ifdef ArmArchitecture
# undef  DefaultCCOptions
# define DefaultCCOptions	-ansi -Dasm=__asm -fsigned-char \
					-fomit-frame-pointer
#endif /* ArmArchitecture */

/* i386 specific options */
#ifdef i386Architecture
# ifndef DefaultGcc2i386Opt
#  if ((OSMajorVersion > 1) || \
       (OSMajorVersion == 1 && OSMinorVersion > 2))
    /* The GCC strength-reduce bug is fixed for NetBSD 1.3 and later */
#   define DefaultGcc2i386Opt	-O2 GccAliasingArgs
#  endif
# endif
# define OptimizedCDebugFlags 	DefaultGcc2i386Opt
#endif /* i386Architecture */

/* m68k specific options */
#ifdef m68kArchitecture
# if (OSMajorVersion == 1 && OSMinorVersion <= 3)
#  define OptimizedCDebugFlags	-O
# endif
#endif /* m68kArchitecture */

/* mips specific options */
#ifdef MipsArchitecture
# define PositionIndependentCFlags	/* -fPIC */
#endif /* MipsArchitecture */

/* powerpc specific option */
#ifdef PpcArchitecture
# undef  DefaultCCOptions
# define DefaultCCOptions	-ansi -Dasm=__asm -fsigned-char
#endif /* PpcArchitecture */

/* sh3 specific options */
#ifdef sh3Architecture
# define OptimizedCDebugFlags	-O
#endif /* sh3Archtecture */

/* sh5 specific options */
#ifdef sh5Architecture
# define OptimizedCDebugFlags	-O
#endif /* sh5Archtecture */

/* x86_64 */
#if defined(x86_64Architecture)
# define OptimizedCDebugFlags	-O2 GccAliasingArgs	/* XXX not needed anymore? */
# define NetBSDMachineDefines	-D__AMD64__
#endif

/* set default */
#ifndef OptimizedCDebugFlags
# define OptimizedCDebugFlags 	-O2 GccAliasingArgs
#endif
/* End of MACHINE_CPU specific options */


#ifndef NetBSDMachineDefines
#define NetBSDMachineDefines /**/
#endif

#define StandardDefines	-DCSRG_BASED NetBSDMachineDefines

/* Citrus mb locale were added in 1.5P */
#if ((OSMajorVersion > 1) || \
     (OSMajorVersion == 1 && OSMinorVersion > 5) || \
     (OSMajorVersion == 1 && OSMinorVersion == 5 && OSTeenyVersion >= 15))
#define XawI18nDefines	-DHAS_WCHAR_H -DHAS_WCTYPE_H -DNO_WIDEC_H
#else
#define XawI18nDefines	-DUSE_XWCHAR_STRING -DUSE_XMBTOWC
#endif

#ifndef ExtraLibraries
#define ExtraLibraries		/**/
#endif
#ifndef UseGnuMalloc
/*
 * There is no way to map 1.4J correctly to OS*Version, so 'J' is mapped
 * to OSTeenyVersion == 9. That should be safe, since there will never
 * be a release for 1.4.9.
 */
# if ((OSMajorVersion > 1) || \
      (OSMajorVersion == 1 && OSMinorVersion > 4) || \
      (OSMajorVersion == 1 && OSMinorVersion == 4 && OSTeenyVersion > 9))
#  define UseGnuMalloc		NO
# else
#  define UseGnuMalloc		YES
#endif
#endif
#ifndef GnuMallocLibrary
#define GnuMallocLibrary	-lgnumalloc
#endif

#if ((OSMajorVersion > 1) || \
     (OSMajorVersion == 1 && OSMinorVersion > 2) || \
     (OSMajorVersion == 1 && OSMinorVersion == 2 && OSTeenyVersion > 1))
#ifndef HasZlib
#define HasZlib			  YES
#endif
#endif 

#define	AdmDir			/var/log

#define HasFlex			YES

/* NetBSD doesn't have gperf in the base install */
#define DontRebuildGperfOutput	YES

/* 
 * NetBSD doesn't have perl in default system
 * you may override this in host.def if you installed perl from the packages
 */
#ifndef HasPerl
#define HasPerl			NO
#endif

/*
 * NetBSD doesn't have gperf in default system
 * you may override this in host.def if you installed perl from the packages
 */
#ifndef HasGperf
#define HasGperf		NO
#endif

/*
 * Make & install Features
 */
#define HasBsdMake		YES
#define CompressAllFonts	YES
#define GzipFontCompression	YES
#define DefaultUserPath		/bin:/usr/bin:/usr/pkg/bin:/usr/local/bin:$(BINDIR)
#define DefaultSystemPath	/sbin:/usr/sbin:/bin:/usr/bin:$(BINDIR)

#ifdef  InstallCmd
# undef  InstallCmd
# define InstallCmd 		/usr/bin/install
#endif
#define StripInstalledPrograms	YES

#ifndef ExtraFilesToClean
# define ExtraFilesToClean 	*.core
#endif

/*
 * Documentation formatting
 */
#define NeqnCmd			neqn -Tlatin1
#define NroffCmd		nroff -Tlatin1
#define	EqnCmd 			eqn -Tps
#define HasGroff		YES

/*
 * To use the NetBSD Aperture driver
 */
#if defined(i386Architecture)
# ifndef HasNetBSDApertureDriver
#  define HasNetBSDApertureDriver	YES
# endif

/*
 * Builtin MTRR support (NetBSD 1.5Y and up)
 */
# if ((OSMajorVersion > 1) || \
      (OSMajorVersion == 1 && OSMinorVersion >= 6) || \
      (OSMajorVersion == 1 && OSMinorVersion == 5 && \
       OSTeenyVersion >= 25))
#  define HasMTRRBuiltin        YES
# else
 /*
  * MTRR support  provided by the Aperture driver
  */
#  if HasNetBSDApertureDriver
#   ifndef HasMTRRSupport
#    define HasMTRRSupport	YES
#   endif
#  endif
# endif /* MTRRBuiltin */
#endif /* i386Architecture */

#if defined(AMD64Architecture)
# define HasMTRRBuiltin       YES
#endif

/*
 * agpgart support (NetBSD 1.5Y and up)
 */
#if ((OSMajorVersion > 1) || \
     (OSMajorVersion == 1 && OSMinorVersion >= 6) || \
     (OSMajorVersion == 1 && OSMinorVersion == 5 && OSTeenyVersion >= 25))
# ifndef HasAgpGart
#  define HasAgpGart   YES
# endif
#endif

/*
 * MMX, SSE and 3DNow will be autodetected. NetBSD 1.6 and up have the
 * necessary kernel and toolchain support.
 */
#if defined(i386Architecture) &&  \
	((OSMajorVersion > 1) || \
	 (OSMajorVersion == 1 && OSMinorVersion > 5))
# define HasX86Support          YES
# define HasMMXSupport          YES
# define Has3DNowSupport        YES
# define HasSSESupport          YES
#else
# define HasX86Support          NO
# define HasMMXSupport          NO
# define Has3DNowSupport        NO
# define HasSSESupport          NO
#endif

#ifndef HasCookieMaker
# if (OSMajorVersion == 1 && OSMinorVersion >= 5 || OSMajorVersion >= 2)
   /* NetBSD 1.5 and later have /dev/urandom */
#  define HasCookieMaker	YES
#  define MkCookieCmd \
	'dd if=/dev/urandom bs=16 count=1 2>/dev/null | hexdump -e \\"%08x\\"'
# else
#  define HasCookieMaker	NO
# endif
#endif

/*
 * ForceSubdirs - force make to build subdirectories
 * 
 * For BSD 4.4 make 
 */
#define ForceSubdirs(dirs)						@@\
dirs:	.EXEC								@@\
	@cd $@ ; echo "making all in $(CURRENT_DIR)/$@..."; \		@@\
	$(MAKE) $(MFLAGS) PassCDebugFlags all				@@\
									@@\
.EXEC:

/*
 * Man pages need to be formatted when installed, so override the default
 * imake rules.
 */
#define ManSuffix	1
#define FileManSuffix	5
#define ManSourcePath	$(MANPATH)/cat

#define InstallManPageLongBase(file,destdir,dest)			@@\
									@@\
all:: file.0								@@\
									@@\
file.0:: file.$(MANNEWSUFFIX)						@@\
	@if [ -f file.$(MANNEWSUFFIX) ]; \				@@\
	then \								@@\
	cat file.$(MANNEWSUFFIX) | $(NEQN) | $(TBL) | $(NROFF) $(MANMACROS) | $(COL) > file.0; \	@@\
	fi 								@@\
									@@\
install.man::                                                           @@\
	MakeDir($(DESTDIR)destdir)					@@\
	-@if [ -f file.0 ]; \						@@\
	then \								@@\
	$(INSTALL) -c $(INSTMANFLAGS) file.0 $(DESTDIR)destdir/dest.0; \@@\
	fi								@@\
									@@\
clean::									@@\
	RemoveFile(file.0)

#define InstallManPageLong(file,destdir,dest)				@@\
BuildInstallHtmlManPage(file,dest,$(MANSUFFIX))				@@\
									@@\
CppManTarget(file, $(EXTRAMANDEFS))					@@\
									@@\
InstallManPageLongBase(file,destdir,dest)

#define InstallGenManPageLong(file,destdir,dest,suffix)			@@\
BuildInstallHtmlManPage(file,dest,suffix)				@@\
									@@\
CppManTarget(file, $(EXTRAMANDEFS))					@@\
									@@\
InstallManPageLongBase(file,destdir,dest)

#define InstallMultipleMan(list,dest)                                   @@\
install.man:: 								@@\
	MakeDir($(DESTDIR)dest)						@@\
	case '${MFLAGS}' in *[i]*) set +e;; esac; \			@@\
	for i in list; do \                                             @@\
	  (MNAME=`echo $$i | cut -f1 -d.`; \				@@\
	  set -x; \							@@\
	  cat $$i | $(NEQN) | $(TBL) | $(NROFF) $(MANMACROS) \		@@\
		| $(COL) > $${MNAME}.0; \				@@\
	  $(INSTALL) -c $(INSTMANFLAGS) $${MNAME}.0 \			@@\
			$(DESTDIR)dest/$${MNAME}.0; \			@@\
	  $(RM) $${MNAME}.0); \						@@\
	done

#define InstallMultipleManSuffix(list,dest,suff)                        @@\
install.man:: 								@@\
	MakeDir($(DESTDIR)dest)						@@\
	case '${MFLAGS}' in *[i]*) set +e;; esac; \			@@\
	for i in list; do \                                             @@\
	  (set -x; \							@@\
	  cat $$i.suff | $(NEQN) | $(TBL) | $(NROFF) $(MANMACROS) \	@@\
		| $(COL) > $$i.0; \					@@\
	  $(INSTALL) -c $(INSTMANFLAGS) $$i.0	 \			@@\
		$(DESTDIR)dest/$$i.0; \					@@\
	  $(RM) $$i.0 ); \						@@\
	done

#define InstallManPageAliasesBase(file,destdir,aliases)			@@\
install.man:: 								@@\
	@case '${MFLAGS}' in *[i]*) set +e;; esac; \                    @@\
	for i in aliases; do \                                          @@\
		(set -x; \						@@\
		$(RM) $(DESTDIR)destdir/$$i.0;\  			@@\
		(cd $(DESTDIR)/destdir; $(LN) file.0 $$i.0);\ 		@@\
		); \							@@\
	done

#define InstallManPageAliases(file,destdir,aliases)			@@\
InstallHtmlManPageAliases(file,aliases,$(MANSUFFIX))			@@\
									@@\
InstallManPageAliasesBase(file,destdir,aliases)

#define InstallGenManPageAliases(file,destdir,suffix,aliases)		@@\
InstallHtmlManPageAliases(file,aliases,suffix)				@@\
									@@\
InstallManPageAliasesBase(file,destdir,aliases)

/*
 * Unresolved references are fatal on NetBSD 1.5 for libGL, which is
 * built with -Bsymbolic.
 */
#if UseElfFormat && \
    (OSMajorVersion == 1 && OSMinorVersion == 5)
# define SharedGLReqs		$(LDPRELIBS) $(XLIB) -lc
#endif

/*
 * src/x11 reachover makefiles always build these shared libraries.
 */
#if (OSMajorVersion >= 2)
# ifndef SharedLibXau
#  define SharedLibXau		HasSharedLibraries
# endif
# ifndef SharedLibXdmcp
#  define SharedLibXdmcp	HasSharedLibraries
# endif
#endif

#if HasSharedLibraries
#include <bsdLib.rules>
#endif /* HasSharedLibraries */

/*
 * Always build the XInput library, regardless of server support
 * on this plattform
 */
#if !defined(BuildXInputLib) && !defined(BuildServersOnly)
# define BuildXInputLib          YES
#endif

/*
 * XFree86 uses its own (more portable) database routines to speed up 
 * the RGB database lookups
 * However, if you want to use ndbm anyway, you can set that to NO in 
 * site.def
 */
#ifndef UseRgbTxt
#define UseRgbTxt	YES
#endif

/*
 * MACHINE specific Xserver dependent definitions
 */

/* acorn32 */
#if defined(acorn32Architecture)
# define BuildServer		YES
# define ServerOSDefines	XFree86ServerOSDefines -DDDXTIME
# define ServerExtraDefines	GccGasOption XFree86ServerDefines
# ifndef XFree86ConsoleDefines
# define XFree86ConsoleDefines	-DPCCONS_SUPPORT
# endif
#endif /* acorn32Architecture */

/* alpha */
#if defined(AlphaArchitecture)
# define BuildServer		YES
# define XalphaNetBSDServer	YES
# define XdecNetBSDServer	YES
# define ServerOSDefines 	XFree86ServerOSDefines
# define ServerExtraDefines	GccGasOption XFree86ServerDefines -D_XSERVER64
# ifndef XFree86ConsoleDefines
# define XFree86ConsoleDefines	-DWSCONS_SUPPORT -DPCCONS_SUPPORT -DPCVT_SUPPORT
# endif
# define ServerExtraSysLibs	-lalpha
#endif

/* amd64 */
#if defined(AMD64Architecture)
# define BuildServer		YES
# define ServerOSDefines	XFree86ServerOSDefines -DDDXTIME
# define ServerExtraDefines	GccGasOption XFree86ServerDefines -D_XSERVER64
# ifndef XFree86ConsoleDefines
# define XFree86ConsoleDefines	-DWSCONS_SUPPORT -DPCVT_SUPPORT
# endif
# define ServerExtraSysLibs	-lx86_64
#endif

/* amiga */
#if defined(amigaArchitecture)
# define BuildServer		YES
# define ServerOSDefines	XFree86ServerOSDefines
# define ServerExtraDefines	GccGasOption XFree86ServerDefines -D__amiga__
# define XserverNeedsSetUID	YES
#endif

/* atari */
#if defined(atariArchitecture)
# define BuildServer		YES
# define ServerOSDefines	XFree86ServerOSDefines
# define ServerExtraDefines GccGasOption XFree86ServerDefines -D__atari__ -D__mc68000__ -Dmc68020
#endif

/* cats */
#if defined(catsArchitecture)
# define BuildServer		YES
# define ServerOSDefines	XFree86ServerOSDefines -DDDXTIME 
# define ServerExtraDefines	GccGasOption XFree86ServerDefines
# ifndef XFree86ConsoleDefines
# define XFree86ConsoleDefines	-DPCCONS_SUPPORT -DPCVT_SUPPORT -DWSCONS_SUPPORT
# endif
#endif

/* dreamcast */
#if defined(dreamcastArchitecture)
# define BuildServer		YES
# define XdreamcastServer	YES
# define ServerOSDefines	XFree86ServerOSDefines
# define ServerExtraDefines	GccGasOption XFree86ServerDefines
# define XkbServerDefines	-DXKB_ALWAYS_USES_SOFT_REPEAT
# define XserverNeedsSetUID	YES
# define XVirtualFramebufferServer	NO

# define XF86Server		NO
# define BuildXFree86ConfigTools	NO
# define BuildXInputExt		NO
# define BuildXF86DGA		NO
# define BuildDPMS		NO
# define BuildDPMSExt		NO
#endif

/* ews4800mips */
#if defined(ews4800mipsArchitecture)
# define BuildServer		YES
# define Xews4800mipsServer	YES
# define ServerOSDefines	XFree86ServerOSDefines
# define ServerExtraDefines	GccGasOption XFree86ServerDefines
# define XserverNeedsSetUID	YES
# define XVirtualFramebufferServer	NO

# define XF86Server		NO
# define BuildXFree86ConfigTools	NO
# define BuildXInputExt		NO
# define BuildXF86DGA		NO
# define BuildDPMS		NO
# define BuildDPMSExt		NO
#endif

/* hpcarm, hpcmips */
#if defined(hpcarmArchitecture) || \
    defined(hpcmipsArchitecture)
# define BuildServer		YES
# define XhpcServer		YES
# define ServerOSDefines	XFree86ServerOSDefines
# define ServerExtraDefines	GccGasOption XFree86ServerDefines
# define XkbServerDefines	-DXKB_ALWAYS_USES_SOFT_REPEAT
# define XserverNeedsSetUID	YES
# define XVirtualFramebufferServer	NO

# define XF86Server		NO
# define BuildXFree86ConfigTools	NO
# define BuildXInputExt		NO
# define BuildXF86DGA		NO
# define BuildDPMS		NO
# define BuildDPMSExt		NO
#endif

/* i386 (as MACHINE) */
#ifdef i386Architecture
# define BuildServer		YES
# if (OSMajorVersion < 1)
#  define ServerOSDefines	XFree86ServerOSDefines -DXNO_SYSCONF
# else
#  define ServerOSDefines	XFree86ServerOSDefines
# endif
# if ((OSMajorVersion > 1) || \
      (OSMajorVersion == 1 && OSMinorVersion >= 1))
#  define ServerExtraSysLibs	-li386
# endif
# define ServerExtraDefines GccGasOption XFree86ServerDefines
# ifndef XFree86ConsoleDefines
#  if ((OSMajorVersion > 1) || \
       (OSMajorVersion == 1 && OSMinorVersion == 3 && OSTeenyVersion >= 6) || \
       (OSMajorVersion == 1 && OSMinorVersion >= 4))
#   define XFree86ConsoleDefines -DPCCONS_SUPPORT -DPCVT_SUPPORT \
	-DWSCONS_SUPPORT
#  else
#   define XFree86ConsoleDefines -DPCCONS_SUPPORT -DPCVT_SUPPORT
#  endif
# endif
#endif /* i386Architecture */
 
/* mac68k */
#if defined(mac68kArchitecture)
# define BuildServer		YES
# define ServerOSDefines	XFree86ServerOSDefines
# define ServerExtraDefines	GccGasOption XFree86ServerDefines -D__mac68k__
#endif

/* macppc */
#if defined(macppcArchitecture)
# define BuildServer		YES
# define XmacppcServer		YES
# define ServerOSDefines	XFree86ServerOSDefines -DDDXTIME
# define ServerExtraDefines	GccGasOption XFree86ServerDefines
# define XkbServerDefines	-DXKB_ALWAYS_USES_SOFT_REPEAT
# ifndef  XFree86ConsoleDefines
#  define XFree86ConsoleDefines	-DWSCONS_SUPPORT
# endif
#endif /* macppcArchitecture */

/* ofppc */
#if defined(ofppcArchitecture) 
# define BuildServer            YES
# define ServerOSDefines        XFree86ServerOSDefines -DDDXTIME
# define ServerExtraDefines     GccGasOption XFree86ServerDefines
# define XkbServerDefines       -DXKB_ALWAYS_USES_SOFT_REPEAT
# ifndef  XFree86ConsoleDefines
#  define XFree86ConsoleDefines -DWSCONS_SUPPORT
# endif
#endif /* ofppcArchitecture */

/* pmax */
#if defined(pmaxArchitecture)
# define BuildServer		YES
# define XdecNetBSDServer	YES
# define ServerOSDefines	XFree86ServerOSDefines
# define ServerExtraDefines	GccGasOption XFree86ServerDefines

# define XF86Server		NO
# define BuildXFree86ConfigTools	NO
# define BuildXInputExt		NO
# define BuildXF86DGA		NO
# define BuildDPMS		NO
# define BuildDPMSExt		NO
#endif

/* sgimips */
#if defined(SGIMipsArchitecture)
# define BuildServer		YES
# define ServerOSDefines	XFree86ServerOSDefines
# define ServerExtraDefines	GccGasOption XFree86ServerDefines
# define XFree86ConsoleDefines	-DWSCONS_SUPPORT
# undef  XF86CardDrivers
# define XF86CardDrivers	newport
#endif /* SGIMipsArchitectur */

/* shark */
#if defined(sharkArchitecture)
# define BuildServer		YES
# define ServerOSDefines	XFree86ServerOSDefines
# define ServerExtraDefines	GccGasOption XFree86ServerDefines
# define ServerExtraSysLibs	-larm
# undef  DefaultCCOptions
# define DefaultCCOptions	-ansi -Dasm=__asm -fsigned-char \
					-fomit-frame-pointer -march=armv4 \
					-mtune=strongarm -D__arm__
# ifndef XFree86ConsoleDefines
#  if ((OSMajorVersion < 1) || \
       (OSMajorVersion == 1 && OSMinorVersion < 5))
#   define XFree86ConsoleDefines -DPCCONS_SUPPORT -DPCVT_SUPPORT
#  else
#   define XFree86ConsoleDefines -DPCCONS_SUPPORT -DPCVT_SUPPORT \
	-DWSCONS_SUPPORT 
#  endif
# endif
# undef XF86CardDrivers
# define XF86CardDrivers	chips wsfb igs
#endif

/* sparc */
#if defined(SparcArchitecture) && !defined(Sparc64Architecture)
# define BuildServer	YES
# ifndef Xsun24Server
# define Xsun24Server	YES
# endif
# ifndef XsunServer
# define XsunServer	YES
# endif
# ifndef XsunMonoServer
# define XsunMonoServer	YES
# endif
# ifndef BuildScreenSaverLibrary
# define BuildScreenSaverLibrary	YES
# endif
# define ServerOSDefines	XFree86ServerOSDefines
# define ServerExtraDefines	GccGasOption XFree86ServerDefines
# define BuildXF86DGA		NO
# define BuildXInputExt		NO
#endif /* SparcArchitecture */

/* sparc64 */
#if defined(Sparc64Architecture)
# define BuildServer	YES
# ifndef Xsun24Server
# define Xsun24Server	YES
# endif
# ifndef XsunServer
# define XsunServer	YES
# endif
# ifndef XsunMonoServer
# define XsunMonoServer	YES
# endif
# ifndef BuildScreenSaverLibrary
# define BuildScreenSaverLibrary	YES
# endif
# define ServerOSDefines	XFree86ServerOSDefines
# define ServerExtraDefines	GccGasOption XFree86ServerDefines -D_XSERVER64
# if 0 /* XXX: we should just remove this line?  */
# define XkbServerDefines	-DXKB_ALWAYS_USES_SOFT_REPEAT
# endif
# ifndef XF86Server
#  define XF86Server		YES
# endif
# if XF86Server
#  define XF86OSCardDrivers	/* wsfb sunffb */
#  define AsOutputArchSize	64
#  define AsVISOption		-Av9a
#  define XFree86ConsoleDefines	-DWSCONS_SUPPORT
# endif
# define BuildXF86DGA		YES
# define BuildXInputExt		YES
#endif /* Sparc64Archtecture */

/* sun3 */
#if defined(Sun3Architecture)
# define BuildServer	YES
# ifndef Xsun24Server
# define Xsun24Server	NO
# endif
# ifndef XsunServer
# define XsunServer	YES
# endif
# ifndef XsunMonoServer
# define XsunMonoServer	YES
# endif
# ifndef BuildScreenSaverLibrary
# define BuildScreenSaverLibrary	YES
# endif
# define ServerOSDefines	XFree86ServerOSDefines
# define ServerExtraDefines	GccGasOption XFree86ServerDefines -D__sun3__
#endif /* Sun3Architecture */

/* vax */
#ifdef VaxArchitecture
# define BuildServer		NO	/* XXX notyet */
# define XVirtualFramebufferServer	NO
# define ServerOSDefines	XFree86ServerOSDefines
# define ServerExtraDefines	GccGasOption XFree86ServerDefines

# define XF86Server		NO
# define BuildXFree86ConfigTools	NO
# define BuildXInputExt		NO
# define BuildXF86DGA		NO
# define BuildDPMS		NO
# define BuildDPMSExt		NO
#endif /* VaxArchitecture */

/* x68k */
#if defined(x68kArchitecture)
# define BuildServer		YES
# define X68kServer		YES
# define ServerOSDefines	XFree86ServerOSDefines
# define ServerExtraDefines	GccGasOption XFree86ServerDefines -D__x68k__
# define XserverNeedsSetUID	YES
# define XVirtualFramebufferServer	NO

# define XF86Server		NO
# define BuildXFree86ConfigTools	NO
# define BuildXInputExt		NO
# define BuildXF86DGA		NO
# define BuildDPMS		NO
# define BuildDPMSExt		NO
#endif

/* set default */
#ifndef BuildServer
# define BuildServer		NO
# define BuildXF86DGA		NO
#endif
#ifndef ServerExtraDefines
# define ServerExtraDefines	GccGasOption XFree86ServerDefines
#endif
#ifndef ServerOSDefines
# define ServerOSDefines	XFree86ServerOSDefines
#endif
/* End of MACHINE specific options */

#include <xfree86.cf>

/* 
 * General settings for all platforms 
 */ 
#ifndef SharedLibXdmGreet
#define SharedLibXdmGreet NO
#endif

#ifndef BuildHtmlManPages
#define BuildHtmlManPages NO	/* We don't want HTML manpages */
#endif

#ifndef UseSeparateConfDir
#define UseSeparateConfDir NO	/* We don't want appdefs in "/etc/X11". */
#endif

/* NetBSD 1.5 has libusb, next versions have libusbhid */
#if OSMajorVersion == 1 && OSMinorVersion >= 5 || OSMajorVersion > 1
# ifdef HasLibUsb
#  undef HasLibUsb
# endif
# define HasLibUsb		YES
# ifndef HasLibUsbHid
#  if OSMajorVersion == 1 && OSMinorVersion > 5 || OSMajorVersion > 1
#   define HasLibUsbHid		YES
#   define UsbHidLib 		-lusbhid
#  else
#   define HasLibUsbHid		NO
#   define UsbHidLib		-lusb
#  endif
# endif
#else
# define HasLibUsb		NO
#endif

/* USB tablets */
#ifndef OSXInputDrivers
# if HasLibUsb
#  define OSXInputDrivers	usbtablet
# endif
#endif

/* NetBSD >= 1.5 has setusercontext() */
#if OSMajorVersion == 1 && OSMinorVersion >= 5 || OSMajorVersion > 1
#define HasSetUserContext       YES
#endif

