X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2FMakefile;h=44293489d186a38a0cc9df6568c9b8917e8623bf;hb=6b6f88da9bfde8f26531ba595a0e47be72db5bb0;hp=ecc6cd6fb9a5154ac437ce988311f818ec5a9073;hpb=4cef3202f8067fc3e9860e7a2b72c10b313b7366;p=ghc-hetmet.git diff --git a/ghc/compiler/Makefile b/ghc/compiler/Makefile index ecc6cd6..4429348 100644 --- a/ghc/compiler/Makefile +++ b/ghc/compiler/Makefile @@ -1,5 +1,5 @@ # ----------------------------------------------------------------------------- -# $Id: Makefile,v 1.155 2001/05/28 03:31:19 sof Exp $ +# $Id: Makefile,v 1.163 2001/06/25 17:28:30 sof Exp $ TOP = .. include $(TOP)/mk/boilerplate.mk @@ -25,8 +25,10 @@ endif # ----------------------------------------------------------------------------- # Create compiler configuration +# +# The 'echo' commands simply spit the values of various make variables +# into Config.hs, whence they can be compiled and used by GHC itself -CURRENT_DIR = ghc/compiler CONFIG_HS = main/Config.hs boot :: $(CONFIG_HS) @@ -41,41 +43,31 @@ $(CONFIG_HS) : $(FPTOOLS_TOP)/mk/config.mk Makefile @echo "cHscIfaceFileVersion = \"$(HscIfaceFileVersion)\"" >> $(CONFIG_HS) @echo "cHOSTPLATFORM = \"$(HOSTPLATFORM)\"" >> $(CONFIG_HS) @echo "cTARGETPLATFORM = \"$(TARGETPLATFORM)\"" >> $(CONFIG_HS) - @echo "cCURRENT_DIR = \"$(CURRENT_DIR)\"" >> $(CONFIG_HS) - @echo "cGHC_LIB_DIR = \"$(GHC_LIB_DIR)\"" >> $(CONFIG_HS) - @echo "cGHC_RUNTIME_DIR = \"$(GHC_RUNTIME_DIR)\"" >> $(CONFIG_HS) - @echo "cGHC_UTILS_DIR = \"$(GHC_UTILS_DIR)\"" >> $(CONFIG_HS) - @echo "cGHC_INCLUDE_DIR = \"$(GHC_INCLUDE_DIR)\"" >> $(CONFIG_HS) - @echo "cGHC_DRIVER_DIR = \"$(GHC_DRIVER_DIR)\"" >> $(CONFIG_HS) - @echo "cGCC = \"$(WhatGccIsCalled)\"" >> $(CONFIG_HS) - @echo "cMkDLL = \"$(BLD_DLL)\"" >> $(CONFIG_HS) @echo "cGhcWithNativeCodeGen = \"$(GhcWithNativeCodeGen)\"" >> $(CONFIG_HS) @echo "cGhcUnregisterised = \"$(GhcUnregisterised)\"" >> $(CONFIG_HS) @echo "cLeadingUnderscore = \"$(LeadingUnderscore)\"" >> $(CONFIG_HS) + @echo "cRAWCPP = \"$(GHC_RAWCPP)\"" >> $(CONFIG_HS) + @echo "cGCC = \"$(WhatGccIsCalled)\"" >> $(CONFIG_HS) + @echo "cMKDLL = \"$(BLD_DLL)\"" >> $(CONFIG_HS) + @echo "cGHC_DRIVER_DIR = \"$(GHC_DRIVER_DIR)\"" >> $(CONFIG_HS) + @echo "cGHC_TOUCHY = \"$(GHC_TOUCHY)\"" >> $(CONFIG_HS) + @echo "cGHC_TOUCHY_DIR = \"$(GHC_TOUCHY_DIR)\"" >> $(CONFIG_HS) @echo "cGHC_UNLIT = \"$(GHC_UNLIT)\"" >> $(CONFIG_HS) + @echo "cGHC_UNLIT_DIR = \"$(GHC_UNLIT_DIR)\"" >> $(CONFIG_HS) @echo "cGHC_MANGLER = \"$(GHC_MANGLER)\"" >> $(CONFIG_HS) + @echo "cGHC_MANGLER_DIR = \"$(GHC_MANGLER_DIR)\"" >> $(CONFIG_HS) @echo "cGHC_SPLIT = \"$(GHC_SPLIT)\"" >> $(CONFIG_HS) + @echo "cGHC_SPLIT_DIR = \"$(GHC_SPLIT_DIR)\"" >> $(CONFIG_HS) @echo "cGHC_SYSMAN = \"$(GHC_SYSMAN)\"" >> $(CONFIG_HS) + @echo "cGHC_SYSMAN_DIR = \"$(GHC_SYSMAN_DIR)\"" >> $(CONFIG_HS) + @echo "cGHC_CP = \"$(GHC_CP)\"" >> $(CONFIG_HS) + @echo "cGHC_PERL = \"$(GHC_PERL)\"" >> $(CONFIG_HS) @echo "cEnableWin32DLLs = \"$(EnableWin32DLLs)\"" >> $(CONFIG_HS) -ifeq "$(TARGETPLATFORM) and $(MinimalUnixDeps)" "i386-unknown-mingw32 and YES" - @echo "cCP = \"copy /y\"" >> $(CONFIG_HS) - @echo "cRM = \"del /F /Q\"" >> $(CONFIG_HS) - @echo "cTOUCH = \"$(GHC_TOUCHY)\"" >> $(CONFIG_HS) -else - @echo "cCP = \"$(CP)\"" >> $(CONFIG_HS) - @echo "cRM = \"$(RM)\"" >> $(CONFIG_HS) - @echo "cTOUCH = \"touch\"" >> $(CONFIG_HS) -endif @echo "cCONTEXT_DIFF = \"$(CONTEXT_DIFF)\"" >> $(CONFIG_HS) @echo "cHaveLibGmp = \"$(HaveLibGmp)\"" >> $(CONFIG_HS) @echo "cUSER_WAY_NAMES = \"$(USER_WAY_NAMES)\"" >> $(CONFIG_HS) @echo "cUSER_WAY_OPTS = \"$(USER_WAY_OPTS)\"" >> $(CONFIG_HS) @echo "cDEFAULT_TMPDIR = \"$(DEFAULT_TMPDIR)\"" >> $(CONFIG_HS) -ifeq "$(TARGETPLATFORM) and $(MinimalUnixDeps)" "i386-unknown-mingw32 and YES" - @echo "cRAWCPP = \"$(subst -mwin32,,$(RAWCPP))\"" >> $(CONFIG_HS) -else - @echo "cRAWCPP = \"$(RAWCPP)\"" >> $(CONFIG_HS) -endif @echo done. CLEAN_FILES += $(CONFIG_HS) @@ -103,16 +95,24 @@ DIRS += ilxGen SRC_HC_OPTS += -DILX endif +# +# Canonicalize the GHC version number - assume it is has the form x.yy.[z]. +# +# [First sed substitution gets rid of the '.' - second appends a '0' if the +# 'z' portion is missing] +# +CANON_HC_VERSION=$(shell echo "$(GhcVersion)" | sed -e 's/\.//g;s/^\(...\)$$/\10/g') + ifeq "$(BootingFromHc)" "YES" # HC files are always from a self-booted compiler -ghc_411_at_least = 1 +ghc_411_at_least = YES else -ghc_411_at_least = $(shell expr "$(GhcVersion)" \>= 4.11) +ghc_411_at_least=$(shell if (test $(CANON_HC_VERSION) -ge 4110); then echo YES; else echo NO; fi) endif # Only include GHCi if we're bootstrapping with at least version 411 ifeq "$(GhcWithInterpreter)" "YES" -ifeq "$(ghc_411_at_least)" "1" +ifeq "$(ghc_411_at_least)" "YES" SRC_HC_OPTS += -DGHCI DIRS += ghci endif @@ -122,6 +122,16 @@ endif # for explanatory comment as to what this does. ifeq "$(MinimalUnixDeps)" "YES" SRC_HC_OPTS += -DMINIMAL_UNIX_DEPS +ghc_501_at_least = $(shell if (test $(CANON_HC_VERSION) -gt 5000); then echo YES; else echo NO; fi) + +ifneq "$(ghc_501_at_least)" "YES" +boot :: + $(CP) ../lib/std/cbits/system.c main +C_SRCS += main/system.c +SRC_CC_OPTS += -I$(GHC_LIB_DIR)/std/cbits +SRC_MKDEPENDC_OPTS += -I$(GHC_LIB_DIR)/std/cbits +HS_OBJS += main/system.o +endif endif HS_SRCS := $(foreach dir,$(DIRS),$(wildcard $(dir)/*.lhs) $(wildcard $(dir)/*.hs)) @@ -138,7 +148,7 @@ ifeq "$(BootingFromHc)" "YES" HCS += rename/ParseIface.hc parser/Parser.hc main/ParsePkgConf.hc endif -HS_OBJS = \ +HS_OBJS = \ $(patsubst %.hc, %.o, $(HCS)) \ parser/hschooks.o @@ -184,11 +194,19 @@ SRC_HC_OPTS += \ -I. -IcodeGen -InativeGen -Iparser \ -i$(subst $(space),:,$(DIRS)) +# We should do this, to avoid the use of an explicit path +# in GHC source files (include "../includes/config.h" +# But alas GHC 4.08 (and others for all I know) uses this very +# same include path when compiling the .hc files it generates. +# Disaster! Then the hc file sees the GHC 5.02 (or whatever) +# include files. For the moment we've reverted to using +# an explicit path in the .hs sources +# -I$(GHC_INCLUDE_DIR) \ + ifneq "$(mingw32_TARGET_OS)" "1" SRC_HC_OPTS += -package concurrent -package posix -package text -package util else SRC_HC_OPTS += -package concurrent -package text -package util -main/TmpFiles_HC_OPTS += -Dmingw32_TARGET_OS endif SRC_CC_OPTS += -Iparser -I. -I$(TOP)/includes -O @@ -213,7 +231,7 @@ main/ParsePkgConf_HC_OPTS += -fno-warn-incomplete-patterns # The latest GHC version doesn't have a -K option yet, and it doesn't # seem to be necessary anymore for the modules below. -ifeq "$(ghc_411_at_least)" "0" +ifeq "$(ghc_411_at_least)" "NO" rename/ParseIface_HC_OPTS += -K2m parser/Parser_HC_OPTS += -K2m endif @@ -250,7 +268,7 @@ main/DriverPipeline_HC_OPTS = -fno-cse main/DriverState_HC_OPTS = -fno-cse main/DriverUtil_HC_OPTS = -fno-cse main/Finder_HC_OPTS = -fno-cse -main/TmpFiles_HC_OPTS = -fno-cse +main/SysTools_HC_OPTS = -fno-cse # ---------------------------------------------------------------------------- # C compilations @@ -327,11 +345,11 @@ all :: ghc-inplace ghc-inplace : $(HS_PROG) @$(RM) $@ echo '#!/bin/sh' >>$@ - echo exec $(FPTOOLS_TOP_ABS_UNIX)/ghc/compiler/$(HS_PROG) -B$(FPTOOLS_TOP_ABS) '"$$@"' >>$@ + echo exec $(FPTOOLS_TOP_ABS_UNIX)/ghc/compiler/$(HS_PROG) -B$(FPTOOLS_TOP_ABS)/ghc/compiler '"$$@"' >>$@ chmod 755 $@ ifeq "$(TARGETPLATFORM) and $(MinimalUnixDeps)" "i386-unknown-mingw32 and YES" @$(RM) $@.bat - echo "@"$(subst /,\\,$(FPTOOLS_TOP_ABS)/ghc/compiler/$(HS_PROG)) "-B$(FPTOOLS_TOP_ABS) %*" >$@.bat + echo "@"$(subst /,\\,$(FPTOOLS_TOP_ABS)/ghc/compiler/$(HS_PROG)) "-B$(FPTOOLS_TOP_ABS)/ghc/compiler %*" >$@.bat chmod 755 $@.bat endif