summaryrefslogtreecommitdiffstats
path: root/testsuite/makefiles/Makefile.one
blob: 9f95b3656dd5e157f1f4dd7cb21d2cbb46dd4f1d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#########################################################################
#                                                                       #
#                                 OCaml                                 #
#                                                                       #
#                 Xavier Clerc, SED, INRIA Rocquencourt                 #
#                                                                       #
#   Copyright 2010 Institut National de Recherche en Informatique et    #
#   en Automatique.  All rights reserved.  This file is distributed     #
#   under the terms of the Q Public License version 1.0.                #
#                                                                       #
#########################################################################

CMI_FILES=$(MODULES:=.cmi)
CMO_FILES=$(MODULES:=.cmo)
CMX_FILES=$(MODULES:=.cmx)
CMA_FILES=$(LIBRARIES:=.cma)
CMXA_FILES=$(LIBRARIES:=.cmxa)
ML_LEX_FILES=$(LEX_MODULES:=.ml)
ML_YACC_FILES=$(YACC_MODULES:=.ml)
MLI_YACC_FILES=$(YACC_MODULES:=.mli)
ML_FILES=$(ML_LEX_FILES) $(ML_YACC_FILES)
O_FILES=$(C_FILES:=.$(O))
ADD_CMO_FILES=$(ADD_MODULES:=.cmo)
ADD_CMX_FILES=$(ADD_MODULES:=.cmx)

GENERATED_SOURCES=$(ML_LEX_FILES) $(ML_YACC_FILES) $(MLI_YACC_FILES)

CUSTOM_FLAG=`if [ -n "$(C_FILES)" ]; then echo '-custom'; fi`
ADD_CFLAGS+=$(CUSTOM_FLAG)
MYRUNTIME=`if [ -z "$(C_FILES)$(CUSTOM)" ]; then echo '$(OCAMLRUN)'; fi`

CC=$(NATIVECC) $(NATIVECCCOMPOPTS)

.PHONY: default
default:
	@$(MAKE) compile
	@$(SET_LD_PATH) $(MAKE) run

.PHONY: compile
compile: $(ML_FILES) $(CMO_FILES) $(MAIN_MODULE).cmo
	@for file in $(C_FILES); do \
	  $(NATIVECC) $(NATIVECCCOMPOPTS) -c -I$(CTOPDIR)/byterun $$file.c; \
	done;
	@rm -f program.byte program.byte.exe
	@$(OCAMLC) $(ADD_COMPFLAGS) $(ADD_CFLAGS) -o program.byte$(EXE) \
	           $(O_FILES) $(CMA_FILES) $(CMO_FILES) $(ADD_CMO_FILES) \
	           $(MAIN_MODULE).cmo
	@if $(BYTECODE_ONLY); then : ; else \
	  rm -f program.native program.native.exe; \
	  $(MAKE) $(CMX_FILES) $(MAIN_MODULE).cmx; \
	  $(OCAMLOPT) $(ADD_COMPFLAGS) -o program.native$(EXE) $(O_FILES) \
	              $(CMXA_FILES) $(CMX_FILES) $(ADD_CMX_FILES) \
	              $(MAIN_MODULE).cmx; \
	fi

.PHONY: run
run:
	@printf " ... testing with ocamlc"
	@$(MYRUNTIME) ./program.byte$(EXE) $(EXEC_ARGS) >$(MAIN_MODULE).result\
	&& $(DIFF) $(MAIN_MODULE).reference $(MAIN_MODULE).result >/dev/null \
	&& if $(BYTECODE_ONLY); then : ; else \
	     printf " ocamlopt"; \
	     ./program.native$(EXE) $(EXEC_ARGS) > $(MAIN_MODULE).result \
	     && $(DIFF) $(MAIN_MODULE).reference $(MAIN_MODULE).result \
	                >/dev/null; \
	   fi \
	&& echo " => passed" || echo " => failed"


.PHONY: promote
promote: defaultpromote

.PHONY: clean
clean: defaultclean
	@rm -f *.result program.byte program.byte.exe \
	       program.native program.native.exe \
	       $(GENERATED_SOURCES) $(O_FILES) $(TEST_TEMP_FILES)