[project @ 1997-11-13 12:10:32 by simonm]
[ghc-hetmet.git] / mk / config.mk.in
index 28041b3..1c28af7 100644 (file)
 # included by boilerplate.mk (see boilerplate.mk for a list).
 
 
+#################################################################################
+#
+#              Project-wide platform variables
+#
+#################################################################################
+
+# A "platform" is the GNU cpu-type/manufacturer/operating-system target machine
+# specifier.  E.g. sparc-sun-solaris2
+
+HOSTPLATFORM                   = @HostPlatform@
+TARGETPLATFORM                 = @TargetPlatform@
+BUILDPLATFORM                  = @HostPlatform@
+
+# Hack alert:
+# in one or two places, we need to get at the OS version (major and perhaps even minor),
+# HostOS_Full is the OS name reported by AC_CANONICAL_SYSTEM.
+#
+HostPlatform_CPP               = @HostPlatform_CPP@
+HostArch_CPP                   = @HostArch_CPP@
+HostOS_CPP                     = @HostOS_CPP@
+HostOS_Full                    = @HostOS_Full@
+HostVendor_CPP                 = @HostVendor_CPP@
+
+#
+# ToDo: check if these can be purged now. -- sof
+#
+
+@HostPlatform_CPP@_HOST        = 1
+@HostPlatform_CPP@_TARGET      = 1
+@HostPlatform_CPP@_BUILD       = 1
+
+@HostArch_CPP@_HOST_ARCH       = 1
+@HostArch_CPP@_TARGET_ARCH     = 1
+@HostArch_CPP@_BUILD_ARCH      = 1
+
+@HostOS_CPP@_HOST_OS           = 1
+@HostOS_CPP@_TARGET_OS         = 1
+@HostOS_CPP@_BUILD_OS          = 1
+
+@HostVendor_CPP@_HOST_VENDOR    = 1
+@HostVendor_CPP@_TARGET_VENDOR  = 1
+@HostVendor_CPP@_BUILD_VENDOR   = 1
+
+# Leading underscores on symbol names in object files
+# Valid options: YES/NO
+#
+LeadingUnderscore=@LeadingUnderscore@
+
+# Pin a suffix on executables? If so, what. (cygwin32 only).
+exeext=
 
 #################################################################################
 #
 #              * ghc&hslibs next
 #              then it's up to you
 
-ProjectsToBuild =  glafp-utils literate ghc hslibs
+ProjectsToBuild   = glafp-utils literate happy ghc hslibs
+#
+# Make a distinction between building and installing, ProjectsToInstall
+# does not include the literate bits..
+#
+ProjectsToInstall = glafp-utils happy ghc hslibs
 
 #
 # Should the various project tests directories be built?
@@ -80,12 +135,18 @@ IncludeTestDirsInBuild=NO
 #
 # Name variables for ghc:
 # 
-GhcProjectName       =The Glorious Glasgow Haskell Compilation System
-GhcProjectNameShort  =ghc
-GhcProjectVersion    =2.02
-GhcProjectPatchLevel =0
-GhcBuildeeVersion    =202
-GhcBuilderVersion    =29
+GhcProjectName         = The Glorious Glasgow Haskell Compilation System
+GhcProjectNameShort    = ghc
+GhcProjectVersion      = 2.09
+GhcProjectPatchLevel   = 0
+
+#
+# Name variables for happy:
+#
+HappyProjectName       = Happy
+HappyProjectNameShort  = happy
+HappyProjectVersion    = 1.4
+HappyProjectPatchLevel = 0
 
 #
 # Name variables for the fptools, for now equal to the above
@@ -102,18 +163,23 @@ ProjectPatchLevel =$(GhcProjectPatchLevel)
 # Variables that control how the compiler itself is built
 
 # Specify the Haskell compiler to be used to compile the compiler itself
-#   WithGhcHc  Path name of the compiler to use
-#   Ghc2_0     Whether this compiler is GHC 2.0 or later
-#              (which affects gruesome details about
-#               how mutually recursive modules are handled)
-#   WithGhcHcType      What "type" of compiler is being used
-#                      Valid options:
+#
+#   WithGhcHc     Path name of the compiler to use
+#
+#   Ghc2_0        Whether this compiler is GHC 2.0 or later
+#                 (which affects gruesome details about
+#                 how mutually recursive modules are handled)
+#
+#   WithGhcHcType  What "type" of compiler is being used
+#                 Valid options:
 #                           HC_CHALMERS_HBC
 #                           HC_GLASGOW_GHC
 #                           HC_ROJEMO_NHC
 #                           HC_UNSPECIFIED
+
 WithGhcHc = ghc-0.29
 Ghc2_0=NO
+
 # Unused, we think
 # WithGhcHcType=HC_GLASGOW_GHC
 
@@ -124,9 +190,16 @@ GhcCompilerWays=
 # Extra option flags to pass to the compiler that compiles the compiler
 # (Ones that are essential are wired into ghc/compiler/Makefile)
 # Typical ones:
