XCOMM $XdotOrg: xc/config/cf/sun.cf,v 1.9 2004/08/19 16:28:42 kem Exp $
XCOMM platform:  $Xorg: sun.cf,v 1.4 2000/08/17 19:41:48 cpqbld Exp $




XCOMM platform:  $XFree86: xc/config/cf/sun.cf,v 3.70 2004/01/13 02:42:51 tsi Exp $

#ifndef OSName
# define OSName		DefaultOSName
#endif
#ifndef OSMajorVersion
# define OSMajorVersion	DefaultOSMajorVersion
#endif
#ifndef OSMinorVersion
# define OSMinorVersion	DefaultOSMinorVersion
#endif
#ifndef OSTeenyVersion
# define OSTeenyVersion	DefaultOSTeenyVersion
#endif
XCOMM operating system:  OSName (OSMajorVersion./**/OSMinorVersion./**/OSTeenyVersion)

/* For various reasons, Sun uses different settings when compiling the
 * X Window System packages included in Solaris than are normally used
 * by most people building the X.Org software releases.   Sun also has
 * two different X server hierarchies in Solaris - Xsun in /usr/openwin
 * and Xorg in /usr/X11.
 *
 * If you want to try to match Sun's settings as closely as possible
 * add this setting to your host.def:
 *  #define BuildLikeSun YES
 *
 * If you're trying to match the openwin directory layout as well, you'll
 * need to also add:
 *  #define ProjectRoot /usr/openwin
 * otherwise it will use /usr/X11.  (Note that these settings match closer
 * to Sun's Xorg delivery in /usr/X11 than the older X11R6.6-based delivery
 * in /usr/openwin though.)
 */
#ifndef BuildLikeSun
# define BuildLikeSun NO
#endif

#if BuildLikeSun
# ifndef ProjectRoot
#  define ProjectRoot		/usr/X11
# endif
# ifndef DocDir
#  define DocDir		Concat(ProjectRoot,/share/doc)
# endif
# ifndef ManDirectoryRoot
#  define ManDirectoryRoot	Concat(ProjectRoot,/share/man)
# endif
# ifndef ManSuffix
#  define ManSuffix		1
# endif
# ifndef LibraryCCOptions
#  if DoSharedLib && defined(SharedLibraryCCOptions)
#   define LibraryCCOptions SharedLibraryCCOptions ArchLibraryCCOptions
#  else
#   define LibraryCCOptions DefaultCCOptions ArchLibraryCCOptions
#  endif
# endif
#endif

/* Flag passed to makestrs in Xt build to control string array names in the
 * libXt headers.   -solarisabinames matches those used in the libXt in
 * Solaris, but not in other OS'es.
 */
#ifndef SolarisABIFlag
# if BuildLikeSun
#  define SolarisABIFlag -solarisabinames
# else
#  define SolarisABIFlag /**/
# endif
#endif

/*
 * Compiler setup.  This sun.cf file knows what options to use with
 * certain compilers, including Sun C, CenterLine C, and gcc.  It
 * also understands how to set some of the options for various C++
 * compilers, including Sun C++ and CenterLine C++.
 *
 * === C Compiler Setup ==========================================
 *
 * For SunPro C, define HasSunC to YES in site.def.
 * For CenterLine C, define HasCenterLineC to YES in site.def
 * For gcc, gcc2 or gcc3, define HasGcc, HasGcc2 or HasGcc3 to YES in site.def
 * For other compilers, define HasSunC to NO in site.def, then
 *    provide appropriate values for the various compiler related
 *    configuration varibles used here.
 *
 * If you don't tell us which C compiler you have, we assume you have
 * the SunPro C compiler under Solaris 2.x, and the bundled /bin/cc
 * under SunOS 4.1.x
 *
 * === C++ Compiler Setup ==========================================
 *
 * For SunPro C++, define HasSunCplusplus to YES in site.def
 * For CenterLine C++, define HasCenterLineCplusplus to YES in site.def
 * For Gnu g++ 2.6.x, define HasGcc2ForCplusplus to YES in site.def
 * For other compilers, define HasCplusplus to YES in site.def, and
 *    check to see if you need to provide values for CplusplusOptions
 *    and/or DefaultCplusplusOptions.
 *
 * In any case, you may also need to set CplusplusDependIncludes.
 *
 * If you say you have the SunPro C++ compiler, we assume you have
 * version 3.0.x of the compiler.  If you have version 4.0.x instead,
 * define CplusplusCompilerMajorVersion as 4 in site.def.
 *
 */

#ifndef HasGcc3
#define HasGcc3 NO
#endif
#ifndef HasGcc2
#define HasGcc2 HasGcc3
#endif
#ifndef HasGcc
#define HasGcc HasGcc2
#endif

#ifndef HasSunC
# if HasCenterLineC || HasGcc || HasGcc2 || HasGcc3 || (OSMajorVersion < 5)
#  define HasSunC NO
# else
#  define HasSunC YES
# endif
#endif

