← Back to team overview

linuxdcpp-team team mailing list archive

[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 2873: switch to VC 11

 

------------------------------------------------------------
revno: 2873
committer: poy <poy@xxxxxxxxxx>
branch nick: trunk
timestamp: Sat 2012-03-03 16:04:23 +0100
message:
  switch to VC 11
removed:
  msvc/container/
  msvc/container/custom_hash.h
  msvc/container/deque
  msvc/container/list
  msvc/container/map
  msvc/container/readme.txt
  msvc/container/set
  msvc/container/unordered_map
  msvc/container/unordered_set
  msvc/container/vector
modified:
  Compile.txt
  SConstruct
  build_util.py
  dcpp/FavoriteManager.cpp
  dcpp/MappingManager.cpp
  dcpp/MappingManager.h
  dcpp/SConscript
  dcpp/ShareManager.cpp
  dcpp/ShareManager.h
  dcpp/Socket.cpp
  dcpp/atomic.h
  dcpp/compiler.h
  dwt/include/dwt/Message.h
  dwt/src/SConscript
  dwt/test/SConscript
  openssl/build/build.bat
  test/SConscript
  utils/SConscript
  win32/DCPlusPlus.rc
  win32/SConscript
  win32/compiler.h


--
lp:dcplusplus
https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk

Your team Dcplusplus-team is subscribed to branch lp:dcplusplus.
To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== modified file 'Compile.txt'
--- Compile.txt	2011-10-16 23:06:25 +0000
+++ Compile.txt	2012-03-03 15:04:23 +0000
@@ -73,7 +73,7 @@
 		Also grab natupnp.h from the Windows SDK and place it in the root of the repository.
 		<http://msdn.microsoft.com/en-us/windows/bb980924>
 
-	b. Microsoft Visual C++ 10 (2010):
+	b. Microsoft Visual C++ 11:
 	<http://msdn.microsoft.com/en-us/visualc/default.aspx>
 
 		Download OpenSSL from www.openssl.org and compile it. You should get libraries called

=== modified file 'SConstruct'
--- SConstruct	2012-01-23 20:45:16 +0000
+++ SConstruct	2012-03-03 15:04:23 +0000
@@ -54,8 +54,9 @@
 	'release' : []
 }
 
+# TODO remove _VARIADIC_MAX if/when VC has proper variadic template support
 msvc_defs = {
-	'common' : ['_REENTRANT', 'snprintf=_snprintf'],
+	'common' : ['_REENTRANT', '_VARIADIC_MAX=10', 'snprintf=_snprintf'],
 	'debug' : ['_DEBUG', '_HAS_ITERATOR_DEBUGGING=0', '_SECURE_SCL=0'],
 	'release' : ['NDEBUG']
 }
@@ -107,7 +108,9 @@
 if TARGET_ARCH == 'x64':
 	TARGET_ARCH = 'amd64'
 
-env = Environment(ENV = os.environ, tools = [defEnv['tools']], options = opts, TARGET_ARCH = TARGET_ARCH, MSVS_ARCH = TARGET_ARCH)
+env = Environment(ENV = os.environ, tools = [defEnv['tools']], options = opts,
+		TARGET_ARCH = TARGET_ARCH, MSVS_ARCH = TARGET_ARCH,
+		MSVC_USE_SCRIPT = False) # TODO this disables SCons' automatic env setup as it doesn't know about VC 11 yet
 
 if 'mingw' not in env['TOOLS'] and 'gcc' in env['TOOLS']:
 	raise Exception('Non-mingw gcc builds not supported')

=== modified file 'build_util.py'
--- build_util.py	2012-01-23 20:45:16 +0000
+++ build_util.py	2012-03-03 15:04:23 +0000
@@ -136,7 +136,9 @@
 
 			if 'msvc' in env['TOOLS']:
 				env['PCHSTOP'] = precompiled_header + '.h'
-				env['PCH'] = env.PCH(build_path + precompiled_header + '.pch', precompiled_header + '.cpp')[0]
+				pch = env.PCH(build_path + precompiled_header + '.pch', precompiled_header + '.cpp')
+				env['PCH'] = pch[0]
+				sources.append(pch[1])
 
 			elif 'gcc' in env['TOOLS']:
 				env['Gch'] = env.Gch(build_path + precompiled_header + '.h.gch', precompiled_header + '.h')[0]
@@ -220,14 +222,6 @@
 			asciidoc = 'python ' + asciidoc
 		return asciidoc
 
