XCOMM platform:  $XFree86: xc/config/cf/sun.cf,v 3.83 2006/02/07 20:54:23 dawes Exp $

/*
 * Copyright (c) 1994-2004 by The XFree86 Project, Inc.
 * All rights reserved.
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject
 * to the following conditions:
 *
 *   1.  Redistributions of source code must retain the above copyright
 *       notice, this list of conditions, and the following disclaimer.
 *
 *   2.  Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer
 *       in the documentation and/or other materials provided with the
 *       distribution, and in the same place and form as other copyright,
 *       license and disclaimer information.
 *
 *   3.  The end-user documentation included with the redistribution,
 *       if any, must include the following acknowledgment: "This product
 *       includes software developed by The XFree86 Project, Inc
 *       (http://www.xfree86.org/) and its contributors", in the same
 *       place and form as other third-party acknowledgments.  Alternately,
 *       this acknowledgment may appear in the software itself, in the
 *       same form and location as other such third-party acknowledgments.
 *
 *   4.  Except as contained in this notice, the name of The XFree86
 *       Project, Inc shall not be used in advertising or otherwise to
 *       promote the sale, use or other dealings in this Software without
 *       prior written authorization from The XFree86 Project, Inc.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE XFREE86 PROJECT, INC OR ITS CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#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)

/*
 * 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, gcc3 or gcc4, define HasGcc, HasGcc2, HasGcc3 or HasGcc4 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 HasGcc4
#define HasGcc4 NO
#endif
#ifndef HasGcc3
#define HasGcc3 HasGcc4
#endif
#ifndef HasGcc2
#define HasGcc2 HasGcc3
#endif
#ifndef HasGcc
#define HasGcc HasGcc2
#endif

#ifndef HasSunC
# if HasCenterLineC || HasGcc || HasGcc2 || HasGcc3 || HasGcc4 || \
     (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
#endif

/* 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	-xO3
# 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
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

/* This might need to key off of compiler and/or OS version */
#ifndef UseElfFormat
#define UseElfFormat YES
#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

#ifdef i386Architecture
# if OSMajorVersion > 4
#  if OSMinorVersion >= 8
#   define ServerExtraDefines	AllocateLocalDefines XFree86ServerDefines \
				-D__SOL8__
#  else
#   define ServerExtraDefines	AllocateLocalDefines XFree86ServerDefines
#  endif
# else
#  define ServerExtraDefines	AllocateLocalDefines
# endif
#else
# ifdef BuildXFree86OnSparcSunOS
#  define ServerExtraDefines	AllocateLocalDefines XFree86ServerDefines
# else
#  define ServerExtraDefines	AllocateLocalDefines XFree86ServerDefines \
				-UXFree86Server
# endif
# define HasPlugin		YES
#endif
#define ServerOSDefines		XFree86ServerOSDefines IncludeCG2HeaderDefine

#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

#define XkbServerDefines  -DXKB_ALWAYS_USES_SOFT_REPEAT

#if OSMajorVersion > 4
#define ConnectionFlags		-DTCPCONN -DUNIXCONN -DLOCALCONN
#if HasSunC
/* 
 * Assume /opt/SUNWspro/bin/ contains symlinks to the appropriate tools
 */
#ifndef  CcCmd
# define CcCmd			/opt/SUNWspro/bin/cc
#endif
#ifndef  CplusplusCmd
# define CplusplusCmd		/opt/SUNWspro/bin/CC
#endif
#ifndef  CplusplusFilt
#  define CplusplusFilt		/opt/SUNWspro/bin/c++filt
#endif
#ifndef  CplusplusDependIncludes
#if CplusplusCompilerMajorVersion > 3
# define CplusplusDependIncludes	-I/opt/SUNWspro/SC4.0/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

# 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 > 3
#  define InstallCmd	    /usr/ucb/install
# endif
# ifdef i386Architecture
#  if (OSMajorVersion < 4) || ((OSMajorVersion == 5) && (OSMinorVersion <= 5))
#   define StandardDefines	-Dsun -DSVR4 -D__EXTENSIONS__ -D__SOL64__ \
				-Di386 -D__i386 -D__i386__
#  else
#   define StandardDefines	-Dsun -DSVR4 -D__EXTENSIONS__ \
				-Di386 -D__i386 -D__i386__