#if HasSunC
# ifndef CCompilerMajorVersion
#  define CCompilerMajorVersion DefaultSunProCCompilerMajorVersion
# endif
# ifndef CCompilerMinorVersion
#  define CCompilerMinorVersion DefaultSunProCCompilerMinorVersion
# endif
XCOMM SunPro C CCompilerMajorVersion./**/CCompilerMinorVersion

/* Choose some reasonable default optimizer flags based on compiler &
   OS versions */
# ifndef OptimizedCDebugFlags
#  if (CCompilerMajorVersion > 5) || \
	(CCompilerMajorVersion == 5 && CCompilerMinorVersion > 2)
#   define OptimizedCDebugFlags -xO4 -xbuiltin=%all -xlibmil -xstrconst ArchOptimizedFlags
#  else
#   define OptimizedCDebugFlags -xO4 -xstrconst ArchOptimizedFlags
#  endif
# endif
# ifndef ArchOptimizedFlags
#  if OSMajorVersion == 5
#   if defined(SparcArchitecture) && !defined(Sparc64Architecture)
#    if OSMinorVersion > 9 /* Solaris 10 and later only run on UltraSPARC's */
#     define ArchOptimizedFlags -xarch=v8plus
#    else
#     define ArchOptimizedFlags -xarch=v8
#    endif
#   elif defined(i386Architecture) || defined(AMD64Architecture)
#    if (CCompilerMajorVersion > 5) || \
	(CCompilerMajorVersion == 5 && CCompilerMinorVersion >= 7)
/* -xregs=no%frameptr is required on x86 when compiling at -xO4 or higher to
 * avoid losing stack frame pointers so you can't get stack traces or debug.
 * This may lose a small bit of performance, so you can override by adding
 * #define FramePtrFlags -xregs=frameptr if you care about performance more
 * than debuggability.
 */
#     ifndef FramePtrFlags
#      define FramePtrFlags -xregs=no%frameptr
#     endif
#    endif
#    ifndef FramePtrFlags
#     define FramePtrFlags /* */
#    endif
#    if defined(i386Architecture) && (OSMinorVersion > 8)
       /* Solaris 9 and later require Pentium or better */
#      define ArchOptimizedFlags -xpentium FramePtrFlags
#    else
#     define ArchOptimizedFlags FramePtrFlags
#    endif
#   endif
#  endif
#  ifndef ArchOptimizedFlags
#   define ArchOptimizedFlags /**/
#  endif
# endif
# ifndef DefaultCDebugFlags
#  define DefaultCDebugFlags OptimizedCDebugFlags
# endif
# ifndef SharedLibraryLdCmd
#  define SharedLibraryLdCmd $(CC)
# endif
/* Flags for lint version included with Sun C compilers */
# if OSMajorVersion >= 5
#  ifndef LintLibFlag
#   define LintLibFlag -y -o
#  endif
#  ifndef LintOpts
#   define LintOpts -b -h -u -erroff=E_INDISTING_FROM_TRUNC2 $(LINTSECFLAG) ExtraLibraries MathLibrary -lc
#  endif
#  ifndef LintSecFlag
#   if (CCompilerMajorVersion > 5) || \
       (CCompilerMajorVersion == 5 && CCompilerMinorVersion >= 6)
#    define LintSecFlag -errsecurity=standard
#   else
#    define LintSecFlag /**/
#   endif
#  endif
      LINTSECFLAG = LintSecFlag
#  ifndef LintLibReferences
#   define LintLibReferences(varname,libname,libsource)                    @@\
       Concat(LINT,varname) = _UseCat(-L $(LINTLIBDIR) -l, -L libsource -l,libname)
#  endif

# endif /* Lint Flags for Solaris */

#endif /* HasSunC */

#ifndef ArchLibraryCCOptions
# if HasSunC && defined(SparcArchitecture) && CCompilerMajorVersion > 3
#  define ArchLibraryCCOptions -xregs=no%appl
# else
#  define ArchLibraryCCOptions
# endif
#endif /* ArchLibraryCCOptions */

/* we used to have this here :
 *
 * #if HasSunC
 * # ifndef CCompilerMajorVersion
 * #  define CCompilerMajorVersion 3
 * #  define DefaultCDebugFlags	-xO3
 * #  define OptimizedCDebugFlags	-xO3
 * # endif
 * #endif
 */

