* 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:
Jonathan R. Madsen
2022-04-05 00:24:34 -05:00
odevzdal GitHub
rodič 945f541965
revize afa3edebab
42 změnil soubory, kde provedl 2442 přidání a 239 odebrání
+20
Zobrazit soubor
@@ -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
#
+6
Zobrazit soubor
@@ -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}"
)
+8 -3
Zobrazit soubor
@@ -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})
+30
Zobrazit soubor
@@ -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()
#
+68
Zobrazit soubor
@@ -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()
+17
Zobrazit soubor
@@ -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@ $@
+2
Zobrazit soubor
@@ -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