home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 February / PCWorld_2000-02_cd.bin / live / usr / X11R6 / lib / X11 / config / FreeBSD.cf < prev    next >
Text File  |  1999-09-03  |  13KB  |  463 lines

  1. XCOMM platform:  $TOG: FreeBSD.cf /main/18 1997/06/12 07:40:35 kaleb $
  2. XCOMM platform:  $XFree86: xc/config/cf/FreeBSD.cf,v 3.58.2.20 1999/01/09 14:18:56 dawes Exp $
  3.  
  4. #ifndef UseElfFormat
  5. #define UseElfFormat        DefaultToElfFormat
  6. #endif
  7.  
  8. #if UseElfFormat
  9. #define OSBinaryFormat        [ELF]
  10. #else
  11. #define OSBinaryFormat        /**/
  12. #endif
  13.  
  14. #ifndef OSName
  15. #define OSName            DefaultOSName OSBinaryFormat
  16. #endif
  17. #ifndef OSVendor
  18. #define OSVendor        /**/
  19. #endif
  20. #ifndef OSMajorVersion
  21. #define OSMajorVersion        DefaultOSMajorVersion
  22. #endif
  23. #ifndef OSMinorVersion
  24. #define OSMinorVersion        DefaultOSMinorVersion
  25. #endif
  26. #ifndef OSTeenyVersion
  27. #define OSTeenyVersion        DefaultOSTeenyVersion
  28. #endif
  29. XCOMM operating system:  OSName (OSMajorVersion./**/OSMinorVersion./**/OSTeenyVersion)
  30.  
  31. #define HasGcc            YES
  32. #define HasGcc2            YES
  33. #define HasCplusplus        YES
  34. #define HasGcc2ForCplusplus    YES
  35. #define GccUsesGas        YES
  36. #define UseGas            YES
  37. #define GnuCpp            YES
  38. #define HasNdbm            YES
  39. #define HasPutenv        YES
  40. #define HasSnprintf        YES
  41. #define HasBSD44Sockets     YES
  42. #ifndef HasLibCrypt
  43. # define HasLibCrypt        YES
  44. #endif
  45. #ifndef HasShm
  46. # define HasShm            YES
  47. #endif
  48. #define HasWChar32        YES
  49.  
  50. #define AvoidNullMakeCommand    YES
  51. #define StripInstalledPrograms    YES
  52. #define CompressAllFonts    YES
  53. #define Malloc0ReturnsNull    YES
  54. #define NeedConstPrototypes    YES
  55. #define NeedFunctionPrototypes    YES
  56. #define NeedNestedPrototypes    YES
  57. #define NeedVarargsPrototypes    YES
  58. #define NeedWidePrototypes    NO
  59.  
  60. #define MkdirHierCmd        mkdir -p
  61.  
  62. #define CcCmd            cc
  63. #define CppCmd            /usr/libexec/cpp
  64. #define PreProcessCmd        CppCmd
  65. #define StandardCppDefines    -traditional
  66. #if defined(UseInstalled) && (!defined(XF86LinkKit) || !XF86LinkKit)
  67. #define DefaultCCOptions    /**/
  68. #else
  69. #define DefaultCCOptions    -ansi -pedantic -Dasm=__asm
  70. #endif
  71. #ifndef ExtraLibraries
  72. /* support for multi-byte locales is in libxpg4 rather than libc */
  73. #if OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion >= 2)
  74. #define ExtraLibraries        -lxpg4
  75. #else
  76. #define ExtraLibraries        /**/
  77. #endif
  78. #endif
  79. #ifndef UseGnuMalloc
  80. /* 2.2 doesn't really have GnuMalloc */
  81. #if OSMajorVersion < 2 || (OSMajorVersion == 2 && OSMinorVersion < 2)
  82. #define UseGnuMalloc        YES
  83. #else
  84. #define UseGnuMalloc        NO
  85. #endif
  86. #endif
  87.  
  88. /* 2.2.2 and later has setusercontext() */
  89. #if OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion > 2) || \
  90.      (OSMajorVersion == 2 && OSMinorVersion == 2 && OSTeenyVersion >= 2)
  91. #define HasSetUserContext    YES
  92. #endif
  93.  
  94. /* 
  95.  * This doesn't work the way it does on every other system. On FreeBSD it's
  96.  * only a "hint, not a demand", whatever that means. Note that this is not 
  97.  * what it says in the ld and ld.so man pages, which are rather vague on the
  98.  * matter.
  99.  *
  100.  * But we do know that if a) you do what the X Project team does and set your 
  101.  * ProjectRoot to something like "/X11", and b) you have other X libraries, 
  102.  * e.g. in /usr/X11R6/lib, and you have added /usr/X11R6/lib to your 
  103.  * ld.so.cache with ldconfig, then any programs linked with this "hint" will
  104.  * find that ld.so ignores the "hint" at runtime and loads the libraries in 
  105.  * the ld.so.cache, i.e.the wrong ones, instead! Empirically we find that
  106.  * the run-path is only used as a last resort to find the libraries, after
  107.  * the LD_LIBRARY_PATH and ld.so.cache.
  108.  *
  109.  * N. B. to FreeBSD users who are not familiar with the semantics of the run-
  110.  * path on other systems. The run-path is akin to a per-program ld.so.cache. 
  111.  * If a program is linked with a run-path, that run-path should take 
  112.  * precedence over _everything_ else! In my opinion ldconfig and the 
  113.  * ld.so.cache should be deprecated immediately now that FreeBSD has run-
  114.  * paths. Any program that needs libraries that are outside the "well known" 
  115.  * locations should be linked with a run-path.
  116.  *
  117.  * All of which begs the question: If this option doesn't work in any useful
  118.  * way, why did they (FreeBSD) bother to add it? It would be nice if FreeBSD
  119.  * would fix ld.so so that run-paths are truly useful.
  120.  *
  121.  * Using run-paths is added with the intent that vendors who ship X for 
  122.  * FreeBSD should use it too. Once everyone uses it then there will be no 
  123.  * reason for FreeBSD to assume that it knows where X libraries are installed 
  124.  * and they can remove it from the list of directories they add to ld.so.cache 
  125.  * in their /etc/rc file.
  126.  */
  127. #if OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion >= 2)
  128. #ifndef ExtraLoadFlags
  129. #if UseElfFormat
  130. #define ExtraLoadFlags        -Wl,-rpath,$(USRLIBDIRPATH)
  131. #else
  132. #define ExtraLoadFlags        -Wl,-R,$(USRLIBDIRPATH)
  133. #endif
  134. #endif
  135. #endif
  136.  
  137. #ifndef SharedLibraryLoadFlags
  138. #if UseElfFormat
  139. #define SharedLibraryLoadFlags    -shared -rpath $(USRLIBDIRPATH)
  140. #else
  141. #define SharedLibraryLoadFlags    -Bshareable -R $(USRLIBDIRPATH)
  142. #endif
  143. #endif
  144.  
  145. #ifndef GnuMallocLibrary
  146. #define GnuMallocLibrary    -lgnumalloc
  147. #endif
  148.  
  149. #if (OSMajorVersion > 2) || (OSMajorVersion == 2 && OSMinorVersion >= 2) \
  150.     || (OSMajorVersion == 2 && OSMinorVersion == 1 && OSTeenyVersion >= 6)
  151. /* 2.1.6 and 2.2 have libz */
  152. #ifndef HasZlib
  153. #define HasZlib        YES
  154. #endif
  155. #endif
  156.  
  157. /*
  158.  * For FreeBSD 2.2.5 and later don't make any assumptions about the version
  159.  * of Tcl in the base OS.
  160.  *
  161.  * Note the static libs in some versions of the FreeBSD packages are
  162.  * broken.  The symptom of this is unresolved symbols when linking
  163.  * XF86Setup.  If you run into this problem, either build your own
  164.  * static libs from the standard Tcl and Tk source, or change the
  165.  * definitions of XF86SetupUsesStatic{Tcl,Tk}.  The latter is not
  166.  * recommended for binaries that are going to be redistributed.
  167.  */
  168.  
  169. #if OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion > 2) || \
  170.     (OSMajorVersion == 2 && OSMinorVersion == 2 && OSTeenyVersion > 5)
  171. /*
  172.  * For 2.2.6, 3.0 and later the defaults assume that the tcl-8.0 and tk-8.0
  173.  * packages have been installed.  XF86Setup is much faster with 8.x than
  174.  * with earlier versions.
  175.  *
  176.  */
  177.  
  178. #ifndef TkLibName
  179. #define TkLibName        tk80
  180. #endif
  181. #ifndef TkIncDir
  182. #define TkIncDir        /usr/local/include/tk8.0
  183. #endif
  184. #ifndef TclLibName
  185. #define TclLibName        tcl80
  186. #endif
  187. #ifndef TclIncDir
  188. #define TclIncDir        /usr/local/include/tcl8.0
  189. #endif
  190.  
  191. #ifndef JpTkLibName
  192. #define JpTkLibName        tk80jp
  193. #endif
  194. #ifndef JpTkIncDir
  195. #define JpTkIncDir        /usr/local/include/tk8.0jp
  196. #endif
  197. #ifndef JpTclLibName
  198. #define JpTclLibName        tcl80jp
  199. #endif
  200. #ifndef JpTclIncDir
  201. #define JpTclIncDir        /usr/local/include/tcl8.0jp
  202. #endif
  203.  
  204. #elif OSMajorVersion == 2 && OSMinorVersion == 2 && OSTeenyVersion > 2
  205. /*
  206.  * For 2.2.5, the defaults assume that the tcl-7.6 and tk-4.2
  207.  * packages have been installed.
  208.  */
  209.  
  210. #ifndef TkLibName
  211. #define TkLibName        tk42
  212. #endif
  213. #ifndef TkIncDir
  214. #define TkIncDir        /usr/local/include/tk4.2
  215. #endif
  216. #ifndef TclLibName
  217. #define TclLibName        tcl76
  218. #endif
  219. #ifndef TclIncDir
  220. #define TclIncDir        /usr/local/include/tcl7.6
  221. #endif
  222.  
  223. #ifndef JpTkLibName
  224. #define JpTkLibName        tk42jp
  225. #endif
  226. #ifndef JpTkIncDir
  227. #define JpTkIncDir        /usr/local/include/tk4.2jp
  228. #endif
  229. #ifndef JpTclLibName
  230. #define JpTclLibName        tcl76jp
  231. #endif
  232. #ifndef JpTclIncDir
  233. #define JpTclIncDir        /usr/local/include/tcl7.6jp
  234. #endif
  235.  
  236. #elif OSMajorVersion == 2 && OSMinorVersion == 2
  237. /*
  238.  * FreeBSD 2.2 prior to 2.2.5
  239.  *
  240.  * tcl is part of the base OS.
  241.  *
  242.  * Note: the tk-4.1 package for FreeBSD doesn't have the static lib, so
  243.  * you'll have to build it yourself, or change the definition of
  244.  * XF86SetupUsesStaticTk.
  245.  */
  246. #ifndef TkLibName
  247. #define TkLibName        tk41
  248. #endif
  249. #ifndef TclLibName
  250. #define TclLibName        tcl
  251. #endif
  252. #ifndef TclLibDir
  253. #define TclLibDir        /usr/lib
  254. #endif
  255. #ifndef TclIncDir
  256. #define TclIncDir        /usr/include
  257. #endif
  258. /* FreeBSD 2.2 has libtcl in the base system */
  259. #ifndef XF86SetupUsesStaticTcl
  260. #define XF86SetupUsesStaticTcl    NO
  261. #endif
  262.  
  263. #else /* ! 2.2 or later */
  264.  
  265. #if OSMajorVersion == 2 && OSMinorVersion == 1 && OSTeenyVersion >= 6
  266.  
  267. /*
  268.  * 2.1.x with x >=6 has tk 4.1 and tcl 7.5 in the packages collection.
  269.  * Neither packages include the static libs, so you either need to build
  270.  * them yourself or set XF86SetupUsesStaticTcl and XF86SetupUsesStaticTk
  271.  * to NO.  This isn't the default because we don't want the XFree86
  272.  * binaries to have these packages as a dependency.
  273.  */
  274.  
  275. #ifndef TkLibName
  276. #define TkLibName        tk41
  277. #endif
  278. #ifndef TclLibName
  279. #define TclLibName        tcl75
  280. #endif
  281.  
  282. #else /* ! 2.1.6 or later */
  283.  
  284. #ifndef TkLibName
  285. #define TkLibName        tk40
  286. #endif
  287. #ifndef TclLibName
  288. #define TclLibName        tcl74
  289. #endif
  290.  
  291. #endif
  292. #endif
  293.  
  294. #undef  InstallCmd
  295. #define InstallCmd        /usr/bin/install
  296.  
  297. #if UseElfFormat
  298. # define AsmElfDefines        -D__ELF__
  299. #else
  300. # define AsmElfDefines /**/
  301. #endif
  302.  
  303. #if GccUsesGas
  304. # define GccGasOption        -DGCCUSESGAS
  305. # define AsmDefines        -DUSE_GAS AsmElfDefines
  306. #else
  307. # define GccGasOption /**/
  308. # define AsmDefines        AsmElfDefines
  309. #endif
  310.  
  311. #define ServerExtraDefines GccGasOption XFree86ServerDefines
  312.  
  313. #define StandardDefines    -DCSRG_BASED
  314.  
  315. #if OSMajorVersion > 1
  316. #define ServerOSDefines        XFree86ServerOSDefines -DDDXTIME
  317. #define XawI18nDefines        -DUSE_XWCHAR_STRING
  318. #define HasMakefileSafeInclude    YES
  319. #define IncludeMakefile(file) @@# dependencies are in .depend
  320. #define DependFileName        .depend
  321. #ifndef BuildDynamicLoading
  322. #define BuildDynamicLoading    YES
  323. #endif
  324. #ifndef ForceNormalLib
  325. #define ForceNormalLib        YES
  326. #endif
  327. #define HasMkstemp        YES
  328. #else
  329. #define ServerOSDefines        XFree86ServerOSDefines -DDDXTIME -DXNO_SYSCONF
  330. #define XawI18nDefines        -DUSE_XWCHAR_STRING -DUSE_XMBTOWC
  331. #endif
  332.  
  333. /* The GCC strength-reduce bug is fixed for FreeBSD 2.1.5 and later */
  334. #ifndef DefaultGcc2i386Opt
  335. #if OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion > 1) || (OSMajorVersion == 2 && OSMinorVersion == 1 && OSTeenyVersion >= 5)
  336. #define DefaultGcc2i386Opt -O2
  337. #endif
  338. #endif
  339.  
  340. #ifdef i386Architecture
  341. # define OptimizedCDebugFlags DefaultGcc2i386Opt
  342. #else
  343. # define OptimizedCDebugFlags -O2
  344. #endif
  345.  
  346. #ifndef PreIncDir
  347. # define PreIncDir    /usr/include
  348. #endif
  349.  
  350. #define TroffCmd    groff -Tps
  351. #define NroffCmd    groff -Tascii
  352. #define SetTtyGroup    YES
  353.  
  354. #ifndef ExtraFilesToClean
  355. # define ExtraFilesToClean *.core
  356. #endif
  357.  
  358. #define DefaultUserPath        /bin:/usr/bin:/sbin:/usr/sbin:$(BINDIR):/usr/gnu/bin:/usr/local/bin
  359. #define DefaultSystemPath    /bin:/usr/bin:/sbin:/usr/sbin:$(BINDIR)
  360. #ifndef SystemManDirectory
  361. #define SystemManDirectory    /usr/share/man
  362. #endif
  363.  
  364. #define InstKmemFlags    -g kmem -m 2755
  365.  
  366. /*
  367.  * Compress manual pages
  368.  */
  369. #ifndef CompressManPages
  370. # define CompressManPages    YES
  371. #endif
  372.  
  373. #if CompressManPages
  374.  
  375. #ifndef CompressManCmd
  376. # define CompressManCmd        gzip -n
  377. #endif
  378.    COMPRESSMANCMD = CompressManCmd
  379.  
  380. #ifndef InstallManPageLong
  381. #define InstallManPageLong(file,destdir,dest)                @@\
  382. install.man:: file.man                            @@\
  383.     MakeDir($(DESTDIR)destdir)                    @@\
  384.     $(RM) $(DESTDIR)destdir/dest.$(MANSUFFIX)*            @@\
  385.     $(INSTALL) -c $(INSTMANFLAGS) file.man \            @@\
  386.       $(DESTDIR)destdir/dest.$(MANSUFFIX)                @@\
  387.     -$(COMPRESSMANCMD) $(DESTDIR)destdir/dest.$(MANSUFFIX)
  388. #endif
  389.  
  390. #ifndef InstallGenManPageLong
  391. #define InstallGenManPageLong(file,destdir,dest,suffix)            @@\
  392. install.man:: file.man                            @@\
  393.     MakeDir($(DESTDIR)destdir)                    @@\
  394.     $(RM) $(DESTDIR)destdir/dest.suffix*                @@\
  395.     $(INSTALL) -c $(INSTMANFLAGS) file.man \            @@\
  396.       $(DESTDIR)destdir/dest.suffix                    @@\
  397.     -$(COMPRESSMANCMD) $(DESTDIR)destdir/dest.suffix
  398. #endif
  399.  
  400. #ifndef InstallMultipleMan
  401. #define InstallMultipleMan(list,dest)                    @@\
  402. install.man:: list                            @@\
  403.     MakeDir($(DESTDIR)dest)                        @@\
  404.     @case '${MFLAGS}' in *[i]*) set +e;; esac; \            @@\
  405.     for i in list; do \                        @@\
  406.         (set -x; \                        @@\
  407.         MNAME=`echo $$i | cut -f1 -d.`; \            @@\
  408.         $(RM) $(DESTDIR)dest/$${MNAME}*; \            @@\
  409.         $(INSTALL) -c $(INSTMANFLAGS) $$i \            @@\
  410.           $(DESTDIR)dest/$${MNAME}.$(MANSUFFIX); \        @@\
  411.         $(COMPRESSMANCMD) $(DESTDIR)dest/$${MNAME}.$(MANSUFFIX)); \ @@\
  412.     done
  413. #endif
  414.  
  415. /*
  416.  * InstallManPageAliases - install soft links for aliases.
  417.  */
  418. #ifndef InstallManPageAliases
  419. #define InstallManPageAliases(file,destdir,aliases)            @@\
  420. install.man::                                @@\
  421.     @(SUFFIX=`echo $(DESTDIR)destdir/file.* | sed -e 's,.*/[^\.]*.,,'`; \ @@\
  422.     for i in aliases; do (set -x; \                    @@\
  423.     $(RM) $(DESTDIR)destdir/$$i.*; \                @@\
  424.     (cd $(DESTDIR)destdir; $(LN) file.$${SUFFIX} \            @@\
  425.     $$i.$${SUFFIX})); \                        @@\
  426.     done)
  427. #endif
  428.  
  429. /*
  430.  * InstallGenManPageAliases - install soft links for aliases.
  431.  */
  432. #ifndef InstallGenManPageAliases
  433. #define InstallGenManPageAliases(file,destdir,suffix,aliases)        @@\
  434.     InstallManPageAliases(file,destdir,aliases)
  435. #endif
  436. #endif
  437.  
  438. #if OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion >= 1)
  439. #define HasBsdMake    YES
  440. #endif
  441.  
  442. #ifndef StaticLibrary
  443. #define StaticLibrary(libpath,libname) -Wl,-Bstatic Concat(-L,libpath) Concat(-l,libname) -Wl,-Bdynamic
  444. #endif
  445.  
  446. #if UseElfFormat
  447. #define DlLibrary        -rdynamic
  448. #else
  449. #define DlLibrary        /**/
  450. #endif
  451.  
  452. #if BuildDynamicLoading
  453. #define ServerExtraSysLibs    DlLibrary
  454. #else
  455. #define ServerExtraSysLibs    /**/
  456. #endif
  457.  
  458. #include <bsdLib.rules>
  459.  
  460. #ifdef i386Architecture
  461. #include <xfree86.cf>
  462. #endif
  463.