Skip to content

Commit 3d8c241

Browse files
committed
Bindings build in CMake 3.1-3.14+
1 parent 708f325 commit 3d8c241

File tree

2 files changed

+75
-42
lines changed

2 files changed

+75
-42
lines changed

src/bindings/python/CMakeLists.txt

Lines changed: 48 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
#
77
# Copyright (c) 2008-2014 OpenShot Studios, LLC
88
# <http://www.openshotstudios.com/>. This file is part of
9-
# OpenShot Library (libopenshot), an open-source project dedicated to
10-
# delivering high quality video editing and animation solutions to the
9+
# OpenShot Library (libopenshot), an open-source project dedicated to
10+
# delivering high quality video editing and animation solutions to the
1111
# world. For more information visit <http://www.openshot.org/>.
1212
#
1313
# OpenShot Library (libopenshot) is free software: you can redistribute it
@@ -29,37 +29,56 @@
2929
FIND_PACKAGE(SWIG 2.0 REQUIRED)
3030
INCLUDE(${SWIG_USE_FILE})
3131

32+
### Enable some legacy SWIG behaviors, in newer CMAKE
33+
cmake_policy(SET CMP0078 OLD)
34+
cmake_policy(SET CMP0086 OLD)
35+
3236
FIND_PACKAGE(PythonLibs 3)
3337
FIND_PACKAGE(PythonInterp 3)
34-
IF (PYTHONLIBS_FOUND)
35-
IF (PYTHONINTERP_FOUND)
38+
if (PYTHONLIBS_FOUND AND PYTHONINTERP_FOUND)
39+
40+
### Include Python header files
41+
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})
42+
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
43+
44+
### Enable C++ support in SWIG
45+
set_property(SOURCE openshot.i PROPERTY CPLUSPLUS ON)
46+
set_property(SOURCE openshot.i PROPERTY SWIG_MODULE_NAME openshot)
47+
SET(CMAKE_SWIG_FLAGS "")
48+
49+
### Add the SWIG interface file (which defines all the SWIG methods)
50+
if (CMAKE_VERSION VERSION_LESS 3.8.0)
51+
swig_add_module(pyopenshot python openshot.i)
52+
else()
53+
swig_add_library(pyopenshot LANGUAGE python SOURCES openshot.i)
54+
endif()
55+
56+
### Set output name of target
57+
set_target_properties(${SWIG_MODULE_pyopenshot_REAL_NAME} PROPERTIES
58+
PREFIX "_" OUTPUT_NAME "openshot")
3659

37-
### Include Python header files
38-
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})
39-
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
40-
41-
### Enable C++ support in SWIG
42-
SET_SOURCE_FILES_PROPERTIES(openshot.i PROPERTIES CPLUSPLUS ON)
43-
SET(CMAKE_SWIG_FLAGS "")
44-
45-
### Add the SWIG interface file (which defines all the SWIG methods)
46-
SWIG_ADD_MODULE(openshot python openshot.i)
60+
### Link the new python wrapper library with libopenshot
61+
target_link_libraries(${SWIG_MODULE_pyopenshot_REAL_NAME}
62+
${PYTHON_LIBRARIES} openshot)
4763

48-
### Link the new python wrapper library with libopenshot
49-
SWIG_LINK_LIBRARIES(openshot ${PYTHON_LIBRARIES} openshot)
64+
### FIND THE PYTHON INTERPRETER (AND THE SITE PACKAGES FOLDER)
65+
execute_process ( COMMAND ${PYTHON_EXECUTABLE} -c "\
66+
from distutils.sysconfig import get_python_lib; \
67+
print( get_python_lib( plat_specific=True, prefix='${CMAKE_INSTALL_PREFIX}' ) )"
68+
OUTPUT_VARIABLE _ABS_PYTHON_MODULE_PATH
69+
OUTPUT_STRIP_TRAILING_WHITESPACE )
5070

51-
### FIND THE PYTHON INTERPRETER (AND THE SITE PACKAGES FOLDER)
52-
EXECUTE_PROCESS ( COMMAND ${PYTHON_EXECUTABLE} -c "import site; print(site.getsitepackages()[0])"
53-
OUTPUT_VARIABLE _ABS_PYTHON_MODULE_PATH
54-
OUTPUT_STRIP_TRAILING_WHITESPACE )
55-
GET_FILENAME_COMPONENT(_ABS_PYTHON_MODULE_PATH "${_ABS_PYTHON_MODULE_PATH}" ABSOLUTE)
56-
FILE(RELATIVE_PATH _REL_PYTHON_MODULE_PATH ${CMAKE_INSTALL_PREFIX} ${_ABS_PYTHON_MODULE_PATH})
57-
SET(PYTHON_MODULE_PATH ${_REL_PYTHON_MODULE_PATH})
71+
GET_FILENAME_COMPONENT(_ABS_PYTHON_MODULE_PATH
72+
"${_ABS_PYTHON_MODULE_PATH}" ABSOLUTE)
73+
FILE(RELATIVE_PATH _REL_PYTHON_MODULE_PATH
74+
${CMAKE_INSTALL_PREFIX} ${_ABS_PYTHON_MODULE_PATH})
75+
SET(PYTHON_MODULE_PATH ${_REL_PYTHON_MODULE_PATH})
5876

