454 lines
16 KiB
Makefile
Executable File
454 lines
16 KiB
Makefile
Executable File
#/*
|
|
# * Copyright (c) 1991-1994 by the University of Southern California
|
|
# *
|
|
# * For copying and distribution information, please see the file
|
|
# * <usc-license.h>.
|
|
# */
|
|
#
|
|
|
|
# This is the boilerplate Makefile for the Prospero Directory Service.
|
|
# It contains generic targets so that they do not have to be repeated
|
|
# for each inferior makefile.
|
|
#
|
|
## ENVIRONMENT ASSUMPTIONS
|
|
|
|
# Every Makefile in Prospero has (possibly unset) variables in it
|
|
# named PROGS, SPECIAL_PROGS, DATA_FILE_TARGETS, OTHERPROGS,
|
|
# CFILES, OBJECTS, SUBDIRS, PROSPERO_ROOT
|
|
# PROGS:
|
|
# These are the programs which follow the default rule for making and
|
|
# which are installed by default. They will be deleted during cleanup.
|
|
# SPECIAL_PROGS:
|
|
# These are also installed by default, but it have their own special rules
|
|
# for making. They will be deleted during cleanup.
|
|
# DATA_FILE_TARGETS:
|
|
# Targets made that are installed in the bin (with mode 644 or 664) but
|
|
# are not executables. They will be deleted
|
|
# during cleanup.
|
|
# General-purpose libraries are DATA_FILE_TARGETS
|
|
# OTHERTARGETS:
|
|
# These programs and other targets also follow the default making rules,
|
|
# but are not installed by default. They will be deleted during cleanup.
|
|
# SPECIAL_OTHERTARGETS:
|
|
# These programs and other targets are not installed by default.
|
|
# They have their own special rule sets for making. They will be deleted
|
|
# during cleanup.
|
|
# Special-purpose libraries are DATA_FILE_TARGETS
|
|
# SUBDIRS:
|
|
# Subdirectories that this Makefile will recursively execute in.
|
|
# PROSPERO_ROOT:
|
|
# A relative path up to the top-level Makefile.
|
|
|
|
|
|
# Every Prospero Makefile:
|
|
#
|
|
# Every Prospero Makefile must have a line labelled '# Dependencies',
|
|
# after which the 'setdependencies' development utility is free to write.
|
|
# It must have a first target named 'all' and another target named 'install'
|
|
|
|
# The 'install' target does not currently install libraries. Perhaps later.
|
|
# Unclear what the users want here.
|
|
|
|
## ADDITIONAL CONVENTIONS
|
|
|
|
# The targets ending in _LIB are real file names of single libraries that
|
|
# Prospero is compiled with.
|
|
|
|
# Targets ending in _LIBS are linker command lines.
|
|
# They refer to libraries in the Prospero distribution (_LIB libraries)
|
|
# and to system libraries ("-lm", especially).
|
|
# They also may contain "-u" linker flags.
|
|
|
|
# Each target ending in _LIBS has a matching _LIBS_DEPENDENCIES
|
|
# That refers to files in this distribution (i.e., everything that may
|
|
# change during the development process.) They contain no -l or -u.
|
|
|
|
##############################################################################
|
|
##############################################################################
|
|
##############################################################################
|
|
|
|
#
|
|
# This top-level dependency is important so that we will always run
|
|
# 'all' as our top dependency, and so that Makefile.boilerplate can
|
|
# be included into a regular Makefile, irrespective of order.
|
|
|
|
boilerplate_all: all
|
|
|
|
###
|
|
### VARIABLES used by all Makefiles.
|
|
###
|
|
|
|
# Do not change this line.
|
|
# CFLAGS set up above. This adds stuff to it.
|
|
|
|
CFLAGS = $(CCFLAGS) $(INCS) $(MACHDEF)
|
|
|
|
#### SED-SCRIPT
|
|
|
|
# We pipe compilation jobs passed on to subdirectories
|
|
# through this sed script in order to precede CC and GCC error
|
|
# messages with the full pathname name of the file at fault.
|
|
# This lets EMACS's (next-error) function visit compilation errors that
|
|
# occur in subdirectories.
|
|
SED_SCRIPT = sed -e '/^[a-z0123456789_\/\.]*\.[ch]:/s,^,'$$i'\/,'
|
|
|
|
##### Prospero Include Files
|
|
|
|
P_INC = -I$(PROSPERO_ROOT)/include
|
|
|
|
# Used by all subsidiary makefiles on an as-needed basis.
|
|
INCS = $(P_INC) $(K_INC)
|
|
|
|
|
|
### All of these are passed through to the children/descendants.
|
|
### These are all the items which might be set differently in
|
|
### Makefile.config, and therefore have to be passed on to
|
|
### descendants when they change.
|
|
|
|
## PASTHRU is officially dead now, because it is incompatible with never
|
|
## having to specify the old PROSPERO_ROOT. --swa, 5/8/94
|
|
##
|
|
|
|
#PASTHRU = \
|
|
# AR="$(AR)" \
|
|
# AR_FLAGS="$(AR_FLAGS)" \
|
|
# CC="$(CC)" \
|
|
# CFLAGS="$(CFLAGS)" \
|
|
# COMPILER_PREPENDS_C_SYMBOLS_WITH_UNDERSCORE="$(COMPILER_PREPENDS_C_SYMBOLS_WITH_UNDERSCORE)" \
|
|
# GENERATION="$(GENERATION)" \
|
|
# GENERATIONSUFFIX="$(GENERATIONSUFFIX)" \
|
|
# GROUP=$(GROUP) \
|
|
# INSTALL="$(INSTALL)" \
|
|
# KRB_LIBS="$(KRB_LIBS)" \
|
|
# LIBS="$(LIBS)" \
|
|
# MACHDEF="$(MACHDEF)" MAKE=$(MAKE) \
|
|
# MORE_USER_PROGS="$(MORE_USER_PROGS)" \
|
|
# MORE_SERVER_PROGS="$(MORE_SERVER_PROGS)" \
|
|
# OWNER=$(OWNER) \
|
|
# P_BINARIES="$(P_BINARIES)" \
|
|
# RANLIB="$(RANLIB)" \
|
|
# RM="$(RM)"
|
|
# VCACHE_LIBS="$(VCACHE_LIBS)" \
|
|
# VCACHE_LIBS_DEPENDENCIES="$(VCACHE_LIBS_DEPENDENCIES)" \
|
|
# WCFLAGS="$(WCFLAGS)"
|
|
|
|
|
|
# The targets ending in _LIB are real file names of single libraries that
|
|
# Prospero is compiled with.
|
|
|
|
PFS_LIB = $(PROSPERO_ROOT)/lib/pfs/libpfs.a
|
|
FIL_LIB = $(PROSPERO_ROOT)/lib/filters/libfilter.a
|
|
CMP_LIB = $(PROSPERO_ROOT)/lib/pcompat/libpcompat.a
|
|
RDP_LIB = $(PROSPERO_ROOT)/lib/ardp/libardp.a
|
|
SRV_LIB = $(PROSPERO_ROOT)/lib/psrv/libpsrv.a
|
|
VCACHE_LIB = $(PROSPERO_ROOT)/user/vcache/libpvcache.a
|
|
GOPHER_GW_LIB = $(PROSPERO_ROOT)/lib/psrv/gopher_gw/libpgoph_gw.a
|
|
WAIS_GW_LIB = $(PROSPERO_ROOT)/lib/psrv/wais_gw/libpwais_gw.a
|
|
|
|
# For ARCHIE servers, version 3. To use this, you will need to get the ARCHIE
|
|
# distribution from Bunyip Information Systems.
|
|
#ARCHIE2_LIB = $(PROSPERO_ROOT)/lib/psrv/archie2/libpsarchie.a
|
|
|
|
|
|
# For ARCHIE servers, version 3. To use this, you will need to get the ARCHIE
|
|
# distribution from Bunyip Information Systems.
|
|
ARCHIE3_PSARCHIE_LIB = $(ARCHIE_ROOT)/lib/libpsarchie/$(SYSTYPE)/libpsarchie.a
|
|
ARCHIE3_PARCHIE_LIB = $(ARCHIE_ROOT)/lib/libparchie/$(SYSTYPE)/libparchie.a
|
|
|
|
#### LIBRARIES USED FOR ACTUALLY LINKING AND DEPENDENCIES
|
|
|
|
## PFS_VCACHE_LIBS
|
|
# Libraries to use if you link with LIBPFS and you use the VCACHE library.
|
|
# This is usually referred to indirectly, through USE_PFS_VCACHE_LIBS,
|
|
# which is defined in Makefile.config
|
|
# PFS_VCACHE_LIBS is a list of all the libraries one needs in order to access
|
|
# the PFS library if it is linked with the VCACHE library.
|
|
# The libpvcache library (Special purpose hack) has the vcache2a() function
|
|
# as its only entry point.
|
|
|
|
# Documentation on the content of this entry:
|
|
# "-u $(COMPILER_PREPENDS_C_SYMBOLS_WITH_UNDERSCORE)vcache2a" is
|
|
# because of cross-dependencies between $(VCACHE_LIB) and $(PFS_LIB)
|
|
# "-u $(COMPILER_PREPENDS_C_SYMBOLS_WITH_UNDERSCORE)waisRetrieveFileByHsoname"
|
|
# is not strictly necessary. It serves as a reminder of why we're
|
|
# including $(WAIS_GW_LIB).
|
|
# We need to integrate the WAIS library (at least
|
|
# waisRetrieveFileByHsoname) in with libpvcache.
|
|
# -lm is needed for $(WAIS_GW_LIB)
|
|
# It is unclear to me why we need to GOPHER_GW_LIB
|
|
|
|
PFS_VCACHE_LIBS = \
|
|
-u $(COMPILER_PREPENDS_C_SYMBOLS_WITH_UNDERSCORE)vcache2a \
|
|
$(VCACHE_LIB) \
|
|
$(GOPHER_GW_LIB) \
|
|
-u $(COMPILER_PREPENDS_C_SYMBOLS_WITH_UNDERSCORE)waisRetrieveFileByHsoname \
|
|
$(WAIS_GW_LIB) -lm \
|
|
$(PFS_LIBS)
|
|
|
|
# VCACHE_LIBS_DEPENDENCIES
|
|
# Bits of Prospero that, if they change, mean that vcache-lib-using
|
|
# programs should be recompiled too. This is used by the Makefile
|
|
# dependencies.
|
|
|
|
PFS_VCACHE_LIBS_DEPENDENCIES = \
|
|
$(VCACHE_LIB) \
|
|
$(GOPHER_GW_LIB) \
|
|
$(WAIS_GW_LIB) \
|
|
$(PFS_LIBS_DEPENDENCIES)
|
|
|
|
### PFS_LIBS
|
|
### This library is used by any programs that want to link with the normal
|
|
### Prospero PFS library.
|
|
### This refers to USE_VCACHE_LIBS and USE_VCACHE_LIBS_DEPENDENCIES, in
|
|
### "Makefile.config"
|
|
### This does NOT include anything having to do with the VCACHE library.
|
|
### Makefile.config sets USE_VCACHE_LIBS to either PFS_LIBS or to
|
|
### PFS_VCACHE_LIBS
|
|
|
|
# Documentation on the content of this entry:
|
|
# "-u $(COMPILER_PREPENDS_C_SYMBOLS_WITH_UNDERSCORE)stequal" is here
|
|
# because the ARDP DNS caching uses "stequal" to make its
|
|
# comparisons.
|
|
# "-u $(COMPILER_PREPENDS_C_SYMBOLS_WITH_UNDERSCORE)plog" is because
|
|
# of cross-dependencies between SRV_LIB and PFS_LIB. There is a
|
|
# call to plog() from ardp_accept(). Will be fixed in next full
|
|
# release.
|
|
# "-u $(COMPILER_PREPENDS_C_SYMBOLS_WITH_UNDERSCORE)pafree" is because
|
|
# the $(RDP_LIB) depends upon the 'pafree' function in PFS_LIB.
|
|
# $(LIBS) is here because of SCOUNIX, which needs "-lsocket"
|
|
|
|
PFS_LIBS = \
|
|
-u $(COMPILER_PREPENDS_C_SYMBOLS_WITH_UNDERSCORE)plog \
|
|
$(SRV_LIB) \
|
|
-u ${COMPILER_PREPENDS_C_SYMBOLS_WITH_UNDERSCORE}stequal \
|
|
-u ${COMPILER_PREPENDS_C_SYMBOLS_WITH_UNDERSCORE}pafree \
|
|
-u ${COMPILER_PREPENDS_C_SYMBOLS_WITH_UNDERSCORE}sindex \
|
|
$(PFS_LIB) \
|
|
$(FIL_LIB) \
|
|
$(RDP_LIB) \
|
|
$(KRB_LIBS) \
|
|
$(LIBS)
|
|
|
|
PFS_LIBS_DEPENDENCIES = \
|
|
$(SRV_LIB) \
|
|
$(PFS_LIB) \
|
|
$(FIL_LIB) \
|
|
$(RDP_LIB) \
|
|
$(KRB_LIBS_DEPENDENCIES) \
|
|
$(LIBS_DEPENDENCIES)
|
|
|
|
|
|
### SRV_LIBS
|
|
### This library is used by any server program that needs PFS and PSRV
|
|
### libraries. (i.e., by DIRSRV). DIRSRV does not do file retrieval, so
|
|
### we won't need VCACHE_LIBS here.
|
|
### This is used only by programs in the 'server' directory of the Prospero
|
|
### distribution.
|
|
###
|
|
|
|
# After RDP_LIB's use of plog() is fixed, change to this one:
|
|
#SRV_LIBS = \
|
|
# $(SERVER_DB_LIBS) \
|
|
# $(PFS_LIBS) \
|
|
# $(SRV_LIB)
|
|
|
|
#For now:
|
|
# Note that SERVER_DB_LIBS precedes PFS_LIBS so that server DB library
|
|
# functions can easily refer to PFS library functions.
|
|
#SRV_LIBS = $(SERVER_DB_LIBS) $(PFS_LIBS)
|
|
SRV_LIBS = $(SERVER_DB_LIBS)\
|
|
$(ARCHIE_ROOT)/lib/libpsarchie/$(SYSTYPE)/libpsarchie.a\
|
|
$(ARCHIE_ROOT)/lib/libparchie/$(SYSTYPE)/libparchie.a\
|
|
$(ARCHIE_ROOT)/lib/startdb/$(SYSTYPE)/libstartdb.a\
|
|
$(ARCHIE_ROOT)/lib/archsearch/$(SYSTYPE)/libarchsearch.a\
|
|
$(ARCHIE_ROOT)/lib/libarchie/$(SYSTYPE)/libarchie.a\
|
|
$(ARCHIE_ROOT)/lib/archstridx/$(SYSTYPE)/libarchstridx.a\
|
|
$(ARCHIE_ROOT)/lib/patrie/$(SYSTYPE)/libpatrie.a\
|
|
$(ARCHIE_ROOT)/webindex/lib/$(SYSTYPE)/libwebindex.a\
|
|
$(BERKDB_ROOT)/PORT/$(SYSTYPE)/libdb.a \
|
|
$(PFS_LIBS) -lm
|
|
|
|
# -u ${COMPILER_PREPENDS_C_SYMBOLS_WITH_UNDERSCORE}verify_acl_list
|
|
# -u ${COMPILER_PREPENDS_C_SYMBOLS_WITH_UNDERSCORE}acl_message
|
|
|
|
# $(LIBPARCHIE_MODULE)/$(SYSTYPE)/libparchie.a\
|
|
# ../../wais/libpwais.a \
|
|
# ../../freeWAIS/bin/client.a \
|
|
# ../../freeWAIS/bin/inv.a \
|
|
# ../../freeWAIS/bin/wais.a \
|
|
# ../../freeWAIS/bin/libftw.a \
|
|
|
|
|
|
|
|
# After RDP_LIB's use of plog() is fixed, change to this one:
|
|
#SRV_LIBS_DEPENDENCIES = \
|
|
# $(SERVER_DB_LIBS_DEPENDENCIES) \
|
|
# $(PFS_LIBS_DEPENDENCIES) \
|
|
# $(SRV_LIB)
|
|
|
|
#For now:
|
|
SRV_LIBS_DEPENDENCIES = \
|
|
$(SERVER_DB_LIBS_DEPENDENCIES) \
|
|
$(PFS_LIBS_DEPENDENCIES)
|
|
|
|
### CMP_LIBS
|
|
### These libraries are used by programs that link with the compatibility
|
|
### library. Such programs do not need anything else magic.
|
|
### The distribution only invokes this in app/Makefile.
|
|
|
|
# The -u refers to system calls that are redefined by the compatibility
|
|
# library.
|
|
|
|
CMP_LIBS = \
|
|
-u $(COMPILER_PREPENDS_C_SYMBOLS_WITH_UNDERSCORE)open \
|
|
-u $(COMPILER_PREPENDS_C_SYMBOLS_WITH_UNDERSCORE)stat \
|
|
-u $(COMPILER_PREPENDS_C_SYMBOLS_WITH_UNDERSCORE)lstat \
|
|
-u $(COMPILER_PREPENDS_C_SYMBOLS_WITH_UNDERSCORE)creat \
|
|
-u $(COMPILER_PREPENDS_C_SYMBOLS_WITH_UNDERSCORE)execve \
|
|
$(CMP_LIB) \
|
|
$(USE_PFS_VCACHE_LIBS)
|
|
|
|
CMP_LIBS_DEPENDENCIES = $(CMP_LIB) $(USE_PFS_VCACHE_LIBS_DEPENDENCIES)
|
|
|
|
|
|
#### Directories used by "installdirs" dependency.
|
|
#### note that installdirs assumes 'mkdir -p' exists.
|
|
####
|
|
|
|
|
|
DIR755 = $(DESTDIR)/$(PSRV_SHADOW) $(DESTDIR)/$(PSRV_STORAGE) $(DESTDIR)/$(PSRV_SECURITY) $(P_BINARIES)
|
|
|
|
VCACHE_DIR1755 = $(DESTDIR)/$(P_CACHE)/p $(DESTDIR)/$(P_CACHE)/vc $(DESTDIR)/$(P_CACHE)/tmp
|
|
DIR1777 = $(VCACHE_DIR1755)
|
|
|
|
|
|
###
|
|
### RULES used by all Makefiles
|
|
###
|
|
|
|
##
|
|
## This rule is always used to make OBJECTS from the matching "c" files.
|
|
##
|
|
## Not needed any more, because with our new conventional use of CFLAGS,
|
|
## this is now an implicit rule.
|
|
# ${OBJECTS}:
|
|
# ${CC} ${CFLAGS} $*.c
|
|
|
|
|
|
## if Makefile.config changes, recompile everything.
|
|
## For this rule to have any effect, Makefile.boilerplate must be included
|
|
## after $(OBJECTS) is set.
|
|
##$(OBJECTS): $(PROSPERO_ROOT)/Makefile.config
|
|
|
|
|
|
|
|
# This is a generic go-through-all-subdirs function. It replaces a number
|
|
# of special cases.
|
|
SUBDIRS_MAKE_START = for i in $(SUBDIRS) $$unset_dummy_sh_variable; do (cd $$i; echo making in `pwd` ; $(MAKE)
|
|
SUBDIRS_MAKE_END = ); done
|
|
|
|
## These are now generic Makefile boilerplate.
|
|
## These are all the files that might be generated during the compilation
|
|
## process.
|
|
## GENERATED_FILES is not referred to outside of this Makefile; it is a
|
|
## macro because it is used by the 'clean:' and 'hide:' targets that follow.
|
|
|
|
## XXX These might also need to be added: *.o makedep
|
|
GENERATED_FILES=tags TAGS *~ a.out core $(OBJECTS) $(PROGS) $(SPECIAL_PROGS) $(DATA_FILE_TARGETS) $(OTHERTARGETS) $(SPECIAL_OTHERTARGETS) *.old *.new *.backup *.syms
|
|
|
|
clean:
|
|
rm -f $(GENERATED_FILES)
|
|
$(SUBDIRS_MAKE_START) clean $(SUBDIRS_MAKE_END)
|
|
# for i in $(SUBDIRS) $$unset_dummy_sh_variable; do (cd $$i; $(MAKE) clean); done
|
|
|
|
# Piping this through SED hides the many error messages from files not found.
|
|
# mv -f isn't the same as RM -f; no way to make MV not complain about unfound
|
|
# files, so we'd have to write our own.
|
|
hide:
|
|
-mkdir .hide
|
|
-(mv -f $(GENERATED_FILES) .hide ; \
|
|
$(SUBDIRS_MAKE_START) hide $(SUBDIRS_MAKE_END)) 2>&1 | \
|
|
sed -e '/^mv:.*: Cannot access: No such file or directory$$/d' \
|
|
-e '/^\*\*\* Error code 1 (ignored)$$/d' \
|
|
-e '/^mkdir: .hide: File exists$$/d'
|
|
|
|
# for i in $(SUBDIRS) $$unset_dummy_sh_variable; \
|
|
# do (cd $$i; $(MAKE) hide); done 2>&1 | \
|
|
# sed -e '/^mv:.*: Cannot access: No such file or directory$$/d' \
|
|
# -e '/^\*\*\* Error code 1 (ignored)$$/d' \
|
|
# -e '/^mkdir: .hide: File exists$$/d'
|
|
|
|
unhide:
|
|
-mv .hide/* .hide/.??* .
|
|
-rmdir .hide
|
|
$(SUBDIRS_MAKE_START) unhide 2>&1 | $(SED_SCRIPT) $(SUBDIRS_MAKE_END)
|
|
|
|
|
|
## Making all subdirs.
|
|
|
|
all_subdirs:
|
|
$(SUBDIRS_MAKE_START) ${PASTHRU} all 2>&1 | $(SED_SCRIPT) $(SUBDIRS_MAKE_END)
|
|
|
|
##
|
|
## I do not use these for development; I use emacs TAGS exclusively.
|
|
## EMACS tags are not part of the general boilerplate.
|
|
## that's because they're all stuck in the top-level directory.
|
|
## Send fixes to these if you want them to be generally useful for VI-oriented
|
|
## developers.
|
|
|
|
newtags:
|
|
-rm -f tags
|
|
touch tags
|
|
find `pwd` -name "*\.[ch]" -exec ctags -a {} \;
|
|
|
|
# Target has problems: depends on itself (recursively)
|
|
tags: *.c *.h
|
|
[ -f tags ] && \
|
|
find `pwd` -name "*\.[ch]" -newer tags -exec ctags -u {} \; || \
|
|
$(MAKE) newtags
|
|
|
|
## A nice generic EMACS TAGS rule that I might follow later.
|
|
##TAGS:
|
|
## etags `find . -name "*\.[ch]" -print`
|
|
|
|
# A different tags file in each subdirectory.
|
|
|
|
etags: TAGS
|
|
$(SUBDIRS_MAKE_START) etags $(SUBDIRS_MAKE_END)
|
|
|
|
TAGS: $(CFILES)
|
|
etags $(CFILES) $(PROSPERO_ROOT)/misc/empty.c
|
|
|
|
###
|
|
### Rules and macros for checking out code with RCS
|
|
### This is in practice never used by me, but I throw it in here in case
|
|
### one day someone misses it. Presumably BCN had a good reason for having
|
|
### it here. --swa (hey, bcn, take a look and see if you will ever use
|
|
### this again, ok? --swa) XXX
|
|
|
|
|
|
CODE = $(CFILES) Makefile
|
|
|
|
src: $(CODE)
|
|
|
|
$(CODE):
|
|
co -q $@
|
|
|
|
###
|
|
### Things still to be done XXXX
|
|
### none of these urgent.
|
|
### Fix archie2 and archie3/makefile after rest are consistent.
|
|
### handle INSTALL Dependency appropriately, with or without libraries.
|
|
### currently, 'install' is in sad shape.
|
|
### rm to $(RM)
|
|
### ar to $(AR)
|
|
### fix WAIS copyright
|
|
### Have BCN look at CODE and src: dependency
|
|
|
|
## intriguing comment in WAIS makefile. Would like to take a look at this
|
|
## (re: configuration)
|
|
# at WAIS Inc, this is done automatically by the shared .cshrc script
|
|
# see /usr/local/shared/shared.cshrc
|
|
|
|
# figure out why mitra stuck in the gopher_gw_lib. Fix that dependency
|