XCOMM $XConsortium: Imakefile /main/81 1996/10/22 18:32:26 kaleb $
XCOMM $XFree86: xc/programs/xdm/Imakefile,v 3.19.2.4 1998/01/23 12:35:19 dawes Exp $
#define IHaveSubdirs
#define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)'

#ifndef BuildChooser
#define BuildChooser !SystemV
#endif

/*
 * We define ShareLibXdmGreet true if:
 *	SystemV4 is true
 *	AlphaArchitecture is set and NetBSDArchitecture is not
 *	AlphaArchitecture and NetBSDArchitecture are set, and
 *	    HasSharedLibraries is true.
 *
 * We'd like ShareLibXdmGreet true of SystemV4 or AlphaArchitecture,
 * but not all NetBSD/Alpha systems have shared libraries, and
 * it can't be shared on those which do not.
 */
#ifndef SharedLibXdmGreet
#define SharedLibXdmGreet						\
    ((defined(AlphaArchitecture) &&					\
      (!defined(NetBSDArchitecture) ||					\
       (defined(NetBSDArchitecture) && HasSharedLibraries))) ||		\
     SystemV4)
#endif

#ifndef BuildBoth
#define BuildBoth (defined(LinuxArchitecture) && !SharedLibXdmGreet && !UseElfFormat)
#endif

#ifndef LinuxShadowSuite
#define LinuxShadowSuite NO
#endif

#if HasXdmAuth
XDMAUTH_DEFINES = -DHASXDMAUTH
XDMAUTHOBJS = xdmauth.o
XDMAUTHSRCS = xdmauth.c
#endif

#if HasSecureRPC
RPC_DEFINES = -DSECURE_RPC
RPCOBJS = rpcauth.o
RPCSRCS = rpcauth.c
RPCLIB = -lrpcsvc
#endif

#if HasKrb5
KRB5_DEFINES = Krb5Defines
KRB5_INCLUDE = Krb5Includes
KRB5OBJS = krb5auth.o
KRB5SRCS = krb5auth.c
#endif

#if SharedLibXdmGreet
GREET_DIR = greeter
#if SystemV4 || (SharedLibXdmGreet && (defined(LinuxArchitecture) || defined(NetBSDArchitecture)))
    DLLIBRARY = DlLibrary
#endif
#else
GREET_DEFINES = -DGREET_USER_STATIC
GREETSRCS = greet.c verify.c Login.c
GREETOBJS = greet.o verify.o Login.o
#if BuildBoth
GREETSHADOWSRCS = greetsh.c verifysh.c Loginsh.c
GREETSHADOWOBJS = greetsh.o verifysh.o Loginsh.o
#if !UseElfFormat
SHADOWLIB = -lshadow
#endif
#endif
#endif

#if SystemV4 || HasShadowPasswd
#if !LinuxShadowSuite
PWD_DEFINES = -DUSESHADOW
#else
PWD_DEFINES = -DUSESHADOW -DSHADOWSUITE
#endif
#if !defined(i386IscArchitecture) && !defined(i386ScoArchitecture) && !defined(LinuxArchitecture)
SYS_LIBRARIES3 = -lresolv
#endif
#if SystemV || defined(SequentArchitecture)
SYS_LIBRARIES1 = -lsec
#endif
#if defined(LinuxArchitecture) && (!UseElfFormat || LinuxShadowSuite)
SYS_LIBRARIES1 = -lshadow
#endif
#endif

#if defined(UltrixArchitecture)
SYS_LIBRARIES1 = -lauth
#endif

#if (defined(AIXArchitecture) && (OSMajorVersion >= 3))
SYS_LIBRARIES1 = -ls
#endif

#if HasLibCrypt
#ifdef SpecialLibCrypt
CRYPT_LIBRARIES = SpecialLibCrypt
#else
CRYPT_LIBRARIES = -lcrypt
#endif
#endif

SYS_LIBRARIES = $(SYS_LIBRARIES1) $(SYS_LIBRARIES2) $(SYS_LIBRARIES3)

#if HasBSD44Sockets
SOCK_DEFINES = -DBSD44SOCKETS
#endif

#ifdef i386Architecture
FRAGILE_DEFINES = -DFRAGILE_DEV_MEM
#endif

#if HasVFork
VFORK_DEFINES = -DHAS_VFORK
#endif

