#
#  NeXT common include file for Internal Makefiles
#  Copyright 1987, 1991, NeXT Computer, Inc.
#
#  Maintained by Doug Wiebe.
#
#  This Makefile contains default values for various things.
#

########################## Product names ##############################

# the fruit of this project
PRODUCT = lib$(NAME).a

# build-type dependent names
OPT_LIB = lib$(NAME).a
DEBUG_LIB = lib$(NAME)_g.a
PROFILE_LIB = lib$(NAME)_p.a


########################## Default build locations ######################

# directory for temporary files
OBJROOT = .

# subdirectories for .o's
OPT_OBJ = obj
DEBUG_OBJ = debug_obj
PROFILE_OBJ = profile_obj

# where .o files are put in OBJROOT, for optimized builds
OFILE_DIR = $(OBJROOT)/$(OPT_OBJ)

# directory for symbols and other precious derived files
SYMROOT = .

# places to look for dependents
VPATH = $(OFILE_DIR):$(OBJROOT):$(SYMROOT)


########################## File groups ##############################

# all source code
SRCS = $(MFILES) $(CFILES) $(PSWFILES) $(PSWMFILES) $(SFILES) \
	$(LFILES) $(LMFILES) $(YFILES) $(YMFILES) $(HFILES) \
	$(PSFILES) $(OTHER_SRCS)

# all nonderived files needed to build the project (the installsrc'ed files)
INSTALL_FILES = $(SRCS) Makefile Makefile.depends

# header files
HFILES = \
	$(PRIVATE_INCFILES)	\
	$(COMPAT_INCFILES)	\
	$(LOCAL_INCFILES)	\
	$(PUBLIC_INCFILES)

# file generated by vers_string
VERSFILE = $(NAME)_vers

# all the object files, including a file with a version stamp
OFILES_NOVERS = $(MFILES:.m=.o) $(CFILES:.c=.o) $(PSWFILES:.psw=.o)\
 $(PSWMFILES:.pswm=.o) $(SFILES:.s=.o) $(YFILES:.y=.o) $(YMFILES:.ym=.o)\
 $(LFILES:.l=.o) $(LMFILES:.lm=.o) $(OTHER_SRCS_OFILES)

OFILES = $(OFILES_NOVERS) $(VERSFILE).o

# source files derived in the build process
DERIVED_SRC = $(PSWFILES:.psw=.c) $(PSWMFILES:.pswm=.m) \
		$(PSWFILES:.psw=.h) $(PSWMFILES:.pswm=.h) \
	$(YMFILES:.ym=.m) $(LMFILES:.lm=.m) $(YFILES:.y=.c) $(LFILES:.l=.c)

# files that will be removed on make clean, along with .o's
COMMON_GARBAGE = $(BY_PRODUCTS) TAGS tags $(VERSFILE).c $(DERIVED_SRC) \
	Makefile.depends .depend_done core .make.out*

# these are other versions of the library we want to nuke
SPECIFIC_GARBAGE = \
	lib$(NAME)*.a \
	$(SPECFILES) \
	$(SPECFILES:.spec=.aux)

# this stuff gets nuked with a rm -r
DIRECTORY_GARBAGE = $(OPT_OBJ) $(DEBUG_OBJ) $(PROFILE_OBJ) 

# dependency files derived in the build process
DFILES = $(MFILES:.m=.d) $(CFILES:.c=.d) $(SFILES:.s=.d) \
	$(PSWFILES:.psw=.d) $(PSWMFILES:.pswm=.d) \
	$(YMFILES:.ym=.d) $(LMFILES:.lm=.d) $(YFILES:.y=.d) $(LFILES:.l=.d)


########################## Commands ##############################

# command to print source
PRINT = list

