/*
 * Server Master Makefile
 */
XCOMM $XFree86: xc/programs/Xserver/Imakefile,v 3.310 2005/02/09 21:46:51 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 InstallXserverSetUID
#define InstallXserverSetUID NO
#endif
#define InstallServerSetUID InstallXserverSetUID

#include <Server.tmpl>

#ifdef XFree86Version
/* Do not strip server binaries */
INSTPGMFLAGS = 
#endif

#define PreFbLibs $(DIX) $(OS) $(XPDDX)
#define TinyPreFbLibs $(TINY_DIX) $(TINY_OS) $(XPDDX)
#define PreFbLibsNoFont $(DIX) $(OS)
#define BarePostFbLibs $(MFB) $(MI)
#define PostFbLibs BarePostFbLibs $(EXTENSIONS)
#define NoMfbBarePostFbLibs $(MI)
#define NoMfbPostFbLibs NoMfbBarePostFbLibs $(EXTENSIONS)

#define MFBBareLibs PreFbLibs BarePostFbLibs
#define NoMFBBareLibs PreFbLibs NoMfbBarePostFbLibs
#define MFBLibs PreFbLibs PostFbLibs
#define NoMFBLibs PreFbLibs NoMfbPostFbLibs
#define CFBLibs PreFbLibs $(CFB) PostFbLibs
#define CFB4Libs PreFbLibs $(CFB4) PostFbLibs
#if BuildLowMem
#define LMFCFBLibs PreFbLibs $(LMFCFB) NoMfbBarePostFbLibs $(EXTENSIONS)
#endif
#define CFB8Libs PreFbLibs $(CFB8) PostFbLibs
#define CFB16Libs PreFbLibs $(CFB16) PostFbLibs
#define CFB24Libs PreFbLibs $(CFB24) PostFbLibs
#define CFB32Libs PreFbLibs $(CFB32) PostFbLibs

#define NoMFBCFBLibs PreFbLibs $(CFB) NoMfbPostFbLibs
#define NoMFBCFB8Libs PreFbLibs $(CFB8) NoMfbPostFbLibs
#define FbPostFbLibs  $(FB) NoMfbPostFbLibs
#define TinyFbPostFbLibs $(FB) $(MI) $(TINY_EXTENSIONS)
#define FBLibs PreFbLibs FbPostFbLibs

#define MiExtLibs $(SHADOW)

#define BareAllFBLibs PreFbLibs $(FB) $(CFB) BarePostFbLibs

#if BuildGlxExt
#if BuildXF86DRI
      DRILIB = GL/dri/ModuleLibraryTargetName(dri)
#else
      DRILIB = 
#endif
#if GlxUseSGISI
      GLXLIB = GL/glx/ModuleLibraryTargetName(glx) \
               GL/sgi-si/ModuleLibraryTargetName(GLcore) \
               $(DRILIB)
#else
#if DoLoadableServer
      GLXLIB = GL/glx/ModuleLibraryTargetName(glx) \
               GL/mesa/GLcore/ModuleLibraryTargetName(GLcore)
#else
      GLXLIB = GL/glx/ModuleLibraryTargetName(glx) \
               GL/mesa/GLcore/ModuleLibraryTargetName(GLcore) \
               $(DRILIB)
#endif
#endif
      GLXDIR = GL
      GLXEXT = $(GLXLIB)
#endif

#if BuildXInputExt
      XINPUTEXT = Xi/LibraryTargetName(xinput)
          XIDIR = Xi
#endif
#if BuildXKB
         XKBEXT = xkb/LibraryTargetName(xkb)
         XKBDIR = xkb
#ifdef XFree86Version
    XF86XKBOBJS = xkb/xf86KillSrv.o xkb/xf86VT.o xkb/xf86Private.o
#endif
#endif
#if BuildLBX
         LBXEXT = lbx/LibraryTargetName(lbx) \
                  $(TOP)/lib/lbxutil/LibraryTargetName(lbxutil)
        LBXDIRS = lbx
#endif
#if BuildDBE
         DBEEXT = dbe/LibraryTargetName(dbe)
#endif
#if BuildDBE || BuildDBElib
         DBEDIR = dbe
#endif
#if BuildRECORD
      RECORDEXT = record/LibraryTargetName(record)
#endif
#if BuildRECORD || BuildRECORDlib
      RECORDDIR = record
#endif
#if BuildXTrap
       XTRAPEXT = XTrap/LibraryTargetName(xtrap)
       XTRAPDIR = XTrap
#endif
#ifdef SiteExtensionLibs
       SITEEXTS = SiteExtensionLibs
#endif
#ifdef SiteExtensionDirs
    SITEEXTDIRS = SiteExtensionDirs
#endif
#if DoLoadableServer && HasDlopen
          LIBDL = DlLibrary
#endif
       LIBREGEX = RegexLibrary

#if BuildXprint
#if XpRasterDDX
XPRASTLIB = Xprint/raster/LibraryTargetName(raster)
#endif
#if XpColorPclDDX
XPPCLLIB = Xprint/pcl/LibraryTargetName(pcl)
#endif
#if XpMonoPclDDX
XPMPCLLIB = Xprint/pcl-mono/LibraryTargetName(pcl)
#endif
#if XpPostScriptDDX
XPPSLIB = Xprint/ps/LibraryTargetName(ps)
#endif

XPDDXLIBS = Xprint/LibraryTargetName(printer) \
	    $(XPRASTLIB) $(XPPCLLIB) $(XPMPCLLIB) $(XPPSLIB)
XPDDXFBLIBS = $(CFB32) $(MFB)
#if !PrintOnlyServer
      XPDDX    = $(XPDDXLIBS)
      XPFBLIBS = $(XPDDXFBLIBS)
#endif
      XPDDXDIR = Xprint
#endif
#if !BuildXprint || PrintOnlyServer
XPFBLIBS = dix/LibraryTargetName(xpstubs)
#endif

#if BuildRender
      RENDERDIR = render
      RENDERLIB = $(RENDERDIR)/LibraryTargetName(render)
#if BuildSeparateTinyDIX
 TINY_RENDERLIB = $(RENDERDIR)/tiny/LibraryTargetName(render)
#else
 TINY_RENDERLIB = $(RENDERLIB)
#endif
#endif
#if BuildRandR
      RANDRDIR = randr
      RANDRLIB = $(RANDRDIR)/LibraryTargetName(randr)
#if BuildSeparateTinyDIX
 TINY_RANDRLIB = $(RANDRDIR)/tiny/LibraryTargetName(randr)
#else
 TINY_RANDRLIB = $(RANDRLIB)
#endif
#endif
       BASEEXTS = Xext/LibraryTargetName(exts)
     STATICEXTS = $(XKBEXT) $(XINPUTEXT) $(LBXEXT) $(SITEEXTS) $(RANDRLIB) \
		  $(RENDERLIB)
        MISCEXT = Xext/LibraryTargetName(ext)
   LOADABLEEXTS = $(MISCEXT) $(DBEEXT) $(RECORDEXT) $(GLXEXT) $(XTRAPEXT)
     EXTENSIONS = $(LOADABLEEXTS) $(STATICEXTS) 

#if BuildSeparateTinyDIX
TINY_STATICEXTS = $(XKBEXT) $(XINPUTEXT) $(LBXEXT) $(SITEEXTS) \
	$(TINY_RANDRLIB) $(TINY_RENDERLIB)
   TINY_MISCEXT = Xext/tiny/LibraryTargetName(ext)
#else
TINY_STATICEXTS = $(STATICEXTS)
   TINY_MISCEXT = $(MISCEXT)
#endif
TINY_LOADABLEEXTS = $(TINY_MISCEXT) $(DBEEXT) $(RECORDEXT) $(GLXEXT) $(XTRAPEXT)
TINY_EXTENSIONS = $(TINY_STATICEXTS) $(TINY_LOADABLEEXTS)

 XPLOADABLEEXTS = $(MISCEXT) $(DBEEXT) $(RECORDEXT) $(XTRAPEXT)
   XPEXTENSIONS = $(XPLOADABLEEXTS) $(STATICEXTS) 

#if DoLoadableServer
 XF86EXTENSIONS = $(BASEEXTS) $(STATICEXTS)
#else
 XF86EXTENSIONS = $(STATICEXTS) $(LOADABLEEXTS)
#endif

  DMXSTATICEXTS = $(XKBEXT) $(XINPUTEXT) $(LBXEXT) $(SITEEXTS) $(RENDERLIB)
DMXLOADABLEEXTS = $(MISCEXT) $(RECORDEXT) $(XTRAPEXT)
  DMXEXTENSIONS = $(DMXLOADABLEEXTS) $(DMXSTATICEXTS) 

        EXTDIRS = Xext $(XKBDIR) $(XIDIR) $(GLXDIR) \
                  $(LBXDIRS) $(DBEDIR) $(RECORDDIR) $(SITEEXTDIRS) \
                  $(RANDRDIR) $(RENDERDIR) $(XTRAPDIR)
#if BuildLBX || GzipFontCompression
           ZLIB = GzipLibrary
#endif
             OS = os/LibraryTargetName(os)
#if BuildSeparateTinyDIX
        TINY_OS = os/tiny/LibraryTargetName(os)
#else
        TINY_OS = $(OS)
#endif
        BSDEMUL = $(DEPXBSDLIB)
#if DoLoadableServer
            MFB = mfb/ModuleLibraryTargetName(mfb)
             FB = fb/ModuleLibraryTargetName(fb)
            CFB = cfb16/ModuleLibraryTargetName(cfb16) \
		  cfb24/ModuleLibraryTargetName(cfb24) \
		  cfb32/ModuleLibraryTargetName(cfb32) \
		  cfb/ModuleLibraryTargetName(cfb)
           CFB8 = cfb/ModuleLibraryTargetName(cfb)
           CFB4 = cfb4/ModuleLibraryTargetName(cfb4) \
		  cfb/ModuleLibraryTargetName(cfb)
          CFB16 = cfb16/ModuleLibraryTargetName(cfb16) \
		  cfb/ModuleLibraryTargetName(cfb)
          CFB24 = cfb24/ModuleLibraryTargetName(cfb24) \
		  cfb/ModuleLibraryTargetName(cfb)
          CFB32 = cfb32/ModuleLibraryTargetName(cfb32) \
		  cfb/ModuleLibraryTargetName(cfb)
         SHADOW = miext/shadow/ModuleLibraryTargetName(shadow)
          LAYER = miext/layer/ModuleLibraryTargetName(layer) 
