incremental
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1fc7796..e9b3e75 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,7 +1,5 @@
cmake_minimum_required(VERSION 2.8.10 FATAL_ERROR)
-cmake_policy(SET CMP0054 OLD)
-
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
message("${CMAKE_MODULE_PATH}")
@@ -10,27 +8,18 @@
#SET(HUNTER_STATUS_DEBUG ON)
-#SET(MSAN_CXX_FLAGS "-fsanitize=memory -stdlib=libc++ -I/home/ed/libcxx_msan/include -I/home/ed/libcxx_msan/include/c++/v1")
-#SET(MSAN_LINKER_EXE_FLAGS "${MSAN_CXX_FLAGS} -lc++abi -L/home/ed/libcxx_msan/lib -Wl,-rpath,I/home/ed/libcxx_msan/lib")
-
-#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MSAN_CXX_FLAGS}")
-#SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${MSAN_LINKER_EXE_FLAGS}")
# Debug information
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fno-omit-frame-pointer")
#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")
#SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-rtti")
-
include("cmake/HunterGate.cmake")
HunterGate(
URL "https://github.com/ruslo/hunter/archive/v0.18.44.tar.gz"
SHA1 "a78f0b377b8e53c038f12fc18b0c02564c4534c8"
)
-
-option(BUILD_FOR_EMBEDDED "Build for device target" ON)
-
project(bmc-webserver CXX C)
set(CMAKE_CXX_STANDARD 14)
@@ -38,10 +27,52 @@
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+if (MSAN)
+ if(NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ message(FATAL_ERROR "Cannot enable MSAN unless using Clang")
+ endif()
+
+ if (ASAN)
+ message(FATAL_ERROR "ASAN and MSAN are mutually exclusive")
+ endif()
+
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MSAN_CXX_FLAGS}")
+ SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${MSAN_LINKER_EXE_FLAGS}")
+
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer")
+ set(OPENSSL_NO_ASM "1")
+ set(LIBC++ ON)
+endif()
+
+if (ASAN)
+ if(NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ message(FATAL_ERROR "Cannot enable ASAN unless using Clang")
+ endif()
+
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fsanitize-address-use-after-scope -fno-omit-frame-pointer")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fsanitize-address-use-after-scope -fno-omit-frame-pointer")
+ set(OPENSSL_NO_ASM "1")
+endif()
+
+if (GCOV)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
+endif()
+
if ( ${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR} )
message( FATAL_ERROR "In-source builds not allowed. Please make a new directory (usually called build) and run CMake from there. You may need to remove CMakeCache.txt." )
endif()
+if(LIBC++)
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
+ SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lc++abi")
+ if (MSAN)
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/home/ed/libcxx_msan/include -I/home/ed/libcxx_msan/include/c++/v1")
+ SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L/home/ed/libcxx_msan/lib -Wl,-rpath,I/home/ed/libcxx_msan/lib")
+ endif(MSAN)
+endif(LIBC++)
+
# general
option(BUILD_SHARED_LIBS "Build as shared library" OFF)
option(BUILD_UT "Enable Unit test" ON)
@@ -61,8 +92,8 @@
add_definitions(-DBOOST_SYSTEM_NO_DEPRECATED)
add_definitions(-DBOOST_ALL_NO_LIB)
set(Boost_USE_STATIC_LIBS ON)
-hunter_add_package(Boost COMPONENTS system)
-find_package(Boost COMPONENTS system)
+hunter_add_package(Boost)
+find_package(Boost)
#Openssl
hunter_add_package(OpenSSL)
@@ -92,12 +123,6 @@
set_source_files_properties(g3log/src/logworker.cpp PROPERTIES COMPILE_FLAGS -Wno-braced-scalar-init)
endif()
-set_target_properties(g3logger PROPERTIES
- LINKER_LANGUAGE CXX
- OUTPUT_NAME g3logger
- CLEAN_DIRECT_OUTPUT 1)
-target_link_libraries(g3logger ${PLATFORM_LINK_LIBRIES})
-
#lib jpeg
set(BUILD_STATIC ON)
#include_directories(libjpeg)
@@ -212,7 +237,6 @@
add_executable(bmcweb ${WEBSERVER_MAIN} ${HDR_FILES} ${SRC_FILES})
target_link_libraries(bmcweb pthread)
target_link_libraries(bmcweb OpenSSL::SSL OpenSSL::Crypto)
-target_link_libraries(bmcweb Boost::system)
target_link_libraries(bmcweb g3logger)
target_link_libraries(bmcweb ${ZLIB_LIBRARIES})
add_dependencies(bmcweb packagestaticcpp)
diff --git a/include/web_kvm.hpp b/include/web_kvm.hpp
index df0bef5..10291ca 100644
--- a/include/web_kvm.hpp
+++ b/include/web_kvm.hpp
@@ -1,6 +1,6 @@
+#include <string>
#include <crow/app.h>
#include <boost/endian/arithmetic.hpp>
-#include <string>
#include <ast_jpeg_decoder.hpp>
#include <ast_video_puller.hpp>
@@ -51,12 +51,11 @@
client_cut_text = 6
};
-enum class server_to_client_message_type : uint8_t
-{
- framebuffer_update = 0,
- set_color_map_entries = 1,
- bell_message = 2,
- server_cut_text = 3
+enum class server_to_client_message_type : uint8_t {
+ framebuffer_update = 0,
+ set_color_map_entries = 1,
+ bell_message = 2,
+ server_cut_text = 3
};
struct set_pixel_format_msg {
@@ -143,8 +142,9 @@
std::string serialized(vector_size, 0);
size_t i = 0;
- serialized[i++] = static_cast<char>(server_to_client_message_type::framebuffer_update); // Type
- serialized[i++] = 0; // Pad byte
+ serialized[i++] = static_cast<char>(
+ server_to_client_message_type::framebuffer_update); // Type
+ serialized[i++] = 0; // Pad byte
boost::endian::big_uint16_t number_of_rectangles = msg.rectangles.size();
std::memcpy(&serialized[i], &number_of_rectangles,
sizeof(number_of_rectangles));
diff --git a/static/noVNC b/static/noVNC
index b56d975..b69dda9 160000
--- a/static/noVNC
+++ b/static/noVNC
@@ -1 +1 @@
-Subproject commit b56d97524807b125d047730331031ddd00f9c61f
+Subproject commit b69dda9b19f538c648cb11faddc50f30b93bac47