From 030508a71df3e1d1c10407e4495a67321f02ed71 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Sun, 4 Aug 2019 16:11:59 -0400 Subject: [PATCH] cmake make bloaty available everywhere and improve output --- CMakeLists.txt | 1 + cmake/bloaty.cmake | 88 ++++++++++++++++++++++++++++++++++ platforms/nuttx/CMakeLists.txt | 42 ---------------- 3 files changed, 89 insertions(+), 42 deletions(-) create mode 100644 cmake/bloaty.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 8ee7b3bb27..1446279e15 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -598,3 +598,4 @@ else() endif() include(CPack) +include(bloaty) diff --git a/cmake/bloaty.cmake b/cmake/bloaty.cmake new file mode 100644 index 0000000000..845a97de55 --- /dev/null +++ b/cmake/bloaty.cmake @@ -0,0 +1,88 @@ +############################################################################ +# +# Copyright (c) 2019 PX4 Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name PX4 nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +find_program(BLOATY_PROGRAM bloaty) +if (BLOATY_PROGRAM) + # bloaty symbols + set(BLOATY_OPTS --demangle=short --domain=vm -s vm -n 100 -w) + add_custom_target(bloaty_symbols + COMMAND ${BLOATY_PROGRAM} -d symbols ${BLOATY_OPTS} $ + DEPENDS px4 + USES_TERMINAL + ) + + # bloaty compilation units + add_custom_target(bloaty_compileunits + COMMAND ${BLOATY_PROGRAM} -d compileunits ${BLOATY_OPTS} $ + DEPENDS px4 + USES_TERMINAL + ) + + # bloaty sections + add_custom_target(bloaty_sections + COMMAND ${BLOATY_PROGRAM} -d sections ${BLOATY_OPTS} $ + DEPENDS px4 + USES_TERMINAL + ) + + # bloaty segments + add_custom_target(bloaty_segments + COMMAND ${BLOATY_PROGRAM} -d segments ${BLOATY_OPTS} $ + DEPENDS px4 + USES_TERMINAL + ) + + # bloaty templates + add_custom_target(bloaty_templates + COMMAND ${BLOATY_PROGRAM} -d shortsymbols,fullsymbols ${BLOATY_OPTS} $ + DEPENDS px4 + USES_TERMINAL + ) + + # bloaty inlines + add_custom_target(bloaty_inlines + COMMAND ${BLOATY_PROGRAM} -d inlines ${BLOATY_OPTS} $ + DEPENDS px4 + USES_TERMINAL + ) + + # bloaty compare with last master build + add_custom_target(bloaty_compare_master + COMMAND wget -c -N --no-verbose https://s3.amazonaws.com/px4-travis/Firmware/master/${PX4_BOARD_VENDOR}_${PX4_BOARD_MODEL}_${PX4_BOARD_LABEL}.elf -O master.elf + COMMAND ${BLOATY_PROGRAM} ${BLOATY_OPTS} $ -- master.elf + DEPENDS px4 + WORKING_DIRECTORY ${PX4_BINARY_DIR} + VERBATIM + USES_TERMINAL + ) +endif() diff --git a/platforms/nuttx/CMakeLists.txt b/platforms/nuttx/CMakeLists.txt index 406e6432ff..0f3d8ac6e0 100644 --- a/platforms/nuttx/CMakeLists.txt +++ b/platforms/nuttx/CMakeLists.txt @@ -245,48 +245,6 @@ add_custom_target(stack_check VERBATIM ) -find_program(BLOATY_PROGRAM bloaty) -if (BLOATY_PROGRAM) - # bloaty symbols - add_custom_target(bloaty_symbols - COMMAND ${BLOATY_PROGRAM} -d symbols -C full -n 50 -s vm $ - DEPENDS px4 - USES_TERMINAL - ) - - # bloaty compilation units - add_custom_target(bloaty_compileunits - COMMAND ${BLOATY_PROGRAM} -d compileunits -C full -n 50 -s vm $ - DEPENDS px4 - USES_TERMINAL - ) - - # bloaty templates - add_custom_target(bloaty_templates - COMMAND ${BLOATY_PROGRAM} -d shortsymbols,fullsymbols -n 50 $ - DEPENDS px4 - USES_TERMINAL - ) - - # bloaty inlines - add_custom_target(bloaty_inlines - COMMAND ${BLOATY_PROGRAM} -d inlines -C full -n 50 $ - DEPENDS px4 - USES_TERMINAL - ) - - # bloaty compare with last master build - add_custom_target(bloaty_compare_master - #COMMAND wget --no-verbose https://s3.amazonaws.com/px4-travis/Firmware/master/${FW_NAME} -O master_${FW_NAME} - COMMAND wget --no-verbose https://s3.amazonaws.com/px4-travis/Firmware/master/${PX4_BOARD_VENDOR}_${PX4_BOARD_MODEL}_${PX4_BOARD_LABEL}.elf -O master_${FW_NAME} - COMMAND ${BLOATY_PROGRAM} -d symbols -n 50 -C full -s vm $ -- master_${FW_NAME} - DEPENDS px4 - WORKING_DIRECTORY ${PX4_BINARY_DIR} - VERBATIM - USES_TERMINAL - ) -endif() - # debugger helpers configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Debug/gdbinit.in ${PX4_BINARY_DIR}/.gdbinit)