darwin.cf   [plain text]


XCOMM platform:  $XFree86: xc/config/cf/darwin.cf,v 1.51 2004/02/11 00:30:27 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
# define HasArc4Random          YES
# define HasGetIfAddrs          YES
# define HasStrlcat             YES
#else
# define HasBasename            NO
# define HasNCurses             NO
#endif
#ifndef HasGroff
# define HasGroff               YES
#endif
#ifndef HasGcc3
# define HasGcc3                NO
#endif

/* Older versions don't really support IPv6, but #define AF_INET6. */
#if OSMajorVersion < 6
# define BuildIPv6              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

# if OSMajorVersion >= 7
   PROJ_BUILD = xcodebuild
# else
   PROJ_BUILD = pbxbuild
# endif

# ifndef HasXplugin
#  if OSMajorVersion >= 7
#   define HasXplugin           YES
#  else
#   define HasXplugin           NO
#  endif
# endif

# if HasXplugin
#  define XpluginLibrary        $(XPLUGIN_LIBDIR) -lXplugin
# else
#  define XpluginLibrary        /**/
# endif

XPLUGIN_LIB = XpluginLibrary

# ifndef BuildAppleDRI
#  if HasXplugin
#   define BuildAppleDRI        YES
#  else
#   define BuildAppleDRI        NO
#  endif
# endif

# if BuildAppleDRI
#  define GlxExtraDefines -DGLX_DIRECT_RENDERING -DGLX_USE_APPLEGL GlxArchDefines
# endif

#define BuildAppleWMLibrary     YES

#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

/* Use flex -l for compatibility with various versions of flex. */
#ifndef LexCmd
# define LexCmd                 flex -l
#endif
#define HasFlex                 YES

/*
 * Our cpp isn't in /lib/cpp and early versions don't like -undef.
 * The default cpp-3.3 that ships with Panther inserts spurious #pragmas,
 * so we use the 3.1-based version.
 */
#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 */
#ifndef CcCmd
#define CcCmd                   /usr/bin/cc
#endif
#ifndef CplusplusCmd
#define CplusplusCmd            /usr/bin/c++
#endif

/* 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

/* The cr implementation does not build with NEED_SCREEN_REGIONS,
   so play it safe. */
#ifndef ServerCCOptions
# define ServerCCOptions        DefaultCCOptions -UNEED_SCREEN_REGIONS
#endif

#define DarwinMachineDefines
#define OptimizedCDebugFlags    -g -Os
#define ByteOrder               UNKNOWN_BYTE_ORDER

#if OSMajorVersion < 7
# define DarwinLocaleDefines    -DX_LOCALE
#else
# define DarwinLocaleDefines    /**/
# define XawI18nDefines         -DHAS_WCHAR_H
#endif

/*
 * __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.
 */
#define StandardDefines         DarwinMachineDefines -D__DARWIN__ \
                                -DNO_ALLOCA -DCSRG_BASED DarwinLocaleDefines

/*
 * 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          NO
# define XAppleServer           YES
#endif

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

/* disable XKB by default as it can cause problems */
#define DfltDisableXKB          YES

/* 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 BuildDPMS               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>

/*
 * BundleProgramTarget - Generate rules for compiling, linking and
 * installing a bundle executable. 
 */
#ifndef BundleProgramTarget
#define BundleProgramTarget(program,loader,subdirs,objs,deplib,syslib,dstdir) @@\
                                                                        @@\
AllTarget(program)							@@\
									@@\
program: loader subdirs objs deplib					@@\
	RemoveTargetProgram($@)						@@\
	LinkRule($@,-bundle $(LDOPTIONS),objs,deplib $(LDLIBS) syslib -bundle_loader loader) @@\
									@@\
InstallProgram(program,dstdir/program.bundle/Contents/MacOS)		@@\
									@@\
clean::									@@\
	RemoveFile(program)
#endif /* BundleProgramTarget */

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

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

/* ..and fix some stuff up */
#if XAppleServer

# undef ServerExtraDefines
# define ServerExtraDefines XFree86ServerDefines -UX_BYTE_ORDER -DROOTLESS -DDDXTIME

#define InstallFlags -c -o root -g wheel

#endif /* XAppleServer */