-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathCMakeLists.txt
63 lines (54 loc) · 2.4 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
cmake_minimum_required(VERSION 3.12)
project(scorep_bindings)
option(DEV_MODE "Set this to ON to use CMake. However: NO SUPPORT IS PROVIDED, PIP IS THE SUPPORTED INSTALL MODE" OFF)
if(NOT DEV_MODE)
message(SEND_ERROR
"CMake is only useful to develop this project, no support is provided."
"To install the module properly use pip. See the Readme for details."
"To override this you might set DEV_MODE to ON"
"However: AGAIN NO SUPPORT IS PROVIDED, PIP IS THE SUPPORTED INSTALL MODE")
endif()
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
find_package(Scorep REQUIRED)
find_package(Python REQUIRED COMPONENTS Interpreter Development)
Python_add_library(_bindings
src/methods.cpp src/scorep_bindings.cpp src/scorepy/events.cpp
)
if(Python_VERSION_MAJOR GREATER_EQUAL 3 AND NOT Python_INTERPRETER_ID STREQUAL "PyPy")
target_sources(_bindings PRIVATE
src/classes.cpp
src/scorepy/cInstrumenter.cpp
src/scorepy/pathUtils.cpp
src/scorepy/pythonHelpers.cpp
)
target_compile_definitions(_bindings PRIVATE SCOREPY_ENABLE_CINSTRUMENTER=1)
else()
target_compile_definitions(_bindings PRIVATE SCOREPY_ENABLE_CINSTRUMENTER=0)
endif()
target_link_libraries(_bindings PRIVATE Scorep::Plugin)
target_compile_features(_bindings PRIVATE cxx_std_11)
target_compile_definitions(_bindings PRIVATE PY_SSIZE_T_CLEAN)
target_include_directories(_bindings PRIVATE src)
set_target_properties(_bindings PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/site-packages/scorep
)
add_custom_target(ScorepModule ALL
${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_LIST_DIR}/scorep $<TARGET_FILE_DIR:_bindings>
COMMENT "Copying module files to build tree"
)
enable_testing()
add_test(NAME ScorepPythonTests
COMMAND Python::Interpreter -m pytest
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/test
)
set(pythonPath ${CMAKE_CURRENT_BINARY_DIR}/site-packages)
if(ENV{PYTHONPATH})
string(PREPEND pythonPath "$ENV{PYTHONPATH}:")
endif()
set_tests_properties(ScorepPythonTests PROPERTIES ENVIRONMENT "PYTHONPATH=${pythonPath}")
add_executable(CppTests test/test_pathUtils.cpp src/scorepy/pathUtils.cpp)
target_include_directories(CppTests PRIVATE src)
add_test(NAME CppTests COMMAND CppTests)
set(INSTALL_DIR "lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages")
install(DIRECTORY scorep DESTINATION ${INSTALL_DIR})
install(TARGETS _bindings DESTINATION ${INSTALL_DIR}/scorep)