CMakeLists.txt 16.2 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
set(PYBIND_DEPS
    init
    pybind
    python
    proto_desc
    memory
    executor
    fleet_wrapper
    box_wrapper
    metrics
    prune
    feed_fetch_method
    pass
    generate_pass
    pass_builder
    parallel_executor
    profiler
    layer
    tracer
    engine
    scope_pool
    analysis_predictor
    imperative_profiler
    imperative_flag
    save_load_util
    dlpack_tensor
    device_context
    gloo_wrapper
    infer_io_utils
    heter_wrapper
    generator
    op_version_registry
    ps_gpu_wrapper
    custom_operator
    cost_model
    cuda_graph_with_memory_pool
    fleet_executor
    global_utils
    phi_utils
    tcp_store
41 42
    new_profiler
    jit_layer)
43 44

if(WITH_PSCORE)
S
seemingwang 已提交
45 46
  set(PYBIND_DEPS ${PYBIND_DEPS} ps_service)
  set(PYBIND_DEPS ${PYBIND_DEPS} graph_py_service)
47
  if(WITH_HETERPS)
48 49
    set(PYBIND_DEPS ${PYBIND_DEPS} graph_gpu_wrapper)
  endif()
S
seemingwang 已提交
50
endif()
51
if(WITH_GPU OR WITH_ROCM)
52
  set(PYBIND_DEPS ${PYBIND_DEPS} dynload_cuda)
53
  set(PYBIND_DEPS ${PYBIND_DEPS} cuda_device_guard)
54 55
endif()

56
if(WITH_GPU)
57 58
  set(PYBIND_DEPS ${PYBIND_DEPS} cuda_profiler)
endif()
59
if(WITH_IPU)
J
jianghaicheng 已提交
60 61
  set(PYBIND_DEPS ${PYBIND_DEPS} ipu_info)
endif()
62

63
if(WITH_NCCL OR WITH_RCCL)
64
  set(PYBIND_DEPS ${PYBIND_DEPS} nccl_wrapper)
65
  set(PYBIND_DEPS ${PYBIND_DEPS} reducer)
66 67
endif()

68
if(WITH_XPU_BKCL)
69 70
  set(PYBIND_DEPS ${PYBIND_DEPS} reducer)
  set(PYBIND_DEPS ${PYBIND_DEPS} bkcl_context)
K
kuizhiqing 已提交
71 72 73
  set(PYBIND_DEPS ${PYBIND_DEPS} heter_ccl_context)
endif()

74
if(WITH_ASCEND_CL)
K
kuizhiqing 已提交
75 76 77
  set(PYBIND_DEPS ${PYBIND_DEPS} reducer)
  set(PYBIND_DEPS ${PYBIND_DEPS} hccl_context)
  set(PYBIND_DEPS ${PYBIND_DEPS} heter_ccl_context)
78 79
endif()

80
if(WITH_CNCL)
81
  set(PYBIND_DEPS ${PYBIND_DEPS} reducer)
82 83 84
  set(PYBIND_DEPS ${PYBIND_DEPS} cncl_context)
endif()

85
if(NOT WIN32)
86
  set(PYBIND_DEPS ${PYBIND_DEPS} data_loader)
87
  set(PYBIND_DEPS ${PYBIND_DEPS} mmap_allocator)
88
  if(WITH_GPU)
89 90
    set(PYBIND_DEPS ${PYBIND_DEPS} cuda_ipc_allocator)
  endif()
91
  if(WITH_NCCL OR WITH_RCCL)
92
    set(PYBIND_DEPS ${PYBIND_DEPS} nccl_context)
K
kuizhiqing 已提交
93
    set(PYBIND_DEPS ${PYBIND_DEPS} heter_ccl_context)
94
  endif()
95
endif()
F
flame 已提交
96

S
sneaxiy 已提交
97 98
if(WITH_PYTHON)
  list(APPEND PYBIND_DEPS py_func_op)
99
  list(APPEND PYBIND_DEPS py_layer_op)
S
sneaxiy 已提交
100
endif()
101 102

