selfpatch-slr/subject/CMakeLists.txt

38 lines
1.3 KiB
CMake

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=$<TARGET_FILE:spslr_pinpoint> -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 $<TARGET_FILE:spslr_finalize>
--bin=$<TARGET_FILE:subject>
--out=${CMAKE_BINARY_DIR}/subject_final
${SUBJECT_SPSLR_FILES}
COMMAND chmod +x ${CMAKE_BINARY_DIR}/subject_final
VERBATIM
)