XCOMM platform:  $XFree86: xc/config/cf/darwin.cf,v 1.34 2002/12/04 04:40:15 torrey Exp $

/* Darwin / Mac OS X configuration by John Carmack <johnc@idsoftware.com> */

/* imake determines the default values by parsing uname */
#ifndef OSName
#define OSName                  DefaultOSName
#endif
#ifndef OSVendor
#define OSVendor                Apple Computer, Inc.
#endif
#ifndef OSMajorVersion
#define OSMajorVersion          DefaultOSMajorVersion
#endif
#ifndef OSMinorVersion
#define OSMinorVersion          DefaultOSMinorVersion
#endif
#ifndef OSTeenyVersion
#define OSTeenyVersion          DefaultOSTeenyVersion
#endif

XCOMM operating system:  OSName (OSMajorVersion./**/OSMinorVersion./**/OSTeenyVersion)

/*
 * Define the operating system's capabilities
 */
#define HasSnprintf             YES
#define HasPutenv               YES
#define HasBSD44Sockets         YES
#define Malloc0ReturnsNull      NO
#define HasShadowPasswd         NO
#define HasUsableFileMmap       YES
#define HasZlib                 YES
#ifndef HasShm
# define HasShm                 YES
#endif
#define HasNdbm                 YES
#if OSMajorVersion >= 6
# define HasNCurses             YES
#else
# define HasNCurses             NO
#endif
#ifndef HasGroff
# define HasGroff               YES
#endif
#ifndef HasGcc3
# define HasGcc3                NO
#endif

/* Thread support */
#define HasPosixThreads         YES
#define SystemMTDefines         -D_REENTRANT
#if OSMajorVersion >= 6
# define HasThreadSafeAPI       YES
# define MTSafeAPIDefines       -DXUSE_MTSAFE_API -DXNO_MTSAFE_UNISTDAPI
#else
# define HasThreadSafeAPI       NO
# define MTSafeAPIDefines       -DXOS_USE_MTSAFE_NETDBAPI
#endif

/* Libtool on Darwin always uses minor numbers */
#define LibtoolMinorVersions	YES

/* The most common file system, HFS+, is not case sensitive. */
#ifndef CaseSensitiveFileSystem
# define CaseSensitiveFileSystem NO
#endif

/*
 * This enables some settings for developers.
 */
#ifndef XFree86Devel
# define XFree86Devel           NO
#endif

/*
 * This enables Quartz compatibility.
 * Turn off to build on raw Darwin systems.
 */
#ifndef DarwinQuartzSupport
# define DarwinQuartzSupport    YES
#endif

#if DarwinQuartzSupport

# ifndef GlxUseAqua
#  define GlxUseAqua            YES
# endif

/*
 * Before Mac OS X 10.1 a number of features were missing or broken.
 */
# if (OSMajorVersion == 1 && OSMinorVersion >= 4) || OSMajorVersion >= 5
#  ifndef HasNSCarbonWindow
#   define HasNSCarbonWindow    YES
#  endif
#  ifndef HasCGMachPort
#   define HasCGMachPort        YES
#  endif
# else
/* NSWindow(NSCarbonExtensions) is broken. */
#  ifndef HasNSCarbonWindow
#   define HasNSCarbonWindow    NO
#  endif
/* CGWindowServerCFMachPort() does not exist. */
#  ifndef HasCGMachPort
#   define HasCGMachPort        NO
#  endif
# endif

#endif  /* DarwinQuartzSupport */

/* we don't need -lm */
#define MathLibrary             /**/

#define TermcapLibrary          -lcurses
#define SetTtyGroup             YES             /* for xterm */

/* we don't have a dbm library */
#define DBMLibrary              /**/

#define MkdirHierCmd            mkdir -p

/* our cpp isn't in /lib/cpp and early versions don't like -undef */
#define CppCmd                  /usr/bin/cpp
#if HasGcc3
# define RawCppCmd              CppCmd -undef
#else
# define RawCppCmd              CppCmd
#endif

/* we have a gcc compatible compiler, but its not called gcc */
#define CcCmd                   /usr/bin/cc
#define CplusplusCmd            /usr/bin/c++

/* default flags to pass to cc */
#ifndef DefaultCCOptions
#if XFree86Devel
# define DefaultCCOptions       -Wall -Wpointer-arith -Wstrict-prototypes \
                                -Wmissing-prototypes -Wmissing-declarations \
                                -Wredundant-decls -Wnested-externs \
                                -no-cpp-precomp
#else
# define DefaultCCOptions       -Wall -Wpointer-arith -no-cpp-precomp
#endif
#endif

/* flags to pass to cc when building libraries */
#ifndef LibraryCCOptions
# define LibraryCCOptions       DefaultCCOptions -fno-common
#endif

#ifdef PpcDarwinArchitecture
# define DarwinMachineDefines   -D__powerpc__
# if HasGcc3
#  define OptimizedCDebugFlags   -Os
# else
#  define OptimizedCDebugFlags   -O2
# endif
# define ByteOrder              X_BIG_ENDIAN
#endif /* PpcDarwinArchitecture */

#ifdef i386DarwinArchitecture
# define DarwinMachineDefines   -D__i386__
# if HasGcc3
#  define OptimizedCDebugFlags   -Os
# else
#  define OptimizedCDebugFlags   -O2 -fno-strength-reduce
# endif
# define ByteOrder              X_LITTLE_ENDIAN
#endif /* i386DarwinArchitecture */

/*
 * __DARWIN__ will be used for platform specific #ifdefs that can't
 * be handled by existing X defines.
 *
 * Darwin's alloca() seg faults (rather than returning NULL) on failed
 * allocations, so we can't use it.
 *
 * Darwin's setlocale() doesn't work properly, so use X11's instead.
 */
#define StandardDefines         DarwinMachineDefines -D__DARWIN__ \
                                -DNO_ALLOCA -DX_LOCALE -DCSRG_BASED

/*
 * Set this to NO to just build the client libs, which should work without
 * having to write any platform specific code.
 */
#ifndef BuildServer
# define BuildServer            YES

/* our custom X server */
# define XDarwinServer          YES
#endif

/* Thanks to the IOKit, the X server does not have to be SetUID. */
#ifndef InstallXserverSetUID
# define InstallXserverSetUID   NO
#endif

/* no direct graphics extension */
#define BuildXF86DGA            NO

/* no server support for extra tablets and weird input devices */
#define BuildXInputExt          NO
#define BuildXInputLib          YES

/* no Display Power Management extension */
#define BuildDPMSExt            NO

/* no XFree86-Misc extension */
#define BuildXF86MiscExt        NO

/* no XFree86-VidMode extension */
#define BuildXF86VidModeExt	NO

#define BuildLibPathVar         DYLD_LIBRARY_PATH

/* include rules to build shared libraries */
#include <darwinLib.rules>

/*
 * Darwin specific Imake Config files
 */
#ifndef LocalConfigFiles
#define LocalConfigFiles \
	darwinLib.rules \
	darwinLib.tmpl
#endif

/* include all the XFree86 rules */
#include <xfree86.cf>