#else 
            MFB = mfb/LibraryTargetName(mfb)
             FB = fb/LibraryTargetName(fb)
            CFB = cfb16/LibraryTargetName(cfb16) \
		  cfb24/LibraryTargetName(cfb24) \
		  cfb32/LibraryTargetName(cfb32) \
		  cfb/LibraryTargetName(cfb)
           CFB8 = cfb/LibraryTargetName(cfb)
           CFB4 = cfb4/LibraryTargetName(cfb4) \
		  cfb/LibraryTargetName(cfb)
          CFB16 = cfb16/LibraryTargetName(cfb16) \
		  cfb/LibraryTargetName(cfb)
          CFB24 = cfb24/LibraryTargetName(cfb24) \
		  cfb/LibraryTargetName(cfb)
          CFB32 = cfb32/LibraryTargetName(cfb32) \
		  cfb/LibraryTargetName(cfb)
         SHADOW = miext/shadow/LibraryTargetName(shadow)
          LAYER = miext/layer/LibraryTargetName(layer) 
#endif
#if BuildLowMem
         LMFCFB = lmfcfb/LibraryTargetName(cfb)
#endif
             MI = mi/LibraryTargetName(mi)
   MIINITEXTOBJ = mi/miinitext.o
            DIX = dix/LibraryTargetName(dix)
#if BuildSeparateTinyDIX
       TINY_DIX = dix/tiny/LibraryTargetName(dix)
#else
       TINY_DIX = $(DIX)
#endif
#if DoLoadableServer
       FONTBASE = $(FONTLIBSRC)/fontbase.o \
		  $(FONTLIBSRC)/LibraryTargetName(fontbase)
#endif
#if XserverStaticFontLib
           FONT = $(FONTLIBSRC)/LibraryTargetName(Xfont) $(FREETYPE2LIB)
      TINY_FONT = $(FONTLIBSRC)/LibraryTargetName(Xfont)
#else
           FONT = $(LDPRELIB) $(XFONTLIB) $(FREETYPE2LIB)
      TINY_FONT = $(LDPRELIB) $(XFONTLIB)
#endif
       FONTLIBS = $(FONT) $(XPFBLIBS)
  TINY_FONTLIBS = $(TINY_FONT) $(XPFBLIBS)
#if !HasLibUsb
            USB = $(XF86OSSRC)/bsd/libusb/LibraryTargetName(usb)
#else
            USB = UsbHidLib
#endif
#ifdef ServerExtraSysLibs
   EXTRASYSLIBS = ServerExtraSysLibs
#endif
#if HasPam && HasPamMisc
        PAMLIBS = PamLibraries PamMiscLibraries
#endif
#if !(SystemV4 || defined(SGIArchitecture) || UseRgbTxt)
       DBMLIBS = DBMLibrary
#endif
        SYSLIBS = $(ZLIB) MathLibrary Krb5Libraries $(DBMLIBS) $(USB) \
		  $(PAMLIBS) $(XAUTHLIB) $(XDMCPLIB) $(EXTRASYSLIBS)
 NOAUTH_SYSLIBS = $(ZLIB) MathLibrary Krb5Libraries $(DBMLIBS) $(USB) \
		  $(PAMLIBS) $(XDMCPLIB) $(EXTRASYSLIBS)
#if !HasCbrt
           CBRT = mi/LibraryTargetName(cbrt)
#endif
        STDDIRS = include dix os mi $(XPDDXDIR) $(EXTDIRS)
          FBDIR = fb
         MFBDIR = mfb
        CFB4DIR = cfb4
        CFB8DIR = cfb
       CFB16DIR = cfb16
       CFB24DIR = cfb24
       CFB32DIR = cfb32
         AFBDIR = afb
       LAYERDIR = miext/layer
    ROOTLESSDIR = miext/rootless
      SHADOWDIR = miext/shadow

XCOMM
XCOMM This turns off the default rule for compiling .c files because
XCOMM this makefile does not really know how to build it.  This is really
XCOMM just a hack because of the Sun version of make and nfs.
XCOMM
.c.o:

.s.o:

/*  		  Build rule blocks, add one for each server
 *  
 *  If a server needs mfb, its build block should have a line like:
 *  MFBSUBDIR = mfb
 *  Similarly, its build block should have:
 *  CFB4SUBDIR  = cfb4  (if the server needs 4 bit cfb)
 *  CFB8SUBDIR  = cfb   (8 bit cfb)
 *  CFB16SUBDIR = cfb16 (16 bit cfb)
 *  CFB24SUBDIR = cfb24 (24 bit cfb)
 *  CFB32SUBDIR = cfb32 (32 bit cfb)
 *  
 *  If a server does not need all of the above components, simply
 *  omit the relevant lines from the build block.
 *  
 *  If these guidelines are followed, a make at the top of the server
 *  tree should result in each subdirectory being built only once,
 *  even if multiple servers that share subdirectories are being built.
 */

#if BuildLowMem
LMFCFBDIR = lmfcfb
#endif

#if defined(XdecServer) && XdecServer
XCOMM
XCOMM Digital MIPS based WS server (ultrix 4.2 and beyond)
XCOMM
MFBSUBDIR  = mfb
CFB8SUBDIR = cfb
DECWSDDXDIR = hw/dec/ws
#if BuildLowMem
DECDIRS = $(STDDIRS) $(LMFCFBDIR) $(DECWSDDXDIR) $(DEPDIRS)
#else
DECDIRS = $(STDDIRS) $(MFBDIR) $(CFB8DIR) $(DECWSDDXDIR) $(DEPDIRS)
#endif
DECOBJS = hw/dec/ws/init.o hw/dec/ws/sdepthinit.o
#if BuildLowMem
DECLIBS = hw/dec/ws/LibraryTargetName(dec) LMFCFBLibs
#else
DECLIBS = hw/dec/ws/LibraryTargetName(dec) CFB8Libs
#endif
ServerTarget(Xdec,$(DECDIRS),$(DECOBJS), \
	$(DECLIBS),$(FONTLIBS) $(SYSLIBS))
#ifndef ServerToInstall
#define ServerToInstall Xdec
#endif
#endif /* XdecServer */


#if defined(XdecMultiDepthServer) && XdecMultiDepthServer
XCOMM
XCOMM Digital MIPS based WS server (ultrix 4.2 and beyond)
XCOMM Supports 8, 12, and 24 bit pixmaps
XCOMM
MFBSUBDIR   = mfb
CFB8SUBDIR  = cfb
CFB16SUBDIR = cfb16
CFB24SUBDIR = cfb24
CFB32SUBDIR = cfb32
DECWSDDXDIR  = hw/dec/ws
DECDIRS1 = $(STDDIRS) $(MFBDIR) \
	   $(CFB8DIR) $(CFB16DIR) $(CFB24DIR) $(CFB32DIR) \
	   $(DECWSDDXDIR) $(DEPDIRS)
DECOBJS1 = hw/dec/ws/init.o hw/dec/ws/mdepthinit.o
DECLIBS1 = hw/dec/ws/LibraryTargetName(dec) CFBLibs
ServerTarget(Xdec_md,$(DECDIRS1),$(DECOBJS1), \
	$(DECLIBS1),$(FONTLIBS) $(SYSLIBS))
#ifndef ServerToInstall
#define ServerToInstall Xdec_md
#endif
#endif /* XdecMultiDepthServer */


#if defined(XsunServer) && XsunServer
XCOMM
XCOMM Sun server
XCOMM
MFBSUBDIR  = mfb
CFB8SUBDIR = cfb
SUNDDXDIR = hw/sun
#if DoLoadableServer
SUNOBJS = hw/sun/sunInit.o hw/sun/sunInitExt.o hw/sun/stubs.o
#elif defined(XF86Server) && XF86Server
SUNOBJS = hw/sun/sunInit.o hw/sun/stubs.o
#else
SUNOBJS = hw/sun/sunInit.o
#endif
#if BuildLowMem
SUNDIRS = $(STDDIRS) $(LMFCFBDIR) $(SUNDDXDIR) $(DEPDIRS)
SUNLIBS = hw/sun/LibraryTargetName(sun) LMFCFBLibs
#else
SUNDIRS = $(STDDIRS) $(MFBDIR) $(CFB8DIR) $(SUNDDXDIR) $(DEPDIRS)
SUNLIBS = hw/sun/LibraryTargetName(sun) CFB8Libs
#endif
SUNSYSLIBS = $(FONTLIBS) $(WIDECHARSYSLIB) $(SYSLIBS)
SetUIDServerTarget(Xsun,$(SUNDIRS),$(SUNOBJS), \
	$(SUNLIBS),$(SUNSYSLIBS))
#if !defined(ServerToInstall) && (!defined(XF86Server) || !XF86Server)
#define ServerToInstall Xsun
#endif
#endif /* XsunServer */


#if defined(Xsun24Server) && Xsun24Server
XCOMM
XCOMM Sun multiple pixmap depth (8, 12, 24) server
XCOMM
MFBSUBDIR = mfb
CFB8SUBDIR = cfb
CFB16SUBDIR = cfb16
CFB24SUBDIR = cfb24
CFB32SUBDIR = cfb32
SUNDDXDIR = hw/sun
SUN24DIRS = $(STDDIRS) $(MFBDIR) \
	    $(CFB8DIR) $(CFB16DIR) $(CFB24DIR) $(CFB32DIR) \
	    $(SUNDDXDIR) $(DEPDIRS)
