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