diff --git a/etc/cmake/options.cmake b/etc/cmake/options.cmake index 812295720..b1a124ab1 100644 --- a/etc/cmake/options.cmake +++ b/etc/cmake/options.cmake @@ -34,6 +34,8 @@ option(OT_FTD "enable FTD" ON) option(OT_MTD "enable MTD" ON) option(OT_RCP "enable RCP" ON) +option(OT_LINKER_MAP "generate .map files for example apps" ON) + message(STATUS OT_APP_CLI=${OT_APP_CLI}) message(STATUS OT_APP_NCP=${OT_APP_NCP}) message(STATUS OT_APP_RCP=${OT_APP_RCP}) diff --git a/examples/apps/cli/ftd.cmake b/examples/apps/cli/ftd.cmake index b8aac6e56..9ed9be18c 100644 --- a/examples/apps/cli/ftd.cmake +++ b/examples/apps/cli/ftd.cmake @@ -48,5 +48,13 @@ target_link_libraries(ot-cli-ftd PRIVATE ot-config ) +if(OT_LINKER_MAP) + if("${CMAKE_CXX_COMPILER_ID}" MATCHES "AppleClang") + target_link_libraries(ot-cli-ftd PRIVATE -Wl,-map,ot-cli-ftd.map) + else() + target_link_libraries(ot-cli-ftd PRIVATE -Wl,-Map=ot-cli-ftd.map) + endif() +endif() + install(TARGETS ot-cli-ftd DESTINATION bin) diff --git a/examples/apps/cli/mtd.cmake b/examples/apps/cli/mtd.cmake index df1729673..786f74161 100644 --- a/examples/apps/cli/mtd.cmake +++ b/examples/apps/cli/mtd.cmake @@ -48,5 +48,13 @@ target_link_libraries(ot-cli-mtd PRIVATE ot-config ) +if(OT_LINKER_MAP) + if("${CMAKE_CXX_COMPILER_ID}" MATCHES "AppleClang") + target_link_libraries(ot-cli-mtd PRIVATE -Wl,-map,ot-cli-mtd.map) + else() + target_link_libraries(ot-cli-mtd PRIVATE -Wl,-Map=ot-cli-mtd.map) + endif() +endif() + install(TARGETS ot-cli-mtd DESTINATION bin) diff --git a/examples/apps/cli/radio.cmake b/examples/apps/cli/radio.cmake index 715c0f687..b2fe5d968 100644 --- a/examples/apps/cli/radio.cmake +++ b/examples/apps/cli/radio.cmake @@ -52,6 +52,14 @@ target_link_libraries(ot-cli-radio PRIVATE ot-config ) +if(OT_LINKER_MAP) + if("${CMAKE_CXX_COMPILER_ID}" MATCHES "AppleClang") + target_link_libraries(ot-cli-radio PRIVATE -Wl,-map,ot-cli-radio.map) + else() + target_link_libraries(ot-cli-radio PRIVATE -Wl,-Map=ot-cli-radio.map) + endif() +endif() + install(TARGETS ot-cli-radio DESTINATION bin ) diff --git a/examples/apps/ncp/ftd.cmake b/examples/apps/ncp/ftd.cmake index 353b21bac..a7ffa51ad 100644 --- a/examples/apps/ncp/ftd.cmake +++ b/examples/apps/ncp/ftd.cmake @@ -48,4 +48,12 @@ target_link_libraries(ot-ncp-ftd PRIVATE ot-config ) +if(OT_LINKER_MAP) + if("${CMAKE_CXX_COMPILER_ID}" MATCHES "AppleClang") + target_link_libraries(ot-ncp-ftd PRIVATE -Wl,-map,ot-ncp-ftd.map) + else() + target_link_libraries(ot-ncp-ftd PRIVATE -Wl,-Map=ot-ncp-ftd.map) + endif() +endif() + install(TARGETS ot-ncp-ftd DESTINATION bin) diff --git a/examples/apps/ncp/mtd.cmake b/examples/apps/ncp/mtd.cmake index 6a548ee9a..2fecbacc0 100644 --- a/examples/apps/ncp/mtd.cmake +++ b/examples/apps/ncp/mtd.cmake @@ -48,4 +48,12 @@ target_link_libraries(ot-ncp-mtd PRIVATE ot-config ) +if(OT_LINKER_MAP) + if("${CMAKE_CXX_COMPILER_ID}" MATCHES "AppleClang") + target_link_libraries(ot-ncp-mtd PRIVATE -Wl,-map,ot-ncp-mtd.map) + else() + target_link_libraries(ot-ncp-mtd PRIVATE -Wl,-Map=ot-ncp-mtd.map) + endif() +endif() + install(TARGETS ot-ncp-mtd DESTINATION bin) diff --git a/examples/apps/ncp/rcp.cmake b/examples/apps/ncp/rcp.cmake index 40334c339..0f8be335a 100644 --- a/examples/apps/ncp/rcp.cmake +++ b/examples/apps/ncp/rcp.cmake @@ -47,4 +47,12 @@ target_link_libraries(ot-rcp PRIVATE ot-config ) +if(OT_LINKER_MAP) + if("${CMAKE_CXX_COMPILER_ID}" MATCHES "AppleClang") + target_link_libraries(ot-rcp PRIVATE -Wl,-map,ot-rcp.map) + else() + target_link_libraries(ot-rcp PRIVATE -Wl,-Map=ot-rcp.map) + endif() +endif() + install(TARGETS ot-rcp DESTINATION bin) diff --git a/src/posix/cli.cmake b/src/posix/cli.cmake index 4354374d2..4b7347b40 100644 --- a/src/posix/cli.cmake +++ b/src/posix/cli.cmake @@ -43,7 +43,7 @@ target_compile_options(ot-cli PRIVATE ${OT_CFLAGS} ) -target_link_libraries(ot-cli +target_link_libraries(ot-cli PRIVATE openthread-cli-ftd openthread-posix openthread-ftd @@ -57,6 +57,13 @@ target_link_libraries(ot-cli ot-config ) +if(OT_LINKER_MAP) + if("${CMAKE_CXX_COMPILER_ID}" MATCHES "AppleClang") + target_link_libraries(ot-cli PRIVATE -Wl,-map,ot-cli.map) + else() + target_link_libraries(ot-cli PRIVATE -Wl,-Map=ot-cli.map) + endif() +endif() install(TARGETS ot-cli DESTINATION bin) diff --git a/src/posix/daemon.cmake b/src/posix/daemon.cmake index cf2c7b7d9..dd726df27 100644 --- a/src/posix/daemon.cmake +++ b/src/posix/daemon.cmake @@ -49,6 +49,14 @@ target_link_libraries(ot-daemon PRIVATE ot-config ) +if(OT_LINKER_MAP) + if("${CMAKE_CXX_COMPILER_ID}" MATCHES "AppleClang") + target_link_libraries(ot-daemon PRIVATE -Wl,-map,ot-daemon.map) + else() + target_link_libraries(ot-daemon PRIVATE -Wl,-Map=ot-daemon.map) + endif() +endif() + add_executable(ot-ctl client.cpp ) @@ -68,6 +76,14 @@ target_link_libraries(ot-ctl PRIVATE ot-config ) +if(OT_LINKER_MAP) + if("${CMAKE_CXX_COMPILER_ID}" MATCHES "AppleClang") + target_link_libraries(ot-ctl PRIVATE -Wl,-map,ot-ctl.map) + else() + target_link_libraries(ot-ctl PRIVATE -Wl,-Map=ot-ctl.map) + endif() +endif() + target_include_directories(ot-ctl PRIVATE ${COMMON_INCLUDES}) install(TARGETS ot-daemon