Commit c570fd56 authored by Simon Marlow's avatar Simon Marlow

Hacks to get nofib working again: copy in parts of the old GHC build system

parent cf40ee6d
......@@ -18,7 +18,7 @@ include $(TOP)/mk/boilerplate.mk
# As usual,if you want to override these, create
# $(TOP)/../mk/build.mk containing the flags and options
# you want to use in a build tree.
SUBDIRS = $(NoFibSubDirs)
SUBDIRS = runstdtest $(NoFibSubDirs)
# Include the standard targets, one of which
......
......@@ -10,10 +10,12 @@
# with standard TOP-mangling
# Remember, TOP is the top level of the innermost level
default : all
NOFIB_TOP := $(TOP)
TOP := $(TOP)/..
include $(TOP)/mk/boilerplate.mk
TOP:=$(NOFIB_TOP)
include $(NOFIB_TOP)/../mk/config.mk
GHC_TOP := $(TOP)
TOP := $(NOFIB_TOP)
# Turn off -Werror for nofib. This allows you to use nofib in a tree
# built with validate.
......@@ -30,9 +32,17 @@ WAYS=$(NoFibWays)
SRC_HC_OPTS += $(NoFibHcOpts) -Rghc-timing
HC = $(WithNofibHc)
MKDEPENDHS := $(WithNofibHc) # ToDo: wrong, if $(WithNofibHc) isn't GHC.
USE_NEW_MKDEPEND_FLAGS := $(shell if test `$(MKDEPENDHS) --numeric-version | sed -e "s/\./0/" -e "s/\..*//"` -ge 609; then echo YES; else echo NO; fi)
HC = $(GHC_TOP)/$(GHC_STAGE2)
MKDEPENDHS := $(GHC_TOP)/$(GHC_STAGE2) # ToDo: wrong, if $(WithNofibHc) isn't GHC.
MKDEPENDC := $(GHC_TOP)/$(MKDEPENDC)
RUNTEST = $(NOFIB_TOP)/runstdtest/runstdtest
USE_NEW_MKDEPEND_FLAGS = YES
# USE_NEW_MKDEPEND_FLAGS := $(shell if test `$(MKDEPENDHS) --numeric-version | sed -e "s/\./0/" -e "s/\..*//"` -ge 609; then echo YES; else echo NO; fi)
include $(NOFIB_TOP)/mk/ghc-paths.mk
include $(NOFIB_TOP)/mk/ghc-opts.mk
include $(NOFIB_TOP)/mk/paths.mk
include $(NOFIB_TOP)/mk/opts.mk
-include .depend
#################################################################################
#
# opts.mk
#
# This file defines Make variables for the
# option flags for each utility program
#
# $Id: opts.mk,v 1.36 2004/08/26 20:08:54 panne Exp $
#
#################################################################################
#
# N.B. This is *NOT* the place to put extra options of ANY SORT!
#
# Exports: Define P_OPTS for the most important utility programs, P, namely
#
# AR AS CPP CTAGS C FLEX HC HSTAGS LD LINT
# LIT2CHANGELOG LIT2HTML LIT2LATEX LIT2PGM
# MKDEPENDC MKDEPENDHS MKDEPENDLIT RUNTEST
# UNLIT
# For each such utility program P, this file defines
#
# $(P) The pathname to invoke the utility
# P_OPTS Options to pass to P
#
# P_OPTS is always defined like this:
#
# P_OPTS = SRC_P_OPTS WAY$(_way)_P_OPTS EXTRA_P_OPTS
#
# where the variables on the right hand side are set by the user or
# some other Makefile. They have the following intended uses:
#
# SRC_P_OPTS Source-tree options for P
# WAY$(_way)_P_OPTS Source-tree options for P specific to $(way)
# EXTRA_P_OPTS Command-line options for P
#
# and for some programs
#
# $(HcFlavour)_P_OPTS Compiler-specific options for P
# $($*_P_OPTS) Target specific options for P
#
# All these options should be set with
# thing += extra-options
# in case someone higher up the include hierarchy has already added some
# Which class of compiler are we aiming at? (GHC, NHC or HUGS)
ifeq "$(HcFlavour)" ""
HcFlavour = GHC
endif
#################################################################################
#
# Absolutely standard glue
#
#################################################################################
# All the standard gluing together, as in the comment right at the front
HC_OPTS = $(BOOTSTRAPPING_PACKAGE_CONF_HC_OPTS) $(SRC_HC_OPTS) $(WAY$(_way)_HC_OPTS) $($*_HC_OPTS) $(EXTRA_HC_OPTS)
HC_POST_OPTS = $(SRC_HC_POST_OPTS) $(WAY$(_way)_HC_POST_OPTS) $($*_HC_POST_OPTS) $(EXTRA_HC_POST_OPTS)
HC_PRE_OPTS = $(SRC_HC_PRE_OPTS) $(WAY$(_way)_HC_PRE_OPTS) $($*_HC_PRE_OPTS) $(EXTRA_HC_PRE_OPTS)
ILX2IL_OPTS = $(SRC_ILX2IL_OPTS) $(WAY$(_way)_ILX2IL_OPTS) $($*_ILX2IL_OPTS) $(EXTRA_ILX2IL_OPTS)
ILASM_OPTS = $(SRC_ILASM_OPTS) $(WAY$(_way)_ILASM_OPTS) $($*_ILASM_OPTS) $(EXTRA_ILASM_OPTS)
RUNTEST_OPTS = $(SRC_RUNTEST_OPTS) $(WAY$(_way)_RUNTEST_OPTS) \
$($*_RUNTEST_OPTS) $(EXTRA_RUNTEST_OPTS)
ALEX_OPTS = $(SRC_ALEX_OPTS) $($(HcFlavour)_ALEX_OPTS) $(WAY$(_way)_ALEX_OPTS) $($*_ALEX_OPTS) $(EXTRA_ALEX_OPTS)
AR_OPTS = $(SRC_AR_OPTS) $(WAY$(_way)_AR_OPTS) $(EXTRA_AR_OPTS)
AS_OPTS = $(SRC_AS_OPTS) $(WAY$(_way)_AS_OPTS) $(EXTRA_AS_OPTS)
BLD_DLL_OPTS = $(SRC_BLD_DLL_OPTS) $(WAY$(_way)_BLD_DLL_OPTS) $($*_HC_OPTS) $(EXTRA_BLD_DLL_OPTS)
CPP_OPTS = $(SRC_CPP_OPTS) $(WAY$(_way)_CPP_OPTS) $(EXTRA_CPP_OPTS)
CTAGS_OPTS = $(SRC_CTAGS_OPTS) $(WAY$(_way)_CTAGS_OPTS) $(EXTRA_CTAGS_OPTS)
CC_OPTS = $(SRC_CC_OPTS) $(WAY$(_way)_CC_OPTS) $($*_CC_OPTS) $(EXTRA_CC_OPTS)
FLEX_OPTS = $(SRC_FLEX_OPTS) $(WAY$(_way)_FLEX_OPTS) $(EXTRA_FLEX_OPTS)
HADDOCK_OPTS = $(SRC_HADDOCK_OPTS) $(WAY$(_way)_HADDOCK_OPTS) $($*_HADDOCK_OPTS) $(EXTRA_HADDOCK_OPTS)
HAPPY_OPTS = $(SRC_HAPPY_OPTS) $($(HcFlavour)_HAPPY_OPTS) $(WAY$(_way)_HAPPY_OPTS) $($*_HAPPY_OPTS) $(EXTRA_HAPPY_OPTS)
GC_OPTS = $(SRC_GC_OPTS) $(WAY$(_way)_GC_OPTS) $($*_GC_OPTS) $(EXTRA_GC_OPTS)
HSTAGS_OPTS = $(SRC_HSTAGS_OPTS) $(WAY$(_way)_HSTAGS_OPTS) $(EXTRA_HSTAGS_OPTS)
HSC2HS_OPTS = $(SRC_HSC2HS_OPTS) $($(HcFlavour)_HSC2HS_OPTS) $(WAY$(_way)_HSC2HS_OPTS) $(EXTRA_HSC2HS_OPTS)
INSTALL_OPTS = $(SRC_INSTALL_OPTS) $(WAY$(_way)_INSTALL_OPTS) $(EXTRA_INSTALL_OPTS)
INSTALL_BIN_OPTS = $(INSTALL_OPTS) $(SRC_INSTALL_BIN_OPTS)
LD_OPTS = $(SRC_LD_OPTS) $(WAY$(_way)_LD_OPTS) $(EXTRA_LD_OPTS)
LINT_OPTS = $(SRC_LINT_OPTS) $(WAY$(_way)_LINT_OPTS) $(EXTRA_LINT_OPTS)
HEVEA_OPTS = $(SRC_HEVEA_OPTS) $(WAY$(_way)_HEVEA_OPTS) $(EXTRA_HEVEA_OPTS)
HACHA_OPTS = $(SRC_HACHA_OPTS) $(WAY$(_way)_HACHA_OPTS) $(EXTRA_HACHA_OPTS)
LIT2CHANGELOG_OPTS = $(SRC_LIT2CHANGELOG_OPTS) $(WAY$(_way)_LIT2CHANGELOG_OPTS) \
$(EXTRA_LIT2CHANGELOG_OPTS)
LIT2HTML_OPTS = $(SRC_LIT2HTML_OPTS) $(WAY$(_way)_LIT2HTML_OPTS) $(EXTRA_LIT2HTML_OPTS)
LIT2LATEX_OPTS = $(SRC_LIT2LATEX_OPTS) $(WAY$(_way)_LIT2LATEX_OPTS) $(EXTRA_LIT2LATEX_OPTS)
LIT2PGM_OPTS = $(SRC_LIT2PGM_OPTS) $(WAY$(_way)_LIT2PGM_OPTS) $(EXTRA_LIT2PGM_OPTS)
MKDEPENDC_OPTS = $(SRC_MKDEPENDC_OPTS) $(WAY$(_way)_MKDEPENDC_OPTS) $(EXTRA_MKDEPENDC_OPTS)
MKDEPENDHS_OPTS = $(BOOTSTRAPPING_PACKAGE_CONF_MKDEPENDHS_OPTS) \
$(SRC_MKDEPENDHS_OPTS) $(WAY$(_way)_MKDEPENDHS_OPTS) \
$(EXTRA_MKDEPENDHS_OPTS)
MKDEPENDLIT_OPTS = $(SRC_MKDEPENDLIT_OPTS) $(WAY$(_way)_MKDEPENDLIT_OPTS) \
$(EXTRA_MKDEPENDLIT_OPTS)
XSLTPROC_OPTS = $(WAY$(_way)_XSLTPROC_OPTS) $(EXTRA_XSLTPROC_OPTS)
FOP_OPTS = $(WAY$(_way)_FOP_OPTS) $(EXTRA_FOP_OPTS)
UNLIT_OPTS = $(SRC_UNLIT_OPTS) $(WAY$(_way)_UNLIT_OPTS) $(EXTRA_UNLIT_OPTS)
ZIP_OPTS = $(SRC_ZIP_OPTS) $(EXTRA_ZIP_OPTS)
# Version of CC_OPTS to use when GHC is the C compiler
GHC_CC_OPTS = $(addprefix -optc, $(CC_OPTS)) $(HC_OPTS)
This diff is collapsed.
##################################################################
#
# Recursive stuff
#
##################################################################
# Here are the diabolically clever rules that
#
# (a) for each "recursive target" <t>
# propagates "make <t>" to directories in SUBDIRS
#
# (b) when SUBDIRS is empty,
# for each "multi-way-target" <t>
# calls "make way=w <t>" for each w in $(WAYS)
#
# This has the effect of making the standard target
# in each of the specified ways (as well as in the normal way
# Controlling variables
# WAYS = extra (beyond the normal way) ways to build things in
# SUBDIRS = subdirectories to recurse into
# No ways, so iterate over the SUBDIRS
# note about recursively invoking make: we'd like make to drop all the
# way back to the top level if it fails in any of the
# sub(sub-...)directories. This is done by setting the -e flag to the
# shell during the loop, which causes an immediate failure if any of
# the shell commands fail.
# One exception: if the user gave the -i or -k flag to make in the
# first place, we'd like to reverse this behaviour. So we check for
# these flags, and set the -e flag appropriately. NOTE: watch out for
# the --no-print-directory flag which is passed to recursive
# invocations of make.
#
ifeq "$(way)" ""
ifneq "$(SUBDIRS)" ""
# we override the 'boot', 'all' and 'install' targets in the top
# level Makefile. Some of the sub-projects also set 'boot' to empty.
ifeq "$(NO_ALL_TARGET)" "YES"
ALL_TARGET =
else
ALL_TARGET = all
endif
ifeq "$(NO_BOOT_TARGET)" "YES"
BOOT_TARGET =
else
BOOT_TARGET = boot
endif
ifeq "$(NO_INSTALL_TARGET)" "YES"
INSTALL_TARGET =
INSTALL_DOCS_TARGET =
else
INSTALL_TARGET = install
INSTALL_DOCS_TARGET = install-docs
endif
$(ALL_TARGET) docs runtests $(BOOT_TARGET) TAGS clean distclean mostlyclean maintainer-clean $(INSTALL_TARGET) $(INSTALL_DOCS_TARGET) html chm HxS ps dvi txt::
@echo "------------------------------------------------------------------------"
@echo "== Recursively making \`$@' in $(SUBDIRS) ..."
@echo "PWD = $(shell pwd)"
@echo "------------------------------------------------------------------------"
# Don't rely on -e working, instead we check exit return codes from sub-makes.
@case '${MFLAGS}' in *-[ik]*) x_on_err=0;; *-r*[ik]*) x_on_err=0;; *) x_on_err=1;; esac; \
if [ $$x_on_err -eq 0 ]; \
then echo "Won't exit on error due to MFLAGS: ${MFLAGS}"; \
fi; \
for i in $(SUBDIRS); do \
echo "------------------------------------------------------------------------"; \
echo "== $(MAKE) $@ $(MFLAGS);"; \
echo " in $(shell pwd)/$$i"; \
echo "------------------------------------------------------------------------"; \
$(MAKE) --no-print-directory -C $$i $(MFLAGS) $@ CLEAN_ALL_STAGES=YES; \
if [ $$? -eq 0 -o $$x_on_err -eq 0 ]; \
then echo "Finished making $@ in $$i": $$?; \
else echo "Failed making $@ in $$i": $$?; exit 1; \
fi; \
done
@echo "------------------------------------------------------------------------"
@echo "== Finished making \`$@' in $(SUBDIRS) ..."
@echo "PWD = $(shell pwd)"
@echo "------------------------------------------------------------------------"
endif
endif
#
# Selectively building subdirectories.
#
#
ifneq "$(SUBDIRS)" ""
$(SUBDIRS) ::
$(MAKE) -C $@ $(MFLAGS)
endif
#################################################################################
#
# suffix.mk
#
# Suffix rules for fptools
#
#################################################################################
#
# This file contain the default suffix rules for all the fptools projects.
#
# No need to define .SUFFIXES because we don't use any suffix rules
# Instead we use gmake's pattern rules exlusively
.SUFFIXES:
# This declaration tells GNU make to delete the target if it has
# changed and the command which created it exited with a non-zero exit
# code.
.DELETE_ON_ERROR:
#-----------------------------------------------------------------------------
# Haskell Suffix Rules
# The $(odir) support is for building GHC, where we need to build three
# different versions from the same sources. See compiler/Makefile.
ifneq "$(odir)" ""
odir_ = $(odir)/
else
odir_ =
endif
# Turn off all the Haskell suffix rules if we're booting from .hc
# files. The file bootstrap.mk contains alternative suffix rules in
# this case.
ifneq "$(BootingFromHc)" "YES"
$(odir_)%.$(way_)o : %.hs
$(HC_PRE_OPTS)
$(HC) $(HC_OPTS) -c $< -o $@ -ohi $(basename $@).$(way_)hi
$(HC_POST_OPTS)
$(odir_)%.$(way_)o : %.lhs
$(HC_PRE_OPTS)
$(HC) $(HC_OPTS) -c $< -o $@ -ohi $(basename $@).$(way_)hi
$(HC_POST_OPTS)
# Now the rules for hs-boot files.
# Note that they do *not* do teh HS_PRE_OPTS / HS_POST_OPTS stuff,
# (which concerns splitting) because they don't generate .o files
$(odir_)%.$(way_)o-boot : %.hs-boot
$(HC) $(HC_OPTS) -c $< -o $@ -ohi $(basename $@).$(way_)hi-boot
$(odir_)%.$(way_)o-boot : %.lhs-boot
$(HC) $(HC_OPTS) -c $< -o $@ -ohi $(basename $@).$(way_)hi-boot
$(odir_)%.$(way_)hc : %.lhs
$(RM) $@
$(HC) $(HC_OPTS) -C $< -o $@
$(odir_)%.$(way_)hc : %.hs
$(RM) $@
$(HC) $(HC_OPTS) -C $< -o $@
$(odir_)%.$(way_)o : %.$(way_)hc
$(HC_PRE_OPTS)
$(HC) $(HC_OPTS) -c $< -o $@
$(HC_POST_OPTS)
$(odir_)%.$(way_)o : %.hc
$(HC_PRE_OPTS)
$(HC) $(HC_OPTS) -c $< -o $@
$(HC_POST_OPTS)
$(odir_)%.$(way_)s : %.$(way_)hc
$(HC_PRE_OPTS)
$(HC) $(HC_OPTS) -S $< -o $@
$(HC_POST_OPTS)
$(odir_)%.$(way_)hc : %.lhc
@$(RM) $@
$(UNLIT) $< $@
$(GENERATED_FILE) $@
# Here's an interesting rule!
# The .hi file depends on the .o file,
# so if the .hi file is dated earlier than the .o file (commonly the case,
# when interfaces are stable) this rule just makes sure that the .o file,
# is up to date. Then it does nothing to generate the .hi file from the
# .o file, because the act of making sure the .o file is up to date also
# updates the .hi file (if necessary).
%.$(way_)hi : %.$(way_)o
@if [ ! -f $@ ] ; then \
echo Panic! $< exists, but $@ does not.; \
exit 1; \
else exit 0 ; \
fi
%.$(way_)hi-boot : %.$(way_)o-boot
@if [ ! -f $@ ] ; then \
echo Panic! $< exists, but $@ does not.; \
exit 1; \
else exit 0 ; \
fi
$(odir_)%.$(way_)hi : %.$(way_)hc
@if [ ! -f $@ ] ; then \
echo Panic! $< exists, but $@ does not.; \
exit 1; \
else exit 0 ; \
fi
else # BootingFromHc
# -----------------------------------------------------------------------------
# suffix rules for building a .o from a .hc file in bootstrap mode.
ifeq "$(BootingFromUnregisterisedHc)" "YES"
# without mangling
$(odir_)%.o : %.hc
$(CC) -x c $< -o $@ -c -O $(HC_BOOT_CC_OPTS) -I. `echo $(patsubst -monly-%-regs, -DSTOLEN_X86_REGS=%, $(filter -monly-%-regs, $($*_HC_OPTS))) | sed 's/^$$/-DSTOLEN_X86_REGS=4/'`
else
# with mangling
$(odir_)%.raw_s : %.hc
$(CC) -x c $< -o $@ -S -O $(HC_BOOT_CC_OPTS) -I. `echo $(patsubst -monly-%-regs, -DSTOLEN_X86_REGS=%, $(filter -monly-%-regs, $($*_HC_OPTS))) | sed 's/^$$/-DSTOLEN_X86_REGS=4/'`
$(odir_)%.s : $(odir_)%.raw_s
$(MANGLER) $< $@ $(patsubst -monly-%-regs, %, $(filter -monly-%-regs, $($*_HC_OPTS)))
$(odir_)%.o : $(odir_)%.s
$(CC) -c -o $@ $<
endif # not BootingFromUnregisterisedHc
endif # BootingFromHc
#-----------------------------------------------------------------------------
# Happy Suffix Rules
#
%.hs : %.ly
$(HAPPY) $(HAPPY_OPTS) $<
%.hs : %.y
$(HAPPY) $(HAPPY_OPTS) $<
#-----------------------------------------------------------------------------
# Alex Suffix Rules
#
%.hs : %.x
$(ALEX) $(ALEX_OPTS) $<
#-----------------------------------------------------------------------------
# hsc2hs Suffix Rules
#
ifneq "$(BootingFromHc)" "YES"
%_hsc.c %_hsc.h %.hs : %.hsc
$(HSC2HS_INPLACE) $(HSC2HS_OPTS) $<
@touch $(patsubst %.hsc,%_hsc.c,$<)
endif
#-----------------------------------------------------------------------------
# Green-card Suffix Rules
#
%.hs %_stub_ffi.c %_stub_ffi.h : %.gc
$(GREENCARD) $(GC_OPTS) $<
%.lhs : %.gc
$(GREENCARD) $(GC_OPTS) $< -o $@
%.gc : %.pgc
$(CPP) $(GC_CPP_OPTS) $< | perl -pe 's#\\n#\n#g' > $@
#-----------------------------------------------------------------------------
# C-related suffix rules
# UseGhcForCc is only relevant when not booting from HC files.
ifeq "$(UseGhcForCc) $(BootingFromHc)" "YES NO"
$(odir_)%.$(way_)o : %.c
@$(RM) $@
$(HC) $(GHC_CC_OPTS) -c $< -o $@
$(odir_)%.$(way_)o : %.$(way_)s
@$(RM) $@
$(HC) $(GHC_CC_OPTS) -c $< -o $@
$(odir_)%.$(way_)o : %.S
@$(RM) $@
$(HC) $(GHC_CC_OPTS) -c $< -o $@
$(odir_)%.$(way_)s : %.c
@$(RM) $@
$(HC) $(GHC_CC_OPTS) -S $< -o $@
else
$(odir_)%.$(way_)o : %.c
@$(RM) $@
$(CC) $(CC_OPTS) -c $< -o $@
$(odir_)%.$(way_)o : %.$(way_)s
@$(RM) $@
$(AS) $(AS_OPTS) -o $@ $<
$(odir_)%.$(way_)o : %.S
@$(RM) $@
$(CC) $(CC_OPTS) -c $< -o $@
$(odir_)%.$(way_)s : %.c
@$(RM) $@
$(CC) $(CC_OPTS) -S $< -o $@
endif
# stubs are automatically generated and compiled by GHC
%_stub.$(way_)o: %.o
@:
# -----------------------------------------------------------------------------
# Flex/lex
%.c : %.flex
@$(RM) $@
$(FLEX) -t $(FLEX_OPTS) $< > $@
%.c : %.lex
@$(RM) $@
$(FLEX) -t $(FLEX_OPTS) $< > $@
#-----------------------------------------------------------------------------
# Runtest rules for calling $(HC) on a single-file Haskell program
%.runtest : %.hs
$(TIME) $(RUNTEST) $(HC) $(RUNTEST_OPTS) $<
#-----------------------------------------------------------------------------
# DocBook XML suffix rules
#
%.html : %.xml
$(XSLTPROC) --output $@ \
--stringparam html.stylesheet $(FPTOOLS_CSS) \
$(XSLTPROC_LABEL_OPTS) $(XSLTPROC_OPTS) \
$(DIR_DOCBOOK_XSL)/html/docbook.xsl $<
cp $(FPTOOLS_CSS_ABS) .
%/index.html : %.xml
$(RM) -rf $(dir $@)
$(XSLTPROC) --stringparam base.dir $(dir $@) \
--stringparam use.id.as.filename 1 \
--stringparam html.stylesheet $(FPTOOLS_CSS) \
$(XSLTPROC_LABEL_OPTS) $(XSLTPROC_OPTS) \
$(DIR_DOCBOOK_XSL)/html/chunk.xsl $<
cp $(FPTOOLS_CSS_ABS) $(dir $@)
# Note: Numeric labeling seems to be uncommon for HTML Help
%-htmlhelp/index.html : %.xml
$(RM) -rf $(dir $@)
$(XSLTPROC) --stringparam base.dir $(dir $@) \
--stringparam manifest.in.base.dir 1 \
--stringparam htmlhelp.chm "..\\"$(basename $<).chm \
$(XSLTPROC_OPTS) \
$(DIR_DOCBOOK_XSL)/htmlhelp/htmlhelp.xsl $<
%-htmlhelp2/collection.HxC : %.xml
$(RM) -rf $(dir $@)
$(XSLTPROC) --stringparam base.dir $(dir $@) \
--stringparam use.id.as.filename 1 \
--stringparam manifest.in.base.dir 1 \
$(XSLTPROC_OPTS) \
$(DIR_DOCBOOK_XSL)/htmlhelp2/htmlhelp2.xsl $<
# TODO: Detect hhc & Hxcomp via autoconf
#
# Two obstacles here:
#
# * The reason for the strange "if" below is that hhc returns 0 on error and 1
# on success, the opposite of what shells and make expect.
#
# * There seems to be some trouble with DocBook indices, but the *.chm looks OK,
# anyway, therefore we pacify make by "|| true". Ugly...
#
%.chm : %-htmlhelp/index.html
( cd $(dir $<) && if hhc htmlhelp.hhp ; then false ; else true ; fi ) || true
%.HxS : %-htmlhelp2/collection.HxC
( cd $(dir $<) && if Hxcomp -p collection.HxC -o ../$@ ; then false ; else true ; fi )
%.ps : %.xml
$(DBLATEX) $(DBLATEX_OPTS) $< --ps -o $@
%.pdf : %.xml
$(DBLATEX) $(DBLATEX_OPTS) $< --pdf -o $@
%.dvi : %.xml
$(DBLATEX) $(DBLATEX_OPTS) $< --dvi -o $@
#-----------------------------------------------------------------------------
# Doc processing suffix rules
#
# ToDo: make these more robust
#
%.tex : %.tib
@$(RM) $*.tex $*.verb-t.tex
$(TIB) $*.tib
expand $*.tib-t.tex | $(VERBATIM) > $*.tex
@$(RM) $*.tib-t.tex
%.ps : %.fig
@$(RM) $@
fig2dev -L ps $< $@
%.tex : %.fig
@$(RM) $@
fig2dev -L latex $< $@
#-----------------------------------------------------------------------------
# Literate suffix rules
%.prl : %.lprl
@$(RM) $@
$(UNLIT) $(UNLIT_OPTS) $< $@
$(GENERATED_FILE) $@
%.c : %.lc
@$(RM) $@
$(UNLIT) $(UNLIT_OPTS) $< $@
$(GENERATED_FILE) $@
%.h : %.lh
@$(RM) $@
$(UNLIT) $(UNLIT_OPTS) $< $@
$(GENERATED_FILE) $@
#-----------------------------------------------------------------------------
# Win32 resource files
#
# The default is to use the GNU resource compiler.
#
%.$(way_)o : %.$(way_)rc
@$(RM) $@
windres --preprocessor="$(CPP) -xc -DRC_INVOKED" $< $@
#-----------------------------------------------------------------------------
# Preprocessor suffix rule
# Note use of -P option to prevent #line pragmas being left in the CPP
# output.
% : %.pp
@$(RM) $@
$(CPP) $(RAWCPP_FLAGS) -P $(CPP_OPTS) -x c $< | \
grep -v '^#pragma GCC' > $@
This diff is collapsed.
......@@ -115,10 +115,7 @@ endif # GHCI
# We do this at the end for cosmetic reasons: it means that the "normal-way"
# runtests will precede the "other-way" recursive invocations of make
NOFIB_TOP := $(TOP)
TOP := $(TOP)/..
include $(TOP)/mk/target.mk
TOP:=$(NOFIB_TOP)
include $(NOFIB_TOP)/mk/ghc-target.mk
# Override suffix rules
include $(NOFIB_TOP)/mk/suffix.mk
TOP=..
include $(TOP)/mk/boilerplate.mk
PROG=runstdtest
CLEAN_FILES += $(PROG)
all::
$(RM) -f $(PROG)
echo '#!$(PERL)' >> $(PROG)
echo '$$RM = "$(RM)";' >> $(PROG)
echo '$$DEFAULT_TMPDIR = "$(DEFAULT_TMPDIR)";' >> $(PROG)
echo '$$CONTEXT_DIFF = "$(CONTEXT_DIFF)";' >> $(PROG)
cat $(PROG).prl >> $(PROG)
$(EXECUTABLE_FILE) $(PROG)
boot :: all
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment