add_executable(subject main.c second.c sub/second.c) target_include_directories(subject PRIVATE .) add_dependencies(subject spslr_pinpoint spslr_finalize spslr_selfpatch) target_link_libraries(subject PRIVATE spslr_selfpatch) set(SUBJECT_SPSLR_METADIR "${CMAKE_CURRENT_BINARY_DIR}/spslr") set(SUBJECT_SPSLR_SRCROOT "${CMAKE_CURRENT_SOURCE_DIR}") target_compile_options(subject PRIVATE -O1 -fplugin=$ -fdump-tree-separate_offset -fdump-tree-asm_offset -fplugin-arg-spslr_pinpoint-srcroot=${SUBJECT_SPSLR_SRCROOT} -fplugin-arg-spslr_pinpoint-metadir=${SUBJECT_SPSLR_METADIR}) file(MAKE_DIRECTORY "${SUBJECT_SPSLR_METADIR}") # Apply spslr_finalizer to subject get_target_property(SUBJECT_SOURCES subject SOURCES) set(SUBJECT_SPSLR_FILES "") foreach(src IN LISTS SUBJECT_SOURCES) get_filename_component(abs_src "${src}" ABSOLUTE BASE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") file(RELATIVE_PATH rel_src "${SUBJECT_SPSLR_SRCROOT}" "${abs_src}") file(TO_CMAKE_PATH "${rel_src}" rel_src) list(APPEND SUBJECT_SPSLR_FILES "${SUBJECT_SPSLR_METADIR}/${rel_src}.spslr") endforeach() add_custom_command( TARGET subject POST_BUILD COMMAND $ --bin=$ --out=${CMAKE_BINARY_DIR}/subject_final ${SUBJECT_SPSLR_FILES} COMMAND chmod +x ${CMAKE_BINARY_DIR}/subject_final VERBATIM )