#ifndef HasSunCplusplus
# define HasSunCplusplus HasSunC	/* ??? */
#endif
#if HasSunCplusplus
# ifndef HasCplusplus
#  define HasCplusplus YES
#  define OptimizedCplusplusDebugFlags	-xO4 -xbuiltin=%all -xlibmil
# endif
# ifndef CplusplusCompilerMajorVersion
#  ifdef DefaultSunProCplusplusCompilerMajorVersion
#   define CplusplusCompilerMajorVersion DefaultSunProCplusplusCompilerMajorVersion
#  else
#   define CplusplusCompilerMajorVersion 3
#  endif
# endif
# ifndef CplusplusCompilerMinorVersion
#  ifdef DefaultSunProCplusplusCompilerMinorVersion
#   define CplusplusCompilerMinorVersion DefaultSunProCplusplusCompilerMinorVersion
#  else
#   define CplusplusCompilerMinorVersion 0
#  endif
# endif
# ifndef CplusplusLibC
#  if CplusplusCompilerMajorVersion >= 5
#   define CplusplusLibC -norunpath -lCrun
#  endif
# endif
XCOMM SunPro C++ CplusplusCompilerMajorVersion./**/CplusplusCompilerMinorVersion
#endif

/* we used to have this here :
 *
 * # ifndef CplusplusCompilerMajorVersion
 * #  define CplusplusCompilerMajorVersion	4
 * # endif
 */

#if HasCenterLineC
# ifndef CcCmd
#  define CcCmd clcc
# endif
#endif

#if HasCenterLineCplusplus
# ifndef HasCplusplus
#  define HasCplusplus YES
# endif
# ifndef DefaultCplusplusOptions
#  define DefaultCplusplusOptions -Xa
# endif
# ifndef CplusplusOptions
#  define CplusplusOptions -Xa
# endif
#endif

#if OSMajorVersion < 4 || (OSMajorVersion == 4 && OSMinorVersion < 1)
/* We do not guarantee this will work */
# define BootstrapCFlags	-DNOSTDHDRS
# define StandardDefines	-DNOSTDHDRS
# define XawI18nDefines		-DUSE_XWCHAR_STRING -DUSE_XMBTOWC
#endif

#if OSMajorVersion == 4
# if OSMinorVersion == 1
#  define HasPoll		YES
# endif
# if OSMinorVersion > 1 || (OSMinorVersion == 1 && OSTeenyVersion > 1)
/* You ALSO need this if you have Sun ld patch 100170-06 or later to 4.1.1 */
#  define SunPost411FCSLd	YES
# endif
#endif

/* The Xsun server was not building for SunOS 5.7 due to
   includes of <sys/cg2reg.h>.
*/
#if OSMajorVersion < 5
# define IncludeCG2HeaderDefine	-DINCLUDE_CG2_HEADER
#else
# define IncludeCG2HeaderDefine /**/
#endif

#if defined(i386Architecture) || defined(AMD64Architecture)
# if (OSMajorVersion > 5) || ((OSMajorVersion == 5) && (OSMinorVersion >= 8))
#  define OSServerExtraDefines	-D__SOL8__
# endif
#endif

#if !HasGcc
# if HasSunC
#  if defined(AMD64Architecture)
#   define AsmArch amd64
#   define AsmFlags -xarch=amd64
#  elif defined(i386Architecture)
#   define AsmArch ia32
#   define AsmFlags /**/
#  elif defined(Sparc64Architecture)
#   define AsmArch sparcv8plus
#   define AsmFlags -xarch=v9
#  elif defined(SparcArchitecture)
#   define AsmArch sparcv8plus
#   define AsmFlags -xarch=v8plus
#  endif
#  ifndef CompilerServerExtraDefines
#   define CompilerServerExtraDefines $(SERVERSRC)/hw/xfree86/os-support/sunos/AsmArch.il
#  endif
# endif
#endif

#ifndef CompilerServerExtraDefines
# define CompilerServerExtraDefines /**/
#endif

#ifndef OSServerExtraDefines
# define OSServerExtraDefines	/**/
#endif

#ifndef ArchServerExtraDefines
# if defined(Sparc64Architecture) || defined(AMD64Architecture)
#  define ArchServerExtraDefines -D_XSERVER64
# else
#  define ArchServerExtraDefines /**/
# endif
#endif

#define ServerOSDefines		XFree86ServerOSDefines IncludeCG2HeaderDefine
#define ServerExtraDefines	AllocateLocalDefines XFree86ServerDefines \
				CompilerServerExtraDefines \
				OSServerExtraDefines ArchServerExtraDefines

#ifndef HasPerl
/* Solaris 8 comes with perl.  Earlier versions don't. */
# if (OSMajorVersion == 5) && (OSMinorVersion >= 8)
#  define HasPerl		YES
# else
#  define HasPerl		NO
# endif
#endif

#ifndef XkbServerDefines
# if BuildLikeSun
#  define XkbServerDefines  -DXKB_ALWAYS_USES_SOFT_REPEAT \
	-DXKM_OUTPUT_DIR='"/var/run/xkb/"' -DXKM_OUTPUT_DIR_MODE=0775 \
	-DMAKE_XKM_OUTPUT_DIR
# else
#  define XkbServerDefines  -DXKB_ALWAYS_USES_SOFT_REPEAT
# endif
#endif

