XCOMM $Header: /home/x_cvs/mit/server/ddx/x386/LinkKit/Imakefile.LK,v 1.6 1992/09/16 14:56:44 dawes Exp $
/*
 * Server Makefile for Link Kit
 */

#include <Server.tmpl>

#define StdLibs $(DIX) $(OS) $(MI) $(EXTENSIONS)
#define NoMFBLibs $(DIX) $(OS) $(FONT) $(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

     EXTENSIONS = lib/libext.a
         XAULIB = lib/libXau.a
       XDMCPLIB = lib/libXdmcp.a
             OS = lib/libos.a $(XAULIB) $(XDMCPLIB)
        BSDEMUL = lib/Berklib.o
           FONT = lib/libfont.a $(RENDERERLIBS)
            DIX = lib/libdix.a
             MI = lib/libmi.a
            MFB = lib/libmfb.a
#if i386Mach
#ifdef i386Mach_BsdTree
   EXTRASYSLIBS = /usr/lib/libmach.a
#else
   EXTRASYSLIBS = /usr/misc/.mach/lib/libmach.a
#endif
#endif
#if HasSdbm
         DBMLIB = -lsdbm
#else
#if !i386Bsd
         DBMLIB = -ldbm
#endif
#endif
#if NeedLibGcc
         GCCLIB = -lgcc
#endif
        SYSLIBS = -lm $(DBMLIB) $(EXTRASYSLIBS) $(GCCLIB)
           CBRT = lib/cbrt.o

       IRULESRC = $(CONFIGDIR)

  IMAKE_DEFINES = -DX386LinkKit=1
      IMAKE_CMD = $(IMAKE) -DUseInstalled -I$(TOP) -I$(IRULESRC) \
                  $(IMAKE_DEFINES)
   ICONFIGFILES = $(IRULESRC)/Imake.tmpl $(IRULESRC)/Imake.rules \
		  $(IRULESRC)/Project.tmpl $(IRULESRC)/site.def \
			$(IRULESRC)/$(MACROFILE) $(EXTRA_ICONFIGFILES)
EXTRA_ICONFIGFILES = site.def X386Conf.tmpl
       INCLUDES = -Iinclude -Idrivers

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

#if X386MonoServer
#if X386Server
ALL2 = X386mono
#else
ALL1 = X386mono
#endif
#endif

#if X386Server
ALL1 = X386
#endif

ALL = $(ALL1) $(ALL2)

all: $(ALL)

clean::
	$(RM) X386Conf.tmpl

Configure:
	$(RM) Makefile.x386
	$(IMAKE_CMD) -DMakefileX386 -DInit -s Makefile.x386
	$(MAKE) $(MFLAGS) -f Makefile.x386 X386Conf.tmpl
	$(MAKE) $(MFLAGS) Makefile
	$(RM) Makefile.x386

#ifdef MakefileX386
#if X386MonoServer
#define X386Vga2Args VGA2DRIVER X386Vga2Drivers
#else
#define X386Vga2Args
#endif
#if X386Server
#define X386VgaArgs VGADRIVER X386Vga256Drivers
#else
#define X386VgaArgs
#endif
X386Conf.tmpl::
	$(RM) $@
	$(SHELL) x386config.sh X386VgaArgs X386Vga2Args RENDERER FontRenderers
#endif

#ifndef Init
/*****************************************************************************
 *		  Build rule blocks, add one for each server                 *
 *****************************************************************************/

#if X386Server
XCOMM
XCOMM X386 server
XCOMM
#ifdef i386SVR3Architecture
    X386SYSLIBS = $(CBRT) $(BSDEMUL)
#endif
#ifdef LinuxArchitecture
    X386SYSLIBS = $(CBRT)
#endif
#if SpecialMalloc
  X386MALLOCLIB = /usr/local/lib/libdbmalloc.a
#endif

      X386OBJS1 = lib/x386Init.o vga256Conf.o rendererConf.o
      X386OBJS2 = lib/dixfonts.o lib/mibitblt.o
     X386VGALIB = drivers/vga256/libvga256.a $(VGAOBJS)
       X386LIBS = lib/libx386.a $(X386VGALIB) MFBLibs \
                  $(X386SYSLIBS) $(X386MALLOCLIB)
       X386OBJS = $(X386OBJS1) $(X386OBJS2)
   INSTPGMFLAGS = $(INSTUIDFLAGS)     /* server must be suid root  */
     VGADRIVERS = X386Vga256Drivers

reloadX386: $(CONFIGSRC)/X386Conf.tmpl
	@$(MAKE) $(MFLAGS) Makefile
	@$(MAKE) $(MFLAGS) DoReload

DoReload: $(X386CONFOBJS) $(VGAOBJS) $(RENDERERLIBS) loadX386

vga256Conf.c: $(ICONFIGFILES) confvga256.sh
	$(RM) $@
	$(SHELL) confvga256.sh $(VGADRIVERS)

clean::
	$(RM) vga256Conf.c

ServerTarget(X386,$(X386DIRS),$(X386OBJS),$(X386LIBS),$(SYSLIBS))

#endif /* X386Server */


#if X386MonoServer
XCOMM
XCOMM X386mono server
XCOMM
#ifdef i386SVR3Architecture
    X386SYSLIBS = $(CBRT) $(BSDEMUL)
#endif
#ifdef LinuxArchitecture
    X386SYSLIBS = $(CBRT)
#endif
#if SpecialMalloc
  X386MALLOCLIB = /usr/local/lib/libdbmalloc.a
#endif
     X386MOBJS1 = lib/x386Init_m.o vga2Conf.o rendererConf.o
     X386MOBJS2 = lib/dixfonts_m.o lib/mibitblt_m.o
    X386MVGALIB = drivers/vga2/libvga2.a $(VGA2OBJS)
      X386MLIBS = lib/libx386.a $(X386MVGALIB) NoMFBLibs \
                  $(X386SYSLIBS) $(X386MALLOCLIB)
      X386MOBJS = $(X386MOBJS1) $(X386MOBJS2)
    VGA2DRIVERS = X386Vga2Drivers
   INSTPGMFLAGS = $(INSTUIDFLAGS)     /* server must be suid root  */

vga2Conf.c: $(ICONFIGFILES) configvga2.sh
	$(RM) $@
	$(SHELL) configvga2.sh $(VGA2DRIVERS)

clean::
	$(RM) vga2Conf.c

ServerTarget(X386mono,$(X386MDIRS),$(X386MOBJS),$(X386MLIBS),$(SYSLIBS))

#endif /* X386MonoServer */

/* Common rules */
#if X386Server || X386MonoServer
$(CONFIGSRC)/X386Conf.tmpl: $(ICONFIGFILES)
	@echo Checking in $(CONFIGSRC)...
	@cd $(CONFIGSRC); set -x; $(MAKE) $(MFLAGS) Makefiles

    RENDERERS = FontRenderers

rendererConf.c: $(ICONFIGFILES) configrend.sh
	$(RM) $@
	$(SHELL) configrend.sh $(RENDERERS)

clean::
	$(RM) rendererConf.c

#endif

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

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

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

clean::
	$(RM) $(ALL)

#endif /* Init */
