blob: 36c516772608f24323169c39a4a7fb735a990a54 (
plain)
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
# ======================================
# OPC UA Discovery — Top-level build
# ======================================
#
# Builds three programs that demonstrate OPC UA discovery:
# ServerLDS — Local Discovery Server
# ServerRegister — Server that registers with the LDS
# ClientFindServers — Client that queries the LDS
#
# All programs link against DiscoveryCommon (shared helpers and
# config parser) which in turn depends on open62541.
cmake_minimum_required(VERSION 4.0)
project(OpcUaDiscovery C)
set(CMAKE_C_STANDARD 11)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
include(cmake/BuildDeps.cmake)
# ======================================
# Libraries and executables
# ======================================
# Shared helpers (file loading, security factories, config parser)
# used by all three programs.
add_library(DiscoveryCommon STATIC src/common.c src/config.c)
target_link_libraries(DiscoveryCommon open62541::open62541)
# Queries the LDS for registered servers and their endpoints.
add_executable(ClientFindServers src/client_find_servers.c)
target_link_libraries(ClientFindServers DiscoveryCommon)
# Runs the Local Discovery Server that other servers register with.
add_executable(ServerLDS src/server_lds.c)
target_link_libraries(ServerLDS DiscoveryCommon)
# Runs a server that periodically registers itself with the LDS.
add_executable(ServerRegister src/server_register.c)
target_link_libraries(ServerRegister DiscoveryCommon)
# ======================================
# Documentation
# ======================================
# Builds the open62541 HTML documentation via Sphinx.
# Requires python3-sphinx, python3-sphinx-rtd-theme, graphviz.
option(BUILD_DOC "Build open62541 HTML documentation" OFF)
if(BUILD_DOC)
add_custom_target(doc
COMMAND ${CMAKE_COMMAND} --build "${OPEN62541_BUILD_DIR}" --target doc
COMMENT "Building open62541 HTML documentation"
VERBATIM)
endif()
# ======================================
# Integration tests
# ======================================
#
# Each test exercises a combination of security mode/policy and
# authentication method. _test_names and _test_policies are
# parallel lists: the Nth name uses the Nth policy. Each name
# corresponds to a config directory under tests/ containing
# server_lds.conf, server_register.conf, client_find_servers.conf.
enable_testing ()
set (_test_script "${CMAKE_SOURCE_DIR}/tests/run_test.sh")
set (_test_names
none_anon
none_user
basic256sha256_anon
basic256sha256_user
aes128_anon
aes128_user)
set (_test_policies
None
None
Basic256Sha256
Basic256Sha256
Aes128_Sha256_RsaOaep
Aes128_Sha256_RsaOaep)
foreach (_name _policy IN ZIP_LISTS _test_names _test_policies)
add_test (NAME "${_name}"
COMMAND bash "${_test_script}" "tests/${_name}" "${_policy}")
set_tests_properties ("${_name}" PROPERTIES
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
TIMEOUT 30)
endforeach ()
|