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
|