1
- FUNCTION (generate_python_api target_name)
2
- ADD_CUSTOM_COMMAND (OUTPUT ${PROJ_ROOT} /paddle/py_paddle/swig_paddle.py
3
- ${PROJ_ROOT} /paddle/Paddle_wrap.cxx
4
- ${PROJ_ROOT} /paddle/Paddle_wrap.h
5
- COMMAND ${SWIG_EXECUTABLE} -python -c++ -outcurrentdir -I../ api/Paddle.swig
6
- && mv ${PROJ_ROOT} /paddle/swig_paddle.py ${PROJ_ROOT} /paddle/py_paddle/swig_paddle.py
7
- DEPENDS ${PROJ_ROOT} /paddle/api/Paddle.swig
8
- ${PROJ_ROOT} /paddle/api/PaddleAPI.h
9
- ${external_project_dependencies}
10
- WORKING_DIRECTORY ${PROJ_ROOT} /paddle
11
- COMMENT "Generate Python API from swig" )
12
- ADD_CUSTOM_TARGET (${target_name} ALL DEPENDS
13
- ${PROJ_ROOT} /paddle/Paddle_wrap.cxx
14
- ${PROJ_ROOT} /paddle/Paddle_wrap.h
15
- ${PROJ_ROOT} /paddle/py_paddle/swig_paddle.py
16
- ${external_project_dependencies} )
17
- ENDFUNCTION (generate_python_api)
18
-
19
1
set (API_SOURCES
20
2
Arguments.cpp
21
3
ConfigParser.cpp
@@ -33,65 +15,73 @@ set(API_HEADER
33
15
PaddleAPI.h
34
16
Internal .h)
35
17
36
- add_library (paddle_api STATIC
37
- ${API_SOURCES} )
18
+ add_library (paddle_api STATIC ${API_SOURCES} )
38
19
add_dependencies (paddle_api gen_proto_cpp)
39
20
40
- list (LENGTH "${GFLAGS_LIBRARIES} " GFLAGS_LIBRARIES_LENGTH)
21
+ INCLUDE (${SWIG_USE_FILE} )
22
+ INCLUDE_DIRECTORIES (${PROJ_ROOT} /paddle)
41
23
42
- if (${GFLAGS_LIBRARIES_LENGTH} EQUAL 0 AND TARGET "${GFLAGS_LIBRARIES} " )
43
- # Because gflags compiled by cmake, so it is imported by cmake target,
44
- # not a real library path. Get the real library path here.
45
- message (STATUS "GFLAGS Libraries is ${GFLAGS_LIBRARIES} " )
46
- get_target_property (GFLAGS_LOCATION ${GFLAGS_LIBRARIES} LOCATION )
47
- message (STATUS "GFLAGS Target location is ${GFLAGS_LOCATION} " )
48
- else ()
49
- set (GFLAGS_LOCATION ${GFLAGS_LIBRARIES} )
50
- endif ()
24
+ FILE (GLOB PY_PADDLE_PYTHON_FILES ${PROJ_ROOT} /paddle/py_paddle/*.py)
25
+
26
+ SET_SOURCE_FILES_PROPERTIES (Paddle.i PROPERTIES CPLUSPLUS ON )
51
27
52
- configure_file (
53
- paddle_api_config.py.in
54
- ${PROJ_ROOT} /paddle/api/paddle_api_config.py
28
+ SET (CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR} )
29
+ SET (CMAKE_CXX_FLAGS "-std=c++11 -fPIC" )
30
+ SET (SWIG_MODULE_swig_paddle_EXTRA_DEPS
31
+ paddle_parameter
32
+ paddle_function
33
+ paddle_math
34
+ paddle_utils
35
+ paddle_gserver
36
+ paddle_pserver
37
+ paddle_api
38
+ paddle_cuda
39
+ paddle_trainer_lib
40
+ paddle_network
41
+ paddle_proto
42
+ ${PY_PADDLE_PYTHON_FILES}
43
+ ${external_project_dependencies}
55
44
)
56
45
57
- generate_python_api(python_swig_sources)
46
+ IF (APPLE )
47
+ SET (CMAKE_LINK_FLAGS "-undefined dynamic_lookup -Wl,-all_load" )
48
+ ENDIF (APPLE )
58
49
59
- file (GLOB PY_PADDLE_PYTHON_FILES ${PROJ_ROOT} /paddle/py_paddle/*.py)
50
+ SWIG_ADD_MODULE(swig_paddle python Paddle.i)
51
+ SWIG_LINK_LIBRARIES(swig_paddle
52
+ ${CMAKE_LINK_FLAGS}
53
+ ${CMAKE_DL_LIBS}
54
+ ${EXTERNAL_LIBS}
55
+ ${PYTHON_LIBRARIES}
56
+ ${CMAKE_THREAD_LIBS_INIT}
57
+ ${RDMA_LD_FLAGS}
58
+ ${RDMA_LIBS}
59
+ paddle_parameter
60
+ paddle_function
61
+ paddle_math
62
+ paddle_utils
63
+ paddle_gserver
64
+ paddle_pserver
65
+ paddle_api
66
+ paddle_cuda
67
+ paddle_trainer_lib
68
+ paddle_network
69
+ paddle_proto
70
+ )
60
71
61
- # TODO(yuyang18) : make wheel name calculated by cmake
62
72
add_custom_command (OUTPUT ${PROJ_ROOT} /paddle/dist/.timestamp
73
+ COMMAND mv ${CMAKE_CURRENT_BINARY_DIR} /swig_paddle.py ${PROJ_ROOT} /paddle/py_paddle
74
+ && mv ${CMAKE_CURRENT_BINARY_DIR} /_swig_paddle.so ${PROJ_ROOT} /paddle/py_paddle
63
75
COMMAND env ${py_env} ${PYTHON_EXECUTABLE} setup.py bdist_wheel
64
76
COMMAND ${CMAKE_COMMAND} -E touch dist/.timestamp
65
77
COMMAND rm -rf py_paddle.egg-info build
66
78
WORKING_DIRECTORY ${PROJ_ROOT} /paddle
67
- DEPENDS python_swig_sources
68
- paddle_parameter
69
- paddle_function
70
- paddle_math
71
- paddle_utils
72
- paddle_gserver
73
- paddle_pserver
74
- paddle_trainer
75
- paddle_api
76
- paddle_cuda
77
- ${PY_PADDLE_PYTHON_FILES}
79
+ DEPENDS _swig_paddle
78
80
)
79
81
80
- install (DIRECTORY ${PROJ_ROOT} /paddle/dist/
81
- DESTINATION opt/paddle/share/wheels
82
- )
82
+ add_custom_target (python_api_wheel ALL DEPENDS ${PROJ_ROOT} /paddle/dist/.timestamp)
83
83
84
- add_custom_target (python_api_wheel ALL DEPENDS
85
- ${PROJ_ROOT} /paddle/dist/.timestamp)
86
- add_dependencies (python_api_wheel python_swig_sources
87
- paddle_parameter
88
- paddle_math
89
- paddle_utils
90
- paddle_gserver
91
- paddle_pserver
92
- paddle_trainer
93
- paddle_api
94
- paddle_cuda)
84
+ install (DIRECTORY ${PROJ_ROOT} /paddle/dist/ DESTINATION opt/paddle/share/wheels)
95
85
96
86
if (WITH_TESTING)
97
87
IF (NOT PY_PIP_FOUND)
0 commit comments