From 4f57e532b885fd359935510ee95438727cc1462c Mon Sep 17 00:00:00 2001 From: George Marques Date: Tue, 3 May 2016 16:29:32 -0300 Subject: [PATCH] Fix windows 64-bits build. The change in `tools/doc/doc_data.cpp` is needed because the MSVC compiler does not support variable length arrays. Fix #4113 (cherry picked from commit 9424c6c58f0b33f06807936958978e907574a845) --- drivers/gl_context/glew.h | 3 +-- platform/windows/detect.py | 2 ++ tools/doc/doc_data.cpp | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/gl_context/glew.h b/drivers/gl_context/glew.h index 4eed47708f4..7b66ea97edf 100644 --- a/drivers/gl_context/glew.h +++ b/drivers/gl_context/glew.h @@ -153,8 +153,7 @@ typedef unsigned short wchar_t; #endif #if !defined(_PTRDIFF_T_DEFINED) && !defined(_PTRDIFF_T_) # ifdef _WIN64 -//typedef __int64 ptrdiff_t; -typedef long int ptrdiff_t; +typedef __int64 ptrdiff_t; # else typedef _W64 int ptrdiff_t; # endif diff --git a/platform/windows/detect.py b/platform/windows/detect.py index d01a5a114dd..56e8a5d45d4 100644 --- a/platform/windows/detect.py +++ b/platform/windows/detect.py @@ -289,6 +289,8 @@ def configure(env): print "Compiled program architecture will be a 32 bit executable. (forcing bits=32)." else: print "Failed to detect MSVC compiler architecture version... Defaulting to 32bit executable settings (forcing bits=32). Compilation attempt will continue, but SCons can not detect for what architecture this build is compiled for. You should check your settings/compilation setup." + if env["bits"]=="64": + env.Append(CCFLAGS=['/D_WIN64']) else: # Workaround for MinGW. See: diff --git a/tools/doc/doc_data.cpp b/tools/doc/doc_data.cpp index 0833001a2c0..1d9e964a6bf 100644 --- a/tools/doc/doc_data.cpp +++ b/tools/doc/doc_data.cpp @@ -64,7 +64,7 @@ void DocData::merge_from(const DocData& p_data) { // since polymorphic functions are allowed we need to check the type of // the arguments so we make sure they are different. int arg_count = cf.methods[j].arguments.size(); - bool arg_used[arg_count]; + bool* arg_used = new bool[arg_count]; for (int l = 0; l < arg_count; ++l) arg_used[l] = false; // also there is no guarantee that argument ordering will match, so we // have to check one by one so we make sure we have an exact match