Skip to content

Commit 97eebb4

Browse files
DAVE
1 parent 39eeece commit 97eebb4

File tree

112 files changed

+26692
-6
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

112 files changed

+26692
-6
lines changed

library-vcpkg/CMakeLists.txt

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
file(GLOB THE_SOURCES "${DPP_ROOT_PATH}/src/dpp/events/*.cpp" "${DPP_ROOT_PATH}/src/dpp/cluster/*.cpp" "${DPP_ROOT_PATH}/src/dpp/*.cpp" "${DPP_ROOT_PATH}/src/dpp/*.rc")
1+
file(GLOB THE_SOURCES "${DPP_ROOT_PATH}/src/dpp/events/*.cpp" "${DPP_ROOT_PATH}/dpp/dave/*.cpp" "${DPP_ROOT_PATH}/src/dpp/cluster/*.cpp" "${DPP_ROOT_PATH}/src/dpp/*.cpp" "${DPP_ROOT_PATH}/src/dpp/*.rc")
22

33
set(LIB_NAME "${PROJECT_NAME}")
44

@@ -40,8 +40,8 @@ target_compile_options(
4040
PRIVATE
4141
"$<$<PLATFORM_ID:Windows>:$<$<CONFIG:Debug>:/sdl;/Od;/DEBUG;/MP;/DFD_SETSIZE=1024>>"
4242
"$<$<PLATFORM_ID:Windows>:$<$<CONFIG:Release>:/O2;/Oi;/Oy;/GL;/Gy;/sdl;/MP;/DFD_SETSIZE=1024>>"
43-
"$<$<PLATFORM_ID:Linux>:$<$<CONFIG:Debug>:-Wall;-Wempty-body;-Wno-psabi;-Wunknown-pragmas;-Wignored-qualifiers;-Wimplicit-fallthrough;-Wmissing-field-initializers;-Wsign-compare;-Wtype-limits;-Wuninitialized;-Wshift-negative-value;-pthread;-g;-Og;-fPIC>>"
44-
"$<$<PLATFORM_ID:Linux>:$<$<CONFIG:Release>:-Wall;-Wempty-body;-Wno-psabi;-Wunknown-pragmas;-Wignored-qualifiers;-Wimplicit-fallthrough;-Wmissing-field-initializers;-Wsign-compare;-Wtype-limits;-Wuninitialized;-Wshift-negative-value;-pthread;-O3;-fPIC>>"
43+
"$<$<PLATFORM_ID:Linux>:$<$<CONFIG:Debug>:-fPIC;-Wall;-Wempty-body;-Wno-psabi;-Wunknown-pragmas;-Wignored-qualifiers;-Wimplicit-fallthrough;-Wmissing-field-initializers;-Wsign-compare;-Wtype-limits;-Wuninitialized;-Wshift-negative-value;-pthread;-g;-Og;-fPIC>>"
44+
"$<$<PLATFORM_ID:Linux>:$<$<CONFIG:Release>:-fPIC;-Wall;-Wempty-body;-Wno-psabi;-Wunknown-pragmas;-Wignored-qualifiers;-Wimplicit-fallthrough;-Wmissing-field-initializers;-Wsign-compare;-Wtype-limits;-Wuninitialized;-Wshift-negative-value;-pthread;-O3;-fPIC>>"
4545
"${AVX_FLAG}"
4646
)
4747

@@ -60,6 +60,11 @@ target_include_directories(
6060
"$<INSTALL_INTERFACE:include>"
6161
)
6262