#if OSMajorVersion > 4
# define ConnectionFlags		-DTCPCONN -DUNIXCONN -DLOCALCONN
# if HasSunC
#  ifdef DefaultSunProCCompilerDir
#   ifndef  CcCmd
#    define CcCmd		DefaultSunProCCompilerDir/cc
#   endif
#  endif
#  ifdef DefaultSunProCplusplusCompilerDir
#   ifndef  CplusplusCmd
#    define CplusplusCmd	DefaultSunProCplusplusCompilerDir/CC
#   endif
#   ifndef  CplusplusFilt
#    define CplusplusFilt	DefaultSunProCplusplusCompilerDir/c++filt
#   endif
#   ifndef  CplusplusWhatdir
#    define CplusplusWhatdir	DefaultSunProCplusplusCompilerDir/whatdir
#   endif
#  else /* DefaultSunProCplusplusCompilerDir not defined */
#   ifndef  CplusplusWhatdir
#    define CplusplusWhatdir	whatdir
#   endif
#  endif /* DefaultSunProCplusplusCompilerDir */
#  ifndef  CplusplusDependIncludes
#   if CplusplusCompilerMajorVersion > 3
#    define CplusplusDependIncludes	-I`CplusplusWhatdir CC`/../include/CC
#   elif CplusplusCompilerMajorVersion > 2
#    define CplusplusDependIncludes	-I/opt/SUNWspro/SC3.0/include/CC
#   else
#    define CplusplusDependIncludes	-I/opt/SUNWspro/SC2.0.1/include/CC
#   endif
#  endif
# endif /* HasSunC */

# if HasSunC && (CCompilerMajorVersion < 3)
#  define BootstrapCFlags	-DSVR4
# else
#  define BootstrapCFlags	/* none needed */
# endif
# ifndef XawI18nDefines
#  if OSMinorVersion < 4
#   define XawI18nDefines    -DHAS_WCTYPE_H -DHAS_ISW_FUNCS
#  else
#   define XawI18nDefines    -DHAS_WCHAR_H -DHAS_ISW_FUNCS
#  endif
# endif
# if OSMinorVersion > 10
#  define InstallCmd	    /usr/gnu/bin/install
# elif OSMinorVersion > 3
#  define InstallCmd	    /usr/ucb/install
# endif
#ifndef LargefileDefines
# if (OSMajorVersion > 5) || (OSMajorVersion == 5 && OSMinorVersion >= 6)
#  define LargefileDefines -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
# else
#  define LargefileDefines /* */
# endif
#endif
# ifdef AMD64Architecture
#  define StandardDefines	-Dsun -DSVR4 -D__EXTENSIONS__ -D__amd64
#  define ToolkitStringsABIOptions	-intelabi SolarisABIFlag
# elif defined(i386Architecture)
#  if (OSMajorVersion < 4) || ((OSMajorVersion == 5) && (OSMinorVersion <= 5))
#   define StandardDefines	-Dsun -Di386 -DSVR4 -D__EXTENSIONS__ -D__i386 \
				-D__SOL64__ LargefileDefines
#  else
#   define StandardDefines	-Dsun -Di386 -DSVR4 -D__EXTENSIONS__ -D__i386 \
                                LargefileDefines
#  endif
#  define ToolkitStringsABIOptions	-intelabi SolarisABIFlag
# else
#  define StandardDefines	  -Dsun -Dsparc -DSVR4 -D__EXTENSIONS__ LargefileDefines
#  define ToolkitStringsABIOptions	-sparcabi SolarisABIFlag
# endif
/* Socket support was in separate libraries before 5.12, then merged to libc */
# if (OSMajorVersion == 5) && (OSMinorVersion < 12)
#  define ExtraLibraries -lsocket -lnsl
# else
#  define ExtraLibraries /**/
# endif
# define HasWeakSymbols	  YES
# if OSMinorVersion > 1
#  ifndef ThreadedX
#   define ThreadedX	  YES
#  endif
#  define MTSafeAPIDefines	-DXUSE_MTSAFE_API -DXUSE_NETDB_R_API
/* Thread support was in separate library before 5.10, then merged to libc */
#  if (OSMajorVersion == 5) && (OSMinorVersion < 10)
#   if HasSunC && CCompilerMajorVersion > 2
#    define ThreadsCompileFlags -mt
#   else
#    define ThreadsLibraries -lthread
#   endif
#   if HasSunCplusplus && CplusplusCompilerMajorVersion > 3
#    define ThreadsCplusplusCompileFlags -mt
#   else
#    define ThreadsCplusplusLibraries -lthread
#   endif
#   define SystemMTDefines -D_REENTRANT
#  else
   /* Solaris 10 & later */
