mirror of
https://github.com/zsh-users/zsh
synced 2024-11-02 09:47:59 +00:00
226 lines
6.2 KiB
Makefile
226 lines
6.2 KiB
Makefile
#
|
|
# 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; \
|
|
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: $(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
|
|
prep: 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)
|
|
${SHELL} $(sdir_top)/mkinstalldirs $(DESTDIR)$(bindir)
|
|
$(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 headers proto
|
|
|
|
$(MAIN_OBJS): $(sdir)/zsh.h
|