aboutsummaryrefslogtreecommitdiff
path: root/cmake/Modules/ElfTransformations.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/Modules/ElfTransformations.cmake')
-rw-r--r--cmake/Modules/ElfTransformations.cmake36
1 files changed, 36 insertions, 0 deletions
diff --git a/cmake/Modules/ElfTransformations.cmake b/cmake/Modules/ElfTransformations.cmake
new file mode 100644
index 0000000..dfc8576
--- /dev/null
+++ b/cmake/Modules/ElfTransformations.cmake
@@ -0,0 +1,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()