-	# switch to boost containers instead of default STL containers on MSVC for the given project.
-	def msvc_boost_containers(self, env):
-		if 'msvc' in env['TOOLS']:
-			env.Append(CPPPATH = ['#/msvc/container/'])
-			# define include guards of STL files to make sure only boost containers are used.
-			env.Append(CPPDEFINES = ['_DEQUE_', '_LIST_', '_MAP_', '_SET_', '_UNORDERED_MAP_', '_UNORDERED_SET_', '_VECTOR_',
-				'BOOST_DETAIL_NO_CONTAINER_FWD']) # see boost/detail/container_fwd.hpp
-
 # source is *one* SCons file node (not a list!) designating the .po file
 def get_po_name(source):
 	# rely on the comments at the beginning of the po file to find the language name.

=== modified file 'dcpp/FavoriteManager.cpp'
--- dcpp/FavoriteManager.cpp	2012-02-04 15:43:31 +0000
+++ dcpp/FavoriteManager.cpp	2012-03-03 15:04:23 +0000
@@ -292,7 +292,7 @@
 			const string& maxUsers = getAttrib(attribs, "Maxusers", 5);
 			const string& reliability = getAttrib(attribs, "Reliability", 5);
 			const string& rating = getAttrib(attribs, "Rating", 5);
-			/// @todo change to emplace_back when MSVC has templates with var args, thus allowing these 12 arguments! (boost emulation only goes to 10)
+			/// @todo change to emplace_back when MSVC has templates with var args, thus allowing these 12 arguments! (its current emulation only goes up to 10)
 			publicHubs.push_back(HubEntry(name, server, description, users, country, shared, minShare, minSlots, maxHubs, maxUsers, reliability, rating));
 		}
 	}

