X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=distrib%2FMakefile-bin.in;h=dd96114a1dc728f9dc0340657d85de195e471761;hb=3d7f51b9c6b157f31f46623bfbd2408aafe137ab;hp=404f4d126b15d4cdb9b37053131f91b65d6b9411;hpb=1fb1ab5d53a09607e7f6d2450806760688396387;p=ghc-hetmet.git diff --git a/distrib/Makefile-bin.in b/distrib/Makefile-bin.in index 404f4d1..dd96114 100644 --- a/distrib/Makefile-bin.in +++ b/distrib/Makefile-bin.in @@ -1,12 +1,15 @@ +# +# @configure_input@ +# # Instructions for configuring an fptools package. # # There are two ways you can get started with an fptools package, either # by using the unpacked distribution tree in-situ or by installing the # package. # -# Using the package directly is easy, just do `make config', i.e., -# the distribution will *not* work out-of-the-box, you'll have to do -# this first. +# Using the package directly is easy, just do `make in-place'. (The +# distribution will *not* work straight out of the box, you'll have to do +# this first) # # To install the package, you'll have to set one or more of the # following variables: @@ -18,8 +21,8 @@ # where you want the library archives to go. # Note, if you specify /usr/foo/lib for libdir, # the library files for your fptools package will be -# installed in /usr/foo/lib/-, i.e., -# /usr/foo/lib/ghc-2.02. If you don't want the package/version +# installed in /usr/foo/lib/-, e.g., +# /usr/foo/lib/ghc-2.07. If you don't want the package/version # directory appended, you'll have to modify $(real_libdir) # below. # @@ -27,111 +30,225 @@ # path to where the platform-independent files will go. # As for libdir, the effective path for the platform-indep # stuff is $(datadir)/-. If you want -# complete control, see $(real_libdir) +# complete control, see $(real_datadir) # # * platform -# the platform you're installing for. The configure -# makes an educated guess what it, so you will only -# have to set this if it clashes with your reality. +# the platform you're installing for. The configure script +# makes an educated guess, so you'll only have to set this +# if it clashes with your reality, I guess. # -# * infodir -# where to install the Emacs info files # * htmldir # where to install the documentation HTML files. # * dvidir # where to install the DVI files. +# * infodir +# where to install the Emacs info files # -# Installing the documentation is not via the `install' rule, but -# via the rules: `install-docs', `install-html', `install-dvi' -# and `install-info'. +# Installing the documentation is not done as part of the `install' rule, but +# via `install-docs' (or if you want to be selective: `install-html', `install-dvi' +# and `install-info'). # # For more complete instructions, consult the INSTALL file # that came with the bundle, and/or consult the installation # documentation in one of the document directories. # -bindir = @bindir@ -libdir = @libdir@ -datadir = @datadir@ -platform = @platform@ +# Please report any bugs, problems etc. with installing and using this bundle +# Makefile setup to glasgow-haskell-bugs@dcs.gla.ac.uk +# + +# Where the different pieces of the bundle should go: +bindir = @bindir@ +libdir = @libdir@ +datadir = @datadir@ + +platform = @TargetPlatform@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ -infodir = @infodir@ -htmldir = @htmldir@ -dvidir = @dvidir@ +# default +infodir = $(datadir) +htmldir = $(datadir) +dvidir = $(datadir) # # Putting the package stuff in package-specific # directories: # -real_libdir = $(libdir)/$(package)-$(version) -real_datadir = $(datadir)/$(package)-$(version) +real_libdir = $(libdir)/$(package)-$(version) +real_datadir = $(datadir)/$(package)-$(version) + +PERL = @PerlCmd@ +SH = /bin/sh +RM = rm -f +MV = mv +CP = cp +LN_S = @LN_S@ +CHMOD = chmod +INSTALL = @INSTALL@ +RAWCPP = @RAWCPP@ +SED = @SedCmd@ +# sigh +INSTALL_DIR = ./mkdirhier +# +# Set of package scripts for which you'd like a name- symlink +# to be created, i.e., create a symlink, ghc-$(version), pointing to ghc to +# avoid version vertigo. +# +VERSION_SYMLINKS_FOR=$(package) +# Binaries to install +PACKAGE_BIN_INSTALL=$(PACKAGE_PRL_SCRIPTS) $(PACKAGE_SH_SCRIPTS) $(PACKAGE_BINS) - -package = ghc -version = 2.02 -PERL = @PerlCmd@ - -.PHONY: config install install-dirs - -config: - @echo Configuring $(package), version $(version), on $(platform) - @RM `pwd`/bin/$(platform)/$(package)-$(version)/$(package)-$(version) - @RM `pwd`/bin/$(platform)/$(package)-$(version)/$(package) - @echo $(PerlCmd) > `pwd`/bin/$(platform)/$(package) - @echo "$""bindir='"`pwd`"/bin/$(platform)/$(package)-$(version)';" >> `pwd`/bin/$(platform)/$(package)-$(version)/$(package) - @echo "$""libdir='"`pwd`"/lib/$(platform)/$(package)-$(version)';" >> `pwd`/bin/$(platform)/$(package)-$(version)/$(package) - @echo "$""datadir='"`pwd`"/share/$(platform)/$(package)-$(version)';" >> `pwd`/bin/$(platform)/$(package)-$(version)/$(package) - @cat `pwd`/bin/$(platform)/$(package)-$(version)/$(package).prl';" >> `pwd`/bin/$(platform)/$(package)-$(version)/$(package) - @(cd `pwd`/bin/$(platform)/$(package)-$(version); $(LN_S) $(package) $(package)-$(version) ) - @echo Finished..to use, add `pwd`/bin/$(platform)/$(package)-$(version) to your PATH. - -libdirs = . imports include -datadirs = . include - -install-dirs: - $(MKDIRHIER) $(bindir) - @for i in $(libdirs) ; do \ - echo (MKDIRHIER) $(real_libdir)/$$i; \ - (MKDIRHIER) $(real_libdir)/$$i; \ - done; - @for i in $(datadirs) ; do \ - echo (MKDIRHIER) $(real_datadir)/$$i; \ - (MKDIRHIER) $(real_datadir)/$$i; \ +#----------end of user-serviceable parts------------ +# +# +# How to install the different pieces +# +INSTALL_BIN = $(INSTALL) $(INSTALL_BIN_OPTS) +INSTALL_LIB = $(INSTALL) $(INSTALL_LIB_OPTS) +INSTALL_DATA = $(INSTALL) $(INSTALL_DATA_OPTS) + +# What's common to all installs +INSTALL_OPTS= $(EXTRA_INSTALL_OPTS) + +BIN_PERMS = 755 +LIB_PERMS = 644 + +INSTALL_BIN_OPTS = -m $(BIN_PERMS) $(INSTALL_OPTS) $(EXTRA_INSTALL_BIN_OPTS) +INSTALL_LIB_OPTS = -m $(LIB_PERMS) $(INSTALL_OPTS) $(EXTRA_INSTALL_LIB_OPTS) +INSTALL_DATA_OPTS = -m $(LIB_PERMS) $(INSTALL_OPTS) $(EXTRA_INSTALL_DATA_OPTS) + +.PHONY: in-place config-pkgs mk-version-symlinks install-dirs install + +config-pkgs :: + @echo "Configuring $(package), version $(version), on $(platform) ..." + @for i in $(PACKAGE_PRL_SCRIPTS) ""; do \ + if test "$$i"; then \ + echo "Creating a configured version of $$i .."; \ + $(RM) bin/$(platform)/$(package)-$(version)/$$i.bak; \ + if [ -f bin/$(platform)/$(package)-$(version)/$$i ]; then $(MV) bin/$(platform)/$(package)-$(version)/$$i bin/$(platform)/$(package)-$(version)/$$i.bak; fi; \ + echo "#! $(PERL)" > bin/$(platform)/$(package)-$(version)/$$i ; \ + echo '$$'"bindir='$(bindir)';" >> bin/$(platform)/$(package)-$(version)/$$i ; \ + echo '$$'"libdir='$(real_libdir)';" >> bin/$(platform)/$(package)-$(version)/$$i ; \ + echo '$$'"libexecdir='$(real_libdir)';" >> bin/$(platform)/$(package)-$(version)/$$i ; \ + echo '$$'"datadir='$(real_datadir)';" >> bin/$(platform)/$(package)-$(version)/$$i ; \ + echo '$$'"SED='$(SED)';" >> bin/$(platform)/$(package)-$(version)/$$i ; \ + echo '$$'"RAWCPP='$(RAWCPP)';" >> bin/$(platform)/$(package)-$(version)/$$i ; \ + cat bin/$(platform)/$(package)-$(version)/$$i.prl >> bin/$(platform)/$(package)-$(version)/$$i ; \ + $(CHMOD) $(BIN_PERMS) bin/$(platform)/$(package)-$(version)/$$i; \ + echo "Done."; \ + fi; \ + done + @for i in $(PACKAGE_LIB_PRL_SCRIPTS) ""; do \ + if test "$$i"; then \ + echo "Creating a configured version of $$i .."; \ + $(RM) lib/$(platform)/$(package)-$(version)/$$i.bak; \ + if [ -f lib/$(platform)/$(package)-$(version)/$$i ]; then $(MV) lib/$(platform)/$(package)-$(version)/$$i lib/$(platform)/$(package)-$(version)/$$i.bak; fi; \ + echo "#! $(PERL)" > lib/$(platform)/$(package)-$(version)/$$i ; \ + echo '$$'"bindir='$(bindir)';" >> lib/$(platform)/$(package)-$(version)/$$i ; \ + echo '$$'"libdir='$(real_libdir)';" >> lib/$(platform)/$(package)-$(version)/$$i ; \ + echo '$$'"libexecdir='$(real_libdir)';" >> lib/$(platform)/$(package)-$(version)/$$i ; \ + echo '$$'"datadir='$(real_datadir)';" >> lib/$(platform)/$(package)-$(version)/$$i ; \ + echo '$$'"SED='$(SED)';" >> lib/$(platform)/$(package)-$(version)/$$i ; \ + echo '$$'"RAWCPP='$(RAWCPP)';" >> lib/$(platform)/$(package)-$(version)/$$i ; \ + cat lib/$(platform)/$(package)-$(version)/$$i.prl >> lib/$(platform)/$(package)-$(version)/$$i; \ + $(CHMOD) $(BIN_PERMS) lib/$(platform)/$(package)-$(version)/$$i; \ + echo "Done."; \ + fi; \ + done + @for i in $(PACKAGE_SH_SCRIPTS) ""; do \ + if test "$$i"; then \ + echo "Creating a configured version of $$i .."; \ + $(RM) bin/$(platform)/$(package)-$(version)/$$i.bak; \ + if [ -f bin/$(platform)/$(package)-$(version)/$$i ]; then $(MV) bin/$(platform)/$(package)-$(version)/$$i bin/$(platform)/$(package)-$(version)/$$i.bak; fi; \ + echo "#! $(SH)" > bin/$(platform)/$(package)-$(version)/$$i ; \ + echo "bindir='$(bindir)'" >> bin/$(platform)/$(package)-$(version)/$$i ; \ + echo "libdir='$(real_libdir)'" >> bin/$(platform)/$(package)-$(version)/$$i ; \ + echo "libexecdir='$(real_libdir)'" >> bin/$(platform)/$(package)-$(version)/$$i ; \ + echo "datadir='$(real_datadir)'" >> bin/$(platform)/$(package)-$(version)/$$i ; \ + echo "SED='$(SED)'" >> bin/$(platform)/$(package)-$(version)/$$i ; \ + echo "RAWCPP='$(RAWCPP)'" >> bin/$(platform)/$(package)-$(version)/$$i ; \ + cat bin/$(platform)/$(package)-$(version)/$$i.sh >> bin/$(platform)/$(package)-$(version)/$$i; \ + $(CHMOD) $(BIN_PERMS) bin/$(platform)/$(package)-$(version)/$$i; \ + echo "Done."; \ + fi; \ + done + + +mk-version-symlinks :: + @for i in $(VERSION_SYMLINKS_FOR) ""; do \ + if [ "x$$i" != "x" ]; then \ + echo "Symlinking $$i to $$i-$(version)"; \ + (cd bin/$(platform)/$(package)-$(version); $(RM) $$i-$(version); $(LN_S) $$i $$i-$(version) ); \ + fi;\ + done + +in-place :: + $(MAKE) $(MFLAGS) config-pkgs bindir=`pwd`/bin/$(platform)/$(package)-$(version) libdir=`pwd`/lib/$(platform) datadir=`pwd`/share/$(package)-$(version) + $(MAKE) $(MFLAGS) mk-version-symlinks + @echo "Finished configuring..to use, add `pwd`/bin/$(platform)/$(package)-$(version) to your PATH." + +install-dirs :: + $(INSTALL_DIR) $(bindir) + (cd lib/$(platform)/$(package)-$(version); find . -type d -exec sh -c '../../../$(INSTALL_DIR) $$0 $(real_libdir)/$$0' {} \; ) + (cd share/$(package)-$(version); find . -type d -exec sh -c '../../$(INSTALL_DIR) $(real_datadir)/$$0' {} \; ) + +install :: config-pkgs mk-version-symlinks install-dirs install-bin install-libs install-datas + +.PHONY: install-bin install-libs install-datas + +install-bin: + for i in $(PACKAGE_BIN_INSTALL); do \ + $(INSTALL_BIN) bin/$(platform)/$(package)-$(version)/$$i $(bindir); \ done; + for i in $(VERSION_SYMLINKS_FOR) ""; do \ + if [ "x$$i" != "x" ]; then \ + ( cd $(bindir); \ + $(RM) $$i-$(version); \ + $(MV) $$i $$i-$(version); \ + $(LN_S) $$i-$(version) $$i \ + ); \ + fi; \ + done -install : install-dirs -install : - $(INSTALL_PROGRAM) `pwd`/bin/$(platform)/$(package)-$(version)/* $(bindir) - @for i in $(libdirs); do \ - echo $(INSTALL) `pwd`/lib/$(platform)/$(package)-$(version)/$$i/* $(real_libdir)/$$i; \ - $(INSTALL) `pwd`/lib/$(platform)/$(package)-$(version)/$$i/* $(real_libdir)/$$i; \ - done; - @for i in $(datadirs); do \ - echo $(INSTALL) `pwd`/share/$(package)-$(version)/$$i/* $(real_datadir)/$$i; \ - $(INSTALL) `pwd`/share/$(package)-$(version)/$$i/* $(real_datadir)/$$i; \ - done; +install-libs: + (cd lib/$(platform)/$(package)-$(version); find . -type f -exec sh -c '$(CP) $$0 $(real_libdir)/$$0' {} \; ) -install-docs : install-info install-html install-dvi +install-datas: + (cd share/$(package)-$(version); find . -type f -exec sh -c '$(INSTALL_DATA) $$0 $(real_datadir)/$$0' {} \; ) -install-dirs-html: - $(MKDIRHIER) $(htmldir) +show-install-setup: + @echo "Install setup..." + @echo "bindir = $(bindir)" + @echo "libdir = $(libdir) (real_libdir = $(real_libdir))" + @echo "datadir = $(datadir) (real_datadir = $(real_datadir))" -install-dirs-info: - $(MKDIRHIER) $(infodir) +# +# Documentation targets, install-docs for the whole lot, or +# install-{dvi,html,info} +# -install-dirs-dvi: - $(MKDIRHIER) $(dvidir) +.PHONY: show-install-setup install-docs install-html install-info install-dirs-dvi install-dirs-html install-dirs-info -install-docs : install-html install-info install-dvi +install-docs : install-html install-dvi install-info install-dvi: install-dirs-dvi - $(INSTALL) `pwd`/dvi/$(package)-$(version)/* $(dvidir) + $(INSTALL_DATA) dvi/$(package)-$(version)/* $(dvidir) install-info: install-dirs-info - $(INSTALL) `pwd`/info/$(package)-$(version)/* $(infodir) + $(INSTALL_DATA) info/$(package)-$(version)/* $(infodir) install-html: install-dirs-html - $(INSTALL) `pwd`/html/$(package)-$(version)/* $(htmldir) + $(INSTALL_DATA) html/$(package)-$(version)/* $(htmldir) + +install-dirs-html: + $(INSTALL_DIR) $(htmldir) + +install-dirs-info: + $(INSTALL_DIR) $(infodir) + +install-dirs-dvi: + $(INSTALL_DIR) $(dvidir)