File: Makefile

package info (click to toggle)
ocaml-sha 1.11-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 284 kB
  • sloc: ansic: 1,609; makefile: 477; ml: 396
file content (116 lines) | stat: -rw-r--r-- 3,407 bytes parent folder | download
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
ccopts = $(CFLAGS) -Wall -O3 -funroll-loops -fPIC -DPIC
OCAMLC = ocamlc
OCAMLOPT = ocamlopt
OCAMLMKLIB = ocamlmklib

# on unix architecture we just use the default value
EXE=
OBJ=o
A=a
SO=so

# on windows architecture redefine some values
ifeq "$(shell ocamlc -config | fgrep 'os_type:')" "os_type: Win32"
	EXE=.exe
	SO=dll
ifeq "$(shell ocamlc -config | fgrep 'ccomp_type:')" "ccomp_type: msvc"
	OBJ=obj
	A=lib
endif
endif

OCAMLOPTFLAGS =

OCAML_TEST_INC = -I `ocamlfind query oUnit` -I . -w -24
OCAML_TEST_LIB = `ocamlfind query oUnit`/oUnit.cmxa

PROGRAMS_BINS = sha1sum sha256sum sha512sum
PROGRAMS = $(addsuffix $(EXE), $(PROGRAMS_BINS))

allshabytes = $(foreach n, 1 256 512, sha$(n).lib.$(OBJ) sha$(n)_stubs.$(OBJ) sha$(n).cmo)
allshaopts  = $(foreach n, 1 256 512, sha$(n).lib.$(OBJ) sha$(n)_stubs.$(OBJ) sha$(n).cmx)

all: sha1.cmi sha1.cma sha1.cmxa sha256.cma sha256.cmxa sha512.cma sha512.cmxa sha.cma sha.cmxa

all-byte: sha1.cma sha256.cma sha512.cma sha.cma

bins: $(PROGRAMS)

sha1sum$(EXE): sha1.cmxa sha256.cmxa sha512.cmxa shasum.cmx
	$(OCAMLOPT) $(OCAMLOPTFLAGS) -o $@ -cclib -L. $+

sha256sum$(EXE): sha1sum$(EXE)
	cp $< $@

sha512sum$(EXE): sha1sum$(EXE)
	cp $< $@

sha.cma: $(allshabytes)
	$(OCAMLMKLIB) -o sha $(allshabytes)

sha.cmxa: $(allshaopts)
	$(OCAMLMKLIB) -o sha $(allshaopts)

sha1.cma: sha1.cmi sha1.lib.$(OBJ) sha1_stubs.$(OBJ) sha1.cmo
	$(OCAMLMKLIB) -o sha1 sha1.lib.$(OBJ) sha1_stubs.$(OBJ) sha1.cmo

sha1.cmxa: sha1.cmi sha1.lib.$(OBJ) sha1_stubs.$(OBJ) sha1.cmx
	$(OCAMLMKLIB) -o sha1 sha1.lib.$(OBJ) sha1_stubs.$(OBJ) sha1.cmx

sha256.cma: sha256.cmi sha256.lib.$(OBJ) sha256_stubs.$(OBJ) sha256.cmo
	$(OCAMLMKLIB) -o sha256 sha256.lib.$(OBJ) sha256_stubs.$(OBJ) sha256.cmo

sha256.cmxa: sha256.cmi sha256.lib.$(OBJ) sha256_stubs.$(OBJ) sha256.cmx
	$(OCAMLMKLIB) -o sha256 sha256.lib.$(OBJ) sha256_stubs.$(OBJ) sha256.cmx

sha512.cma: sha512.cmi sha512.lib.$(OBJ) sha512_stubs.$(OBJ) sha512.cmo
	$(OCAMLMKLIB) -o sha512 sha512.lib.$(OBJ) sha512_stubs.$(OBJ) sha512.cmo

sha512.cmxa: sha512.cmi sha512.lib.$(OBJ) sha512_stubs.$(OBJ) sha512.cmx
	$(OCAMLMKLIB) -o sha512 sha512.lib.$(OBJ) sha512_stubs.$(OBJ) sha512.cmx

tests: sha.test
	./sha.test

sha.test: sha1.cmxa sha256.cmxa sha512.cmxa sha.test.cmx

%.test:
	$(OCAMLOPT) -o $@ $(OCAML_BFLAGS) unix.cmxa $(OCAML_TEST_INC) $(OCAML_TEST_LIB) $+

%.test.cmo: %.test.ml
	$(OCAMLC) -c -o $@ $(OCAML_BFLAGS) -custom $(OCAML_TEST_INC) $<

%.test.cmx: %.test.ml
	$(OCAMLOPT) -c -o $@ $(OCAML_BFLAGS) $(OCAML_TEST_INC) $<

%.cmo: %.ml
	$(OCAMLC) -c -o $@ $<

%.cmi: %.mli
	$(OCAMLC) -c -o $@ $<

%.cmx: %.ml
	$(OCAMLOPT) $(OCAMLOPTFLAGS) -c -o $@ $<

%.$(OBJ): %.c
	$(OCAMLC) -ccopt "$(ccopts)" -c -o $@ $<

%.lib.$(OBJ): %.$(OBJ)
	mv $< $@

.PHONY: clean install uninstall doc
doc:
	[ -d html ] && rm -f html/* || mkdir html
	ocamldoc -html -d html *.mli

clean:
	rm -f *.$(OBJ) *.$(A) *.$(SO) *.cmo *.cmi *.cma *.cmx *.cmxa sha.test $(PROGRAMS)

install: sha1.cma sha1.cmxa sha256.cma sha256.cmxa sha512.cma sha512.cmxa sha.cma sha.cmxa META
	ocamlfind install sha META *.mli *.cmx sha1.cmi sha1.cma sha1.cmxa sha256.cmi sha256.cma sha256.cmxa sha512.cmi sha512.cma sha512.cmxa sha.cma sha.cmxa *.$(A) *.$(SO)

install-byte: sha1.cma sha256.cma sha512.cma sha.cma
	ocamlfind install sha META *.mli sha1.cmi sha1.cma sha256.cmi sha256.cma sha512.cmi sha512.cma sha.cma *.$(A) *.$(SO)

uninstall:
	ocamlfind remove sha