#   define SystemMTDefines -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS
#  endif
#  define CplusplusSystemMTDefines SystemMTDefines
# endif 		/* OSMinorVersion > 1 */
# ifndef UseExportLists
#  if (OSMinorVersion > 4) && !HasGcc2
#   define UseExportLists YES
#  else
#   define UseExportLists NO
#  endif
# endif
# if OSMinorVersion > 5 /* Solaris 2.6 and later */
#  define HasSnprintf YES
# endif
# if OSMinorVersion > 7 /* Solaris 8 and later */
#  define HasStrlcat	YES
#  define HasStrcasecmp	YES
#  define HasVarRun	YES
# endif
# if OSMinorVersion > 9 /* Solaris 10 and later */
#  define HasSetenv	YES
#  define HasGetpeerucred YES
#  define HasGetoptLong YES
#  define DlLibrary	-lc  /* dlopen() is in libc in Solaris 10 */
# endif
# define HasVFork	NO
# define HasDlopen	YES
# define InstallXloadSetGID	NO /* libkstat doesn't require gid kmem */
# define InstKmemFlags	-g sys -m 2711
# define ShLibIncludeFile <sunLib.tmpl>
# define LinkerRuntimeLibraryPathFlag(path) Concat(-R,path)
# define RpathLoadFlags LinkerRuntimeLibraryPathFlag($(USRLIBDIRPATH))
/*
 * Set flags for position independent code before including sv4Lib.rules
 * if the compiler in use doesn't use standard SVR4 flags
 */
# if HasSunC || HasCenterLineC
#  define PositionIndependentCFlags -Kpic
#  define LargePositionIndependentCFlags -KPIC
#  ifdef Sparc64Architecture
#   define LargePICTable YES
#  endif
# endif
# if HasSunCplusplus || HasCenterLineCplusplus
#  define PositionIndependentCplusplusFlags -pic
#  define LargePositionIndependentCplusplusFlags -PIC
# endif
/* As is done in sco5.cf, we lie and say Solaris has NCURSES, since
 * the system curses is close enough for xorgcfg's purposes.  xorgcfg
 * should not depend on the NCURSES package but rather on a "capable curses",
 * of which NCURSES is just one.
 */
#define	HasNCurses		YES
#define NCursesLibName		-lcurses
#else /* not OSMajorVersion > 4 */
#define InstKmemFlags	  -g kmem -m 2711
#include <sunLib.rules>
#endif /* OSMajorVersion > 4 (else) */

/* Solaris 10 includes FreeType already.  It's also available in GNOME 2.0 for
 * Solaris 8 & 9, and in Solaris 9 4/03 and later, but there's no easy way to
 * detect that in imake, so users of those releases who want to use the
 * installed FreeType instead of the one in this tree should copy the following
 * two settings to their host.def.  Those who want to use the in-tree copy
 * regardless of OS version should add "#define HasFreetype2 NO" to host.def.
 */
#ifndef HasFreetype2
# if (OSMajorVersion > 5) || ((OSMajorVersion == 5) && (OSMinorVersion >= 10))
#  define HasFreetype2 YES
#  ifndef Freetype2Dir
#   define Freetype2Dir /usr/sfw
#  endif
# else
#  define HasFreetype2 NO
# endif
#endif

#ifndef HasExpat
# if (OSMajorVersion > 5) || ((OSMajorVersion == 5) && (OSMinorVersion >= 10))
#  define HasExpat YES
#  ifndef ExpatDir
#   define ExpatDir /usr/sfw
#  endif
# else
#  define HasExpat NO
# endif
#endif

/* Solaris 10 includes fontconfig, but not the fcprivate.h header needed by
 * Xft1 library.
 */
#ifndef HasFontconfig
# define HasFontconfig NO
#endif

/* libpng was in /usr/sfw/lib on Solaris 9, moved to /usr/lib in Solaris 10 */
#ifndef HasLibpng
# if (OSMajorVersion > 5) || ((OSMajorVersion == 5) && (OSMinorVersion >= 9))
#  define HasLibpng YES
#  if !defined(LibpngDir) && ((OSMajorVersion == 5) && (OSMinorVersion == 9))
#   define LibpngDir /usr/sfw
#  endif
# else
#  define HasLibpng NO
# endif
#endif

#ifndef HasZlib
# if (OSMajorVersion > 5) || ((OSMajorVersion == 5) && (OSMinorVersion >= 8))
#  define HasZlib YES
# else
#  define HasZlib NO
# endif
#endif

#ifndef TroffCmd
# if !(HasGroff)
#  define TroffCmd troff -Tpost
# endif
#endif