63+
add_subdirectory("${DPP_ROOT_PATH}/mlspp" "mlspp")
64+
include_directories("${DPP_ROOT_PATH}/mlspp/include")
65+
include_directories("${DPP_ROOT_PATH}/mlspp/lib/bytes/include")
66+
include_directories("${DPP_ROOT_PATH}/mlspp/lib/hpke/include")
67+
6368
set_target_properties(
6469
"${LIB_NAME}" PROPERTIES
6570
OUTPUT_NAME "dpp"
@@ -90,6 +95,16 @@ target_link_libraries(
9095
$<$<TARGET_EXISTS:Threads::Threads>:Threads::Threads>
9196
)
9297

98+
# Private statically linked dependencies
99+
target_link_libraries(
100+
${LIB_NAME} PRIVATE
101+
mlspp
102+
mls_vectors
103+
bytes
104+
tls_syntax
105+
hpke
106+
)
107+
93108
set(CONFIG_FILE_NAME "${PROJECT_NAME}Config.cmake")
94109
set(EXPORTED_TARGETS_NAME "${PROJECT_NAME}Targets")
95110
set(EXPORTED_TARGETS_FILE_NAME "${EXPORTED_TARGETS_NAME}.cmake")

library/CMakeLists.txt

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ if(MSVC)
197197
endif()
198198
string(REGEX REPLACE "/W[1|2|3|4]" "/W3" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
199199
else()
200-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-unused-private-field -Wno-psabi -Wempty-body -Wignored-qualifiers -Wimplicit-fallthrough -Wmissing-field-initializers -Wsign-compare -Wtype-limits -Wuninitialized -Wshift-negative-value -pthread")
200+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wno-unused-private-field -Wno-psabi -Wempty-body -Wignored-qualifiers -Wimplicit-fallthrough -Wmissing-field-initializers -Wsign-compare -Wtype-limits -Wuninitialized -Wshift-negative-value -pthread")
201201
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Og")
202202

203203
if (NOT MINGW)
@@ -209,11 +209,16 @@ set(modules_dir "../src")
209209

210210
file(GLOB subdirlist ${modules_dir}/dpp)
211211

212+
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/../mlspp" "mlspp")
213+
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../mlspp/include")
214+
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../mlspp/lib/bytes/include")
215+
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../mlspp/lib/hpke/include")
216+
212217
foreach (fullmodname ${subdirlist})
213218
get_filename_component(modname ${fullmodname} NAME)
214219
set (modsrc "")
215-
216-
file(GLOB modsrc "${modules_dir}/dpp/*.cpp" "${modules_dir}/dpp/events/*.cpp" "${modules_dir}/dpp/cluster/*.cpp" "${modules_dir}/dpp/*.rc")
220+
221+
file(GLOB modsrc "${modules_dir}/dpp/*.cpp" "${modules_dir}/dpp/dave/*.cpp" "${modules_dir}/dpp/events/*.cpp" "${modules_dir}/dpp/cluster/*.cpp" "${modules_dir}/dpp/*.rc")
217222

218223
if(BUILD_SHARED_LIBS)
219224
add_library(${modname} SHARED ${modsrc})
@@ -241,6 +246,7 @@ foreach (fullmodname ${subdirlist})
241246
endif()
242247

243248
if (WIN32 AND NOT MINGW)
249+
244250
if (NOT WINDOWS_32_BIT)
245251
target_link_libraries(${modname} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/../win32/lib/libssl.lib"
246252
"${CMAKE_CURRENT_SOURCE_DIR}/../win32/lib/libcrypto.lib"
@@ -262,13 +268,24 @@ foreach (fullmodname ${subdirlist})
262268
endif ()
263269
endif()
264270

271+
# Private statically linked dependencies
272+
target_link_libraries(${modname} PRIVATE
273+
mlspp
274+
mls_vectors
275+
bytes
276+
tls_syntax
277+
hpke
278+
)
279+
265280
if (HAVE_VOICE)
266281
target_link_libraries(${modname} PUBLIC ${sodium_LIBRARY_RELEASE} ${OPUS_LIBRARIES})
267282

268283
include_directories(${OPUS_INCLUDE_DIRS} ${sodium_INCLUDE_DIR})
269284
endif()
270285
endforeach()
271286

287+
288+
272289
target_compile_features(dpp PUBLIC cxx_std_17)
273290
target_compile_features(dpp PRIVATE cxx_constexpr)
274291
target_compile_features(dpp PRIVATE cxx_auto_type)

mlspp/CMakeLists.txt

Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
cmake_minimum_required(VERSION 3.13)
2+
3+
project(mlspp
4+
VERSION 0.1
5+
LANGUAGES CXX
6+
)
7+
8+
option(TESTING "Build tests" OFF)
9+
option(CLANG_TIDY "Perform linting with clang-tidy" OFF)
10+
option(SANITIZERS "Enable sanitizers" OFF)
11+
option(MLS_NAMESPACE_SUFFIX "Namespace Suffix for CXX and CMake Export")
12+
option(DISABLE_GREASE "Disables the inclusion of MLS protocol recommended GREASE values" OFF)
13+
option(REQUIRE_BORINGSSL "Require BoringSSL instead of OpenSSL" OFF)
14+
15+
if(MLS_NAMESPACE_SUFFIX)
16+
set(MLS_CXX_NAMESPACE "mls_${MLS_NAMESPACE_SUFFIX}" CACHE STRING "Top-level Namespace for CXX")
17+
set(MLS_EXPORT_NAMESPACE "MLSPP${MLS_NAMESPACE_SUFFIX}" CACHE STRING "Namespace for CMake Export")
18+
else()
19+
set(MLS_CXX_NAMESPACE "../include/dpp/mlspp/mls" CACHE STRING "Top-level Namespace for CXX")
20+
set(MLS_EXPORT_NAMESPACE "MLSPP" CACHE STRING "Namespace for CMake Export")
21+
endif()
22+
message(STATUS "CXX Namespace: ${MLS_CXX_NAMESPACE}")
23+
message(STATUS "CMake Export Namespace: ${MLS_EXPORT_NAMESPACE}")
24+
25+
26+
###
27+
### Global Config
28+
###
29+
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
30+
31+
configure_file(
32+
"cmake/namespace.h.in"
33+
"${CMAKE_CURRENT_SOURCE_DIR}/include/namespace.h"
34+
@ONLY
35+
)
36+
37+
include(CheckCXXCompilerFlag)
38+
include(CMakePackageConfigHelpers)
39+
include(GNUInstallDirs)
40+
41+
set(CMAKE_CXX_STANDARD 17)
42+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
43+
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU")
44+
add_compile_options(-Wall -pedantic -Wextra -Werror -Wmissing-declarations)
45+
elseif(MSVC)
46+
add_compile_options(/W4 /WX)
47+
add_definitions(-DWINDOWS)
48+
49+
# MSVC helpfully recommends safer equivalents for things like
50+
# getenv, but they are not portable.
51+
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
52+
endif()
53+
54+
if("$ENV{MACOSX_DEPLOYMENT_TARGET}" STREQUAL "10.11")
55+
add_compile_options(-DVARIANT_COMPAT)
56+
endif()
57+
58+
if (DISABLE_GREASE)
59+
add_compile_options(-DDISABLE_GREASE)
60+
endif ()
61+
62+
###
63+
### Dependencies
64+
###
65+
66+
# Configure vcpkg to only build release libraries
67+
set(VCPKG_BUILD_TYPE release)
68+
69+
# External libraries
70+
find_package(OpenSSL REQUIRED)
71+
if ( OPENSSL_FOUND )
72+
find_path(BORINGSSL_INCLUDE_DIR openssl/is_boringssl.h HINTS ${OPENSSL_INCLUDE_DIR} NO_DEFAULT_PATH)
73+
74+
if (BORINGSSL_INCLUDE_DIR)
75+
message(STATUS "Found OpenSSL includes are for BoringSSL")
76+
77+
add_compile_definitions(WITH_BORINGSSL)
78+
79+
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU")
80+
add_compile_options(-Wno-gnu-anonymous-struct -Wno-nested-anon-types)
81+
endif ()
82+
83+
file(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/crypto.h" boringssl_version_str
84+
REGEX "^#[\t ]*define[\t ]+OPENSSL_VERSION_TEXT[\t ]+\"OpenSSL ([0-9])+\\.([0-9])+\\.([0-9])+ .+")
85+
86+
string(REGEX REPLACE "^.*OPENSSL_VERSION_TEXT[\t ]+\"OpenSSL ([0-9]+\\.[0-9]+\\.[0-9])+ .+$"
87+
"\\1" OPENSSL_VERSION "${boringssl_version_str}")
88+
89+
elseif (REQUIRE_BORINGSSL)
90+
message(FATAL_ERROR "BoringSSL required but not found")
91+
endif ()
92+
93+
if (${OPENSSL_VERSION} VERSION_GREATER_EQUAL 3)
94+
add_compile_definitions(WITH_OPENSSL3)
95+
elseif(${OPENSSL_VERSION} VERSION_LESS 1.1.1)
96+
message(FATAL_ERROR "OpenSSL 1.1.1 or greater is required")
97+
endif()
98+
message(STATUS "OpenSSL Found: ${OPENSSL_VERSION}")
99+
message(STATUS "OpenSSL Include: ${OPENSSL_INCLUDE_DIR}")
100+
message(STATUS "OpenSSL Libraries: ${OPENSSL_LIBRARIES}")
101+
else()
102+
message(FATAL_ERROR "No OpenSSL library found")
103+
endif()
104+
105+
# Internal libraries
106+
add_subdirectory(lib)
107+
108+
# Third-Party libraries in tree
109+
add_subdirectory(third_party)
110+
111+
112+
###
113+
### Library Config
114+
###
115+
116+
set(LIB_NAME "${PROJECT_NAME}")
117+
118+
file(GLOB_RECURSE LIB_HEADERS CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/include/*.h")
119+
file(GLOB_RECURSE LIB_SOURCES CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
120+
121+
add_library(${LIB_NAME} STATIC ${LIB_HEADERS} ${LIB_SOURCES})
122+
add_dependencies(${LIB_NAME} bytes tls_syntax hpke)
123+
target_link_libraries(${LIB_NAME} bytes tls_syntax hpke)
124+
target_include_directories(${LIB_NAME}
125+
PUBLIC
126+
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
127+
$<INSTALL_INTERFACE:include/${PROJECT_NAME}>
128+
PRIVATE
129+
${OPENSSL_INCLUDE_DIR}
130+
)
131+
132+
install(TARGETS ${LIB_NAME} EXPORT mlspp-targets)
133+
134+
135+
###
136+
### Exports
137+
###
138+
set(CMAKE_EXPORT_PACKAGE_REGISTRY ON)
139+
export(
140+
EXPORT
141+
mlspp-targets
142+
NAMESPACE
143+
${MLS_EXPORT_NAMESPACE}::
144+
FILE
145+
${MLS_EXPORT_NAMESPACE}Targets.cmake)
146+
export(PACKAGE ${MLS_EXPORT_NAMESPACE})
147+
148+
configure_package_config_file(cmake/config.cmake.in
149+
${CMAKE_CURRENT_BINARY_DIR}/${MLS_EXPORT_NAMESPACE}Config.cmake
150+
INSTALL_DESTINATION ${CMAKE_INSTALL_DATADIR}/${MLS_EXPORT_NAMESPACE}
151+
NO_SET_AND_CHECK_MACRO)
152+
153+
write_basic_package_version_file(
154+
${CMAKE_CURRENT_BINARY_DIR}/${MLS_EXPORT_NAMESPACE}ConfigVersion.cmake
155+
VERSION ${PROJECT_VERSION}
156+
COMPATIBILITY SameMajorVersion)
157+
158+
###
159+
### Install
160+
###
161+
162+
install(
163+
EXPORT
164+
mlspp-targets
165+
NAMESPACE
166+
${MLS_EXPORT_NAMESPACE}::
167+
FILE
168+
${MLS_EXPORT_NAMESPACE}Targets.cmake
169+
DESTINATION
170+
${CMAKE_INSTALL_DATADIR}/${MLS_EXPORT_NAMESPACE})
171+
172+
install(
173+
DIRECTORY
174+
include
175+
DESTINATION
176+
${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
177+
178+
install(
179+
FILES
180+
${CMAKE_CURRENT_BINARY_DIR}/${MLS_EXPORT_NAMESPACE}Config.cmake
181+
${CMAKE_CURRENT_BINARY_DIR}/${MLS_EXPORT_NAMESPACE}ConfigVersion.cmake
182+
DESTINATION
183+
${CMAKE_INSTALL_DATADIR}/${MLS_EXPORT_NAMESPACE})
184+
185+
install(
186+
FILES
187+
LICENSE
188+
DESTINATION
189+
${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}
190+
RENAME
191+
copyright)
192+
193+
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib/bytes/include")
194+
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib/hpke/include")
195+
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib/mls_vectors/include")
196+
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib/tls_syntax/include")

mlspp/LICENSE

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
BSD 2-Clause License
2+
3+
Copyright (c) 2018, Cisco Systems
4+
All rights reserved.
5+
6+
Redistribution and use in source and binary forms, with or without
7+
modification, are permitted provided that the following conditions are met:
8+
9+
* Redistributions of source code must retain the above copyright notice, this
10+
list of conditions and the following disclaimer.
11+
12+
* Redistributions in binary form must reproduce the above copyright notice,
13+
this list of conditions and the following disclaimer in the documentation
14+
and/or other materials provided with the distribution.
15+
16+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
20+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

mlspp/cmake/config.cmake.in

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
@PACKAGE_INIT@
2+
3+
include(${CMAKE_CURRENT_LIST_DIR}/@[email protected])
4+
check_required_components(mlspp)

mlspp/cmake/namespace.h.in

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#pragma once
2+
3+
// Configurable top-level MLS namespace
4+
#define MLS_NAMESPACE @MLS_CXX_NAMESPACE@

0 commit comments

Comments
 (0)