Skip to content

Commit fa93409

Browse files
reimerixsokhealy
andauthored
Static bundles for the IAR toolchain[DRAFT] (#177)
We made a release to Asensing but the IAR library was not bundled properly and static linking was not done. The plan is to use `add_static_library_bundle` but, the archive code is not compatible with IAR. A flag was added that is only set during IAR compilation and installs. Currently, we are using CMAKE but plan to move to Bazel after this patch release --------- Co-authored-by: sokhealy <[email protected]>
1 parent 5b65c03 commit fa93409

File tree

1 file changed

+47
-19
lines changed

1 file changed

+47
-19
lines changed

ArchiveUtility.cmake

Lines changed: 47 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -127,25 +127,53 @@ function (add_static_library_bundle target)
127127
string (APPEND mri_script "fi\n\n")
128128
endforeach()
129129
string (APPEND mri_script "echo save\n")
130-
string (APPEND mri_script "echo end")
131-
132-
set (mri_script_file ${mri_script_dir}/script.mri.sh)
133-
134-
file (GENERATE
135-
OUTPUT ${mri_script_file}
136-
CONTENT "${mri_script}"
137-
CONDITION 1
138-
)
139-
140-
add_custom_command (
141-
OUTPUT ${output_directory}/${output_library}
142-
COMMAND bash ${mri_script_file} | ${CMAKE_AR} -M
143-
COMMAND_EXPAND_LISTS
144-
WORKING_DIRECTORY
145-
${output_directory}
146-
DEPENDS
147-
${bundle_libraries}
148-
)
130+
string (APPEND mri_script "echo end\n")
131+
132+
if (ARCHIVE_IAR)
133+
set (iar_script)
134+
string (APPEND iar_script "--create")
135+
foreach (bundle_library IN LISTS bundle_libraries)
136+
string (APPEND iar_script " \$<TARGET_FILE:${bundle_library}>")
137+
endforeach()
138+
string (APPEND iar_script " -o ${output_directory}/${output_library}\n")
139+
140+
set (iar_script_file ${mri_script_dir}/script.iar.sh)
141+
set (iar_cp_file ${mri_script_dir}/script.iar_cp.sh)
142+
143+
file (GENERATE
144+
OUTPUT ${iar_script_file}
145+
CONTENT "${iar_script}"
146+
CONDITION 1
147+
)
148+
149+
add_custom_command (
150+
OUTPUT ${output_directory}/${output_library}
151+
COMMAND ${CMAKE_AR} -f ${iar_script_file}
152+
COMMAND_EXPAND_LISTS
153+
WORKING_DIRECTORY
154+
${output_directory}
155+
DEPENDS
156+
${bundle_libraries}
157+
)
158+
else ()
159+
set (mri_script_file ${mri_script_dir}/script.mri.sh)
160+
161+
file (GENERATE
162+
OUTPUT ${mri_script_file}
163+
CONTENT "${mri_script}"
164+
CONDITION 1
165+
)
166+
167+
add_custom_command (
168+
OUTPUT ${output_directory}/${output_library}
169+
COMMAND bash ${mri_script_file} | ${CMAKE_AR} -M
170+
COMMAND_EXPAND_LISTS
171+
WORKING_DIRECTORY
172+
${output_directory}
173+
DEPENDS
174+
${bundle_libraries}
175+
)
176+
endif()
149177

150178
add_custom_target (${target} ALL
151179
DEPENDS ${output_directory}/${output_library}

0 commit comments

Comments
 (0)