Python support (#37)
* Initial python support * Add python testing * Increase timeout for bin tests * cmake-format * Valid build types + testing + formatting + more - Enforce valid build types - Fix to numpy install - Increase testing timeout - Fix to cmake format glob - Fix to backtrace verbose * Disable stripping libraries by default * omnitrace exe updates - new '--print-instructions' option - changed format of instructions in JSON - remove no-save-fpr tests * Default to strip libraries when release build
Tento commit je obsažen v:
@@ -21,6 +21,15 @@ omnitrace_add_option(OMNITRACE_USE_COMPILE_TIMING
|
||||
omnitrace_add_option(OMNITRACE_USE_COVERAGE "Build with code-coverage flags" OFF)
|
||||
omnitrace_add_option(OMNITRACE_USE_SANITIZER
|
||||
"Build with -fsanitze=\${OMNITRACE_SANITIZER_TYPE}" OFF)
|
||||
omnitrace_add_option(OMNITRACE_BUILD_STATIC_LIBGCC
|
||||
"Build with -static-libgcc if possible" OFF)
|
||||
omnitrace_add_option(OMNITRACE_BUILD_STATIC_LIBSTDCXX
|
||||
"Build with -static-libstdc++ if possible" OFF)
|
||||
|
||||
omnitrace_add_interface_library(omnitrace-static-libgcc
|
||||
"Link to static version of libgcc")
|
||||
omnitrace_add_interface_library(omnitrace-static-libstdcxx
|
||||
"Link to static version of libstdc++")
|
||||
|
||||
target_compile_definitions(omnitrace-compile-options INTERFACE $<$<CONFIG:DEBUG>:DEBUG>)
|
||||
|
||||
@@ -285,6 +294,17 @@ if(MSVC)
|
||||
add_flag_if_avail("/DEBUG")
|
||||
endif()
|
||||
|
||||
# ----------------------------------------------------------------------------------------#
|
||||
# static lib flags
|
||||
#
|
||||
target_compile_options(
|
||||
omnitrace-static-libgcc
|
||||
INTERFACE $<$<COMPILE_LANGUAGE:C>:$<$<C_COMPILER_ID:GNU>:-static-libgcc>>
|
||||
$<$<COMPILE_LANGUAGE:CXX>:$<$<CXX_COMPILER_ID:GNU>:-static-libgcc>>)
|
||||
target_compile_options(
|
||||
omnitrace-static-libstdcxx
|
||||
INTERFACE $<$<COMPILE_LANGUAGE:CXX>:$<$<CXX_COMPILER_ID:GNU>:-static-libstdc++>>)
|
||||
|
||||
# ----------------------------------------------------------------------------------------#
|
||||
# user customization
|
||||
#
|
||||
|
||||
@@ -85,6 +85,12 @@ if(OMNITRACE_USE_MPI)
|
||||
"${OMNITRACE_CPACK_PACKAGE_SUFFIX}-${OMNITRACE_MPI_IMPL_UPPER}")
|
||||
endif()
|
||||
|
||||
if(OMNITRACE_USE_PYTHON)
|
||||
string(REPLACE "." "" OMNITRACE_CPACK_PYTHON_VERSION "PY${OMNITRACE_PYTHON_VERSION}")
|
||||
set(OMNITRACE_CPACK_PACKAGE_SUFFIX
|
||||
"${OMNITRACE_CPACK_PACKAGE_SUFFIX}-${OMNITRACE_CPACK_PYTHON_VERSION}")
|
||||
endif()
|
||||
|
||||
set(CPACK_PACKAGE_FILE_NAME
|
||||
"${CPACK_PACKAGE_NAME}-${OMNITRACE_VERSION}-${OMNITRACE_CPACK_SYSTEM_NAME}${OMNITRACE_CPACK_PACKAGE_SUFFIX}"
|
||||
)
|
||||
|
||||
@@ -50,9 +50,14 @@ if(OMNITRACE_CLANG_FORMAT_EXE)
|
||||
file(GLOB_RECURSE examples ${PROJECT_SOURCE_DIR}/examples/*.cpp
|
||||
${PROJECT_SOURCE_DIR}/examples/*.hpp)
|
||||
file(GLOB_RECURSE external ${PROJECT_SOURCE_DIR}/examples/lulesh/external/kokkos/*)
|
||||
file(GLOB_RECURSE cmake_files ${PROJECT_SOURCE_DIR}/source/*CMakeLists.txt
|
||||
${PROJECT_SOURCE_DIR}/examples/*CMakeLists.txt
|
||||
${PROJECT_SOURCE_DIR}/tests/*CMakeLists.txt ${PROJECT_SOURCE_DIR}/cmake/*.cmake)
|
||||
file(
|
||||
GLOB_RECURSE
|
||||
cmake_files
|
||||
${PROJECT_SOURCE_DIR}/source/*CMakeLists.txt
|
||||
${PROJECT_SOURCE_DIR}/examples/*CMakeLists.txt
|
||||
${PROJECT_SOURCE_DIR}/tests/*CMakeLists.txt
|
||||
${PROJECT_SOURCE_DIR}/cmake/*.cmake
|
||||
${PROJECT_SOURCE_DIR}/source/*.cmake)
|
||||
list(APPEND cmake_files ${PROJECT_SOURCE_DIR}/CMakeLists.txt)
|
||||
if(external)
|
||||
list(REMOVE_ITEM examples ${external})
|
||||
|
||||
@@ -107,6 +107,36 @@ function(OMNITRACE_CAPITALIZE str var)
|
||||
PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# ------------------------------------------------------------------------------#
|
||||
# function omnitrace_strip_target()
|
||||
#
|
||||
# Creates a target which runs ctest but depends on all the tests being built.
|
||||
#
|
||||
function(OMNITRACE_STRIP_TARGET _TARGET)
|
||||
if(CMAKE_STRIP AND OMNITRACE_STRIP_LIBRARIES)
|
||||
add_custom_command(
|
||||
TARGET ${_TARGET}
|
||||
POST_BUILD
|
||||
COMMAND
|
||||
${CMAKE_STRIP} --keep-symbol="omnitrace_init"
|
||||
--keep-symbol="omnitrace_finalize" --keep-symbol="omnitrace_push_trace"
|
||||
--keep-symbol="omnitrace_pop_trace" --keep-symbol="omnitrace_push_region"
|
||||
--keep-symbol="omnitrace_pop_region" --keep-symbol="omnitrace_set_env"
|
||||
--keep-symbol="omnitrace_set_mpi" --keep-symbol="omnitrace_user_configure"
|
||||
--keep-symbol="omnitrace_user_get_callbacks"
|
||||
--keep-symbol="omnitrace_user_error_string"
|
||||
--keep-symbol="omnitrace_user_start_trace"
|
||||
--keep-symbol="omnitrace_user_stop_trace"
|
||||
--keep-symbol="omnitrace_user_start_thread_trace"
|
||||
--keep-symbol="omnitrace_user_stop_thread_trace"
|
||||
--keep-symbol="omnitrace_user_push_region"
|
||||
--keep-symbol="omnitrace_user_pop_region" --keep-symbol="ompt_start_tool"
|
||||
${ARGN} $<TARGET_FILE:${_TARGET}>
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
COMMENT "Stripping ${_TARGET}...")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# ------------------------------------------------------------------------------#
|
||||
# function add_omnitrace_test_target()
|
||||
#
|
||||
|
||||
@@ -20,6 +20,7 @@ omnitrace_add_interface_library(omnitrace-rocm-smi
|
||||
"Provides flags and libraries for rocm-smi")
|
||||
omnitrace_add_interface_library(omnitrace-mpi "Provides MPI or MPI headers")
|
||||
omnitrace_add_interface_library(omnitrace-ptl "Enables PTL support (tasking)")
|
||||
omnitrace_add_interface_library(omnitrace-python "Enables Python support")
|
||||
|
||||
target_include_directories(omnitrace-headers INTERFACE ${PROJECT_SOURCE_DIR}/include
|
||||
${PROJECT_BINARY_DIR}/include)
|
||||
@@ -303,6 +304,34 @@ else()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# ----------------------------------------------------------------------------------------#
|
||||
#
|
||||
# Modify CMAKE_C_FLAGS and CMAKE_CXX_FLAGS with -static-libgcc and -static-libstdc++
|
||||
#
|
||||
# ----------------------------------------------------------------------------------------#
|
||||
|
||||
if(OMNITRACE_BUILD_STATIC_LIBGCC)
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "GNU")
|
||||
omnitrace_save_variables(STATIC_LIBGCC_C VARIABLES CMAKE_C_FLAGS)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static-libgcc")
|
||||
endif()
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
omnitrace_save_variables(STATIC_LIBGCC_CXX VARIABLES CMAKE_CXX_FLAGS)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libgcc")
|
||||
else()
|
||||
set(OMNITRACE_BUILD_STATIC_LIBGCC OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(OMNITRACE_BUILD_STATIC_LIBSTDCXX)
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
omnitrace_save_variables(STATIC_LIBSTDCXX_CXX VARIABLES CMAKE_CXX_FLAGS)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libstdc++")
|
||||
else()
|
||||
set(OMNITRACE_BUILD_STATIC_LIBSTDCXX OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# ----------------------------------------------------------------------------------------#
|
||||
#
|
||||
# Perfetto
|
||||
@@ -492,3 +521,42 @@ endif()
|
||||
|
||||
target_sources(omnitrace-ptl INTERFACE $<TARGET_OBJECTS:PTL::ptl-object>)
|
||||
target_link_libraries(omnitrace-ptl INTERFACE PTL::ptl-object)
|
||||
|
||||
# ----------------------------------------------------------------------------------------#
|
||||
#
|
||||
# Restore the CMAKE_C_FLAGS and CMAKE_CXX_FLAGS in the inverse order
|
||||
#
|
||||
# ----------------------------------------------------------------------------------------#
|
||||
|
||||
if(OMNITRACE_BUILD_STATIC_LIBSTDCXX)
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
omnitrace_restore_variables(STATIC_LIBSTDCXX_CXX VARIABLES CMAKE_CXX_FLAGS)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(OMNITRACE_BUILD_STATIC_LIBGCC)
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "GNU")
|
||||
omnitrace_restore_variables(STATIC_LIBGCC_C VARIABLES CMAKE_C_FLAGS)
|
||||
endif()
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
omnitrace_restore_variables(STATIC_LIBGCC_CXX VARIABLES CMAKE_CXX_FLAGS)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
omnitrace_add_feature(CMAKE_C_FLAGS "C compiler flags")
|
||||
omnitrace_add_feature(CMAKE_CXX_FLAGS "C++ compiler flags")
|
||||
|
||||
# ----------------------------------------------------------------------------------------#
|
||||
#
|
||||
# Python
|
||||
#
|
||||
# ----------------------------------------------------------------------------------------#
|
||||
|
||||
if(OMNITRACE_USE_PYTHON)
|
||||
if(OMNITRACE_USE_PYTHON AND NOT OMNITRACE_BUILD_PYTHON)
|
||||
find_package(pybind11 REQUIRED)
|
||||
endif()
|
||||
|
||||
list(INSERT CMAKE_MODULE_PATH 0 ${PROJECT_SOURCE_DIR}/source/python/cmake)
|
||||
include(ConfigPython)
|
||||
endif()
|
||||
|
||||
Spustitelný soubor
+17
@@ -0,0 +1,17 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
export PYTHONPATH=$(cd $(dirname ${BASH_SOURCE[0]})/../@CMAKE_INSTALL_PYTHONDIR@ && pwd):${PYTHONPATH}
|
||||
|
||||
: ${PYTHON_EXECUTABLE:=@PYTHON_EXECUTABLE@}
|
||||
|
||||
if [ ! -f ${PYTHON_EXECUTABLE} ]; then PYTHON_EXECUTABLE=$(basename ${PYTHON_EXECUTABLE}); fi
|
||||
|
||||
set -e
|
||||
|
||||
run-script()
|
||||
{
|
||||
echo -e "\n##### omnitrace :: executing '${@}'... #####\n"
|
||||
eval $@
|
||||
}
|
||||
|
||||
run-script ${PYTHON_EXECUTABLE} -m @SCRIPT_SUBMODULE@ $@
|
||||
@@ -10,6 +10,8 @@ fi
|
||||
|
||||
PATH=${BASEDIR}/bin:${PATH}
|
||||
LD_LIBRARY_PATH=${BASEDIR}/@CMAKE_INSTALL_LIBDIR@:${LD_LIBRARY_PATH}
|
||||
PYTHONPATH=${BASE_DIR}/@CMAKE_INSTALL_PYTHONDIR@:${PYTHONPATH}
|
||||
|
||||
export PATH
|
||||
export LD_LIBRARY_PATH
|
||||
export PYTHONPATH
|
||||
|
||||
Odkázat v novém úkolu
Zablokovat Uživatele