@@ -34,6 +34,24 @@ def get_make_env_vars(
34
34
return " " .join (["{}=\" {}\" "
35
35
.format (key , _join_flags_list (workspace_name , vars [key ])) for key in vars ])
36
36
37
+ # buildifier: disable=function-docstring
38
+ def get_ldflags_make_vars (
39
+ executable_ldflags_vars ,
40
+ shared_ldflags_vars ,
41
+ workspace_name ,
42
+ flags ,
43
+ user_vars ,
44
+ deps ,
45
+ inputs ):
46
+ vars = _get_ldflags_vars (executable_ldflags_vars , shared_ldflags_vars , flags , user_vars )
47
+
48
+ deps_flags = _define_deps_flags (deps , inputs )
49
+ for key in vars .keys ():
50
+ vars [key ] = vars [key ] + deps_flags .libs
51
+
52
+ return " " .join (["{}=\" {}\" "
53
+ .format (key , _join_flags_list (workspace_name , vars [key ])) for key in vars ])
54
+
37
55
def _define_deps_flags (deps , inputs ):
38
56
# It is very important to keep the order for the linker => put them into list
39
57
lib_dirs = []
@@ -99,17 +117,7 @@ _MAKE_TOOLS = {
99
117
}
100
118
101
119
def _get_make_variables (workspace_name , tools , flags , user_env_vars , make_commands ):
102
- vars = {}
103
-
104
- for flag in _MAKE_FLAGS :
105
- toolchain_flags = getattr (flags , _MAKE_FLAGS [flag ], [])
106
- user_flags = [
107
- user_flag
108
- for user_flag in user_env_vars .get (flag , "" ).split (" " )
109
- if user_flag
110
- ]
111
- if toolchain_flags or user_flags :
112
- vars [flag ] = toolchain_flags + user_flags
120
+ vars = _merge_env_vars (flags , _MAKE_FLAGS , user_env_vars )
113
121
114
122
# Add user defined CPPFLAGS
115
123
user_cpp_flags = [flag for flag in user_env_vars .get ("CPPFLAGS" , "" ).split (" " ) if flag ]
@@ -146,6 +154,34 @@ def _get_make_variables(workspace_name, tools, flags, user_env_vars, make_comman
146
154
147
155
return vars
148
156
157
+ def _get_ldflags_vars (
158
+ executable_ldflags_vars ,
159
+ shared_ldflags_vars ,
160
+ flags ,
161
+ user_env_vars ):
162
+ executable_ldflags = {var : "cxx_linker_executable" for var in executable_ldflags_vars }
163
+ shared_ldflags = {var : "cxx_linker_shared" for var in shared_ldflags_vars }
164
+
165
+ linker_make_flags = {}
166
+ for ldflags in [executable_ldflags , shared_ldflags ]:
167
+ linker_make_flags .update (ldflags )
168
+
169
+ return _merge_env_vars (flags , linker_make_flags , user_env_vars )
170
+
171
+ def _merge_env_vars (flags , make_flags , user_env_vars ):
172
+ vars = {}
173
+
174
+ for flag in make_flags :
175
+ toolchain_flags = getattr (flags , make_flags [flag ], [])
176
+ user_flags = [
177
+ user_flag
178
+ for user_flag in user_env_vars .get (flag , "" ).split (" " )
179
+ if user_flag
180
+ ]
181
+ if toolchain_flags or user_flags :
182
+ vars [flag ] = toolchain_flags + user_flags
183
+ return vars
184
+
149
185
def _absolutize (workspace_name , text , force = False ):
150
186
return absolutize_path_in_str (workspace_name , "$$EXT_BUILD_ROOT$$/" , text , force )
151
187
0 commit comments