set(PYBIND_SRCS
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
    pybind.cc
    exception.cc
    protobuf.cc
    const_value.cc
    global_value_getter_setter.cc
    reader_py.cc
    fleet_wrapper_py.cc
    heter_wrapper_py.cc
    ps_gpu_wrapper_py.cc
    gloo_wrapper_py.cc
    box_helper_py.cc
    metrics_py.cc
    data_set_py.cc
    imperative.cc
    ir.cc
    bind_cost_model.cc
    bind_fleet_executor.cc
    inference_api.cc
    compatible.cc
    io.cc
    generator_py.cc
    communication.cc
125 126
    cuda_streams_py.cc
    jit.cc)
127

128 129 130 131
if(WITH_CUSTOM_DEVICE)
  set(PYBIND_DEPS ${PYBIND_DEPS} phi_capi)
endif()

132
if(NOT ON_INFER)
133
  set(PYBIND_DEPS ${PYBIND_DEPS} processgroup eager_reducer)
134
  if(WITH_NCCL OR WITH_RCCL)
135 136 137
    set(PYBIND_DEPS ${PYBIND_DEPS} processgroup_nccl)
    if(WITH_PSCORE)
      set(PYBIND_DEPS ${PYBIND_DEPS} processgroup_heter)
138
    endif()
139
  endif()
140 141
  if(WITH_GLOO)
    set(PYBIND_DEPS ${PYBIND_DEPS} processgroup_gloo)
142
  endif()
143
  if(WITH_ASCEND_CL)
144 145 146
    set(PYBIND_DEPS ${PYBIND_DEPS} processgroup_hccl)
    if(WITH_PSCORE)
      set(PYBIND_DEPS ${PYBIND_DEPS} processgroup_heter)
147
    endif()
148
  endif()
149 150 151
  set(PYBIND_SRCS ${PYBIND_SRCS} distributed_py.cc)
endif()

152
if(WITH_ASCEND)
153 154
  set(PYBIND_DEPS ${PYBIND_DEPS} ascend_wrapper)
  set(PYBIND_SRCS ${PYBIND_SRCS} ascend_wrapper_py.cc)
155
endif()
156

157 158 159
if(WITH_GLOO)
  set(PYBIND_DEPS ${PYBIND_DEPS} gloo_context)
  set(PYBIND_SRCS ${PYBIND_SRCS} gloo_context_py.cc)
160 161
  set(PYBIND_DEPS ${PYBIND_DEPS} imperative_gloo_context)
  set(PYBIND_DEPS ${PYBIND_DEPS} reducer)
162
endif()
163

164
if(WITH_CRYPTO)
Y
Yanghello 已提交
165 166
  set(PYBIND_DEPS ${PYBIND_DEPS} paddle_crypto)
  set(PYBIND_SRCS ${PYBIND_SRCS} crypto.cc)
167
endif()
168 169 170 171 172 173 174

if(WITH_PSLIB)
  set(DISTRIBUTE_COMPILE_FLAGS
      "-Wno-non-virtual-dtor -Wno-error=non-virtual-dtor -Wno-error=delete-non-virtual-dtor -Wno-error=sign-compare -Wno-error=unused-variable -Wno-error=return-type -Wno-error=unused-but-set-variable -Wno-error=type-limits -Wno-error=unknown-pragmas -Wno-error=parentheses -Wno-error=unused-result"
  )
  if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 7.0)
    set(DISTRIBUTE_COMPILE_FLAGS "${DISTRIBUTE_COMPILE_FLAGS} -faligned-new")
T
Thunderbrook 已提交
175
  endif()
176 177
  set_source_files_properties(
    heter_wrapper_py.cc PROPERTIES COMPILE_FLAGS ${DISTRIBUTE_COMPILE_FLAGS})
178
endif()
179 180 181 182 183
if(WITH_PSCORE)
  if(WITH_ARM_BRPC)
    set(DISTRIBUTE_COMPILE_FLAGS
        "-faligned-new -Wno-non-virtual-dtor -Wno-error=non-virtual-dtor -Wno-error=delete-non-virtual-dtor -Wno-error=sign-compare -Wno-error=unused-variable -Wno-error=return-type -Wno-error=unused-but-set-variable -Wno-error=unknown-pragmas -Wno-error=parentheses -Wno-error=unused-result"
    )
184
  else()
185 186 187
    set(DISTRIBUTE_COMPILE_FLAGS
        "-Wno-non-virtual-dtor -Wno-error=non-virtual-dtor -Wno-error=delete-non-virtual-dtor -Wno-error=sign-compare -Wno-error=unused-variable -Wno-error=return-type -Wno-error=unused-but-set-variable -Wno-error=unknown-pragmas -Wno-error=parentheses -Wno-error=unused-result"
    )