#if UseXKBInClients
XKB_CLIENT_DEFINES = XkbClientDefines
#endif

#if HasSetUserContext
USER_CONTEXT_DEFINES = -DHAS_SETUSERCONTEXT
SYS_LIBRARIES1 = -lutil
#endif

   XDMCONFIGDIR = XdmConfigurationSubdirectory
        SUBDIRS = $(GREET_DIR) $(XDMCONFIGDIR)

INCLUDES = $(KRB5_INCLUDE)
DEPLIBS = $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB) $(DEPXAUTHLIB) $(DEPXDMCPLIB)
LOCAL_LIBRARIES = $(XMULIB) $(XTOOLLIB) $(XLIB) $(XAUTHLIB) $(XDMCPLIB) $(RPCLIB) $(DLLIBRARY) $(CRYPT_LIBRARIES)

          SRCS1 = auth.c daemon.c server.c dpylist.c dm.c error.c file.c \
		  netaddr.c reset.c resource.c protodpy.c policy.c \
		  session.c socket.c streams.c util.c xdmcp.c \
		  mitauth.c \
		  genauth.c access.c choose.c \
		  $(XDMAUTHSRCS) $(RPCSRCS) $(KRB5SRCS) $(GREETSRCS)
          OBJS1 = auth.o daemon.o server.o dpylist.o dm.o error.o file.o \
		  netaddr.o reset.o resource.o protodpy.o policy.o \
		  session.o socket.o streams.o util.o xdmcp.o \
		  mitauth.o \
		  genauth.o access.o choose.o \
		  $(XDMAUTHOBJS) $(RPCOBJS) $(KRB5OBJS) $(GREETOBJS)
          SRCS2 = xdmshell.c 
          OBJS2 = xdmshell.o 
#if BuildChooser
          SRCS3 = chooser.c
          OBJS3 = chooser.o
       DEPLIBS3 = XawClientDepLibs XkbClientDepLibs $(DEPXDMCPLIB)
          LIBS3 = XawClientLibs XkbClientLibs $(XDMCPLIB)
#endif
       
          SRCS4 = sessreg.c
          OBJS4 = sessreg.o

#if BuildBoth
          SRCS5 = auth.c daemon.c server.c dpylist.c dm.c error.c file.c \
		  netaddr.c reset.c resource.c protodpy.c policy.c \
		  sessionsh.c socket.c streams.c util.c xdmcp.c \
		  mitauth.c \
		  genauth.c access.c choose.c \
		  $(XDMAUTHSRCS) $(RPCSRCS) $(KRB5SRCS) $(GREETSHADOWSRCS)
          OBJS5 = auth.o daemon.o server.o dpylist.o dm.o error.o file.o \
		  netaddr.o reset.o resource.o protodpy.o policy.o \
		  sessionsh.o socket.o streams.o util.o xdmcp.o \
		  mitauth.o \
		  genauth.o access.o choose.o \
		  $(XDMAUTHOBJS) $(RPCOBJS) $(KRB5OBJS) $(GREETSHADOWOBJS)
     XDM_SHADOW = xdm-shadow
#endif
#if BuildChooser
        CHOOSER = chooser
#endif
       PROGRAMS = xdm xdmshell sessreg $(CHOOSER) $(XDM_SHADOW)

 OSMAJORVERSION = OSMajorVersion
 OSMINORVERSION = OSMinorVersion
   CONN_DEFINES = ConnectionFlags
        DEFINES = -DBINDIR=\"$(BINDIR)\" -DXDMDIR=\"$(XDMDIR)\" \
		$(SIGNAL_DEFINES) \
		$(XDMAUTH_DEFINES) $(RPC_DEFINES) $(KRB5_DEFINES) \
		$(PWD_DEFINES) $(CONN_DEFINES) \
		$(GREET_DEFINES) $(FRAGILE_DEFINES) \
		-DOSMAJORVERSION=$(OSMAJORVERSION) \
		-DOSMINORVERSION=$(OSMINORVERSION) \
		$(XKB_CLIENT_DEFINES) $(USER_CONTEXT_DEFINES)

