XCOMM platform: $Xorg: FreeBSD.cf,v 1.3 2000/08/17 19:41:45 cpqbld Exp $ XCOMM XCOMM XCOMM XCOMM platform: $XFree86: xc/config/cf/FreeBSD.cf,v 3.144 2003/11/21 04:58:54 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 #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 # ifndef HasLibPthread # define HasLibPthread NO # endif # define HasPosixThreads YES # define ThreadedX YES # define SystemMTDefines -D_REENTRANT -D_THREAD_SAFE /* * FreeBSD has tread-safe api but no getpwnam_r yet. */ # define HasThreadSafeAPI YES # define MTSafeAPIDefines -DXUSE_MTSAFE_API -DXNO_MTSAFE_PWDAPI # if HasLibPthread # define ThreadsLibraries -lpthread # else # if OSRelVersion >= 500043 # define BuildThreadStubLibrary NO # define NeedUIThrStubs NO # else # define BuildThreadStubLibrary YES # define NeedUIThrStubs YES # endif # if (OSRelVersion >= 500016) # define ThreadsLibraries -lc_r # else # define ThreadsLibraries -pthread # endif # define SharedX11Reqs $(LDPRELIB) $(XTHRSTUBLIB) # define SharedXtReqs $(LDPRELIB) $(XONLYLIB) $(SMLIB) $(ICELIB) $(XTHRSTUBLIB) # endif #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 /* * Add an LD_LIBRARY_PATH environment variable, defined by $(CLIENTENVSETUP), * when building X to avoid that for each client ld give the message * * ld: warning: libXThrStub.so.6, needed by libX11.so, not found */ #if BuildThreadStubLibrary && (!defined(UseInstalledX11) || !UseInstalledX11) # define CcCmd $(CLIENTENVSETUP) cc # define CplusplusCmd $(CLIENTENVSETUP) c++ #else # define CcCmd cc # 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. */ #if OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion >= 2) #ifndef ExtraLoadFlags #if UseElfFormat #define ExtraLoadFlags -Wl,-rpath,$(USRLIBDIRPATH) -Wl,-rpath-link,$(BUILDLIBDIR) #else #define ExtraLoadFlags -Wl,-R,$(USRLIBDIRPATH) #endif #endif #endif #ifndef SharedLibraryLoadFlags #if UseElfFormat #define SharedLibraryLoadFlags -shared -rpath $(USRLIBDIRPATH) #else #define SharedLibraryLoadFlags -Bshareable -R $(USRLIBDIRPATH) #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 #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 #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 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 #include