188
  endif()
189 190
  set_source_files_properties(
    fleet_py.cc PROPERTIES COMPILE_FLAGS ${DISTRIBUTE_COMPILE_FLAGS})
1
123malin 已提交
191
  list(APPEND PYBIND_DEPS fleet communicator index_wrapper index_sampler)
T
tangwei12 已提交
192
  list(APPEND PYBIND_SRCS fleet_py.cc)
193
endif()
194

195
if(WITH_NCCL OR WITH_RCCL)
196 197 198
  list(APPEND PYBIND_SRCS nccl_wrapper_py.cc)
endif()

L
Leo Chen 已提交
199 200
if(WITH_PYTHON)
  # generate op pybind functions automatically for dygraph.
201 202 203 204 205 206 207 208 209 210 211
  if(WITH_ASCEND_CL)
    set(OP_FUNCTION_GENERETOR_DEPS
        pybind
        proto_desc
        executor
        layer
        tracer
        engine
        imperative_profiler
        imperative_flag
        ascend_wrapper)
212
  else()
213 214 215 216 217 218 219 220 221
    set(OP_FUNCTION_GENERETOR_DEPS
        pybind
        proto_desc
        executor
        layer
        tracer
        engine
        imperative_profiler
        imperative_flag)
222
  endif()
L
Leo Chen 已提交
223 224 225
  list(APPEND OP_FUNCTION_GENERETOR_DEPS ${GLOB_OP_LIB})
  list(APPEND OP_FUNCTION_GENERETOR_DEPS ${GLOB_OPERATOR_DEPS})

226
  if(WITH_NCCL OR WITH_RCCL)
L
Leo Chen 已提交
227
    list(APPEND OP_FUNCTION_GENERETOR_DEPS nccl_context)
228
  endif()
L
Leo Chen 已提交
229

230 231
  if(WITH_XPU_BKCL)
    list(APPEND OP_FUNCTION_GENERETOR_DEPS bkcl_context)
232
  endif()
233

234 235
  if(WITH_ASCEND_CL)
    list(APPEND OP_FUNCTION_GENERETOR_DEPS hccl_context)
236
  endif()
237

238 239
  if(WITH_CNCL)
    list(APPEND OP_FUNCTION_GENERETOR_DEPS cncl_context)
240
  endif()
241

L
Leo Chen 已提交
242
  add_executable(op_function_generator op_function_generator.cc)
243
  target_link_libraries(op_function_generator ${OP_FUNCTION_GENERETOR_DEPS})
244
  add_executable(eager_op_function_generator eager_op_function_generator.cc)
245 246
  target_link_libraries(eager_op_function_generator
                        ${OP_FUNCTION_GENERETOR_DEPS})
247 248
  if(NOT WIN32)
    add_executable(kernel_signature_generator kernel_signature_generator.cc)
249 250
    target_link_libraries(kernel_signature_generator
                          ${OP_FUNCTION_GENERETOR_DEPS})
251
  endif()
252

253
  get_property(os_dependency_modules GLOBAL PROPERTY OS_DEPENDENCY_MODULES)
L
Leo Chen 已提交
254
  target_link_libraries(op_function_generator ${os_dependency_modules})
255
  target_link_libraries(eager_op_function_generator ${os_dependency_modules})
256 257
  if(WITH_ROCM)
    target_link_libraries(op_function_generator ${ROCM_HIPRTC_LIB})
258
    target_link_libraries(eager_op_function_generator ${ROCM_HIPRTC_LIB})
259
    target_link_libraries(kernel_signature_generator ${ROCM_HIPRTC_LIB})
260
  endif()
L
Leo Chen 已提交
261

262 263
  set(impl_file ${CMAKE_SOURCE_DIR}/paddle/fluid/pybind/op_function_impl.h)
  set(tmp_impl_file ${impl_file}.tmp)
264 265
  set(eager_impl_file
      ${CMAKE_SOURCE_DIR}/paddle/fluid/pybind/eager_op_function_impl.h)
266
  set(tmp_eager_impl_file ${eager_impl_file}.tmp)
267

268
  set(OP_IMPL_DEPS op_function_generator)
269 270
  set(EAGER_OP_IMPL_DEPS eager_op_function_generator
                         eager_final_state_python_c_codegen)
271

272
  if(WIN32)
273
    if("${CMAKE_GENERATOR}" STREQUAL "Ninja")
274
      set(op_impl_path "${CMAKE_CURRENT_BINARY_DIR}")
275
    else()
276
      set(op_impl_path "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}")
277
    endif()
278

279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315
    file(
      WRITE
      ${CMAKE_BINARY_DIR}/paddle/fluid/pybind/op_function_generator_retry.bat
      ""
      "set build_times=1\n"
      ":retry\n"
      "ECHO op_function_generator run %build_times% time\n"
      "taskkill /f /im op_function_generator.exe 2>NUL\n"
      "${op_impl_path}/op_function_generator.exe ${tmp_impl_file}\n"
      "if %ERRORLEVEL% NEQ 0 (\n"
      "    set /a build_times=%build_times%+1\n"
      "    if %build_times% GEQ 10 (\n"
      "        exit /b 1\n"
      "    ) else (\n"
      "        goto :retry\n"
      "    )\n"
      ")\n"
      "exit /b 0")

    file(
      WRITE
      ${CMAKE_BINARY_DIR}/paddle/fluid/pybind/eager_op_function_generator_retry.bat
      ""
      "set build_times=1\n"
      ":retry\n"
      "ECHO eager_op_function_generator run %build_times% time\n"
      "taskkill /f /im eager_op_function_generator.exe 2>NUL\n"
      "${op_impl_path}/eager_op_function_generator.exe ${tmp_eager_impl_file}\n"
      "if %ERRORLEVEL% NEQ 0 (\n"
      "    set /a build_times=%build_times%+1\n"
      "    if %build_times% GEQ 10 (\n"
      "        exit /b 1\n"
      "    ) else (\n"
      "        goto :retry\n"
      "    )\n"
      ")\n"
      "exit /b 0")
316

317
    if(${CBLAS_PROVIDER} STREQUAL MKLML)
318 319 320 321
      add_custom_command(
        OUTPUT ${op_impl_path}/libiomp5md.dll
        COMMAND ${CMAKE_COMMAND} -E copy ${MKLML_SHARED_IOMP_LIB}
                ${op_impl_path}
322 323
        DEPENDS mklml)
      list(APPEND OP_IMPL_DEPS ${op_impl_path}/libiomp5md.dll)
324
      list(APPEND EAGER_OP_IMPL_DEPS ${op_impl_path}/libiomp5md.dll)
325
    else()
326 327
      add_custom_command(
        OUTPUT ${op_impl_path}/openblas.dll
328 329 330
        COMMAND ${CMAKE_COMMAND} -E copy ${OPENBLAS_SHARED_LIB} ${op_impl_path}
        DEPENDS extern_openblas)
      list(APPEND OP_IMPL_DEPS ${op_impl_path}/openblas.dll)
331
      list(APPEND EAGER_OP_IMPL_DEPS ${op_impl_path}/openblas.dll)
332
    endif()
L
Leo Chen 已提交
333
    if(WITH_MKLDNN)
334 335
      add_custom_command(
        OUTPUT ${op_impl_path}/mkldnn.dll
336 337
        COMMAND ${CMAKE_COMMAND} -E copy ${MKLDNN_SHARED_LIB} ${op_impl_path}
        DEPENDS mkldnn)
338 339
      list(APPEND OP_IMPL_DEPS ${op_impl_path}/mkldnn.dll)
      list(APPEND EAGER_OP_IMPL_DEPS ${op_impl_path}/mkldnn.dll)
340
    endif()
341
    if(WITH_ONNXRUNTIME)
342 343
      add_custom_command(
        OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/paddle2onnx.dll
344
        COMMAND ${CMAKE_COMMAND} -E copy ${PADDLE2ONNX_LIB}
345
                ${CMAKE_CURRENT_BINARY_DIR}
346 347
        DEPENDS paddle2onnx)
      list(APPEND OP_IMPL_DEPS ${CMAKE_CURRENT_BINARY_DIR}/paddle2onnx.dll)
348 349
      list(APPEND EAGER_OP_IMPL_DEPS
           ${CMAKE_CURRENT_BINARY_DIR}/paddle2onnx.dll)
350

