# # Makefile for Src subdirectory # # Copyright (c) 1995-1997 Richard Coleman # All rights reserved. # # Permission is hereby granted, without written agreement and without # license or royalty fees, to use, copy, modify, and distribute this # software and to distribute modified versions of this software for any # purpose, provided that the above copyright notice and the following # two paragraphs appear in all copies of this software. # # In no event shall Richard Coleman or the Zsh Development Group be liable # to any party for direct, indirect, special, incidental, or consequential # damages arising out of the use of this software and its documentation, # even if Richard Coleman and the Zsh Development Group have been advised of # the possibility of such damage. # # Richard Coleman and the Zsh Development Group specifically disclaim any # warranties, including, but not limited to, the implied warranties of # merchantability and fitness for a particular purpose. The software # provided hereunder is on an "as is" basis, and Richard Coleman and the # Zsh Development Group have no obligation to provide maintenance, # support, updates, enhancements, or modifications. # subdir = Src dir_top = .. SUBDIRS = @VERSION_MK@ # source/build directories VPATH = @srcdir@ sdir = @srcdir@ sdir_top = @top_srcdir@ INSTALL = @INSTALL@ LN = @LN@ @DEFS_MK@ sdir_src = $(sdir) dir_src = . # ========= DEPENDENCIES FOR BUILDING ========== LINK = $(CC) $(LDFLAGS) $(EXELDFLAGS) $(EXTRA_LDFLAGS) -o $@ DLLINK = $(DLLD) $(LDFLAGS) $(LIBLDFLAGS) $(DLLDFLAGS) -o $@ all: bin modules .PHONY: all bin: zsh$(EXEEXT) .PHONY: bin modules: headers .PHONY: modules MAIN_OBJS = main.o L = @L@ LSTMP = LLIST = NSTMP = stamp-modobjs NLIST = `cat stamp-modobjs` LIBZSH = libzsh-$(VERSION).$(DL_EXT) NIBZSH = INSTLIB = @INSTLIB@ UNINSTLIB = @UNINSTLIB@ ZSH_EXPORT = $(EXPOPT)zsh.export ZSH_NXPORT = ENTRYOBJ = modentry..o NNTRYOBJ = LDRUNPATH = LD_RUN_PATH=$(libdir)/$(tzsh) NDRUNPATH = EXTRAZSHOBJS = @EXTRAZSHOBJS@ zsh$(EXEEXT): $(@L@IBZSH) $(@L@STMP) $(MAIN_OBJS) zsh.export $(EXTRAZSHOBJS) rm -f $@ $(@L@DRUNPATH) $(LINK) $(MAIN_OBJS) $(EXTRAZSHOBJS) $(@L@LIST) $(ZSH_@E@XPORT) $(@L@IBZSH) $(LIBS) $(LIBZSH): $(LIBOBJS) $(NSTMP) rm -f $@ $(DLLINK) $(LIBOBJS) $(NLIST) $(LIBS) zsh.res.o: $(sdir)/zsh.rc $(sdir)/zsh.ico windres -O coff --include-dir $(sdir) -i $(sdir)/zsh.rc -o zsh.res.o stamp-modobjs: modobjs @if cmp -s stamp-modobjs.tmp stamp-modobjs; then \ rm -f stamp-modobjs.tmp; \ echo "\`stamp-modobjs' is up to date."; \ else \ mv -f stamp-modobjs.tmp stamp-modobjs; \ echo "Updated \`stamp-modobjs'."; \ fi modobjs: headers rm-modobjs-tmp .PHONY: modobjs rm-modobjs-tmp: rm -f stamp-modobjs.tmp .PHONY: rm-modobjs-tmp @CONFIG_MK@ Makemod prep: $(CONFIG_INCS) $(dir_top)/config.modules @case $(sdir_top) in \ /*) top_srcdir=$(sdir_top) ;; \ *) top_srcdir=$(subdir)/$(sdir_top) ;; \ esac; \ export top_srcdir; \ echo 'cd $(dir_top) && $(SHELL)' \ '$$top_srcdir/$(subdir)/mkmakemod.sh $(subdir) Makemod'; \ cd $(dir_top) && \ $(SHELL) $$top_srcdir/$(subdir)/mkmakemod.sh $(subdir) Makemod @$(MAKE) -f Makemod $(MAKEDEFS) prep || rm -f Makemod .PHONY: prep FORCE: .PHONY: FORCE # ========== LINKING IN MODULES ========== mymods.conf: @echo Linking with the standard modules. modules: $(@E@NTRYOBJ) $(ENTRYOBJ): FORCE @$(MAKE) -f Makemod $(MAKEDEFS) $@ # ========== DEPENDENCIES FOR INSTALLING ========== install: install.bin install.modules uninstall: uninstall.bin uninstall.modules .PHONY: install uninstall install.bin: install.bin-here uninstall.bin: uninstall.bin-here .PHONY: install.bin uninstall.bin # install binary, creating install directory if necessary install.bin-here: zsh$(EXEEXT) $(INSTLIB) ${SHELL} $(sdir_top)/mkinstalldirs $(DESTDIR)$(bindir) $(INSTALL_PROGRAM) $(STRIPFLAGS) zsh$(EXEEXT) $(DESTDIR)$(bindir)/$(tzsh)-$(VERSION)$(EXEEXT) if test -f $(DESTDIR)$(bindir)/$(tzsh)$(EXEEXT); then \ rm -f $(DESTDIR)$(bindir)/$(tzsh).old; \ $(LN) $(DESTDIR)$(bindir)/$(tzsh)$(EXEEXT) $(DESTDIR)$(bindir)/$(tzsh).old; \ else :; fi rm -f $(DESTDIR)$(bindir)/$(tzsh).new $(LN) $(DESTDIR)$(bindir)/$(tzsh)-$(VERSION)$(EXEEXT) $(DESTDIR)$(bindir)/$(tzsh).new mv $(DESTDIR)$(bindir)/$(tzsh).new $(DESTDIR)$(bindir)/$(tzsh)$(EXEEXT) .PHONY: install.bin-here install.bin-N: install.bin-L: $(LIBZSH) ${SHELL} $(sdir_top)/mkinstalldirs $(DESTDIR)$(libdir)/$(tzsh) $(INSTALL_PROGRAM) $(LIBZSH) $(DESTDIR)$(libdir)/$(tzsh)/$(LIBZSH) install.cygwin-lib: $(LIBZSH) $(INSTALL_PROGRAM) $(LIBZSH) $(DESTDIR)$(bindir)/$(LIBZSH) .PHONY: install.bin-N install.bin-L install.cygwin-lib # uninstall binary uninstall.bin-here: $(UNINSTLIB) rm -f $(DESTDIR)$(bindir)/$(tzsh)-$(VERSION) $(DESTDIR)$(bindir)/$(tzsh)$(EXEEXT) .PHONY: uninstall.bin-here uninstall.bin-@L@ uninstall.bin-N: uninstall.bin-L: rm -f $(DESTDIR)$(libdir)/$(tzsh)/$(LIBZSH) uninstall.cygwin-lib: rm -f $(DESTDIR)$(bindir)/$(LIBZSH) .PHONY: uninstall.bin-N uninstall.bin-L uninstall.cygwin-lib # ========== DEPENDENCIES FOR CLEANUP ========== # Since module cleanup rules depend on Makemod, they come first. This # forces module stuff to get cleaned before Makemod itself gets # deleted. mostlyclean-here: rm -f stamp-modobjs stamp-modobjs.tmp .PHONY: mostlyclean-here clean-here: rm -f modules.stamp zsh$(EXEEXT) rm -f libzsh-*.$(DL_EXT) .PHONY: clean-here distclean-here: rm -f TAGS tags rm -f Makefile .PHONY: distclean-here mostlyclean: mostlyclean-modules clean: clean-modules distclean: distclean-modules realclean: realclean-modules .PHONY: mostlyclean clean distclean realclean # Don't remake Makemod just to delete things, even if it doesn't exist. mostlyclean-modules clean-modules distclean-modules realclean-modules: if test -f Makemod; then \ $(MAKE) -f Makemod $(MAKEDEFS) `echo $@ | sed 's/-modules//'`; \ fi; \ exit 0 .PHONY: mostlyclean-modules clean-modules distclean-modules \ realclean-modules @CLEAN_MK@ # ========== RECURSIVE MAKES ========== install.modules uninstall.modules \ modobjs modules headers proto $(MAIN_OBJS) zsh.export: Makemod @$(MAKE) -f Makemod $(MAKEDEFS) $@ .PHONY: install.modules uninstall.modules $(MAIN_OBJS): $(sdir)/zsh.h