# Pin a suffix on executables? If so, what (Windows only).
exeext=@exeext@
+# Windows=YES if on a Windows platform
+ifneq "$(findstring $(HostOS_CPP), mingw32 cygwin32)" ""
+Windows=YES
+else
+Windows=NO
+endif
+
################################################################################
#
# project-wide flags
#
# Build the libs first if we're bootstrapping from .hc files.
ifeq "$(BootingFromHc)" "YES"
-AllProjects = glafp-utils happy alex haddock libraries hslibs ghc greencard hdirect hood nofib
+AllProjects = glafp-utils happy alex haddock libraries hslibs ghc greencard hdirect hood nofib docs
else
-AllProjects = glafp-utils happy alex haddock ghc libraries hslibs greencard hdirect hood nofib
+AllProjects = glafp-utils happy alex haddock ghc libraries hslibs greencard hdirect hood nofib docs
endif
#
IncludeExampleDirsInBuild=NO
#
-# Which ways should SGML documents be built?
-# options are: dvi ps pdf html rtf
+# Which ways should DocBook XML documents be built?
+# options are: dvi ps pdf html
#
-SGMLDocWays=
+XMLDocWays=
################################################################################
#
GhcLibWays=p
endif
+# In addition, the RTS is built in some further variations. Ways that
+# make sense here:
+#
+# thr : threaded
+# thr_p : threaded profiled
+# debug : debugging (compile with -g for the C compiler, and -DDEBUG)
+# debug_p : debugging profiled
+# thr_debug : debugging threaded
+# thr_debug_p : debugging threaded profiled
+#
+ifeq "$(BootingFromHc)" "YES"
+GhcRTSWays=
+else
+GhcRTSWays=thr thr_p debug
+endif
+
# Option flags to pass to GHC when it's compiling modules in
# fptools/libraries. Typically these are things like -O or
# -dcore-lint or -H32m. The ones that are *essential* are wired into
# ----------------------------------------------------------------------------
# Options for GHC's RTS
-# This is a good way to set things like -optc-g and -optc-DDEBUG for the RTS.
-# GhcRtsHcOpts is used when compiling .hc files and .c files.
-# GhcRtsCcOpts is used when compiling .c files only.
-
-# For a debugging RTS:
-# GhcRtsHcOpts = -optc-DDEBUG
-# GhcRtsCcOpts = -g
-
-# For an optimised RTS:
+# For an optimised RTS (you probably don't want to change these; we build
+# a debugging RTS by default now. Use -package rts_debug to get it).
GhcRtsHcOpts=-O2
GhcRtsCcOpts=-fomit-frame-pointer
# Include the front panel code? Needs GTK+.
GhcRtsWithFrontPanel = NO
-#
-# To have the RTS support interoperation with OS threads, set
-# GhcRtsThreaded to YES (preferably via the --enable-threaded-rts
-# configure script option). The consequence of this is spelled out
-# in details elsewhere, but, briefly, Concurrent Haskell threads
-# can now make external (i.e., C) calls without blocking the progress
-# of other CH threads. Multiple native threads can also execute
-# Haskell code without getting in each others way too.
-#
-GhcRtsThreaded=@ThreadedRts@
-
################################################################################
#
# libraries project
# X11 stuff
#
+GhcLibsWithX11=@GhcLibsWithX11@
X_CFLAGS=@X_CFLAGS@
X_LIBS=@X_LIBS@
exec_prefix = @exec_prefix@
bindir = @bindir@
datadir0 = @datadir@
-
-#sysconfdir = @datadir@
-#sharedstatedir = @sharedstatedir@
-#localstatedir = @localstatedir@
libdir0 = @libdir@
includedir = @includedir@
oldincludedir = @oldincludedir@
mandir = @mandir@
-#UNUSED:infodir = @infodir@
-#UNUSED:srcdir = @srcdir@
+ifeq "$(Windows)" "YES"
+
+ifeq "$(strip $(prefix))" ""
+prefix = c:/ghc
+endif
+
+# Hack: our directory layouts tend to be different on Windows, so
+# hack around configure's bogus assumptions here.
+datadir = $(prefix)
+libdir = $(prefix)
+
+else
#
-# override libdir and datadir to put project-specific stuff in
+# Unix: override libdir and datadir to put project-specific stuff in
# a subdirectory with the version number included.
#
libdir = $(if $(ProjectNameShort),$(libdir0)/$(ProjectNameShort)-$(ProjectVersion),$(libdir0))
datadir = $(if $(ProjectNameShort),$(datadir0)/$(ProjectNameShort)-$(ProjectVersion),$(datadir0))
+endif # Windows
+
# Default place for putting interface files is $(libdir)
# (overriden for packages in package.mk)
-ifacedir = $(libdir)
+ifacedir = $(libdir)
#
# Default values for most of the above are only set if
mandir = $(prefix)/man
endif
-################################################################################
+#-----------------------------------------------------------------------------
+# install configuration
+
#
-# Utilities programs: flags
+# 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:
+#
+INSTALL_PROGRAM = $(INSTALL) -m 755
+INSTALL_SCRIPT = $(INSTALL) -m 755
+INSTALL_SHLIB = $(INSTALL) -m 755
+INSTALL_DATA = $(INSTALL) -m 644
+INSTALL_DIR = $(MKDIRHIER)
+
+# -----------------------------------------------------------------------------
+# Utilities programs: flags
# If you want to give any standard flags to pretty much any utility
# (see utils.mk for a complete list), by adding a line here
# (because the version numbers have to be calculated).
GHC = @WithGhc@
+GhcDir = $(dir $(GHC))
GhcVersion = @GhcVersion@
GhcMajVersion = @GhcMajVersion@
GhcMinVersion = @GhcMinVersion@
HaveGcc = @HaveGcc@
UseGcc = YES
WhatGccIsCalled = @WhatGccIsCalled@
+GccVersion = @GccVersion@
ifeq "$(strip $(HaveGcc))" "YES"
ifneq "$(strip $(UseGcc))" "YES"
CC = cc
else
CC = $(WhatGccIsCalled)
+ GccDir = $(dir $(WhatGccIsCalled))
endif
endif
UNAME = uname
#-----------------------------------------------------------------------------
-# SGML stuff
-
-JADE = @JadeCmd@
+# DocBook XML stuff
-SGML2DVI = $(DOCBOOK_PREFIX)db2dvi
-SGML2HTML = $(DOCBOOK_PREFIX)db2html
-SGML2PS = $(DOCBOOK_PREFIX)db2ps
-SGML2PDF = $(DOCBOOK_PREFIX)db2pdf
-SGML2RTF = $(DOCBOOK_PREFIX)db2rtf
+XSLTPROC = @XsltprocCmd@
+XMLLINT = @XmllintCmd@
+FOP = @FopCmd@
+XMLTEX = @XmltexCmd@
+PDFXMLTEX = @PdfxmltexCmd@
+DVIPS = @DvipsCmd@
-SGMLSTYLESHEET = $(FPTOOLS_TOP_ABS)/docs/fptools-both.dsl
+DIR_DOCBOOK_XSL = @DIR_DOCBOOK_XSL@
-SRC_SGML2DVI_OPTS = -d $(SGMLSTYLESHEET)
-SRC_SGML2HTML_OPTS = -d $(SGMLSTYLESHEET)
-SRC_SGML2PS_OPTS = -d $(SGMLSTYLESHEET)
-SRC_SGML2RTF_OPTS = -d $(SGMLSTYLESHEET)
-SRC_SGML2PDF_OPTS = -d $(SGMLSTYLESHEET)
-
-DOCBOOK_CATALOG = @Catalog@
+XSLTPROC_LABEL_OPTS = --stringparam toc.section.depth 3 \
+ --stringparam section.autolabel 1 \
+ --stringparam section.label.includes.component.label 1
#-----------------------------------------------------------------------------
# FPtools support software
WAY_mg_HC_OPTS=-gransim
#
+# These ways apply to the RTS only:
+#
+
+# Way 'thr':
+WAY_thr_NAME=threaded
+WAY_thr_HC_OPTS=-optc-DTHREADED_RTS
+
+# Way 'thr_p':
+WAY_thr_p_NAME=threaded profiled
+WAY_thr_p_HC_OPTS=-optc-DTHREADED_RTS -prof
+
+# Way 'debug':
+WAY_debug_NAME=debug
+WAY_debug_HC_OPTS=-optc-DDEBUG
+
+# Way 'debug_p':
+WAY_debug_p_NAME=debug profiled
+WAY_debug_p_HC_OPTS=-optc-DDEBUG -prof
+
+# Way 'thr_debug':
+WAY_thr_debug_NAME=threaded
+WAY_thr_debug_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG
+
+# Way 'thr_debug_p':
+WAY_thr_debug_p_NAME=threaded
+WAY_thr_debug_p_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG -prof
+
+#
# Add user-way configurations here:
#
WAY_A_NAME=