aboutsummaryrefslogtreecommitdiff
path: root/cmake/Modules/ElfTransformations.cmake
blob: dfc85767fce9d0b8052b4f3dab0f3063f1f41dd1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
include_guard(GLOBAL)

function(target_extract_debug_symbols TARGET)
    add_custom_command(TARGET "${TARGET}"
        POST_BUILD
        COMMAND "${CMAKE_OBJCOPY}"
        "--only-keep-debug"
        "$<TARGET_FILE:${TARGET}>"
        "$<TARGET_FILE_DIR:${TARGET}>/$<TARGET_FILE_BASE_NAME:${TARGET}>.sym"
        BYPRODUCTS "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$<CONFIGURATION>/${TARGET}.sym"
        COMMENT "Extracting debug symbols from $<TARGET_FILE:${TARGET}> ..."
    )
endfunction()

function(target_strip TARGET)
    add_custom_command(TARGET "${TARGET}"
        POST_BUILD
        COMMAND "${CMAKE_STRIP}"
        "$<TARGET_FILE:${TARGET}>"
        COMMENT "Stripping $<TARGET_FILE:${TARGET}> ..."
    )
endfunction()

function(target_disassemble TARGET)
    add_custom_command(TARGET "${TARGET}"
        POST_BUILD
        COMMAND "${CMAKE_OBJDUMP}"
        "--disassemble"
        "--visualize-jumps"
        "--demangle"
        "$<TARGET_FILE:${TARGET}>"
        ">$<TARGET_FILE_DIR:${TARGET}>/$<TARGET_FILE_BASE_NAME:${TARGET}>.dis"
        BYPRODUCTS "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$<CONFIGURATION>/${TARGET}.dis"
        COMMENT "Dumping disassembly for $<TARGET_FILE:${TARGET}> ..."
    )
endfunction()