@@ -62,6 +62,7 @@ option(DATACRUMBS_TRACE_ALL_PROCESSES_OPT "Trace all processes" OFF)
6262set (DATACRUMBS_INCLUSION_PATH "NONE" CACHE STRING "Inclusion path for datacrumbs" )
6363set (DATACRUMBS_CONFIGURED_TRACE_DIR "/tmp" CACHE STRING "Trace directory for datacrumbs" )
6464set (DATACRUMBS_CONFIGURED_LOG_DIR "/tmp" CACHE STRING "Log directory for datacrumbs" )
65+ set (DATACRUMBS_CONFIGURED_RUN_DIR "NONE" CACHE STRING "Run directory for datacrumbs" )
6566
6667option (DATACRUMBS_BPF_PRINT_ENABLE "Enable BPF print" OFF )
6768set (DATACRUMBS_MODE_STR "TRACE" CACHE STRING "Mode for datacrumbs (TRACE or PROFILE)" )
@@ -84,6 +85,15 @@ set(DATACRUMBS_SKIP_SMALL_EVENTS_THRESHOLD_NS "1000" CACHE STRING "Threshold in
8485# Profiling Options
8586set (DATACRUMBS_TIME_INTERVAL_NS "1000000" CACHE STRING "Profiling time interval in nanosecond" )
8687
88+ # Scheduling Options
89+ set (DATACRUMBS_LAUNCHER_TYPE "FLUX" CACHE STRING "Scheduler type for datacrumbs (FLUX, SLURM, OPENMPI, or NONE)" )
90+ set_property (CACHE DATACRUMBS_LAUNCHER_TYPE PROPERTY STRINGS FLUX SLURM OPENMPI NONE )
91+ set (DATACRUMBS_SCHEDULER_JOBID_ENV_VAR "NONE" CACHE STRING "Scheduler job ID environment variable name" )
92+ set (DATACRUMBS_SCHEDULER_NODES_CMD_OPT "NONE" CACHE STRING "Scheduler option for setting nodes" )
93+ set (DATACRUMBS_SCHEDULER_PPN_CMD_OPT "NONE" CACHE STRING "Scheduler option for setting processes per node" )
94+ set (DATACRUMBS_SCHEDULER_RUN_CMD "NONE" CACHE STRING "Scheduler run command" )
95+ set (DATACRUMBS_SCHEDULER_RUN_EXTRA_ARGS "" CACHE STRING "Scheduler run extra args" )
96+
8797# Other options
8898set (DATACRUMBS_LOG_LEVEL_STR "INFO" CACHE STRING "Log Level for compiling ${UPPER_PROJECT_NAME} " )
8999set_property (CACHE DATACRUMBS_LOG_LEVEL_STR PROPERTY STRINGS ERROR WARN INFO DEBUG TRACE )
@@ -139,6 +149,11 @@ message(STATUS " - Found kernel headers at: ${DATACRUMBS_KERNEL_HEAD
139149message (STATUS " - DATACRUMBS_KERNEL_UNAME_R: ${DATACRUMBS_KERNEL_UNAME_R} " )
140150message (STATUS " - DATACRUMBS_CONFIGURED_TRACE_DIR: ${DATACRUMBS_CONFIGURED_TRACE_DIR} " )
141151message (STATUS " - DATACRUMBS_CONFIGURED_LOG_DIR: ${DATACRUMBS_CONFIGURED_LOG_DIR} " )
152+ message (STATUS " - DATACRUMBS_LAUNCHER_TYPE: ${DATACRUMBS_LAUNCHER_TYPE} " )
153+ message (STATUS " - DATACRUMBS_SCHEDULER_JOBID_ENV_VAR: ${DATACRUMBS_SCHEDULER_JOBID_ENV_VAR} " )
154+ message (STATUS " - DATACRUMBS_SCHEDULER_NODES_CMD_OPT: ${DATACRUMBS_SCHEDULER_NODES_CMD_OPT} " )
155+ message (STATUS " - DATACRUMBS_SCHEDULER_PPN_CMD_OPT: ${DATACRUMBS_SCHEDULER_PPN_CMD_OPT} " )
156+ message (STATUS " - DATACRUMBS_SCHEDULER_RUN_CMD: ${DATACRUMBS_SCHEDULER_RUN_CMD} " )
142157
143158if (NOT EXISTS "${DATACRUMBS_CONFIGURED_TRACE_DIR} " )
144159 message (FATAL_ERROR "[${UPPER_PROJECT_NAME} ] DATACRUMBS_CONFIGURED_TRACE_DIR does not exist: ${DATACRUMBS_CONFIGURED_TRACE_DIR} " )
@@ -424,7 +439,7 @@ add_dependencies(datacrumbs_obj datacrumbs_bpf_skel)
424439
425440# Build the final executable by linking server.cpp and the object library
426441add_executable (${PROJECT_NAME} ${DATACRUMBS_SERVER_SRC} )
427- target_link_libraries (${PROJECT_NAME} ${DEPENDENCY_LIB} datacrumbs_obj )
442+ target_link_libraries (${PROJECT_NAME} datacrumbs_obj ${DEPENDENCY_LIB} )
428443add_dependencies (${PROJECT_NAME} datacrumbs_bpf_skel datacrumbs_obj )
429444
430445# Install the main processing executable into DATACRUMBS_INSTALL_BINARYDIR
@@ -587,6 +602,8 @@ set(_DATACRUMBS_DATA_FILES
587602 "${CMAKE_DATA_OUTPUT_DIRECTORY} /categories-${DATACRUMBS_USER} -${DATACRUMBS_HOST} .json"
588603 "${CMAKE_DATA_OUTPUT_DIRECTORY} /probes-${DATACRUMBS_USER} -${DATACRUMBS_HOST} .json"
589604)
605+ # Ensure the data output directory exists
606+ file (MAKE_DIRECTORY ${CMAKE_DATA_OUTPUT_DIRECTORY} )
590607
591608if (_DATACRUMBS_DATA_FILES)
592609 install (FILES ${_DATACRUMBS_DATA_FILES}
@@ -775,6 +792,15 @@ install(
775792 ${DATACRUMBS_INSTALL_SBINARYDIR}
776793)
777794
795+ configure_file (${CMAKE_CURRENT_SOURCE_DIR} /scripts/datacrumbs/datacrumbs_salloc.in ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /datacrumbs_salloc @ONLY )
796+ install (
797+ PROGRAMS
798+ ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /datacrumbs_salloc
799+ DESTINATION
800+ ${DATACRUMBS_INSTALL_BINARYDIR}
801+ )
802+
803+
778804# Create an empty directory at install time
779805install (CODE "file(MAKE_DIRECTORY \"\$ {DATACRUMBS_INSTALL_LIBEXEC}/sbin\" )" )
780806
@@ -795,15 +821,15 @@ if(NOT DATACRUMBS_INCLUSION_PATH STREQUAL "NONE")
795821 set (DATACRUMBS_VARS ${DATACRUMBS_VARS} --inclusion_path ${DATACRUMBS_INCLUSION_PATH} )
796822endif ()
797823
798- add_test (NAME datacrumbs_start COMMAND ${DATACRUMBS_PATH } /datacrumbs start ${DATACRUMBS_HOST} ${DATACRUMBS_VARS} )
824+ add_test (NAME datacrumbs_start COMMAND ${DATACRUMBCMAKE_RUNTIME_OUTPUT_DIRECTORYS_PATH } /datacrumbs start ${DATACRUMBS_HOST} ${DATACRUMBS_VARS} )
799825set_tests_properties (datacrumbs_start PROPERTIES DEPENDS datacrumbs_pretest )
800826set_tests_properties (datacrumbs_start PROPERTIES DEPENDS ${PROJECT_NAME} )
801827
802- add_test (NAME datacrumbs_run COMMAND ${DATACRUMBS_PATH } /datacrumbs run ${DATACRUMBS_HOST} ${DATACRUMBS_VARS} )
828+ add_test (NAME datacrumbs_run COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY } /datacrumbs run ${DATACRUMBS_HOST} ${DATACRUMBS_VARS} )
803829set_tests_properties (datacrumbs_run PROPERTIES DEPENDS datacrumbs_pretest )
804830set_tests_properties (datacrumbs_run PROPERTIES DEPENDS ${PROJECT_NAME} )
805831
806- add_test (NAME datacrumbs_stop COMMAND ${DATACRUMBS_PATH } /datacrumbs stop ${DATACRUMBS_HOST} ${DATACRUMBS_VARS} )
832+ add_test (NAME datacrumbs_stop COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY } /datacrumbs stop ${DATACRUMBS_HOST} ${DATACRUMBS_VARS} )
807833set_tests_properties (datacrumbs_stop PROPERTIES DEPENDS datacrumbs_pretest )
808834set_tests_properties (datacrumbs_stop PROPERTIES DEPENDS ${PROJECT_NAME} )
809835
0 commit comments