XCOMM $XConsortium: Imakefile,v 1.135 91/09/22 10:27:51 rws Exp $
/*
 * Server Master Makefile
 */

#include <Server.tmpl>

#define StdSubdirs dix os ddx/mi
#define MFBSubdirs StdSubdirs ddx/mfb
#define CFBSubdirs MFBSubdirs ddx/cfb
#define StdLibs $(DIX) $(OS) $(MI) $(EXTENSIONS)
#define MFBBareLibs $(DIX) $(OS) $(FONT) $(MFB) $(MI)
#define MFBLibs MFBBareLibs $(EXTENSIONS)
#define CFBBareLibs $(DIX) $(OS) $(FONT) $(CFB) $(MFB) $(MI)
#define CFBLibs CFBBareLibs $(EXTENSIONS)

#if BuildPexExt
   PEXTENSIONSRC = $(EXTENSIONSRC)/server/PEX
         PEXLIBS = $(PEXTENSIONSRC)/dipex/dispatch/libdidipex.a \
                   $(PEXTENSIONSRC)/dipex/swap/libdiswapex.a \
                   $(PEXTENSIONSRC)/dipex/objects/libdiobpex.a \
                   $(PEXTENSIONSRC)/dipex/dispatch/libdidipex.a \
                   $(PEXTENSIONSRC)/ddpex/mi/level4/libddpex4.a \
                   $(PEXTENSIONSRC)/ddpex/mi/level3/libddpex3.a \
                   $(PEXTENSIONSRC)/ddpex/mi/shared/libddpexs.a \
                   $(PEXTENSIONSRC)/ddpex/mi/level2/libddpex2.a \
                   $(PEXTENSIONSRC)/ddpex/mi/level1/libddpex1.a \
		   $(PEXTENSIONSRC)/ospex/libospex.a 
#endif
#if BuildXInputExt
      OTHEREXTS = $(EXTENSIONSRC)/server/xinput/libxinput.a
#endif

        DEPDIRS = $(FONTSRC)/lib/font $(EXTENSIONSRC)/server
     NONPEXEXTS = $(OTHEREXTS) $(EXTENSIONSRC)/server/libext.a
     EXTENSIONS = $(NONPEXEXTS) $(PEXLIBS)
         XAULIB = $(XAUTHSRC)/libXau.a
       XDMCPLIB = $(XDMCPLIBSRC)/libXdmcp.a
             OS = os/libos.a $(XAULIB) $(XDMCPLIB)
        BSDEMUL = $(LIBSRC)/Berk/Berklib.o
            MFB = ddx/mfb/libmfb.a
            CFB = ddx/cfb/libcfb.a
             MI = ddx/mi/libmi.a
            DIX = dix/libdix.a
           FONT = $(FONTSRC)/lib/font/libfont.a
#if SystemV4 && X386Server
        SYSLIBS = -lm /usr/ucblib/libucb.a
#else
#ifdef HasDB
        SYSLIBS = -lm
#else
        SYSLIBS = -lm -ldbm
#endif
#endif
           CBRT = ddx/mi/cbrt.o

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:

/*****************************************************************************
 *		  ALL definitions, add one for each server                   *
 *****************************************************************************/

#if XqdssServer
ALL1 = Xqdss
#endif

#if XqvssServer
#if XqdssServer
ALL2 = Xqvss
#else
ALL1 = Xqvss
#endif
#endif

#if XdecServer
ALL1 = Xdec
#endif

#if XmfbpmaxServer
ALL1 = Xmfbpmax
#endif

#if XcfbpmaxServer
#if XmfbpmaxServer
ALL2 = Xcfbpmax
#else
ALL1 = Xcfbpmax
#endif
#endif

#if XsunMonoServer
#if XsunServer
ALL2 = XsunMono
#else
ALL1 = XsunMono
#endif
#endif

#if XsunServer
ALL1 = Xsun
#endif

#if XibmServer
ALL1 = Xibm
#endif

#if XtekServer
ALL1 = Xtek
#endif

#if XmacIIServer
ALL1 = XmacII
#endif

#if XsolServer
ALL1 = Xsol
#endif

#if XlunaServer
ALL1 = Xluna
#endif

