Skip to content

Commit 85ea51a

Browse files
committed
+ add ci
1 parent 6966b96 commit 85ea51a

1 file changed

Lines changed: 218 additions & 21 deletions

File tree

CMakeLists.txt

Lines changed: 218 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -146,29 +146,224 @@ target_compile_definitions(instruments PRIVATE
146146
if(INSTRUMENTS_HAS_QUIC)
147147
target_compile_definitions(instruments PRIVATE INSTRUMENTS_HAS_QUIC)
148148

149-
# picoquic
150-
find_path(PICOQUIC_INCLUDE_DIRS picoquic.h
151-
PATHS
152-
${CMAKE_SOURCE_DIR}/../picoquic/picoquic
153-
${CMAKE_SOURCE_DIR}/../../Externals/picoquic/picoquic
154-
)
155-
find_library(PICOQUIC_LIBRARIES NAMES picoquic)
149+
find_package(OpenSSL REQUIRED)
156150

157-
# picotls
158-
find_path(PICOTLS_INCLUDE_DIRS picotls.h
159-
PATHS
160-
${CMAKE_SOURCE_DIR}/../picotls/include
161-
${CMAKE_SOURCE_DIR}/../../Externals/picotls/include
162-
)
163-
find_library(PICOTLS_LIBRARIES NAMES picotls)
151+
# ── picotls ──────────────────────────────────────────────────────────
152+
# Pass -DPICOTLS_SOURCE_DIR=/path/to/picotls to build from source,
153+
# otherwise falls back to find_library.
154+
if(DEFINED PICOTLS_SOURCE_DIR)
155+
add_library(instruments_picotls STATIC
156+
${PICOTLS_SOURCE_DIR}/lib/picotls.c
157+
${PICOTLS_SOURCE_DIR}/lib/hpke.c
158+
${PICOTLS_SOURCE_DIR}/lib/pembase64.c
159+
${PICOTLS_SOURCE_DIR}/lib/asn1.c
160+
${PICOTLS_SOURCE_DIR}/lib/openssl.c
161+
${PICOTLS_SOURCE_DIR}/lib/cifra.c
162+
${PICOTLS_SOURCE_DIR}/lib/cifra/x25519.c
163+
${PICOTLS_SOURCE_DIR}/lib/cifra/chacha20.c
164+
${PICOTLS_SOURCE_DIR}/lib/cifra/aes128.c
165+
${PICOTLS_SOURCE_DIR}/lib/cifra/aes256.c
166+
${PICOTLS_SOURCE_DIR}/lib/cifra/random.c
167+
${PICOTLS_SOURCE_DIR}/lib/minicrypto-pem.c
168+
${PICOTLS_SOURCE_DIR}/lib/uecc.c
169+
${PICOTLS_SOURCE_DIR}/lib/ffx.c
170+
${PICOTLS_SOURCE_DIR}/lib/micro-ecc.c
171+
${PICOTLS_SOURCE_DIR}/lib/cifra-core-chacha20.c
172+
${PICOTLS_SOURCE_DIR}/deps/cifra/src/aes.c
173+
${PICOTLS_SOURCE_DIR}/deps/cifra/src/blockwise.c
174+
${PICOTLS_SOURCE_DIR}/deps/cifra/src/chash.c
175+
${PICOTLS_SOURCE_DIR}/deps/cifra/src/curve25519.c
176+
${PICOTLS_SOURCE_DIR}/deps/cifra/src/drbg.c
177+
${PICOTLS_SOURCE_DIR}/deps/cifra/src/hmac.c
178+
${PICOTLS_SOURCE_DIR}/deps/cifra/src/gcm.c
179+
${PICOTLS_SOURCE_DIR}/deps/cifra/src/gf128.c
180+
${PICOTLS_SOURCE_DIR}/deps/cifra/src/modes.c
181+
${PICOTLS_SOURCE_DIR}/deps/cifra/src/poly1305.c
182+
${PICOTLS_SOURCE_DIR}/deps/cifra/src/sha256.c
183+
${PICOTLS_SOURCE_DIR}/deps/cifra/src/sha512.c
184+
)
185+
target_include_directories(instruments_picotls
186+
PUBLIC
187+
${PICOTLS_SOURCE_DIR}/include
188+
PRIVATE
189+
${PICOTLS_SOURCE_DIR}/picotlsvs/picotls
190+
${PICOTLS_SOURCE_DIR}/deps/cifra/src/ext
191+
${PICOTLS_SOURCE_DIR}/deps/cifra/src
192+
${PICOTLS_SOURCE_DIR}/deps/micro-ecc
193+
${OPENSSL_INCLUDE_DIR}
194+
)
195+
target_link_libraries(instruments_picotls PUBLIC OpenSSL::SSL OpenSSL::Crypto)
196+
if(WIN32)
197+
target_compile_definitions(instruments_picotls PRIVATE _WINDOWS)
198+
else()
199+
target_compile_definitions(instruments_picotls PRIVATE _GNU_SOURCE)
200+
target_compile_options(instruments_picotls PRIVATE -pthread)
201+
endif()
202+
if(NOT MSVC)
203+
target_compile_options(instruments_picotls PRIVATE
204+
-Wno-unused-parameter -Wno-missing-field-initializers
205+
-Wno-sign-compare -Wno-cast-function-type -Wno-incompatible-pointer-types
206+
)
207+
endif()
208+
set(PICOTLS_LIBRARIES instruments_picotls)
209+
set(PICOTLS_INCLUDE_DIRS ${PICOTLS_SOURCE_DIR}/include)
210+
else()
211+
find_path(PICOTLS_INCLUDE_DIRS picotls.h
212+
PATHS
213+
${CMAKE_SOURCE_DIR}/../picotls/include
214+
${CMAKE_SOURCE_DIR}/../../Externals/picotls/include
215+
)
216+
find_library(PICOTLS_LIBRARIES NAMES picotls)
217+
endif()
164218

165-
# lwIP
166-
find_path(LWIP_INCLUDE_DIRS lwip/init.h
167-
PATHS
168-
${CMAKE_SOURCE_DIR}/../lwip/src/include
169-
${CMAKE_SOURCE_DIR}/../../Externals/lwip/src/include
170-
)
171-
find_library(LWIP_LIBRARIES NAMES lwip)
219+
# ── picoquic ─────────────────────────────────────────────────────────
220+
# Pass -DPICOQUIC_SOURCE_DIR=/path/to/picoquic to build from source.
221+
if(DEFINED PICOQUIC_SOURCE_DIR)
222+
add_library(instruments_picoquic STATIC
223+
${PICOQUIC_SOURCE_DIR}/picoquic/bbr.c
224+
${PICOQUIC_SOURCE_DIR}/picoquic/bbr1.c
225+
${PICOQUIC_SOURCE_DIR}/picoquic/bytestream.c
226+
${PICOQUIC_SOURCE_DIR}/picoquic/c4.c
227+
${PICOQUIC_SOURCE_DIR}/picoquic/cc_common.c
228+
${PICOQUIC_SOURCE_DIR}/picoquic/config.c
229+
${PICOQUIC_SOURCE_DIR}/picoquic/cubic.c
230+
${PICOQUIC_SOURCE_DIR}/picoquic/ech.c
231+
${PICOQUIC_SOURCE_DIR}/picoquic/error_names.c
232+
${PICOQUIC_SOURCE_DIR}/picoquic/fastcc.c
233+
${PICOQUIC_SOURCE_DIR}/picoquic/frames.c
234+
${PICOQUIC_SOURCE_DIR}/picoquic/intformat.c
235+
${PICOQUIC_SOURCE_DIR}/picoquic/logger.c
236+
${PICOQUIC_SOURCE_DIR}/picoquic/logwriter.c
237+
${PICOQUIC_SOURCE_DIR}/picoquic/loss_recovery.c
238+
${PICOQUIC_SOURCE_DIR}/picoquic/newreno.c
239+
${PICOQUIC_SOURCE_DIR}/picoquic/pacing.c
240+
${PICOQUIC_SOURCE_DIR}/picoquic/packet.c
241+
${PICOQUIC_SOURCE_DIR}/picoquic/paths.c
242+
${PICOQUIC_SOURCE_DIR}/picoquic/performance_log.c
243+
${PICOQUIC_SOURCE_DIR}/picoquic/picohash.c
244+
${PICOQUIC_SOURCE_DIR}/picoquic/picoquic_lb.c
245+
${PICOQUIC_SOURCE_DIR}/picoquic/picoquic_ptls_openssl.c
246+
${PICOQUIC_SOURCE_DIR}/picoquic/picoquic_ptls_minicrypto.c
247+
${PICOQUIC_SOURCE_DIR}/picoquic/picosplay.c
248+
${PICOQUIC_SOURCE_DIR}/picoquic/port_blocking.c
249+
${PICOQUIC_SOURCE_DIR}/picoquic/prague.c
250+
${PICOQUIC_SOURCE_DIR}/picoquic/quicctx.c
251+
${PICOQUIC_SOURCE_DIR}/picoquic/register_all_cc_algorithms.c
252+
${PICOQUIC_SOURCE_DIR}/picoquic/sacks.c
253+
${PICOQUIC_SOURCE_DIR}/picoquic/sender.c
254+
${PICOQUIC_SOURCE_DIR}/picoquic/sim_link.c
255+
${PICOQUIC_SOURCE_DIR}/picoquic/siphash.c
256+
${PICOQUIC_SOURCE_DIR}/picoquic/spinbit.c
257+
${PICOQUIC_SOURCE_DIR}/picoquic/ticket_store.c
258+
${PICOQUIC_SOURCE_DIR}/picoquic/timing.c
259+
${PICOQUIC_SOURCE_DIR}/picoquic/token_store.c
260+
${PICOQUIC_SOURCE_DIR}/picoquic/tls_api.c
261+
${PICOQUIC_SOURCE_DIR}/picoquic/transport.c
262+
${PICOQUIC_SOURCE_DIR}/picoquic/unified_log.c
263+
${PICOQUIC_SOURCE_DIR}/picoquic/util.c
264+
)
265+
target_include_directories(instruments_picoquic
266+
PUBLIC ${PICOQUIC_SOURCE_DIR}/picoquic
267+
PRIVATE
268+
${PICOTLS_INCLUDE_DIRS}
269+
${PICOTLS_SOURCE_DIR}/deps/cifra/src
270+
${PICOTLS_SOURCE_DIR}/deps/cifra/src/ext
271+
${PICOTLS_SOURCE_DIR}/deps/micro-ecc
272+
${OPENSSL_INCLUDE_DIR}
273+
)
274+
target_compile_definitions(instruments_picoquic PRIVATE
275+
PTLS_WITHOUT_FUSION
276+
DISABLE_DEBUG_PRINTF
277+
)
278+
if(WIN32)
279+
target_compile_definitions(instruments_picoquic PRIVATE _WINDOWS _WIN32_WINNT=0x0A00)
280+
else()
281+
target_compile_definitions(instruments_picoquic PRIVATE _GNU_SOURCE)
282+
endif()
283+
if(NOT MSVC)
284+
target_compile_options(instruments_picoquic PRIVATE
285+
-Wno-unused-parameter -Wno-missing-field-initializers
286+
-Wno-sign-compare -Wno-extra -Wno-type-limits -Wno-unknown-pragmas
287+
)
288+
endif()
289+
target_link_libraries(instruments_picoquic PUBLIC ${PICOTLS_LIBRARIES})
290+
set(PICOQUIC_LIBRARIES instruments_picoquic)
291+
set(PICOQUIC_INCLUDE_DIRS ${PICOQUIC_SOURCE_DIR}/picoquic)
292+
else()
293+
find_path(PICOQUIC_INCLUDE_DIRS picoquic.h
294+
PATHS
295+
${CMAKE_SOURCE_DIR}/../picoquic/picoquic
296+
${CMAKE_SOURCE_DIR}/../../Externals/picoquic/picoquic
297+
)
298+
find_library(PICOQUIC_LIBRARIES NAMES picoquic)
299+
endif()
300+
301+
# ── lwIP ─────────────────────────────────────────────────────────────
302+
# Pass -DLWIP_SOURCE_DIR=/path/to/lwip to build from source.
303+
if(DEFINED LWIP_SOURCE_DIR)
304+
add_library(instruments_lwip STATIC
305+
${LWIP_SOURCE_DIR}/src/core/init.c
306+
${LWIP_SOURCE_DIR}/src/core/def.c
307+
${LWIP_SOURCE_DIR}/src/core/dns.c
308+
${LWIP_SOURCE_DIR}/src/core/inet_chksum.c
309+
${LWIP_SOURCE_DIR}/src/core/ip.c
310+
${LWIP_SOURCE_DIR}/src/core/mem.c
311+
${LWIP_SOURCE_DIR}/src/core/memp.c
312+
${LWIP_SOURCE_DIR}/src/core/netif.c
313+
${LWIP_SOURCE_DIR}/src/core/pbuf.c
314+
${LWIP_SOURCE_DIR}/src/core/raw.c
315+
${LWIP_SOURCE_DIR}/src/core/stats.c
316+
${LWIP_SOURCE_DIR}/src/core/sys.c
317+
${LWIP_SOURCE_DIR}/src/core/altcp.c
318+
${LWIP_SOURCE_DIR}/src/core/altcp_alloc.c
319+
${LWIP_SOURCE_DIR}/src/core/altcp_tcp.c
320+
${LWIP_SOURCE_DIR}/src/core/tcp.c
321+
${LWIP_SOURCE_DIR}/src/core/tcp_in.c
322+
${LWIP_SOURCE_DIR}/src/core/tcp_out.c
323+
${LWIP_SOURCE_DIR}/src/core/timeouts.c
324+
${LWIP_SOURCE_DIR}/src/core/udp.c
325+
${LWIP_SOURCE_DIR}/src/core/ipv4/acd.c
326+
${LWIP_SOURCE_DIR}/src/core/ipv4/autoip.c
327+
${LWIP_SOURCE_DIR}/src/core/ipv4/dhcp.c
328+
${LWIP_SOURCE_DIR}/src/core/ipv4/etharp.c
329+
${LWIP_SOURCE_DIR}/src/core/ipv4/icmp.c
330+
${LWIP_SOURCE_DIR}/src/core/ipv4/igmp.c
331+
${LWIP_SOURCE_DIR}/src/core/ipv4/ip4.c
332+
${LWIP_SOURCE_DIR}/src/core/ipv4/ip4_addr.c
333+
${LWIP_SOURCE_DIR}/src/core/ipv4/ip4_frag.c
334+
${LWIP_SOURCE_DIR}/src/core/ipv6/dhcp6.c
335+
${LWIP_SOURCE_DIR}/src/core/ipv6/ethip6.c
336+
${LWIP_SOURCE_DIR}/src/core/ipv6/icmp6.c
337+
${LWIP_SOURCE_DIR}/src/core/ipv6/inet6.c
338+
${LWIP_SOURCE_DIR}/src/core/ipv6/ip6.c
339+
${LWIP_SOURCE_DIR}/src/core/ipv6/ip6_addr.c
340+
${LWIP_SOURCE_DIR}/src/core/ipv6/ip6_frag.c
341+
${LWIP_SOURCE_DIR}/src/core/ipv6/mld6.c
342+
${LWIP_SOURCE_DIR}/src/core/ipv6/nd6.c
343+
${LWIP_SOURCE_DIR}/src/api/err.c
344+
${LWIP_SOURCE_DIR}/src/netif/ethernet.c
345+
${CMAKE_CURRENT_SOURCE_DIR}/src/connection/sys_arch.c
346+
)
347+
target_include_directories(instruments_lwip
348+
PUBLIC ${LWIP_SOURCE_DIR}/src/include
349+
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/connection
350+
)
351+
if(NOT MSVC)
352+
target_compile_options(instruments_lwip PRIVATE
353+
-Wno-unused-parameter -Wno-missing-field-initializers
354+
-Wno-sign-compare -Wno-address -Wno-extra
355+
)
356+
endif()
357+
set(LWIP_LIBRARIES instruments_lwip)
358+
set(LWIP_INCLUDE_DIRS ${LWIP_SOURCE_DIR}/src/include)
359+
else()
360+
find_path(LWIP_INCLUDE_DIRS lwip/init.h
361+
PATHS
362+
${CMAKE_SOURCE_DIR}/../lwip/src/include
363+
${CMAKE_SOURCE_DIR}/../../Externals/lwip/src/include
364+
)
365+
find_library(LWIP_LIBRARIES NAMES lwip)
366+
endif()
172367

173368
target_include_directories(instruments PRIVATE
174369
${PICOQUIC_INCLUDE_DIRS}
@@ -179,6 +374,8 @@ if(INSTRUMENTS_HAS_QUIC)
179374
${PICOQUIC_LIBRARIES}
180375
${PICOTLS_LIBRARIES}
181376
${LWIP_LIBRARIES}
377+
OpenSSL::SSL
378+
OpenSSL::Crypto
182379
)
183380
endif()
184381

0 commit comments

Comments
 (0)