-
Notifications
You must be signed in to change notification settings - Fork 0
/
avltrees.gpr
125 lines (110 loc) · 4.87 KB
/
avltrees.gpr
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
124
125
-----------------------------------------------------------------------
-- Copyright 2021 Lev Kujawski --
-- --
-- This file is part of AVLTREES. --
-- --
-- AVLTREES 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 3 of --
-- the License, or (at your option) any later version. --
-- --
-- AVLTREES 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 AVLTREES. --
-- If not, see <https://www.gnu.org/licenses/>. --
-- --
-- SPDX-License-Identifier: LGPL-3.0-or-later --
-- --
-- File: avltrees.gpr --
-- Language: GPRBuild --
-- Author: Lev Kujawski --
-----------------------------------------------------------------------
project AVLTREES is
for Library_Name use "avla";
for Library_Version use "0.1.0";
type Library_Type_Type is ("relocatable", "static", "static-pic");
Library_Type : Library_Type_Type :=
external ("AVLTREES_LIBRARY_TYPE",
external ("LIBRARY_TYPE", "static"));
for Library_Kind use Library_Type;
for Source_Dirs use ("src");
for Object_Dir use "obj";
for Library_Dir use "lib";
for Create_Missing_Dirs use "True";
package Naming is
for Casing use "lowercase";
for Spec ("AVL_Array_Key_Trees") use "avarketr.ads";
for Body ("AVL_Array_Key_Trees") use "avarketr.adb";
for Spec ("AVL_Indefinite_Trees") use "avindtre.ads";
for Body ("AVL_Indefinite_Trees") use "avindtre.adb";
for Spec ("AVL_Tree_Heights") use "avtrehei.ads";
for Spec ("AVL_Trees") use "avltrees.ads";
for Body ("AVL_Trees") use "avltrees.adb";
end Naming;
type Enabled_Kind is ("enabled", "disabled");
Compile_Checks : Enabled_Kind :=
External ("AVLTREES_COMPILE_CHECKS", "disabled");
Runtime_Checks : Enabled_Kind :=
External ("AVLTREES_RUNTIME_CHECKS", "disabled");
Style_Checks : Enabled_Kind :=
External ("AVLTREES_STYLE_CHECKS", "disabled");
Contracts_Checks : Enabled_Kind :=
External ("AVLTREES_CONTRACTS", "disabled");
type Build_Kind is ("debug", "optimize");
Build_Mode : Build_Kind :=
External ("AVLTREES_BUILD_MODE", "optimize");
Compile_Checks_Switches := ();
case Compile_Checks is
when "enabled" =>
Compile_Checks_Switches :=
("-gnatVa", -- Enable all validity checks
"-gnatwadhlt", -- Enable warnings, plus optional
"-gnatwe"); -- Treat warnings as errors
when others => null;
end case;
Runtime_Checks_Switches := ();
case Runtime_Checks is
when "enabled" => null;
when others =>
Runtime_Checks_Switches :=
("-gnatp"); -- Suppress checks
end case;
Style_Checks_Switches := ();
case Style_Checks is
when "enabled" =>
Style_Checks_Switches :=
("-gnaty3abcefhiklM72noprstux");
when others => null;
end case;
Contracts_Switches := ();
case Contracts_Checks is
when "enabled" =>
Contracts_Switches :=
("-gnata"); -- Enable assertions and contracts
when others => null;
end case;
Build_Switches := ();
case Build_Mode is
when "optimize" =>
Build_Switches := ("-O3", -- Optimization
"-gnatn"); -- Enable GCC inlining
when "debug" =>
Build_Switches := ("-g", -- Emit debugging data
"-Og"); -- Disable optimization
end case;
package Compiler is
for Default_Switches ("Ada") use
Compile_Checks_Switches &
Build_Switches &
Runtime_Checks_Switches &
Style_Checks_Switches &
Contracts_Switches;
end Compiler;
package Binder is
for Switches ("Ada") use ("-Es"); -- Symbolic tracebacks
end Binder;
end AVLTREES;