Merge pull request #2180 from unxed/readme
[far2l.git] / python / CMakeLists.txt
blob2f0a1b4c05f8b8db73d764b38865bbc0d2613a60
2 project(python)
4 set(SOURCES
5 src/python.cpp
6 ${CMAKE_CURRENT_BINARY_DIR}/incpy/far2lcffi.py
9 if (DEFINED VIRTUAL_PYTHON)
10     message(STATUS "VIRTUAL env interpreter=${VIRTUAL_PYTHON}")
11     message(STATUS "VIRTUAL env interpreter version=${VIRTUAL_PYTHON_VERSION}")
12     # for finding adequate python package
13     set(Python3_EXECUTABLE ${VIRTUAL_PYTHON})
14 endif()
16 find_package(Python3 COMPONENTS Interpreter Development)        # find Python interpreter and library
17 message(STATUS "Python3_VERSION = ${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}")
18 message(STATUS "Python3_EXECUTABLE = ${Python3_EXECUTABLE}")
19 message(STATUS "Python3_STDLIB     = ${Python3_STDLIB}")
20 message(STATUS "Python3_STDARCH    = ${Python3_STDARCH}")
21 message(STATUS "Python3_SITELIB    = ${Python3_SITELIB}")
22 message(STATUS "Python3_INCLUDE_DIRS = ${Python3_INCLUDE_DIRS}")
23 message(STATUS "Python3_LIBRARY_DIRS = ${Python3_LIBRARY_DIRS}")
24 message(STATUS "Python3_LIBRARIES = ${Python3_LIBRARIES}")
25 message(STATUS "Python3_RUNTIME_LIBRARY_DIRS = ${Python3_RUNTIME_LIBRARY_DIRS}")
27 add_library (python MODULE ${SOURCES})
29 target_link_libraries(python utils far2l ${Python3_LIBRARIES})
31 target_compile_definitions(python PRIVATE
32     -DWINPORT_DIRECT
33     -DUNICODE
34     -DFAR_USE_INTERNALS
35     -DPROCPLUGINMACROFUNC
36     -DPYTHON_LIBRARY="${Python3_LIBRARIES}"
37     -DPYTHON_VERSION="${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}"
39 if (DEFINED VIRTUAL_PYTHON)
40     target_compile_definitions(python PRIVATE
41         -DVIRTUAL_PYTHON="${VIRTUAL_PYTHON}"
42     )
43     set(Python_EXECUTABLE ${VIRTUAL_PYTHON})
44 else()
45     set(VIRTUAL_PYTHON_VERSION 0)
46     set(Python_EXECUTABLE ${Python3_EXECUTABLE})
47 endif()
50 target_include_directories(python PRIVATE .)
51 target_include_directories(python PRIVATE ../WinPort)
52 target_include_directories(python PRIVATE ../far2l/far2sdk)
53 target_include_directories(python PRIVATE ${Python3_INCLUDE_DIRS} )
55 set_target_properties(python PROPERTIES
56     LIBRARY_OUTPUT_DIRECTORY "${INSTALL_DIR}/Plugins/python/plug"
57     PREFIX ""
58     SUFFIX ".far-plug-wide"
61 add_custom_command(TARGET python POST_BUILD
62     DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/configs
63     DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/far2lcffi.py
64     COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/configs" "${INSTALL_DIR}/Plugins/python"
65     COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_BINARY_DIR}/incpy/far2lcffi.py" "${INSTALL_DIR}/Plugins/python/plug/far2l"
67 if (NOT DEFINED VIRTUAL_PYTHON)
68     add_custom_command(TARGET python POST_BUILD
69         DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/configs
70         DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/far2lcffi.py
71         COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_BINARY_DIR}/python" "${INSTALL_DIR}/Plugins/python/plug/python"
72     )
73 endif()
75 add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/incpy/far2lcffi.py
76     DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/pythongen.py
77     DEPENDS ../far2l/far2sdk/farplug-wide.h
78     DEPENDS ../far2l/far2sdk/farcolor.h
79     DEPENDS ../far2l/far2sdk/farkeys.h
80     DEPENDS ../WinPort/windows.h
81     DEPENDS ../WinPort/WinCompat.h
82     DEPENDS ../WinPort/WinPort.h
83     COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/src/prebuild.sh "${CMAKE_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}" "${VIRTUAL_PYTHON_VERSION}" "${Python_EXECUTABLE}" "${CMAKE_C_COMPILER} ${CMAKE_C_FLAGS}"