Commit 19914ab9 authored by Ramon Nou's avatar Ramon Nou
Browse files

Add option to build libc interception with manual initialization

parent 9f59311c
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -245,6 +245,12 @@ gkfs_define_option(
    DEFAULT_VALUE ON
)

gkfs_define_option(
    GKFS_BUILD_LIBC_INTERCEPTION_MANUAL
    HELP_TEXT "Compile libc interception with manual init"
    DEFAULT_VALUE ON
)

# use old resolve function
gkfs_define_option(
    GKFS_USE_LEGACY_PATH_RESOLVE
+49 −0
Original line number Diff line number Diff line
@@ -39,6 +39,10 @@ if (GKFS_BUILD_LIBC_INTERCEPTION)
    add_library(gkfs_libc_intercept SHARED)
endif()

if (GKFS_BUILD_LIBC_INTERCEPTION_MANUAL)
    add_library(gkfs_libc_intercept_manual SHARED)
endif()

add_library(gkfs_user_lib_autoinit SHARED)

target_sources(gkfs_intercept
@@ -150,6 +154,12 @@ target_compile_definitions(gkfs_libc_intercept PUBLIC BYPASS_SYSCALL ENABLE_INIT
target_link_options(gkfs_libc_intercept PRIVATE -z noexecstack)
endif ()


if (GKFS_BUILD_LIBC_INTERCEPTION_MANUAL)
target_compile_definitions(gkfs_libc_intercept_manual PUBLIC BYPASS_SYSCALL)
target_link_options(gkfs_libc_intercept_manual PRIVATE -z noexecstack)
endif ()

if (GKFS_ENABLE_AGIOS)
    target_compile_definitions(gkfs_intercept PUBLIC GKFS_ENABLE_AGIOS)
endif ()
@@ -221,6 +231,29 @@ if (GKFS_ENABLE_CLIENT_METRICS)
endif ()
endif ()


if (GKFS_BUILD_LIBC_INTERCEPTION_MANUAL)
target_link_libraries(
    gkfs_libc_intercept_manual
    PRIVATE metadata distributor env_util arithmetic path_util rpc_utils
    PUBLIC dl
    Mercury::Mercury
    hermes
    fmt::fmt
    Threads::Threads
    Microsoft.GSL::GSL
)
# Enable MSGPack metrics for intercept only
if (GKFS_ENABLE_CLIENT_METRICS)
    target_link_libraries(
        gkfs_libc_intercept_manual
        PUBLIC
        msgpack_util
    )
    target_compile_definitions(gkfs_libc_intercept_manual PUBLIC GKFS_ENABLE_CLIENT_METRICS)
endif ()
endif ()

install(
    TARGETS gkfs_intercept
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
@@ -278,3 +311,19 @@ install(
    PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gkfs
)
endif ()


if (GKFS_BUILD_LIBC_INTERCEPTION_MANUAL)
set_target_properties(gkfs_libc_intercept_manual
    PROPERTIES
    PUBLIC_HEADER "../../include/client/void_syscall_intercept.hpp"
    PUBLIC_HEADER "../../include/client/user_functions.hpp"
)

install(
    TARGETS gkfs_libc_intercept_manual
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
    PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gkfs
)
endif ()