Add support for Windows 8.1 store apps.
diff --git a/asio/include/Makefile.am b/asio/include/Makefile.am index e334c7c..2009c6b 100644 --- a/asio/include/Makefile.am +++ b/asio/include/Makefile.am
@@ -227,6 +227,7 @@ asio/detail/variadic_templates.hpp \ asio/detail/wait_handler.hpp \ asio/detail/wait_op.hpp \ + asio/detail/winapp_thread.hpp \ asio/detail/wince_thread.hpp \ asio/detail/win_event.hpp \ asio/detail/win_fd_set_adapter.hpp \
diff --git a/asio/include/asio/detail/config.hpp b/asio/include/asio/detail/config.hpp index c85f9a2..9c799b6 100644 --- a/asio/include/asio/detail/config.hpp +++ b/asio/include/asio/detail/config.hpp
@@ -661,25 +661,41 @@ # endif // !defined(ASIO_DISABLE_STD_CALL_ONCE) #endif // !defined(ASIO_HAS_STD_CALL_ONCE) -// WinRT target. -#if !defined(ASIO_WINDOWS_RUNTIME) -# if defined(__cplusplus_winrt) +// Windows App target. Windows but with a limited API. +#if !defined(ASIO_WINDOWS_APP) +# if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0603) # include <winapifamily.h> # if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) \ && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -# define ASIO_WINDOWS_RUNTIME 1 +# define ASIO_WINDOWS_APP 1 # endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) // && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -# endif // defined(__cplusplus_winrt) +# endif // defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0603) +#endif // !defined(ASIO_WINDOWS_APP) + +// Legacy WinRT target. Windows App is preferred. +#if !defined(ASIO_WINDOWS_RUNTIME) +# if !defined(ASIO_WINDOWS_APP) +# if defined(__cplusplus_winrt) +# include <winapifamily.h> +# if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) \ + && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) +# define ASIO_WINDOWS_RUNTIME 1 +# endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) + // && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) +# endif // defined(__cplusplus_winrt) +# endif // !defined(ASIO_WINDOWS_APP) #endif // !defined(ASIO_WINDOWS_RUNTIME) -// Windows target. Excludes WinRT. +// Windows target. Excludes WinRT but includes Windows App targets. #if !defined(ASIO_WINDOWS) # if !defined(ASIO_WINDOWS_RUNTIME) # if defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_WINDOWS) # define ASIO_WINDOWS 1 # elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) # define ASIO_WINDOWS 1 +# elif defined(ASIO_WINDOWS_APP) +# define ASIO_WINDOWS 1 # endif // defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_WINDOWS) # endif // !defined(ASIO_WINDOWS_RUNTIME) #endif // !defined(ASIO_WINDOWS) @@ -747,11 +763,11 @@ #if !defined(ASIO_HAS_IOCP) # if defined(ASIO_WINDOWS) || defined(__CYGWIN__) # if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0400) -# if !defined(UNDER_CE) +# if !defined(UNDER_CE) && !defined(ASIO_WINDOWS_APP) # if !defined(ASIO_DISABLE_IOCP) # define ASIO_HAS_IOCP 1 # endif // !defined(ASIO_DISABLE_IOCP) -# endif // !defined(UNDER_CE) +# endif // !defined(UNDER_CE) && !defined(ASIO_WINDOWS_APP) # endif // defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0400) # endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) #endif // !defined(ASIO_HAS_IOCP) @@ -867,9 +883,9 @@ #if !defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE) # if !defined(ASIO_DISABLE_WINDOWS_OBJECT_HANDLE) # if defined(ASIO_WINDOWS) || defined(__CYGWIN__) -# if !defined(UNDER_CE) +# if !defined(UNDER_CE) && !defined(ASIO_WINDOWS_APP) # define ASIO_HAS_WINDOWS_OBJECT_HANDLE 1 -# endif // !defined(UNDER_CE) +# endif // !defined(UNDER_CE) && !defined(ASIO_WINDOWS_APP) # endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) # endif // !defined(ASIO_DISABLE_WINDOWS_OBJECT_HANDLE) #endif // !defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE)
diff --git a/asio/include/asio/detail/impl/socket_ops.ipp b/asio/include/asio/detail/impl/socket_ops.ipp index 4beb397..a750722 100644 --- a/asio/include/asio/detail/impl/socket_ops.ipp +++ b/asio/include/asio/detail/impl/socket_ops.ipp
@@ -1633,7 +1633,8 @@ return socket_error_retval; } -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) +#if defined(ASIO_WINDOWS) && !defined(ASIO_WINDOWS_APP) \ + || defined(__CYGWIN__) if (cached) { // Check if socket is still connected. @@ -1654,9 +1655,11 @@ ec = asio::error_code(); return 0; } -#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) +#else // defined(ASIO_WINDOWS) && !defined(ASIO_WINDOWS_APP) + // || defined(__CYGWIN__) (void)cached; -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) +#endif // defined(ASIO_WINDOWS) && !defined(ASIO_WINDOWS_APP) + // || defined(__CYGWIN__) clear_last_error(); int result = error_wrapper(call_getpeername(
diff --git a/asio/include/asio/detail/impl/win_event.ipp b/asio/include/asio/detail/impl/win_event.ipp index 38bfe52..c9b60e4 100644 --- a/asio/include/asio/detail/impl/win_event.ipp +++ b/asio/include/asio/detail/impl/win_event.ipp
@@ -31,7 +31,11 @@ win_event::win_event() : state_(0) { +#if defined(ASIO_WINDOWS_APP) + events_[0] = ::CreateEventEx(0, 0, CREATE_EVENT_MANUAL_RESET, 0); +#else // defined(ASIO_WINDOWS_APP) events_[0] = ::CreateEvent(0, true, false, 0); +#endif // defined(ASIO_WINDOWS_APP) if (!events_[0]) { DWORD last_error = ::GetLastError(); @@ -40,7 +44,11 @@ asio::detail::throw_error(ec, "event"); } +#if defined(ASIO_WINDOWS_APP) + events_[1] = ::CreateEventEx(0, 0, 0, 0); +#else // defined(ASIO_WINDOWS_APP) events_[1] = ::CreateEvent(0, false, false, 0); +#endif // defined(ASIO_WINDOWS_APP) if (!events_[1]) { DWORD last_error = ::GetLastError();
diff --git a/asio/include/asio/detail/impl/win_mutex.ipp b/asio/include/asio/detail/impl/win_mutex.ipp index 608f4f5..6a601b2 100644 --- a/asio/include/asio/detail/impl/win_mutex.ipp +++ b/asio/include/asio/detail/impl/win_mutex.ipp
@@ -43,6 +43,8 @@ // we'll just call the Windows API and hope. # if defined(UNDER_CE) ::InitializeCriticalSection(&crit_section_); +# elif defined(ASIO_WINDOWS_APP) + ::InitializeCriticalSectionEx(&crit_section_, 0x80000000, 0); # else if (!::InitializeCriticalSectionAndSpinCount(&crit_section_, 0x80000000)) return ::GetLastError(); @@ -53,6 +55,8 @@ { # if defined(UNDER_CE) ::InitializeCriticalSection(&crit_section_); +# elif defined(ASIO_WINDOWS_APP) + ::InitializeCriticalSectionEx(&crit_section_, 0x80000000, 0); # else if (!::InitializeCriticalSectionAndSpinCount(&crit_section_, 0x80000000)) return ::GetLastError();
diff --git a/asio/include/asio/detail/impl/win_static_mutex.ipp b/asio/include/asio/detail/impl/win_static_mutex.ipp index 2654aa6..024ad49 100644 --- a/asio/include/asio/detail/impl/win_static_mutex.ipp +++ b/asio/include/asio/detail/impl/win_static_mutex.ipp
@@ -49,13 +49,23 @@ mutex_name, 128, L"asio-58CCDC44-6264-4842-90C2-F3C545CB8AA7-%u-%p", static_cast<unsigned int>(::GetCurrentProcessId()), this); +#if defined(ASIO_WINDOWS_APP) + HANDLE mutex = ::CreateMutexExW(0, mutex_name, CREATE_MUTEX_INITIAL_OWNER, 0); +#else // defined(ASIO_WINDOWS_APP) HANDLE mutex = ::CreateMutexW(0, TRUE, mutex_name); +#endif // defined(ASIO_WINDOWS_APP) DWORD last_error = ::GetLastError(); if (mutex == 0) return ::GetLastError(); if (last_error == ERROR_ALREADY_EXISTS) + { +#if defined(ASIO_WINDOWS_APP) + ::WaitForSingleObjectEx(mutex, INFINITE, false); +#else // defined(ASIO_WINDOWS_APP) ::WaitForSingleObject(mutex, INFINITE); +#endif // defined(ASIO_WINDOWS_APP) + } if (initialised_) { @@ -83,6 +93,8 @@ { # if defined(UNDER_CE) ::InitializeCriticalSection(&crit_section_); +# elif defined(ASIO_WINDOWS_APP) + ::InitializeCriticalSectionEx(&crit_section_, 0x80000000, 0); # else if (!::InitializeCriticalSectionAndSpinCount(&crit_section_, 0x80000000)) {
diff --git a/asio/include/asio/detail/impl/win_thread.ipp b/asio/include/asio/detail/impl/win_thread.ipp index 4274ebe..0fa1ec3 100644 --- a/asio/include/asio/detail/impl/win_thread.ipp +++ b/asio/include/asio/detail/impl/win_thread.ipp
@@ -17,7 +17,9 @@ #include "asio/detail/config.hpp" -#if defined(ASIO_WINDOWS) && !defined(UNDER_CE) +#if defined(ASIO_WINDOWS) \ + && !defined(ASIO_WINDOWS_APP) \ + && !defined(UNDER_CE) #include <process.h> #include "asio/detail/throw_error.hpp" @@ -141,6 +143,8 @@ #include "asio/detail/pop_options.hpp" -#endif // defined(ASIO_WINDOWS) && !defined(UNDER_CE) +#endif // defined(ASIO_WINDOWS) + // && !defined(ASIO_WINDOWS_APP) + // && !defined(UNDER_CE) #endif // ASIO_DETAIL_IMPL_WIN_THREAD_IPP
diff --git a/asio/include/asio/detail/local_free_on_block_exit.hpp b/asio/include/asio/detail/local_free_on_block_exit.hpp index 2960dea..05d9f9e 100644 --- a/asio/include/asio/detail/local_free_on_block_exit.hpp +++ b/asio/include/asio/detail/local_free_on_block_exit.hpp
@@ -18,6 +18,7 @@ #include "asio/detail/config.hpp" #if defined(ASIO_WINDOWS) || defined(__CYGWIN__) +#if !defined(ASIO_WINDOWS_APP) #include "asio/detail/noncopyable.hpp" #include "asio/detail/socket_types.hpp" @@ -52,6 +53,7 @@ #include "asio/detail/pop_options.hpp" +#endif // !defined(ASIO_WINDOWS_APP) #endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) #endif // ASIO_DETAIL_LOCAL_FREE_ON_BLOCK_EXIT_HPP
diff --git a/asio/include/asio/detail/socket_types.hpp b/asio/include/asio/detail/socket_types.hpp index f2600c2..57cf877 100644 --- a/asio/include/asio/detail/socket_types.hpp +++ b/asio/include/asio/detail/socket_types.hpp
@@ -37,7 +37,9 @@ # endif // defined(WINAPI_FAMILY) # include <winsock2.h> # include <ws2tcpip.h> -# include <mswsock.h> +# if !defined(ASIO_WINDOWS_APP) +# include <mswsock.h> +# endif // !defined(ASIO_WINDOWS_APP) # if defined(ASIO_WSPIAPI_H_DEFINED) # undef _WSPIAPI_H_ # undef ASIO_WSPIAPI_H_DEFINED @@ -47,7 +49,9 @@ # pragma comment(lib, "ws2.lib") # elif defined(_MSC_VER) || defined(__BORLANDC__) # pragma comment(lib, "ws2_32.lib") -# pragma comment(lib, "mswsock.lib") +# if !defined(ASIO_WINDOWS_APP) +# pragma comment(lib, "mswsock.lib") +# endif // !defined(ASIO_WINDOWS_APP) # endif // defined(_MSC_VER) || defined(__BORLANDC__) # endif // !defined(ASIO_NO_DEFAULT_LINKED_LIBS) # include "asio/detail/old_win_sdk_compat.hpp"
diff --git a/asio/include/asio/detail/thread.hpp b/asio/include/asio/detail/thread.hpp index 3592a70..e1c2fa3 100644 --- a/asio/include/asio/detail/thread.hpp +++ b/asio/include/asio/detail/thread.hpp
@@ -22,6 +22,8 @@ #elif defined(ASIO_WINDOWS) # if defined(UNDER_CE) # include "asio/detail/wince_thread.hpp" +# elif defined(ASIO_WINDOWS_APP) +# include "asio/detail/winapp_thread.hpp" # else # include "asio/detail/win_thread.hpp" # endif @@ -41,6 +43,8 @@ #elif defined(ASIO_WINDOWS) # if defined(UNDER_CE) typedef wince_thread thread; +# elif defined(ASIO_WINDOWS_APP) +typedef winapp_thread thread; # else typedef win_thread thread; # endif
diff --git a/asio/include/asio/detail/win_event.hpp b/asio/include/asio/detail/win_event.hpp index f4170b9..adb0c78 100644 --- a/asio/include/asio/detail/win_event.hpp +++ b/asio/include/asio/detail/win_event.hpp
@@ -101,7 +101,11 @@ { state_ += 2; lock.unlock(); +#if defined(ASIO_WINDOWS_APP) + ::WaitForMultipleObjectsEx(2, events_, false, INFINITE, false); +#else // defined(ASIO_WINDOWS_APP) ::WaitForMultipleObjects(2, events_, false, INFINITE); +#endif // defined(ASIO_WINDOWS_APP) lock.lock(); state_ -= 2; }
diff --git a/asio/include/asio/detail/win_thread.hpp b/asio/include/asio/detail/win_thread.hpp index 20ab263..033307d 100644 --- a/asio/include/asio/detail/win_thread.hpp +++ b/asio/include/asio/detail/win_thread.hpp
@@ -17,7 +17,9 @@ #include "asio/detail/config.hpp" -#if defined(ASIO_WINDOWS) && !defined(UNDER_CE) +#if defined(ASIO_WINDOWS) \ + && !defined(ASIO_WINDOWS_APP) \ + && !defined(UNDER_CE) #include <cstddef> #include "asio/detail/noncopyable.hpp" @@ -138,6 +140,8 @@ # include "asio/detail/impl/win_thread.ipp" #endif // defined(ASIO_HEADER_ONLY) -#endif // defined(ASIO_WINDOWS) && !defined(UNDER_CE) +#endif // defined(ASIO_WINDOWS) + // && !defined(ASIO_WINDOWS_APP) + // && !defined(UNDER_CE) #endif // ASIO_DETAIL_WIN_THREAD_HPP
diff --git a/asio/include/asio/detail/winapp_thread.hpp b/asio/include/asio/detail/winapp_thread.hpp new file mode 100644 index 0000000..e42f7af --- /dev/null +++ b/asio/include/asio/detail/winapp_thread.hpp
@@ -0,0 +1,124 @@ +// +// detail/winapp_thread.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef ASIO_DETAIL_WINAPP_THREAD_HPP +#define ASIO_DETAIL_WINAPP_THREAD_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include "asio/detail/config.hpp" + +#if defined(ASIO_WINDOWS) && defined(ASIO_WINDOWS_APP) + +#include "asio/detail/memory.hpp" +#include "asio/detail/noncopyable.hpp" +#include "asio/detail/socket_types.hpp" +#include "asio/detail/throw_error.hpp" +#include "asio/error.hpp" + +#include "asio/detail/push_options.hpp" + +namespace asio { +namespace detail { + +DWORD WINAPI winapp_thread_function(LPVOID arg); + +class winapp_thread + : private noncopyable +{ +public: + // Constructor. + template <typename Function> + winapp_thread(Function f, unsigned int = 0) + { + std::auto_ptr<func_base> arg(new func<Function>(f)); + DWORD thread_id = 0; + thread_ = ::CreateThread(0, 0, winapp_thread_function, + arg.get(), 0, &thread_id); + if (!thread_) + { + DWORD last_error = ::GetLastError(); + asio::error_code ec(last_error, + asio::error::get_system_category()); + asio::detail::throw_error(ec, "thread"); + } + arg.release(); + } + + // Destructor. + ~winapp_thread() + { + ::CloseHandle(thread_); + } + + // Wait for the thread to exit. + void join() + { + ::WaitForSingleObjectEx(thread_, INFINITE, false); + } + + // Get number of CPUs. + static std::size_t hardware_concurrency() + { + SYSTEM_INFO system_info; + ::GetNativeSystemInfo(&system_info); + return system_info.dwNumberOfProcessors; + } + +private: + friend DWORD WINAPI winapp_thread_function(LPVOID arg); + + class func_base + { + public: + virtual ~func_base() {} + virtual void run() = 0; + }; + + template <typename Function> + class func + : public func_base + { + public: + func(Function f) + : f_(f) + { + } + + virtual void run() + { + f_(); + } + + private: + Function f_; + }; + + ::HANDLE thread_; +}; + +inline DWORD WINAPI winapp_thread_function(LPVOID arg) +{ + std::auto_ptr<winapp_thread::func_base> func( + static_cast<winapp_thread::func_base*>(arg)); + func->run(); + return 0; +} + +} // namespace detail +} // namespace asio + +#include "asio/detail/pop_options.hpp" + +#endif // defined(ASIO_WINDOWS) && defined(ASIO_WINDOWS_APP) + +#endif // ASIO_DETAIL_WINAPP_THREAD_HPP
diff --git a/asio/include/asio/detail/wince_thread.hpp b/asio/include/asio/detail/wince_thread.hpp index a8518f7..d76fb12 100644 --- a/asio/include/asio/detail/wince_thread.hpp +++ b/asio/include/asio/detail/wince_thread.hpp
@@ -66,6 +66,14 @@ ::WaitForSingleObject(thread_, INFINITE); } + // Get number of CPUs. + static std::size_t hardware_concurrency() + { + SYSTEM_INFO system_info; + ::GetSystemInfo(&system_info); + return system_info.dwNumberOfProcessors; + } + private: friend DWORD WINAPI wince_thread_function(LPVOID arg);
diff --git a/asio/include/asio/impl/error_code.ipp b/asio/include/asio/impl/error_code.ipp index 4e7badb..41744c7 100644 --- a/asio/include/asio/impl/error_code.ipp +++ b/asio/include/asio/impl/error_code.ipp
@@ -44,22 +44,7 @@ std::string message(int value) const { -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - char* msg = 0; - DWORD length = ::FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER - | FORMAT_MESSAGE_FROM_SYSTEM - | FORMAT_MESSAGE_IGNORE_INSERTS, 0, value, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (char*)&msg, 0, 0); - detail::local_free_on_block_exit local_free_obj(msg); - if (length && msg[length - 1] == '\n') - msg[--length] = '\0'; - if (length && msg[length - 1] == '\r') - msg[--length] = '\0'; - if (length) - return msg; - else - return "asio.system error"; -#elif defined(ASIO_WINDOWS_RUNTIME) +#if defined(ASIO_WINDOWS_RUNTIME) || defined(ASIO_WINDOWS_APP) std::wstring wmsg(128, wchar_t()); for (;;) { @@ -89,7 +74,22 @@ else return "asio.system error"; } -#else // defined(ASIO_WINDOWS) +#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__) + char* msg = 0; + DWORD length = ::FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER + | FORMAT_MESSAGE_FROM_SYSTEM + | FORMAT_MESSAGE_IGNORE_INSERTS, 0, value, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (char*)&msg, 0, 0); + detail::local_free_on_block_exit local_free_obj(msg); + if (length && msg[length - 1] == '\n') + msg[--length] = '\0'; + if (length && msg[length - 1] == '\r') + msg[--length] = '\0'; + if (length) + return msg; + else + return "asio.system error"; +#else // defined(ASIO_WINDOWS_DESKTOP) || defined(__CYGWIN__) #if !defined(__sun) if (value == ECANCELED) return "Operation aborted."; @@ -109,7 +109,7 @@ char buf[256] = ""; return strerror_r(value, buf, sizeof(buf)); #endif -#endif // defined(ASIO_WINDOWS) +#endif // defined(ASIO_WINDOWS_DESKTOP) || defined(__CYGWIN__) } #if defined(ASIO_HAS_STD_ERROR_CODE)
diff --git a/asio/include/asio/wait_traits.hpp b/asio/include/asio/wait_traits.hpp index 86814e6..1b87a96 100644 --- a/asio/include/asio/wait_traits.hpp +++ b/asio/include/asio/wait_traits.hpp
@@ -41,10 +41,10 @@ const typename Clock::time_point& t) { typename Clock::time_point now = Clock::now(); - if (now + Clock::duration::max() < t) - return Clock::duration::max(); - if (now + Clock::duration::min() > t) - return Clock::duration::min(); + if (now + (Clock::duration::max)() < t) + return (Clock::duration::max)(); + if (now + (Clock::duration::min)() > t) + return (Clock::duration::min)(); return t - now; } };
diff --git a/asio/src/Makefile.msc b/asio/src/Makefile.msc index 3e15fe4..7cb1c56 100644 --- a/asio/src/Makefile.msc +++ b/asio/src/Makefile.msc
@@ -31,7 +31,11 @@ !endif !ifndef _WIN32_WINNT +! ifdef STORE +_WIN32_WINNT=0x0603 +! else _WIN32_WINNT=0x0501 +! endif !endif !ifdef WIN9X @@ -40,14 +44,21 @@ -D_WIN32_WINNT=$(_WIN32_WINNT) \ -DBOOST_ALL_NO_LIB !else -! ifdef WINRT +! ifdef STORE +DEFINES = \ + -DWINAPI_FAMILY=WINAPI_FAMILY_PC_APP \ + -DBOOST_ALL_NO_LIB -D_WIN32_WINNT=$(_WIN32_WINNT) \ + -DUNICODE -D_UNICODE +! else +! ifdef WINRT DEFINES = \ -ZW -FI SDKDDKVer.h -FI winapifamily.h -DWINAPI_FAMILY=WINAPI_PARTITION_APP \ -DBOOST_ALL_NO_LIB -! else +! else DEFINES = \ -D_WIN32_WINNT=$(_WIN32_WINNT) \ -DBOOST_ALL_NO_LIB +! endif ! endif !endif