# # 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@@ @@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 bin: zsh modules: headers MAIN_OBJS = main.o LSTMP = LLIST = NSTMP = stamp-modobjs NLIST = `cat stamp-modobjs` LIBZSH = libzsh-$(VERSION).$(DL_EXT) NIBZSH = ZSH_EXPORT = $(EXPOPT)$(sdir)/zsh.export ZSH_NXPORT = ENTRYOBJ = modentry..o NNTRYOBJ = LDRUNPATH = LD_RUN_PATH=$(libdir)/zsh NDRUNPATH = zsh: $(@L@IBZSH) $(@L@STMP) $(MAIN_OBJS) rm -f $@ $(@L@DRUNPATH) $(LINK) $(MAIN_OBJS) $(@L@LIST) $(ZSH_@E@XPORT) $(@L@IBZSH) $(LIBS) $(LIBZSH): $(LIBOBJS) $(NSTMP) rm -f $@ $(DLLINK) $(LIBOBJS) $(NLIST) 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 rm-modobjs-tmp: rm -f stamp-modobjs.tmp @@config.mk@@ Makemod modules.index prep: modules-bltin $(CONFIG_INCS) ( cd $(sdir_top) && $(SHELL) $(subdir)/mkmodindex.sh $(subdir) ) \ > modules.index.tmp @if cmp -s modules.index.tmp modules.index; then \ rm -f modules.index.tmp; \ echo "\`modules.index' is up to date."; \ else \ mv -f modules.index.tmp modules.index; \ echo "Updated \`modules.index'."; \ fi @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 FORCE: # ========== LINKING IN MODULES ========== modules-bltin: Makefile if test -f mymods.conf; then \ cat mymods.conf > $@; \ elif test @D@ = N; then \ cat $(sdir)/xmods.conf > $@; \ elif test @RTLD_GLOBAL_OK@ != yes; then \ echo comp1 > $@; \ else \ echo > $@; \ fi modules: $(@E@NTRYOBJ) $(ENTRYOBJ): FORCE @$(MAKE) -f Makemod $(MAKEDEFS) $@ # ========== ANSI TO K&R CONVERSION ========== ANSI_KNR = ansi2knr ANSIKNR = Makemod: $(ANSI@U@KNR) ansi2knr.o: ansi2knr.c $(CC) -c $(CPPFLAGS) $(CFLAGS) $(sdir)/ansi2knr.c ansi2knr: ansi2knr.o rm -f $@ $(CC) $(LDFLAGS) $(EXELDFLAGS) -o $@ ansi2knr.o # ========== DEPENDENCIES FOR INSTALLING ========== install: install.bin install.modules uninstall: uninstall.bin uninstall.modules install.bin: install.bin-here uninstall.bin: uninstall.bin-here # install binary, creating install directory if necessary install.bin-here: zsh install.bin-@L@ $(sdir_top)/mkinstalldirs $(bindir) $(INSTALL_PROGRAM) $(STRIPFLAGS) zsh $(bindir)/zsh-$(VERSION) if test -f $(bindir)/zsh; then \ rm -f $(bindir)/zsh.old; \ ln $(bindir)/zsh $(bindir)/zsh.old; \ else :; fi rm -f $(bindir)/zsh.new ln $(bindir)/zsh-$(VERSION) $(bindir)/zsh.new mv $(bindir)/zsh.new $(bindir)/zsh install.bin-N: install.bin-L: $(LIBZSH) $(sdir_top)/mkinstalldirs $(libdir)/zsh $(INSTALL_PROGRAM) $(LIBZSH) $(libdir)/zsh/$(LIBZSH) # uninstall binary uninstall.bin-here: uninstall.bin-@L@ rm -f $(bindir)/zsh-$(VERSION) $(bindir)/zsh uninstall.bin-N: uninstall.bin-L: rm -f $(libdir)/zsh/$(LIBZSH) # ========== 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 clean-here: rm -f modules.index.tmp modules.stamp zsh ansi2knr.o ansi2knr rm -f modules.index modules-bltin rm -f libzsh-*.$(DL_EXT) distclean-here: rm -f TAGS tags rm -f Makefile mymods.conf mostlyclean: mostlyclean-modules clean: clean-modules distclean: distclean-modules realclean: realclean-modules mostlyclean-modules clean-modules distclean-modules realclean-modules: Makemod @$(MAKE) -f Makemod $(MAKEDEFS) `echo $@ | sed 's/-modules//'` @@clean.mk@@ # ========== RECURSIVE MAKES ========== install.modules uninstall.modules \ modobjs modules headers proto $(MAIN_OBJS): Makemod @$(MAKE) -f Makemod $(MAKEDEFS) $@ $(MAIN_OBJS): $(sdir)/zsh.h