Rearrange declaration order to make MSVC happy
[clinfo] / Makefile
1 # Headers
2
3 PROG = clinfo
4 MAN = man1/$(PROG).1
5
6 HDR =   src/error.h \
7         src/ext.h \
8         src/fmtmacros.h \
9         src/memory.h \
10         src/ms_support.h \
11         src/strbuf.h
12
13 VPATH = src
14
15 CFLAGS ?= -g -pedantic -Werror
16 CFLAGS += -std=c99 -Wall -Wextra
17
18 SPARSE ?= sparse
19 SPARSEFLAGS=-Wsparse-all -Wno-decl
20
21 # BSD make does not define RM
22 RM ?= rm -f
23
24 # Installation paths and modes
25 PREFIX ?= /usr/local
26 BINDIR ?= $(PREFIX)/bin
27 BINMODE ?= 555
28 MANDIR ?= $(PREFIX)/man
29 MANMODE ?= 444
30
31 # Common library includes
32 LDLIBS = -lOpenCL -ldl
33
34 # OS-specific library includes
35 LDLIBS_Darwin = -framework OpenCL
36 LDLIBS_Darwin_exclude = -lOpenCL
37
38 LDLIBS += $(LDLIBS_${OS})
39
40 # Remove -lOpenCL if OS is Darwin
41 LDLIBS := $(LDLIBS:$(LDLIBS_${OS}_exclude)=)
42
43
44 #
45 # Standard targets
46 #
47
48 $(PROG): $(PROG).o
49
50 $(PROG).o: $(PROG).c $(HDR)
51
52 clean:
53         $(RM) $(PROG).o $(PROG)
54
55 $(BINDIR):
56         install -d $@
57
58 $(MANDIR)/man1:
59         install -d $@
60
61 $(BINDIR)/$(PROG): $(PROG) $(BINDIR)
62         install -p -m $(BINMODE) $(PROG) $@
63
64 $(MANDIR)/$(MAN): $(MAN) $(MANDIR)/man1
65         install -p -m $(MANMODE) $(MAN) $@
66
67 install: $(BINDIR)/$(PROG) $(MANDIR)/$(MAN)
68
69
70 sparse: $(PROG).c
71         $(SPARSE) $(CPPFLAGS) $(CFLAGS) $(SPARSEFLAGS) $^
72
73
74 .PHONY: clean sparse install