blob: ab0e84c550f4505f8b3eb71f3162b2db6e58d4ce [file] [log] [blame]
This patch fixes two issues:
1. On windows the python3 executable is not allways called "python3". As a result
"protoc" execution can fail due to the shebang in the file. This patch fixes
this by running protoc with the intepreter.
2. In addition when not running from a virtualenv, the install path for python file
is set to the "user site-packages" to avoid needing elevated access rights.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 31c86e7..e827015 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -54,13 +54,25 @@ if(nanopb_BUILD_GENERATOR)
string(REGEX REPLACE "([^;]+)" "\\1_pb2.py" generator_proto_py_file "${generator_proto}")
add_custom_command(
OUTPUT ${generator_proto_py_file}
- COMMAND ${nanopb_PROTOC_PATH} --python_out=${PROJECT_BINARY_DIR} -I${PROJECT_SOURCE_DIR}/generator/proto ${generator_proto_file}
+ COMMAND ${Python_EXECUTABLE} ${nanopb_PROTOC_PATH} --python_out=${PROJECT_BINARY_DIR} -I${PROJECT_SOURCE_DIR}/generator/proto ${generator_proto_file}
DEPENDS ${generator_proto_file}
)
add_custom_target("generate_${generator_proto_py_file}" ALL DEPENDS ${generator_proto_py_file})
+
+ if (DEFINED ENV{VIRTUAL_ENV})
+ set(PYTHON_INSTALL_DIR ${Python_SITELIB} CACHE PATH "Install location for generated python modules.")
+ else()
+ execute_process(
+ COMMAND ${Python_EXECUTABLE} -m site --user-site
+ OUTPUT_VARIABLE PYTHON_USER_SITE
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ set(PYTHON_INSTALL_DIR ${PYTHON_USER_SITE} CACHE PATH "Install location for generated python modules.")
+ endif()
+
install(
FILES ${PROJECT_BINARY_DIR}/${generator_proto_py_file}
- DESTINATION ${Python_SITELIB}
+ DESTINATION ${PYTHON_INSTALL_DIR}
)
endforeach()
endif()