/*
# Discuss extensions to the X11R4 Imake configuration.
*/

EXTRA_INCLUDES	= -I$(UTILINCDIR) $(PANSS_CCOPTS)
PROJECT_LDOPTS 	= -L$(UTILLIBDIR) $(PANSS_LDOPTS)
TOP_INCLUDES	= -I$(TOP)/include

#ifdef UltrixArchitecture
MKSTEMPSRC	= mktemp.c
MKSTEMPOBJ	= mktemp.o
#else
MKSTEMPSRC	=
MKSTEMPOBJ	=
#endif

MOVE_IF_CHANGE	= $(TOP)/utils/move-if-change

/*
# New rule macros
*/

/* 
 * CleanFiles - what I thought CleanTarget did 
 */
#ifndef CleanFiles
#define CleanFiles(files)						@@\
clean::									@@\
	$(RM) files
#endif /* CleanFiles */

/*
 * DependTarget - generate rules to compute dependencies for all files listed
 * in $(SRCS).
 */
#ifndef DependTarget
#define	DependTarget()							@@\
depend:: $(SRCS)							@@\
	$(DEPEND) -s "# DO NOT DELETE" -- $(ALLDEFINES) -- $(SRCS)
#endif /* DependTarget */


/*
 * InstallScript - install a shell script using special install flags set in 
 * $(INSTALLFLAGS).  This macro has been superceeded by CppScriptTarget.
 * Discuss uses .sh instead of .script.
 */
#ifndef InstallScript
#define	InstallScript(program,dest)					@@\
install:: program.sh							@@\
	$(INSTALL) -c $(INSTSCRFLAGS) program.sh dest/program
#endif /* InstallScript */

/*
 * ExtendedNormalLibraryTarget - generate a library from a set of dependent
 * object files and a set of non-dependent object files.
 */
#ifndef ExtendedNormalLibraryTarget
#define ExtendedNormalLibraryTarget(libname, deplist, extlist)		@@\
AllTarget(lib/**/libname.a)						@@\
									@@\
lib/**/libname.a: deplist				    		@@\
	$(RM) $@							@@\
	$(AR) $@ deplist extlist					@@\
	$(RANLIB) $@
#endif /* ExtendedNormalLibraryTarget */

/*
 * ExtendedProfiledLibraryTarget - generate rules to create a profiled
 * library from set of dependent and non-dependent object files.
 */
#ifndef ExtendedProfiledLibraryTarget
#define	ExtendedProfiledLibraryTarget(libname,deplist,extlist)		@@\
AllTarget(lib/**/libname/**/_p.a)					@@\
									@@\
lib/**/libname/**/_p.a: deplist						@@\
	$(RM) $@							@@\
	cd profiled; $(AR) ../$@ deplist extlist			@@\
	$(RANLIB) $@
#endif /* ExtendedProfiledLibraryTarget */

/*
 * InstallProfiledLibrary - generate rules to install the indicated library.
 * This ought to be provided by X11R4, but isn't.
 */
#ifndef InstallProfiledLibrary
#define	InstallProfiledLibrary(libname,dest)				@@\
install:: lib/**/libname.a						@@\
	$(INSTALL) -c $(INSTLIBFLAGS) lib/**/libname.a dest		@@\
	$(RANLIB) $(RANLIBINSTFLAGS) dest/lib/**/libname.a		@@\
									@@\
install:: lib/**/libname/**/_p.a					@@\
	$(INSTALL) -c $(INSTLIBFLAGS) profiled/lib/**/libname/**/_p.a dest @@\
	$(RANLIB) $(RANLIBINSTFLAGS) dest/lib/**/libname/**/_p.a
#endif /* InstallProfiledLibrary */

/*
 * GeneralLibraryObjectRule - builds normal and/or profiled library
 * objects, based on site defs
 */
#ifndef GeneralLibraryObjectRule
#ifdef BuildNormalLibraries
#define GeneralLibraryObjectRule()					@@\
   NormalLibraryObjectRule()
#endif /* BuildNormalLibraries */
#ifdef BuildProfiledLibraries
#define GeneralLibraryObjectRule()					@@\
   ProfiledLibraryObjectRule()
#endif /* BuildProfiledLibraries */
#endif /* GeneralLibraryObjectRule */

/*
 * GeneralLibraryTarget - builds normal and/or profiled libraries, 
 * based on site defs
 */
#ifndef GeneralLibraryTarget
#ifdef BuildNormalLibraries
#define GeneralLibraryTarget(lib, objs)					@@\
   NormalLibraryTarget(lib, objs)
#endif /* BuildNormalLibraries */
#ifdef BuildProfiledLibraries
#define GeneralLibraryTarget(lib, objs)					@@\
   NormalLibraryTarget(lib, objs)					@@\
   ProfiledLibraryTarget(lib, objs)
#endif /* BuildProfiledLibraries */
#endif /* GeneralLibraryTarget */

/*
 * InstallGeneralLibrary - installs normal and/or profiled libraries,
 * based on site defs
 */
#ifndef InstallGeneralLibrary
#ifdef BuildNormalLibraries
#define InstallGeneralLibrary(lib, dest)				@@\
   InstallLibrary(lib, dest)
#endif /* BuildNormalLibraries */
#ifdef BuildProfiledLibraries
#define InstallGeneralLibrary(lib, dest)				@@\
   InstallProfiledLibrary(lib,dest)
#endif /* BuildProfiledLibraries */
#endif /* InstallGeneralLibrary */

#ifndef SpecialGeneralObjectRule
#ifdef BuildNormalLibraries
#define SpecialGeneralObjectRule(objs, depends, options)		@@\
   SpecialObjectRule(objs, depends, options)
#endif /* BuildNormalLibraries */
#ifdef BuildProfiledLibraries
#define SpecialGeneralObjectRule(objs, depends, options)		@@\
   SpecialProfiledObjectRule(objs, depends, options)
#endif /* BuildProfiledLibraries */
#endif /* SpecialGeneralObjectRule */

/*
# New target patterns, etc.
*/

.SUFFIXES: .h .c .et .ct

.et.c:
	$(COMPILE_ET) $*.et

.et.h:
	$(COMPILE_ET) $*.et

.ct.c:
	$(MK_CMDS) $*.ct

/*
# Other random stuff
*/

#define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)'

