Commit 926ae90b authored by Ian Lynagh's avatar Ian Lynagh

Make our install variables etc compliant with GNU standards; fixes #1924

parent 32868195
......@@ -870,7 +870,7 @@ if grep ' ' compiler/ghc.cabal.in 2>&1 >/dev/null; then
AC_MSG_ERROR([compiler/ghc.cabal.in contains tab characters; please remove them])
fi
AC_CONFIG_FILES([mk/config.mk mk/project.mk compiler/ghc.cabal ghc/ghc-bin.cabal ghc.spec extra-gcc-opts docs/users_guide/ug-book.xml distrib/ghc.iss])
AC_CONFIG_FILES([mk/config.mk mk/install.mk mk/project.mk compiler/ghc.cabal ghc/ghc-bin.cabal ghc.spec extra-gcc-opts docs/users_guide/ug-book.xml distrib/ghc.iss])
AC_CONFIG_COMMANDS([mk/stamp-h],[echo timestamp > mk/stamp-h])
AC_OUTPUT
......
......@@ -7,30 +7,7 @@ FPTOOLS_TOP_ABS = @hardtop@
# rather than ghc-pkg.exe.
GHC_PKG_PROG = $(FPTOOLS_TOP_ABS)/utils/ghc-pkg/ghc-pkg.bin
# Where the different pieces of the bundle should go:
bindir = @bindir@
libdir = @libdir@/$(package)-$(version)
libexecdir = $(libdir)
datarootdir = @datarootdir@
# datadir is set to libdir here as GHC needs package.conf and unlit
# to be in the same place (and things like ghc-pkg need to agree on
# where package.conf is, so we just set it globally).
datadir = $(libdir)
platform = @TargetPlatform@
prefix = @prefix@
exec_prefix = @exec_prefix@
mandir = $(datarootdir)/man
headerdir = $(libdir)/include
# default
docdir = @datadir@/doc/ghc
htmldir = $(docdir)
psdir = $(docdir)
pdfdir = $(docdir)
PERL = @PerlCmd@
SH = /bin/sh
......@@ -56,36 +33,6 @@ CPP = @CPP@
RAWCPP_FLAGS = -undef -traditional
#----------end of user-serviceable parts------------
#
#
# How to install the different pieces
#
INSTALL_DIR = $(bindist_abs_root)/utils/mkdirhier/mkdirhier
INSTALL_BIN = $(INSTALL) $(INSTALL_BIN_OPTS)
INSTALL_LIB = $(INSTALL) $(INSTALL_LIB_OPTS)
INSTALL_DATA = $(INSTALL) $(INSTALL_DATA_OPTS)
INSTALL_SCRIPT = $(INSTALL) $(INSTALL_SCRIPT_OPTS)
INSTALL_PROGRAM = $(INSTALL) $(INSTALL_PROGRAM_OPTS)
INSTALL_HEADER = $(INSTALL) $(INSTALL_HEADER_OPTS)
INSTALL_SHLIB = $(INSTALL) $(INSTALL_SHLIB_OPTS)
INSTALL_MAN = $(INSTALL) $(INSTALL_MAN_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)
INSTALL_SCRIPT_OPTS = -m $(BIN_PERMS) $(INSTALL_OPTS) $(EXTRA_INSTALL_SCRIPT_OPTS)
INSTALL_PROGRAM_OPTS = -m $(BIN_PERMS) $(INSTALL_OPTS) $(EXTRA_INSTALL_PROGRAM_OPTS)
INSTALL_HEADER_OPTS = -m $(LIB_PERMS) $(INSTALL_OPTS) $(EXTRA_INSTALL_HEADER_OPTS)
INSTALL_SHLIB_OPTS = -m $(BIN_PERMS) $(INSTALL_OPTS) $(EXTRA_INSTALL_SHLIB_OPTS)
INSTALL_MAN_OPTS = -m $(LIB_PERMS) $(INSTALL_OPTS) $(EXTRA_INSTALL_MAN_OPTS)
EXECUTABLE_FILE = chmod $(BIN_PERMS)
GHC_COMPAT_DIR=$(TOP)/mk
......
......@@ -167,7 +167,7 @@ dnl ** Check gcc version and flags we need to pass it **
FP_GCC_EXTRA_FLAGS
#
AC_CONFIG_FILES(extra-gcc-opts mk/config.mk)
AC_CONFIG_FILES(extra-gcc-opts mk/config.mk mk/install.mk)
AC_OUTPUT
echo "****************************************************"
......
......@@ -697,52 +697,58 @@ libraries/ghc-prim/dist-install/build/autogen/GHC/PrimopWrappers.hs: \
# Installation
install: install_packages install_libs install_libexecs install_headers \
install_libexec_scripts install_bins install_docs
install_libexec_scripts install_bins install_docs install_topdirs
install_bins: $(INSTALL_BINS)
$(INSTALL_DIR) $(DESTDIR)$(bindir)
for i in $(INSTALL_BINS); do \
$(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i $(DESTDIR)$(bindir) ; \
if test "$(darwin_TARGET_OS)" = "1"; then \
sh mk/fix_install_names.sh $(libdir) $(DESTDIR)$(bindir)/$$i ; \
sh mk/fix_install_names.sh $(ghclibdir) $(DESTDIR)$(bindir)/$$i ; \
fi ; \
done
install_libs: $(INSTALL_LIBS)
$(INSTALL_DIR) $(DESTDIR)$(libdir)
$(INSTALL_DIR) $(DESTDIR)$(ghclibdir)
for i in $(INSTALL_LIBS); do \
case $$i in \
*.a) \
$(INSTALL_DATA) $(INSTALL_OPTS) $$i $(DESTDIR)$(libdir); \
$(RANLIB) $(DESTDIR)$(libdir)/`basename $$i` ;; \
$(INSTALL_DATA) $(INSTALL_OPTS) $$i $(DESTDIR)$(ghclibdir); \
$(RANLIB) $(DESTDIR)$(ghclibdir)/`basename $$i` ;; \
*.dll) \
$(INSTALL_DATA) -s $(INSTALL_OPTS) $$i $(DESTDIR)$(libdir) ;; \
$(INSTALL_DATA) -s $(INSTALL_OPTS) $$i $(DESTDIR)$(ghclibdir) ;; \
*.so) \
$(INSTALL_SHLIB) $(INSTALL_OPTS) $$i $(DESTDIR)$(libdir) ;; \
$(INSTALL_SHLIB) $(INSTALL_OPTS) $$i $(DESTDIR)$(ghclibdir) ;; \
*.dylib) \
$(INSTALL_SHLIB) $(INSTALL_OPTS) $$i $(DESTDIR)$(libdir); \
install_name_tool -id $(DESTDIR)$(libdir)/`basename $$i` $(DESTDIR)$(libdir)/`basename $$i` ;; \
$(INSTALL_SHLIB) $(INSTALL_OPTS) $$i $(DESTDIR)$(ghclibdir); \
install_name_tool -id $(DESTDIR)$(ghclibdir)/`basename $$i` $(DESTDIR)$(ghclibdir)/`basename $$i` ;; \
*) \
$(INSTALL_DATA) $(INSTALL_OPTS) $$i $(DESTDIR)$(libdir); \
$(INSTALL_DATA) $(INSTALL_OPTS) $$i $(DESTDIR)$(ghclibdir); \
esac; \
done
install_libexec_scripts: $(INSTALL_LIBEXEC_SCRIPTS)
$(INSTALL_DIR) $(DESTDIR)$(libexecdir)
$(INSTALL_DIR) $(DESTDIR)$(ghclibexecdir)
for i in $(INSTALL_LIBEXEC_SCRIPTS); do \
$(INSTALL_SCRIPT) $(INSTALL_OPTS) $$i $(DESTDIR)$(libexecdir); \
$(INSTALL_SCRIPT) $(INSTALL_OPTS) $$i $(DESTDIR)$(ghclibexecdir); \
done
install_libexecs: $(INSTALL_LIBEXECS)
$(INSTALL_DIR) $(DESTDIR)$(libexecdir)
$(INSTALL_DIR) $(DESTDIR)$(ghclibexecdir)
for i in $(INSTALL_LIBEXECS); do \
$(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i $(DESTDIR)$(libexecdir); \
$(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i $(DESTDIR)$(ghclibexecdir); \
done
install_topdirs: $(INSTALL_TOPDIRS)
$(INSTALL_DIR) $(DESTDIR)$(topdir)
for i in $(INSTALL_TOPDIRS); do \
$(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i $(DESTDIR)$(topdir); \
done
install_headers: $(INSTALL_HEADERS)
$(INSTALL_DIR) $(DESTDIR)$(headerdir)
$(INSTALL_DIR) $(DESTDIR)$(ghcheaderdir)
for i in $(INSTALL_HEADERS); do \
$(INSTALL_HEADER) $(INSTALL_OPTS) $$i $(DESTDIR)$(headerdir); \
$(INSTALL_HEADER) $(INSTALL_OPTS) $$i $(DESTDIR)$(ghcheaderdir); \
done
install_docs: $(INSTALL_HEADERS)
......@@ -760,19 +766,19 @@ install_docs: $(INSTALL_HEADERS)
$(INSTALL_DOC) $(INSTALL_OPTS) $$i/* $(DESTDIR)$(docdir)/html/`basename $$i`; \
done
INSTALLED_PACKAGE_CONF=$(DESTDIR)$(libdir)/package.conf
INSTALLED_PACKAGE_CONF=$(DESTDIR)$(topdir)/package.conf
# Install packages in the right order, so that ghc-pkg doesn't complain.
# Also, install ghc-pkg first.
ifeq "$(Windows)" "NO"
INSTALLED_GHC_PKG_REAL=$(DESTDIR)$(libexecdir)/ghc-pkg
INSTALLED_GHC_PKG_REAL=$(DESTDIR)$(ghclibexecdir)/ghc-pkg
else
INSTALLED_GHC_PKG_REAL=$(DESTDIR)$(bindir)/ghc-pkg.exe
endif
install_packages: install_libexecs
install_packages: libffi/package.conf.install rts/package.conf.install
$(INSTALL_DIR) $(DESTDIR)$(libdir)
$(INSTALL_DIR) $(DESTDIR)$(topdir)
"$(RM)" $(RM_OPTS) $(INSTALLED_PACKAGE_CONF)
$(CREATE_DATA) $(INSTALLED_PACKAGE_CONF)
echo "[]" >> $(INSTALLED_PACKAGE_CONF)
......@@ -783,12 +789,12 @@ install_packages: libffi/package.conf.install rts/package.conf.install
$(INSTALLED_GHC_PKG_REAL) \
$(INSTALLED_PACKAGE_CONF) \
libraries/$p dist-install \
'$(DESTDIR)' '$(prefix)' '$(libdir)' '$(docdir)/html/libraries' &&) true
'$(DESTDIR)' '$(prefix)' '$(ghclibdir)' '$(docdir)/html/libraries' &&) true
"$(GHC_CABAL_INPLACE)" install \
$(INSTALLED_GHC_PKG_REAL) \
$(INSTALLED_PACKAGE_CONF) \
compiler stage2 \
'$(DESTDIR)' '$(prefix)' '$(libdir)' '$(docdir)/html/libraries'
'$(DESTDIR)' '$(prefix)' '$(ghclibdir)' '$(docdir)/html/libraries'
# -----------------------------------------------------------------------------
# Binary distributions
......@@ -810,6 +816,7 @@ $(eval $(call bindist,root1,\
$(INSTALL_HEADERS) \
$(INSTALL_LIBEXECS) \
$(INSTALL_LIBEXEC_SCRIPTS) \
$(INSTALL_TOPDIRS) \
$(INSTALL_BINS) \
$(INSTALL_DOCS) \
$(INSTALL_LIBRARY_DOCS) \
......@@ -819,9 +826,10 @@ $(eval $(call bindist,root2,\
docs/index.html \
$(wildcard libraries/*/dist-install/doc/) \
$(filter-out extra-gcc-opts,$(INSTALL_LIBS)) \
$(filter-out %/project.mk,$(filter-out mk/config.mk,$(MAKEFILE_LIST))) \
$(filter-out %/project.mk mk/config.mk %/mk/install.mk,$(MAKEFILE_LIST)) \
mk/fix_install_names.sh \
mk/project.mk \
mk/install.mk.in \
bindist.mk \
libraries/dph/LICENSE \
))
......
exec $executablename -B$datadir ${1+"$@"}
exec $executablename -B$topdir ${1+"$@"}
......@@ -12,9 +12,7 @@
# DO NOT EDIT THIS FILE!
#
# - config.mk is auto-generated from config.mk.in by configure.
# This may be triggered automatically by the build system (say
# if config.mk.in has changed more recently than config.mk),
# so if you edit config.mk your changes will be spammed.
# If you edit config.mk your changes will be spammed.
#
# - Settings in this file may be overriden by giving replacement
# definitions in build.mk. See build.mk.sample for a good
......@@ -28,6 +26,7 @@
TOP = @hardtop@
include $(TOP)/mk/project.mk
include $(TOP)/mk/install.mk
################################################################################
#
......@@ -381,150 +380,6 @@ BIN_DIST_LIST=$(TOP)/bindist-list
WINDOWS_INSTALLER_BASE = ghc-$(ProjectVersion)-i386-windows
WINDOWS_INSTALLER = $(WINDOWS_INSTALLER_BASE)$(exeext)
# Definition of installation directories, we don't use half of these, but since
# the configure script has them on offer while passing through, we might as well
# set them. Note that we have to be careful, because the GNU coding standards
# have changed a bit over the course of time, and autoconf development reflects
# this.
#
# A little bit of history regarding autoconf and GNU coding standards, use this
# as a cheat-sheet for the stuff below:
#
# variable | default < 2.60 | default >= 2.60
# ------------+--------------------+--------------------------------------
# exec_prefix | ${prefix} | ${prefix}
# libdir | ${exec_prefix}/lib | ${exec_prefix}/lib
# datarootdir | NONE! | ${prefix}/share
# datadir | ${prefix}/share | ${datarootdir}
# infodir | ${prefix}/info | ${datarootdir}/info
# mandir | ${prefix}/man | ${datarootdir}/man
# docdir | NONE! | ${datarootdir}/doc/${PACKAGE_TARNAME}
# htmldir | NONE! | ${docdir}
# dvidir | NONE! | ${docdir}
# pdfdir | NONE! | ${docdir}
# psdir | NONE! | ${docdir}
#
# NOTE: The default e.g. ${docdir} above means that autoconf substitutes the
# string "${docdir}", not the value of docdir! This is crucial for the GNU
# coding standards.
# This gets used in the default docdir when autoconf >= 2.60 is used
PACKAGE_TARNAME := @PACKAGE_TARNAME@
prefix := @prefix@
# New autoconf (>= 2.60?) make a configure with a --datarootdir=DIR flag.
# However, in order to support older autoconf's we don't use it.
# datarootdir is set lower down instead.
# But, as datadir is defined in terms of datarootdir, we also need to
# set it to the value (if any) that configure gives it here.
datarootdir := @datarootdir@
exec_prefix := @exec_prefix@
bindir := @bindir@
datadir0 := @datadir@
libdir0 := @libdir@
includedir := @includedir@
mandir := @mandir@
dynlibdir := @libdir@
ifeq "$(RelocatableBuild)" "YES"
# Hack: our directory layouts tend to be different on Windows, so
# hack around configure's bogus assumptions here.
datarootdir := $(prefix)
datadir := $(prefix)/lib
libdir := $(prefix)/lib
docdir := $(prefix)/doc
htmldir := $(docdir)
dvidir := $(docdir)
pdfdir := $(docdir)
psdir := $(docdir)
else
# Unix: override libdir and datadir to put ghc-specific stuff in
# a subdirectory with the version number included.
#
# datadir is set to libdir here as GHC needs package.conf and unlit
# to be in the same place (and things like ghc-pkg need to agree on
# where package.conf is, so we just set it globally).
#
datarootdir := $(datadir0)
libdir := $(libdir0)/ghc-$(ProjectVersion)
datadir := $(libdir)
# New autoconf (>= 2.60?) make a configure with --docdir=DIR etc flags.
# However, in order to support older autoconf's we don't use them.
#docdir := @docdir@
#htmldir := @htmldir@
#dvidir := @dvidir@
#pdfdir := @pdfdir@
#psdir := @psdir@
docdir := $(datarootdir)/doc/ghc
htmldir := $(docdir)
dvidir := $(docdir)
pdfdir := $(docdir)
psdir := $(docdir)
endif # Windows
headerdir := $(libdir)/include
# Default place for putting interface files is $(libdir)
# (overriden for packages in package.mk)
ifacedir = $(libdir)
# NOTE: by intention, libexecdir and libdir point to
# the same place.
# => Only way to override this is to set libexecdir= on the command line.
# (NOTE: configure script setting is ignored).
libexecdir = $(libdir)
#-----------------------------------------------------------------------------
# install configuration
#
# Set this to have files installed with a specific owner
#
INSTALL_OWNER =
#
# Set this to have files installed with a specific group
#
INSTALL_GROUP =
#
# Invocations of `install' for the four different classes
# of targets:
#
CREATE_SCRIPT = create () { touch $$1 && chmod 755 $$1 ; } && create
CREATE_DATA = create () { touch $$1 && chmod 644 $$1 ; } && create
INSTALL_PROGRAM = $(INSTALL) -m 755
INSTALL_SCRIPT = $(INSTALL) -m 755
INSTALL_SHLIB = $(INSTALL) -m 755
INSTALL_DATA = $(INSTALL) -m 644
INSTALL_HEADER = $(INSTALL) -m 644
INSTALL_MAN = $(INSTALL) -m 644
INSTALL_DOC = $(INSTALL) -m 644
INSTALL_DIR = $(INSTALL) -m 755 -d
#
# runhaskell and hsc2hs are special, in that other compilers besides
# GHC might provide them. Systems with a package manager often come
# with tools to manage this kind of clash, e.g. RPM's
# update-alternatives. When building a distribution for such a system,
# we recommend setting both of the following to 'YES'.
#
# NO_INSTALL_RUNHASKELL = YES
# NO_INSTALL_HSC2HS = YES
#
# NB. we use negative tests here because for binary-distributions we cannot
# test build-time variables at install-time, so they must default to on.
# -----------------------------------------------------------------------------
# Utilities programs: flags
......
# -*-makefile-*-
# @configure_input@
#
################################################################################
#
# dirs.mk.in
#
# This file sets up the installation directories.
#
# DO NOT EDIT THIS FILE!
#
# - dirs.mk is auto-generated from dirs.mk.in by configure.
# If you edit dirs.mk your changes will be spammed.
#
# - Settings in this file may be overriden by giving replacement
# definitions in build.mk.
# Definition of installation directories, we don't use half of these, but since
# the configure script has them on offer while passing through, we might as well
# set them. Note that we have to be careful, because the GNU coding standards
# have changed a bit over the course of time, and autoconf development reflects
# this.
#
# A little bit of history regarding autoconf and GNU coding standards, use this
# as a cheat-sheet for the stuff below:
#
# variable | default < 2.60 | default >= 2.60
# ------------+--------------------+--------------------------------------
# exec_prefix | ${prefix} | ${prefix}
# libdir | ${exec_prefix}/lib | ${exec_prefix}/lib
# datarootdir | NONE! | ${prefix}/share
# datadir | ${prefix}/share | ${datarootdir}
# infodir | ${prefix}/info | ${datarootdir}/info
# mandir | ${prefix}/man | ${datarootdir}/man
# docdir | NONE! | ${datarootdir}/doc/${PACKAGE_TARNAME}
# htmldir | NONE! | ${docdir}
# dvidir | NONE! | ${docdir}
# pdfdir | NONE! | ${docdir}
# psdir | NONE! | ${docdir}
#
# NOTE: The default e.g. ${docdir} above means that autoconf substitutes the
# string "${docdir}", not the value of docdir! This is crucial for the GNU
# coding standards.
define set_default
# $1 = variable to set
# $2 = default value to use, if configure didn't expand it
# If $1 starts with an @ then configure didn't set it,
# so set it to a sensible value
ifneq "$$(filter @%,$$($1))" ""
$1 = $2
endif
endef
# This gets used in the default docdir when autoconf >= 2.60 is used
PACKAGE_TARNAME = @PACKAGE_TARNAME@
prefix = @prefix@
datarootdir = @datarootdir@
$(eval $(call set_default,datarootdir,$${prefix}/share))
exec_prefix = @exec_prefix@
bindir = @bindir@
datadir = @datadir@
libdir = @libdir@
includedir = @includedir@
mandir = @mandir@
# New autoconf (>= 2.60?) make a configure with --docdir=DIR etc flags.
# However, in order to support older autoconf's we don't use them.
docdir = @docdir@
$(eval $(call set_default,docdir,$${datarootdir}/doc/ghc))
htmldir = @htmldir@
dvidir = @dvidir@
pdfdir = @pdfdir@
psdir = @psdir@
$(eval $(call set_default,htmldir,$${docdir}))
$(eval $(call set_default,dvidir,$${docdir}))
$(eval $(call set_default,pdfdir,$${docdir}))
$(eval $(call set_default,psdir,$${docdir}))
ifeq "$(RelocatableBuild)" "YES"
# Hack: our directory layouts tend to be different on Windows, so
# hack around configure's bogus assumptions here.
datarootdir = $(prefix)
datadir = $(prefix)/lib
libdir = $(prefix)/lib
docdir = $(prefix)/doc
htmldir = $(docdir)
dvidir = $(docdir)
pdfdir = $(docdir)
psdir = $(docdir)
topdir = $(libdir)
else
# Unix: override libdir and datadir to put ghc-specific stuff in
# a subdirectory with the version number included.
#
# datadir is set to libdir here as GHC needs package.conf and unlit
# to be in the same place (and things like ghc-pkg need to agree on
# where package.conf is, so we just set it globally).
#
ghclibdir = $(libdir)/ghc-$(ProjectVersion)
ghclibexecdir = $(ghclibdir)
topdir = $(ghclibdir)
ghcdocdir = $(datarootdir)/doc/ghc
endif
ghcheaderdir = $(ghclibdir)/include
#-----------------------------------------------------------------------------
# install configuration
#
# Set this to have files installed with a specific owner
#
INSTALL_OWNER =
#
# Set this to have files installed with a specific group
#
INSTALL_GROUP =
#
# Invocations of `install' for the four different classes
# of targets:
#
CREATE_SCRIPT = create () { touch $$1 && chmod 755 $$1 ; } && create
CREATE_DATA = create () { touch $$1 && chmod 644 $$1 ; } && create
INSTALL_PROGRAM = $(INSTALL) -m 755
INSTALL_SCRIPT = $(INSTALL) -m 755
INSTALL_SHLIB = $(INSTALL) -m 755
INSTALL_DATA = $(INSTALL) -m 644
INSTALL_HEADER = $(INSTALL) -m 644
INSTALL_MAN = $(INSTALL) -m 644
INSTALL_DOC = $(INSTALL) -m 644
INSTALL_DIR = $(INSTALL) -m 755 -d
#
# runhaskell and hsc2hs are special, in that other compilers besides
# GHC might provide them. Systems with a package manager often come
# with tools to manage this kind of clash, e.g. RPM's
# update-alternatives. When building a distribution for such a system,
# we recommend setting both of the following to 'YES'.
#
# NO_INSTALL_RUNHASKELL = YES
# NO_INSTALL_HSC2HS = YES
#
# NB. we use negative tests here because for binary-distributions we cannot
# test build-time variables at install-time, so they must default to on.
......@@ -41,10 +41,11 @@ GHC_MANGLER_DIR = $(GHC_DRIVER_DIR)/mangler
GHC_SPLIT_DIR = $(GHC_DRIVER_DIR)/split
GHC_SYSMAN_DIR = $(GHC_RTS_DIR)/parallel
INPLACE = inplace
INPLACE_BIN = $(INPLACE)/bin
INPLACE_LIB = $(INPLACE)/lib
INPLACE_MINGW = $(INPLACE)/mingw
INPLACE = inplace
INPLACE_BIN = $(INPLACE)/bin
INPLACE_LIB = $(INPLACE)/lib
INPLACE_TOPDIR = $(INPLACE)/lib
INPLACE_MINGW = $(INPLACE)/mingw
# These are here, rather than in config.mk, as they need to exist in an
# unconfigured tree so that the various clean targets can be used
......
......@@ -372,9 +372,9 @@ install : install_rts
.PHONY: install_rts
install_rts:
$(INSTALL_DIR) $(DESTDIR)$(libdir)
$(INSTALL_DIR) $(DESTDIR)$(libdir)/include
"$(CP)" $(ALL_RTS_LIBS) $(DESTDIR)$(libdir)
$(INSTALL_DIR) $(DESTDIR)$(ghclibdir)
$(INSTALL_DIR) $(DESTDIR)$(ghclibdir)/include
"$(CP)" $(ALL_RTS_LIBS) $(DESTDIR)$(ghclibdir)
# -----------------------------------------------------------------------------
# cleaning
......
......@@ -22,8 +22,8 @@ define build-perl
# $1 = dir
# $2 = distdir
ifeq "$$($1_$2_LIBEXEC)" "YES"
$1_$2_INPLACE = $(INPLACE_LIB)/$$($1_$2_PROG)
ifeq "$$($1_$2_TOPDIR)" "YES"
$1_$2_INPLACE = $(INPLACE_TOPDIR)/$$($1_$2_PROG)
else
$1_$2_INPLACE = $(INPLACE_BIN)/$$($1_$2_PROG)
endif
......
......@@ -126,8 +126,8 @@ else
ifeq "$$($1_$2_SHELL_WRAPPER) $$(Windows)" "YES NO"
$1_$2_INPLACE = $$(INPLACE_LIB)/$$($1_$2_PROG)
else
ifeq "$$($1_$2_LIBEXEC)" "YES"
$1_$2_INPLACE = $$(INPLACE_LIB)/$$($1_$2_PROG)
ifeq "$$($1_$2_TOPDIR)" "YES"
$1_$2_INPLACE = $$(INPLACE_TOPDIR)/$$($1_$2_PROG)
else
$1_$2_INPLACE = $$(INPLACE_BIN)/$$($1_$2_PROG)
endif
......@@ -150,8 +150,8 @@ endif
$(call shell-wrapper,$1,$2)
ifeq "$$($1_$2_INSTALL)" "YES"
ifeq "$$($1_$2_LIBEXEC)" "YES"
INSTALL_LIBEXECS += $1/$2/build/tmp/$$($1_$2_PROG)
ifeq "$$($1_$2_TOPDIR)" "YES"
INSTALL_TOPDIRS += $1/$2/build/tmp/$$($1_$2_PROG)
else
INSTALL_BINS += $1/$2/build/tmp/$$($1_$2_PROG)
endif
......
......@@ -29,8 +29,8 @@ $1/package.conf.inplace : $1/package.conf.in $(GHC_PKG_INPLACE)
$1/package.conf.install:
$$(CPP) $$(RAWCPP_FLAGS) -P \
-DINSTALLING \
-DLIB_DIR='"$$(libdir)"' \
-DINCLUDE_DIR='"$$(libdir)/include"' \
-DLIB_DIR='"$$(ghclibdir)"' \
-DINCLUDE_DIR='"$$(ghclibdir)/include"' \
$$($1_PACKAGE_CPP_OPTS) \
-x c -I$$(GHC_INCLUDE_DIR) $1/package.conf.in | \
grep -v '^#pragma GCC' | \
......
......@@ -38,6 +38,7 @@ $$(INPLACE_BIN)/$$($1_$2_PROG): $$($1_$2_INPLACE)
echo 'executablename=$$(TOP)/$$<' >> $$@
echo 'datadir=$$(TOP)/$$(INPLACE_LIB)' >> $$@
echo 'bindir=$$(TOP)/$$(INPLACE_BIN)' >> $$@
echo 'topdir=$$(TOP)/$$(INPLACE_TOPDIR)' >> $$@
cat $$($1_$2_SHELL_WRAPPER_NAME) >> $$@
$$(EXECUTABLE_FILE) $$@
endif
......@@ -58,14 +59,15 @@ install: install_$1_$2_wrapper
install_$1_$2_wrapper: WRAPPER=$$(DESTDIR)$$(bindir)/$$($1_$2_INSTALL_SHELL_WRAPPER_NAME)
install_$1_$2_wrapper:
$$(INSTALL_DIR) $$(DESTDIR)$$(bindir)
"$$(RM)" $$(RM_OPTS) $$(WRAPPER)
$$(CREATE_SCRIPT) $$(WRAPPER)
echo '#!$$(SHELL)' >> $$(WRAPPER)
echo 'executablename=$$(libexecdir)/$$($1_$2_PROG)' >> $$(WRAPPER)
echo 'datadir=$$(datadir)' >> $$(WRAPPER)
echo 'bindir=$$(bindir)' >> $$(WRAPPER)
cat $$($1_$2_SHELL_WRAPPER_NAME) >> $$(WRAPPER)
$$(EXECUTABLE_FILE) $$(WRAPPER)
"$$(RM)" $$(RM_OPTS) $$(WRAPPER)
$$(CREATE_SCRIPT) $$(WRAPPER)
echo '#!$$(SHELL)' >> $$(WRAPPER)
echo 'executablename=$$(ghclibexecdir)/$$($1_$2_PROG)' >> $$(WRAPPER)
echo 'datadir=$$(datadir)' >> $$(WRAPPER)
echo 'bindir=$$(bindir)' >> $$(WRAPPER)
echo 'topdir=$$(topdir)' >> $$(WRAPPER)
cat $$($1_$2_SHELL_WRAPPER_NAME) >> $$(WRAPPER)
$$(EXECUTABLE_FILE) $$(WRAPPER)
endif # $1_$2_INSTALL_SHELL_WRAPPER
......
#!/bin/sh
PKGCONF=$datadir/package.conf
PKGCONF=$topdir/package.conf
exec $executablename --global-conf $PKGCONF ${1+"$@"}
......@@ -12,6 +12,6 @@
utils/touchy_dist_C_SRCS = touchy.c
utils/touchy_dist_PROG = $(GHC_TOUCHY_PGM)
utils/touchy_dist_LIBEXEC = YES
utils/touchy_dist_TOPDIR = YES
utils/touchy_dist_INSTALL = YES
$(eval $(call build-prog,utils/touchy,dist,0))
......@@ -12,7 +12,7 @@
utils/unlit_dist_C_SRCS = unlit.c
utils/unlit_dist_PROG = $(GHC_UNLIT_PGM)
utils/unlit_dist_LIBEXEC = YES
utils/unlit_dist_TOPDIR = YES
utils/unlit_dist_INSTALL = YES
$(eval $(call build-prog,utils/unlit,dist,0))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment