1 2 3 4 5 6 7 8 9 10 11
12 import xdc.bld.ITarget2;
13
14 /*!
15 * ======== GCArmv7AF.xdc ========
16 * Embedded little endian Arm v7A Linux target with hardware floating point
17 * operations
18 *
19 * This module defines an embedded target for Linux on Arm. The target
20 * generates code compatible with the "v7A" architecture.
21 *
22 */
23 metaonly module GCArmv7AF inherits gnu.targets.ITarget {
24 override readonly config string name = "GCArmv7AF";
25 override readonly config string os = "Linux";
26 override readonly config string suffix = "v7AF";
27 override readonly config string isa = "v7A";
28 override readonly config xdc.bld.ITarget.Model model= {
29 endian: "little"
30 };
31
32 override readonly config string rts = "gnu.targets.arm.rtsv7A";
33 override config string platform = "host.platforms.arm";
34
35 override config string LONGNAME;
36
37 override readonly config String stdInclude = "gnu/targets/arm/std.h";
38
39 40 41
42 override readonly config ITarget2.Command cc = {
43 cmd: "$(rootDir)/$(LONGNAME) -c -MD -MF $@.dep",
44 opts: "-march=armv7-a -mfloat-abi=hard"
45 };
46
47 48 49
50 override config ITarget2.Options ccOpts = {
51 prefix: "-fPIC -Wunused",
52 suffix: "-Dfar= "
53 };
54
55 56 57
58 override readonly config ITarget2.Command asm = {
59 cmd: "$(rootDir)/$(LONGNAME) -c -x assembler",
60 opts: "-Wa,-march=armv7-a -Wa,-mfloat-abi=hard"
61 };
62
63 64 65
66 override config ITarget2.Options lnkOpts = {
67 prefix: "",
68 suffix: "-Wl,-Map=$(XDCCFGDIR)/$@.map -lstdc++ -L$(rootDir)/$(GCCTARG)/lib"
69 };
70
71 72 73
74 override config String compatibleSuffixes[] = [];
75
76 77 78
79 override readonly config xdc.bld.ITarget.StdTypes stdTypes = {
80 t_IArg : { size: 4, align: 4 },
81 t_Char : { size: 1, align: 1 },
82 t_Double : { size: 8, align: 4 },
83 t_Float : { size: 4, align: 4 },
84 t_Fxn : { size: 4, align: 4 },
85 t_Int : { size: 4, align: 4 },
86 t_Int8 : { size: 1, align: 1 },
87 t_Int16 : { size: 2, align: 2 },
88 t_Int32 : { size: 4, align: 4 },
89 t_Int64 : { size: 8, align: 4 },
90 t_Long : { size: 4, align: 4 },
91 t_LDouble : { size: 8, align: 4 },
92 t_LLong : { size: 8, align: 4 },
93 t_Ptr : { size: 4, align: 4 },
94 t_Short : { size: 2, align: 2 },
95 t_Size : { size: 4, align: 4 },
96 };
97 }
98 99 100 101
102