-#      -O              compiler an optimised compiler
+#      -H25m           allocate a bigger heap (default is 6m)
+#
+#      -O              compile an optimised compiler
+#                      NB! If you add -O you'll almost certainly need to increase
+#                      the amount of heap space too (to 15m or more)
+#
 #      -DDEBUG         include consistency/assertion checks in the compiled compiler
-#      -fshow-import-specs     show import specialisations
+#
+#      -dcore-lint     check the types after every pass of the compiler;
+#                      a pretty strong internal check
 GhcHcOpts=
 
 # GhcWithHscBuiltViaC - build GHC compiler proper (\`hsc') from .hc files?
@@ -148,15 +221,20 @@ GhcWithRegisterised=YES
 #
 # Target platforms supported:
 #   i386, alpha & sparc
-GhcWithNativeCodeGen=YES
-
-# Build the compiler with the deforester included?
-GhcWithDeforester=NO
+GhcWithNativeCodeGen=$(shell if (test x$(findstring $(HostArch_CPP),i386 alpha sparc) = x); then echo NO; else echo YES; fi)
 
+#
+# Building various ways?
+# (right now, empty if not).
+BuildingParallel=$(subst mp,YES,$(filter mp,$(WAYS)))
+BuildingConcurrent=$(subst mc,YES,$(filter mc,$(WAYS)))
+BuildingProfiling=$(subst p,YES,$(filter p,$(WAYS)))
+BuildingGranSim=$(subst mg,YES,$(filter mg,$(WAYS)))
+BuildingProfilingConcurrent=$(subst mr,YES,$(filter mr,$(WAYS)))
 
 #---------------------------------------------------------------
 #
-# Variables that control how the prelude libararies and runtime system are built
+# Variables that control how the prelude libraries and runtime system are built
 
 # What extra ways to build the libraries in
 # In addition to the normal sequential way, the default is to also build
@@ -166,7 +244,21 @@ GhcLibWays=p
 # Option flags to pass to GHC when it's compiling prelude modules
 # Typically these are things like -O or -dcore-lint
 # The ones that are *essential* are wired into ghc/lib/Makefile
-GhcLibHcOpts= -split-objs -odir $(basename $*)
+#
+#      -O is pretty desirable, otherwise no inlining of prelude
+#              things (incl "+") happens when compiling with this compiler
+
+#
+# Splitting profiled code produces awfully large archives under ELF, so
+# we turn it off here.
+#
+# ToDo: track down the source of this.
+#
+ifneq "$(strip $(way))" "p"
+GhcLibHcOpts= -O -split-objs -odir $*
+else
+GhcLibHcOpts= -O
+endif
 
 
 #################################################################################
@@ -209,6 +301,12 @@ HsLibHcOpts=$(GhcLibHcOpts)
 #
 #################################################################################
 
+# The compiler you'd like to use to compile Happy
+WithHappyHc = $(WithGhcHc)
+
+# HappyHcOpts gives the flags to pass to the Haskell compiler used
+#            to compile the Happy source coed
+HappyHcOpts = 
 
 
 #################################################################################
@@ -287,18 +385,58 @@ FPTOOLS_TOP_ABS           = @hardtop@
 prefix                  = @prefix@
 exec_prefix             = @exec_prefix@
 bindir                  = @bindir@
-sbindir                 = @sbindir@
-libexecdir              = @libexecdir@
+#UNUSED, see below: libexecdir              = @libexecdir@
 datadir                 = @datadir@
-sysconfdir              = @datadir@
-sharedstatedir          = @sharedstatedir@
-localstatedir           = @localstatedir@
+#sysconfdir              = @datadir@
+#sharedstatedir          = @sharedstatedir@
+#localstatedir           = @localstatedir@
 libdir                  = @libdir@
 infodir                        = @infodir@
 includedir              = @includedir@
 oldincludedir           = @oldincludedir@
 mandir                 = @mandir@
-srcdir                  = @srcdir@
+#UNUSED:srcdir          = @srcdir@
+
+# 
+# Default values for most of the above are only set if
+# they weren't configured to anything in particular
+# via the configure script. (i.e., we make no assumption
+# that the autoconf-generated script will assign defaults
+# to all of the above).
+#
+ifeq "$(strip $(exec_prefix))" ""
+exec_prefix            = $(prefix)
+endif
+ifeq "$(strip $(bindir))" ""
+bindir                 = $(exec_prefix)/bin
+endif
+
+#
+# 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)
+
+ifeq "$(strip $(datadir))" ""
+datadir                = $(prefix)/share
+endif
+ifeq "$(strip $(libdir))" ""
+libdir         = $(exec_prefix)/lib
+endif
+ifeq "$(strip $(infodir))" ""
+infodir                = $(prefix)/info
+endif
+ifeq "$(strip $(includedir))" ""
+includedir     = $(prefix)/include
+endif
+ifeq "$(strip $(oldincludedir))" ""
+oldincludedir  = /usr/include
+endif
+ifeq "$(strip $(mandir))" ""
+mandir         = $(prefix)/man
+endif
 
 #################################################################################
 #
@@ -319,49 +457,6 @@ srcdir                  = @srcdir@
 
 #################################################################################
 #
