Skip to content

Commit f976423

Browse files
committed
picocrt: Clean up meson compile/link args
Use local variables to hold the c_args/link_args values shared across the picocrt targets instead of duplicating them in each usage. Remove the extra 'c_args' values as those are already in the 'value' array. Signed-off-by: Keith Packard <[email protected]>
1 parent e9e77a8 commit f976423

File tree

1 file changed

+24
-17
lines changed

1 file changed

+24
-17
lines changed

picocrt/meson.build

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -84,14 +84,17 @@ foreach target : targets
8484
crt0_minimal_name = 'crt0_minimal' + target
8585
crt0_semihost_name = 'crt0_semihost' + target
8686

87+
_c_args = value[1] + arg_fnobuiltin + ['-ffreestanding']
88+
_link_args = value[1] + ['-r', '-ffreestanding']
89+
8790
# The normal variant does not call 'exit' after return from main (c lingo: freestanding execution environment)
8891
_crt = executable(crt_name,
8992
src_picocrt,
9093
include_directories : inc,
9194
install : true,
9295
install_dir : instdir,
93-
c_args : value[1] + c_args + arg_fnobuiltin + ['-ffreestanding'],
94-
link_args : value[1] + ['-r', '-ffreestanding'])
96+
c_args : _c_args,
97+
link_args : _link_args)
9598

9699
set_variable(crt0_name,
97100
_crt.extract_objects(src_picocrt)
@@ -100,11 +103,12 @@ foreach target : targets
100103
if enable_picocrt_lib
101104
static_library(libcrt_name,
102105
[],
106+
include_directories : inc,
103107
install : true,
104108
install_dir : instdir,
105-
pic: false,
106-
c_args: value[1] + c_args,
107-
objects : [_crt.extract_objects(src_picocrt)])
109+
c_args : _c_args,
110+
objects: get_variable(crt0_name),
111+
pic: false)
108112
endif
109113

110114
# The 'hosted' variant calls 'exit' after return from main (c lingo: hosted execution environment)
@@ -113,8 +117,8 @@ foreach target : targets
113117
include_directories : inc,
114118
install : true,
115119
install_dir : instdir,
116-
c_args : value[1] + c_args + arg_fnobuiltin + ['-ffreestanding', '-DCRT0_EXIT'],
117-
link_args : value[1] + ['-r', '-ffreestanding'])
120+
c_args : _c_args + ['-DCRT0_EXIT'],
121+
link_args : _link_args)
118122

119123
set_variable(crt0_hosted_name,
120124
_crt.extract_objects(src_picocrt)
@@ -123,11 +127,12 @@ foreach target : targets
123127
if enable_picocrt_lib
124128
static_library(libcrt_hosted_name,
125129
[],
130+
include_directories : inc,
126131
install : true,
127132
install_dir : instdir,
128133
pic: false,
129-
c_args: value[1] + c_args,
130-
objects : [_crt.extract_objects(src_picocrt)])
134+
objects: get_variable(crt0_hosted_name),
135+
c_args : value[1] + ['-DCRT0_EXIT'])
131136
endif
132137

133138
# The 'minimal' variant doesn't call exit, nor does it invoke any constructors
@@ -136,8 +141,8 @@ foreach target : targets
136141
include_directories : inc,
137142
install : true,
138143
install_dir : instdir,
139-
c_args : value[1] + c_args + arg_fnobuiltin + ['-ffreestanding', '-DCONSTRUCTORS=0'],
140-
link_args : value[1] + ['-r', '-ffreestanding'])
144+
c_args : _c_args + ['-DCONSTRUCTORS=0'],
145+
link_args : _link_args)
141146

142147
set_variable(crt0_minimal_name,
143148
_crt.extract_objects(src_picocrt)
@@ -146,11 +151,12 @@ foreach target : targets
146151
if enable_picocrt_lib
147152
static_library(libcrt_minimal_name,
148153
[],
154+
include_directories : inc,
149155
install : true,
150156
install_dir : instdir,
151157
pic: false,
152-
c_args: value[1] + c_args,
153-
objects : [_crt.extract_objects(src_picocrt)])
158+
objects: get_variable(crt0_minimal_name),
159+
c_args : _c_args + ['-DCONSTRUCTORS=0'])
154160
endif
155161

156162
if has_arm_semihost
@@ -161,8 +167,8 @@ foreach target : targets
161167
include_directories : inc,
162168
install : true,
163169
install_dir : instdir,
164-
c_args : value[1] + c_args + arg_fnobuiltin + ['-ffreestanding', '-DCRT0_EXIT', '-DCRT0_SEMIHOST'],
165-
link_args : value[1] + ['-r', '-ffreestanding'])
170+
c_args : _c_args + ['-DCRT0_EXIT', '-DCRT0_SEMIHOST'],
171+
link_args : _link_args)
166172

167173
set_variable(crt0_semihost_name,
168174
_crt.extract_objects(src_picocrt)
@@ -171,11 +177,12 @@ foreach target : targets
171177
if enable_picocrt_lib
172178
static_library(libcrt_semihost_name,
173179
[],
180+
include_directories : inc,
174181
install : true,
175182
install_dir : instdir,
176183
pic: false,
177-
c_args: value[1] + c_args,
178-
objects : [_crt.extract_objects(src_picocrt)])
184+
objects: get_variable(crt0_semihost_name),
185+
c_args : value[1] + ['-DCRT0_EXIT', '-DCRT0_SEMIHOST'])
179186
endif
180187
endif
181188
endforeach

0 commit comments

Comments
 (0)