[go: up one dir, main page]

File: Makefile

package info (click to toggle)
anet 0.3.3-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 800 kB
  • sloc: ada: 5,366; makefile: 120; sh: 19
file content (103 lines) | stat: -rw-r--r-- 2,863 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
PREFIX   ?= $(HOME)/libraries
TESTDIR   = $(OS)/tests
OBJDIR    = obj
COVDIR    = $(OBJDIR)/cov
LIBDIR    = lib
SRCDIR    = src
GPR_FILES = gnat/*.gpr

MAJOR    = 0
MINOR    = 3
REVISION = 3
VERSION  = $(MAJOR).$(MINOR).$(REVISION)
ANET     = libanet-$(VERSION)
TARBALL  = $(ANET).tar.bz2

SO_LIBRARY   = libanet.so.$(VERSION)
LIBRARY_KIND = dynamic

# Command variables
INSTALL         = install
INSTALL_PROGRAM = $(INSTALL)
INSTALL_DATA    = $(INSTALL) --mode=644 --preserve-timestamps
INSTALL_ALI     = $(INSTALL) --mode=444

OS ?= linux

NUM_CPUS ?= 1

# GNAT_BUILDER_FLAGS, ADAFLAGS and GNATFLAGS may be overridden in the
# environment or on the command line.
GNAT_BUILDER_FLAGS ?= -R -j$(NUM_CPUS)
GNATFLAGS          ?= ${GNAT_BUILDER_FLAGS} -cargs ${ADAFLAGS}
# GMAKE_OPTS should not be overridden because -p is essential.
GMAKE_OPTS = -XOS=$(OS) -p ${GNATFLAGS} -margs

# GNU-style directory variables
prefix      = ${PREFIX}
exec_prefix = ${prefix}
includedir  = ${prefix}/include
libdir      = ${exec_prefix}/lib
gprdir      = ${prefix}/lib/gnat

all: build_lib

build_lib:
	@gnatmake $(GMAKE_OPTS) -Panet_lib -XVERSION="$(VERSION)" \
		-XLIBRARY_KIND="$(LIBRARY_KIND)" -XLDFLAGS="$(LDFLAGS)"

build_tests:
	@gnatmake $(GMAKE_OPTS) -Panet_tests

tests: build_tests
	@$(OBJDIR)/$(TESTDIR)/test_runner

build_all: build_tests build_lib

cov:
	@rm -f $(COVDIR)/*.gcda
	@gnatmake $(GMAKE_OPTS) -Panet_tests.gpr -XBUILD="coverage"
	@$(COVDIR)/test_runner || true
	@lcov -c -d $(COVDIR) -o $(COVDIR)/cov.info
	@lcov -e $(COVDIR)/cov.info "$(PWD)/src/*.adb" -o $(COVDIR)/cov.info
	@genhtml --no-branch-coverage $(COVDIR)/cov.info -o $(COVDIR)

examples:
	@gnatmake $(GMAKE_OPTS) -Panet_examples

install: install_lib install_$(LIBRARY_KIND)

install_lib: build_lib
	$(INSTALL) -d $(DESTDIR)$(gprdir)
	$(INSTALL) -d $(DESTDIR)$(libdir)/anet
	$(INSTALL) -d $(DESTDIR)$(includedir)/anet
	$(INSTALL_DATA) $(SRCDIR)/*.ad[bs] $(DESTDIR)$(includedir)/anet
	$(INSTALL_DATA) $(SRCDIR)/$(OS)/*.ad[bs] $(DESTDIR)$(includedir)/anet
	$(INSTALL_ALI) $(LIBDIR)/$(OS)/$(LIBRARY_KIND)/*.ali $(DESTDIR)$(libdir)/anet
	$(INSTALL_DATA) $(GPR_FILES) $(DESTDIR)$(gprdir)

install_static:
	$(INSTALL_DATA) $(LIBDIR)/$(OS)/$(LIBRARY_KIND)/libanet.a $(DESTDIR)$(libdir)

install_dynamic:
	$(INSTALL_PROGRAM) $(LIBDIR)/$(OS)/$(LIBRARY_KIND)/$(SO_LIBRARY) $(DESTDIR)$(libdir)
	cd $(DESTDIR)$(libdir) && ln -sf $(SO_LIBRARY) libanet.so

install_tests: build_tests
	$(INSTALL) -v -d $(DESTDIR)$(prefix)/$(TESTDIR)
	$(INSTALL_PROGRAM) $(OBJDIR)/$(TESTDIR)/test_runner $(DESTDIR)$(prefix)/$(TESTDIR)
	cp -r data $(DESTDIR)$(prefix)/$(TESTDIR)

doc:
	@$(MAKE) -C doc

clean:
	@rm -rf $(OBJDIR)
	@rm -rf $(LIBDIR)
	@$(MAKE) -C doc clean

dist:
	@echo "Creating release tarball $(TARBALL) ... "
	@git archive --format=tar HEAD --prefix $(ANET)/ | bzip2 > $(TARBALL)

.PHONY: doc examples tests