351 352 353 354
      add_custom_command(
        OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/onnxruntime.dll
        COMMAND ${CMAKE_COMMAND} -E copy ${ONNXRUNTIME_SHARED_LIB}
                ${CMAKE_CURRENT_BINARY_DIR}
355 356
        DEPENDS onnxruntime)
      list(APPEND OP_IMPL_DEPS ${CMAKE_CURRENT_BINARY_DIR}/onnxruntime.dll)
357 358
      list(APPEND EAGER_OP_IMPL_DEPS
           ${CMAKE_CURRENT_BINARY_DIR}/onnxruntime.dll)
359
    endif()
360

361 362 363 364 365 366
    add_custom_command(
      OUTPUT ${impl_file}
      COMMAND
        ${CMAKE_BINARY_DIR}/paddle/fluid/pybind/op_function_generator_retry.bat
      COMMAND ${CMAKE_COMMAND} -E copy_if_different ${tmp_impl_file}
              ${impl_file}
367 368
      COMMENT "copy_if_different ${tmp_impl_file} to ${impl_file}"
      DEPENDS ${OP_IMPL_DEPS})
369
    if(NOT ((NOT WITH_PYTHON) AND ON_INFER))
370 371 372 373 374 375
      add_custom_command(
        OUTPUT ${eager_impl_file}
        COMMAND
          ${CMAKE_BINARY_DIR}/paddle/fluid/pybind/eager_op_function_generator_retry.bat
        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${tmp_eager_impl_file}
                ${eager_impl_file}
376 377 378
        COMMENT "copy_if_different ${tmp_eager_impl_file} to ${eager_impl_file}"
        DEPENDS ${EAGER_OP_IMPL_DEPS})
    endif()
379
  else()
380
    # If there are no *.so in /usr/lib or LD_LIBRARY_PATH,
L
Leo Chen 已提交
381
    # copy these *.so to current directory and append current directory to
382
    # LD_LIBRARY_PATH. This is different with Windows platformm, which search
L
Leo Chen 已提交
383
    # *.dll in current directory automatically.
384
    if(WITH_ONNXRUNTIME)
H
heliqi 已提交
385 386 387 388
      set(PADDLE2ONNX_PYBIND_OUT
          ${CMAKE_CURRENT_BINARY_DIR}/${PADDLE2ONNX_LIB_NAME})
      set(ONNXRUNTIME_PYBIND_OUT
          ${CMAKE_CURRENT_BINARY_DIR}/${ONNXRUNTIME_LIB_NAME})
389

390 391 392 393
      add_custom_command(
        OUTPUT ${PADDLE2ONNX_PYBIND_OUT}
        COMMAND ${CMAKE_COMMAND} -E copy ${PADDLE2ONNX_LIB}
                ${CMAKE_CURRENT_BINARY_DIR}
394 395 396 397
        DEPENDS paddle2onnx)
      list(APPEND OP_IMPL_DEPS ${PADDLE2ONNX_PYBIND_OUT})
      list(APPEND EAGER_OP_IMPL_DEPS ${PADDLE2ONNX_PYBIND_OUT})

398 399 400 401
      add_custom_command(
        OUTPUT ${ONNXRUNTIME_PYBIND_OUT}
        COMMAND ${CMAKE_COMMAND} -E copy ${ONNXRUNTIME_LIB}
                ${CMAKE_CURRENT_BINARY_DIR}
402 403 404 405 406
        DEPENDS onnxruntime)
      list(APPEND OP_IMPL_DEPS ${ONNXRUNTIME_PYBIND_OUT})
      list(APPEND EAGER_OP_IMPL_DEPS ${ONNXRUNTIME_PYBIND_OUT})
    endif()

407
    if(WITH_MKLML)
408 409 410 411
      add_custom_command(
        OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/libiomp5.so
        COMMAND ${CMAKE_COMMAND} -E copy ${MKLML_SHARED_IOMP_LIB}
                ${CMAKE_CURRENT_BINARY_DIR}
412 413
        DEPENDS mklml)
      list(APPEND OP_IMPL_DEPS ${CMAKE_CURRENT_BINARY_DIR}/libiomp5.so)
414
      list(APPEND EAGER_OP_IMPL_DEPS ${CMAKE_CURRENT_BINARY_DIR}/libiomp5.so)
415 416
    endif()
    if(WITH_MKLDNN)
