COLLADA Armature bake animation export fixed( needs more testing )
[blender.git] / build_files / cmake / Modules / FindPythonLibsUnix.cmake
1 # - Find Python libraries
2 # Find the native Python includes and library
3 #
4 # Note:, This is not _yet_ intended to be a general python module for other
5 #  projects to use since its hard coded to python 3.2 as blender only supports
6 #  a single python version.
7 #  This is for blender/unix python only.
8 #
9 # This module defines
10 #  PYTHON_VERSION
11 #  PYTHON_INCLUDE_DIRS
12 #  PYTHON_LIBRARIES
13 #  PYTHON_LIBPATH, Used for installation
14 #  PYTHON_LINKFLAGS
15 #  PYTHON_ROOT_DIR, The base directory to search for Python.
16 #                   This can also be an environment variable.
17 #
18 # also defined, but not for general use are
19 #  PYTHON_LIBRARY, where to find the python library.
20
21 #=============================================================================
22 # Copyright 2011 Blender Foundation.
23 #
24 # Distributed under the OSI-approved BSD License (the "License");
25 # see accompanying file Copyright.txt for details.
26 #
27 # This software is distributed WITHOUT ANY WARRANTY; without even the
28 # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
29 # See the License for more information.
30 #=============================================================================
31
32 # If PYTHON_ROOT_DIR was defined in the environment, use it.
33 IF(NOT PYTHON_ROOT_DIR AND NOT $ENV{PYTHON_ROOT_DIR} STREQUAL "")
34   SET(PYTHON_ROOT_DIR $ENV{PYTHON_ROOT_DIR})
35 ENDIF()
36
37 IF(DEFINED PYTHON_VERSION)
38   SET(PYTHON_VERSION "${PYTHON_VERSION}" CACHE STRING "")
39 ELSE()
40   SET(PYTHON_VERSION 3.2 CACHE STRING "")
41 ENDIF()
42 MARK_AS_ADVANCED(PYTHON_VERSION)
43
44 SET(PYTHON_LINKFLAGS "-Xlinker -export-dynamic")
45 MARK_AS_ADVANCED(PYTHON_LINKFLAGS)
46
47 SET(_python_ABI_FLAGS
48   "m;mu;u; "  # release
49   "md;mud;ud;d" # debug
50 )
51
52 STRING(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
53
54 SET(_python_SEARCH_DIRS
55   ${PYTHON_ROOT_DIR}
56   "$ENV{HOME}/py${_PYTHON_VERSION_NO_DOTS}"
57   "/opt/py${_PYTHON_VERSION_NO_DOTS}"
58 )
59
60 FOREACH(_CURRENT_ABI_FLAGS ${_python_ABI_FLAGS})
61   #IF(CMAKE_BUILD_TYPE STREQUAL Debug)
62   #  SET(_CURRENT_ABI_FLAGS "d${_CURRENT_ABI_FLAGS}")
63   #ENDIF()
64   STRING(REPLACE " " "" _CURRENT_ABI_FLAGS ${_CURRENT_ABI_FLAGS})
65
66   FIND_PATH(PYTHON_INCLUDE_DIR
67     NAMES
68       Python.h
69     HINTS
70       ${_python_SEARCH_DIRS}
71     PATH_SUFFIXES
72       include/python${PYTHON_VERSION}${_CURRENT_ABI_FLAGS}
73   )
74
75   FIND_LIBRARY(PYTHON_LIBRARY
76     NAMES
77       "python${PYTHON_VERSION}${_CURRENT_ABI_FLAGS}"
78     HINTS
79       ${_python_SEARCH_DIRS}
80     PATH_SUFFIXES
81       lib64 lib
82   )
83
84   IF(PYTHON_LIBRARY AND PYTHON_INCLUDE_DIR)
85     break()
86   ELSE()
87     # ensure we dont find values from 2 different ABI versions
88     UNSET(PYTHON_INCLUDE_DIR CACHE)
89     UNSET(PYTHON_LIBRARY CACHE)
90   ENDIF()
91 ENDFOREACH()
92
93 UNSET(_CURRENT_ABI_FLAGS)
94 UNSET(_CURRENT_PATH)
95
96 UNSET(_python_ABI_FLAGS)
97 UNSET(_python_SEARCH_DIRS)
98
99 # handle the QUIETLY and REQUIRED arguments and SET PYTHONLIBSUNIX_FOUND to TRUE IF 
100 # all listed variables are TRUE
101 INCLUDE(FindPackageHandleStandardArgs)
102 FIND_PACKAGE_HANDLE_STANDARD_ARGS(PythonLibsUnix  DEFAULT_MSG
103     PYTHON_LIBRARY PYTHON_INCLUDE_DIR)
104
105
106 IF(PYTHONLIBSUNIX_FOUND)
107   # Assign cache items
108   SET(PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIR})
109   SET(PYTHON_LIBRARIES ${PYTHON_LIBRARY})
110
111   # we need this for installation
112   GET_FILENAME_COMPONENT(PYTHON_LIBPATH ${PYTHON_LIBRARY} PATH)
113
114   # not used
115   # SET(PYTHON_BINARY ${PYTHON_EXECUTABLE} CACHE STRING "")
116
117   MARK_AS_ADVANCED(
118     PYTHON_INCLUDE_DIR
119     PYTHON_LIBRARY
120   )
121 ENDIF()