-
Notifications
You must be signed in to change notification settings - Fork 1
/
esp32s3_hal.gpr
71 lines (57 loc) · 2.56 KB
/
esp32s3_hal.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
with "config/esp32s3_hal_config.gpr";
library project Esp32s3_Hal is
for Runtime ("Ada") use Project'Project_Dir & "../light_xtensa_esp";
for Target use "xtensa-esp32-elf";
for Languages use ("Ada", "C");
for Library_Name use "Esp32s3_Hal";
for Library_Version use Project'Library_Name & ".so." & Esp32s3_Hal_Config.Crate_Version;
for Source_Dirs use ("src/", "src/esp32s3", "src/esp32", "src/svd", "config/", Esp32s3_Hal_Config.Startup_Script_Dir);
for Object_Dir use "obj/" & Esp32s3_Hal_Config.Build_Profile;
for Create_Missing_Dirs use "True";
for Library_Dir use "lib";
type Library_Type_Type is ("relocatable", "static", "static-pic");
Library_Type : Library_Type_Type :=
external ("ESP32S3_HAL_LIBRARY_TYPE", external ("LIBRARY_TYPE", "static"));
for Library_Kind use Library_Type;
Ada_Compiler_Switches := Esp32s3_Hal_Config.Ada_Compiler_Switches &
(
"-O3" -- Optimize for performance
,"-gnatn" -- Enable inlining
,"-ffunction-sections" -- Separate ELF section for each function
,"-fdata-sections" -- Separate ELF section for each variable
,"-gnatW8" -- UTF-8 encoding for wide characters
);
C_Compiler_Switches := (
"-W", "-Wall", "-Wextra", "-Werror", "-Wundef", "-Wshadow", "-pedantic",
"-Wdouble-promotion", "-fno-common", "-Wconversion", "-mlongcalls",
"-mtext-section-literals", "-Os", "-ffunction-sections", "-fdata-sections",
"-nostdlib"
);
Linker_Switches := ("-Wl,--no-warn-rwx-segments", "-Wl,--no-warn-execstack",
"-nostdlib", "-Wl,--gc-sections", "-mlongcalls", "-mtext-section-literals",
"-fstrict-volatile-bitfields", "-Wl,-Map=$@.map", "-Wl,--cref"
);
package Compiler is
for Default_Switches ("Ada") use Ada_Compiler_Switches;
for Default_Switches ("C") use C_Compiler_Switches;
end Compiler;
package Binder is
for Switches ("Ada") use ("-Es"); -- Symbolic traceback
end Binder;
package Install is
for Artifacts (".") use ("share");
end Install;
package Linker is
case Esp32s3_Hal_Config.Linker_Script_Path is
when "" =>
null;
when others =>
Linker_Switches := Linker_Switches & ("-T" & Project'Project_Dir & Esp32s3_Hal_Config.Linker_Script_Path);
end case;
for Switches ("C") use Linker_Switches;
end Linker;
package Pretty_Printer is
for Switches ("ada") use ("-i3", "-M120", "-v", "-w", "-rnb", "-A1", "-A2",
"-A3", "-A4", "-A5", "--no-separate-is", "--no-separate-loop-then");
end Pretty_Printer;
end Esp32s3_Hal;