#define BuildLibPathVar	  LD_LIBRARY_PATH
#define HasNdbm		  YES
#define HasShm		  YES
#define HasSecureRPC	  YES
#define SetTtyGroup	  YES
#define HasPutenv	  YES
#define HasMkstemp        YES
#if (OSMajorVersion > 5) || ((OSMajorVersion == 5) && (OSMinorVersion >= 8))
#define HasDevRandom	  YES	/* /dev/random is in Solaris 8 patches 	*/
#define PollDevRandom	  YES	/* /dev/random is poll()able on Solaris */
#endif
#if (OSMajorVersion > 5) || ((OSMajorVersion == 5) && (OSMinorVersion >= 9))
# define HasIssetugid	  YES
#endif
#if defined(Sun3Architecture) || defined(SparcArchitecture) || defined(Sparc64Architecture)
# ifndef Xsun24Server
#  define Xsun24Server	  NO		/* color, mono, multiple depths */
# endif
# ifndef XsunServer
#  define XsunServer	  NO		/* color and mono, 8 bit only */
# endif
# ifndef XsunMonoServer
#  define XsunMonoServer	  NO		/* monochrome only */
# endif
# ifndef XorgServer
#  define XorgServer	(!(Xsun24Server || XsunServer || XsunMonoServer))
# endif
# undef BuildXF86DRI
# define BuildXF86DRI     NO
# if (OSMajorVersion > 4)
#  if !defined(AsOutputArchSize) || \
      ((AsOutputArchSize != 32) && (AsOutputArchSize != 64))
#   undef AsOutputArchSize
#   define AsOutputArchSize	32
#  endif
#  ifndef AsVISOption
#   if AsOutputArchSize == 32
#    ifdef UseGas
#     define AsVISOption		-Av8plusa
#    else
#     define AsVISOption		-xarch=v8plusa
#    endif
#   else
#    ifdef UseGas
#     define AsVISOption		-Av9a
#    else
#     define AsVISOption		-xarch=v9a
#    endif
#   endif
#  endif
# endif
#endif /* SPARC or Sun3/M68k */

#if OSMajorVersion >= 4
#define HasUsableFileMap YES
#endif

#ifndef UseDeprecatedKeyboardDriver
#define UseDeprecatedKeyboardDriver YES
#endif

#if HasGcc
# if OSMajorVersion > 4
#  ifndef DefaultCCOptions
#   ifdef UseInstalled
#    define DefaultCCOptions -DNO_ASM
#   elif OSMinorVersion > 6
#    define DefaultCCOptions -DNO_ASM GccWarningOptions
#   elif OSMinorVersion > 3
#    define DefaultCCOptions -DNO_ASM GccWarningOptions -ansi -pedantic
#   else
#    define DefaultCCOptions -DNO_ASM
#   endif
#  endif
# endif
# if HasGcc2
#  ifndef CcCmd
#   define CcCmd gcc
#  endif
#  ifndef AsCmd
#   define AsCmd CcCmd -c -x assembler
#  endif
#  ifndef OptimizedCDebugFlags
#   ifdef i386Architecture
#    define OptimizedCDebugFlags DefaultGcc2i386Opt
#   elif defined(AMD64Architecture)
#    define OptimizedCDebugFlags DefaultGcc2AMD64Opt
#   else
#    define OptimizedCDebugFlags -O2
#   endif
#  endif
#  if !defined(SharedLibraryLoadFlags) && !defined(SharedLibraryLdCmd)
#   if OSMajorVersion == 5 && OSMinorVersion > 6 && defined(i386Architecture)
    /* This is to work around what appears to be a PIC bug in some gcc/egcs
       versions that shows up with the Solaris 7/x86 <ctype.h>. */
#    define SharedLibraryLdCmd $(LD)
#    define SharedLibraryLoadFlags -G -z textwarn
#   else
#    define SharedLibraryLdCmd $(CC)
#    define SharedLibraryLoadFlags -shared -z text
#   endif
#  endif
# else
#  define SharedLibraryCcCmd cc
#  define ExtraLoadFlags -B/usr/bin/
#  define AllocateLocalDefines /**/

.c.o:
	ClearmakeOSName	$(CC) -c $(CFLAGS) $*.c

# endif /* HasGcc2 (else) */

#else /* not HasGcc */

# define AllocateLocalDefines -DINCLUDE_ALLOCA_H

/* Set up compiler-dependent options for Sun C */
/*
 * To build 64-bit binaries define Sparc64Architecture or AMD64Architecture
 * in your site.def or host.def file.
 */
# if HasSunC
#  ifdef Sun3Architecture
#   ifndef DefaultCCOptions
#    define DefaultCCOptions -f68881 -pipe
#   endif
#  else	/* not defined(Sun3Architecture) */
#   if OSMajorVersion < 5
#    ifndef DefaultCCOptions
#     define DefaultCCOptions -pipe
#    endif
#   else /* OSMajorVersion >= 5*/
#    ifndef DefaultXArchOptions
#     if ((CCompilerMajorVersion > 5) || \
          (CCompilerMajorVersion == 5) && (CCompilerMinorVersion >= 9))
      /* Sun Studio 12.0 (cc 5.9) or later */
