Skip to content

Commit 55b33f8

Browse files
committed
cmake: sdp: generate and check separate files for each SoC
Each SoC should have own unique assembly file, since their configuration may differ. Signed-off-by: Marcin Szymczyk <[email protected]>
1 parent 0c64bcf commit 55b33f8

File tree

3 files changed

+27
-21
lines changed

3 files changed

+27
-21
lines changed

cmake/sdp.cmake

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,24 @@
55
#
66

77
function(sdp_assembly_install target hrt_srcs)
8-
sdp_assembly_generate("${hrt_srcs}")
9-
sdp_assembly_check("${hrt_srcs}")
10-
sdp_assembly_prepare_install("${hrt_srcs}")
11-
sdp_assembly_target_sources(${target} "${hrt_srcs}")
8+
sdp_assembly_generate(${CONFIG_SOC} "${hrt_srcs}")
9+
sdp_assembly_check(${CONFIG_SOC} "${hrt_srcs}")
10+
sdp_assembly_prepare_install(${CONFIG_SOC} "${hrt_srcs}")
11+
sdp_assembly_target_sources(${CONFIG_SOC} ${target} "${hrt_srcs}")
1212

1313
add_dependencies(${target} asm_check)
1414
endfunction()
1515

16-
function(sdp_assembly_target_sources target hrt_srcs)
16+
function(sdp_assembly_target_sources soc target hrt_srcs)
1717
foreach(hrt_src ${hrt_srcs})
1818
get_filename_component(hrt_dir ${hrt_src} DIRECTORY) # directory
1919
get_filename_component(hrt_src_file ${hrt_src} NAME_WE) # filename without extension
20-
set(hrt_s_file "${hrt_dir}/${hrt_src_file}.s")
20+
set(hrt_s_file "${hrt_dir}/${hrt_src_file}-${soc}.s")
2121
target_sources(${target} PRIVATE ${hrt_s_file})
2222
endforeach()
2323
endfunction()
2424

25-
function(sdp_assembly_generate hrt_srcs)
25+
function(sdp_assembly_generate soc hrt_srcs)
2626
set(hrt_msg "Generating ASM files for Hard Real Time files.")
2727
set(hrt_opts -g0 -fno-ident -fno-verbose-asm)
2828

@@ -56,9 +56,9 @@ function(sdp_assembly_generate hrt_srcs)
5656
get_filename_component(src_filename ${hrt_src} NAME_WE) # filename without extension
5757
add_custom_command(TARGET asm_gen
5858
PRE_BUILD
59-
BYPRODUCTS ${src_filename}-temp.s
60-
COMMAND ${CMAKE_C_COMPILER} ${compiler_options} ${hrt_opts} -S ${hrt_src} -o ${src_filename}-temp.s
61-
COMMAND ${PYTHON_EXECUTABLE} ${ZEPHYR_NRF_MODULE_DIR}/scripts/sdp/remove_comments.py ${src_filename}-temp.s
59+
BYPRODUCTS ${src_filename}-${soc}-temp.s
60+
COMMAND ${CMAKE_C_COMPILER} ${compiler_options} ${hrt_opts} -S ${hrt_src} -o ${src_filename}-${soc}-temp.s
61+
COMMAND ${PYTHON_EXECUTABLE} ${ZEPHYR_NRF_MODULE_DIR}/scripts/sdp/remove_comments.py ${src_filename}-${soc}-temp.s
6262
COMMAND_EXPAND_LISTS
6363
COMMENT "Generating ASM file for ${hrt_src}"
6464
)
@@ -68,7 +68,7 @@ function(sdp_assembly_generate hrt_srcs)
6868

6969
endfunction()
7070

71-
function(sdp_assembly_check hrt_srcs)
71+
function(sdp_assembly_check soc hrt_srcs)
7272
set(asm_check_msg "Checking if ASM files for Hard Real Time have changed.")
7373

7474
if(TARGET asm_check)
@@ -80,15 +80,15 @@ function(sdp_assembly_check hrt_srcs)
8080
string(REPLACE ";" "$<SEMICOLON>" hrt_srcs_semi "${hrt_srcs}")
8181

