You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
3.6 KiB
113 lines
3.6 KiB
FUNCTION(generate_python_api target_name)
|
|
ADD_CUSTOM_COMMAND(OUTPUT ${PROJ_ROOT}/paddle/py_paddle/swig_paddle.py
|
|
${PROJ_ROOT}/paddle/Paddle_wrap.cxx
|
|
${PROJ_ROOT}/paddle/Paddle_wrap.h
|
|
COMMAND ${SWIG_EXECUTABLE} -python -c++ -outcurrentdir -I../ api/Paddle.swig
|
|
&& mv ${PROJ_ROOT}/paddle/swig_paddle.py ${PROJ_ROOT}/paddle/py_paddle/swig_paddle.py
|
|
DEPENDS ${PROJ_ROOT}/paddle/api/Paddle.swig
|
|
${PROJ_ROOT}/paddle/api/PaddleAPI.h
|
|
${external_project_dependencies}
|
|
WORKING_DIRECTORY ${PROJ_ROOT}/paddle
|
|
COMMENT "Generate Python API from swig")
|
|
ADD_CUSTOM_TARGET(${target_name} ALL DEPENDS
|
|
${PROJ_ROOT}/paddle/Paddle_wrap.cxx
|
|
${PROJ_ROOT}/paddle/Paddle_wrap.h
|
|
${PROJ_ROOT}/paddle/py_paddle/swig_paddle.py
|
|
${external_project_dependencies})
|
|
ENDFUNCTION(generate_python_api)
|
|
|
|
set(API_SOURCES
|
|
Arguments.cpp
|
|
ConfigParser.cpp
|
|
Evaluator.cpp
|
|
GradientMachine.cpp
|
|
Matrix.cpp
|
|
Parameter.cpp
|
|
ParameterOptimizer.cpp
|
|
ParameterUpdater.cpp
|
|
SequenceGenerator.cpp
|
|
Trainer.cpp
|
|
Util.cpp
|
|
Vector.cpp)
|
|
set(API_HEADER
|
|
PaddleAPI.h
|
|
Internal.h)
|
|
|
|
add_library(paddle_api STATIC
|
|
${API_SOURCES})
|
|
add_dependencies(paddle_api gen_proto_cpp)
|
|
|
|
list(LENGTH "${GFLAGS_LIBRARIES}" GFLAGS_LIBRARIES_LENGTH)
|
|
|
|
if(${GFLAGS_LIBRARIES_LENGTH} EQUAL 0 AND TARGET "${GFLAGS_LIBRARIES}")
|
|
# Because gflags compiled by cmake, so it is imported by cmake target,
|
|
# not a real library path. Get the real library path here.
|
|
message(STATUS "GFLAGS Libraries is ${GFLAGS_LIBRARIES}")
|
|
get_target_property(GFLAGS_LOCATION ${GFLAGS_LIBRARIES} LOCATION)
|
|
message(STATUS "GFLAGS Target location is ${GFLAGS_LOCATION}")
|
|
else()
|
|
set(GFLAGS_LOCATION ${GFLAGS_LIBRARIES})
|
|
endif()
|
|
|
|
configure_file(
|
|
paddle_api_config.py.in
|
|
${PROJ_ROOT}/paddle/api/paddle_api_config.py
|
|
)
|
|
|
|
generate_python_api(python_swig_sources)
|
|
|
|
file(GLOB PY_PADDLE_PYTHON_FILES ${PROJ_ROOT}/paddle/py_paddle/*.py)
|
|
|
|
# TODO(yuyang18) : make wheel name calculated by cmake
|
|
add_custom_command(OUTPUT ${PROJ_ROOT}/paddle/dist/.timestamp
|
|
COMMAND env ${py_env} ${PYTHON_EXECUTABLE} setup.py bdist_wheel
|
|
COMMAND ${CMAKE_COMMAND} -E touch dist/.timestamp
|
|
COMMAND rm -rf py_paddle.egg-info build
|
|
WORKING_DIRECTORY ${PROJ_ROOT}/paddle
|
|
DEPENDS python_swig_sources
|
|
paddle_parameter
|
|
paddle_function
|
|
paddle_math
|
|
paddle_utils
|
|
paddle_gserver
|
|
paddle_pserver
|
|
paddle_trainer
|
|
paddle_api
|
|
paddle_cuda
|
|
${PY_PADDLE_PYTHON_FILES}
|
|
)
|
|
|
|
install(DIRECTORY ${PROJ_ROOT}/paddle/dist/
|
|
DESTINATION opt/paddle/share/wheels
|
|
)
|
|
|
|
add_custom_target(python_api_wheel ALL DEPENDS
|
|
${PROJ_ROOT}/paddle/dist/.timestamp)
|
|
add_dependencies(python_api_wheel python_swig_sources
|
|
paddle_parameter
|
|
paddle_math
|
|
paddle_utils
|
|
paddle_gserver
|
|
paddle_pserver
|
|
paddle_trainer
|
|
paddle_api
|
|
paddle_cuda)
|
|
|
|
if(WITH_TESTING)
|
|
IF(NOT PY_PIP_FOUND)
|
|
SET(PIP_SOURCES_DIR ${PYTHON_SOURCES_DIR}/pip)
|
|
ExternalProject_Add(pip
|
|
${EXTERNAL_PROJECT_LOG_ARGS}
|
|
GIT_REPOSITORY https://github.com/pypa/pip.git
|
|
GIT_TAG 9.0.1
|
|
PREFIX ${PIP_SOURCES_DIR}
|
|
CONFIGURE_COMMAND ""
|
|
BUILD_COMMAND ""
|
|
INSTALL_COMMAND env ${py_env} ${PYTHON_EXECUTABLE} setup.py install
|
|
BUILD_IN_SOURCE 1
|
|
DEPENDS python setuptools python_api_wheel
|
|
)
|
|
ENDIF()
|
|
add_subdirectory(test)
|
|
endif()
|