Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 37 additions & 13 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -1,13 +1,37 @@
{ BasedOnStyle: LLVM, IndentWidth: 4, TabWidth: 4, UseTab: Always, Language: Cpp, AlignConsecutiveAssignments: false,
AlignTrailingComments: true, ColumnLimit: 200,
BreakBeforeTernaryOperators: true,
BreakBeforeBinaryOperators: NonAssignment,
SortIncludes: false,
NamespaceIndentation: All, IndentCaseLabels: true,
AlwaysBreakTemplateDeclarations: Yes,
AllowShortBlocksOnASingleLine: Always,
AllowShortLoopsOnASingleLine: true,
AllowShortFunctionsOnASingleLine: All,
AllowShortIfStatementsOnASingleLine: WithoutElse,
AlwaysBreakTemplateDeclarations: MultiLine,
AlignOperands: AlignAfterOperator }
BasedOnStyle: LLVM
IndentWidth: 4
TabWidth: 4
UseTab: Never
Language: Cpp
BreakBeforeBraces: Attach
AlignConsecutiveAssignments: false
AlignTrailingComments: true
CommentPragmas: '[\s\S]*'
ColumnLimit: 200
BreakBeforeTernaryOperators: true
BreakBeforeBinaryOperators: NonAssignment
SortIncludes: true
NamespaceIndentation: All
IndentCaseLabels: true
AlwaysBreakTemplateDeclarations: MultiLine
AllowShortBlocksOnASingleLine: Always
AllowShortLoopsOnASingleLine: true
AllowShortIfStatementsOnASingleLine: AllIfsAndElse
AllowShortFunctionsOnASingleLine: All
AlignOperands: AlignAfterOperator
SpacesInContainerLiterals: true
SpaceBeforeParens: Custom
Cpp11BracedListStyle: false
AlignConsecutiveMacros:
Enabled: false
AcrossEmptyLines: true
AcrossComments: true
AlignConsecutiveDeclarations:
Enabled: false
AcrossEmptyLines: true
AcrossComments: false
AlignCompound: true
AllowAllParametersOfDeclarationOnNextLine: false
BinPackParameters: false
AllowAllArgumentsOnNextLine: false
BinPackArguments: false
4 changes: 2 additions & 2 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/MsgpackWrapper",
"program": "${workspaceFolder}/build/MsgpackWrapperDemo",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
Expand Down Expand Up @@ -141,7 +141,7 @@
"name": "(Windows) Launch",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/build/Debug/MsgpackWrapper.exe",
"program": "${workspaceFolder}/build/Debug/MsgpackWrapperDemo.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
Expand Down
2 changes: 1 addition & 1 deletion .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"version": "2.0.0",
"tasks": [
{
"label": "build all",
"label": "build",
"type": "shell",
"command": "/usr/bin/cmake --build ./build --config Debug --target all -- -j8",
"problemMatcher": [
Expand Down
128 changes: 101 additions & 27 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,40 +2,114 @@ cmake_minimum_required(VERSION 3.8.0)
project(MsgpackWrapper VERSION 0.1.0)
set(CMAKE_CXX_STANDARD 14)

include_directories(include)
set(MSGPACK_BUILD_TESTS OFF CACHE BOOL "Disable tests")
set(MSGPACK_GEN_COVERAGE OFF CACHE BOOL "Disable coverage")
set(MSGPACK_BUILD_EXAMPLES OFF CACHE BOOL "Disable examples")
set(MSGPACK_ENABLE_SHARED OFF CACHE BOOL "Disable shared")
set(MSGPACK_ENABLE_STATIC ON CACHE BOOL "Enable static")

option(MSGPACKWRAPPER_BUILD_DEMO "Build demonstration application" ON)

if(CMAKE_BUILD_TYPE STREQUAL "Release")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG")
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -flto -fno-rtti")
elseif(MSVC)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /O2 /GL /MP")
endif()
elseif(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DNDEBUG")
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g -fno-rtti")
elseif(MSVC)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /O2 /GL /MP")
endif()
elseif(CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -DNDEBUG")
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -g -fno-rtti")
elseif(MSVC)
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /O2 /GL /MP")
endif()
else()
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g -fno-rtti")
elseif(MSVC)
endif()
endif()

if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wshadow -Wconversion -Wsign-conversion")
endif()

if(WIN32)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
endif(WIN32)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
if(MSVC)
add_compile_options(/W4 /WX)
endif()
endif()

add_subdirectory(msgpack-c)

get_target_property(MSGPACK_BINARY_INCLUDE_DIRS msgpack-c BINARY_DIR)

include_directories(
include
msgpack-c/include
msgpack-c/include/msgpack
${MSGPACK_BINARY_INCLUDE_DIRS}/include
${MSGPACK_BINARY_INCLUDE_DIRS}/include/msgpack
)

set(CPP_SOURCE_FILES
src/MsgpackValueBase.cpp
src/MsgpackValue.cpp
src/MsgpackObject.cpp
src/MsgpackArrayBase.cpp
src/MsgpackArray.cpp
src/MsgpackObjectsArray.cpp
src/MsgpackValueBase.cpp
src/MsgpackValue.cpp
src/MsgpackObject.cpp
src/MsgpackArrayBase.cpp
src/MsgpackArray.cpp
src/MsgpackObjectsArray.cpp
)

if(PROJECT_IS_TOP_LEVEL)
add_executable(MsgpackWrapper main.cpp ${CPP_SOURCE_FILES})
target_link_libraries(MsgpackWrapper PRIVATE msgpack-c)
add_library(MsgpackWrapper STATIC ${CPP_SOURCE_FILES})

IF (NOT MSGPACKWRAPPER_SKIP_TESTING)
enable_testing()
add_subdirectory(Tests)
ENDIF ()
ELSE ()
ADD_LIBRARY(MsgpackWrapper main.cpp ${CPP_SOURCE_FILES})
target_link_libraries(MsgpackWrapper PRIVATE msgpack-c)
target_link_libraries(MsgpackWrapper PRIVATE msgpack-c)

target_include_directories(MsgpackWrapper PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/include
${CMAKE_CURRENT_SOURCE_DIR}/msgpack-c/include
${CMAKE_CURRENT_SOURCE_DIR}/msgpack-c/include/msgpack
${MSGPACK_BINARY_INCLUDE_DIRS}/include
${MSGPACK_BINARY_INCLUDE_DIRS}/include/msgpack
)

ENDIF ()
if(CMAKE_BUILD_TYPE STREQUAL "Release")
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set_target_properties(MsgpackWrapper PROPERTIES
INTERPROCEDURAL_OPTIMIZATION TRUE
LINK_FLAGS "-flto"
)
elseif(MSVC)
set_target_properties(MsgpackWrapper PROPERTIES
INTERPROCEDURAL_OPTIMIZATION TRUE
LINK_FLAGS "/LTCG"
)
endif()
endif()

OPTION (MSGPACK_BUILD_TESTS OFF)
OPTION (MSGPACK_GEN_COVERAGE OFF)
OPTION (MSGPACK_BUILD_EXAMPLES OFF)
SET (MSGPACK_ENABLE_SHARED OFF)
SET (MSGPACK_ENABLE_STATIC ON)
if(MSGPACKWRAPPER_BUILD_DEMO)
add_executable(MsgpackWrapperDemo main.cpp)
target_link_libraries(MsgpackWrapperDemo MsgpackWrapper)
target_include_directories(MsgpackWrapperDemo PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/include
${CMAKE_CURRENT_SOURCE_DIR}/msgpack-c/include
${CMAKE_CURRENT_SOURCE_DIR}/msgpack-c/include/msgpack
${MSGPACK_BINARY_INCLUDE_DIRS}/include
${MSGPACK_BINARY_INCLUDE_DIRS}/include/msgpack
)
endif()

target_include_directories(MsgpackWrapper PRIVATE msgpack-c/include/msgpack msgpack-c/include msgpack-c/src)
add_subdirectory(msgpack-c)
if(PROJECT_IS_TOP_LEVEL AND NOT MSGPACKWRAPPER_SKIP_TESTING)
enable_testing()
add_subdirectory(Tests)
endif()
124 changes: 39 additions & 85 deletions Tests/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,98 +1,52 @@
project(MsgpackWrapperTests)


include(CTest)

if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -Wno-write-strings -Wno-overflow -Wno-conversion-null")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -Wno-write-strings -Wno-overflow -Wno-conversion-null")
endif()

if(WIN32)
add_definitions("/wd4251")
add_definitions("/wd4305")
add_definitions("/wd4309")
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
add_definitions("/wd4251")
add_definitions("/wd4305")
add_definitions("/wd4309")
add_definitions("/wd4611")
add_definitions("/wd4100")
add_definitions("/wd4127")
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
endif(WIN32)

add_subdirectory(cpputest)

set(CPPUTEST_SOURCE_DIRS
cpputest/include
cpputest/src
cpputest/CppUTest
)

set(CPPUTEST_SOURCE_FILES
${CMAKE_CURRENT_SOURCE_DIR}/../src/MsgpackValueBase.cpp
${CMAKE_CURRENT_SOURCE_DIR}/../src/MsgpackValue.cpp
${CMAKE_CURRENT_SOURCE_DIR}/../src/MsgpackObject.cpp
${CMAKE_CURRENT_SOURCE_DIR}/../src/MsgpackArrayBase.cpp
${CMAKE_CURRENT_SOURCE_DIR}/../src/MsgpackArray.cpp
${CMAKE_CURRENT_SOURCE_DIR}/../src/MsgpackObjectsArray.cpp
)

add_executable(MsgpackStringValueTestsGroup
${CPPUTEST_SOURCE_FILES}
MsgpackStringValueTestsGroup.cpp)
if(WIN32)
target_link_libraries(MsgpackStringValueTestsGroup Winmm.lib)
endif(WIN32)
target_link_libraries(MsgpackStringValueTestsGroup CppUTest)
target_link_libraries(MsgpackStringValueTestsGroup msgpack-c)
target_include_directories(MsgpackStringValueTestsGroup PRIVATE ${CPPUTEST_SOURCE_DIRS})
add_test(MsgpackStringValueTestsGroup MsgpackStringValueTestsGroup)

add_executable(MsgpackDataValueTestsGroup
${CPPUTEST_SOURCE_FILES}
MsgpackDataValueTestsGroup.cpp)
if(WIN32)
target_link_libraries(MsgpackDataValueTestsGroup Winmm.lib)
endif(WIN32)
target_link_libraries(MsgpackDataValueTestsGroup CppUTest)
target_link_libraries(MsgpackDataValueTestsGroup msgpack-c)
target_include_directories(MsgpackDataValueTestsGroup PRIVATE ${CPPUTEST_SOURCE_DIRS})
add_test(MsgpackDataValueTestsGroup MsgpackDataValueTestsGroup)

add_executable(MsgpackNumericValueTestsGroup
${CPPUTEST_SOURCE_FILES}
MsgpackNumericValueTestsGroup.cpp)
if(WIN32)
target_link_libraries(MsgpackNumericValueTestsGroup Winmm.lib)
endif(WIN32)
target_link_libraries(MsgpackNumericValueTestsGroup CppUTest)
target_link_libraries(MsgpackNumericValueTestsGroup msgpack-c)
target_include_directories(MsgpackNumericValueTestsGroup PRIVATE ${CPPUTEST_SOURCE_DIRS})
add_test(MsgpackNumericValueTestsGroup MsgpackNumericValueTestsGroup)

add_executable(MsgpackObjectTestsGroup
${CPPUTEST_SOURCE_FILES}
MsgpackObjectTestsGroup.cpp)
if(WIN32)
target_link_libraries(MsgpackObjectTestsGroup Winmm.lib)
endif(WIN32)
target_link_libraries(MsgpackObjectTestsGroup CppUTest)
target_link_libraries(MsgpackObjectTestsGroup msgpack-c)
target_include_directories(MsgpackObjectTestsGroup PRIVATE ${CPPUTEST_SOURCE_DIRS})
add_test(MsgpackObjectTestsGroup MsgpackObjectTestsGroup)

add_executable(MsgpackArrayTestsGroup
${CPPUTEST_SOURCE_FILES}
MsgpackArrayTestsGroup.cpp)
if(WIN32)
target_link_libraries(MsgpackArrayTestsGroup Winmm.lib)
endif(WIN32)
target_link_libraries(MsgpackArrayTestsGroup CppUTest)
target_link_libraries(MsgpackArrayTestsGroup msgpack-c)
target_include_directories(MsgpackArrayTestsGroup PRIVATE ${CPPUTEST_SOURCE_DIRS})
add_test(MsgpackArrayTestsGroup MsgpackArrayTestsGroup)

add_executable(MsgpackHeavyDutyTestsGroup
${CPPUTEST_SOURCE_FILES}
MsgpackHeavyDutyTestsGroup.cpp)
if(WIN32)
target_link_libraries(MsgpackHeavyDutyTestsGroup Winmm.lib)
endif(WIN32)
target_link_libraries(MsgpackHeavyDutyTestsGroup CppUTest)
target_link_libraries(MsgpackHeavyDutyTestsGroup msgpack-c)
target_include_directories(MsgpackHeavyDutyTestsGroup PRIVATE ${CPPUTEST_SOURCE_DIRS})
add_test(MsgpackHeavyDutyTestsGroup MsgpackHeavyDutyTestsGroup)
cpputest/include
cpputest/src
cpputest/CppUTest
)

include_directories(
${CMAKE_SOURCE_DIR}/include
${CMAKE_SOURCE_DIR}/msgpack-c/include
${CMAKE_SOURCE_DIR}/msgpack-c/include/msgpack
${CMAKE_BINARY_DIR}/msgpack-c/include
${CMAKE_BINARY_DIR}/msgpack-c/include/msgpack
)

function(add_msgpack_test test_name test_source)
add_executable(${test_name} ${test_source})

if(WIN32)
target_link_libraries(${test_name} Winmm.lib)
endif(WIN32)

target_link_libraries(${test_name} CppUTest MsgpackWrapper)
target_include_directories(${test_name} PRIVATE ${CPPUTEST_SOURCE_DIRS})
add_test(${test_name} ${test_name})
endfunction()

add_msgpack_test(MsgpackStringValueTestsGroup MsgpackStringValueTestsGroup.cpp)
add_msgpack_test(MsgpackDataValueTestsGroup MsgpackDataValueTestsGroup.cpp)
add_msgpack_test(MsgpackNumericValueTestsGroup MsgpackNumericValueTestsGroup.cpp)
add_msgpack_test(MsgpackObjectTestsGroup MsgpackObjectTestsGroup.cpp)
add_msgpack_test(MsgpackArrayTestsGroup MsgpackArrayTestsGroup.cpp)
add_msgpack_test(MsgpackHeavyDutyTestsGroup MsgpackHeavyDutyTestsGroup.cpp)
2 changes: 1 addition & 1 deletion Tests/MsgpackArrayTestsGroup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ class UserDto : public MsgpackObject {
class UsersList : public MsgpackObjectsArray {
public:
bool Validate(MsgpackObject *item) override { return Size() < maxCount && item != NULL && item->Validate(); }
MsgpackObject *CreateItem() { return new UserDto(); }
MsgpackObject *CreateItem() override { return new UserDto(); }
};

class StringsList : public MsgpackArray<char *> {
Expand Down
Loading
Loading