set(CMAKE_THREAD_PREFER_PTHREADS ON)
find_package(Threads)
-find_package(PythonInterp)
-set(Python_ADDITIONAL_VERSIONS 2.6 2.7 3.3 3.4 3.6)
-find_package(PythonLibs)
-find_package(PythonSiteLibs)
-
# config.h checks
include(ConfigureChecks.cmake)
configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
ARCHIVE DESTINATION ${LIB_INSTALL_DIR})
add_subdirectory(modules)
-if (PYTHONLIBS_FOUND)
- add_subdirectory(python)
-endif()
+add_subdirectory(python)
# This needs to be at the end
set(PAM_WRAPPER_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}pam_wrapper${CMAKE_SHARED_LIBRARY_SUFFIX}" PARENT_SCOPE)
project(pypamtest C)
-include_directories(${CMAKE_BINARY_DIR})
-include_directories(${pam_wrapper-headers_DIR})
-include_directories(${PYTHON_INCLUDE_DIR})
-
-python_add_module(pypamtest pypamtest.c)
-target_link_libraries(pypamtest pamtest ${PYTHON_LIBRARY})
-
-install(
- TARGETS
- pypamtest
- DESTINATION
- ${CMAKE_INSTALL_PREFIX}/${PYTHON_SITELIB}
-)
+add_subdirectory(python2)
+add_subdirectory(python3)
--- /dev/null
+project(python2-pamtest C)
+
+unset(PYTHON_EXECUTABLE CACHE)
+unset(PYTHON_INCLUDE_DIR CACHE)
+unset(PYTHON_LIBRARY CACHE)
+unset(PYTHON_SITELIB CACHE)
+unset(PYTHONLIBS_FOUND CACHE)
+unset(PYTHONLIBS_VERSION_STRING CACHE)
+
+set(Python_ADDITIONAL_VERSIONS 2.7 2.6)
+find_package(PythonLibs)
+find_package(PythonInterp)
+find_package(PythonSiteLibs)
+
+if (PYTHONLIBS_FOUND)
+ set(PYTHON2_EXECUTABLE ${PYTHON_EXECUTABLE} CACHE FILEPATH "PYTHON2_EXECUTABLE")
+ set(PYTHON2_INCLUDE_DIR ${PYTHON_INCLUDE_DIR})
+ set(PYTHON2_LIBRARY ${PYTHON_LIBRARY})
+ set(PYTHON2_SITELIB ${PYTHON_SITELIB})
+
+ include_directories(${CMAKE_BINARY_DIR})
+ include_directories(${pam_wrapper-headers_DIR})
+ include_directories(${PYTHON2_INCLUDE_DIR})
+
+ python_add_module(python2-pamtest ${pypamtest_SOURCE_DIR}/pypamtest.c)
+ target_link_libraries(python2-pamtest pamtest ${PYTHON2_LIBRARY})
+ set_target_properties(python2-pamtest PROPERTIES OUTPUT_NAME "pypamtest")
+
+ install(TARGETS
+ python2-pamtest
+ DESTINATION
+ ${CMAKE_INSTALL_PREFIX}/${PYTHON2_SITELIB})
+endif()
--- /dev/null
+project(python3-pamtest C)
+
+unset(PYTHON_EXECUTABLE CACHE)
+unset(PYTHON_INCLUDE_DIR CACHE)
+unset(PYTHON_LIBRARY CACHE)
+unset(PYTHON_SITELIB CACHE)
+unset(PYTHONLIBS_FOUND CACHE)
+unset(PYTHONLIBS_VERSION_STRING CACHE)
+
+set(Python_ADDITIONAL_VERSIONS 3.8 3.7 3.6)
+find_package(PythonLibs)
+find_package(PythonInterp)
+find_package(PythonSiteLibs)
+
+if (PYTHONLIBS_FOUND)
+ set(PYTHON3_LIBRARY ${PYTHON_LIBRARY})
+ set(PYTHON3_INCLUDE_DIR ${PYTHON_INCLUDE_DIR})
+ set(PYTHON3_SITELIB ${PYTHON_SITELIB})
+ set(PYTHON3_EXECUTABLE ${PYTHON_EXECUTABLE} CACHE FILEPATH "PYTHON3_EXECUTABLE")
+
+ include_directories(${CMAKE_BINARY_DIR})
+ include_directories(${pam_wrapper-headers_DIR})
+ include_directories(${PYTHON3_INCLUDE_DIR})
+
+ python_add_module(python3-pamtest ${pypamtest_SOURCE_DIR}/pypamtest.c)
+ target_link_libraries(python3-pamtest pamtest ${PYTHON3_LIBRARY})
+ set_target_properties(python3-pamtest PROPERTIES OUTPUT_NAME "pypamtest")
+
+ install(TARGETS
+ python3-pamtest
+ DESTINATION
+ ${CMAKE_INSTALL_PREFIX}/${PYTHON3_SITELIB})
+endif()
PROPERTY
ENVIRONMENT ${TEST_ENVIRONMENT})
-if (PYTHONLIBS_FOUND)
- add_test(pypamtest_test ${CMAKE_CURRENT_SOURCE_DIR}/pypamtest_test.py)
- set_property(
- TEST
- pypamtest_test
- PROPERTY
- ENVIRONMENT ${TEST_ENVIRONMENT})
+if (PYTHON2_EXECUTABLE)
+ add_test(NAME
+ py2pamtest_test
+ COMMAND
+ ${PYTHON2_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/pypamtest_test.py)
+
+ set_property(TEST
+ py2pamtest_test
+ PROPERTY
+ ENVIRONMENT ${TEST_ENVIRONMENT})
+endif()
+
+if (PYTHON3_EXECUTABLE)
+ add_test(NAME
+ py3pamtest_test
+ COMMAND
+ ${PYTHON3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/pypamtest_test.py)
+
+ set_property(TEST
+ py3pamtest_test
+ PROPERTY
+ ENVIRONMENT ${TEST_ENVIRONMENT})
endif()
class PyPamTestImport(unittest.TestCase):
def setUp(self):
" Make sure we load the in-tree module "
- self.modpath = os.path.join(os.getcwd(), "../src/python")
+ if sys.hexversion >= 0x3000000:
+ self.modpath = os.path.join(os.getcwd(), "../src/python/python3")
+ else:
+ self.modpath = os.path.join(os.getcwd(), "../src/python/python2")
self.system_path = sys.path[:]
sys.path = [ self.modpath ]