XCOMM platform:  $Xorg: sgi.cf,v 1.4 2000/08/17 19:41:48 cpqbld Exp $
XCOMM $XFree86: xc/config/cf/sgi.cf,v 1.12tsi 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)

#if OSMajorVersion < 4
/* We do not guarantee this will work */
#define BootstrapCFlags		-DX_WCHAR -DX_LOCALE -DX_USEBFUNCS -DSYSV
#define StandardDefines		-DX_WCHAR -DX_LOCALE -DX_USEBFUNCS -DSYSV
#define SetTtyGroup		NO
#else
#define HasPlugin		YES
#define SetTtyGroup		YES
#define ExtraFilesToClean	so_locations
#endif

#if OSMajorVersion < 5
#define SystemV			YES
#define XawI18nDefines		-DUSE_XWCHAR_STRING -DUSE_XMBTOWC
#else
#define BootstrapCFlags		-DSVR4
#define StandardDefines		-DSVR4
#define SystemV4		YES
#define HasWChar32              YES
#define HasVFork		NO
#if OSMajorVersion < 6
#define XawI18nDefines		-DHAS_WCTYPE_H -DHAS_ISW_FUNCS
#else
#define XawI18nDefines		-DHAS_WCHAR_H -DHAS_ISW_FUNCS
#define HasSetenv		NO
#define HasSnprintf		YES
#endif
#define AllocateLocalDefines	-DINCLUDE_ALLOCA_H
#ifndef ExtraLoadFlags
#define ExtraLoadFlags -Wl,-rpath,$(USRLIBDIRPATH)
#endif
#endif

/*
 * To build 64-bit binaries define Mips64Architecture in your site.def or
 * host.def file. This is usually on done at the X Consortium to test
 * big endian 64-bit cleanliness.
 * To build 32-bit binaries using the old 32-bit mode, define
 * NoMipsN32Archtecture in your site.def or host.def file.
 * Otherwise the default is to use the "new 32" mode as requested by SGI.
 */
#ifndef MipsN32Architecture
#if !defined(Mips64Architecture) && !defined(NoMipsN32Architecture)
#define MipsN32Architecture YES
#endif
#endif

#ifdef Mips64Architecture
# define BuildLibPathVar	_RLD_ROOT=/dev/null LD_LIBRARY64_PATH
# define SystemBuildLibPath	/usr/lib64:/lib64
# define LdCmd			ld -64
# define AsCmd			as -64
#elif defined(MipsN32Architecture)
# define BuildLibPathVar	_RLD_ROOT=/dev/null LD_LIBRARYN32_PATH
# define SystemBuildLibPath	/usr/lib32:/lib32
# define LdCmd			ld -n32
# define AsCmd			as -n32
#else
# define BuildLibPathVar	_RLD_ROOT=/dev/null LD_LIBRARY_PATH
# define SystemBuildLibPath	/usr/lib:/lib
# define LdCmd			ld -32
# define AsCmd			as -32
#endif
#define HasCplusplus		YES
#define Malloc0ReturnsNull	YES	/* IRIX [56].x -lmalloc needs this */
#define HasPutenv		YES
#define ExecableScripts		YES
#define HasNdbm			YES
#define HasPoll                 YES
#define ExpandManNames          YES
#define LexLib			/* Not needed */
#ifndef BuildXInputExt
#define BuildXInputExt		YES
#endif

#if OSMajorVersion > 3 || (OSMajorVersion == 3 && OSMinorVersion > 2)
#define NeedVarargsPrototypes	YES
#define NeedConstPrototypes	YES
#define NeedWidePrototypes	NO
#endif

#include <sgiLib.rules>

#if OSMajorVersion < 5
#define SymbolTables -Wf,-XNp16000,-XNd16000,-XNh2000
#define ServerSymbolTables -Wf,-XNp8000,-XNh2000,-XNd8000
#else
#define SymbolTables
#define ServerSymbolTables
#endif