#if XmipsServer
ALL1 = Xmips
#endif

#if X386Server
ALL1 = X386
#endif

#if XhpBSDServer
ALL1 = XhpBSD
#endif

#if XnonServer
ALL2 = Xnon
#endif

/* end ALL definitions */

ALL = $(ALL1) $(ALL2)

all: $(ALL)


/*****************************************************************************
 *		  Build rule blocks, add one for each server                 *
 *****************************************************************************/


#if XqdssServer
XCOMM
XCOMM Digital qdss server
XCOMM
SUBDIRS0 = MFBSubdirs ddx/dec/lk201
SUBDIRS1 = ddx/dec/qdss ddx/dec/qdss/libtl
QDSSDIRS = $(SUBDIRS0) $(SUBDIRS1) $(DEPDIRS)
QDSSOBJS = ddx/dec/qdss/init.o ddx/dec/qdss/qdss_io.o ddx/dec/lk201/lk201.o
QDSSLIBS = ddx/dec/qdss/libqdss.a ddx/dec/qdss/libtl/libtl.a \
           ddx/dec/qdss/libqdss.a MFBLibs

ServerTarget(Xqdss,$(QDSSDIRS),$(QDSSOBJS),$(QDSSLIBS),$(SYSLIBS))
#endif /* XqdssServer */


#if XqvssServer
XCOMM
XCOMM Digital qvss server
XCOMM
SUBDIRS0 = MFBSubdirs ddx/dec/lk201
SUBDIRS2 = ddx/dec/qvss
QVSSDIRS = $(SUBDIRS0) $(SUBDIRS2) $(DEPDIRS)
QVSSOBJS = ddx/dec/qvss/init.o ddx/dec/qvss/qvss_io.o ddx/dec/lk201/lk201.o
QVSSLIBS = MFBLibs

ServerTarget(Xqvss,$(QVSSDIRS),$(QVSSOBJS),$(QVSSLIBS),$(SYSLIBS))
#endif /* XqvssServer */


#if XhpBSDServer
XCOMM
XCOMM XhpBSD server for BSD on HP Series 300/400/700 machines
XCOMM
SUBDIRS0 = StdSubdirs ddx/hpbsd
HPBSDDIRS = $(SUBDIRS0) $(DEPDIRS)
HPBSDOBJS = ddx/hpbsd/init.o
HPBSDLIBS0 = ddx/hpbsd/topcat/libtopcat.a ddx/hpbsd/hyperion/libhyper.a
HPBSDLIBS1 = ddx/hpbsd/libhpbsd.a ddx/hpbsd/input/libinput.a
HPBSDLIBS2 = ddx/hpbsd/cfb/libcfb.a ddx/hpbsd/mfb/libmfb.a
HPBSDLIBS = $(HPBSDLIBS0) $(HPBSDLIBS1) $(HPBSDLIBS2) StdLibs $(FONT)
ServerTarget(XhpBSD,$(HPBSDDIRS),$(HPBSDOBJS),$(HPBSDLIBS),$(SYSLIBS))
#endif /* XhpBSDServer */


#if XnonServer
XCOMM
XCOMM non server, just compile sources for build test
XCOMM
SUBDIRS0 = CFBSubdirs

Xnon: $(SUBDIRS0) $(DEPDIRS)

#endif /* XnonServer */


SUBDIRS = $(SUBDIRS0) $(SUBDIRS1) $(SUBDIRS2) $(SUBDIRS3)

InstallMultipleFlags($(ALL),$(BINDIR),$(INSTPGMFLAGS))

install::
	-(cd $(DESTDIR)$(BINDIR); $(RM) X; $(LN) $(ALL1) X)

#define IHaveSubdirs

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

ForceSubdirs($(DEPDIRS) $(SUBDIRS))

clean::
	$(RM) $(ALL)

InstallManPage(Xserver,$(MANDIR))

ddx/hpbsd/init.o:
	cd ddx/hpbsd && ${MAKE}

dix/libdix.a:
	cd dix && ${MAKE}

os/libos.a:
	cd os && ${MAKE}

ddx/mi/libmi.a:
	cd ddx/mi && ${MAKE}

