-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfelix.gpr
128 lines (113 loc) · 4.59 KB
/
felix.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
126
127
128
------------------------------------------------------------------------------
-- Copyright (c) 2021, Lev Kujawski.
--
-- Permission is hereby granted, free of charge, to any person obtaining a
-- copy of this software and associated documentation files (the "Software")
-- to deal in the Software without restriction, including without limitation
-- the rights to use, copy, modify, merge, publish, distribute, sublicense,
-- and sell copies of the Software, and to permit persons to whom the
-- Software is furnished to do so.
--
-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-- THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-- DEALINGS IN THE SOFTWARE.
--
-- SPDX-License-Identifier: MIT-0
------------------------------------------------------------------------------
project Felix is
for Library_Name use "nlsa";
for Library_Version use "0.2.0";
type Library_Type_Type is ("relocatable", "static", "static-pic");
Library_Type : Library_Type_Type :=
external ("FELIX_LIBRARY_TYPE", external ("LIBRARY_TYPE", "static"));
for Library_Kind use Library_Type;
for Languages use ("Ada", "C");
type System_API_T is ("POSIX", "WIN32");
System_API : System_API_T := external ("SYSTEM_API");
Base_Directory := "src";
System_Directory := Base_Directory;
case System_API is
when "POSIX" => System_Directory := "posix";
when "WIN32" => System_Directory := "win32";
end case;
for Source_Dirs use (Base_Directory,
Base_Directory & "/" & System_Directory);
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 ("C_Standard_IO") use "cstandio.ads";
for Body ("C_Standard_IO") use "cstandio.adb";
for Body ("C_Standard_IO.Open_Null") use "csioopnu.adb";
for Spec ("Native_Language_System") use "nalansys.ads";
for Body ("Native_Language_System") use "nalansys.adb";
for Spec ("Standard_Text") use "stantext.ads";
for Body ("Standard_Text") use "stantext.adb";
end Naming;
type Enabled_Kind is ("enabled", "disabled");
Compile_Checks : Enabled_Kind :=
External ("FELIX_COMPILE_CHECKS", "disabled");
Runtime_Checks : Enabled_Kind :=
External ("FELIX_RUNTIME_CHECKS", "enabled");
Style_Checks : Enabled_Kind :=
External ("FELIX_STYLE_CHECKS", "disabled");
Contracts_Checks : Enabled_Kind :=
External ("FELIX_CONTRACTS", "enabled");
type Build_Kind is ("debug", "optimize");
Build_Mode : Build_Kind := External ("FELIX_BUILD_MODE", "optimize");
Compile_Checks_Switches := ();
case Compile_Checks is
when "enabled" =>
Compile_Checks_Switches :=
("-gnatVa", -- Enable all validity checks
"-gnatwaJ", -- Enable warnings, minus obsolescent
"-gnatwe"); -- Set 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 :=
("-gnaty3abcefhiklM78nprtux");
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"); -- Enable symbolic tracebacks
end Binder;
end Felix;