3
3
project(pysidebindings)
5
5
cmake_minimum_required(VERSION 2.6)
6
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules/
8
find_package(PythonLibs REQUIRED)
9
find_package(PythonInterpWithDebug REQUIRED)
10
find_package(GeneratorRunner 0.6 REQUIRED)
11
find_package(Shiboken 0.5 REQUIRED)
12
find_package(Qt4 4.5.0 REQUIRED)
14
find_program(XVFB_RUN NAMES xvfb-run)
16
if (NOT ${XVFB_RUN} MATCHES "XVFB_RUN-NOTFOUND")
17
set(XVFB_EXEC ${XVFB_RUN})
18
message("Using xvfb-run to perform QtGui tests.")
21
option(ENABLE_VERSION_SUFFIX "Used to use current version in suffix to generated files. This is used to allow multiples versions installed simultaneous." FALSE)
22
set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" )
23
set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib${LIB_SUFFIX})" FORCE)
25
set(ALTERNATIVE_QT_INCLUDE_DIR "" CACHE PATH "The Alternative value to QT_INCLUDE_DIR. Necessary to fix bug on cmake 2.8 MACOS users")
29
set(CMAKE_CXX_FLAGS "/Zc:wchar_t- /GR /EHsc /DNOCOLOR /DWIN32 /D_WINDOWS /D_SCL_SECURE_NO_WARNINGS")
32
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fvisibility=hidden -Wno-strict-aliasing")
34
set(CMAKE_CXX_FLAGS_DEBUG "-g")
8
35
option(ENABLE_GCC_OPTIMIZATION "Enable specific GCC flags to optimization library size and performance. Only available on Release Mode" 0)
9
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fvisibility=hidden -Wno-strict-aliasing")
10
set(CMAKE_CXX_FLAGS_DEBUG "-g")
11
36
if(ENABLE_GCC_OPTIMIZATION)
12
37
set(CMAKE_BUILD_TYPE Release)
13
38
set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -Os -Wl,-O1")
33
62
message(STATUS "Avoiding protected hack!")
36
find_package(PythonLibs REQUIRED)
37
find_package(PythonInterp REQUIRED)
38
find_package(Shiboken REQUIRED)
39
find_package(Qt4 4.5.0 REQUIRED)
41
65
set(BINDING_NAME PySide)
42
66
set(BINDING_API_MAJOR_VERSION "0")
43
set(BINDING_API_MINOR_VERSION "3")
44
set(BINDING_API_MICRO_VERSION "2")
45
set(BINDING_API_VERSION "${BINDING_API_MAJOR_VERSION}.${BINDING_API_MINOR_VERSION}.${BINDING_API_MICRO_VERSION}")
47
set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" )
48
set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib${LIB_SUFFIX})" FORCE)
50
if (NOT CMAKE_BUILD_TYPE)
51
set(CMAKE_BUILD_TYPE Release)
67
set(BINDING_API_MINOR_VERSION "4")
68
set(BINDING_API_MICRO_VERSION "1")
69
set(BINDING_API_VERSION "${BINDING_API_MAJOR_VERSION}.${BINDING_API_MINOR_VERSION}.${BINDING_API_MICRO_VERSION}" CACHE STRING "PySide version" FORCE)
70
set(PYSIDE_QT_VERSION "${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}" CACHE STRING "Qt version used to compile PySide" FORCE)
71
if(ENABLE_VERSION_SUFFIX)
72
set(pyside_SUFFIX "-${BINDING_API_MAJOR_VERSION}.${BINDING_API_MINOR_VERSION}")
54
75
include(${QT_USE_FILE})
59
80
# Configure OS support
84
set(ENABLE_SIMULATOR "0")
61
86
set(ENABLE_X11 "1")
65
set(AUTO_OS "MAEMO 5")
71
93
set(ENABLE_MAC "1")
77
96
set(ENABLE_WIN "1")
98
elseif(Q_WS_SIMULATOR)
99
set(ENABLE_SIMULATOR "1")
100
set(AUTO_OS "simulator")
80
102
message(FATAL_ERROR "OS not supported")
82
104
message(STATUS "Detected OS: ${AUTO_OS}")
84
112
# Define supported Qt Version
85
113
if(${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} GREATER 6)
86
114
set(SUPPORTED_QT_VERSION 4.7)
91
119
set(BINDING_VERSION ${BINDING_API_VERSION}.${QT_VERSION_MAJOR}.${QT_VERSION_MINOR})
92
find_program(GENERATOR generatorrunner REQUIRED)
95
message(FATAL_ERROR "You need to specify GENERATOR variable (-DGENERATOR=value)")
98
121
# uninstall target
99
122
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake"
113
136
echo "Source package created at ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.bz2.\n"
114
137
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
139
if (NOT SITE_PACKAGE)
141
COMMAND ${PYTHON_EXECUTABLE} -c "from distutils import sysconfig; \\
142
print sysconfig.get_python_lib(1,0,prefix='${CMAKE_INSTALL_PREFIX}')"
143
OUTPUT_VARIABLE SITE_PACKAGE
144
OUTPUT_STRIP_TRAILING_WHITESPACE)
145
if (NOT SITE_PACKAGE)
146
message(FATAL_ERROR "Could not detect Python module installation directory.")
148
message(STATUS "!!! The generated bindings will be installed on ${SITE_PACKAGE}, is it right!?")
152
# Detect if the python libs were compiled in debug mode
117
154
COMMAND ${PYTHON_EXECUTABLE} -c "from distutils import sysconfig; \\
118
print sysconfig.get_python_lib(1,0,prefix='${CMAKE_INSTALL_PREFIX}')"
119
OUTPUT_VARIABLE SITE_PACKAGE
155
print sysconfig.get_config_var('Py_DEBUG')"
156
OUTPUT_VARIABLE PY_DEBUG
120
157
OUTPUT_STRIP_TRAILING_WHITESPACE)
121
if (NOT SITE_PACKAGE)
122
message(FATAL_ERROR "Could not detect Python module installation directory.")
159
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
160
if(NOT PYTHON_DEBUG_LIBRARIES)
161
message(FATAL_ERROR "Python debug library not found. Try compile PySide with -DCMAKE_BUILD_TYPE=Release")
164
message(WARNING "Compiling PySide with debug enabled, but the python executable was not compiled with debug support.")
166
add_definitions("-DPy_DEBUG")
168
set(PYSIDE_PYTHON_LIBRARIES ${PYTHON_DEBUG_LIBRARIES})
170
set(PYSIDE_PYTHON_LIBRARIES ${PYTHON_LIBRARIES})
125
set(GENERATOR_EXTRA_FLAGS --generatorSet=shiboken --enable-parent-ctor-heuristic --enable-pyside-extensions --enable-return-value-heuristic --silent)
174
set(GENERATOR_EXTRA_FLAGS --generatorSet=/usr/lib/generatorrunner/shiboken_generator${SHIBOKEN_POSTFIX}.so --enable-parent-ctor-heuristic --enable-pyside-extensions --enable-return-value-heuristic --silent)