#      if (defined(Sparc64Architecture) || defined(AMD64Architecture))
#	define DefaultXArchOptions -m64
#      else
#	define DefaultXArchOptions -m32
#      endif
#     else
#      ifdef Sparc64Architecture
#	define DefaultXArchOptions -xarch=v9
#      elif defined(AMD64Architecture)
#	define DefaultXArchOptions -xarch=generic64
#      else
#       define DefaultXArchOptions /* */
#      endif
#     endif
#     ifndef DefaultCCOptions
#      define DefaultCCOptions -Xa -v DefaultXArchOptions -z lazyload -z combreloc -xstrconst -xildoff
#     endif
#     ifndef DefaultCplusplusOptions
#      define DefaultCplusplusOptions DefaultXArchOptions -z lazyload -z combreloc -xildoff
#     endif
#     ifndef SharedLibraryLoadFlags
#      define SharedLibraryLoadFlags -G DefaultXArchOptions -z text $(EXTRA_LOAD_FLAGS)
#     endif
#    endif
#   endif
#  endif
# endif

/* Set compiler-dependent options for CenterLine C */

# if HasCenterLineC
#  ifndef DefaultCCOptions
#   define DefaultCCOptions -Xt -w1 -DANSICPP -U__HIGHC__
#  endif
#  ifndef NeedConstPrototypes
#   define NeedConstPrototypes YES
#  endif
#  ifndef NeedNestedPrototypes
#   define NeedNestedPrototypes YES
#  endif
#  ifndef NeedVarargsPrototypes
#   define NeedVarargsPrototypes YES
#  endif
# endif


#endif /* HasGcc (else) */

#if OSMajorVersion < 5
# define SharedAllocateLocalDefines -DINCLUDE_ALLOCA_H
# define LibraryCCOptions /* don't want special floating point */
#else /* OSMajorVersion >= 5, i.e. Solaris 2.0 & later */
/* Only load libraries when needed on Solaris 7 & later */
# if OSMinorVersion >= 7
#  define LazyLoadFlag -z lazyload -z combreloc
# else
#  define LazyLoadFlag /* */
# endif
/* Link with extra mapfiles for some performance & security enhancements */
#ifndef MapfileFlag
# if HasSunC
#  define MapfileFlag -M
# else
#  define MapfileFlag -Wl,-M,
# endif
#endif
#ifndef Mapfile_BssAlign
# if OSMinorVersion >= 9
#  define Mapfile_BssAlign $(MAPFILEFLAG)/usr/lib/ld/map.bssalign
# else
#  define Mapfile_BssAlign /**/
# endif
#endif
#ifndef Mapfile_PageAlign
# if OSMinorVersion >= 10
#  define Mapfile_PageAlign $(MAPFILEFLAG)/usr/lib/ld/map.pagealign
# else
#  define Mapfile_PageAlign /**/
# endif
#endif
#ifndef Mapfile_NoExStack
# if OSMinorVersion >= 9
#  define Mapfile_NoExStack $(MAPFILEFLAG)/usr/lib/ld/map.noexstk
# else
#  define Mapfile_NoExStack /**/
# endif
#endif
#ifndef Mapfile_NoExData
# if defined(SparcArchitecture)
/* SPARC archictecture requires PLT section in .data be executable, so
   we can only make .bss, not all of .data no-exec on SPARC */
#   define Mapfile_NoExData /**/
# else
#  if OSMinorVersion >= 10
#   define Mapfile_NoExData $(MAPFILEFLAG)/usr/lib/ld/map.noexdata
#  else
#   define Mapfile_NoExData /**/
#  endif
# endif
#endif
       MAPFILEFLAG = MapfileFlag
  MAPFILES_FOR_ALL = Mapfile_PageAlign Mapfile_NoExData
MAPFILES_FOR_PROGS = Mapfile_BssAlign Mapfile_NoExStack
/* ExtraLoadFlags apply to all binaries - programs & libraries */
# ifndef ExtraLoadFlags
#  define ExtraLoadFlags LazyLoadFlag $(MAPFILES_FOR_ALL)
# endif
/* ExtraLoadOptions only apply to programs */
# ifndef ExtraLoadOptions
#  define ExtraLoadOptions -B direct $(MAPFILES_FOR_PROGS)
# endif
#endif /* OSMajorVersion < 5 */

/* 64-bit build support */
#ifndef Solaris64bitSubdir
# ifdef Sparc64Architecture
#  define Solaris64bitSubdir	sparcv9
# elif defined(AMD64Architecture)
#  define Solaris64bitSubdir	amd64
# endif
#endif

#ifdef Solaris64bitSubdir
# define LibDirName Concat3(lib,/,Solaris64bitSubdir)
#endif

#if ((OSMajorVersion == 5) && (OSMinorVersion <= 11))
/* System V man page sections */
# ifndef FileManSuffix
#  define FileManSuffix	4		/* use just one tab or cpp will die */
# endif
# ifndef MiscManSuffix
#  define MiscManSuffix	5		/* use just one tab or cpp will die */
# endif
# ifndef DriverManSuffix
#  define DriverManSuffix	7	/* use just one tab or cpp will die */
# endif
# ifndef AdminManSuffix
#  define AdminManSuffix	1m	/* use just one tab or cpp will die */
# endif
#else
/* Bell Labs / BSD man page sections */
# ifndef FileManSuffix
#  define FileManSuffix	5		/* use just one tab or cpp will die */
# endif
# ifndef MiscManSuffix
#  define MiscManSuffix	7		/* use just one tab or cpp will die */
# endif
# ifndef DriverManSuffix
#  define DriverManSuffix	4	/* use just one tab or cpp will die */
# endif
# ifndef AdminManSuffix
#  define AdminManSuffix	8	/* use just one tab or cpp will die */
# endif
#endif