#if DoLoadableServer
SUN24OBJS = hw/sun/sunInitMulti.o hw/sun/sunInitExt.o hw/sun/stubs.o
#elif defined(XF86Server) && XF86Server
SUN24OBJS = hw/sun/sunInitMulti.o hw/sun/stubs.o
#else
SUN24OBJS = hw/sun/sunInitMulti.o
#endif
SUN24LIBS = hw/sun/LibraryTargetName(sun) CFBLibs
SetUIDServerTarget(Xsun24,$(SUN24DIRS),$(SUN24OBJS), \
	$(SUN24LIBS),$(FONTLIBS) $(SYSLIBS))
#if !defined(ServerToInstall) && (!defined(XF86Server) || !XF86Server)
#define ServerToInstall Xsun24
#endif
#endif /* Xsun24Server */


#if defined(XsunMonoServer) && XsunMonoServer
XCOMM
XCOMM Sun monochrome server
XCOMM
MFBSUBDIR = mfb
SUNDDXDIR = hw/sun
SUNMDIRS = $(STDDIRS) $(MFBDIR) $(SUNDDXDIR) $(DEPDIRS)
#if defined(XF86Server) && XF86Server
SUNMOBJS = hw/sun/sunInitMono.o hw/sun/sunInExMono.o hw/sun/stubs.o
#else
SUNMOBJS = hw/sun/sunInitMono.o hw/sun/sunInExMono.o
#endif
SUNMLIBS = hw/sun/LibraryTargetName(sun) MFBLibs
SetUIDServerTarget(XsunMono,$(SUNMDIRS),$(SUNMOBJS), \
	$(SUNMLIBS),$(FONTLIBS) $(SYSLIBS))
#if !defined(ServerToInstall) && (!defined(XF86Server) || !XF86Server)
#define ServerToInstall XsunMono
#endif
#endif /* XsunMonoServer */


#if defined(XsunLynxServer) && XsunLynxServer
XCOMM
XCOMM Sun server for LynxOS microSPARC 2.4.0
XCOMM
MFBSUBDIR = mfb
CFB8SUBDIR = cfb
LYNXDDXDIR = hw/sunLynx
SUNDIRS = $(STDDIRS) $(MFBDIR) $(CFB8DIR) $(LYNXDDXDIR) $(DEPDIRS)
SUNOBJS = hw/sunLynx/sunLyInit.o
SUNLIBS = hw/sunLynx/libsun.a CFB8Libs
ServerTarget(Xsun,$(SUNDIRS),$(SUNOBJS), \
	$(SUNLIBS),$(FONTLIBS) $(SYSLIBS))
#ifndef ServerToInstall
#define ServerToInstall Xsun
#endif
#endif /* XsunLynxServer */


#if defined(XsunLynxMonoServer) && XsunLynxMonoServer
XCOMM
XCOMM Sun monochrome server for LynxOS microSPARC 2.4.0
XCOMM
MFBSUBDIR = mfb
LYNXDDXDIR = hw/sunLynx
SUNMDIRS = $(STDDIRS) $(MFBDIR) $(LYNXDDXDIR) $(DEPDIRS)
SUNMOBJS = hw/sunLynx/sunInitMono.o hw/sunLynx/sunInExMono.o
SUNMLIBS = hw/sunLynx/libsun.a MFBBareLibs $(OTHEREXTS)
ServerTarget(XsunMono,$(SUNMDIRS),$(SUNMOBJS), \
	$(SUNMLIBS),$(FONTLIBS) $(SYSLIBS))
#ifndef ServerToInstall
#define ServerToInstall XsunMono
#endif
#endif /* XsunLynxMonoServer */


#if HasParallelMake
XCOMM
XCOMM force non-parallel build of XF86 servers to prevent MUTEX overrides
XCOMM
#if defined(XF86Server) && XF86Server
XF86SERVER = XFree86
#endif
#if defined(XnestServer) && XnestServer
XNEST = Xnest
#endif
#if defined(XVirtualFramebufferServer) && XVirtualFramebufferServer
XVFB = Xvfb
#endif
#if defined(XdmxServer) && XdmxServer
XDMX = Xdmx
#endif
#if defined(XWinServer) && XWinServer && !MakeDllModules
XWIN = XWin
#endif
#if (defined(XF86Server) && XF86Server) || \
    (defined(XnestServer) && XnestServer) || \
    (defined(XVirtualFramebufferServer) && XVirtualFramebufferServer) || \
    (defined(XdmxServer) && XdmxServer) || \
    (!MakeDllModules && defined(XWinServer) && XWinServer)
MakeMutex($(XF86SERVER) $(XNEST) $(XVFB) $(XDMX) $(XWIN))
#endif
MakeMutex($(STDDIRS) mfb fb cfb cfb16 cfb24 cfb32)
#endif


#if defined(XF86Server) && XF86Server
XCOMM
XCOMM XFree86 Server
XCOMM
FBSUBDIR = fb
MFBSUBDIR  = mfb
CFB8SUBDIR = cfb
CFB16SUBDIR = cfb16
CFB24SUBDIR = cfb24
CFB32SUBDIR = cfb32
#ifdef OS2Architecture
SERVERDEFFILE = XFree86.def
XNESTDEFFILE = Xnest.def
XVFBDEFFILE = Xvfb.def
XDMXDEFFILE = Xdmx.def
#endif
#if XF86AFB
AFBSUBDIR = afb
#endif
XFREE86DDXDIR  = hw/xfree86
XF86SERVERSUBDIRS = $(STDDIRS) $(MFBDIR) $(FBDIR) $(AFBDIR) \
		    $(CFB8DIR) $(CFB16DIR) $(CFB24DIR) $(CFB32DIR) \
		    $(SHADOWDIR) $(LAYERDIR) $(XFREE86DDXDIR) $(DEPDIRS)
XF86INIT   = $(XF86COMSRC)/xf86Init.o $(XF86COMSRC)/xf86IniExt.o
XF86COMLIB = $(XF86COMSRC)/LibraryTargetName(xf86)
XF86PARSLIB= $(XF86PARSERSRC)/LibraryTargetName(xf86config)
XF86OSLIB  = $(XF86OSSRC)/LibraryTargetName(xf86_os)
#if XF86XAA
XF86XAALIB = $(XF86SRC)/xaa/LibraryTargetName(xaa)
#endif
#if XF86VgaHw
XF86VGAHWLIB = $(XF86SRC)/vgahw/LibraryTargetName(vgahw)
#endif
#if XF86FBDevHw
XF86FBDEVHWLIB = $(XF86SRC)/fbdevhw/LibraryTargetName(fbdevhw)
#endif
#if XF1Bpp || XF4Bpp
XF1BPPLIB = $(XF86SRC)/xf1bpp/LibraryTargetName(xf1bpp)
#endif
#if XF4Bpp
XF4BPPLIB = $(XF86SRC)/xf4bpp/LibraryTargetName(xf4bpp)
#endif
#if XF8_32Wid
XF8_32WIDLIB = $(XF86SRC)/xf8_32wid/LibraryTargetName(xf8_32wid)
#endif
#if XF8_32Bpp
XF8_32BPPLIB = $(XF86SRC)/xf8_32bpp/LibraryTargetName(xf8_32bpp)
#endif
#if XF8_16Bpp
XF8_16BPPLIB = $(XF86SRC)/xf8_16bpp/LibraryTargetName(xf8_16bpp)
#endif
#if XF24_32Bpp
XF24_32BPPLIB = $(XF86SRC)/xf24_32bpp/LibraryTargetName(xf24_32bpp)
#endif
#if XFShadowFB
XFSHADOWFBLIB = $(XF86SRC)/shadowfb/LibraryTargetName(shadowfb)
#endif
#if XF86AFB
AFBLIB = afb/LibraryTargetName(afb)
#endif
XF86DRIVERLIB = $(XF86SRC)/drivers/LibraryTargetName(driver)
#if XF86Ramdac
XF86RAMDACLIB = $(XF86SRC)/ramdac/LibraryTargetName(ramdac)
#endif
#if XF86I2C
XF86I2CLIB = $(XF86SRC)/i2c/LibraryTargetName(i2c)
#endif
#if XF86DDC
XF86DDCLIB = $(XF86SRC)/ddc/LibraryTargetName(ddc)
#endif
#if XF86VBE
XF86VBELIB = $(XF86SRC)/vbe/LibraryTargetName(vbe)
#endif
#if XF86RAC
XF86RACLIB = $(XF86SRC)/rac/LibraryTargetName(rac)
#endif
#if XF86INT10_BUILD > X86EMU_GENERIC
XF86INT10LIB = $(XF86OSSRC)/LibraryTargetName(int10)
#else
XF86INT10LIB = $(XF86SRC)/int10/LibraryTargetName(int10)
#endif
#if UseMemLeak
MEMDEBUGLIB = $(TOP)/util/memleak/LibraryTargetName(memleak)
#endif
XF86IDRIVERLIB = $(XF86SRC)/input/LibraryTargetName(idriver)
#if !DoLoadableServer
XF86DRVOBJS = $(XF86SRC)/drivers/drvConf.o
XF86DRVLIBS = $(XF86DRIVERLIB) $(XF86RAMDACLIB) $(XF86DDCLIB) $(XF86I2CLIB) \
              $(XF86XAALIB) $(XF86VGAHWLIB) $(XF86FBDEVHWLIB) \
	      $(XF8_32WIDLIB) $(XF8_32BPPLIB) \
	      $(XF8_16BPPLIB) $(XF24_32BPPLIB) \
	      $(XF4BPPLIB) $(XF1BPPLIB) $(XFSHADOWFBLIB) $(AFBLIB)
XF86IDRVOBJS = $(XF86SRC)/input/drvConf.o
XF86IDRVLIBS = $(XF86IDRIVERLIB)
XF86SCANLIB = $(XF86SRC)/scanpci/LibraryTargetName(scanpci)
XF86LIBS  = $(MEMDEBUGLIB) $(XF86INIT) $(XF86COMLIB) $(XF86RACLIB) \
	    $(XF86PARSLIB) $(XF86VBELIB) $(XF86OSLIB) $(XF86INT10LIB) 
