Skip to content

Commit 4fd6888

Browse files
committed
C-API for model inference.
1 parent 06b1a6a commit 4fd6888

File tree

1 file changed

+44
-4
lines changed

1 file changed

+44
-4
lines changed

paddle/capi/CMakeLists.txt

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,61 @@ else ()
44
set(PADDLE_FLOAT_TYPE float)
55
endif()
66

7+
# config.h used for C-API. It will store Paddle building configuration as a
8+
# header. Make user just include PaddleCAPI.h then can get building
9+
# configuration without explicitly set -DPADDLE_WITH_DOUBLE when building their
10+
# libraries.
711
configure_file(config.h.in config.h @ONLY)
812

9-
set(CAPI_HEADER
10-
PaddleCAPI.h)
11-
set(CAPI_PRIVATE_HEADER
12-
PaddleCAPIPrivate.h)
13+
# PaddleCAPI.h is the only header we exposed. It currently only used for model
14+
# inference.
15+
set(CAPI_HEADER PaddleCAPI.h)
16+
17+
18+
set(CAPI_PRIVATE_HEADER PaddleCAPIPrivate.h)
1319
file(GLOB CAPI_SOURCES *.cpp)
1420

21+
# building paddle_capi
1522
add_library(paddle_capi STATIC ${CAPI_SOURCES})
1623

1724
target_include_directories(paddle_capi PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
25+
1826
add_style_check_target(paddle_capi ${CAPI_SOURCES} ${CAPI_HEADER}
1927
${CAPI_PRIVATE_HEADER})
28+
2029
add_dependencies(paddle_capi gen_proto_cpp)
2130

31+
32+
# combine all paddle static libraries together, into libpaddle_capi_whole.a
33+
# user should use PaddleCAPI as -lpaddle_capi_whole
34+
set(capi_whole_library libpaddle_capi_whole.a)
35+
add_custom_target(paddle_capi_whole
36+
COMMAND mkdir -p o_files/capi && cd o_files/capi/ && ar -x $<TARGET_FILE:paddle_capi>
37+
COMMAND mkdir -p o_files/utils && cd o_files/utils/ && ar -x $<TARGET_FILE:paddle_utils>
38+
COMMAND mkdir -p o_files/parameter && cd o_files/parameter/ && ar -x $<TARGET_FILE:paddle_parameter>
39+
COMMAND mkdir -p o_files/math && cd o_files/math/ && ar -x $<TARGET_FILE:paddle_math>
40+
COMMAND mkdir -p o_files/cuda && cd o_files/cuda/ && ar -x $<TARGET_FILE:paddle_cuda>
41+
COMMAND mkdir -p o_files/function && cd o_files/function/ && ar -x $<TARGET_FILE:paddle_function>
42+
COMMAND mkdir -p o_files/pserver && cd o_files/pserver/ && ar -x $<TARGET_FILE:paddle_pserver>
43+
COMMAND mkdir -p o_files/gserver && cd o_files/gserver/ && ar -x $<TARGET_FILE:paddle_gserver>
44+
COMMAND mkdir -p o_files/proto && cd o_files/proto/ && ar -x $<TARGET_FILE:paddle_proto>
45+
COMMAND ar crs ${capi_whole_library} `find ./o_files -name '*.o'`
46+
COMMAND rm -rf o_files
47+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
48+
DEPENDS paddle_capi paddle_utils paddle_parameter paddle_math
49+
paddle_cuda paddle_function paddle_pserver paddle_gserver
50+
paddle_proto
51+
)
52+
set_target_properties(paddle_capi_whole
53+
PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/${capi_whole_library})
54+
55+
# install library & headers.
56+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${capi_whole_library} DESTINATION lib)
57+
install(FILES ${CAPI_HEADER} DESTINATION include/paddle)
58+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/config.h DESTINATION include/paddle)
59+
60+
61+
# this variable used for unittest
2262
set(PADDLE_CAPI_INC_PATH
2363
${CMAKE_CURRENT_BINARY_DIR}
2464
${CMAKE_CURRENT_SOURCE_DIR})

0 commit comments

Comments
 (0)