/* this is for floating point, ANSI cpp */
#if OSMajorVersion < 5
/* Extra libraries provide : yp, sysV malloc, shared libc, and widechar */
# define ExtraLibraries -lsun -lmalloc -lc_s -lw
# define sgiCCOptions -xansi -D__STDC__=1 -float
#else
# if OSMajorVersion < 6
#  define sgiCCOptions -xansi
# else
#  define CppCmd cc -E -cckr
#  ifdef Mips64Architecture
/* set Mips64Architecture in host.def. Usually don't need it but we
 * (the X Consortium) want a  64-bit big-endian machine to test on. */
#   define sgiCCOptions -xansi -mips3 -64
#   define DlLibrary /**/
#  elif defined(MipsN32Architecture)
/* Set MipsN32Architecture to build "new" 32-bit objs with a 32-bit kernel. */
#   define sgiCCOptions -xansi -mips3 -n32
#  else
#   define sgiCCOptions -xansi -32
#  endif
#  if OSMinorVersion == 2
/* if you haven't installed patch 1361, 1403, or 1645 on IRIX 6.2 then you
 * must add "#define HasPosixThreads NO" in your site.def or host.def file
 */
#   ifndef HasPosixThreads
#    define HasPosixThreads	YES
#   endif
#   define ThreadedX HasPosixThreads
#   define ThreadsLibraries -lpthread
/*
 * Add "#define HasSgiThreadsPatch1403 YES" to your site.def or host.def if
 * that's which patch you have.
 */
#   ifndef HasSgiThreadsPatch1403
#    define HasSgiThreadsPatch1403 NO
#   endif
#   if (HasSgiThreadsPatch1403)
#    define SystemMTDefines -D_POSIX_THREAD_SAFE_FUNCTIONS
#   endif
#  endif
# endif
/* SGI's -lsocket -lnsl is broken, at least in 5.2, so override here */
# define ExtraLibraries /**/
#endif

/* IRIX 6.5 doesn't support IPv6, but #define's AF_INET6.  Go figure... */
#ifndef BuildIPv6
#define BuildIPv6	NO
#endif

#undef  BuildXF86DRI
#define BuildXF86DRI	NO

#if !HasGcc
#if !defined(OptimizedCDebugFlags)
#if defined(MipsN32Architecture) || defined(Mips64Architecture)
#define OptimizedCDebugFlags -O -OPT:Olimit=0
#else
#define OptimizedCDebugFlags -O -Olimit 2048
#endif
#endif
#if !defined(RawCppCmd)
#define RawCppCmd CppCmd
#endif
#endif

#ifndef DefaultCCOptions
#define DefaultCCOptions sgiCCOptions SymbolTables
#endif
#ifndef ServerCCOptions
#define ServerCCOptions sgiCCOptions ServerSymbolTables
#endif
#ifndef DefaultCplusplusOptions
#define DefaultCplusplusOptions DefaultCCOptions
#endif

/* For SGI C++ compiler, need to search extra dirs in make depend */
#ifndef CplusplusDependIncludes
#define CplusplusDependIncludes -I/usr/include/CC
#endif

/* At SGI, we don't need this */
#define ConstructMFLAGS		NO	/* build MFLAGS from MAKEFLAGS */

/* Used only for compressed fonts */
#define UNCOMPRESSPATH /usr/bsd/uncompress /* obsolete */

/* Normally used only to conditionally chose the default font path order */
#define PrimaryScreenResolution 96

/* Override Imake.tmpl's "-X" flag */
#define LdCombineFlags -r

/* Installation Build Parameters */
#define InstKmemFlags -m 2711 -g sys

#define ArCmd ar scq

/* for xdm or anyone else to use */
#define DefaultUserPath :/usr/sbin:/usr/bsd:/usr/bin:/bin:$(BINDIR):/etc:/usr/etc
#define DefaultSystemPath /usr/sbin:/usr/bsd:/bin:/etc:/usr/bin:/usr/etc:$(BINDIR)

#define ServerOSDefines		-DDDXTIME XFree86ServerOSDefines