417 418 419 420
      add_custom_command(
        OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/libdnnl.so.0
        COMMAND ${CMAKE_COMMAND} -E copy ${MKLDNN_SHARED_LIB}
                ${CMAKE_CURRENT_BINARY_DIR}
421 422
        DEPENDS mkldnn)
      list(APPEND OP_IMPL_DEPS ${CMAKE_CURRENT_BINARY_DIR}/libdnnl.so.0)
423
      list(APPEND EAGER_OP_IMPL_DEPS ${CMAKE_CURRENT_BINARY_DIR}/libdnnl.so.0)
424
    endif()
425 426 427 428 429 430 431 432 433 434
    add_custom_command(
      OUTPUT ${impl_file}
      COMMAND
        ${CMAKE_COMMAND} -E env "LD_LIBRARY_PATH=$ENV{LD_LIBRARY_PATH}:."
        "${CMAKE_CURRENT_BINARY_DIR}/op_function_generator" "${tmp_impl_file}"
      COMMAND ${CMAKE_COMMAND} -E copy_if_different ${tmp_impl_file}
              ${impl_file}
      COMMENT "copy_if_different ${tmp_impl_file} to ${impl_file}"
      DEPENDS ${OP_IMPL_DEPS}
      VERBATIM)
435
    if(NOT ((NOT WITH_PYTHON) AND ON_INFER))
436 437 438 439 440 441 442 443 444 445 446 447
      add_custom_command(
        OUTPUT ${eager_impl_file}
        COMMAND
          ${CMAKE_COMMAND} -E env "LD_LIBRARY_PATH=$ENV{LD_LIBRARY_PATH}:."
          "${CMAKE_CURRENT_BINARY_DIR}/eager_op_function_generator"
          "${tmp_eager_impl_file}"
        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${tmp_eager_impl_file}
                ${eager_impl_file}
        COMMENT "copy_if_different ${tmp_eager_impl_file} to ${eager_impl_file}"
        DEPENDS ${EAGER_OP_IMPL_DEPS}
        VERBATIM)
    endif()
448
  endif()
449
  add_custom_target(op_function_generator_cmd ALL DEPENDS ${impl_file})
450
  if(NOT ((NOT WITH_PYTHON) AND ON_INFER))
451 452
    add_custom_target(eager_op_function_generator_cmd ALL
                      DEPENDS ${eager_impl_file})
453
  endif()
L
Leo Chen 已提交
454

455 456 457 458 459 460
  list(APPEND PYBIND_DEPS interpretercore standalone_executor
       staticgraph_executor_statistics)
  cc_library(
    op_function_common
    SRCS op_function_common.cc
    DEPS ${PYBIND_DEPS})
461
  list(APPEND PYBIND_DEPS op_function_common)
462

463
  if(NOT ((NOT WITH_PYTHON) AND ON_INFER))
464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484
    cc_library(
      paddle_eager
      SRCS eager.cc eager_functions.cc eager_method.cc eager_properties.cc
           eager_utils.cc eager_py_layer.cc
      DEPS eager_api
           autograd_meta
           backward
           grad_node_info
           phi
           op_function_common
           final_dygraph_function
           final_dygraph_node
           dygraph_function
           dygraph_node
           accumulation_node
           py_layer_node
           global_utils
           utils
           python
           custom_operator
           custom_operator_node)
485 486 487 488
    add_dependencies(paddle_eager eager_codegen)
    add_dependencies(paddle_eager eager_op_function_generator_cmd)
    list(APPEND PYBIND_DEPS paddle_eager)
  endif()
489

490 491
  cc_library(
    paddle_pybind SHARED
492
    SRCS ${PYBIND_SRCS}
493
    DEPS ${PYBIND_DEPS} ${GLOB_OP_LIB} ${GLOB_OPERATOR_DEPS})
494

495 496
  if(NOT APPLE AND NOT WIN32)
    target_link_libraries(paddle_pybind rt)
497
  endif()
498 499 500 501

  if(WITH_ROCM)
    target_link_libraries(paddle_pybind ${ROCM_HIPRTC_LIB})
  endif()
502

503
  get_property(os_dependency_modules GLOBAL PROPERTY OS_DEPENDENCY_MODULES)
P
peizhilin 已提交
504
  target_link_libraries(paddle_pybind ${os_dependency_modules})
505
  add_dependencies(paddle_pybind op_function_generator_cmd)
506
endif()