Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Alex D
GHC
Commits
926ae90b
Commit
926ae90b
authored
Aug 14, 2009
by
Ian Lynagh
Browse files
Make our install variables etc compliant with GNU standards; fixes #1924
parent
32868195
Changes
16
Hide whitespace changes
Inline
Side-by-side
configure.ac
View file @
926ae90b
...
...
@@ -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
...
...
distrib/Makefile-bin-vars.in
View file @
926ae90b
...
...
@@ -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
...
...
distrib/configure-bin.ac
View file @
926ae90b
...
...
@@ -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 "****************************************************"
...
...
ghc.mk
View file @
926ae90b
...
...
@@ -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
$(
ghc
libdir)
$(DESTDIR)$(bindir)
/
$$
i
;
\
fi
;
\
done
install_libs
:
$(INSTALL_LIBS)
$(INSTALL_DIR)
$(DESTDIR)$(libdir)
$(INSTALL_DIR)
$(DESTDIR)$(
ghc
libdir)
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)$(
ghc
libdir)
;
\
$(RANLIB)
$(DESTDIR)$(
ghc
libdir)
/
`
basename
$$
i
`
;;
\
*
.dll
)
\
$(INSTALL_DATA)
-s
$(INSTALL_OPTS)
$$
i
$(DESTDIR)$(libdir)
;;
\
$(INSTALL_DATA)
-s
$(INSTALL_OPTS)
$$
i
$(DESTDIR)$(
ghc
libdir)
;;
\
*
.so
)
\
$(INSTALL_SHLIB)
$(INSTALL_OPTS)
$$
i
$(DESTDIR)$(libdir)
;;
\
$(INSTALL_SHLIB)
$(INSTALL_OPTS)
$$
i
$(DESTDIR)$(
ghc
libdir)
;;
\
*
.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)$(
ghc
libdir)
;
\
install_name_tool
-id
$(DESTDIR)$(
ghc
libdir)
/
`
basename
$$
i
`
$(DESTDIR)$(
ghc
libdir)
/
`
basename
$$
i
`
;;
\
*
)
\
$(INSTALL_DATA)
$(INSTALL_OPTS)
$$
i
$(DESTDIR)$(libdir)
;
\
$(INSTALL_DATA)
$(INSTALL_OPTS)
$$
i
$(DESTDIR)$(
ghc
libdir)
;
\
esac
;
\
done
install_libexec_scripts
:
$(INSTALL_LIBEXEC_SCRIPTS)
$(INSTALL_DIR)
$(DESTDIR)$(libexecdir)
$(INSTALL_DIR)
$(DESTDIR)$(
ghc
libexecdir)
for
i
in
$(INSTALL_LIBEXEC_SCRIPTS)
;
do
\
$(INSTALL_SCRIPT)
$(INSTALL_OPTS)
$$
i
$(DESTDIR)$(libexecdir)
;
\
$(INSTALL_SCRIPT)
$(INSTALL_OPTS)
$$
i
$(DESTDIR)$(
ghc
libexecdir)
;
\
done
install_libexecs
:
$(INSTALL_LIBEXECS)
$(INSTALL_DIR)
$(DESTDIR)$(libexecdir)
$(INSTALL_DIR)
$(DESTDIR)$(
ghc
libexecdir)
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)$(
ghc
headerdir)
for
i
in
$(INSTALL_HEADERS)
;
do
\
$(INSTALL_HEADER)
$(INSTALL_OPTS)
$$
i
$(DESTDIR)$(headerdir)
;
\
$(INSTALL_HEADER)
$(INSTALL_OPTS)
$$
i
$(DESTDIR)$(
ghc
headerdir)
;
\
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)$(
lib
dir)
/package.conf
INSTALLED_PACKAGE_CONF
=
$(DESTDIR)$(
top
dir)
/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)$(
ghc
libexecdir)
/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)$(
lib
dir)
$(INSTALL_DIR)
$(DESTDIR)$(
top
dir)
"
$(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)
'
'
$(
ghc
libdir)
'
'
$(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)
'
'
$(
ghc
libdir)
'
'
$(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
\
))
...
...
ghc/ghc.wrapper
View file @
926ae90b
exec $executablename -B$
data
dir ${1+"$@"}
exec $executablename -B$
top
dir ${1+"$@"}
mk/config.mk.in
View file @
926ae90b
...
...
@@ -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
...
...
mk/install.mk.in
0 → 100644
View file @
926ae90b
# -*-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.
mk/tree.mk
View file @
926ae90b
...
...
@@ -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
...
...
rts/ghc.mk
View file @
926ae90b
...
...
@@ -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)$(
ghc
libdir)
$(INSTALL_DIR)
$(DESTDIR)$(
ghc
libdir)
/include
"
$(CP)
"
$(ALL_RTS_LIBS)
$(DESTDIR)$(
ghc
libdir)
# -----------------------------------------------------------------------------
# cleaning
...
...
rules/build-perl.mk
View file @
926ae90b
...
...
@@ -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
...
...
rules/build-prog.mk
View file @
926ae90b
...
...
@@ -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_
LIBEXEC
S
+=
$1
/
$2
/build/tmp/
$$
(
$1_$2_PROG
)
ifeq
"$$($1_$2_
TOPDIR
)" "YES"
INSTALL_
TOPDIR
S
+=
$1
/
$2
/build/tmp/
$$
(
$1_$2_PROG
)
else
INSTALL_BINS
+=
$1
/
$2
/build/tmp/
$$
(
$1_$2_PROG
)
endif
...
...
rules/manual-package-config.mk
View file @
926ae90b
...
...
@@ -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
=
'"$
$(
ghc
libdir)
"'
\
-DINCLUDE_DIR
=
'"$
$(
ghc
libdir)
/include"'
\
$$
(
$1_PACKAGE_CPP_OPTS
)
\
-x
c
-I
$
$(GHC_INCLUDE_DIR)
$1
/package.conf.in |
\
grep
-v
'^#pragma GCC'
|
\
...
...
rules/shell-wrapper.mk
View file @
926ae90b
...
...
@@ -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)