/**/# Kerberos version 5 Build Parameters /**/# /**/# $Source$ /**/# $Author$ /**/# $Id$ #define ProjectKRB 5 #ifndef TouchCmd #define TouchCmd touch #endif #ifndef UnifdefCmd #define UnifdefCmd $(TOP)/util/unifdef/unifdef #endif #ifndef CompileEtCmd #define CompileEtCmd $(TOP)/util/et/compile_et #endif #ifndef MkCmdsCmd #define MkCmdsCmd $(TOP)/util/ss/mk_cmds #endif #ifndef DependCmd #define DependCmd makedepend /* assume BINDIR in path */ #endif #ifndef ImakeCmd #define ImakeCmd imake #endif #ifndef SSLib #define SSLib -L$(TOPLIBD) -lss #endif #ifndef ComErrLib #define ComErrLib -L$(TOPLIBD) -lcom_err #endif #ifndef PepsyFlags #ifdef ISODE7 #define PepsyFlags -f -h0 -a -s -C /* -h2 breaks pepsy, ARRGH! */ #else #define PepsyFlags -f -h0 -a -s #endif /* ISODE7 */ #endif #ifndef PepsyCmd #define PepsyCmd pepsy #endif #ifndef IsodeLib #define IsodeLib -lisode #endif #ifndef ArAddCmd #define ArAddCmd ar cruv #endif #ifndef Krb4LibList #define Krb4LibList -lkrb $(KLIBLOC) -l$(DES425LIB) #endif #ifndef Krb4KdbList #define Krb4KdbList -lkdb #endif #ifndef Krb4DepList #define Krb4DepList $(DES425DEPLIB) #endif #ifndef Krb4Includes #define Krb4Includes -I$(TOP)/include/kerberosIV #endif #ifndef ExtraIncludes #define ExtraIncludes /**/ #endif #ifndef HesiodDefines #define HesiodDefines /**/ #endif #ifndef HesiodLibs #define HesiodLibs /**/ #endif #if 0 #ifndef ZephyrDefines #define ZephyrDefines /**/ #endif #ifndef ZephyrLibs #define ZephyrLibs /**/ #endif #endif #ifndef DesDefines #define DesDefines YouMustFigureOutYourDesDefines #endif #ifndef Krb5Root #define Krb5Root /krb5 #endif #ifndef Kdb5Dir #define Kdb5Dir /krb5 #endif #ifndef Krb5Manroot #define Krb5Manroot $(KRB5ROOT)/man #endif #ifndef AdminManSuffix #define AdminManSuffix 8 #endif #ifndef AdminMandir #define AdminMandir $(KRB5MANROOT)/man$(ADMIN_MANSUFFIX) #endif #ifndef ServerManSuffix #define ServerManSuffix 8 #endif #ifndef ServerMandir #define ServerMandir $(KRB5MANROOT)/man$(SERVER_MANSUFFIX) #endif #ifndef ClientManSuffix #define ClientManSuffix 1 #endif #ifndef ClientMandir #define ClientMandir $(KRB5MANROOT)/man$(CLIENT_MANSUFFIX) #endif #ifndef FileManSuffix #define FileManSuffix 5 #endif #ifndef FileMandir #define FileMandir $(KRB5MANROOT)/man$(FILE_MANSUFFIX) #endif #ifndef AdminBindir #define AdminBindir $(KRB5ROOT)/admin #endif #ifndef ServerBindir #define ServerBindir $(KRB5ROOT)/sbin #endif #ifndef ClientBindir #define ClientBindir $(KRB5ROOT)/bin #endif #ifndef Krb5Libdir #define Krb5Libdir $(KRB5ROOT)/lib #endif #ifndef Krb5Incdir #define Krb5Incdir $(KRB5ROOT)/include #endif #ifndef Krb5Othermkdirs #define Krb5Othermkdirs #endif #ifndef Krb5Srvtabdir #define Krb5Srvtabdir /etc #endif #ifndef DbmLib #if HasNdbm #define DbmLib #else #define DbmLib -ldbm #endif #endif /* Hack around sun cpp bug */ PEPSY_WARNING_STRING = \ @echo '***Ignore the warning message "Warning: Can'"'"'t find UNIV.ph failed"' #ifndef PepsyTarget #define PepsyTarget(basename) @@\ .SUFFIXES: .py @@\ Concat(basename,_defs.h) Concat(basename,_pre_defs.h) Concat(basename,-types.h) Concat(basename,_tables.c): Concat(basename,-asn.py) @@\ $(PEPSY_WARNING_STRING) @@\ $(PEPSY) $(PSYFLAGS) Concat3($(SRCDIR),basename,-asn.py) #endif /* PepsyTarget */ #ifndef ErrorTableObjectRule #define ErrorTableObjectRule() @@\ .SUFFIXES: .et .h .c @@\ @@\ .et.h: @@\ $(COMPILE_ET) $(SRCDIR)$*.et @@\ @@\ .et.c: @@\ $(COMPILE_ET) $(SRCDIR)$*.et #endif #ifndef CmdTableObjectRule #define CmdTableObjectRule() @@\ .SUFFIXES: .ct @@\ @@\ .ct.c: @@\ $(MK_CMDS) $*.ct #endif #ifdef LibraryRules #include LibraryRules #endif #ifndef SharedLibraryTarget #define SharedLibraryTarget(libname,deps) @@\ Concat3(lib,libname,.a):: #endif /* * AdditiveLibraryTarget - generate rules to create a library from * several directories */ #ifndef AdditiveLibraryTarget #define AdditiveLibraryTarget(libname,objlist,deps) @@\ AllTarget(Concat3(lib,libname,.a)) @@\ AllTarget(Concat(foo,libname)) @@\ DependTarget() @@\ @@\ Concat(foo,libname): objlist @@\ $(ARADD) Concat3(lib,libname,.a) objlist @@\ $(TOUCH) Concat(foo,libname) @@\ Concat3(lib,libname,.a): Concat(foo,libname) @@\ $(RANLIB) $@ @@\ clean:: @@\ $(RM) Concat(foo,libname) Concat3(lib,libname,.a) #endif /* AdditiveLibraryTarget */ #ifndef RanlibLibraryTarget #define RanlibLibraryTarget(libname,deps) @@\ AllTarget(Concat3(lib,libname,.a)) @@\ Concat(foo2,libname): Concat(foo,libname) @@\ $(TOUCH) $@ @@\ Concat3(lib,libname,.a): Concat(foo2,libname) @@\ $(RANLIB) $@ @@\ clean:: @@\ $(RM) Concat(foo,libname) Concat(foo2,libname) Concat3(lib,libname,.a) #endif /* * OtherdirLibraryTarget - generate rules to create a library in another * directory from object files here */ #ifndef OtherdirLibraryTarget #define OtherdirLibraryTarget(libdir,libname,objlist) @@\ AllTarget(objlist) @@\ AllTarget(Concat4(libdir,/lib,libname,.a)) @@\ AllTarget(Concat(foo,libname)) @@\ @@\ Concat4(libdir,/lib,libname,.a) Concat(foo,libname): objlist @@\ $(ARADD) Concat4(libdir,/lib,libname,.a) objlist @@\ $(TOUCH) Concat(foo,libname) @@\ $(TOUCH) Concat3(libdir,/foo,libname) @@\ /* The $(RANLIB) is done at the end by the directory itself */ @@\ @@\ clean:: @@\ $(RM) Concat(foo,libname) #endif /* OtherdirLibraryTarget */ /* * CopyHeader - generate rule to copy a generated header file to an include * tree. */ #ifndef CopyHeaderNewName #define CopyHeaderNewName(hfile,hdir,newname) @@\ includes:: hfile @@\ -if cmp hfile hdir/newname >/dev/null 2>&1; then \ @@\ echo ; \ @@\ else \ @@\ $(RM) hdir/newname ; \ @@\ $(CP) hfile hdir/newname; \ @@\ fi #endif /* CopyHeaderNewName */ #ifndef CopyHeader #define CopyHeader(hfile,hdir) CopyHeaderNewName(hfile,hdir,hfile) #endif /* CopyHeader */ /* Run a header through a preprocessor to generate an architecture/environment specific header file. note that unifdef's exit status will normally be 1, indicating some adjustment of the file took place. */ #ifndef ProcessStockHeader #define ProcessStockHeader(stockname,newname) @@\ newname: stockname @@\ -$(RM) newname.new @@\ -$(UNIFDEF) $(PROCESS_DEFINES) stockname | sed $(PROCESS_REPLACE) >newname.new @@\ if cmp -s newname.new newname ; then true; \ @@\ else $(RM) newname ; $(CP) newname.new newname ; fi #endif /* ProcessStockHeader */ /* * Krb5LibraryTarget - generate rules to create a library, and link to it * in the library dir */ #ifndef Krb5LibraryTarget #define Krb5LibraryTarget(libname,objlist) @@\ AllTarget(Concat3(lib,libname,.a)) @@\ DependTarget() @@\ @@\ Concat3(lib,libname,.a): objlist @@\ $(RM) $@ @@\ $(AR) $@ objlist @@\ $(RANLIB) $@ @@\ $(RM) Concat3($(TOPLIBD)/lib,libname,.a) @@\ $(LN) Concat3(../$(CURRENT_DIR)/lib,libname,.a) Concat3($(TOP)/lib/lib,libname,.a) #endif /* Krb5LibraryTarget */ #ifndef Krb5InstallLibrary #define Krb5InstallLibrary(libname,destdir) @@\ install:: Concat3(lib,libname,.a) @@\ $(RM) Concat4(destdir,/lib,libname,.a) @@\ $(CP) Concat3(lib,libname,.a) Concat4(destdir,/lib,libname,.a) @@\ $(RANLIB) Concat4(destdir,/lib,libname,.a) #endif #ifndef Krb5InstallHeaders #define Krb5InstallHeaders(headers,destdir) @@\ install:: headers @@\ @set -x; for f in headers ; \ @@\ do $(INSTALL) -c $(INSTDATFLAGS) $$f destdir/$$f ; \ @@\ done #endif /* * Krb5InstallManPage - generate rules to install the indicated manual page, * giving it an alternate suffix. */ #ifndef Krb5InstallManPage #define Krb5InstallManPage(file,destdir,suffix) @@\ install.man:: file.M @@\ $(INSTALL) -c $(INSTMANFLAGS) file.M destdir/file.suffix #endif /* Krb5InstallManPage */ /* * Krb5SimpleProgramTarget - generate rules for compiling and linking programs * that only have one C source file. It should only be used in Imakefiles * that describe a single program. * takes extra arguments beyond SimpleProgramTarget which specify where * to put manpages & binaries */ #ifndef Krb5SimpleProgramTarget #define Krb5SimpleProgramTarget(program,bindir,mandir,mansuffix) @@\ OBJS = program.o @@\ SRCS = $(SRCDIR)program.c @@\ @@\ Krb5ComplexProgramTarget(program,bindir,mandir,mansuffix) #endif /* Krb5SimpleProgramTarget */ #ifndef Krb5AdminProgramTarget #define Krb5AdminProgramTarget(program) @@\ Krb5SimpleProgramTarget(program,$(ADMIN_BINDIR),$(ADMIN_MANDIR),$(ADMIN_MANSUFFIX)) #endif /* Krb5AdminProgramTarget */ #ifndef Krb5ServerProgramTarget #define Krb5ServerProgramTarget(program) @@\ Krb5SimpleProgramTarget(program,$(SERVER_BINDIR),$(SERVER_MANDIR),$(SERVER_MANSUFFIX)) #endif /* Krb5ServerProgramTarget */ #ifndef Krb5ClientProgramTarget #define Krb5ClientProgramTarget(program) @@\ Krb5SimpleProgramTarget(program,$(CLIENT_BINDIR),$(CLIENT_MANDIR),$(CLIENT_MANSUFFIX)) #endif /* Krb5ClientProgramTarget */ #ifndef Krb5InstallAdminProgram #define Krb5InstallAdminProgram(program) @@\ InstallProgram(program,$(ADMIN_BINDIR)) @@\ Krb5InstallManPage(program,$(ADMIN_MANDIR),$(ADMIN_MANSUFFIX)) #endif /* Krb5InstallAdminProgram */ #ifndef Krb5InstallServerProgram #define Krb5InstallServerProgram(program) @@\ InstallProgram(program,$(SERVER_BINDIR)) @@\ Krb5InstallManPage(program,$(SERVER_MANDIR),$(SERVER_MANSUFFIX)) #endif /* Krb5InstallAdminProgram */ #ifndef Krb5InstallClientProgram #define Krb5InstallClientProgram(program) @@\ InstallProgram(program,$(CLIENT_BINDIR)) @@\ Krb5InstallManPage(program,$(CLIENT_MANDIR),$(CLIENT_MANSUFFIX)) #endif /* Krb5InstallAdminProgram */ /* * Krb5ComplexProgramTarget - generate rules for compiling and linking the * program specified by $(OBJS) and $(SRCS), installing the program and its * man page, and generating dependencies. It should only be used in * Imakefiles that describe a single program. * Provides extra arguments to set manpage & binary locations */ #ifndef Krb5ComplexProgramTarget #define Krb5ComplexProgramTarget(program,bindir,mandir,mansuffix) @@\ PROGRAM = program @@\ @@\ AllTarget(program) @@\ @@\ program: $(OBJS) $(DEPLIBS) @@\ RemoveTargetProgram($@) @@\ $(CC) -o $@ $(OBJS) $(LDOPTIONS) $(LOCAL_LIBRARIES) $(LDLIBS) $(EXTRA_LOAD_FLAGS) @@\ @@\ SaberProgramTarget(program,$(SRCS),$(OBJS),$(LOCAL_LIBRARIES), /**/) @@\ @@\ InstallProgram(program,bindir) @@\ Krb5InstallManPage(program,mandir,mansuffix) @@\ DependTarget() @@\ LintTarget() @@\ @@\ clean:: @@\ $(RM) $(PROGRAM) #endif /* Krb5ComplexProgramTarget */ /* * SimpleTestProgramTarget - generate rules for compiling and linking * a test program, but don't include any install rules. * cf. SimpleProgramTarget, ComplexProgramTarget */ #ifndef SimpleTestProgramTarget #define SimpleTestProgramTarget(program) @@\ PROGRAM = program @@\ @@\ AllTarget(program) @@\ @@\ program: program.o $(DEPLIBS) @@\ RemoveTargetProgram($@) @@\ $(CC) -o $@ program.o $(LDOPTIONS) $(LOCAL_LIBRARIES) $(LDLIBS) $(EXTRA_LOAD_FLAGS) @@\ @@\ SaberProgramTarget(program,program.c,program.o,$(LOCAL_LIBRARIES), /**/)@@\ @@\ clean:: @@\ $(RM) $(PROGRAM) #endif /* SimpleTestProgramTarget */ #if HasPosixTermios P_TERMIOS=-DHasPosixTermiosTrue #else P_TERMIOS=-UHasPosixTermiosTrue #endif #if HasPosixFileLocks P_FLOCKS=-DHasPosixFileLocksTrue #else P_FLOCKS=-UHasPosixFileLocksTrue #endif #if HasPosixTypes P_TYPES=-DHasPosixTypesTrue #else P_TYPES=-UHasPosixTypesTrue #endif #if IsPOSIX || SystemV P_UNISTD=-DHasUnistdH #else P_UNISTD=-UHasUnistdH #endif #if HasVoidSignalReturn P_SIGTYPE=-DHasVoidSignalReturnTrue #else P_SIGTYPE=-UHasVoidSignalReturnTrue #endif #if HasStringH P_STRINGH=-DHasStringHTrue #else P_STRINGH=-UHasStringHTrue #endif #ifdef Bitsize16 P_BITSIZE=-DBitsize16 -UBitsize32 -UBitsize64 #endif #ifdef Bitsize32 P_BITSIZE=-DBitsize32 -UBitsize16 -UBitsize64 #endif #ifdef Bitsize64 P_BITSIZE=-DBitsize64 -UBitsize16 -UBitsize32 #endif #if HasNdbm P_DBM=-DHasNdbmTrue #else P_DBM=-UHasNdbmTrue #endif #if HasInet P_INET=-DHasInetTrue #else P_INET=-UHasInetTrue #endif /* If HasStdlibH > 1, include even if __STDC__ is not defined. */ #if HasStdlibH > 1 P_STDLIBH=-DHasStdlibHTrue -DForceStdlibH #else #if HasStdlibH P_STDLIBH=-DHasStdlibHTrue -UForceStdlibH #else P_STDLIBH=-UHasStdlibHTrue -UForceStdlibH #endif #endif #if !defined(UseTimeH) && !defined(UseSysTimeH) /* Override system defaults for vs */ #ifdef OS_BSD #define UseSysTimeH #else #define UseTimeH #endif #endif #ifdef UseTimeH #ifdef UseSysTimeH P_TIME_DEFS=-DUseTimeH -DUseSysTimeH #else P_TIME_DEFS=-DUseTimeH -UUseSysTimeH #endif #else P_TIME_DEFS=-DUseSysTimeH -UUseTimeH #endif #if WantPrototypes P_PROTOS=-DProvidePrototypes #else P_PROTOS=-UProvidePrototypes #endif #if NeedNarrowPrototypes P_NPROTO=-DUseNarrowPrototypes #else P_NPROTO=-UUseNarrowPrototypes #endif #if UseStdarg P_STDARG=-DUseStdarg #else P_STDARG=-UUseStdarg #endif #if HasAnsiStdio P_ANSI_STDIO=-DHasAnsiStdio #else P_ANSI_STDIO=-UHasAnsiStdio #endif #if UseVoid P_VOID=-DUseVoid #else P_VOID=-UUseVoid #endif #if UseConst P_CONST=-DUseConst #else P_CONST=-UUseConst #endif #if UseVolatile P_VOLATILE=-DUseVolatile #else P_VOLATILE=-UUseVolatile #endif #ifdef NoNestedPrototypes P_NESTPROTO=-DNoNestedPrototypes #else P_NESTPROTO=-UNoNestedPrototypes #endif /* * Default Definitions. */ ARADD = ArAddCmd TOP_INCLUDES = -I$(TOP)/include $(STDC_TOP_INCLUDES) EXTRA_INCLUDES = ExtraIncludes CONFIGSRC = $(TOP)/config PSYFLAGS = PepsyFlags PEPSY = PepsyCmd TOUCH = TouchCmd IMAKE = ImakeCmd DEPEND = DependCmd UNIFDEF = UnifdefCmd HESDEFS = HesiodDefines HESLIBS = HesiodLibs #if 0 ZEPHDEFS = ZephyrDefines ZEPHLIBS = ZephyrLibs #endif #ifdef OS_TelnetName TELNET_OPSYS = OS_TelnetName #endif KRB5ROOT = Krb5Root KDB5DIR = Kdb5Dir KRB5SRVTABDIR = Krb5Srvtabdir PROCESS_DEFINES = $(P_TERMIOS) $(P_FLOCKS) $(P_TYPES) $(P_SIGTYPE) $(P_STRINGH) $(P_BITSIZE) $(P_DBM) $(P_INET) $(P_STDLIBH) $(P_TIME_DEFS) $(P_PROTOS) $(P_NPROTO) $(P_STDARG) $(P_ANSI_STDIO) $(P_VOID) $(P_CONST) $(P_VOLATILE) $(P_UNISTD) $(P_NESTPROTO) -DUnifdefRan PROCESS_REPLACE = -e "s+@KRB5ROOT+$(KRB5ROOT)+" \ -e "s+@KDB5DIR+$(KDB5DIR)+" \ -e "s+@KRB5SRVTABDIR+${KRB5SRVTABDIR}+" DESDEFINES = DesDefines #if HasSharedLibraries TOPLIBD = $(TOP)/lib/shared #else TOPLIBD = $(TOP)/lib #endif DESLIB = crypto DESDEPLIB = $(TOPLIBD)/libcrypto.a RSAMD4LIB = md4 RSAMD4DEPLIB = $(TOPLIBD)/libmd4.a KRB5LIB = krb5 KRB5DEPLIB = $(TOPLIBD)/libkrb5.a CRCLIB = crc32 CRCDEPLIB = $(TOPLIBD)/libcrc32.a ISODELIB = IsodeLib DBMLIB = DbmLib DEPKLIB = $(KRB5DEPLIB) $(DESDEPLIB) KLIBLOC = -L$(TOPLIBD) KLIB = $(KLIBLOC) -l$(KRB5LIB) -l$(DESLIB) $(ISODELIB) $(COMERRLIB) $(DBMLIB) KDBDEPLIB = $(TOPLIBD)/libkdb5.a KDBLIB = $(KLIBLOC) -lkdb5 KRB425DEPLIB = $(TOPLIBD)/libkrb425.a KRB425LIB = krb425 DES425DEPLIB = $(TOPLIBD)/libdes425.a DES425LIB = des425 KRB4LIB = Krb4LibList KDB4LIB = Krb4KdbList KRB4INCLUDES = Krb4Includes KRB4DEPLIB = Krb4DepList SSLIB = SSLib MK_CMDS = MkCmdsCmd COMERRLIB = ComErrLib COMPILE_ET = CompileEtCmd KRB5MANROOT = Krb5Manroot ADMIN_BINDIR = AdminBindir ADMIN_MANSUFFIX = AdminManSuffix ADMIN_MANDIR = AdminMandir SERVER_BINDIR = ServerBindir SERVER_MANSUFFIX = ServerManSuffix SERVER_MANDIR = ServerMandir CLIENT_BINDIR = ClientBindir CLIENT_MANSUFFIX = ClientManSuffix CLIENT_MANDIR = ClientMandir FILE_MANSUFFIX = FileManSuffix FILE_MANDIR = FileMandir KRB5_LIBDIR = Krb5Libdir KRB5_INCDIR = Krb5Incdir KRB5_INCSUBDIRS = concat(Krb5Incdir,/krb5) \ concat(Krb5Incdir,/krb5/asn.1) \ concat(Krb5Incdir,/kerberosIV) KRB5_OTHERMKDIRS = Krb5Othermkdirs