Skip to content

Commit 4ac44bb

Browse files
committed
added protobuf as individual target
1 parent 68697bc commit 4ac44bb

File tree

1 file changed

+73
-19
lines changed

1 file changed

+73
-19
lines changed

CMakeLists.txt

Lines changed: 73 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -72,72 +72,112 @@ file(GLOB_RECURSE NANOPB_SOURCES RELATIVE ${CMAKE_CURRENT_BINARY_DIR}
7272
${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/src/nanopb-${NANOPB_VERSION}/*.c
7373
)
7474

75+
file(GLOB_RECURSE PROTOBUF_SOURCES RELATIVE ${CMAKE_CURRENT_BINARY_DIR}
76+
${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/src/protobuf/*.cpp
77+
${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/src/protobuf/*.c
78+
${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/src/protobuf_gen/*.pb.c
79+
)
80+
7581
file(GLOB_RECURSE FRI_SOURCES RELATIVE ${CMAKE_CURRENT_BINARY_DIR}
7682
${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/src/base/*.cpp
7783
${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/src/client_lbr/*.cpp
7884
${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/src/client_trafo/*.cpp
7985
${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/src/connection/*.cpp
80-
${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/src/protobuf/*.cpp
81-
${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/src/protobuf/*.c
82-
${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/src/protobuf_gen/*.pb.c
86+
)
87+
88+
# add nanopb library target under common namespace
89+
add_library(nanopb SHARED
90+
${NANOPB_SOURCES}
91+
)
92+
93+
# add protocol buffers and utilities under common namespace
94+
add_library(protobuf SHARED
95+
${PROTOBUF_SOURCES}
8396
)
8497

8598
# add FRI library target
8699
add_library(FRIClient SHARED
87100
${FRI_SOURCES}
88101
)
89102

90-
# add nanopb library target under common namespace
91-
add_library(nanopb STATIC
92-
${NANOPB_SOURCES}
103+
add_library(FRIClient::nanopb ALIAS nanopb) # alias for anyone adding this as a submodule
104+
add_library(FRIClient::protobuf ALIAS protobuf) # alias for anyone adding this as a submodule
105+
add_library(FRIClient::FRIClient ALIAS FRIClient) # alias for anyone adding this as a submodule
106+
107+
target_include_directories(nanopb
108+
PUBLIC
109+
$<INSTALL_INTERFACE:${FRIClient_SDK_NAME}/src/nanopb-${NANOPB_VERSION}>
110+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/src/nanopb-${NANOPB_VERSION}>
93111
)
94112

95-
add_library(FRIClient::FRIClient ALIAS FRIClient) # alias for anyone adding this as a submodule
96-
add_library(FRIClient::nanopb ALIAS nanopb) # alias for anyone adding this as a submodule
113+
target_include_directories(protobuf
114+
PUBLIC
115+
$<INSTALL_INTERFACE:${FRIClient_SDK_NAME}/src/protobuf_gen>
116+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/src/protobuf_gen>
117+
$<INSTALL_INTERFACE:${FRIClient_SDK_NAME}/src/protobuf>
118+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/src/protobuf>
119+
)
97120

98121
target_include_directories(FRIClient
99122
PUBLIC
100123
$<INSTALL_INTERFACE:include>
101124
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/include>
102125
PRIVATE
103126
${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/src/base
104-
${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/src/protobuf_gen
105-
${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/src/protobuf
106127
)
107128

108-
target_include_directories(nanopb
109-
PUBLIC
110-
$<INSTALL_INTERFACE:${FRIClient_SDK_NAME}/src/nanopb-${NANOPB_VERSION}>
111-
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/src/nanopb-${NANOPB_VERSION}>
129+
target_link_libraries(protobuf
130+
PRIVATE
131+
nanopb
112132
)
113133

114134
target_link_libraries(FRIClient
115135
PRIVATE
116136
nanopb
137+
protobuf
117138
)
118139

119140
if(MSVC)
120-
target_compile_options(FRIClient
141+
target_compile_options(nanopb
121142
PRIVATE
122143
-DPB_SYSTEM_HEADER="pb_syshdr_win.h"
123144
-DPB_FIELD_16BIT
124145
-DWIN32
125146
-DHAVE_STDINT_H
126147
-DHAVE_STDBOOL_H
127148
)
128-
else()
149+
target_compile_options(protobuf
150+
PRIVATE
151+
-DPB_FIELD_16BIT
152+
)
129153
target_compile_options(FRIClient
154+
PRIVATE
155+
-DWIN32
156+
)
157+
else()
158+
target_compile_options(nanopb
130159
PRIVATE
131160
-Wall
132161
-O2
133-
-DHAVE_SOCKLEN_T
134162
-DPB_SYSTEM_HEADER="pb_syshdr.h"
135163
-DPB_FIELD_16BIT
136164
-DHAVE_STDINT_H
137165
-DHAVE_STDDEF_H
138166
-DHAVE_STDBOOL_H
139167
-DHAVE_STDLIB_H
140168
-DHAVE_STRING_H
169+
)
170+
target_compile_options(protobuf
171+
PRIVATE
172+
-Wall
173+
-O2
174+
-DPB_FIELD_16BIT
175+
)
176+
target_compile_options(FRIClient
177+
PRIVATE
178+
-Wall
179+
-O2
180+
-DHAVE_SOCKLEN_T
141181
)
142182
endif()
143183

@@ -152,15 +192,24 @@ write_basic_package_version_file(
152192
COMPATIBILITY SameMajorVersion
153193
)
154194

155-
install(TARGETS FRIClient nanopb
195+
install(TARGETS nanopb protobuf FRIClient
156196
EXPORT FRIClientTargets
157197
LIBRARY DESTINATION lib
158198
INCLUDES DESTINATION include
159199
)
160200

161201
install(
162-
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/include/
202+
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/src/protobuf_gen/
203+
DESTINATION include
204+
FILES_MATCHING
205+
PATTERN *.h
206+
)
207+
208+
install(
209+
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/src/protobuf/
163210
DESTINATION include
211+
FILES_MATCHING
212+
PATTERN *.h
164213
)
165214

166215
install(
@@ -170,6 +219,11 @@ install(
170219
PATTERN *.h
171220
)
172221

222+
install(
223+
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/include/
224+
DESTINATION include
225+
)
226+
173227
install(EXPORT FRIClientTargets
174228
FILE FRIClientConfig.cmake
175229
NAMESPACE FRIClient::

0 commit comments

Comments
 (0)