14c61c93dSmrgXCOMM $XdotOrg: xc/config/cf/darwin.cf,v 1.7 2005/03/17 01:12:07 torrey Exp $ 211d341caSmrgXCOMM platform: $XFree86: xc/config/cf/darwin.cf,v 1.50 2004/01/20 23:54:50 torrey Exp $ 311d341caSmrg 411d341caSmrg/* Darwin / Mac OS X configuration by John Carmack <johnc@idsoftware.com> */ 511d341caSmrg 611d341caSmrg/* imake determines the default values by parsing uname */ 711d341caSmrg#ifndef OSName 811d341caSmrg#define OSName DefaultOSName 911d341caSmrg#endif 1011d341caSmrg#ifndef OSVendor 1111d341caSmrg#define OSVendor Apple Computer, Inc. 1211d341caSmrg#endif 1311d341caSmrg#ifndef OSMajorVersion 1411d341caSmrg#define OSMajorVersion DefaultOSMajorVersion 1511d341caSmrg#endif 1611d341caSmrg#ifndef OSMinorVersion 1711d341caSmrg#define OSMinorVersion DefaultOSMinorVersion 1811d341caSmrg#endif 1911d341caSmrg#ifndef OSTeenyVersion 2011d341caSmrg#define OSTeenyVersion DefaultOSTeenyVersion 2111d341caSmrg#endif 2211d341caSmrg 2311d341caSmrgXCOMM operating system: OSName (OSMajorVersion./**/OSMinorVersion./**/OSTeenyVersion) 2411d341caSmrg 2511d341caSmrg/* 2611d341caSmrg * Define the operating system's capabilities 2711d341caSmrg */ 2811d341caSmrg#define HasSnprintf YES 2911d341caSmrg#define HasPutenv YES 3011d341caSmrg#define HasBSD44Sockets YES 3111d341caSmrg#define Malloc0ReturnsNull NO 3211d341caSmrg#define HasShadowPasswd NO 3311d341caSmrg#define HasUsableFileMmap YES 3411d341caSmrg#define HasZlib YES 3511d341caSmrg#ifndef HasShm 3611d341caSmrg# define HasShm YES 3711d341caSmrg#endif 3811d341caSmrg#define HasNdbm YES 3911d341caSmrg#if OSMajorVersion >= 6 4011d341caSmrg# define HasNCurses YES 4111d341caSmrg# define HasArc4Random YES 4211d341caSmrg# define HasGetIfAddrs YES 4311d341caSmrg# define HasStrlcat YES 4411d341caSmrg#else 4511d341caSmrg# define HasBasename NO 4611d341caSmrg# define HasNCurses NO 4711d341caSmrg#endif 4811d341caSmrg#ifndef HasGroff 4911d341caSmrg# define HasGroff YES 5011d341caSmrg#endif 5111d341caSmrg#ifndef HasGcc3 5211d341caSmrg# define HasGcc3 NO 5311d341caSmrg#endif 5411d341caSmrg#ifndef HasFreetype2 5511d341caSmrg# define HasFreetype2 NO 5611d341caSmrg#endif 5711d341caSmrg#ifndef HasExpat 5811d341caSmrg# define HasExpat NO 5911d341caSmrg#endif 6011d341caSmrg#ifndef HasLibpng 6111d341caSmrg# define HasLibpng NO 6211d341caSmrg#endif 6311d341caSmrg 6411d341caSmrg/* Older versions don't really support IPv6, but #define AF_INET6. */ 6511d341caSmrg#if OSMajorVersion < 6 6611d341caSmrg# define BuildIPv6 NO 6711d341caSmrg#endif 6811d341caSmrg 6911d341caSmrg/* Thread support */ 7011d341caSmrg#define HasPosixThreads YES 7111d341caSmrg#define SystemMTDefines -D_REENTRANT 7211d341caSmrg#if OSMajorVersion >= 6 7311d341caSmrg# define HasThreadSafeAPI YES 7411d341caSmrg# define MTSafeAPIDefines -DXUSE_MTSAFE_API -DXNO_MTSAFE_UNISTDAPI 7511d341caSmrg#else 7611d341caSmrg# define HasThreadSafeAPI NO 7711d341caSmrg# define MTSafeAPIDefines -DXOS_USE_MTSAFE_NETDBAPI 7811d341caSmrg#endif 7911d341caSmrg 8011d341caSmrg/* Libtool on Darwin always uses minor numbers */ 8111d341caSmrg#define LibtoolMinorVersions YES 8211d341caSmrg 8311d341caSmrg/* The most common file system, HFS+, is not case sensitive. */ 8411d341caSmrg#ifndef CaseSensitiveFileSystem 8511d341caSmrg# define CaseSensitiveFileSystem NO 8611d341caSmrg#endif 8711d341caSmrg 8811d341caSmrg/* 8911d341caSmrg * This enables some settings for developers. 9011d341caSmrg */ 9111d341caSmrg#ifndef XFree86Devel 9211d341caSmrg# define XFree86Devel NO 9311d341caSmrg#endif 9411d341caSmrg 9511d341caSmrg/* 9611d341caSmrg * This enables Quartz compatibility. 9711d341caSmrg * Turn off to build on raw Darwin systems. 9811d341caSmrg */ 9911d341caSmrg#ifndef DarwinQuartzSupport 10011d341caSmrg# define DarwinQuartzSupport YES 10111d341caSmrg#endif 10211d341caSmrg 10311d341caSmrg#if DarwinQuartzSupport 10411d341caSmrg 10511d341caSmrg# if OSMajorVersion >= 7 10611d341caSmrg PROJ_BUILD = xcodebuild 10711d341caSmrg# else 10811d341caSmrg PROJ_BUILD = pbxbuild 10911d341caSmrg# endif 11011d341caSmrg 11111d341caSmrg# ifndef HasXplugin 11211d341caSmrg# if OSMajorVersion >= 7 11311d341caSmrg# define HasXplugin YES 11411d341caSmrg# else 11511d341caSmrg# define HasXplugin NO 11611d341caSmrg# endif 11711d341caSmrg# endif 11811d341caSmrg 11911d341caSmrg# if HasXplugin 12011d341caSmrg# ifndef XpLibDir 12111d341caSmrg# define XpLibDir /usr/lib 12211d341caSmrg# endif 12311d341caSmrg# ifndef XpIncDir 12411d341caSmrg# define XpIncDir $(SERVERSRC)/hw/darwin/quartz/xpr 12511d341caSmrg# endif 12611d341caSmrg XPLIBDIR = XpLibDir 12711d341caSmrg XPINCDIR = XpIncDir 12811d341caSmrg# define XpluginLibrary Concat(-L,$(XPLIBDIR)) -lXplugin 12911d341caSmrg# else 13011d341caSmrg# define XpluginLibrary /**/ 13111d341caSmrg# endif 13211d341caSmrg 13311d341caSmrg# ifndef BuildAppleDRI 13411d341caSmrg# if HasXplugin 13511d341caSmrg# define BuildAppleDRI YES 13611d341caSmrg# else 13711d341caSmrg# define BuildAppleDRI NO 13811d341caSmrg# endif 13911d341caSmrg# endif 14011d341caSmrg 14111d341caSmrg# if BuildAppleDRI 14211d341caSmrg# define GlxExtraDefines -DGLX_DIRECT_RENDERING -DGLX_USE_APPLEGL GlxArchDefines 14311d341caSmrg# endif 14411d341caSmrg 14511d341caSmrg# define BuildRootless YES 14611d341caSmrg# define BuildAppleWMLibrary YES 14711d341caSmrg 14811d341caSmrg#endif /* DarwinQuartzSupport */ 14911d341caSmrg 15011d341caSmrg/* we don't need -lm */ 15111d341caSmrg#define MathLibrary /**/ 15211d341caSmrg 15311d341caSmrg#define TermcapLibrary -lcurses 15411d341caSmrg#define SetTtyGroup YES /* for xterm */ 15511d341caSmrg 15611d341caSmrg/* we don't have a dbm library */ 15711d341caSmrg#define DBMLibrary /**/ 15811d341caSmrg 15911d341caSmrg#define MkdirHierCmd mkdir -p 16011d341caSmrg 16111d341caSmrg/* Use flex -l for compatibility with various versions of flex. */ 16211d341caSmrg#ifndef LexCmd 16311d341caSmrg# define LexCmd flex -l 16411d341caSmrg#endif 16511d341caSmrg#define HasFlex YES 16611d341caSmrg 16711d341caSmrg/* 16811d341caSmrg * Our cpp isn't in /lib/cpp and early versions don't like -undef. 16911d341caSmrg * The gcc 3.3 cpp that Apple ships inserts spurious #pragmas, 17011d341caSmrg * so we use the 3.1-based version in this case. 17111d341caSmrg */ 17211d341caSmrg#if (GccMajorVersion == 3) && (GccMinorVersion == 3) 17311d341caSmrg# define CppCmd /usr/bin/cpp3 17411d341caSmrg#else 17511d341caSmrg# define CppCmd /usr/bin/cpp 17611d341caSmrg#endif 17711d341caSmrg#if (GccMajorVersion == 3) && (GccMinorVersion == 3) || (GccMajorVersion > 3) 17811d341caSmrg# define StandardCppOptions -traditional -D__GNUC__ 17911d341caSmrg#endif 18011d341caSmrg#if HasGcc3 18111d341caSmrg# define RawCppCmd CppCmd -undef 18211d341caSmrg#else 18311d341caSmrg# define RawCppCmd CppCmd 18411d341caSmrg#endif 18511d341caSmrg 18611d341caSmrg/* we have a gcc compatible compiler, but its not called gcc */ 18711d341caSmrg#define CcCmd /usr/bin/cc 18811d341caSmrg#define CplusplusCmd /usr/bin/c++ 18911d341caSmrg 19011d341caSmrg/* default flags to pass to cc */ 19111d341caSmrg#ifndef DefaultCCOptions 19211d341caSmrg#if XFree86Devel 19311d341caSmrg# define DefaultCCOptions -Wall -Wpointer-arith -Wstrict-prototypes \ 19411d341caSmrg -Wmissing-prototypes -Wmissing-declarations \ 19511d341caSmrg -Wredundant-decls -Wnested-externs \ 19611d341caSmrg -no-cpp-precomp 19711d341caSmrg#else 19811d341caSmrg# define DefaultCCOptions -Wall -Wpointer-arith -no-cpp-precomp 19911d341caSmrg#endif 20011d341caSmrg#endif 20111d341caSmrg 20211d341caSmrg/* flags to pass to cc when building libraries */ 20311d341caSmrg#ifndef LibraryCCOptions 20411d341caSmrg# define LibraryCCOptions DefaultCCOptions -fno-common 20511d341caSmrg#endif 20611d341caSmrg 20711d341caSmrg/* The cr implementation does not build with NEED_SCREEN_REGIONS, 20811d341caSmrg so play it safe. */ 20911d341caSmrg#ifndef ServerCCOptions 21011d341caSmrg# define ServerCCOptions DefaultCCOptions -UNEED_SCREEN_REGIONS 21111d341caSmrg#endif 21211d341caSmrg 21311d341caSmrg#ifdef PpcDarwinArchitecture 21411d341caSmrg# define DarwinMachineDefines -D__powerpc__ 21511d341caSmrg# if HasGcc3 21611d341caSmrg# define OptimizedCDebugFlags -Os 21711d341caSmrg# else 21811d341caSmrg# define OptimizedCDebugFlags -O2 21911d341caSmrg# endif 22011d341caSmrg# define ByteOrder X_BIG_ENDIAN 22111d341caSmrg#endif /* PpcDarwinArchitecture */ 22211d341caSmrg 22311d341caSmrg#ifdef i386DarwinArchitecture 22411d341caSmrg# define DarwinMachineDefines -D__i386__ 22511d341caSmrg# if HasGcc3 22611d341caSmrg# define OptimizedCDebugFlags -Os 22711d341caSmrg# else 22811d341caSmrg# define OptimizedCDebugFlags -O2 -fno-strength-reduce 22911d341caSmrg# endif 23011d341caSmrg# define ByteOrder X_LITTLE_ENDIAN 23111d341caSmrg#endif /* i386DarwinArchitecture */ 23211d341caSmrg 233d7ffce2aSmrg#ifdef x86_64DarwinArchitecture 234d7ffce2aSmrg# define DarwinMachineDefines -D__x86_64__ 235d7ffce2aSmrg# if HasGcc3 236d7ffce2aSmrg# define OptimizedCDebugFlags -Os 237d7ffce2aSmrg# else 238d7ffce2aSmrg# define OptimizedCDebugFlags -O2 -fno-strength-reduce 239d7ffce2aSmrg# endif 240d7ffce2aSmrg# define ByteOrder X_LITTLE_ENDIAN 241d7ffce2aSmrg#endif /* x86_64DarwinArchitecture */ 242d7ffce2aSmrg 243944bff83Smrg#ifdef aarch64DarwinArchitecture 244944bff83Smrg# define DarwinMachineDefines -D__aarch64__ 245944bff83Smrg# if HasGcc3 246944bff83Smrg# define OptimizedCDebugFlags -Os 247944bff83Smrg# else 248944bff83Smrg# define OptimizedCDebugFlags -O2 -fno-strength-reduce 249944bff83Smrg# endif 250944bff83Smrg# define ByteOrder X_LITTLE_ENDIAN 251944bff83Smrg#endif /* aarch64DarwinArchitecture */ 252944bff83Smrg 25311d341caSmrg#if OSMajorVersion < 7 25411d341caSmrg# define DarwinLocaleDefines -DX_LOCALE 25511d341caSmrg#else 25611d341caSmrg# define DarwinLocaleDefines /**/ 25711d341caSmrg# define XawI18nDefines -DHAS_WCHAR_H -DHAS_WCTYPE_H -DNO_WIDEC_H 25811d341caSmrg#endif 25911d341caSmrg 26011d341caSmrg/* 26111d341caSmrg * __DARWIN__ will be used for platform specific #ifdefs that can't 26211d341caSmrg * be handled by existing X defines. 26311d341caSmrg * 26411d341caSmrg * Darwin's alloca() seg faults (rather than returning NULL) on failed 26511d341caSmrg * allocations, so we can't use it. 26611d341caSmrg */ 26711d341caSmrg#define StandardDefines DarwinMachineDefines -D__DARWIN__ \ 26811d341caSmrg -DNO_ALLOCA -DCSRG_BASED DarwinLocaleDefines 26911d341caSmrg 27011d341caSmrg/* 27111d341caSmrg * Set this to NO to just build the client libs, which should work without 27211d341caSmrg * having to write any platform specific code. 27311d341caSmrg */ 27411d341caSmrg#ifndef BuildServer 27511d341caSmrg# define BuildServer YES 27611d341caSmrg 27711d341caSmrg/* our custom X server */ 27811d341caSmrg# define XDarwinServer YES 27911d341caSmrg#endif 28011d341caSmrg 28111d341caSmrg/* Thanks to the IOKit, the X server does not have to be SetUID. */ 28211d341caSmrg#ifndef InstallXserverSetUID 28311d341caSmrg# define InstallXserverSetUID NO 28411d341caSmrg#endif 28511d341caSmrg 28611d341caSmrg/* Allow Xtrans to work with non-SetUID server. */ 28711d341caSmrg#ifndef XtransFailSoft 28811d341caSmrg# define XtransFailSoft YES 28911d341caSmrg#endif 29011d341caSmrg 29111d341caSmrg/* disable XKB by default as it can cause problems */ 29211d341caSmrg#define DfltDisableXKB YES 29311d341caSmrg 29411d341caSmrg/* no direct graphics extension */ 29511d341caSmrg#define BuildXF86DGA NO 29611d341caSmrg 29711d341caSmrg/* Support for tablets and other non-standard input devices */ 29811d341caSmrg#ifndef BuildXInputExt 29911d341caSmrg# define BuildXInputExt YES 30011d341caSmrg#endif 30111d341caSmrg#define BuildXInputLib YES 30211d341caSmrg 30311d341caSmrg/* no Display Power Management extension */ 30411d341caSmrg#define BuildDPMS NO 30511d341caSmrg 30611d341caSmrg/* no XFree86-Misc extension */ 30711d341caSmrg#define BuildXF86MiscExt NO 30811d341caSmrg 30911d341caSmrg/* no XFree86-VidMode extension */ 31011d341caSmrg#define BuildXF86VidModeExt NO 31111d341caSmrg 31211d341caSmrg#ifndef BuildXterm 31311d341caSmrg# define BuildXterm BuildClients /* Not enabled by default */ 31411d341caSmrg#endif 31511d341caSmrg 31611d341caSmrg#define BuildLibPathVar DYLD_LIBRARY_PATH 31711d341caSmrg 31811d341caSmrg/* include rules to build shared libraries */ 31911d341caSmrg#include <darwinLib.rules> 32011d341caSmrg 32111d341caSmrg/* 32211d341caSmrg * BundleProgramTarget - Generate rules for compiling, linking and 3231c80d5b0Smrg * installing a bundle executable. 32411d341caSmrg */ 32511d341caSmrg#ifndef BundleProgramTarget 32611d341caSmrg#define BundleProgramTarget(program,loader,subdirs,objs,deplib,syslib,dstdir) @@\ 32711d341caSmrg @@\ 32811d341caSmrgAllTarget(program) @@\ 32911d341caSmrg @@\ 33011d341caSmrgprogram: loader subdirs objs deplib @@\ 33111d341caSmrg RemoveTargetProgram($@) @@\ 33211d341caSmrg LinkRule($@,-bundle $(LDOPTIONS),objs,deplib $(LDLIBS) syslib -bundle_loader loader) @@\ 33311d341caSmrg @@\ 33411d341caSmrgInstallProgram(program,dstdir/program.bundle/Contents/MacOS) @@\ 33511d341caSmrg @@\ 33611d341caSmrgclean:: @@\ 33711d341caSmrg RemoveFile(program) 33811d341caSmrg#endif /* BundleProgramTarget */ 33911d341caSmrg 34011d341caSmrg/* 34111d341caSmrg * Darwin specific Imake Config files 34211d341caSmrg */ 34311d341caSmrg#ifndef LocalConfigFiles 34411d341caSmrg#define LocalConfigFiles \ 34511d341caSmrg darwinLib.rules \ 34611d341caSmrg darwinLib.tmpl 34711d341caSmrg#endif 34811d341caSmrg 34911d341caSmrg/* include all the X.Org rules */ 35011d341caSmrg#include <xorg.cf> 351