XCOMM
XCOMM Special definitions for compiling default resources; these parameters
XCOMM should be set in util/imake.includes/site.def or the appropriate .macros
XCOMM file in that directory.  The lack of initial spaces is to prevent imake
XCOMM from accidently turning the lines into rules by putting a leading tab.
XCOMM
XCOMM Do NOT change these lines!
XCOMM
DEF_SERVER = $(BINDIR)/X
DEF_USER_PATH = DefaultUserPath		/* no leading spaces or imake will */
DEF_SYSTEM_PATH = DefaultSystemPath	/* indent as rule */
BOURNE_SHELL = DefaultSystemShell
#ifndef OS2Architecture
RES_DEFINES = '-DDEF_SERVER_LINE=":0 local $(DEF_SERVER) :0"' \
		  '-DXRDB_PROGRAM="$(BINDIR)/xrdb"' \
		  '-DDEF_SESSION="$(BINDIR)/xterm -ls"' \
		  '-DDEF_USER_PATH="$(DEF_USER_PATH)"' \
		  '-DDEF_SYSTEM_PATH="$(DEF_SYSTEM_PATH)"' \
		  '-DDEF_SYSTEM_SHELL="$(BOURNE_SHELL)"' \
		  '-DDEF_FAILSAFE_CLIENT="$(BINDIR)/xterm"' \
		  '-DDEF_XDM_CONFIG="$(XDMDIR)/xdm-config"' \
		  '-DDEF_CHOOSER="$(XDMDIR)/chooser"' \
		  '-DDEF_AUTH_DIR="$(XDMDIR)"' \
		  '-DDEF_GREETER_LIB="$(XDMDIR)/libXdmGreet.so"'
#endif

ComplexProgramTarget_1(xdm,$(LOCAL_LIBRARIES),NullParameter)
NormalProgramTarget(xdmshell,$(OBJS2),NullParameter,NullParameter,NullParameter)
NormalProgramTarget(sessreg,$(OBJS4),NullParameter,NullParameter,NullParameter)
LinkVarDirectory(xdm,.,xdm,.)
InstallProgram(sessreg,$(BINDIR))
InstallManPage(sessreg,$(MANDIR))

#if defined(FreeBSDArchitecture) && (OSMajorVersion < 2)
SpecialCObjectRule(daemon,$(ICONFIGFILES),-UCSRG_BASED)
#endif

#if BuildChooser
SpecialCObjectRule(chooser, $(ICONFIGFILES), $(SOCK_DEFINES))
NormalProgramTarget(chooser,$(OBJS3),$(DEPLIBS3),$(LIBS3),NullParameter)
InstallProgram(chooser,$(XDMDIR))
InstallAppDefaults(Chooser)
#endif
#if BuildBoth
NormalProgramTarget(xdm-shadow,$(OBJS5),$(DEPLIBS),$(LOCAL_LIBRARIES),$(SHADOWLIB))
InstallProgram(xdm-shadow,$(BINDIR))
#endif

SpecialCObjectRule(auth,$(ICONFIGFILES),$(SOCK_DEFINES))
SpecialCObjectRule(policy,$(ICONFIGFILES),$(_NOOP_))
SpecialCObjectRule(resource,$(ICONFIGFILES),$(RES_DEFINES))
SpecialCObjectRule(socket,$(ICONFIGFILES),$(SOCK_DEFINES))
SpecialCObjectRule(xdmcp,$(ICONFIGFILES),$(SOCK_DEFINES))
SpecialCObjectRule(xdmshell,$(ICONFIGFILES),$(VFORK_DEFINES))

#if !SharedLibXdmGreet
LinkSourceFile(greet.c,greeter)
LinkSourceFile(verify.c,greeter)
LinkSourceFile(Login.c,greeter)
LinkSourceFile(Login.h,greeter)
LinkSourceFile(LoginP.h,greeter)
#if BuildBoth
ObjectFromSpecialSource(greetsh,greet,-DUSESHADOW)
ObjectFromSpecialSource(verifysh,verify,-DUSESHADOW)
ObjectFromSpecialSource(Loginsh,Login,-DUSESHADOW)
ObjectFromSpecialSource(sessionsh,session,-DUSESHADOW)
#endif
#endif /* !SharedLibXdmGreet */

#ifdef IHaveSubdirs
MakeSubdirs($(SUBDIRS))
DependSubdirs($(SUBDIRS))
#endif

/*
 * Don't install; let people read the instructions about putting in the
 * abort-display() resource:
 */
#ifdef comment
InstallProgramWithFlags(xdmshell,$(BINDIR),NullParameter)
#endif