=== modified file 'dcpp/MappingManager.cpp'
--- dcpp/MappingManager.cpp	2012-02-21 22:11:22 +0000
+++ dcpp/MappingManager.cpp	2012-03-03 15:04:23 +0000
@@ -32,7 +32,9 @@
 
 namespace dcpp {
 
-MappingManager::MappingManager() : busy(false), renewal(0) {
+atomic_flag MappingManager::busy = ATOMIC_FLAG_INIT;
+
+MappingManager::MappingManager() : renewal(0) {
 	addMapper<Mapper_NATPMP>();
 	addMapper<Mapper_MiniUPnPc>();
 	addMapper<Mapper_WinUPnP>();

=== modified file 'dcpp/MappingManager.h'
--- dcpp/MappingManager.h	2012-02-21 22:11:22 +0000
+++ dcpp/MappingManager.h	2012-03-03 15:04:23 +0000
@@ -45,16 +45,9 @@
 	/** add an implementation derived from the base Mapper class, passed as template parameter.
 	the first added mapper will be tried first, unless the "MAPPER" setting is not empty. */
 	template<typename T> void addMapper() {
-#ifndef _MSC_VER
 		mappers.emplace_back(T::name, [](string&& localIp) {
 			return new T(std::forward<string>(localIp));
 		});
-#else
-		// the rvalue ref deal is too smart for MSVC; resort to a string copy...
-		mappers.push_back(make_pair(T::name, [](string localIp) {
-			return new T(std::move(localIp));
-		}));
-#endif
 	}
 	StringList getMappers() const;
 
@@ -69,13 +62,9 @@
 private:
 	friend class Singleton<MappingManager>;
 
-#ifndef _MSC_VER
 	vector<pair<string, function<Mapper* (string&&)>>> mappers;
-#else
-	vector<pair<string, function<Mapper* (const string&)>>> mappers;
-#endif
 
-	atomic_flag busy;
+	static atomic_flag busy;
 	unique_ptr<Mapper> working; /// currently working implementation.
 	uint64_t renewal; /// when the next renewal should happen, if requested by the mapper.
 

=== modified file 'dcpp/SConscript'
--- dcpp/SConscript	2012-01-23 17:56:18 +0000
+++ dcpp/SConscript	2012-03-03 15:04:23 +0000
@@ -8,8 +8,6 @@
 
 env.Append(CPPDEFINES = ['BUILDING_DCPP=1'])
 
-dev.msvc_boost_containers(env)
-
 headers=dev.get_sources(source_path, "*.h")
 dev.i18n(source_path, env, [sources, headers], 'libdcpp')
 

=== modified file 'dcpp/ShareManager.cpp'
--- dcpp/ShareManager.cpp	2012-02-04 15:43:31 +0000
+++ dcpp/ShareManager.cpp	2012-03-03 15:04:23 +0000
@@ -51,8 +51,10 @@
 
 using std::numeric_limits;
 
+atomic_flag ShareManager::refreshing = ATOMIC_FLAG_INIT;
+
 ShareManager::ShareManager() : hits(0), xmlListLen(0), bzXmlListLen(0),
-	xmlDirty(true), forceXmlRefresh(true), refreshDirs(false), update(false), initial(true), listN(0), refreshing(false),
+	xmlDirty(true), forceXmlRefresh(true), refreshDirs(false), update(false), initial(true), listN(0),
 	lastXmlUpdate(0), lastFullUpdate(GET_TICK()), bloom(1<<20)
 {
 	SettingsManager::getInstance()->addListener(this);

=== modified file 'dcpp/ShareManager.h'
--- dcpp/ShareManager.h	2012-01-13 20:55:20 +0000
+++ dcpp/ShareManager.h	2012-03-03 15:04:23 +0000
@@ -249,7 +249,7 @@
 
 	int listN;
 
-	atomic_flag refreshing;
+	static atomic_flag refreshing;
 
 	uint64_t lastXmlUpdate;
 	uint64_t lastFullUpdate;

=== modified file 'dcpp/Socket.cpp'
--- dcpp/Socket.cpp	2012-01-13 20:55:20 +0000
+++ dcpp/Socket.cpp	2012-03-03 15:04:23 +0000
@@ -484,14 +484,17 @@
 }
 
 void Socket::setSocketOpt(int option, int val) {
+	if(option==SO_RCVBUF) { printf("setting SO_RCVBUF - 0\n"); }
 	int len = sizeof(val);
 	if(sock4.valid()) {
 		check([&] { return ::setsockopt(sock4, SOL_SOCKET, option, (char*)&val, len); });
 	}
+	if(option==SO_RCVBUF) { printf("setting SO_RCVBUF - 1\n"); }
 
 	if(sock6.valid()) {
 		check([&] { return ::setsockopt(sock6, SOL_SOCKET, option, (char*)&val, len); });
 	}
+	if(option==SO_RCVBUF) { printf("setting SO_RCVBUF - 2\n"); }
 }
 
 int Socket::read(void* aBuffer, int aBufLen) {

=== modified file 'dcpp/atomic.h'
--- dcpp/atomic.h	2012-01-13 20:55:20 +0000
+++ dcpp/atomic.h	2012-03-03 15:04:23 +0000
@@ -20,8 +20,7 @@
 #define DCPLUSPLUS_DCPP_ATOMIC_HPP_
 
 // GCC 4.6 and below has issues with atomic - see https://bugs.launchpad.net/dcplusplus/+bug/735512
-// MSVC 10 doesn't have atomic at all
-#if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7)) || defined(_MSC_VER)
+#if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7))
 
 #include <boost/atomic.hpp>
 
@@ -33,6 +32,10 @@
 
 }
 
+#ifndef ATOMIC_FLAG_INIT
+#define ATOMIC_FLAG_INIT { 0 }
+#endif
+
 #else
 
 #include <atomic>

=== modified file 'dcpp/compiler.h'
--- dcpp/compiler.h	2012-01-23 20:18:58 +0000
+++ dcpp/compiler.h	2012-03-03 15:04:23 +0000
@@ -29,8 +29,8 @@
 #endif
 
 #elif defined(_MSC_VER)
-#if _MSC_VER < 1600
-#error MSVC 10 (2010) is required
+#if _MSC_VER < 1700
+#error MSVC 11 is required
 #endif
 
 //disable the deprecated warnings for the CRT functions.

=== modified file 'dwt/include/dwt/Message.h'
--- dwt/include/dwt/Message.h	2012-01-13 20:55:20 +0000
+++ dwt/include/dwt/Message.h	2012-03-03 15:04:23 +0000
@@ -81,7 +81,7 @@
 	bool operator<(const Message& rhs) const;
 	bool operator==(const Message& rhs) const;
 private:
-	friend class std::hash<Message>;
+	friend struct std::hash<Message>;
 
 	/// Contains the actual Message
 	UINT msg;

=== modified file 'dwt/src/SConscript'
--- dwt/src/SConscript	2012-01-23 17:56:18 +0000
+++ dwt/src/SConscript	2012-03-03 15:04:23 +0000
@@ -4,8 +4,6 @@
 
 env.Append(CPPPATH = ['#/dwt/include'])
 
-dev.msvc_boost_containers(env)
-
 def get_msvcproj_files(env):
 	def parse_patterns(patterns):
 		array = []

=== modified file 'dwt/test/SConscript'
--- dwt/test/SConscript	2012-01-23 17:56:18 +0000
+++ dwt/test/SConscript	2012-03-03 15:04:23 +0000
@@ -8,8 +8,6 @@
 
 env.Append(CPPPATH = ['#/dwt/include'])
 
-dev.msvc_boost_containers(env)
-
 # imitate build_util's prepare_build
 env.VariantDir(dev.get_build_path(source_path), '.', duplicate = 0)
 if env['msvcproj']:

=== removed directory 'msvc/container'
=== removed file 'msvc/container/custom_hash.h'
--- msvc/container/custom_hash.h	2012-01-23 17:56:18 +0000
+++ msvc/container/custom_hash.h	1970-01-01 00:00:00 +0000
@@ -1,16 +0,0 @@
-#ifndef DCPP_BOOST_CONTAINER_CUSTOM_HASH
-#define DCPP_BOOST_CONTAINER_CUSTOM_HASH
-
-/* boost & STL have different ways of specifying a custom hash. since DC++ only uses the STL way,
- * this defines a generic boost hash function that redirects to STL ones. */
-
-namespace boost {
-	template<typename T>
-	inline size_t hash_value(const T& t) {
-		return std::hash<T>()(t);
-	}
-}
-
-#endif
-
-// vim: set filetype=cpp :

=== removed file 'msvc/container/deque'
--- msvc/container/deque	2012-01-23 17:56:18 +0000
+++ msvc/container/deque	1970-01-01 00:00:00 +0000
@@ -1,12 +0,0 @@
-#ifndef DCPP_BOOST_CONTAINER_DEQUE
-#define DCPP_BOOST_CONTAINER_DEQUE
-
-#include <boost/container/deque.hpp>
-
-namespace std {
-	using boost::container::deque;
-}
-
-#endif
-
-// vim: set filetype=cpp :

=== removed file 'msvc/container/list'
--- msvc/container/list	2012-01-23 17:56:18 +0000
+++ msvc/container/list	1970-01-01 00:00:00 +0000
@@ -1,12 +0,0 @@
-#ifndef DCPP_BOOST_CONTAINER_LIST
-#define DCPP_BOOST_CONTAINER_LIST
-
-#include <boost/container/list.hpp>
-
-namespace std {
-	using boost::container::list;
-}
-
-#endif
-
-// vim: set filetype=cpp :

=== removed file 'msvc/container/map'
--- msvc/container/map	2012-01-23 20:45:16 +0000
+++ msvc/container/map	1970-01-01 00:00:00 +0000
@@ -1,13 +0,0 @@
-#ifndef DCPP_BOOST_CONTAINER_MAP
-#define DCPP_BOOST_CONTAINER_MAP
-
-#include <boost/container/map.hpp>
-
-namespace std {
-	using boost::container::map;
-	using boost::container::multimap;
-}
-
-#endif
-
-// vim: set filetype=cpp :

=== removed file 'msvc/container/readme.txt'
--- msvc/container/readme.txt	2012-01-23 17:56:18 +0000
+++ msvc/container/readme.txt	1970-01-01 00:00:00 +0000
@@ -1,3 +0,0 @@
-This directory contains include files that short-circuit MSVC's standard container implementation
-in favor of the one provided by Boost.Container. This allows, in particular, emplace / emplace_back
-with variable arguments which MSVC is lacking (as of 2010).

=== removed file 'msvc/container/set'
--- msvc/container/set	2012-01-23 20:45:16 +0000
+++ msvc/container/set	1970-01-01 00:00:00 +0000
@@ -1,13 +0,0 @@
-#ifndef DCPP_BOOST_CONTAINER_SET
-#define DCPP_BOOST_CONTAINER_SET
-
-#include <boost/container/set.hpp>
-
-namespace std {
-	using boost::container::set;
-	using boost::container::multiset;
-}
-
-#endif
-
-// vim: set filetype=cpp :

=== removed file 'msvc/container/unordered_map'
--- msvc/container/unordered_map	2012-01-23 17:56:18 +0000
+++ msvc/container/unordered_map	1970-01-01 00:00:00 +0000
@@ -1,17 +0,0 @@
-#ifndef DCPP_BOOST_CONTAINER_UNORDERED_MAP
-#define DCPP_BOOST_CONTAINER_UNORDERED_MAP
-
-#include <vector>
-
-#include <boost/unordered/unordered_map.hpp>
-
-namespace std {
-	using boost::unordered_map;
-	using boost::unordered_multimap;
-}
-
-#include "custom_hash.h"
-
-#endif
-
-// vim: set filetype=cpp :

=== removed file 'msvc/container/unordered_set'
--- msvc/container/unordered_set	2012-01-23 17:56:18 +0000
+++ msvc/container/unordered_set	1970-01-01 00:00:00 +0000
@@ -1,17 +0,0 @@
-#ifndef DCPP_BOOST_CONTAINER_UNORDERED_SET
-#define DCPP_BOOST_CONTAINER_UNORDERED_SET
-
-#include <vector>
-
-#include <boost/unordered/unordered_set.hpp>
-
-namespace std {
-	using boost::unordered_set;
-	using boost::unordered_multiset;
-}
-
-#include "custom_hash.h"
-
-#endif
-
-// vim: set filetype=cpp :

=== removed file 'msvc/container/vector'
--- msvc/container/vector	2012-01-23 17:56:18 +0000
+++ msvc/container/vector	1970-01-01 00:00:00 +0000
@@ -1,12 +0,0 @@
-#ifndef DCPP_BOOST_CONTAINER_VECTOR
-#define DCPP_BOOST_CONTAINER_VECTOR
-
-#include <boost/container/vector.hpp>
-
-namespace std {
-	using boost::container::vector;
-}
-
-#endif
-
-// vim: set filetype=cpp :

=== modified file 'openssl/build/build.bat'
--- openssl/build/build.bat	2011-06-04 18:26:04 +0000
+++ openssl/build/build.bat	2012-03-03 15:04:23 +0000
@@ -3,7 +3,7 @@
 echo on
 if errorlevel 2 goto end
 
-set VCDIR=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC
+set VCDIR=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC
 
 mv ../include/openssl/opensslconf.h .
 rm -rf ../include ../lib

=== modified file 'test/SConscript'
--- test/SConscript	2012-01-23 17:56:18 +0000
+++ test/SConscript	2012-03-03 15:04:23 +0000
@@ -46,8 +46,6 @@
 	openssl_lib += env['arch'] + '/'
 env.Append(LIBPATH = [openssl_lib])
 
-dev.msvc_boost_containers(env)
-
 if env['msvcproj']:
 	ret = dev.build_lib(env, target, sources, dev.cpp_lib)
 else:

=== modified file 'utils/SConscript'
--- utils/SConscript	2012-01-23 17:56:18 +0000
+++ utils/SConscript	2012-03-03 15:04:23 +0000
@@ -35,8 +35,6 @@
 	openssl_lib += env['arch'] + '/'
 env.Append(LIBPATH = [openssl_lib])
 
-dev.msvc_boost_containers(env)
-
 # imitate build_util's prepare_build
 env.VariantDir(dev.get_build_path(source_path), '.', duplicate = 0)
 if env['msvcproj']:

=== modified file 'win32/DCPlusPlus.rc'
--- win32/DCPlusPlus.rc	2012-01-16 17:56:17 +0000
+++ win32/DCPlusPlus.rc	2012-03-03 15:04:23 +0000
@@ -1,23 +1,4 @@
-// Microsoft Visual C++ generated resource script.
-//
 #include "resource.h"
-#include <winuser.h>
-#include <commctrl.h>
-/////////////////////////////////////////////////////////////////////////////
-// English (U.S.) resources
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE 
-BEGIN
-    "win32/resource.h\0"
-END
-
-#endif    // APSTUDIO_INVOKED
 
 #if defined x86
 1 24 "res/DCPlusPlus.manifest.x86"

=== modified file 'win32/SConscript'
--- win32/SConscript	2012-01-23 17:56:18 +0000
+++ win32/SConscript	2012-03-03 15:04:23 +0000
@@ -32,8 +32,6 @@
 	openssl_lib += env['arch'] + '/'
 env.Append(LIBPATH = [openssl_lib])
 
-dev.msvc_boost_containers(env)
-
 if env['RC'] == 'rc': # MSVC
 	env.Append(RCFLAGS = ['/d' + env['arch']])
 elif env['RC'].find('windres') != -1: # MinGW

=== modified file 'win32/compiler.h'
--- win32/compiler.h	2012-01-13 20:55:20 +0000
+++ win32/compiler.h	2012-03-03 15:04:23 +0000
@@ -22,8 +22,8 @@
 #endif
 
 #elif defined(_MSC_VER)
-#if _MSC_VER < 1600
-#error MSVC 10 (2010) is required
+#if _MSC_VER < 1700
+#error MSVC 11 is required
 #endif
 
 #else