From 03c70a763abcb8487632533e8c4c81d0fe9c1ced Mon Sep 17 00:00:00 2001 From: Laurent Montel Date: Mon, 20 Oct 2008 07:20:35 +0000 Subject: Move py file here too svn path=/trunk/KDE/kdelibs/; revision=873788 --- modules/FindPyKDE4.cmake | 157 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 modules/FindPyKDE4.cmake (limited to 'modules/FindPyKDE4.cmake') 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 +# 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) -- cgit v1.2.1 From fa783146c78a1b52b1c95eba9cd9e2d37f021b50 Mon Sep 17 00:00:00 2001 From: Laurent Montel Date: Mon, 20 Oct 2008 07:42:11 +0000 Subject: Use cmake path svn path=/trunk/KDE/kdelibs/; revision=873804 --- modules/FindPyKDE4.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'modules/FindPyKDE4.cmake') diff --git a/modules/FindPyKDE4.cmake b/modules/FindPyKDE4.cmake index bb28bf2b..7dc592db 100644 --- a/modules/FindPyKDE4.cmake +++ b/modules/FindPyKDE4.cmake @@ -12,7 +12,7 @@ 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) + EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ${DATA_INSTALL_DIR}/cmake/modules/FindPyKDE4.py OUTPUT_VARIABLE pykde_config) IF(NOT pykde_config) # Failure to run SET(PYKDE4_FOUND FALSE) -- cgit v1.2.1 From dc691a93575f3ab9151048afec53d3cad907d317 Mon Sep 17 00:00:00 2001 From: Laurent Montel Date: Tue, 21 Oct 2008 06:39:09 +0000 Subject: Use get_filename_component to find cmake path svn path=/trunk/KDE/kdelibs/; revision=874279 --- modules/FindPyKDE4.cmake | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'modules/FindPyKDE4.cmake') diff --git a/modules/FindPyKDE4.cmake b/modules/FindPyKDE4.cmake index 7dc592db..a3654054 100644 --- a/modules/FindPyKDE4.cmake +++ b/modules/FindPyKDE4.cmake @@ -11,8 +11,10 @@ INCLUDE(FindPythonInterp) SET(PYKDE4_FOUND FALSE) +get_filename_component( current_module_dir ${CMAKE_CURRENT_LIST_FILE} PATH) + IF(PYTHONINTERP_FOUND) - EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ${DATA_INSTALL_DIR}/cmake/modules/FindPyKDE4.py OUTPUT_VARIABLE pykde_config) + EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ${current_module_dir}/FindPyKDE4.py OUTPUT_VARIABLE pykde_config) IF(NOT pykde_config) # Failure to run SET(PYKDE4_FOUND FALSE) @@ -125,16 +127,16 @@ MACRO(PYKDE4_INSTALL_PYTHON_FILES) 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} + COMMAND ${CMAKE_COMMAND} ${_message} -P ${current_module_dir}/print_status.cmake + COMMAND ${PYTHON_EXECUTABLE} ${current_module_dir}/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} ${_message} -P ${current_module_dir}/print_status.cmake COMMAND ${CMAKE_COMMAND} -E copy ${_absfilename} ${_bin_py} - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/cmake/modules/PythonCompile.py ${_bin_py} + COMMAND ${PYTHON_EXECUTABLE} ${current_module_dir}/PythonCompile.py ${_bin_py} DEPENDS ${_absfilename} ) ENDIF(_abs_bin_py STREQUAL ${_absfilename}) -- cgit v1.2.1 From 3ccbe08963ff10657585b2a7ba79825b245c424a Mon Sep 17 00:00:00 2001 From: Laurent Montel Date: Tue, 21 Oct 2008 06:46:12 +0000 Subject: Bye bye print_status.cmake svn path=/trunk/KDE/kdelibs/; revision=874282 --- modules/FindPyKDE4.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'modules/FindPyKDE4.cmake') diff --git a/modules/FindPyKDE4.cmake b/modules/FindPyKDE4.cmake index a3654054..fbc34f8b 100644 --- a/modules/FindPyKDE4.cmake +++ b/modules/FindPyKDE4.cmake @@ -127,14 +127,14 @@ MACRO(PYKDE4_INSTALL_PYTHON_FILES) IF(_abs_bin_py STREQUAL ${_absfilename}) # Don't copy the file onto itself. ADD_CUSTOM_COMMAND( TARGET pysupport - COMMAND ${CMAKE_COMMAND} ${_message} -P ${current_module_dir}/print_status.cmake + COMMAND ${CMAKE_COMMAND} -E echo ${message} COMMAND ${PYTHON_EXECUTABLE} ${current_module_dir}/PythonCompile.py ${_bin_py} DEPENDS ${_absfilename} ) ELSE(_abs_bin_py STREQUAL ${_absfilename}) ADD_CUSTOM_COMMAND( TARGET pysupport - COMMAND ${CMAKE_COMMAND} ${_message} -P ${current_module_dir}/print_status.cmake + COMMAND ${CMAKE_COMMAND} -E echo ${message} COMMAND ${CMAKE_COMMAND} -E copy ${_absfilename} ${_bin_py} COMMAND ${PYTHON_EXECUTABLE} ${current_module_dir}/PythonCompile.py ${_bin_py} DEPENDS ${_absfilename} -- cgit v1.2.1 From 87c903a8e853eec433860818a01040da8d1c5f1a Mon Sep 17 00:00:00 2001 From: Alexander Neundorf Date: Sun, 4 Jan 2009 15:39:53 +0000 Subject: -add missing copyright notices, I hope I got it right -also a few empty lines here and there to make it look nicer Alex svn path=/trunk/KDE/kdelibs/; revision=905547 --- modules/FindPyKDE4.cmake | 1 + 1 file changed, 1 insertion(+) (limited to 'modules/FindPyKDE4.cmake') diff --git a/modules/FindPyKDE4.cmake b/modules/FindPyKDE4.cmake index fbc34f8b..f738741e 100644 --- a/modules/FindPyKDE4.cmake +++ b/modules/FindPyKDE4.cmake @@ -4,6 +4,7 @@ # * PYKDE4_INSTALL_PYTHON_FILES # * PYKDE4_ADD_UI_FILES # * PYKDE4_ADD_EXECUTABLE + # By Simon Edwards # This file is in the public domain. -- cgit v1.2.1 From c43b051c975ef76f411342116053da84e0ee3cd3 Mon Sep 17 00:00:00 2001 From: Laurent Montel Date: Sat, 17 Jan 2009 12:19:34 +0000 Subject: Fix create symlink svn path=/trunk/KDE/kdelibs/; revision=912335 --- modules/FindPyKDE4.cmake | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'modules/FindPyKDE4.cmake') diff --git a/modules/FindPyKDE4.cmake b/modules/FindPyKDE4.cmake index f738741e..dd2b7380 100644 --- a/modules/FindPyKDE4.cmake +++ b/modules/FindPyKDE4.cmake @@ -156,5 +156,9 @@ ENDMACRO(PYKDE4_INSTALL_PYTHON_FILES) # 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)" ) + if(NOT ${PROJECT_NAME}) + MESSAGE(STATUS "Project name is necessary to create symlink against python program!!! It will failed.") + endif(NOT ${PROJECT_NAME}) + INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -DTARGET=${DATA_INSTALL_DIR}/${PROJECT_NAME}/${_pyname} -DLINK_NAME=${BIN_INSTALL_DIR}/${_exename} -P ${current_module_dir}/create_exe_symlink.cmake)" ) ENDMACRO(PYKDE4_ADD_EXECUTABLE) + -- cgit v1.2.1 From f22141bb6681a17948dca23a39d0779e9375bde2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=B6kcen=20Eraslan?= Date: Wed, 10 Jun 2009 09:29:49 +0000 Subject: Fix project name control. Previously, condition was always true since there is no variable named printer-applet. CCMAIL: montel@kde.org svn path=/trunk/KDE/kdelibs/; revision=979601 --- modules/FindPyKDE4.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'modules/FindPyKDE4.cmake') diff --git a/modules/FindPyKDE4.cmake b/modules/FindPyKDE4.cmake index dd2b7380..1db7bf08 100644 --- a/modules/FindPyKDE4.cmake +++ b/modules/FindPyKDE4.cmake @@ -156,9 +156,9 @@ ENDMACRO(PYKDE4_INSTALL_PYTHON_FILES) # executable. # MACRO(PYKDE4_ADD_EXECUTABLE _pyname _exename) - if(NOT ${PROJECT_NAME}) - MESSAGE(STATUS "Project name is necessary to create symlink against python program!!! It will failed.") - endif(NOT ${PROJECT_NAME}) + if(NOT PROJECT_NAME) + MESSAGE(STATUS "Project name is necessary to create symlink against python program!!! It will fail.") + endif(NOT PROJECT_NAME) INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -DTARGET=${DATA_INSTALL_DIR}/${PROJECT_NAME}/${_pyname} -DLINK_NAME=${BIN_INSTALL_DIR}/${_exename} -P ${current_module_dir}/create_exe_symlink.cmake)" ) ENDMACRO(PYKDE4_ADD_EXECUTABLE) -- cgit v1.2.1 From aa61ecc62c91611f482e20ce0e58207c116b2858 Mon Sep 17 00:00:00 2001 From: Wolfgang Rohdewald Date: Tue, 12 Apr 2011 04:25:16 +0200 Subject: implement PYKDE4_ADD_EXECUTABLE on windows using a batch file. Windows links would only work if the .py extension is associated with python icons cannot be attached to a batch file - if that is needed, we would need to generate a minimal C program calling python --- modules/FindPyKDE4.cmake | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'modules/FindPyKDE4.cmake') diff --git a/modules/FindPyKDE4.cmake b/modules/FindPyKDE4.cmake index 1db7bf08..98f7c374 100644 --- a/modules/FindPyKDE4.cmake +++ b/modules/FindPyKDE4.cmake @@ -159,6 +159,27 @@ MACRO(PYKDE4_ADD_EXECUTABLE _pyname _exename) if(NOT PROJECT_NAME) MESSAGE(STATUS "Project name is necessary to create symlink against python program!!! It will fail.") endif(NOT PROJECT_NAME) - INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -DTARGET=${DATA_INSTALL_DIR}/${PROJECT_NAME}/${_pyname} -DLINK_NAME=${BIN_INSTALL_DIR}/${_exename} -P ${current_module_dir}/create_exe_symlink.cmake)" ) + if(WIN32) + # we generate a batch file instead of a symlink. A windows link would only + # work if the file extension .py is associated with python - but that is + # not guaranteed. + # What if python.exe is not in PATH or points to a wrong python version? + # The python app should check for compatible versions at startup. + # TODO: we cannot attach an icon to a bat file. So we might have to write a + # C program which then calls python + FILE(TO_CMAKE_PATH "${BIN_INSTALL_DIR}/${_exename}.bat" LINK_NAME) + FILE(TO_CMAKE_PATH "${DATA_INSTALL_DIR}/${PROJECT_NAME}/${_pyname}" TARGET) + GET_FILENAME_COMPONENT(abs_link_name $ENV{DESTDIR}/${LINK_NAME} ABSOLUTE) + GET_FILENAME_COMPONENT(link_path $ENV{DESTDIR}/${LINK_NAME} PATH) + GET_FILENAME_COMPONENT(abs_link_path ${link_path} ABSOLUTE) + FILE(MAKE_DIRECTORY ${abs_link_path}) + + FILE(TO_NATIVE_PATH "../${TARGET}" rel_target) + FILE(WRITE ${abs_link_name} "rem this file has been generated by PYKDE4_ADD_EXECUTABLE\n") + FILE(APPEND ${abs_link_name} "python ${rel_target}\n") + INSTALL(PROGRAMS ${LINK_NAME} DESTINATION $ENV{DESTDIR}/${BIN_INSTALL_DIR}) + else(WIN32) + INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -DTARGET=${DATA_INSTALL_DIR}/${PROJECT_NAME}/${_pyname} -DLINK_NAME=${BIN_INSTALL_DIR}/${_exename} -P ${current_module_dir}/create_exe_symlink.cmake)" ) + endif(WIN32) ENDMACRO(PYKDE4_ADD_EXECUTABLE) -- cgit v1.2.1