-#              Platform
-#
-#################################################################################
-
-# A "platform" is the GNU cpu-type/manufacturer/operating-system target machine
-# specifier.  E.g. sparc-sun-solaris2
-
-HOSTPLATFORM                   = @HostPlatform@
-TARGETPLATFORM                 = @TargetPlatform@
-BUILDPLATFORM                  = @HostPlatform@
-
-HostPlatform_CPP               = @HostPlatform_CPP@
-HostArch_CPP                   = @HostArch_CPP@
-HostOS_CPP                     = @HostOS_CPP@
-HostVendor_CPP                 = @HostVendor_CPP@
-
-#
-# ToDo: check if these can be purged now. -- sof
-#
-
-@HostPlatform_CPP@_HOST        = 1
-@HostPlatform_CPP@_TARGET      = 1
-@HostPlatform_CPP@_BUILD       = 1
-
-@HostArch_CPP@_HOST_ARCH       = 1
-@HostArch_CPP@_TARGET_ARCH     = 1
-@HostArch_CPP@_BUILD_ARCH      = 1
-
-@HostOS_CPP@_HOST_OS           = 1
-@HostOS_CPP@_TARGET_OS         = 1
-@HostOS_CPP@_BUILD_OS          = 1
-
-@HostVendor_CPP@_HOST_VENDOR    = 1
-@HostVendor_CPP@_TARGET_VENDOR  = 1
-@HostVendor_CPP@_BUILD_VENDOR   = 1
-
-# Leading underscores on symbol names in object files
-# Valid options: YES/NO
-#
-LeadingUnderscore=@LeadingUnderscore@
-
-#################################################################################
-#
 #              Utilities programs: where to find them
 #
 #################################################################################
@@ -406,6 +501,7 @@ INFO_PREFIX                 = $(FPTOOLS_TOP)/literate/info-utils/
 TEXI2HTML_PREFIX        = $(LITERATE_PREFIX)texi2html/
 
 HAPPY_PREFIX           = $(FPTOOLS_TOP)/happy/src/
+GREENCARD_PREFIX       = $(FPTOOLS_TOP)/green-card/src/
 
 UNLIT_PREFIX           = $(FPTOOLS_TOP)/ghc/utils/unlit/
 UGEN_PREFIX             = $(FPTOOLS_TOP)/ghc/utils/ugen/
@@ -473,9 +569,7 @@ INSTALL                     = @INSTALL@
 # install-sh script (if chosen). This not terribly useful to us, so we convert
 # it into an abs. path.
 # 
-ifeq "$(INSTALL)" ".././install-sh"
-INSTALL                        = $(FPTOOLS_TOP_ABS)/install-sh
-endif
+INSTALL                        := $(subst .././install-sh,$(FPTOOLS_TOP_ABS)/install-sh,$(INSTALL))
 LATEX                  = latex
 LN_S                   = @LN_S@
 MANMACROS              = -man
@@ -490,9 +584,38 @@ RANLIB                     = @RANLIB@
 RM                     = rm -f
 SED                    = @SedCmd@
 SHELL                  = /bin/sh
+#
+# In emergency situations, REAL_SHELL is used to perform shell commands
+# from within the ghc driver script, by scribbling the command line to
+# a temp file and then having $(REAL_SHELL) execute it. 
+#
+# The reason for having to do this is that overly long command lines
+# cause unnecessary trouble with some shells (e.g., /bin/sh on Solaris
+# 2.5.1), which is why this backdoor is provided. The situation of overly
+# long command lines is either encountered while doing `make boot' in ghc/compiler, 
+# or when linking the compiler binary (`hsc'). 
+#
+# We do not use SHELL to execute long commands, as `make' will more than likely
+# override whatever setting you have in your environment while executing. 
+
+# By default, REAL_SHELL is set equal SHELL, which is not really a smart move
+# as it SHELL that will show up the bogosity in the first place, but setting
+# it to anything else isn't really portable.
+#
+#  ====> If long command lines cause you trouble, invoke `ghc' (via `make' or otherwise)
+# with REAL_SHELL set to something else than /bin/sh, for instance, your favourite
+# command shell.
+#
+REAL_SHELL=$(SHELL)
 SIZE                   = size
 STRIP                  = strip
 TAR                    = @TarCmd@
+
+#
+# Under cygwin32, we have to deal with .exe suffixes
+#
+EXE_SUFFIX=@ExeSuffix@
+
 #
 # This is special to literate/, ToDo: add literate-specific
 # configure setup to literate/.
@@ -523,7 +646,9 @@ ETAGS                       = $(ETAGS_PREFIX)etags
 VERBATIM               = $(VERBATIM_PREFIX)verbatim
 RUNTEST                        = $(RUNTEST_PREFIX)runstdtest
 HAPPY                  = @HappyCmd@
+HAPPY_VERSION          = @HappyVersion@                
 LX                     = @LxCmd@
+GREENCARD              = @GreencardCmd@
 
 ifeq "$(HAPPY)" ""
 HAPPY                  = $(HAPPY_PREFIX)happy