File: FindPythonEasy.cmake

package info (click to toggle)
gfal2 2.23.2-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 3,452 kB
  • sloc: ansic: 15,858; cpp: 15,198; python: 257; sh: 228; makefile: 120
file content (121 lines) | stat: -rw-r--r-- 5,157 bytes parent folder | download | duplicates (2)
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# - Find python libraries
#  This module find the current version of python on your installation in a easy way
#
#  PYTHON_LIBRARIES     			= path to the python library
#  PYTHON_LIBRARIES_${VERSION}    	= path to the python library for the distribution version
#  PYTHON_SITE_PACKAGES_${_VERSION} = path to the python modules dir
#  PYTHON_LIBRARIES   				= path to the python modules dir for the distribution version
#  PYTHON_INCLUDE_PATH  			= path to where Python.h is found
#  PYTHON_INCLUDE_PATH_${VERSION}  	= path to where Python.h for the distribution version
#  PYTHON_EXECUTABLE 				=  python interpreter for the distribution version
#  PYTHON_EXECUTABLE_${VERSION} 	=  available python version
#  PYTHON_AVAILABLE_VERSIONS		= list all the version available on the system
# --

LIST(APPEND L_PYTHON_VERSIONS
    "1.5" "1.6"
    "2.0" "2.1" "2.2" "2.4" "2.5" "2.6" "2.7" "2.8"
    "3" "3.0" "3.1" "3.2" "3.3" "3.4" "3.5"
)

INCLUDE(FindPackageHandleStandardArgs)

 # determine the std version

 # main version executable
 FIND_PROGRAM(PYTHON_EXECUTABLE
  NAMES python
  HINTS
  ${ALT_PYTHON_LOCATION}/bin
  PATHS
  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.4\\InstallPath]
  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.3\\InstallPath]
  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.2\\InstallPath]
  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.1\\InstallPath]
  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.0\\InstallPath]
  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.8\\InstallPath]
  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.7\\InstallPath]
  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.6\\InstallPath]
  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.5\\InstallPath]
  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.4\\InstallPath]
  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.3\\InstallPath]
  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.2\\InstallPath]
  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.1\\InstallPath]
  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.0\\InstallPath]
  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\1.6\\InstallPath]
  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\1.5\\InstallPath]
 )


EXECUTE_PROCESS( COMMAND ${PYTHON_EXECUTABLE} -c "import sys; print('%s.%s' % sys.version_info[:2])"
					OUTPUT_VARIABLE PYTHON_CURRENT_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)

## tests for all versions of the  packages
FOREACH(_VERSION ${L_PYTHON_VERSIONS})

    STRING(REPLACE "." "" _VERSION_NO_DOTS ${_VERSION})

    FIND_PROGRAM(PYTHON_EXECUTABLE_${_VERSION}
        NAMES python${_VERSION}
        HINTS
    	    ${ALT_PYTHON_LOCATION}/bin/
    )


    IF(PYTHON_EXECUTABLE_${_VERSION})

		LIST(APPEND PYTHON_AVAILABLE_VERSIONS ${_VERSION})

        EXECUTE_PROCESS(COMMAND
            ${PYTHON_EXECUTABLE_${_VERSION}} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(True))"
			OUTPUT_VARIABLE PYTHON_SITE_PACKAGES_${_VERSION} OUTPUT_STRIP_TRAILING_WHITESPACE)

		# find libs
        EXECUTE_PROCESS(COMMAND
            python${_VERSION}-config --libs
            OUTPUT_VARIABLE PYTHON_LIBRARY_${_VERSION} OUTPUT_STRIP_TRAILING_WHITESPACE
        )
        SET(PYTHON_LIBRARIES_${_VERSION} ${PYTHON_LIBRARY_${_VERSION}})

        # find include
        EXECUTE_PROCESS(COMMAND
            ${PYTHON_EXECUTABLE_${_VERSION}} -c "from distutils import sysconfig; print(sysconfig.get_python_inc())"
            OUTPUT_VARIABLE PYTHON_INCLUDE_PATH_${_VERSION} OUTPUT_STRIP_TRAILING_WHITESPACE
        )

		FIND_PACKAGE_HANDLE_STANDARD_ARGS(Python${_VERSION} DEFAULT_MSG PYTHON_EXECUTABLE_${_VERSION})

		MARK_AS_ADVANCED(PYTHON_EXECUTABLE_${_VERSION})
		MARK_AS_ADVANCED(PYTHON_SITE_PACKAGES_${_VERSION})
		MARK_AS_ADVANCED(PYTHON_LIBRARIES_${_VERSION})
		MARK_AS_ADVANCED(PYTHON_INCLUDE_PATH_${_VERSION})
 ENDIF(PYTHON_EXECUTABLE_${_VERSION})

 ENDFOREACH(_VERSION ${L_PYTHON_VERSIONS})


SET(PYTHON_SITE_PACKAGES ${PYTHON_SITE_PACKAGES_${PYTHON_CURRENT_VERSION}}
	CACHE PATH "path to the python modules dir for the distribution version")

SET(PYTHON_LIBRARIES ${PYTHON_LIBRARIES_${PYTHON_CURRENT_VERSION}}
	CACHE PATH "path to the python modules dir for the distribution version")

SET(PYTHON_INCLUDE_PATH ${PYTHON_INCLUDE_PATH_${PYTHON_CURRENT_VERSION}}
	CACHE PATH "path to the python include dir for the distribution version")

FIND_PACKAGE_HANDLE_STANDARD_ARGS(PythonCurrentVersion DEFAULT_MSG PYTHON_CURRENT_VERSION )
FIND_PACKAGE_HANDLE_STANDARD_ARGS(PythonCurrentInclude DEFAULT_MSG PYTHON_INCLUDE_PATH )
FIND_PACKAGE_HANDLE_STANDARD_ARGS(PythonCurrentLibs DEFAULT_MSG PYTHON_LIBRARIES )
FIND_PACKAGE_HANDLE_STANDARD_ARGS(PythonCurrentModsDir DEFAULT_MSG PYTHON_SITE_PACKAGES )

IF(PYTHON_EXECUTABLE_3)
    EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE_3} -c "import sys; print('%s.%s' % sys.version_info[:2])"
            OUTPUT_VARIABLE PYTHON3_CURRENT_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
ENDIF()


MARK_AS_ADVANCED(PYTHON_EXECUTABLE)
MARK_AS_ADVANCED(PYTHON_SITE_PACKAGES)
MARK_AS_ADVANCED(PYTHON_LIBRARIES)
MARK_AS_ADVANCED(PYTHON_INCLUDE_PATH)