#else
XF86LIBS  = $(MEMDEBUGLIB) $(XF86INIT) $(XF86COMLIB) \
	    $(XF86PARSLIB) $(XF86OSLIB) 
#endif
#if DoLoadableServer
XF86LOADERLIB = $(XF86SRC)/loader/LibraryTargetName(loader)
XF86MAINLIBS = PreFbLibsNoFont \
	       $(FONTBASE) $(XF86COMLIB) \
	       NoMfbBarePostFbLibs $(XF86EXTENSIONS)
XF86SERVERSYSLIBS = $(XPFBLIBS) $(SYSLIBS) $(LIBDL) $(LIBREGEX)
XF86SERVERLIBS = $(XF86DRVLIBS) $(XF86IDRVLIBS) $(XF86LIBS) $(XF86LOADERLIB) \
		 $(XF86COMLIB) $(XF86MAINLIBS) $(XF86SCANLIB) $(XF86OSLIB)
#else
XF86MAINLIBS = MiExtLibs BareAllFBLibs $(XF86EXTENSIONS) $(XF86COMLIB) $(MI)
XF86SERVERSYSLIBS = $(FONTLIBS) $(SYSLIBS) $(LIBDL) $(LIBREGEX)
XF86SERVERLIBS = $(XF86DRVLIBS) $(XF86IDRVLIBS) $(XF86LIBS) $(XF86LOADERLIB) \
		 $(XF86COMLIB) $(XF86MAINLIBS) $(XF86SCANLIB) $(XF86OSLIB) \
		 $(XF86DDCLIB)
#endif
XF86SERVEROBJS = $(XF86XKBOBJS) $(XF86DRVOBJS) $(XF86IDRVOBJS)
#if HasParallelMake
MakeMutex($(XF86SERVERSUBDIRS) $(XF86SERVERLIBS) $(XF86SERVERSYSLIBS))
#endif
#if ForceServerRemake
$(XF86SERVERLIBS) $(XF86SERVERSYSLIBS):: $(XF86SERVERSUBDIRS)
	@if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi
#endif
SetUIDServerTarget(XFree86,$(XF86SERVERSUBDIRS),$(XF86SERVEROBJS) $(SERVERDEFFILE), \
	$(XF86SERVERLIBS),$(XF86SERVERSYSLIBS))
#if DoLoadableServer
ServerDriverSDKTarget(XFree86)
#endif
#ifndef ServerToInstall
#define ServerToInstall XFree86
#endif
#endif        /* XF86Server */

#if defined(XalphaNetBSDServer) && XalphaNetBSDServer
XCOMM
XCOMM NetBSD/Alpha server
XCOMM
MFBSUBDIR   = mfb
CFB8SUBDIR  = cfb
CFB32SUBDIR = cfb32
ANBDDXDIR  = hw/netbsd/alpha
ANBDIRS = $(STDDIRS) $(MFBDIR) $(CFB8DIR) $(CFB32DIR) $(ANBDDXDIR) $(DEPDIRS)
ANBOBJS = hw/netbsd/alpha/alphaInit.o hw/netbsd/alpha/stubs.o
ANBLIBS = hw/netbsd/alpha/tga/libalphaTga.a hw/netbsd/alpha/sfb/libalphaSfb.a \
	  hw/netbsd/alpha/libalpha.a CFB32Libs CFB8Libs
SetUIDServerTarget(XalphaNetBSD,$(ANBDIRS),$(ANBOBJS), \
	$(LIBCWAPPER) $(ANBLIBS), \
	$(FONTLIBS) $(SYSLIBS))
#ifndef ServerToInstall
#define ServerToInstall XalphaNetBSD
#endif
#endif /* XalphaNetBSDServer */

#if defined(XdecNetBSDServer) && XdecNetBSDServer
XCOMM
XCOMM NetBSD/alpha and NetBSD/pmax server
XCOMM
MFBSUBDIR   = mfb
CFB8SUBDIR  = cfb
CFB32SUBDIR = cfb32
DNBDDXDIR  = hw/netbsd/dec
DNBDIRS = $(STDDIRS) $(MFBDIR) $(CFB8DIR) $(CFB32DIR) $(DNBDDXDIR) $(DEPDIRS)
DNBOBJS = hw/netbsd/dec/decInit.o hw/netbsd/dec/stubs.o
DNBLIBS = hw/netbsd/dec/sfb/libdecSfb.a hw/netbsd/dec/px/libdecPX.a \
	  hw/netbsd/dec/cfb/libdecCfb.a hw/netbsd/dec/mfb/libdecMfb.a
#if defined(AlphaArchitecture)
DNBLIBS += hw/netbsd/dec/tga/libdecTga.a
#endif
DNBLIBS += hw/netbsd/dec/libdec.a CFB32Libs CFB8Libs
SetUIDServerTarget(XdecNetBSD,$(DNBDIRS),$(DNBOBJS), \
	$(LIBCWAPPER) $(DNBLIBS), \
	$(FONTLIBS) $(SYSLIBS))
#ifndef ServerToInstall
#define ServerToInstall XdecNetBSD
#endif
#endif /* XdecNetBSDServer */

#if defined(XdreamcastServer) && XdreamcastServer
XCOMM
XCOMM NetBSD/dreamcast server
XCOMM
MFBSUBDIR  = mfb
CFB8SUBDIR = cfb
CFB16SUBDIR = cfb16
DREAMCASTDDXDIR = hw/netbsd/dreamcast
DREAMCASTDIRS = $(STDDIRS) $(MFBDIR) $(CFB8DIR) $(CFB16DIR) \
		$(DREAMCASTDDXDIR) $(DEPDIRS)
DREAMCASTLIBS = hw/netbsd/dreamcast/libdreamcast.a CFB8Libs CFB16Libs
SetUIDServerTarget(Xdreamcast,$(DREAMCASTDIRS),$(DREAMCASTOBJS), \
	$(DREAMCASTLIBS) $(LOADABLEEXTS) $(LIBCWRAPPER), \
	$(DREAMCASTLIBS) $(LOADABLEEXTS) $(FONTLIBS) $(SYSLIBS))
#ifndef ServerToInstall
#define ServerToInstall Xdreamcast
#endif
#endif /* XdreamcastServer */

#if defined(Xews4800mipsServer) && Xews4800mipsServer
XCOMM
XCOMM NetBSD/ews4800mips server
XCOMM
MFBSUBDIR  = mfb
CFB8SUBDIR = cfb
EWS4800MIPSDDXDIR = hw/netbsd/ews4800mips
EWS4800MIPSDIRS = $(STDDIRS) $(MFBDIR) $(CFB8DIR) \
		  $(EWS4800MIPSDDXDIR) $(DEPDIRS)
EWS4800MIPSLIBS = hw/netbsd/ews4800mips/libdreamcast.a CFB8Libs
SetUIDServerTarget(Xews4800mips,$(EWS4800MIPSDIRS),$(EWS4800MIPSOBJS), \
	$(EWS4800MIPSLIBS) $(LOADABLEEXTS) $(LIBCWRAPPER), \
	$(EWS4800MIPSLIBS) $(LOADABLEEXTS) $(FONTLIBS) $(SYSLIBS))
#ifndef ServerToInstall
#define ServerToInstall Xews4800mips
#endif
#endif /* Xews4800mipsServer */

#if defined(XhpcServer) && XhpcServer
XCOMM
XCOMM NetBSD/hpcmips server
XCOMM
MFBSUBDIR  = mfb
CFB8SUBDIR = cfb
CFB16SUBDIR = cfb16
HPCDDXDIR = hw/netbsd/hpc
HPCDIRS = $(STDDIRS) $(MFBDIR) $(CFB8DIR) $(CFB16DIR) $(HPCDDXDIR) $(DEPDIRS)
HPCLIBS = hw/netbsd/hpc/libhpc.a CFB8Libs CFB16Libs
SetUIDServerTarget(Xhpc,$(HPCDIRS),$(HPCOBJS), \
	$(HPCLIBS) $(LOADABLEEXTS) $(LIBCWRAPPER), \
	$(HPCLIBS) $(LOADABLEEXTS) $(FONTLIBS) $(SYSLIBS))
#ifndef ServerToInstall
#define ServerToInstall Xhpc
#endif
#endif /* XhpcServer */

#if defined(XmacppcServer) && XmacppcServer
XCOMM
XCOMM NetBSD/macppc server
XCOMM
MFBSUBDIR   = mfb
CFB8SUBDIR  = cfb
MACPPCDDXDIR  = hw/netbsd/macppc
MACPPCDIRS = $(STDDIRS) $(MFBDIR) $(CFB8DIR) $(MACPPCDDXDIR) $(DEPDIRS)
MACPPCOBJS = hw/netbsd/macppc/macppcInit.o
MACPPCLIBS = hw/netbsd/macppc/libmacppc.a CFB8Libs
ServerTarget(Xmacppc,$(MACPPCDIRS),$(MACPPCOBJS), \
	$(MACPPCLIBS) $(LOADABLEEXTS) $(LIBCWRAPPER), \
	$(MACPPCLIBS) $(LOADABLEEXTS) $(FONTLIBS) $(SYSLIBS))
#ifndef ServerToInstall
#define ServerToInstall Xmacppc
#endif
#endif /* XmacppcServer */

#if defined(X68kServer) && X68kServer
XCOMM
XCOMM NetBSD/x68k server
XCOMM
MFBSUBDIR   = mfb
CFB8SUBDIR  = cfb
CFB16SUBDIR = cfb16
X68DDXDIR = hw/netbsd/x68k
X68DIRS = $(STDDIRS) $(MFBDIR) $(CFB8DIR) $(CFB16DIR) $(X68DDXDIR) $(DEPDIRS)
X68OBJS = hw/netbsd/x68k/x68kInit.o
X68LIBS = hw/netbsd/x68k/libx68k.a CFB16Libs CFB8Libs $(OTHEREXTS)
SetUIDServerTarget(X68k,$(X68DIRS),$(X68OBJS),$(X68LIBS),$(SYSLIBS))
#ifndef ServerToInstall
#define ServerToInstall X68k
#endif
#endif /* X68kServer */


