File: Makefile

package info (click to toggle)
pcscada 0.7.4-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 448 kB
  • sloc: ada: 3,304; makefile: 137; sh: 18
file content (123 lines) | stat: -rw-r--r-- 3,312 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
117
118
119
120
121
122
123
#
#  Copyright (c) 2008-2014,
#  Reto Buerki <reet@codelabs.ch>
#
#  This file is part of PCSC/Ada.
#
#  PCSC/Ada is free software; you can redistribute it and/or modify
#  it under the terms of the GNU Lesser General Public License as published
#  by the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
#  PCSC/Ada is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU Lesser General Public License for more details.
#
#  You should have received a copy of the GNU Lesser General Public License
#  along with PCSC/Ada; if not, write to the Free Software
#  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
#  MA  02110-1301  USA
#

PREFIX ?= $(HOME)/libraries
INCDIR  = $(PREFIX)/share/ada/adainclude/pcscada
ALIDIR  = $(PREFIX)/lib/ada/adalib/pcscada

INSTALL = install

MAJOR   = 0
MINOR   = 7
REV     = 4
VERSION = $(MAJOR).$(MINOR).$(REV)
PCSCADA = libpcscada-$(VERSION)

LIBRARY_KIND = dynamic

SOURCEDIR  = src
DOCDIR     = doc/html
ALI_FILES  = lib/$(LIBRARY_KIND)/*.ali
SO_LIBRARY = libpcscada.so.$(VERSION)
A_LIBRARY  = libpcscada.a

TARBALL = $(PCSCADA).tar.bz2

NUM_CPUS ?= 1

# GNAT_BUILDER_FLAGS, ADAFLAGS, LDFLAGS and GNATFLAGS may be overridden in the
# environment or on the command line.
GNAT_BUILDER_FLAGS ?= -R -j$(NUM_CPUS)
GNATFLAGS          ?= ${GNAT_BUILDER_FLAGS}
# GMAKE_OPTS should not be overridden because -p is essential.
GMAKE_OPTS = -p $(GNATFLAGS) \
  $(foreach v,ADAFLAGS LDFLAGS LIBRARY_KIND VERSION,'-X$(v)=$($(v))')

all: build_lib

build_lib: prepare
	gprbuild $(GMAKE_OPTS) -Ppcscada_lib -XLIBRARY_KIND=$(LIBRARY_KIND)

build_utests: prepare
	gprbuild $(GMAKE_OPTS) -Ppcscada_utests -XLIBRARY_KIND=static

build_itests: prepare
	gprbuild $(GMAKE_OPTS) -Ppcscada_itests -XLIBRARY_KIND=static

build_examples: prepare
	gprbuild $(GMAKE_OPTS) -p -Ppcscada_examples -XLIBRARY_KIND=static

prepare: $(SOURCEDIR)/pcsc-version.ads

$(SOURCEDIR)/pcsc-version.ads:
	@echo "package PCSC.Version is"                 > $@
	@echo "   Version_String : constant String :=" >> $@
	@echo "     \"$(VERSION)\";"                   >> $@
	@echo "end PCSC.Version;"                      >> $@

clean:
	@rm -rf obj/*
	@rm -rf lib/*
	$(MAKE) -C doc clean

distclean:
	@rm -rf obj
	@rm -rf lib
	@rm -rf $(DOCDIR)
	@rm -f $(SOURCEDIR)/pcsc-version.ads

# run unit tests
utests: build_utests
	@obj/utests/runner

# run 'integration' tests
# you need a reader and smartcard for this to work
itests: build_itests
	@obj/itests/test_pcscada

examples: build_examples

install: install_lib install_$(LIBRARY_KIND)

install_lib: build_lib
	@mkdir -p $(INCDIR)
	@mkdir -p $(ALIDIR)
	$(INSTALL) -m 644 $(SOURCEDIR)/* $(INCDIR)
	$(INSTALL) -m 444 $(ALI_FILES) $(ALIDIR)

install_static:
	mkdir -p $(PREFIX)/lib
	$(INSTALL) -m 644 lib/$(LIBRARY_KIND)/$(A_LIBRARY) $(PREFIX)/lib

install_dynamic:
	mkdir -p $(PREFIX)/lib
	$(INSTALL) -m 644 lib/$(LIBRARY_KIND)/$(SO_LIBRARY) $(PREFIX)/lib
	@cd $(PREFIX)/lib && ln -sf $(SO_LIBRARY) libpcscada.so

doc:
	@$(MAKE) -C doc

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

.PHONY: doc