Skip to content

Commit 6a9528f

Browse files
theIDinsiderocallahan
authored andcommitted
Make use of PROJECT_SOURCE_DIR instead of CMAKE_SOURCE_DIR.
If RR is to be built by a consuming application, PROJECT_SOURCE_DIR points to actual directory where sources are. Additionally, we also need to properly quote paths (used by both PROJECT_SOURCE_DIR and CMAKE_SOURCE_DIR). If there's a directory with spaces in it, rr builds will break.
1 parent 5dbba89 commit 6a9528f

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

CMakeLists.txt

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -76,17 +76,17 @@ add_definitions(-DRR_VERSION="${rr_VERSION_MAJOR}.${rr_VERSION_MINOR}.${rr_VERSI
7676

7777
execute_process(
7878
COMMAND git rev-parse HEAD
79-
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
79+
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
8080
OUTPUT_VARIABLE GIT_REVISION
8181
OUTPUT_STRIP_TRAILING_WHITESPACE
8282
)
8383
configure_file(
84-
${CMAKE_SOURCE_DIR}/src/git_revision.h.in
85-
${CMAKE_BINARY_DIR}/git_revision.h
84+
"${PROJECT_SOURCE_DIR}/src/git_revision.h.in"
85+
"${PROJECT_BINARY_DIR}/git_revision.h"
8686
)
8787
configure_file(
88-
${CMAKE_SOURCE_DIR}/src/extra_version_string.h.in
89-
${CMAKE_BINARY_DIR}/extra_version_string.h
88+
"${PROJECT_SOURCE_DIR}/src/extra_version_string.h.in"
89+
"${PROJECT_BINARY_DIR}/extra_version_string.h"
9090
)
9191

9292
set(FLAGS_COMMON "-D_FILE_OFFSET_BITS=64 -pthread")
@@ -115,7 +115,7 @@ configure_file(src/preload/rr_page.ld.in src/preload/rr_page.ld @ONLY)
115115
include(CheckCCompilerFlag)
116116
CHECK_C_COMPILER_FLAG("-fmacro-prefix-map=foo=bar" SUPPORTS_MACRO_PREFIX_MAP)
117117
if (SUPPORTS_MACRO_PREFIX_MAP)
118-
set(FLAGS_COMMON "${FLAGS_COMMON} -fmacro-prefix-map=${CMAKE_SOURCE_DIR}/=")
118+
set(FLAGS_COMMON "${FLAGS_COMMON} -fmacro-prefix-map='${PROJECT_SOURCE_DIR}/'=")
119119
endif()
120120

121121
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FLAGS_COMMON} -Wstrict-prototypes -std=gnu11")
@@ -484,22 +484,22 @@ set(RR_PAGE_SOURCE_FILES
484484
)
485485
add_library(rrpage)
486486
foreach(file ${RR_PAGE_FILES})
487-
target_sources(rrpage PUBLIC "${CMAKE_SOURCE_DIR}/src/preload/${file}")
488-
set_source_files_properties("${CMAKE_SOURCE_DIR}/src/preload/${file}"
487+
target_sources(rrpage PUBLIC "${PROJECT_SOURCE_DIR}/src/preload/${file}")
488+
set_source_files_properties("${PROJECT_SOURCE_DIR}/src/preload/${file}"
489489
PROPERTIES COMPILE_FLAGS ${PRELOAD_COMPILE_FLAGS})
490490
endforeach(file)
491491

492492
# Since librrpage replaces the kernel vDSO for processes exec'd by rr,
493493
# we want it to have the same SONAME as the real vDSO to trick things
494494
# like AddressSanitizer into recognising it as the vDSO.
495495
set_target_properties(rrpage PROPERTIES NO_SONAME ON)
496-
set_target_properties(rrpage PROPERTIES LINK_FLAGS "-Wl,-T -Wl,${CMAKE_BINARY_DIR}/src/preload/rr_page.ld -Wl,--hash-style=both -nostdlib ${PRELOAD_LINK_FLAGS} -Wl,-z,max-page-size=${PRELOAD_LIBRARY_PAGE_SIZE} -Wl,-soname,linux-vdso.so.1 ${LINKER_FLAGS}")
497-
set_target_properties(rrpage PROPERTIES LINK_DEPENDS ${CMAKE_BINARY_DIR}/src/preload/rr_page.ld)
496+
set_target_properties(rrpage PROPERTIES LINK_FLAGS "-Wl,-T -Wl,'${PROJECT_BINARY_DIR}/src/preload/rr_page.ld' -Wl,--hash-style=both -nostdlib ${PRELOAD_LINK_FLAGS} -Wl,-z,max-page-size=${PRELOAD_LIBRARY_PAGE_SIZE} -Wl,-soname,linux-vdso.so.1 ${LINKER_FLAGS}")
497+
set_target_properties(rrpage PROPERTIES LINK_DEPENDS "${PROJECT_BINARY_DIR}/src/preload/rr_page.ld")
498498
# CMake seems to have trouble generating the link line without this
499499
set_target_properties(rrpage PROPERTIES LINKER_LANGUAGE C)
500500

501501
add_custom_command(TARGET rrpage POST_BUILD
502-
COMMAND ${CMAKE_SOURCE_DIR}/src/preload/tweak_librrpage.py $<TARGET_FILE:rrpage> ${PRELOAD_LIBRARY_PAGE_SIZE})
502+
COMMAND "${PROJECT_SOURCE_DIR}/src/preload/tweak_librrpage.py" $<TARGET_FILE:rrpage> ${PRELOAD_LIBRARY_PAGE_SIZE})
503503