#if defined(TinyXServer) && TinyXServer
XCOMM
XCOMM Tiny X server section
XCOMM

      TINYXDIR = hw/tinyx
#if HasTsLib
    TINYXTSLIB = -lts
#endif
#ifdef LinuxArchitecture
    TINYXOSDIR = $(TINYXDIR)/linux
      TINYXOS = $(TINYXOSDIR)/LibraryTargetName(linux) $(TINYXTSLIB)
#endif

#ifdef VXWORKS
    TINYXOSDIR = $(TINYXDIR)/vxworks
       TINYXOS = $(TINYXOSDIR)/LibraryTargetName(vxworks)
#endif

      FBSUBDIR = fb
         TINYX = $(TINYXDIR)/LibraryTargetName(tinyx)
    TINYXFBDEV = $(TINYXDIR)/fbdev/LibraryTargetName(fbdev)


#define StdTinyxDirs $(TINYXDIR) $(TINYXOSDIR) $(DEPDIRS)
#define StdTinyxSysLibs $(TINY_FONTLIBS) $(SYSLIBS)
#define TinyxLibs $(TINYX) $(TINYXOS) MiExtLibs
#define TinyxObjs $(TINYXDIR)/miinitext.o $(TINYXDIR)/register.o $(TINYXDIR)/ffcheck.o $(TINYXDIR)/stubs.o os/tiny/lbxio.o

#if defined(XfbdevServer) && XfbdevServer
XCOMM
XCOMM server with TinyX fbdev driver only
XCOMM

    FBDEVDIR = $(TINYXDIR)/fbdev
       FBDEV = $(FBDEVDIR)/LibraryTargetName(fbdev)
       
   TINYXDIRS = StdTinyxDirs

   FBDEVDIRS = $(STDDIRS) $(TINYXDIRS) $(FBDEVDIR) $(SHADOWDIR) $(LAYERDIR)
   
   FBDEVLIBS = TinyPreFbLibs $(FBDEV) $(LAYER) TinyxLibs TinyFbPostFbLibs
   FBDEVOBJS = TinyxObjs
FBDEVSYSLIBS = StdTinyxSysLibs

#if HasParallelMake
MakeMutex($(FBDEVDIRS) $(FBDEVOBJS) $(FBDEVLIBS) $(FBDEVSYSLIBS))
#endif
#if ForceServerRemake
$(FBDEVOBJS) $(XFBDEV) $(FBDEVLIBS) $(FBDEVSYSLIBS):: $(FBDEVDIRS)
	@if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi
#endif
ServerTarget(Xfbdev,$(FBDEVDIRS),$(FBDEVOBJS), \
	$(FBDEVLIBS),$(FBDEVSYSLIBS))
#endif /* XfbdevServer */

#if defined(XSavageServer) && XSavageServer
XCOMM
XCOMM server with TinyX S3 Savage driver
XCOMM

    SAVAGEDIR = $(TINYXDIR)/savage
       SAVAGE = $(SAVAGEDIR)/LibraryTargetName(savage)
    
    TINYXDIRS = StdTinyxDirs
   
   SAVAGEDIRS = $(STDDIRS) $(TINYXDIRS) $(SAVAGEDIR)
   
   SAVAGEOBJS = TinyxObjs
   SAVAGELIBS = TinyPreFbLibs $(SAVAGE) TinyxLibs TinyFbPostFbLibs
SAVAGESYSLIBS = StdTinyxSysLibs

#if HasParallelMake
MakeMutex($(SAVAGEDIRS) $(SAVAGEOBJS) $(SAVAGELIBS) $(SAVAGESYSLIBS))
#endif
#if ForceServerRemake
$(SAVAGEOBJS) $(XSAVAGE) $(SAVAGELIBS) $(SAVAGESYSLIBS):: $(SAVAGEDIRS)
	@if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi
#endif
ServerTarget(Xsavage,$(SAVAGEDIRS),$(SAVAGEOBJS), \
	$(SAVAGELIBS),$(SAVAGESYSLIBS))
#endif /* XSavageServer */

#if defined(XIgsServer) && XIgsServer
XCOMM
XCOMM server with TinyX S3 Igs driver
XCOMM

       IGSDIR = $(TINYXDIR)/igs
          IGS = $(IGSDIR)/LibraryTargetName(igs)
    
    TINYXDIRS = StdTinyxDirs
   
      IGSDIRS = $(STDDIRS) $(TINYXDIRS) $(IGSDIR)
   
      IGSOBJS = TinyxObjs
      IGSLIBS = TinyPreFbLibs $(IGS) TinyxLibs TinyFbPostFbLibs
   IGSSYSLIBS = StdTinyxSysLibs

#if HasParallelMake
MakeMutex($(IGSDIRS) $(IGSOBJS) $(IGSLIBS) $(IGSSYSLIBS))
#endif
#if ForceServerRemake
$(IGSOBJS) $(XIGS) $(IGSLIBS) $(IGSSYSLIBS):: $(IGSDIRS)
	@if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi
#endif
ServerTarget(Xigs,$(IGSDIRS),$(IGSOBJS), \
	$(IGSLIBS),$(IGSSYSLIBS))
#endif /* XIgsServer */

#if defined(XTridentServer) && XTridentServer
XCOMM
XCOMM server with TinyX TRIDENT Cyber9525 driver
XCOMM

      FBDEVDIR = $(TINYXDIR)/fbdev
         FBDEV = $(FBDEVDIR)/LibraryTargetName(fbdev)
       VESADIR = $(TINYXDIR)/vesa
          VESA = $(VESADIR)/LibraryTargetName(vesa)
    TRIDENTDIR = $(TINYXDIR)/trident
       TRIDENT = $(TRIDENTDIR)/LibraryTargetName(trident)

     TINYXDIRS = StdTinyxDirs
  
   TRIDENTDIRS = $(STDDIRS) $(TINYXDIRS) \
		 $(FBDEVDIR) $(VESADIR) $(SHADOWDIR) $(LAYERDIR) $(TRIDENTDIR)
   
   TRIDENTOBJS = TinyxObjs
   TRIDENTLIBS = TinyPreFbLibs $(TRIDENT) $(FBDEV) $(VESA) $(LAYER) \
		 TinyxLibs TinyFbPostFbLibs
TRIDENTSYSLIBS = StdTinyxSysLibs

#if HasParallelMake
MakeMutex($(TRIDENTDIRS) $(TRIDENTLIBS) $(TRIDENTSYSLIBS))
#endif
#if ForceServerRemake
$(TRIDENTOBJS) $(TRIDENTLIBS) $(TRIDENTSYSLIBS):: $(TRIDENTDIRS)
	@if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi
#endif
ServerTarget(Xtrident,$(TRIDENTDIRS),$(TRIDENTOBJS), \
	$(TRIDENTLIBS),$(TRIDENTSYSLIBS))
#endif /* XTridentServer */

#if defined(XchipsServer) && XchipsServer
XCOMM
XCOMM server with TinyX C&T driver
XCOMM

       VESADIR = $(TINYXDIR)/vesa
          VESA = $(VESADIR)/LibraryTargetName(vesa)
      CHIPSDIR = $(TINYXDIR)/chips
         CHIPS = $(CHIPSDIR)/LibraryTargetName(chips)

     TINYXDIRS = StdTinyxDirs
  
   CHIPSDIRS = $(STDDIRS) $(TINYXDIRS) \
		 $(FBDEVDIR) $(VESADIR) $(SHADOWDIR) $(LAYERDIR) $(CHIPSDIR)
   
   CHIPSOBJS = TinyxObjs
   CHIPSLIBS = TinyPreFbLibs $(CHIPS) $(VESA) $(LAYER) TinyxLibs TinyFbPostFbLibs
CHIPSSYSLIBS = StdTinyxSysLibs

#if HasParallelMake
MakeMutex($(CHIPSDIRS) $(CHIPSLIBS) $(CHIPSSYSLIBS))
#endif
#if ForceServerRemake
$(CHIPSOBJS) $(CHIPSLIBS) $(CHIPSSYSLIBS):: $(CHIPSDIRS)
	@if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi
#endif
ServerTarget(Xchips,$(CHIPSDIRS),$(CHIPSOBJS), \
	$(CHIPSLIBS),$(CHIPSSYSLIBS))
#endif /* XchipsServer */

#if defined(Xmach64Server) && Xmach64Server
XCOMM
XCOMM server with TinyX Mach64 driver (for Mobility 1 machines)
XCOMM

       VESADIR = $(TINYXDIR)/vesa
          VESA = $(VESADIR)/LibraryTargetName(vesa)
     MACH64DIR = $(TINYXDIR)/mach64
        MACH64 = $(MACH64DIR)/LibraryTargetName(mach64)

     TINYXDIRS = StdTinyxDirs
  
   MACH64DIRS = $(STDDIRS) $(TINYXDIRS) \
		 $(VESADIR) $(SHADOWDIR) $(LAYERDIR) $(MACH64DIR)
   
   MACH64OBJS = TinyxObjs
   MACH64LIBS = TinyPreFbLibs $(MACH64) $(VESA) $(LAYER) TinyxLibs TinyFbPostFbLibs
MACH64SYSLIBS = StdTinyxSysLibs

#if HasParallelMake
MakeMutex($(MACH64DIRS) $(MACH64LIBS) $(MACH64SYSLIBS))
#endif
#if ForceServerRemake
$(MACH64OBJS) $(MACH64LIBS) $(MACH64SYSLIBS):: $(MACH64DIRS)
	@if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi
#endif
ServerTarget(Xmach64,$(MACH64DIRS),$(MACH64OBJS), \
	$(MACH64LIBS),$(MACH64SYSLIBS))
#endif /* Xmach64Server */

