target.mk 3 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
#################################################################################
#
#			target.mk
#
#		nofib standard target rules
#
#################################################################################


# Only do this in leaf directories (important, this)
sof's avatar
sof committed
11 12 13 14 15 16 17

nofib-dist-pre::
	-rm -rf $(SRC_DIST_DIR)
	-rm -f $(SRC_DIST_NAME).tar.gz
	(cd $(FPTOOLS_TOP_ABS)/nofib; find $(SRC_DIST_DIRS) -type d \( -name CVS -prune -o -name SRC -prune -o -name tests -prune -o -exec $(MKDIRHIER) $(SRC_DIST_DIR)/{} \; \) ; )
	(cd $(FPTOOLS_TOP_ABS)/nofib; find $(SRC_DIST_DIRS) -name CVS -prune -o -name SRC -prune -o -name tests -prune -o -name "*~" -prune -o -name ".cvsignore" -prune -o -type l -exec $(LN_S) $(FPTOOLS_TOP_ABS)/nofib/{} $(SRC_DIST_DIR)/{} \; )

18 19 20 21 22 23 24 25 26 27
ifeq "$(SUBDIRS)" ""
all ::
	@echo HC = $(HC)
	@echo HC_OPTS = $(HC_OPTS)
	@echo RUNTEST_OPTS = $(RUNTEST_OPTS)


all :: runtests
endif

sof's avatar
sof committed
28 29
# Bogosity needed here to cope with .exe suffix for strip & size files.
# (shouldn't have to be our problem.)
sof's avatar
sof committed
30
ifneq "$(HC_FAIL)" "YES"
31
ifneq "$(NoFibWithGHCi)" "YES"
32
$(NOFIB_PROG_WAY) : $(OBJS)
33 34
	@echo ==nofib== $(NOFIB_PROG): time to link $(NOFIB_PROG) follows...
	@$(TIME) $(HC) $(HC_OPTS) -o $@ $^ $(LIBS)
sof's avatar
sof committed
35
endif
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
endif


ifeq "$(NoFibWithGHCi)" "YES"
runtests ::
	@echo "==nofib== $(NOFIB_PROG): time to compile & run $(NOFIB_PROG) follows..."
	@$(RM) $(NOFIB_PROG).stdin.tmp
	echo main | cat - $(wildcard $(NOFIB_PROG).stdin) > $(NOFIB_PROG).stdin.tmp
	@$(TIME) $(RUNTEST) $(GHC_INPLACE) --interactive -v0 -Wnot \
			-i $(NOFIB_PROG).stdin.tmp \
	  		$(addprefix -o1 ,$(wildcard $(NOFIB_PROG).stdout*)) \
	  		$(addprefix -o2 ,$(wildcard $(NOFIB_PROG).stderr*)) \
			$(RUNTEST_OPTS) Main
	@$(RM) $(NOFIB_PROG).stdin.tmp
else 
51

52
ifneq "$(NOFIB_PROG_WAY)" ""
53 54 55 56
ifeq "$(way)" "mp"
# The parallel prg is actually a Perl skript => can't strip it -- HWL
size :: $(NOFIB_PROG_WAY)
	@echo ==nofib== $(NOFIB_PROG): cannot strip parallel program, omitting size info
57 58 59 60 61 62 63

runtests :: $(NOFIB_PROG_WAY) size
	@echo ==nofib== $(NOFIB_PROG): cannot do an automatic check of stdout with the parallel system, sorry
	@echo ==nofib== $(NOFIB_PROG): run the following command by hand
	@echo                          ./$< $(RUNTEST_OPTS)
	@echo ==nofib== $(NOFIB_PROG): output should be
	@cat $(wildcard $(NOFIB_PROG).stdout*)
64
else
65

66 67
size :: $(NOFIB_PROG_WAY)
	@$(STRIP) $(NOFIB_PROG_WAY)$(exeext)
68
	@echo ==nofib== $(NOFIB_PROG): size of $(NOFIB_PROG) follows...
69
	@$(SIZE) $(NOFIB_PROG_WAY)$(exeext)
70

71 72
runtests :: $(NOFIB_PROG_WAY) size
	@echo ==nofib== $(NOFIB_PROG): time to run $(NOFIB_PROG) follows...
73
	@$(TIME) $(RUNTEST) ./$< \
74 75 76
	  $(addprefix -i  ,$(wildcard $(NOFIB_PROG).stdin)) \
	  $(addprefix -o1 ,$(wildcard $(NOFIB_PROG).stdout*)) \
	  $(addprefix -o2 ,$(wildcard $(NOFIB_PROG).stderr*)) \
77
	  $(RUNTEST_OPTS)
78 79
endif

sof's avatar
sof committed
80
else
81 82
size ::
	@:
sof's avatar
sof committed
83 84 85
runtests ::
	@:
endif
86

87 88
endif # GHCI

89 90 91 92 93
# Include standard boilerplate
# 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

include $(FPTOOLS_TOP)/mk/target.mk