blob: 18e695b9cc217d9b89e11eb649c17a8ad883eea7 (
plain)
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
64
65
66
67
68
69
70
71
|
include_directories(${CMAKE_SOURCE_DIR}/include)
include_directories(${CMAKE_BINARY_DIR}/include)
find_package(SWIG QUIET)
if (NOT SWIG_FOUND)
message(STATUS "Install SWIG to enable bindings for other languages")
else ()
set(DISABLE_SWIG FALSE CACHE BOOL "Disable SWIG support")
if (NOT DISABLE_SWIG)
message(STATUS "SWIG support enabled")
include(${SWIG_USE_FILE})
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
set(CMAKE_SWIG_FLAGS "")
find_package(PythonInterp QUIET)
find_package(PythonLibs QUIET)
if (NOT PYTHONLIBS_FOUND OR NOT PYTHONINTERP_FOUND)
message(STATUS "Python not found: Python bindings will not be built")
else ()
message(STATUS "Python found: Python bindings will be built")
include_directories(${PYTHON_INCLUDE_PATH})
# Python assumes C99 since Python 3.6
test_and_set_c_compiler_flag_global(-std=c99)
# SWIG generates code for varargs with an unused parameter
test_and_set_c_compiler_flag_global(-Wno-unused-parameter)
# CMake > 3.8 deprecates swig_add_module
if (${CMAKE_VERSION} VERSION_LESS 3.8.0)
swig_add_module(ouroboros python ouroboros.i)
else ()
swig_add_library(ouroboros
LANGUAGE python
SOURCES ouroboros.i
TYPE MODULE)
endif()
swig_link_libraries(ouroboros ${PYTHON_LIBRARIES} ouroboros-common
ouroboros-dev ouroboros-irm)
# Installation directives
if (CMAKE_INSTALL_PREFIX STREQUAL "")
execute_process(
COMMAND ${PYTHON_EXECUTABLE} -c
"from distutils import sysconfig; print(sysconfig.get_python_lib())"
OUTPUT_VARIABLE PYTHON_MODULE_PATH
OUTPUT_STRIP_TRAILING_WHITESPACE)
else ()
execute_process(
COMMAND ${PYTHON_EXECUTABLE} -c
"from distutils import sysconfig; print(sysconfig.get_python_lib(plat_specific=True, prefix='${CMAKE_INSTALL_PREFIX}'))"
OUTPUT_VARIABLE _ABS_PYTHON_MODULE_PATH
OUTPUT_STRIP_TRAILING_WHITESPACE)
get_filename_component(_ABS_PYTHON_MODULE_PATH
${_ABS_PYTHON_MODULE_PATH} ABSOLUTE)
file(RELATIVE_PATH PYTHON_MODULE_PATH
${CMAKE_INSTALL_PREFIX} ${_ABS_PYTHON_MODULE_PATH})
endif ()
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/${SWIG_MODULE_ouroboros_REAL_NAME}.so
DESTINATION ${PYTHON_MODULE_PATH})
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ouroboros.py
DESTINATION ${PYTHON_MODULE_PATH})
endif ()
else ()
message(STATUS "SWIG support disabled by user")
endif ()
endif ()
mark_as_advanced(SWIG_EXECUTABLE)
|