10834e805368f0ead6eb48ea80639d3ee13bbde4
[cuda-ada.git] / Makefile
1 CUDASDK = /usr/local/cuda
2 OBJDIR  = obj
3 COVDIR  = $(OBJDIR)/cov
4 PERFDIR = perf
5
6 LIBRARY_PATH = $(CUDASDK)/lib:$(CUDASDK)/lib64
7
8 NUM_CPUS := $(shell getconf _NPROCESSORS_ONLN)
9 ARCH     ?= $(shell uname -m)
10
11 GMAKE_OPTS = -p -R -j$(NUM_CPUS)
12
13 MAJOR    = 0
14 MINOR    = 1
15 VERSION  = $(MAJOR).$(MINOR)
16 CUDA_ADA = libcudaada-$(VERSION)
17 TARBALL  = $(CUDA_ADA).tar.bz2
18
19 all: build_examples
20
21 build_examples:
22         @LIBRARY_PATH=$(LIBRARY_PATH) gnatmake -p -Pcuda_examples -XARCH=$(ARCH)
23
24 build_tests:
25         @LIBRARY_PATH=$(LIBRARY_PATH) gnatmake $(GMAKE_OPTS) -Pcuda_tests.gpr \
26                 -XARCH=$(ARCH)
27
28 tests: build_tests
29         @LD_LIBRARY_PATH=$(LIBRARY_PATH) $(OBJDIR)/test_runner
30
31 doc:
32         $(MAKE) -C doc
33
34 cov:
35         @rm -f $(COVDIR)/*.gcda
36         @LIBRARY_PATH=$(LIBRARY_PATH) gnatmake $(GMAKE_OPTS) -Pcuda_tests.gpr \
37                 -XBUILD="coverage"
38         @LD_LIBRARY_PATH=$(LIBRARY_PATH) $(COVDIR)/test_runner || true
39         @lcov -c -d $(COVDIR) -o $(COVDIR)/cov.info
40         @lcov -e $(COVDIR)/cov.info "$(PWD)/src/*.adb" -o $(COVDIR)/cov.info
41         @genhtml --no-branch-coverage $(COVDIR)/cov.info -o $(COVDIR)
42
43 perf: $(OBJDIR)/perf_c $(OBJDIR)/perf_c_drv
44         @LIBRARY_PATH=$(LIBRARY_PATH) gnatmake $(GMAKE_OPTS) -Pcuda_perf.gpr \
45                 -XARCH=$(ARCH)
46         @LD_LIBRARY_PATH=$(LIBRARY_PATH) $(OBJDIR)/perf_cudaada $(COUNT)
47         @LD_LIBRARY_PATH=$(LIBRARY_PATH) $(OBJDIR)/perf_c $(COUNT)
48         @LD_LIBRARY_PATH=$(LIBRARY_PATH) $(OBJDIR)/perf_c_drv $(COUNT)
49
50 $(OBJDIR)/perf_c: $(PERFDIR)/perf_c.cu
51         @mkdir -p $(OBJDIR)
52         LIBRARY_PATH=$(LIBRARY_PATH) $(CUDASDK)/bin/nvcc $< -o $@
53
54 $(OBJDIR)/perf_c_drv: $(PERFDIR)/perf_c_drv.c
55         @mkdir -p $(OBJDIR)
56         LIBRARY_PATH=$(LIBRARY_PATH) $(CC) $< -o $@ -I$(CUDASDK)/include -lcuda
57
58 clean:
59         @rm -rf cache
60         @rm -rf $(OBJDIR)
61         $(MAKE) -C doc clean
62
63 dist:
64         @echo "Creating release tarball $(TARBALL) ... "
65         @git archive --format=tar HEAD --prefix $(CUDA_ADA)/ | bzip2 > $(TARBALL)
66
67 .PHONY: all build_tests build_examples clean dist doc perf tests