8282
add_custom_target(asm_check
83-
COMMAND ${CMAKE_COMMAND} -D hrt_srcs="${hrt_srcs_semi}" -P ${ZEPHYR_NRF_MODULE_DIR}/cmake/sdp_asm_check.cmake
83+
COMMAND ${CMAKE_COMMAND} -D hrt_srcs="${hrt_srcs_semi}" -D soc="${soc}" -P ${ZEPHYR_NRF_MODULE_DIR}/cmake/sdp_asm_check.cmake
8484
COMMENT ${asm_check_msg}
8585
)
8686

8787
add_dependencies(asm_check asm_gen)
8888

8989
endfunction()
9090

91-
function(sdp_assembly_prepare_install hrt_srcs)
91+
function(sdp_assembly_prepare_install soc hrt_srcs)
9292
set(asm_install_msg "Updating ASM files for Hard Real Time.")
9393

9494
if(TARGET asm_install)
@@ -100,7 +100,7 @@ function(sdp_assembly_prepare_install hrt_srcs)
100100
string(REPLACE ";" "$<SEMICOLON>" hrt_srcs_semi "${hrt_srcs}")
101101

102102
add_custom_target(asm_install
103-
COMMAND ${CMAKE_COMMAND} -D hrt_srcs="${hrt_srcs_semi}" -P ${ZEPHYR_NRF_MODULE_DIR}/cmake/sdp_asm_install.cmake
103+
COMMAND ${CMAKE_COMMAND} -D hrt_srcs="${hrt_srcs_semi}" -D soc="${soc}" -P ${ZEPHYR_NRF_MODULE_DIR}/cmake/sdp_asm_install.cmake
104104
COMMENT ${asm_install_msg}
105105
)
106106

cmake/sdp_asm_check.cmake

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,26 @@
55
#
66

77
function(asm_check)
8+
if(NOT DEFINED soc)
9+
message(FATAL_ERROR "asm_check missing soc argument.")
10+
endif()
811

912
foreach(hrt_src ${hrt_srcs})
1013
get_filename_component(asm_filename ${hrt_src} NAME_WE) # filename without extension
1114
get_filename_component(src_dir ${hrt_src} DIRECTORY)
1215

1316
execute_process(COMMAND ${CMAKE_COMMAND} -E compare_files --ignore-eol
14-
${src_dir}/${asm_filename}.s ${asm_filename}-temp.s
17+
${src_dir}/${asm_filename}-${soc}.s ${asm_filename}-${soc}-temp.s
1518
RESULT_VARIABLE compare_result)
1619

1720
if( compare_result EQUAL 0)
18-
message("File ${asm_filename}.s has not changed.")
21+
message("File ${asm_filename}-${soc}.s has not changed.")
1922
elseif( compare_result EQUAL 1)
20-
message(WARNING "${asm_filename}.s ASM file content has changed.\
23+
message(WARNING "${asm_filename}-${soc}.s ASM file content has changed.\
2124
If you want to include the new ASM in build, \
2225
please run `ninja asm_install` in FLPR build directory and build again")
2326
else()
24-
message("Something went wrong when comparing ${asm_filename}.s and ${asm_filename}-temp.s")
27+
message("Something went wrong when comparing ${asm_filename}-${soc}.s and ${asm_filename}-${soc}-temp.s")
2528
endif()
2629
endforeach()
2730

cmake/sdp_asm_install.cmake

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,20 @@
55
#
66

77
function(asm_install)
8+
if(NOT DEFINED soc)
9+
message(FATAL_ERROR "asm_install missing soc argument.")
10+
endif()
811

912
foreach(hrt_src ${hrt_srcs})
1013
get_filename_component(asm_filename ${hrt_src} NAME_WE) # filename without extension
1114
get_filename_component(src_dir ${hrt_src} DIRECTORY)
1215

13-
file(RENAME ${asm_filename}-temp.s ${src_dir}/${asm_filename}.s RESULT rename_result)
16+
file(RENAME ${asm_filename}-${soc}-temp.s ${src_dir}/${asm_filename}-${soc}.s RESULT rename_result)
1417

1518
if (rename_result EQUAL 0)
16-
message("Updated ${asm_filename}.s ASM file.")
19+
message("Updated ${asm_filename}-${soc}.s ASM file.")
1720
else()
18-
message(WARNING "${asm_filename}.s cannot be updated, new ASM does not exist. Please run ninja asm_gen to create one.")
21+
message(WARNING "${asm_filename}-${soc}.s cannot be updated, new ASM does not exist. Please run ninja asm_gen to create one.")
1922
endif()
2023

2124
endforeach()

0 commit comments

Comments
 (0)