#ifndef ServerExtraDefines
#ifndef Mips64Architecture
#define ServerExtraDefines	-DNEED_LINEHELPER AllocateLocalDefines \
				XFree86ServerDefines
#else
#define ServerExtraDefines	-DNEED_LINEHELPER AllocateLocalDefines \
				XFree86ServerDefines -D_XSERVER64
#endif
#endif

/* Changed to a single shell command for pmake/smake */
#if OSMajorVersion < 5
/*
 * NormalLibObjCompile - compile fragment for a library object file
 *	do ld -x to remove line number symbols for libraries
 */
#define NormalLibObjCompile(options)	ClearmakeOSName			  \
	$(RM) $@ $*.os \						@@\
	&& $(CC) -c options $(CFLAGS) $*.c \				@@\
	&& $(LD) $(LDSTRIPFLAGS) -r $@ -o $*.os \			@@\
	&& $(MV) $*.os $@
#endif

#define LibObjCompile(dir,options) ClearmakeOSName			  \
	$(RM) $@ dir/$@ \						@@\
	&& $(CC) -c $(CCOPTIONS) $(ALLDEFINES) options $*.c \		@@\
	&& $(MV) $@ dir/$@

#ifndef HasMakefileSafeInclude
#define HasMakefileSafeInclude YES
#endif
#ifndef IncludeMakefile
#define IncludeMakefile(file) @@sinclude file
#endif

/* needs to find nroff on the system to work */
#ifndef ManKeywordsTarget
#define ManKeywordsTarget(manpath)					@@\
man_keywords::								@@\
	/usr/lib/makewhatis -M $(DESTDIR)manpath $(DESTDIR)manpath/whatis
#endif

#define MotifDefines		-DSYS_DIR -DPORT_NOVFORK -DNO_REGCOMP

#if !defined(HasGcc) || !HasGcc

#ifndef CppFileTarget
#define CppFileTarget(dst,src,defs,deplist)				@@\
dst::  src deplist							@@\
	RemoveFile($@)							@@\
	ClearmakeOSName \
	$(CPP) CppNoLineInfoOption defs src 2>/dev/null | CppSedMagic >$@; @@\
									@@\
clean::									@@\
	RemoveFiles(dst)
#endif /* CppFileTarget */

#ifndef CppScriptTarget
#if ExecableScripts		/* can use #! instead of colon */
#define CppScriptTarget(dst,src,defs,deplist)				@@\
dst::	src deplist							@@\
	RemoveFile($@)							@@\
	ClearmakeOSName \
	$(CPP) CppNoLineInfoOption defs src | CppSedMagic >$@		@@\
	chmod a+x $@							@@\
									@@\
clean::									@@\
	RemoveFiles(dst)
#else
#define CppScriptTarget(dst,src,defs,deplist)				@@\
dst::  src deplist							@@\
	RemoveFile($@)							@@\
	ClearmakeOSName \
	echo \: >$@							@@\
	sed '1d' src | $(CPP) CppNoLineInfoOption defs | CppSedMagic >>$@	@@\
	chmod a+x $@							@@\
									@@\
clean::									@@\
	RemoveFile(dst)
#endif /* ExecableScripts */
#endif /* CppScriptTarget */

/* Like CppFileTarget, but don't add any default defines */
#ifndef CppRawFileTarget
#define CppRawFileTarget(dst,src,defs,deplist)				@@\
dst::  src deplist							@@\
	RemoveFile($@)							@@\
	ClearmakeOSName \
	$(RAWCPP) CppNoLineInfoOption defs src | CppSedMagic >$@	@@\
									@@\
clean::									@@\
	RemoveFiles(dst)
#endif /* CppFileTarget */

#endif /* !HasGcc */

#ifndef DoLoadableServer
#define DoLoadableServer YES
#endif

#ifndef UseDeprecatedKeyboardDriver
#define UseDeprecatedKeyboardDriver YES
#endif

#include <xorg.cf>