#if defined(Xi810Server) && Xi810Server
XCOMM
XCOMM server with Intel i810 driver
XCOMM

      FBDEVDIR = $(TINYXDIR)/fbdev
         FBDEV = $(FBDEVDIR)/LibraryTargetName(fbdev)
       VESADIR = $(TINYXDIR)/vesa
          VESA = $(VESADIR)/LibraryTargetName(vesa)
       I810DIR = $(TINYXDIR)/i810
          I810 = $(I810DIR)/LibraryTargetName(i810)

     TINYXDIRS = StdTinyxDirs
  
      I810DIRS = $(STDDIRS) $(TINYXDIRS) $(SHADOWDIR) $(I810DIR)
   
     I810OBJS = TinyxObjs
      I810LIBS = TinyPreFbLibs $(I810) TinyxLibs TinyFbPostFbLibs
   I810SYSLIBS = StdTinyxSysLibs

#if HasParallelMake
MakeMutex($(I810DIRS) $(I810LIBS) $(I810SYSLIBS))
#endif
#if ForceServerRemake
$(I810OBJS) $(I810LIBS) $(I810SYSLIBS):: $(I810DIRS)
	@if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi
#endif
ServerTarget(Xi810,$(I810DIRS),$(I810OBJS), \
	$(I810LIBS),$(I810SYSLIBS))
#endif /* Xi810Server */


#if defined(XSis530Server) && XSis530Server
XCOMM
XCOMM server with TinyX SiS 530 driver
XCOMM

    SIS530DIR = $(TINYXDIR)/sis530
       SIS530 = $(SIS530DIR)/LibraryTargetName(sis530)

    TINYXDIRS = StdTinyxDirs

   SIS530DIRS = $(STDDIRS) $(TINYXDIRS) $(SIS530DIR)
   
   SIS530OBJS = TinyxObjs
   SIS530LIBS = TinyPreFbLibs $(SIS530) TinyxLibs TinyFbPostFbLibs
SIS530SYSLIBS = StdTinyxSysLibs

#if HasParallelMake
MakeMutex($(SIS530DIRS) $(SIS530OBJS) $(SIS530LIBS) $(SIS530SYSLIBS))
#endif
#if ForceServerRemake
$(SIS530OBJS) $(SIS530LIBS) $(SIS530SYSLIBS):: $(SIS530DIRS)
	@if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi
#endif
ServerTarget(Xsis530,$(SIS530DIRS),$(SIS530OBJS), \
	$(SIS530LIBS),$(SIS530SYSLIBS))
#endif /* XSis530Server */

#if defined(XTrioServer) && XTrioServer
XCOMM
XCOMM server with TinyX S3 Trio driver
XCOMM

    TRIODIR = $(TINYXDIR)/trio
       TRIO = $(TRIODIR)/LibraryTargetName(trio)

  TINYXDIRS = StdTinyxDirs

   TRIODIRS = $(STDDIRS) $(TINYXDIRS) $(TRIODIR)
   
   TRIOOBJS = TinyxObjs
   TRIOLIBS = TinyPreFbLibs $(TRIO) TinyxLibs TinyFbPostFbLibs
TRIOSYSLIBS = StdTinyxSysLibs

#if HasParallelMake
MakeMutex($(TRIODIRS) $(TRIOOBJS) $(TRIOLIBS) $(TRIOSYSLIBS))
#endif
#if ForceServerRemake
$(TRIOOBJS) $(TRIOLIBS) $(TRIOSYSLIBS):: $(TRIODIRS)
	@if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi
#endif
ServerTarget(Xtrio,$(TRIODIRS),$(TRIOOBJS), \
	$(TRIOLIBS),$(TRIOSYSLIBS))
#endif /* XTrioServer */

#if defined(XipaqServer) && XipaqServer
XCOMM
XCOMM server with Alan's HP VGA Out PCMCIA driver & fbdev
XCOMM

     FBDEVDIR = $(TINYXDIR)/fbdev
        FBDEV = $(FBDEVDIR)/LibraryTargetName(fbdev)

    PCMCIADIR = $(TINYXDIR)/pcmcia
       PCMCIA = $(PCMCIADIR)/LibraryTargetName(pcmcia)

      IPAQDIR = $(TINYXDIR)/ipaq
         IPAQ = $(IPAQDIR)/LibraryTargetName(ipaq)

    TINYXDIRS = StdTinyxDirs
     
     IPAQDIRS = $(STDDIRS) $(TINYXDIRS) $(FBDEVDIR) $(LAYERDIR) $(SHADOWDIR) $(PCMCIADIR) $(IPAQDIR)
    
     IPAQOBJS = TinyxObjs
     IPAQLIBS = TinyPreFbLibs $(IPAQ) $(FBDEV) $(LAYER) $(SHADOW) \
		$(PCMCIA) TinyxLibs TinyFbPostFbLibs
  IPAQSYSLIBS = StdTinyxSysLibs
    
#if HasParallelMake
MakeMutex($(IPAQDIRS) $(IPAQOBJS) $(IPAQLIBS) $(IPAQSYSLIBS))
#endif
#if ForceServerRemake
$(IPAQOBJS) $(IPAQLIBS) $(IPAQSYSLIBS):: $(IPAQDIRS)
	@if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi
#endif
ServerTarget(Xipaq,$(IPAQDIRS),$(IPAQOBJS), \
	$(IPAQLIBS),$(IPAQSYSLIBS))
#endif /* XIPAQServer */

#if defined(XTS300Server) && XTS300Server
XCOMM
XCOMM server with TinyX S3 Trio and SiS530 driver for the TS300/TS400
XCOMM

      TRIODIR = $(TINYXDIR)/trio
         TRIO = $(TRIODIR)/LibraryTargetName(trio)
	 
    SIS530DIR = $(TINYXDIR)/sis530
       SIS530 = $(SIS530DIR)/LibraryTargetName(sis530)

     TS300DIR = $(TINYXDIR)/ts300
        TS300 = $(TS300DIR)/LibraryTargetName(ts300)

    TINYXDIRS = StdTinyxDirs
     
    TS300DIRS = $(STDDIRS) $(TINYXDIRS) $(TRIODIR) $(SIS530DIR) $(TS300DIR)
    
    TS300OBJS = TinyxObjs
    TS300LIBS = TinyPreFbLibs $(TS300) $(TRIO) $(SIS530) TinyxLibs TinyFbPostFbLibs
 TS300SYSLIBS = StdTinyxSysLibs
    
#if HasParallelMake
MakeMutex($(TS300DIRS) $(TS300OBJS) $(TS300LIBS) $(TS300SYSLIBS))
#endif
#if ForceServerRemake
$(TS300OBJS) $(TS300LIBS) $(TS300SYSLIBS):: $(TS300DIRS)
	@if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi
#endif
ServerTarget(Xts300,$(TS300DIRS),$(TS300OBJS), \
	$(TS300LIBS),$(TS300SYSLIBS))
#endif /* XTS300Server */

#if defined(XItsyServer) && XItsyServer
XCOMM
XCOMM server with TinyX FB driver only
XCOMM
    ITSYDIR = $(TINYXDIR)/itsy
       ITSY = $(ITSYDIR)/LibraryTargetName(itsy)

  TINYXDIRS = StdTinyxDirs

   ITSYDIRS = $(STDDIRS) $(TINYXDIRS) $(ITSYDIR)
   
   ITSYOBJS = TinyxObjs
   ITSYLIBS = TinyPreFbLibs $(ITSY) TinyxLibs TinyFbPostFbLibs
ITSYSYSLIBS = StdTinyxSysLibs
   
#if HasParallelMake
MakeMutex($(ITSYDIRS) $(ITSYOBJS) $(ITSYLIBS) $(ITSYSYSLIBS))
#endif
#if ForceServerRemake
$(ITSYOBJS) $(ITSYLIBS) $(ITSYSYSLIBS):: $(ITSYDIRS)
	@if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi
#endif
ServerTarget(Xitsy,$(ITSYDIRS),$(ITSYOBJS), \
	$(ITSYLIBS),$(ITSYSYSLIBS))
#endif /* XItsyServer */

#if defined(XvesaServer) && XvesaServer
XCOMM
XCOMM server with vesa driver only based on TinyX server
XCOMM

    VESADIR = $(TINYXDIR)/vesa
       VESA = $(VESADIR)/LibraryTargetName(vesa)

   TINYXDIRS = StdTinyxDirs

    VESADIRS = $(STDDIRS) $(TINYXDIRS) $(VESADIR) $(SHADOWDIR) $(LAYERDIR)

   VESAOBJS = TinyxObjs
   VESALIBS = TinyPreFbLibs $(VESA) $(LAYER) TinyxLibs TinyFbPostFbLibs
VESASYSLIBS = StdTinyxSysLibs

#if HasParallelMake
MakeMutex($(VESADIRS) $(VESAOBJS) $(VESALIBS) $(VESASYSLIBS))
#endif
#if ForceServerRemake
$(VESAOBJS) $(XVESA) $(VESALIBS) $(VESASYSLIBS):: $(VESADIRS)
	@if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi
#endif
ServerTarget(Xvesa,$(VESADIRS),$(VESAOBJS), \
	$(VESALIBS),$(VESASYSLIBS))
#endif /* XvesaServer */

TINYXSUBDIRS=$(TINYXDIRS) $(FBDEVDIR) $(SAVAGEDIR) $(TRIDENTDIR) $(I810DIR) \
	   $(SIS530DIR) $(TRIODIR) $(TS300DIR) $(ITSYDIR) $(IGSDIR) \
	   $(VESADIR) $(PCMCIADIR) $(IPAQDIR) $(MACH64DIR) $(CHIPSDIR)
#endif	/* TinyXServer */

#if defined(XprtServer) && XprtServer
XCOMM
XCOMM Print Server
XCOMM
MFBSUBDIR  = mfb
CFB8SUBDIR = cfb
CFB32SUBDIR = cfb32
XPSUBDIRS = $(STDDIRS) $(MFBDIR) $(CFB8DIR) $(CFB32DIR) $(DEPDIRS)
#if PrintOnlyServer
#if BuildDPMS
XPDPMSSTUBOBJS = Xprint/dpmsstubs.o
#endif
XPOBJS = Xprint/ddxInit.o Xprint/miinitext.o $(XPDPMSSTUBOBJS)
XPLIBS = PreFbLibs $(XPDDXLIBS) $(XPDDXFBLIBS) $(MI) $(XPEXTENSIONS)
#else
XPOBJS = Xprint/ddxInit.o
XPLIBS = PreFbLibs $(XPFBLIBS) BarePostFbLibs $(XPEXTENSIONS)
#endif
#if (defined(SunArchitecture) || defined(SparcArchitecture)) && \
    defined(SVR4Architecture)