59-
############### INSTALL HEADERS & LIBRARY ################
60-
### Install Python bindings
61-
INSTALL(TARGETS _openshot DESTINATION ${PYTHON_MODULE_PATH} )
62-
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/openshot.py DESTINATION ${PYTHON_MODULE_PATH} )
77+
############### INSTALL HEADERS & LIBRARY ################
78+
### Install Python bindings
79+
INSTALL(TARGETS ${SWIG_MODULE_pyopenshot_REAL_NAME}
80+
LIBRARY DESTINATION ${PYTHON_MODULE_PATH} )
81+
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/openshot.py
82+
DESTINATION ${PYTHON_MODULE_PATH} )
6383

64-
ENDIF(PYTHONINTERP_FOUND)
65-
ENDIF (PYTHONLIBS_FOUND)
84+
endif ()

src/bindings/ruby/CMakeLists.txt

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
#
77
# Copyright (c) 2008-2014 OpenShot Studios, LLC
88
# <http://www.openshotstudios.com/>. This file is part of
9-
# OpenShot Library (libopenshot), an open-source project dedicated to
10-
# delivering high quality video editing and animation solutions to the
9+
# OpenShot Library (libopenshot), an open-source project dedicated to
10+
# delivering high quality video editing and animation solutions to the
1111
# world. For more information visit <http://www.openshot.org/>.
1212
#
1313
# OpenShot Library (libopenshot) is free software: you can redistribute it
@@ -29,35 +29,49 @@
2929
FIND_PACKAGE(SWIG 2.0 REQUIRED)
3030
INCLUDE(${SWIG_USE_FILE})
3131

32+
### Enable some legacy SWIG behaviors, in newer CMAKE
33+
cmake_policy(SET CMP0078 OLD)
34+
cmake_policy(SET CMP0086 OLD)
35+
3236
FIND_PACKAGE(Ruby)
3337
IF (RUBY_FOUND)
3438

3539
### Include the Ruby header files
3640
INCLUDE_DIRECTORIES(${RUBY_INCLUDE_DIRS})
3741
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
38-
42+
3943
### Enable C++ in SWIG
40-
SET_SOURCE_FILES_PROPERTIES(openshot.i PROPERTIES CPLUSPLUS ON)
44+
set_property(SOURCE openshot.i PROPERTY CPLUSPLUS ON)
45+
set_property(SOURCE openshot.i PROPERTY SWIG_MODULE_NAME openshot)
46+
4147
SET(CMAKE_SWIG_FLAGS "")
4248

4349
### Add the SWIG interface file (which defines all the SWIG methods)
44-
SWIG_ADD_MODULE(rbopenshot ruby openshot.i)
45-
50+
if (CMAKE_VERSION VERSION_LESS 3.8.0)
51+
swig_add_module(rbopenshot ruby openshot.i)
52+
else()
53+
swig_add_library(rbopenshot LANGUAGE ruby SOURCES openshot.i)
54+
endif()
55+
4656
### Set name of target (with no prefix, since Ruby does not like that)
47-
SET_TARGET_PROPERTIES(rbopenshot PROPERTIES PREFIX "" OUTPUT_NAME "openshot")
57+
SET_TARGET_PROPERTIES(${SWIG_MODULE_rbopenshot_REAL_NAME} PROPERTIES
58+
PREFIX "" OUTPUT_NAME "openshot")
4859

4960
### Link the new Ruby wrapper library with libopenshot
50-
SWIG_LINK_LIBRARIES(rbopenshot ${RUBY_LIBRARY} openshot)
51-
61+
target_link_libraries(${SWIG_MODULE_rbopenshot_REAL_NAME}
62+
${RUBY_LIBRARY} openshot)
63+
5264
### FIND THE RUBY INTERPRETER (AND THE LOAD_PATH FOLDER)
53-
EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print RbConfig::CONFIG['vendorarchdir']" OUTPUT_VARIABLE RUBY_VENDOR_ARCH_DIR)
65+
EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE}
66+
-r rbconfig -e "print RbConfig::CONFIG['vendorarchdir']"
67+
OUTPUT_VARIABLE RUBY_VENDOR_ARCH_DIR)
5468
MESSAGE(STATUS "Ruby executable: ${RUBY_EXECUTABLE}")
5569
MESSAGE(STATUS "Ruby vendor arch dir: ${RUBY_VENDOR_ARCH_DIR}")
5670
MESSAGE(STATUS "Ruby include path: ${RUBY_INCLUDE_PATH}")
57-
5871

5972
############### INSTALL HEADERS & LIBRARY ################
6073
# Install Ruby bindings
61-
INSTALL(TARGETS rbopenshot LIBRARY DESTINATION ${RUBY_VENDOR_ARCH_DIR})
62-
74+
install(TARGETS ${SWIG_MODULE_rbopenshot_REAL_NAME}
75+
LIBRARY DESTINATION ${RUBY_VENDOR_ARCH_DIR} )
76+
6377
ENDIF (RUBY_FOUND)

0 commit comments

Comments
 (0)