xenocara/util/cf/FreeBSD.cf
2006-11-25 16:15:45 +00:00

583 lines
15 KiB
CFEngine3

XCOMM platform: $Xorg: FreeBSD.cf,v 1.3 2000/08/17 19:41:45 cpqbld Exp $
XCOMM platform: $XdotOrg: util/cf/FreeBSD.cf,v 1.11 2005/05/04 04:14:57 anholt Exp $
XCOMM
XCOMM
XCOMM
XCOMM platform: $XFree86: xc/config/cf/FreeBSD.cf,v 3.147 2004/01/28 01:46:21 dawes Exp $
#ifndef UseElfFormat
#define UseElfFormat DefaultToElfFormat
#endif
#if UseElfFormat
#define OSBinaryFormat [ELF]
#else
#define OSBinaryFormat [a.out]
#endif
#ifndef OSName
#define OSName DefaultOSName OSBinaryFormat
#endif
#ifndef OSVendor
#define OSVendor /**/
#endif
#ifndef OSMajorVersion
#define OSMajorVersion DefaultOSMajorVersion
#endif
#ifndef OSMinorVersion
#define OSMinorVersion DefaultOSMinorVersion
#endif
#ifndef OSTeenyVersion
#define OSTeenyVersion DefaultOSTeenyVersion
#endif
#ifndef OSRelVersion
/* Include this to get finer-grained information about the OS version */
#include "/usr/include/osreldate.h"
#define OSRelVersion __FreeBSD_version
#endif
XCOMM operating system: OSName (OSMajorVersion./**/OSMinorVersion./**/OSTeenyVersion) (OSRelVersion)
#define HasCplusplus YES
#define GccUsesGas YES
#define UseGas YES
#define GnuCpp YES
#define HasNdbm YES
#define HasPutenv YES
#define HasSnprintf YES
#if OSMajorVersion == 3 && OSMinorVersion >= 3 || OSMajorVersion > 3
# define HasStrlcat YES
#endif
#if OSMajorVersion == 4 && OSMinorVersion >= 2 || OSMajorVersion > 4
# define HasBasename YES
#else
# define HasBasename NO
#endif
#define HasBSD44Sockets YES
#define HasDlopen YES
#if ((OSRelVersion >= 410002) && OSRelVersion < 500000) || (OSRelVersion >= 500012)
#define HasSetProcTitle YES
#endif
#ifndef HasLibCrypt
# define HasLibCrypt YES
#endif
#ifndef HasShm
# define HasShm YES
#endif
#define HasWChar32 YES
#define HasUsableFileMmap YES
#define HasNCurses YES
#define HasVarRun YES
#define HasVarDb YES
#ifndef BuildPDFdocs
# define BuildPDFdocs NO
#endif
#if (OSMajorVersion >= 3)
#define HasIssetugid YES
#define HasPoll YES
#endif
#if OSMajorVersion >= 4
#define HasGetIfAddrs YES
#endif
/* All versions define AF_INET6. 3.x and earlier don't have IPv6 support. */
#if OSMajorVersion < 4
#ifndef BuildIPv6
#define BuildIPv6 NO
#endif
#endif
#define IPv6SocketsAlsoIPv4 NO
#if (OSMajorVersion > 1)
#define InstallXloadSetGID NO
#else
#define InstallXloadSetGID YES
#endif
#define HasWeakSymbols UseElfFormat
/*
* Multi-thread safe libs
*/
/* 2.2.7 and later has libc_r (POSIX threads) */
#if OSMajorVersion == 2 && OSMinorVersion == 2 && OSTeenyVersion >= 7 || \
OSMajorVersion >= 3
# define HasPosixThreads YES
# define ThreadedX YES
# define HasThreadSafeAPI YES
# if OSRelVersion < 501000
# define MTSafeAPIDefines -DXUSE_MTSAFE_API -DXNO_MTSAFE_PWDAPI
# else
# define MTSafeAPIDefines -DXUSE_MTSAFE_API
# endif
# if (OSRelVersion < 500043)
# define NeedUIThrStubs YES
# endif
# if (OSRelVersion >= 502102)
# define ThreadsLibraries -lpthread
# elif (OSRelVersion >= 500016)
# define ThreadsLibraries -lc_r
# else
# define ThreadsLibraries -pthread
# endif
# define SystemMTDefines -D_THREAD_SAFE
#endif
/* This fixes linking C programs against libGLU on FreeBSD 3.x */
#if (OSMajorVersion == 3)
#define SharedGLUReqs $(LDPRELIB) $(XLIB) $(GLXLIB) -lstdc++ -lgcc
#endif
#define AvoidNullMakeCommand YES
#define StripInstalledPrograms YES
#define CompressAllFonts YES
#define Malloc0ReturnsNull YES
#define NeedConstPrototypes YES
#define NeedFunctionPrototypes YES
#define NeedNestedPrototypes YES
#define NeedVarargsPrototypes YES
#define NeedWidePrototypes NO
#define HasPlugin YES
#define VendorHasX11R6_3libXext YES /* XC or XFree86 >= 3.3.1 */
#define MkdirHierCmd mkdir -p
#ifndef LexCmd
#define LexCmd flex -l
#endif
#ifndef HasFlex
#define HasFlex YES
#endif
#ifndef HasMktemp
#if (OSMajorVersion >= 4) || (OSMajorVersion == 3 && OSMinorVersion >= 1) || \
(OSMajorVersion == 2 && OSMinorVersion == 2 && OSTeenyVersion >= 7)
#define HasMktemp YES
#else
#define HasMktemp NO
#endif
#endif
/*
* 2.2.x has perl 4 by default, not perl 5.
*/
#if (OSMajorVersion <= 2)
#ifndef HasPerl5
#define HasPerl5 NO
#endif
#endif
#ifndef CcCmd
#define CcCmd cc
#endif
#ifndef CplusplusCmd
#define CplusplusCmd c++
#endif
#define CppCmd /usr/bin/cpp
#define PreProcessCmd CppCmd
#define StandardCppOptions -traditional
#define StandardCppDefines /**/
#ifndef DefaultCCOptions
#if defined(UseInstalled)
#define DefaultCCOptions /**/
#else
#if defined(HasGcc3) && HasGcc3
#define NoSystemWarn -Wno-system-headers
#else
#define NoSystemWarn
#endif
#define DefaultCCOptions -ansi -pedantic NoSystemWarn -Dasm=__asm \
GccWarningOptions
#endif
#endif
#ifndef ExtraLibraries
/* support for multi-byte locales is in libxpg4 rather than libc */
#if (OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion >= 2)) && \
!(OSMajorVersion == 4 && OSRelVersion >= 400020) && \
!(OSRelVersion >= 500005)
#define ExtraLibraries -lxpg4
#else
#define ExtraLibraries /**/
#endif
#endif
#ifndef UseGnuMalloc
/* 2.2 doesn't really have GnuMalloc */
#if OSMajorVersion < 2 || (OSMajorVersion == 2 && OSMinorVersion < 2)
#define UseGnuMalloc YES
#else
#define UseGnuMalloc NO
#endif
#endif
/* 2.2.2 and later has setusercontext() */
#if OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion > 2) || \
(OSMajorVersion == 2 && OSMinorVersion == 2 && OSTeenyVersion >= 2)
#define HasSetUserContext YES
#endif
#if OSMajorVersion >= 5 || (OSMajorVersion == 4 && OSMinorVersion >= 6)
#define HasGetpeereid YES
#endif
/* 3.3(?) and later has support for setting MTRRs */
#ifndef HasMTRRSupport
#if OSMajorVersion > 3 || (OSMajorVersion == 3 && OSMinorVersion >= 3)
#define HasMTRRSupport YES
#else
#define HasMTRRSupport NO
#endif
#endif
/*
* Drivers that don't need AGP can work with 4.0, but we don't have a
* mechanism for specifying a subset of drivers in the OS.cf files yet.
*/
#ifndef BuildXF86DRI
#if OSMajorVersion >= 5 || (OSMajorVersion == 4 && OSMinorVersion >= 1)
#define BuildXF86DRI YES
#endif
#endif
/*
* 4.1/i386 and 5.0/i386,alpha,ia64,amd64 have the AGP driver.
*/
#ifndef HasAgpGart
#if defined(i386Architecture) && \
(OSMajorVersion >= 5 || (OSMajorVersion == 4 && OSMinorVersion >= 1))
#define HasAgpGart YES
#endif
#if (defined(AlphaArchitecture) || defined(ia64Architecture) || \
defined(AMD64Architecture)) && (OSMajorVersion >= 5)
#define HasAgpGart YES
#endif
#endif
/*
* SSE and 3DNow will be autodetected, so binutils is the only
* requirement for enabling this. By 4.2 they were all supported.
*/
#if defined(AMD64Architecture) || defined(i386Architecture) && \
(OSMajorVersion >= 5 || (OSMajorVersion == 4 && OSMinorVersion >= 2))
# 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
/*
* This doesn't work the way it does on every other system. On FreeBSD it's
* only a "hint, not a demand", whatever that means. Note that this is not
* what it says in the ld and ld.so man pages, which are rather vague on the
* matter.
*
* But we do know that if a) you do what the X Project team does and set your
* ProjectRoot to something like "/X11", and b) you have other X libraries,
* e.g. in /usr/X11R6/lib, and you have added /usr/X11R6/lib to your
* ld.so.cache with ldconfig, then any programs linked with this "hint" will
* find that ld.so ignores the "hint" at runtime and loads the libraries in
* the ld.so.cache, i.e.the wrong ones, instead! Empirically we find that
* the run-path is only used as a last resort to find the libraries, after
* the LD_LIBRARY_PATH and ld.so.cache.
*
* N. B. to FreeBSD users who are not familiar with the semantics of the run-
* path on other systems. The run-path is akin to a per-program ld.so.cache.
* If a program is linked with a run-path, that run-path should take
* precedence over _everything_ else! In my opinion ldconfig and the
* ld.so.cache should be deprecated immediately now that FreeBSD has run-
* paths. Any program that needs libraries that are outside the "well known"
* locations should be linked with a run-path.
*
* All of which begs the question: If this option doesn't work in any useful
* way, why did they (FreeBSD) bother to add it? It would be nice if FreeBSD
* would fix ld.so so that run-paths are truly useful.
*
* Using run-paths is added with the intent that vendors who ship X for
* FreeBSD should use it too. Once everyone uses it then there will be no
* reason for FreeBSD to assume that it knows where X libraries are installed
* and they can remove it from the list of directories they add to ld.so.cache
* in their /etc/rc file.
*/
#ifndef UseRpath
# define UseRpath YES
#endif
#if OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion >= 2)
# ifndef RpathLoadFlags
# if UseRpath
# if UseElfFormat
# define RpathLoadFlags -Wl,-rpath,$(USRLIBDIRPATH)
# else
# define RpathLoadFlags -Wl,-R,$(USRLIBDIRPATH)
# endif
# else
# define RpathLoadFlags /**/
# endif
# endif
# ifndef ExtraLoadFlags
# if UseElfFormat && !defined(UseInstalled)
# define ExtraLoadFlags RpathLoadFlags -Wl,-rpath-link,$(BUILDLIBDIR)
# else
# define ExtraLoadFlags RpathLoadFlags
# endif
# endif
#endif
#ifndef LibraryRpathLoadFlags
# if UseRpath
# if UseElfFormat
# define LibraryRpathLoadFlags -rpath $(USRLIBDIRPATH)
# else
# define LibraryRpathLoadFlags -R $(USRLIBDIRPATH)
# endif
# else
# define LibraryRpathLoadFlags /**/
# endif
#endif
#ifndef SharedLibraryLoadFlags
# if UseElfFormat
# define SharedLibraryLoadFlags -shared LibraryRpathLoadFlags
# else
# define SharedLibraryLoadFlags -Bshareable LibraryRpathLoadFlags
# endif
#endif
#ifndef GnuMallocLibrary
#define GnuMallocLibrary -lgnumalloc
#endif
#if (OSMajorVersion > 2) || (OSMajorVersion == 2 && OSMinorVersion >= 2) \
|| (OSMajorVersion == 2 && OSMinorVersion == 1 && OSTeenyVersion >= 6)
/* 2.1.6 and 2.2 have libz */
#ifndef HasZlib
#define HasZlib YES
#endif
#endif
/* PAM appeared in FreeBSD 3.1 */
#if (OSMajorVersion > 3) || (OSMajorVersion == 3 && OSMinorVersion >=1 )
#ifndef HasPam
#define HasPam YES
#endif
#endif
/* There are two options for building. One is to assume that the system has
* many of the dependencies provided by the ports tree. The other is to just
* build everything from this tree.
*/
#ifndef HasStandardPorts
#define HasStandardPorts YES
#endif
#ifndef LocalBase
#define LocalBase /usr/local
#endif
#ifndef X11Base
#define X11Base /usr/X11R6
#endif
#if HasStandardPorts
#ifndef HasExpat
# define HasExpat YES
# define ExpatDir LocalBase
#endif
#ifndef HasFreetype2
# define HasFreetype2 YES
# define Freetype2Dir LocalBase
#endif
#ifndef HasFontconfig
# define HasFontconfig YES
# define FontconfigDir X11Base
#endif
#ifndef HasLibpng
# define HasLibpng YES
# define LibpngDir LocalBase
#endif
#endif /* HasStandardPorts */
#undef InstallCmd
#define InstallCmd /usr/bin/install
#if UseElfFormat
# define AsmElfDefines -D__ELF__
#else
# define AsmElfDefines /**/
#endif
#if GccUsesGas
# define GccGasOption -DGCCUSESGAS
# define AsmDefines -DUSE_GAS AsmElfDefines
#else
# define GccGasOption /**/
# define AsmDefines AsmElfDefines
#endif
#ifdef i386Architecture
#define ServerExtraDefines GccGasOption XFree86ServerDefines
#endif
#if defined(AlphaArchitecture) || defined(Sparc64Architecture) || \
defined(ia64Architecture) || defined(AMD64Architecture)
#define ServerExtraDefines GccGasOption XFree86ServerDefines -D_XSERVER64
#endif
#ifdef Sparc64Architecture
#define AsVISOption -Av9a
#define AsOutputArchSize 64
#endif
#ifdef PpcArchitecture
#define XF86INT10_BUILD X86INT10_STUB
#endif
#define StandardDefines -DCSRG_BASED
#if OSMajorVersion > 1
#define ServerOSDefines XFree86ServerOSDefines -DDDXTIME
#define XawI18nDefines -DUSE_XWCHAR_STRING
#define HasMakefileSafeInclude YES
#define IncludeMakefile(file) @@# dependencies are in .depend
#define DependFileName .depend
#ifndef DoLoadableServer
#define DoLoadableServer YES
#endif
#ifndef ForceNormalLib
#define ForceNormalLib YES
#endif
#define HasMkstemp YES
#else
#define ServerOSDefines XFree86ServerOSDefines -DDDXTIME -DXNO_SYSCONF
#define XawI18nDefines -DUSE_XWCHAR_STRING -DUSE_XMBTOWC
#endif
/* The GCC strength-reduce bug is fixed for FreeBSD 2.1.5 and later */
#ifndef DefaultGcc2i386Opt
#if OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion > 1) || (OSMajorVersion == 2 && OSMinorVersion == 1 && OSTeenyVersion >= 5)
#define DefaultGcc2i386Opt -O2 GccAliasingArgs
#endif
#endif
#ifdef i386Architecture
# define OptimizedCDebugFlags DefaultGcc2i386Opt
#else
# define OptimizedCDebugFlags -O
#endif
#ifndef PreIncDir
# define PreIncDir /usr/include
#endif
#define HasGroff YES
#define NroffCmd env GROFF_NO_SGR=y groff -Tascii
#define SetTtyGroup YES
#ifndef ExtraFilesToClean
# define ExtraFilesToClean *.core
#endif
#define DefaultUserPath /bin:/usr/bin:/sbin:/usr/sbin:$(BINDIR):/usr/gnu/bin:/usr/local/bin
#define DefaultSystemPath /bin:/usr/bin:/sbin:/usr/sbin:$(BINDIR)
#ifndef SystemManDirectory
#define SystemManDirectory /usr/share/man
#endif
#define InstKmemFlags -g kmem -m 2755
/*
* Compress manual pages
*/
#ifndef CompressManPages
# define CompressManPages YES
#endif
#if OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion >= 1)
#define HasBsdMake YES
#endif
#ifndef StaticLibrary
#define StaticLibrary(libpath,libname) -Wl,-Bstatic Concat(-L,libpath) Concat(-l,libname) -Wl,-Bdynamic
#endif
#if UseElfFormat
#define DlLibrary -rdynamic
#else
#define DlLibrary /**/
#endif
#ifdef AlphaArchitecture
#define IoLibrary -lio
#else
#define IoLibrary /**/
#endif
#define ServerExtraSysLibs IoLibrary
#ifndef PamLibraries
#define PamLibraries -lpam DlLibrary
#endif
#ifndef SharedLibXdmGreet
# define SharedLibXdmGreet NO
#endif
/*
* On FreeBSD, the run-time loader will use the built-in "rpath" before
* LD_LIBRARY_PATH. This means that utilities like mkfontdir will load
* installed libraries (if they exist) in preference to the ones in the
* build tree, even though LD_LIBRARY_PATH points to the build tree.
* This can result in the build failing. One way to avoid this is to
* pre-load the libraries from the build tree.
*
* There should be a better way than this hack...
*/
#if UseElfFormat
#ifndef PreloadFontSetup
#define PreloadFontSetup LD_PRELOAD="`(cd $(XENVLIBDIR); echo $(XFONTPRELOADPATTERN))`"
#endif
#ifndef PreloadFreetypeSetup
#define PreloadFreetypeSetup LD_PRELOAD="`(cd $(XENVLIBDIR); echo $(FT2PRELOADPATTERN))`"
#endif
#ifndef PreloadXFTSetup
#define PreloadXFTSetup LD_PRELOAD="`(cd $(XENVLIBDIR); echo $(FT2PRELOADPATTERN) $(XFTPRELOADPATTERN) $(XRENDERPRELOADPATTERN) $(FCPRELOADPATTERN))`"
#endif
#endif
#ifndef HasCookieMaker
/* Which versions have /dev/urandom? */
#if OSMajorVersion >= 4
#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
/*
* A hack to work around an optimization problem with gcc 2.95.2 - 2.95.4
*/
#if (GccMajorVersion == 2 && GccMinorVersion == 95)
#define GccOptBug295
#endif
#include <bsdLib.rules>
#include <xorg.cf>