XPSYSLIBS = $(FONT) $(CBRT) $(SYSLIBS) -lw
#else
XPSYSLIBS = $(FONT) $(CBRT) $(SYSLIBS)
#endif
#if HasParallelMake
MakeMutex($(XPSUBDIRS) $(XPOBJS) $(XPLIBS) $(XPSYSLIBS))
#endif
#if ForceServerRemake
$(XPOBJS) $(XPLIBS) $(XPSYSLIBS):: $(XPSUBDIRS)
	@if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi
#endif
ServerTarget(Xprt,$(XPSUBDIRS),$(XPOBJS), \
	$(XPLIBS),$(XPSYSLIBS))
#endif	/* XprtServer */

#if defined(XnestServer) && XnestServer
XCOMM
XCOMM Server with Xlib-based ddx
XCOMM
#ifndef Win32Architecture
XNESTDDXDIR = hw/xnest
#else
XNESTDDXDIR = hw
#endif
XNESTDIRS = $(STDDIRS) $(XNESTDDXDIR) $(DEPDIRS)
#if !defined(LynxOSArchitecture) && \
    !defined(Win32Architecture) && \
    !defined(QNX4Architecture)
XNESTOBJS = hw/xnest/miinitext.o
#else
XNESTOBJS = hw/xnest/miinitext.o dix/main.o
#endif
XNEST = hw/xnest/LibraryTargetName(xnest)
XNESTLIBS = PreFbLibs $(XNEST) NoMfbPostFbLibs $(XNEST)
XNESTSYSLIBS = $(FONTLIBS) $(LDPRELIBS) $(XLIB) $(NOAUTH_SYSLIBS)
#if HasParallelMake
MakeMutex($(XNESTDIRS) $(XNESTOBJS) $(XNESTLIBS) $(XNESTSYSLIBS))
#endif
#if ForceServerRemake
$(XNESTOBJS) $(XNESTLIBS) $(XNESTSYSLIBS):: $(XNESTDIRS)
	@if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi
#endif
ServerTarget(Xnest,$(XNESTDIRS),$(XNESTOBJS) $(XNESTDEFFILE), \
	$(XNESTLIBS),$(XNESTSYSLIBS))
#endif /* XnestServer */


#if defined(XnonServer) && XnonServer
XCOMM
XCOMM non server, just compile sources for build test
XCOMM
MFBSUBDIR   = mfb
CFB8SUBDIR  = cfb
CFB16SUBDIR = cfb16
CFB32SUBDIR = cfb32
#if HasParallelMake
MakeMutex($(STDDIRS) $(MFBDIR) $(CFB8DIR) $(CFB16DIR) $(CFB32DIR) $(DEPDIRS))
#endif
Xnon: $(STDDIRS) $(MFBDIR) $(CFB8DIR) $(CFB16DIR) $(CFB32DIR) $(DEPDIRS)
#endif /* XnonServer */


#if defined(XvaxMonoServer) && XvaxMonoServer
XCOMM
XCOMM NetBSD/vax Monochrome server
XCOMM
MFBSUBDIR  = mfb
VAXDDXDIR = hw/netbsd/vax
VAXDIRS = $(STDDIRS) $(MFBDIR) $(VAXDDXDIR) $(DEPDIRS)
VAXOBJS = hw/netbsd/vax/init.o hw/netbsd/vax/mono_io.o hw/netbsd/vax/lk201.o
VAXLIBS = MFBLibs
ServerTarget(Xmono,$(VAXDIRS),$(VAXOBJS),$(VAXLIBS),$(SYSLIBS))
#ifndef ServerToInstall
#define ServerToInstall Xmono
#endif
#endif /* XvaxMonoServer */


#if defined(XVirtualFramebufferServer) && XVirtualFramebufferServer
XCOMM
XCOMM server with Virtual (malloced) framebuffer
XCOMM
MFBSUBDIR = mfb
FBSUBDIR  = fb
#if defined(Win32Architecture)
XVFBDDXDIR = hw
#else
XVFBDDXDIR = hw/vfb
#endif
XVFBDIRS = $(STDDIRS) $(MFBDIR) $(FBDIR) $(XVFBDDXDIR) $(DEPDIRS)
#ifndef Win32Architecture
#if BuildDPMS
XVFBDPMSSTUBOBJS = $(XVFBDDXDIR)/dpmsstubs.o
#endif
XVFBOBJS = $(XVFBDDXDIR)/stubs.o $(XVFBDDXDIR)/miinitext.o $(XVFBDPMSSTUBOBJS)
#else
XVFBOBJS = dix/main.o hw/vfb/stubs.o hw/vfb/miinitext.o
#endif
XVFB = $(XVFBDDXDIR)/LibraryTargetName(vfb)
XVFBLIBS = PreFbLibs $(XVFB) $(FB) PostFbLibs
XVFBSYSLIBS = $(FONTLIBS) $(SYSLIBS)
#if HasParallelMake
MakeMutex($(XVFBDIRS) $(XVFBOBJS) $(XVFB) $(XVFBLIBS) $(XVFBSYSLIBS))
#endif
#if ForceServerRemake
$(XVFBOBJS) $(XVFB) $(XVFBLIBS) $(XVFBSYSLIBS):: $(XVFBDIRS)
	@if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi
#endif
ServerTarget(Xvfb,$(XVFBDIRS),$(XVFBOBJS) $(XVFBDEFFILE), \
	$(XVFBLIBS),$(XVFBSYSLIBS))
#endif /* XVirtualFramebufferServer */

#if defined(XdmxServer) && XdmxServer
XCOMM
XCOMM distribued multihead Server
XCOMM
#ifndef Win32Architecture
XDMXDDXDIR = hw/dmx
#else
XDMXDDXDIR = hw
#endif
FBSUBDIR = fb
XDMXDIRS = $(STDDIRS) $(XDMXDDXDIR) $(SHADOWDIR) $(DEPDIRS) $(FBDIR)
#if BuildGlxInDmx
#if BuildXinerama
GLXPROXY_EXTRAOBJS = hw/dmx/panoramiX.o
#endif
GLXPROXYLIB = hw/dmx/glxProxy/LibraryTargetName(glxProxy)
#endif
#if !defined(LynxOSArchitecture) && \
    !defined(Win32Architecture) && \
    !defined(QNX4Architecture)
XDMXOBJS = hw/dmx/miinitext.o $(GLXPROXY_EXTRAOBJS)
#else
XDMXOBJS = hw/dmx/miinitext.o $(GLXPROXY_EXTRAOBJS) dix/main.o
#endif
XDMXINPUT  = hw/dmx/input/LibraryTargetName(dmxinput)
XDMXCONFIG = hw/dmx/config/LibraryTargetName(dmxconfig)
XDMX = hw/dmx/LibraryTargetName(dmxlib) $(XDMXCONFIG) $(GLXPROXYLIB)
XDMXLIBS = PreFbLibs $(XDMX) MiExtLibs $(FB) $(MI) $(DMXEXTENSIONS) $(XDMXINPUT)
#if BuildRender
XDMXRENDERLIB = $(XRENDERLIB)
#endif
XDMXSYSLIBS = $(FONTLIBS) $(LDPRELIBS) $(XILIB) $(XMULIB) $(XDMXRENDERLIB) \
	      $(XLIB) $(NOAUTH_SYSLIBS)
#if HasParallelMake
MakeMutex($(XDMXDIRS) $(XDMXOBJS) $(XDMXLIBS) $(XDMXSYSLIBS))
#endif
#if ForceServerRemake
$(XDMXOBJS) $(XDMXLIBS) $(XDMXSYSLIBS):: $(XDMXDIRS)
	@if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi
#endif
ServerTarget(Xdmx,$(XDMXDIRS),$(XDMXOBJS) $(XDMXDEFFILE), \
       $(LIBCWRAPPER) $(XDMXLIBS),$(XDMXSYSLIBS))
#endif /* XdmxServer */

#if defined(XWinServer) && XWinServer
XCOMM
XCOMM X Server for MS Windows
XCOMM
FBSUBDIR = fb
#if 1
LAYERDIR = 
#endif
XWINDDXDIR = hw/xwin
XWINPARSERDIR = hw/xfree86/parser
XWINPARSERLIB = $(XWINPARSERDIR)/LibraryTargetName(xf86config)
XWINLIB = $(XWINDDXDIR)/LibraryTargetName(Xwin)
XWINDIRS = $(STDDIRS) $(FBDIR) $(SHADOWDIR) $(LAYERDIR) $(XWINDDXDIR) \
	   $(DEPDIRS) $(XWINPARSERDIR)
XWINOBJS = $(XWINDDXDIR)/stubs.o $(XWINDDXDIR)/XWin.res
#if 0
XWINLIBS = PreFbLibs $(XWINLIB) FbPostFbLibs $(LAYER) $(SHADOW) \
           $(XWINPARSERLIB)
#else
XWINLIBS = PreFbLibs $(XWINLIB) FbPostFbLibs $(SHADOW) \
           $(XWINPARSERLIB)
#endif
XWINSYSLIBS = $(FONTLIBS) $(LDPRELIBS) $(XLIB) $(SYSLIBS) -lgdi32

/*
 * These flags cause XWin.exe to be a Windows executable, which
 * prevents XWin.exe from opening a Command Prompt window when it is
 * started.  However, the flags also prevent XWin.exe from outputting
 * its status and error message to a Command Prompt; thus, one most
 * implement a method to redirect status and error messages to a file
 * before enabling these flags.
 */
EXTRA_LDOPTIONS = -mwindows -e _mainCRTStartup