#  endif
#  define ToolkitStringsABIOptions	-intelabi
# else
#  define StandardDefines	-Dsun -DSVR4 -D__EXTENSIONS__ \
				-Dsparc -D__sparc__
#  define ToolkitStringsABIOptions	-sparcabi
# endif
# define ExtraLibraries    -lsocket -lnsl
# if OSMinorVersion > 1
#  ifndef ThreadedX
#   define ThreadedX	  YES
#  endif
#  define MTSafeAPIDefines	-DXUSE_MTSAFE_API -DXUSE_NETDB_R_API
#  if HasSunC && CCompilerMajorVersion > 2
#   define ThreadsCompileFlags -mt
#  else
#   define SystemMTDefines -D_REENTRANT
#   define ThreadsLibraries -lthread
#  endif
#  if HasSunCplusplus && CplusplusCompilerMajorVersion > 3
#   define ThreadsCplusplusCompileFlags -mt
#  else
#   define CplusplusSystemMTDefines -D_REENTRANT
#   define ThreadsCplusplusLibraries -lthread
#  endif
# endif 		/* OSMinorVersion > 1 */
# ifndef UseExportLists
#  if (OSMinorVersion > 4) && !HasGcc2
#   define UseExportLists YES
#  else
#   define UseExportLists NO
#  endif
# endif
# if OSMinorVersion > 5
#  define HasSnprintf YES
# endif
# if OSMinorVersion > 7
#  define HasStrlcat YES
# endif
# define HasVFork          NO
# define HasDlopen         YES
# define InstKmemFlags	  -g sys -m 2711
# define ShLibIncludeFile <sunLib.tmpl>
/*
 * 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
# endif
# if HasSunCplusplus || HasCenterLineCplusplus
#  define PositionIndependentCplusplusFlags -pic
#  define LargePositionIndependentCplusplusFlags -PIC
# endif
#else /* not OSMajorVersion > 4 */
#define InstKmemFlags	  -g kmem -m 2711
#include <sunLib.rules>
#endif /* OSMajorVersion > 4 (else) */

#define BuildLibPathVar	  LD_LIBRARY_PATH
#define HasNdbm		  YES
#define HasShm		  YES
#define HasSecureRPC	  YES
#define SetTtyGroup	  YES
#define HasPutenv	  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
#ifndef i386Architecture
# ifndef Xsun24Server
#  define Xsun24Server	  NO		/* color, mono, multiple depths */
# endif
# ifndef XsunServer
#  define XsunServer	  YES		/* color and mono, 8 bit only */
# endif
# ifndef XsunMonoServer
#  define XsunMonoServer	  NO		/* monochrome only */
# 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 /* not i386Architecture */

#if OSMajorVersion >= 4
#define HasUsableFileMap 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
#   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
#   endif
#   ifdef SparcArchitecture
#    ifndef DefaultGcc2SparcOpt
#     define DefaultGcc2SparcOpt -O2 GccAliasingArgs
#    endif
#    define OptimizedCDebugFlags DefaultGcc2SparcOpt
#   endif
#   ifndef OptimizedCDebugFlags
#    define OptimizedCDebugFlags -O2 GccAliasingArgs
#   endif
#  endif
#  if defined(SparcArchitecture) && \
	(GccMajorVersion == 3) && (GccMinorVersion == 3)
#   define WorkaroundSparc64GccBug
#  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 */

# 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 DefaultCCOptions
#     define DefaultCCOptions -Xa -v
#    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

# ifndef AsCmd
#  ifdef SparcArchitecture
#   define AsCmd as
#  endif
# endif

#endif /* HasGcc (else) */

#if OSMajorVersion < 5
# define SharedAllocateLocalDefines -DINCLUDE_ALLOCA_H
# define LibraryCCOptions /* don't want special floating point */
#endif /* OSMajorVersion < 5 */

/*
 * 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>.
 */
#if OSMajorVersion == 5 && OSMinorVersion > 6 && defined(i386Architecture) && HasGcc
# define SharedLibraryLoadFlags -G -z textwarn
#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

#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
#ifndef i386Architecture
# 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

#ifndef BuildGLULibrary
#if HasSunC
#define BuildGLULibrary NO
#endif
#endif
