Fix build problems with Visual Studio 2017

This commit is contained in:
Gunnar Beutner 2017-12-13 11:35:38 +01:00
parent c7a37090d0
commit ff0b6ba630
7 changed files with 21 additions and 33 deletions

View File

@ -96,7 +96,8 @@ endif()
if(WIN32) if(WIN32)
set(Boost_USE_STATIC_LIBS ON) set(Boost_USE_STATIC_LIBS ON)
add_definitions(-DBOOST_ALL_NO_LIB) add_definitions(-DBOOST_ALL_NO_LIB)
add_definitions(/bigobj) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /bigobj")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj")
endif() endif()
if(NOT DEFINED LOGROTATE_HAS_SU) if(NOT DEFINED LOGROTATE_HAS_SU)

View File

@ -24,6 +24,6 @@ if(WIN32)
add_custom_target(choco-pkg ALL add_custom_target(choco-pkg ALL
COMMAND choco pack COMMAND choco pack
COMMAND ${CMAKE_COMMAND} -E rename ${CMAKE_CURRENT_BINARY_DIR}/icinga2.${SPEC_VERSION}.nupkg ${CMAKE_CURRENT_BINARY_DIR}/icinga2.nupkg COMMAND ${CMAKE_COMMAND} -E rename ${CMAKE_CURRENT_BINARY_DIR}/icinga2.${SPEC_VERSION}.nupkg ${CMAKE_CURRENT_BINARY_DIR}/icinga2.nupkg
DEPENDS icinga2.nuspec ${CMAKE_CURRENT_BINARY_DIR}/chocolateyInstall.ps1 chocolateyUninstall.ps1 DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/icinga2.nuspec ${CMAKE_CURRENT_BINARY_DIR}/chocolateyInstall.ps1 chocolateyUninstall.ps1
) )
endif() endif()

View File

