Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
GHC
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Iterations
Merge Requests
0
Merge Requests
0
Requirements
Requirements
List
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Package Registry
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issue
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Alex D
GHC
Commits
926ae90b
Commit
926ae90b
authored
Aug 14, 2009
by
Ian Lynagh
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Make our install variables etc compliant with GNU standards; fixes #1924
parent
32868195
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
222 additions
and
251 deletions
+222
-251
configure.ac
configure.ac
+1
-1
distrib/Makefile-bin-vars.in
distrib/Makefile-bin-vars.in
+0
-53
distrib/configure-bin.ac
distrib/configure-bin.ac
+1
-1
ghc.mk
ghc.mk
+30
-22
ghc/ghc.wrapper
ghc/ghc.wrapper
+1
-1
mk/config.mk.in
mk/config.mk.in
+2
-147
mk/install.mk.in
mk/install.mk.in
+158
-0
mk/tree.mk
mk/tree.mk
+5
-4
rts/ghc.mk
rts/ghc.mk
+3
-3
rules/build-perl.mk
rules/build-perl.mk
+2
-2
rules/build-prog.mk
rules/build-prog.mk
+4
-4
rules/manual-package-config.mk
rules/manual-package-config.mk
+2
-2
rules/shell-wrapper.mk
rules/shell-wrapper.mk
+10
-8
utils/ghc-pkg/ghc-pkg.wrapper
utils/ghc-pkg/ghc-pkg.wrapper
+1
-1
utils/touchy/ghc.mk
utils/touchy/ghc.mk
+1
-1
utils/unlit/ghc.mk
utils/unlit/ghc.mk
+1
-1
No files found.
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)$(
ghclibdir)
/
`
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)
"
$
$(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
...
...
utils/ghc-pkg/ghc-pkg.wrapper
View file @
926ae90b
#!/bin/sh
PKGCONF
=
$
data
dir
/package.conf
PKGCONF
=
$
top
dir
/package.conf
exec
$executablename
--global-conf
$PKGCONF
${
1
+
"
$@
"
}