@@ -4,21 +4,61 @@ else ()
4
4
set (PADDLE_FLOAT_TYPE float)
5
5
endif ()
6
6
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.
7
11
configure_file (config.h.in config.h @ONLY)
8
12
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)
13
19
file (GLOB CAPI_SOURCES *.cpp)
14
20
21
+ # building paddle_capi
15
22
add_library (paddle_capi STATIC ${CAPI_SOURCES} )
16
23
17
24
target_include_directories (paddle_capi PUBLIC ${CMAKE_CURRENT_BINARY_DIR} )
25
+
18
26
add_style_check_target(paddle_capi ${CAPI_SOURCES} ${CAPI_HEADER}
19
27
${CAPI_PRIVATE_HEADER} )
28
+
20
29
add_dependencies (paddle_capi gen_proto_cpp)
21
30
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
22
62
set (PADDLE_CAPI_INC_PATH
23
63
${CMAKE_CURRENT_BINARY_DIR}
24
64
${CMAKE_CURRENT_SOURCE_DIR} )
0 commit comments