504504
# Order matters here! syscall_hook.S must be immediately before syscallbuf.c,
505505
# raw_syscall.S must be before overrides.c, which must be last.
@@ -523,8 +523,8 @@ set(PRELOAD_SOURCE_FILES
523523
)
524524
add_library(rrpreload)
525525
foreach(file ${PRELOAD_FILES})
526-
target_sources(rrpreload PUBLIC "${CMAKE_SOURCE_DIR}/src/preload/${file}")
527-
set_source_files_properties("${CMAKE_SOURCE_DIR}/src/preload/${file}"
526+
target_sources(rrpreload PUBLIC "${PROJECT_SOURCE_DIR}/src/preload/${file}")
527+
set_source_files_properties("${PROJECT_SOURCE_DIR}/src/preload/${file}"
528528
PROPERTIES COMPILE_FLAGS ${PRELOAD_COMPILE_FLAGS})
529529
endforeach(file)
530530
set_target_properties(rrpreload PROPERTIES LINK_FLAGS "${PRELOAD_LINK_FLAGS} ${LINKER_FLAGS}")
@@ -545,8 +545,8 @@ if(RTLD_AUDIT)
545545
)
546546
add_library(rraudit)
547547
foreach(file ${AUDIT_FILES})
548-
target_sources(rraudit PUBLIC "${CMAKE_SOURCE_DIR}/src/audit/${file}")
549-
set_source_files_properties("${CMAKE_SOURCE_DIR}/src/audit/${file}"
548+
target_sources(rraudit PUBLIC "${PROJECT_SOURCE_DIR}/src/audit/${file}")
549+
set_source_files_properties("${PROJECT_SOURCE_DIR}/src/audit/${file}"
550550
PROPERTIES COMPILE_FLAGS ${PRELOAD_COMPILE_FLAGS})
551551
endforeach(file)
552552
set_target_properties(rraudit PROPERTIES LINK_FLAGS "${PRELOAD_LINK_FLAGS} -ldl ${LINKER_FLAGS}")
@@ -918,12 +918,12 @@ if(rr_32BIT AND rr_64BIT)
918918
endforeach(file)
919919

920920
set_target_properties(rrpage_32 PROPERTIES NO_SONAME ON)
921-
set_target_properties(rrpage_32 PROPERTIES LINK_FLAGS "-m32 -Wl,-T -Wl,${CMAKE_BINARY_DIR}/src/preload/rr_page.ld -Wl,--hash-style=both -nostdlib ${PRELOAD_LINK_FLAGS} -Wl,-soname,linux-vdso.so.1 ${LINKER_FLAGS}")
922-
set_target_properties(rrpage_32 PROPERTIES LINK_DEPENDS ${CMAKE_BINARY_DIR}/src/preload/rr_page.ld)
921+
set_target_properties(rrpage_32 PROPERTIES LINK_FLAGS "-m32 -Wl,-T -Wl,'${PROJECT_BINARY_DIR}/src/preload/rr_page.ld' -Wl,--hash-style=both -nostdlib ${PRELOAD_LINK_FLAGS} -Wl,-soname,linux-vdso.so.1 ${LINKER_FLAGS}")
922+
set_target_properties(rrpage_32 PROPERTIES LINK_DEPENDS "${PROJECT_BINARY_DIR}/src/preload/rr_page.ld")
923923
set_target_properties(rrpage_32 PROPERTIES LINKER_LANGUAGE C)
924924

925925
add_custom_command(TARGET rrpage_32 POST_BUILD
926-
COMMAND ${CMAKE_SOURCE_DIR}/src/preload/tweak_librrpage.py $<TARGET_FILE:rrpage_32> ${PRELOAD_LIBRARY_PAGE_SIZE})
926+
COMMAND "${PROJECT_SOURCE_DIR}/src/preload/tweak_librrpage.py" $<TARGET_FILE:rrpage_32> ${PRELOAD_LIBRARY_PAGE_SIZE})
927927

928928

929929
add_library(rrpreload_32)

0 commit comments

Comments
 (0)