aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorLaurent Montel <montel@kde.org>2008-10-20 07:20:35 +0000
committerLaurent Montel <montel@kde.org>2008-10-20 07:20:35 +0000
commit03c70a763abcb8487632533e8c4c81d0fe9c1ced (patch)
tree8e3cfbab393e96cf5cc0b026ae79be38ce5094c6 /modules
parentfb272057e078bd4e9798c487dcc0b0d4ffb523b1 (diff)
downloadextra-cmake-modules-03c70a763abcb8487632533e8c4c81d0fe9c1ced.tar.gz
extra-cmake-modules-03c70a763abcb8487632533e8c4c81d0fe9c1ced.tar.bz2
Move py file here too
svn path=/trunk/KDE/kdelibs/; revision=873788
Diffstat (limited to 'modules')
-rw-r--r--modules/CMakeLists.txt3
-rw-r--r--modules/FindPyKDE4.cmake157
-rw-r--r--modules/FindPyQt.py22
-rw-r--r--modules/FindPyQt4.cmake49
4 files changed, 230 insertions, 1 deletions
diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt
index 3751cd50..f9b305db 100644
--- a/modules/CMakeLists.txt
+++ b/modules/CMakeLists.txt
@@ -1,10 +1,11 @@
## install the cmake files
file(GLOB cmakeFiles "${CMAKE_CURRENT_SOURCE_DIR}/*.cmake")
+file(GLOB pyfiles "${CMAKE_CURRENT_SOURCE_DIR}/*.py")
set(module_install_dir ${DATA_INSTALL_DIR}/cmake/modules )
-install( FILES cmake-modules-styleguide.txt kde4init_dummy.cpp.in kde4init_win32lib_dummy.cpp.in kde4_cmake_uninstall.cmake.in kde4automoc.files.in ${cmakeFiles} FindSIP.py
+install( FILES cmake-modules-styleguide.txt kde4init_dummy.cpp.in kde4init_win32lib_dummy.cpp.in kde4_cmake_uninstall.cmake.in kde4automoc.files.in ${cmakeFiles} ${pyfiles}
DESTINATION ${module_install_dir} )
# the files listed here will be removed by remove_obsoleted_cmake_files.cmake, Alex
diff --git a/modules/FindPyKDE4.cmake b/modules/FindPyKDE4.cmake
new file mode 100644
index 00000000..bb28bf2b
--- /dev/null
+++ b/modules/FindPyKDE4.cmake
@@ -0,0 +1,157 @@
+# FindPyKDE4
+#
+# Checks that Python and PyKDE4 are installed and defines a couple macros:
+# * PYKDE4_INSTALL_PYTHON_FILES
+# * PYKDE4_ADD_UI_FILES
+# * PYKDE4_ADD_EXECUTABLE
+# By Simon Edwards <simon@simonzone.com>
+# This file is in the public domain.
+
+INCLUDE(FindPythonInterp)
+
+SET(PYKDE4_FOUND FALSE)
+
+IF(PYTHONINTERP_FOUND)
+ EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/FindPyKDE4.py OUTPUT_VARIABLE pykde_config)
+ IF(NOT pykde_config)
+ # Failure to run
+ SET(PYKDE4_FOUND FALSE)
+ ELSE(NOT pykde_config)
+
+ STRING(REGEX REPLACE ".*\npykde_version:([^\n]+).*$" "\\1" PYKDE4_VERSION ${pykde_config})
+ STRING(REGEX REPLACE ".*\npykde_version_str:([^\n]+).*$" "\\1" PYKDE4_VERSION_STR ${pykde_config})
+ STRING(REGEX REPLACE ".*\npykde_kde_sip_flags:([^\n]+).*$" "\\1" PYKDE4_SIP_FLAGS ${pykde_config})
+ STRING(REGEX REPLACE ".*\npykde_sip_dir:([^\n]+).*$" "\\1" PYKDE4_SIP_DIR ${pykde_config})
+ STRING(REGEX REPLACE ".*\npykde_version_tag:([^\n]+).*$" "\\1" PYKDE4_VERSION_TAG ${pykde_config})
+ MESSAGE(STATUS "Found PyKDE4 version ${PYKDE4_VERSION_STR} ${PYKDE4_SIP_DIR}")
+
+ SET(PYKDE4_FOUND TRUE)
+
+ # PyKDE4 doesn't install pykdeuic4 when installing via CMake.
+ # Fortunately pykdeuic4 isn't needed by pate.
+ #
+ ## FIND_PROGRAM(PYKDE4_PYKDEUIC_EXE pykdeuic4 PATHS)# ${PYKDE4_BIN_DIR})
+ ## IF(NOT PYKDE4_PYKDEUIC_EXE)
+ ## MESSAGE(FATAL_ERROR "ERROR: Could not find pykdeuic4 (part of PyKDE4)")
+ ## ENDIF(NOT PYKDE4_PYKDEUIC_EXE)
+
+ ###########################################################################
+ # This comes mostly from KDE's FindKDE4Internal.cmake
+
+ macro(_SET_FANCY _var _value _comment)
+ set(predefinedvalue "${_value}")
+ if ("${CMAKE_INSTALL_PREFIX}" STREQUAL "${KDE4_INSTALL_DIR}" AND DEFINED KDE4_${_var})
+ set(predefinedvalue "${KDE4_${_var}}")
+ endif ("${CMAKE_INSTALL_PREFIX}" STREQUAL "${KDE4_INSTALL_DIR}" AND DEFINED KDE4_${_var})
+
+ if (NOT DEFINED ${_var})
+ set(${_var} ${predefinedvalue})
+ else (NOT DEFINED ${_var})
+ set(${_var} "${${_var}}" CACHE PATH "${_comment}")
+ endif (NOT DEFINED ${_var})
+ endmacro(_SET_FANCY)
+
+ if (WIN32)
+ # use relative install prefix to avoid hardcoded install pathes in cmake_install.cmake files
+ _set_fancy(EXEC_INSTALL_PREFIX "" "Base directory for executables and libraries")
+ _set_fancy(SHARE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/share" "Base directory for files which go to share/")
+ _set_fancy(BIN_INSTALL_DIR "bin" "The install dir for executables (default ${EXEC_INSTALL_PREFIX}/bin)")
+ _set_fancy(SBIN_INSTALL_DIR "sbin" "The install dir for system executables (default ${EXEC_INSTALL_PREFIX}/sbin)")
+ else (WIN32)
+ _set_fancy(EXEC_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" "Base directory for executables and libraries")
+ _set_fancy(SHARE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/share" "Base directory for files which go to share/")
+ _set_fancy(BIN_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/bin" "The install dir for executables (default ${EXEC_INSTALL_PREFIX}/bin)")
+ _set_fancy(SBIN_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/sbin" "The install dir for system executables (default ${EXEC_INSTALL_PREFIX}/sbin)")
+ endif (WIN32)
+
+ _set_fancy(PLUGIN_INSTALL_DIR "${LIB_INSTALL_DIR}/kde4" "The subdirectory relative to the install prefix where plugins will be installed (default is ${LIB_INSTALL_DIR}/kde4)")
+ _set_fancy(CONFIG_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/config" "The config file install dir")
+ _set_fancy(DATA_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/apps" "The parent directory where applications can install their data")
+ _set_fancy(HTML_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/doc/HTML" "The HTML install dir for documentation")
+ _set_fancy(ICON_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/icons" "The icon install dir (default ${SHARE_INSTALL_PREFIX}/share/icons/)")
+ _set_fancy(KCFG_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/config.kcfg" "The install dir for kconfig files")
+ _set_fancy(LOCALE_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/locale" "The install dir for translations")
+ _set_fancy(MIME_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/mimelnk" "The install dir for the mimetype desktop files")
+ _set_fancy(SERVICES_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/kde4/services" "The install dir for service (desktop, protocol, ...) files")
+ _set_fancy(SERVICETYPES_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/kde4/servicetypes" "The install dir for servicestypes desktop files")
+ _set_fancy(SOUND_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/sounds" "The install dir for sound files")
+ _set_fancy(TEMPLATES_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/templates" "The install dir for templates (Create new file...)")
+ _set_fancy(WALLPAPER_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/wallpapers" "The install dir for wallpapers")
+ _set_fancy(KCONF_UPDATE_INSTALL_DIR "${DATA_INSTALL_DIR}/kconf_update" "The kconf_update install dir")
+ # this one shouldn't be used anymore
+ _set_fancy(APPLNK_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/applnk" "Is this still used ?")
+ _set_fancy(AUTOSTART_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/autostart" "The install dir for autostart files")
+
+ _set_fancy(XDG_APPS_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/applications/kde4" "The XDG apps dir")
+ _set_fancy(XDG_DIRECTORY_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/desktop-directories" "The XDG directory")
+ _set_fancy(XDG_MIME_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/mime/packages" "The install dir for the xdg mimetypes")
+
+ _set_fancy(SYSCONF_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/etc" "The kde sysconfig install dir (default /etc)")
+ _set_fancy(MAN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/man" "The kde man install dir (default ${CMAKE_INSTALL_PREFIX}/man/)")
+ _set_fancy(INFO_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/info" "The kde info install dir (default ${CMAKE_INSTALL_PREFIX}/info)")
+ _set_fancy(DBUS_INTERFACES_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/dbus-1/interfaces" "The kde dbus interfaces install dir (default ${SHARE_INSTALL_PREFIX}/dbus-1/interfaces)")
+ _set_fancy(DBUS_SERVICES_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/dbus-1/services" "The kde dbus services install dir (default ${SHARE_INSTALL_PREFIX}/dbus-1/services)")
+
+ ENDIF(NOT pykde_config)
+ENDIF(PYTHONINTERP_FOUND)
+
+###########################################################################
+# PYKDE4_INSTALL_PYTHON_FILES(file_name...)
+#
+# Installs and bytes compiles Python files into the data directory for this
+# project..
+#
+MACRO(PYKDE4_INSTALL_PYTHON_FILES)
+
+ ADD_CUSTOM_TARGET(pysupport ALL)
+ FOREACH (_current_file ${ARGN})
+
+ # Install the source file.
+ INSTALL(FILES ${_current_file} DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME})
+
+ # Byte compile and install the .pyc file.
+ GET_FILENAME_COMPONENT(_absfilename ${_current_file} ABSOLUTE)
+ GET_FILENAME_COMPONENT(_filename ${_current_file} NAME)
+ GET_FILENAME_COMPONENT(_filenamebase ${_current_file} NAME_WE)
+ GET_FILENAME_COMPONENT(_basepath ${_current_file} PATH)
+ SET(_bin_py ${CMAKE_BINARY_DIR}/${_basepath}/${_filename})
+ SET(_bin_pyc ${CMAKE_BINARY_DIR}/${_basepath}/${_filenamebase}.pyc)
+
+ FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${_basepath})
+
+ SET(_message "-DMESSAGE=Byte-compiling ${_bin_py}")
+
+ GET_FILENAME_COMPONENT(_abs_bin_py ${_bin_py} ABSOLUTE)
+ IF(_abs_bin_py STREQUAL ${_absfilename}) # Don't copy the file onto itself.
+ ADD_CUSTOM_COMMAND(
+ TARGET pysupport
+ COMMAND ${CMAKE_COMMAND} ${_message} -P ${CMAKE_SOURCE_DIR}/cmake/modules/print_status.cmake
+ COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/cmake/modules/PythonCompile.py ${_bin_py}
+ DEPENDS ${_absfilename}
+ )
+ ELSE(_abs_bin_py STREQUAL ${_absfilename})
+ ADD_CUSTOM_COMMAND(
+ TARGET pysupport
+ COMMAND ${CMAKE_COMMAND} ${_message} -P ${CMAKE_SOURCE_DIR}/cmake/modules/print_status.cmake
+ COMMAND ${CMAKE_COMMAND} -E copy ${_absfilename} ${_bin_py}
+ COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/cmake/modules/PythonCompile.py ${_bin_py}
+ DEPENDS ${_absfilename}
+ )
+ ENDIF(_abs_bin_py STREQUAL ${_absfilename})
+
+ INSTALL(FILES ${_bin_pyc} DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME})
+
+ ENDFOREACH (_current_file)
+ENDMACRO(PYKDE4_INSTALL_PYTHON_FILES)
+
+
+###########################################################################
+# PYKDE4_ADD_EXECUTABLE(py_name exe_name)
+#
+# Creates a smybolic link with name exe_name at install time from the
+# install bin directory to the Python file. The Python file is also make
+# executable.
+#
+MACRO(PYKDE4_ADD_EXECUTABLE _pyname _exename)
+ INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -DTARGET=${DATA_INSTALL_DIR}/${PROJECT_NAME}/${_pyname} -DLINK_NAME=${BIN_INSTALL_DIR}/${_exename} -P ${CMAKE_SOURCE_DIR}/cmake/modules/create_exe_symlink.cmake)" )
+ENDMACRO(PYKDE4_ADD_EXECUTABLE)
diff --git a/modules/FindPyQt.py b/modules/FindPyQt.py
new file mode 100644
index 00000000..1978f2d8
--- /dev/null
+++ b/modules/FindPyQt.py
@@ -0,0 +1,22 @@
+# Copyright (c) 2007, Simon Edwards <simon@simonzone.com>
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+import PyQt4.pyqtconfig
+
+pyqtcfg = PyQt4.pyqtconfig.Configuration()
+print("pyqt_version:%06.0x" % pyqtcfg.pyqt_version)
+print("pyqt_version_str:%s" % pyqtcfg.pyqt_version_str)
+
+pyqt_version_tag = ""
+in_t = False
+for item in pyqtcfg.pyqt_sip_flags.split(' '):
+ if item=="-t":
+ in_t = True
+ elif in_t:
+ if item.startswith("Qt_4"):
+ pyqt_version_tag = item
+ else:
+ in_t = False
+print("pyqt_version_tag:%s" % pyqt_version_tag)
+
+print("pyqt_sip_dir:%s" % pyqtcfg.pyqt_sip_dir)
diff --git a/modules/FindPyQt4.cmake b/modules/FindPyQt4.cmake
new file mode 100644
index 00000000..68a82cbc
--- /dev/null
+++ b/modules/FindPyQt4.cmake
@@ -0,0 +1,49 @@
+# Find PyQt4
+# ~~~~~~~~~~
+# Copyright (c) 2007-2008, Simon Edwards <simon@simonzone.com>
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+#
+# PyQt4 website: http://www.riverbankcomputing.co.uk/pyqt/index.php
+#
+# Find the installed version of PyQt4. FindPyQt4 should only be called after
+# Python has been found.
+#
+# This file defines the following variables:
+#
+# PYQT4_VERSION - The version of PyQt4 found expressed as a 6 digit hex number
+# suitable for comparision as a string
+#
+# PYQT4_VERSION_STR - The version of PyQt4 as a human readable string.
+#
+# PYQT4_VERSION_TAG - The PyQt version tag using by PyQt's sip files.
+#
+# PYQT4_SIP_DIR - The directory holding the PyQt4 .sip files.
+
+IF(EXISTS PYQT4_VERSION)
+ # Already in cache, be silent
+ SET(PYQT4_FOUND TRUE)
+ELSE(EXISTS PYQT4_VERSION)
+
+ FIND_FILE(_find_pyqt_py FindPyQt.py PATHS ${CMAKE_MODULE_PATH})
+
+ EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ${_find_pyqt_py} OUTPUT_VARIABLE pyqt_config)
+ IF(pyqt_config)
+ STRING(REGEX REPLACE "^pyqt_version:([^\n]+).*$" "\\1" PYQT4_VERSION ${pyqt_config})
+ STRING(REGEX REPLACE ".*\npyqt_version_str:([^\n]+).*$" "\\1" PYQT4_VERSION_STR ${pyqt_config})
+ STRING(REGEX REPLACE ".*\npyqt_version_tag:([^\n]+).*$" "\\1" PYQT4_VERSION_TAG ${pyqt_config})
+ STRING(REGEX REPLACE ".*\npyqt_sip_dir:([^\n]+).*$" "\\1" PYQT4_SIP_DIR ${pyqt_config})
+ SET(PYQT4_FOUND TRUE)
+ ENDIF(pyqt_config)
+
+ IF(PYQT4_FOUND)
+ IF(NOT PYQT4_FIND_QUIETLY)
+ MESSAGE(STATUS "Found PyQt4 version: ${PYQT4_VERSION_STR}")
+ ENDIF(NOT PYQT4_FIND_QUIETLY)
+ ELSE(PYQT4_FOUND)
+ IF(PYQT4_FIND_REQUIRED)
+ MESSAGE(FATAL_ERROR "Could not find Python")
+ ENDIF(PYQT4_FIND_REQUIRED)
+ ENDIF(PYQT4_FOUND)
+
+ENDIF(EXISTS PYQT4_VERSION)