@ -25,7 +25,8 @@ using namespace icinga;
static ConsoleType l_ConsoleType = Console_Dumb; static ConsoleType l_ConsoleType = Console_Dumb;
INITIALIZE_ONCE([]() { static void InitializeConsole(void)
{
l_ConsoleType = Console_Dumb; l_ConsoleType = Console_Dumb;
#ifndef _WIN32 #ifndef _WIN32
@ -34,7 +35,9 @@ INITIALIZE_ONCE([]() {
#else /* _WIN32 */ #else /* _WIN32 */
l_ConsoleType = Console_Windows; l_ConsoleType = Console_Windows;
#endif /* _WIN32 */ #endif /* _WIN32 */
}) }
INITIALIZE_ONCE(InitializeConsole);
ConsoleColorTag::ConsoleColorTag(int color, ConsoleType consoleType) ConsoleColorTag::ConsoleColorTag(int color, ConsoleType consoleType)
: m_Color(color), m_ConsoleType(consoleType) : m_Color(color), m_ConsoleType(consoleType)

View File

@ -23,6 +23,7 @@
#include "base/i2-base.hpp" #include "base/i2-base.hpp"
#include "base/value.hpp" #include "base/value.hpp"
#include <vector> #include <vector>
#include <boost/function_types/function_arity.hpp>
#include <type_traits> #include <type_traits>
using namespace std::placeholders; using namespace std::placeholders;
@ -80,9 +81,9 @@ private:
public: public:
template <typename FuncType> template <typename FuncType>
auto operator () (FuncType f, const std::vector<Value>& args) auto operator () (FuncType f, const std::vector<Value>& args)
-> decltype(call(f, args, BuildIndices<boost::function_traits<typename boost::remove_pointer<FuncType>::type>::arity>{})) -> decltype(call(f, args, BuildIndices<boost::function_types::function_arity<typename boost::remove_pointer<FuncType>::type>::value>{}))
{ {
return call(f, args, BuildIndices<boost::function_traits<typename boost::remove_pointer<FuncType>::type>::arity>{}); return call(f, args, BuildIndices<boost::function_types::function_arity<typename boost::remove_pointer<FuncType>::type>::value>{});
} }
}; };
@ -96,7 +97,7 @@ std::function<Value (const std::vector<Value>&)> WrapFunction(FuncType function,
EnableIf<std::is_same<decltype(unpack_caller()(FuncType(), std::vector<Value>())), void>::value>* = 0) EnableIf<std::is_same<decltype(unpack_caller()(FuncType(), std::vector<Value>())), void>::value>* = 0)
{ {
return [function](const std::vector<Value>& arguments) { return [function](const std::vector<Value>& arguments) {
constexpr int arity = boost::function_traits<typename boost::remove_pointer<FuncType>::type>::arity; constexpr int arity = boost::function_types::function_arity<typename boost::remove_pointer<FuncType>::type>::value;
if (arguments.size() < arity) if (arguments.size() < arity)
BOOST_THROW_EXCEPTION(std::invalid_argument("Too few arguments for function.")); BOOST_THROW_EXCEPTION(std::invalid_argument("Too few arguments for function."));
@ -113,7 +114,7 @@ std::function<Value (const std::vector<Value>&)> WrapFunction(FuncType function,
EnableIf<!std::is_same<decltype(unpack_caller()(FuncType(), std::vector<Value>())), void>::value>* = 0) EnableIf<!std::is_same<decltype(unpack_caller()(FuncType(), std::vector<Value>())), void>::value>* = 0)
{ {
return [function](const std::vector<Value>& arguments) { return [function](const std::vector<Value>& arguments) {
constexpr int arity = boost::function_traits<typename boost::remove_pointer<FuncType>::type>::arity; constexpr int arity = boost::function_types::function_arity<typename boost::remove_pointer<FuncType>::type>::value;
if (arity > 0) { if (arity > 0) {
if (arguments.size() < arity) if (arguments.size() < arity)

View File

@ -141,8 +141,12 @@ set(icinga_checkable_test_SOURCES
icinga-checkable-flapping.cpp icinga-checkable-flapping.cpp
) )
if(ICINGA2_UNITY_BUILD)
mkunity_target(icinga_checkable test icinga_checkable_test_SOURCES)
endif()
add_boost_test(icinga_checkable add_boost_test(icinga_checkable
SOURCES icinga-checkable-test.cpp ${icinga_checkable_test_SOURCES} SOURCES test-runner.cpp icinga-checkable-test.cpp ${icinga_checkable_test_SOURCES}
LIBRARIES base config icinga cli LIBRARIES base config icinga cli
TESTS icinga_checkable_flapping/host_not_flapping TESTS icinga_checkable_flapping/host_not_flapping
icinga_checkable_flapping/host_flapping icinga_checkable_flapping/host_flapping

View File

@ -17,10 +17,10 @@
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
******************************************************************************/ ******************************************************************************/
#include <boost/test/unit_test.hpp>
#include <bitset>
#include "icinga/host.hpp" #include "icinga/host.hpp"
#include <bitset>
#include <iostream> #include <iostream>
#include <BoostTestTargetConfig.h>
using namespace icinga; using namespace icinga;
@ -48,7 +48,7 @@ static void LogFlapping(const Checkable::Ptr& obj)
int oldestIndex = (obj->GetFlappingBuffer() & 0xFF00000) >> 20; int oldestIndex = (obj->GetFlappingBuffer() & 0xFF00000) >> 20;
std::cout << "Flapping: " << obj->IsFlapping() << "\nHT: " << obj->GetFlappingThresholdHigh() << " LT: " << obj->GetFlappingThresholdLow() std::cout << "Flapping: " << obj->IsFlapping() << "\nHT: " << obj->GetFlappingThresholdHigh() << " LT: " << obj->GetFlappingThresholdLow()
<< "\nOur value: " << obj->GetFlappingCurrent() << "\nPtr: " << oldestIndex << " Buf: " << stateChangeBuf << '\n'; << "\nOur value: " << obj->GetFlappingCurrent() << "\nPtr: " << oldestIndex << " Buf: " << stateChangeBuf.to_ulong() << '\n';
} }

View File

@ -17,9 +17,6 @@
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
******************************************************************************/ ******************************************************************************/
#define BOOST_TEST_MAIN
#define BOOST_TEST_MODULE icinga2_test
#include "cli/daemonutility.hpp" #include "cli/daemonutility.hpp"
#include "base/application.hpp" #include "base/application.hpp"
#include "base/loader.hpp" #include "base/loader.hpp"
@ -35,24 +32,6 @@ struct IcingaCheckableFixture
BOOST_TEST_MESSAGE("setup running Icinga 2 core"); BOOST_TEST_MESSAGE("setup running Icinga 2 core");
Application::InitializeBase(); Application::InitializeBase();
/* start the Icinga application and load the configuration */
Application::DeclareSysconfDir("etc");
Application::DeclareLocalStateDir("var");
ActivationScope ascope;
Loader::LoadExtensionLibrary("icinga");
Loader::LoadExtensionLibrary("methods"); //loaded by ITL
std::vector<std::string> configs;
std::vector<ConfigItem::Ptr> newItems;
DaemonUtility::LoadConfigFiles(configs, newItems, "icinga2.debug", "icinga2.vars");
/* ignore config errors */
WorkQueue upq;
ConfigItem::ActivateItems(upq, newItems);
} }
~IcingaCheckableFixture(void) ~IcingaCheckableFixture(void)