#if HasParallelMake
MakeMutex($(XWINDIRS) $(XWINOBJS) $(XWINLIB) $(XWINLIBS) $(XWINSYSLIBS))
#endif

#if ForceServerRemake
$(XWINOBJS) $(XWINLIB) $(XWINLIBS) $(XWINSYSLIBS):: $(XWINDIRS)
	@if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi
#endif

ServerTarget(XWin,$(XWINDIRS),$(XWINOBJS), \
	     $(XWINLIBS),$(XWINSYSLIBS)) 

#ifndef ServerToInstall
#define ServerToInstall XWin
#endif

#endif /* XWinServer */


#ifdef DarwinArchitecture
/*
 * To allow building even when building the client-side libraries is turned
 * off, libraries in ProjectRoot are listed as dependencies for some targets.
 * This causes problems unless we tell make where to find these dependencies.
 */
VPATH = $(BUILDLIBDIR):$(USRLIBDIR)
#endif

#if defined(XDarwinServer) && XDarwinServer
XCOMM
XCOMM X Darwin server for Mac OS X / Darwin
XCOMM
FBSUBDIR = fb
DARWINDDXDIR = hw/darwin
DARWINDIRS = $(STDDIRS) $(FBDIR) $(SHADOWDIR) $(DARWINDDXDIR) $(DEPDIRS)
DARWINOBJS = $(DARWINDDXDIR)/miinitext.o
DARWINLIBS = PreFbLibs $(DARWINDDXDIR)/LibraryTargetName(darwin)
DARWINEXTLIBS = MiExtLibs FbPostFbLibs $(DARWINDDXDIR)/LibraryTargetName(darwin)
DARWINSYSLIBS = $(FONTLIBS) $(SYSLIBS) -framework IOKit
IOKITLIB = $(DARWINDDXDIR)/iokit/LibraryTargetName(iokit)

/*
 * IOKit X server
 */
SetUIDServerTarget(XDarwin,$(DARWINDIRS),$(DARWINOBJS), \
	$(DARWINLIBS) $(IOKITLIB) $(DARWINEXTLIBS),$(DARWINSYSLIBS))

#if DarwinQuartzSupport

QUARTZDIR = $(DARWINDDXDIR)/quartz
QUARTZLIB = $(QUARTZDIR)/LibraryTargetName(XQuartz)
QUARTZSYSLIBS = -framework ApplicationServices -framework Cocoa \
                -framework CoreAudio -framework Carbon -ObjC
ROOTLESSLIB = $(ROOTLESSDIR)/LibraryTargetName(rootless) \
              $(ROOTLESSDIR)/safeAlpha/LibraryTargetName(safeAlpha) \
              $(ROOTLESSDIR)/accel/LibraryTargetName(rlAccel)
XPLUGINLIB = XpluginLibrary

#if NothingOutsideProjectRoot
XDARWINAPPDIR = $(BINDIR)/XDarwin.app/Contents
#else
XDARWINAPPDIR = /Applications/XDarwin.app/Contents
#endif

/*
 * Quartz X server (installed in its application bundle)
 */
SetUIDServerTarget(XDarwinApp,$(DARWINDIRS),$(DARWINOBJS), \
	$(DARWINLIBS) $(QUARTZLIB) $(DARWINEXTLIBS), \
	$(DARWINSYSLIBS) $(QUARTZSYSLIBS) -u _miDCInitialize)

install::
	$(MKDIRHIER) $(DESTDIR)$(XDARWINAPPDIR)/MacOS
	$(MV) $(DESTDIR)$(BINDIR)/XDarwinApp \
		$(DESTDIR)$(XDARWINAPPDIR)/MacOS/XDarwin
	-(cd $(DESTDIR)$(BINDIR); $(RM) XDarwinQuartz; \
		$(LN) $(XDARWINAPPDIR)/MacOS/XDarwin XDarwinQuartz)

/*
 * Display mode bundles for Quartz
 * (installed in their own bundles inside XDarwin's)
 */
#if HasXplugin
XPRDIRS = $(QUARTZDIR)/xpr $(ROOTLESSDIR) $(ROOTLESSDIR)/safeAlpha
XPRLIBS = $(QUARTZDIR)/xpr/LibraryTargetName(xpr) $(ROOTLESSLIB)

BundleProgramTarget(xpr,XDarwinApp,$(XPRDIRS),$(QUARTZDIR)/xpr/xprScreen.o, \
	$(XPRLIBS),-framework ApplicationServices \
	$(XPLUGINLIB),$(XDARWINAPPDIR)/Resources)
#endif

CRDIRS = $(QUARTZDIR)/cr $(ROOTLESSDIR) $(ROOTLESSDIR)/safeAlpha
CRLIBS = $(QUARTZDIR)/cr/LibraryTargetName(cr) $(ROOTLESSLIB)

BundleProgramTarget(cr,XDarwinApp,$(CRDIRS),$(QUARTZDIR)/cr/crScreen.o, \
	$(CRLIBS),-framework ApplicationServices -framework Cocoa \
	-framework Carbon -ObjC,$(XDARWINAPPDIR)/Resources)

FSDIRS = $(QUARTZDIR)/fullscreen $(SHADOWDIR)
FSLIBS = $(QUARTZDIR)/fullscreen/LibraryTargetName(fullscreen) $(SHADOW)

BundleProgramTarget(fullscreen,XDarwinApp,$(FSDIRS), \
	$(QUARTZDIR)/fullscreen/fullscreen.o,$(FSLIBS), \
	-framework ApplicationServices,$(XDARWINAPPDIR)/Resources)

/*
 * GLX bundles for Quartz
 * (installed in their own bundles inside XDarwin's)
 */
BundleProgramTarget(glxAGL,XDarwinApp,GL,GL/glx/glxext.o,GL/glx/libglx.a \
	GL/apple/libAGLcore.a, \
	-framework AGL -framework OpenGL,$(XDARWINAPPDIR)/Resources)

#if BuildAppleDRI
BundleProgramTarget(glxCGL,XDarwinApp,GL,GL/glx/glxext.o,GL/glx/libglx.a \
	GL/apple/libCGLcore.a, \
	-framework OpenGL $(XPLUGINLIB),$(XDARWINAPPDIR)/Resources)
#endif

BundleProgramTarget(glxMesa,XDarwinApp,GL,GL/glx/glxext.o,GL/glx/libglx.a \
	GL/mesa/GLcore/libGLcore.a,NullParameter,$(XDARWINAPPDIR)/Resources)

#else /* !DarwinQuartzSupport */

#define ServerToInstall XDarwin

#endif /* DarwinQuartzSupport */

#endif /* XDarwinServer */

#if defined(Xmac68kServer) && Xmac68kServer
XCOMM
XCOMM NetBSD/mac68k Xserver
XCOMM
MFBSUBDIR = mfb
CFB8SUBDIR = cfb
#if 0
CFB16SUBDIR = cfb16
CFB24SUBDIR = cfb24
CFB32SUBDIR = cfb32
#endif
MAC68KDDXDIR = hw/netbsd/mac68k
MAC68KDIRS = $(STDDIRS) $(MFBDIR) $(CFB8DIR) \
#if 0
	$(CFB16DIR) $(CFB24DIR) $(CFB32DIR) \
#endif
	$(MAC68KDDXDIR) $(DEPDIRS)
MAC68KOBJS = $(MAC68KDDXDIR)/mac68kInit.o $(MAC68KDDXDIR)/mac68kEvent.o
MAC68KLIBS = hw/netbsd/mac68k/libmac68k.a CFBLibs
ServerTarget(Xmac68k,$(MAC68KDIRS),$(MAC68KOBJS),$(MAC68KLIBS) $(LIBCWRAPPER), \
	$(FONTLIBS) $(SYSLIBS))
#ifndef ServerToInstall
#define ServerToInstall Xmac68k
#endif
#endif /* XmacServer */


CFBSUBDIRS = $(CFB8SUBDIR) $(CFB16SUBDIR) $(CFB24SUBDIR) $(CFB32SUBDIR)
MIEXTDIRS = $(SHADOWDIR) $(LAYERDIR) $(ROOTLESSDIR)
IPLANDIRS = $(IPLAN2P2DIR) $(IPLAN2P4DIR) $(IPLAN2P8DIR)
DDXDIRS = $(DECWSDDXDIR) $(SUNDDXDIR) $(LYNXDDXDIR) \
	  $(ANBDDXDIR) \
	  $(DNBDDXDIR) \
	  $(DREAMCASTDDXDIR) \
	  $(EWS4800MIPSDDXDIR) \
	  $(HPCDDXDIR) \
	  $(MACPPCDDXDIR) $(MAC68KDDXDIR) \
	  $(VAXDDXDIR) \
	  $(X68DDXDIR) \
	  $(HPDDXDIR) $(XFREE86DDXDIR) $(XWINDDXDIR) $(DARWINDDXDIR) \
	  $(XVFBDDXDIR) $(XNESTDDXDIR) $(XDMXDDXDIR)
SUBDIRS = $(STDDIRS) $(MFBSUBDIR) $(CFBSUBDIRS) \
	  $(IPLANDIRS) $(ILBMDIR) $(AFBSUBDIR) \
          $(LMFCFBDIR) $(DDXDIRS) $(FBSUBDIR) $(TINYXSUBDIRS) $(MIEXTDIRS) \
	  $(XWINPARSERDIR)

#if  defined(ServerToInstall) && !defined(OS2Architecture)
install::
	-(cd $(DESTDIR)$(BINDIR); $(RM) X; $(LN) ServerToInstall X)
#endif

#define IHaveSubdirs

DependSubdirs($(SUBDIRS))
MakeLintLibSubdirs($(SUBDIRS))
LintSubdirs($(SUBDIRS))

ForceSubdirs($(DEPDIRS) $(SUBDIRS))

DEFAULTFONTPATH = DefaultFontPath
EXTRAMANDEFS = -D__default_font_path__="`echo $(DEFAULTFONTPATH) | sed -e 's/,/, /g'`"

InstallManPage(Xserver,$(MANDIR))
