From 32bc7cd8194e25d4e40d2e6c5e80c6340fdafc81 Mon Sep 17 00:00:00 2001 From: rdb Date: Tue, 19 Apr 2016 15:43:02 +0200 Subject: [PATCH] Changes to allow compiling Panda with MSVC 2015 --- makepanda/makepanda.py | 17 +++++++++++++---- makepanda/makepandacore.py | 12 ++++++------ panda/src/downloader/socketStream.h | 12 ++++++++++++ panda/src/dxgsg9/config_dxgsg9.cxx | 5 +++++ 4 files changed, 36 insertions(+), 10 deletions(-) diff --git a/makepanda/makepanda.py b/makepanda/makepanda.py index 59667a33ad..a207c5d726 100755 --- a/makepanda/makepanda.py +++ b/makepanda/makepanda.py @@ -561,6 +561,10 @@ if (COMPILER == "MSVC"): LibName(pkg, 'dxerrVNUM.lib'.replace("VNUM", vnum)) #LibName(pkg, 'ddraw.lib') LibName(pkg, 'dxguid.lib') + + if not PkgSkip("FREETYPE") and os.path.isdir(GetThirdpartyDir() + "freetype/include/freetype2"): + IncDirectory("FREETYPE", GetThirdpartyDir() + "freetype/include/freetype2") + IncDirectory("ALWAYS", GetThirdpartyDir() + "extras/include") LibName("WINSOCK", "wsock32.lib") LibName("WINSOCK2", "wsock32.lib") @@ -587,7 +591,14 @@ if (COMPILER == "MSVC"): if (PkgSkip("DIRECTCAM")==0): LibName("DIRECTCAM", "quartz.lib") if (PkgSkip("DIRECTCAM")==0): LibName("DIRECTCAM", "odbc32.lib") if (PkgSkip("DIRECTCAM")==0): LibName("DIRECTCAM", "odbccp32.lib") - if (PkgSkip("PNG")==0): LibName("PNG", GetThirdpartyDir() + "png/lib/libpng_static.lib") + if (PkgSkip("OPENSSL")==0): + LibName("OPENSSL", GetThirdpartyDir() + "openssl/lib/libpandassl.lib") + LibName("OPENSSL", GetThirdpartyDir() + "openssl/lib/libpandaeay.lib") + if (PkgSkip("PNG")==0): + if os.path.isfile(GetThirdpartyDir() + "png/lib/libpng16_static.lib"): + LibName("PNG", GetThirdpartyDir() + "png/lib/libpng16_static.lib") + else: + LibName("PNG", GetThirdpartyDir() + "png/lib/libpng_static.lib") if (PkgSkip("JPEG")==0): LibName("JPEG", GetThirdpartyDir() + "jpeg/lib/jpeg-static.lib") if (PkgSkip("TIFF")==0): LibName("TIFF", GetThirdpartyDir() + "tiff/lib/libtiff.lib") if (PkgSkip("ZLIB")==0): LibName("ZLIB", GetThirdpartyDir() + "zlib/lib/zlibstatic.lib") @@ -596,8 +607,6 @@ if (COMPILER == "MSVC"): if (PkgSkip("NVIDIACG")==0): LibName("CGGL", GetThirdpartyDir() + "nvidiacg/lib/cgGL.lib") if (PkgSkip("NVIDIACG")==0): LibName("CGDX9", GetThirdpartyDir() + "nvidiacg/lib/cgD3D9.lib") if (PkgSkip("NVIDIACG")==0): LibName("NVIDIACG", GetThirdpartyDir() + "nvidiacg/lib/cg.lib") - if (PkgSkip("OPENSSL")==0): LibName("OPENSSL", GetThirdpartyDir() + "openssl/lib/libpandassl.lib") - if (PkgSkip("OPENSSL")==0): LibName("OPENSSL", GetThirdpartyDir() + "openssl/lib/libpandaeay.lib") if (PkgSkip("FREETYPE")==0): LibName("FREETYPE", GetThirdpartyDir() + "freetype/lib/freetype.lib") if (PkgSkip("FFTW")==0): LibName("FFTW", GetThirdpartyDir() + "fftw/lib/rfftw.lib") if (PkgSkip("FFTW")==0): LibName("FFTW", GetThirdpartyDir() + "fftw/lib/fftw.lib") @@ -703,7 +712,7 @@ if (COMPILER == "MSVC"): IncDirectory("SPEEDTREE", SDK["SPEEDTREE"] + "/Include") if (PkgSkip("BULLET")==0): suffix = '.lib' - if GetTargetArch() == 'x64': + if GetTargetArch() == 'x64' and os.path.isfile(GetThirdpartyDir() + "bullet/lib/BulletCollision_x64.lib"): suffix = '_x64.lib' LibName("BULLET", GetThirdpartyDir() + "bullet/lib/LinearMath" + suffix) LibName("BULLET", GetThirdpartyDir() + "bullet/lib/BulletCollision" + suffix) diff --git a/makepanda/makepandacore.py b/makepanda/makepandacore.py index 05b6053053..a4fe82513f 100644 --- a/makepanda/makepandacore.py +++ b/makepanda/makepandacore.py @@ -1122,12 +1122,12 @@ def GetThirdpartyDir(): target_arch = GetTargetArch() if (target == 'windows'): + vc = SDK["VISUALSTUDIO_VERSION"].split('.')[0] + if target_arch == 'x64': - THIRDPARTYDIR = base + "/win-libs-vc10-x64/" - if not os.path.isdir(THIRDPARTYDIR): - THIRDPARTYDIR = base + "/win-libs-vc10/" + THIRDPARTYDIR = base + "/win-libs-vc" + vc + "-x64/" else: - THIRDPARTYDIR = base + "/win-libs-vc10/" + THIRDPARTYDIR = base + "/win-libs-vc" + vc + "/" elif (target == 'darwin'): # OSX thirdparty binaries are universal, where possible. @@ -2287,8 +2287,8 @@ def SetupVisualStudioEnviron(): AddToPathEnv("PATH", SDK["MSPLATFORM"] + "bin\\" + arch) # Windows Kit 10 introduces the "universal CRT". - inc_dir = SDK["MSPLATFORM"] + "Include\\10.0.10240.0\\" - lib_dir = SDK["MSPLATFORM"] + "Lib\\10.0.10240.0\\" + inc_dir = SDK["MSPLATFORM"] + "Include\\10.0.10586.0\\" + lib_dir = SDK["MSPLATFORM"] + "Lib\\10.0.10586.0\\" AddToPathEnv("INCLUDE", inc_dir + "shared") AddToPathEnv("INCLUDE", inc_dir + "ucrt") AddToPathEnv("INCLUDE", inc_dir + "um") diff --git a/panda/src/downloader/socketStream.h b/panda/src/downloader/socketStream.h index 48c7524cbc..36065e42af 100644 --- a/panda/src/downloader/socketStream.h +++ b/panda/src/downloader/socketStream.h @@ -126,6 +126,10 @@ public: INLINE ISocketStream(streambuf *buf); virtual ~ISocketStream(); +#if _MSC_VER >= 1800 + INLINE ISocketStream(const ISocketStream ©) = delete; +#endif + PUBLISHED: enum ReadState { RS_initial, @@ -155,6 +159,10 @@ class EXPCL_PANDAEXPRESS OSocketStream : public ostream, public SSWriter { public: INLINE OSocketStream(streambuf *buf); +#if _MSC_VER >= 1800 + INLINE OSocketStream(const OSocketStream ©) = delete; +#endif + PUBLISHED: virtual bool is_closed() = 0; virtual void close() = 0; @@ -170,6 +178,10 @@ class EXPCL_PANDAEXPRESS SocketStream : public iostream, public SSReader, public public: INLINE SocketStream(streambuf *buf); +#if _MSC_VER >= 1800 + INLINE SocketStream(const SocketStream ©) = delete; +#endif + PUBLISHED: virtual bool is_closed() = 0; virtual void close() = 0; diff --git a/panda/src/dxgsg9/config_dxgsg9.cxx b/panda/src/dxgsg9/config_dxgsg9.cxx index 64831d08c9..037d8dd919 100644 --- a/panda/src/dxgsg9/config_dxgsg9.cxx +++ b/panda/src/dxgsg9/config_dxgsg9.cxx @@ -265,3 +265,8 @@ init_libdxgsg9() { PandaSystem *ps = PandaSystem::get_global_ptr(); ps->add_system("DirectX9"); } + +// Necessary to allow use of dxerr from MSVC 2015 +#if _MSC_VER >= 1900 +int (WINAPIV * __vsnprintf)(char *, size_t, const char*, va_list) = _vsnprintf; +#endif