#if OSMajorVersion > 4
# include <svr4.cf>
#endif

#ifndef ManKeywordsTarget
# define ManKeywordsTarget(manpath)					@@\
man_keywords::								@@\
	catman -M $(DESTDIR)manpath -w
#endif

#if !defined(UsePamLibrary)
# if (OSMajorVersion > 5) || ((OSMajorVersion == 5) && (OSMinorVersion >= 4))
#  define UsePamLibrary		YES
# endif
#endif

/* PAM appeared in SunOS 5.6 */
#if !defined(HasPam)
# if (OSMajorVersion > 5) || (OSMajorVersion == 5 && OSMinorVersion >= 6)
#  define HasPam		YES
# endif
#endif

#ifndef PamLibraries
#define PamLibraries		-lpam
#endif

#ifndef HasMotif
/* Solaris's Motif depends on Solaris libX11 and won't work with libX11 built
 * from this tree, so only use it when using libX11 from outside the tree.
 */
# define HasMotif (defined(UseInstalled) || UseInstalledX11)
# define MotifDir /usr/dt
#endif /* !HasMotif */
#ifndef HasMotif2
/* Solaris's Motif2 version is broken and misses XmPrintShell
 * (see http://xprint.mozdev.org/bugs/show_bug.cgi?id=1366) */
# define HasMotif2 NO
#endif /* !HasMotif2 */

#define MotifDefines			\
	-DNO_ISDIR -DNO_REGCOMP -DNO_ALLOCA -DBOGUS_MB_MAX -DNO_CONST
#define PamUnixDefines		-DPAM_NIS
#define TtLargePICTable		YES
#define DtSvcDefines		-DXK_MISCELLANY -DMULTIBYTE -DNO_REGCOMP
#define DtSearchDefines		-DI18N_MSG DtSvcDefines
#define DtWidgetDefines		DtSearchDefines
#define DtPrintDefines		DtSearchDefines

#define baseDtMailDefines	\
	-DSunOS=OSMajorVersion\#\#OSMinorVersion -DMMAP_NORESERVE -DSPRO_V2
#if !defined(i386Architecture) && !defined(AMD64Architecture)
# define DtMailDefines		baseDtMailDefines
#else
# define DtMailDefines		-DBIG_ENDIAN baseDtMailDefines
#endif

#define ArchitectureDefines	-DSUN_ARCHITECTURE

#define TtClientExtraLibs	ExtraLibraries -ldl -lintl

#define ExportListGenSource	elistgen.sun
#define ShlibExportListOpt(filename)	-M filename

#define CdeProjectDefines \
	-DMULTIBYTE -DNLS16 -DMESSAGE_CAT -D_XOPEN_VERSION=4 \
	-D_XOPEN_SOURCE -D__EXTENSIONS__ \
	-DOSMAJORVERSION=OSMajorVersion -DOSMINORVERSION=OSMinorVersion


/*
 * Turn off HTML manpages like we do under NetBSD.
 */
#ifndef	BuildHtmlManPages
#define	BuildHtmlManPages	NO
#endif

/*
 * Turn off seperate configuration directories.
 */
#ifndef	UseSeparateConfDir
#define	UseSeparateConfDir	NO
#endif

/* Hackery for building modules as Solaris shared objects with dependencies */
#if MakeDllModules && DoLoadableServer

/* If you change this, you will need to change find-deps.pl to match */
#define DlModuleDependencyName(module) Concat(module,_deps)

#define DlModuleTarget(module,deplist,modlist)                          @@\
DepDynamicModuleTarget(module,deplist DlModuleDependencyName(module),modlist LazyLoadFlag `cat DlModuleDependencyName(module)`) @@\
									@@\
DlModuleDependencyName(module):						@@\
	touch $@							@@\
									@@\
clean::                                                                 @@\
        RemoveFile(DlModuleDependencyName(module))

#define ObjectModuleTarget(module,objects)				@@\
DlModuleTarget(Concat(module,_drv.so), objects, objects)

#define LibraryModuleTarget(module,objects)				@@\
NormalLibraryTarget(module, objects)					@@\
DlModuleTarget(Concat3(lib,module,.so), objects, objects)

#define DepLibraryModuleTarget(module,deplist,objects)			@@\
NormalDepLibraryTarget(module, deplist, objects)			@@\
DlModuleTarget(Concat3(lib,module,.so), deplist, objects)

#endif
