diff --git a/README.md b/README.md index bc02c69c6f..615074193e 100644 --- a/README.md +++ b/README.md @@ -38,12 +38,17 @@ After acquiring these dependencies, you may simply build Panda3D from the command prompt using the following command: ```bash -makepanda\makepanda.bat --everything --installer +makepanda\makepanda.bat --everything --installer --no-eigen ``` When the build succeeds, it will produce an .exe file that you can use to install Panda3D on your system. +Note: you may choose to remove --no-eigen and build with Eigen support in +order to improve runtime performance. However, this will cause the build to +take hours to complete, as Eigen is a heavily template-based library, and the +the MSVC compiler does not perform well under these circumstances. + Linux ----- diff --git a/dtool/src/dtoolbase/epvector.h b/dtool/src/dtoolbase/epvector.h index a6baad77af..2359400fd6 100644 --- a/dtool/src/dtoolbase/epvector.h +++ b/dtool/src/dtoolbase/epvector.h @@ -17,7 +17,7 @@ #include "pvector.h" -#if defined(HAVE_EIGEN) && defined(_WIN32) && !defined(CPPPARSER) +#if defined(HAVE_EIGEN) && defined(_WIN32) && !defined(_WIN64) && !defined(CPPPARSER) #include diff --git a/makepanda/makepanda.py b/makepanda/makepanda.py index 487d964d8f..ca941bfdde 100755 --- a/makepanda/makepanda.py +++ b/makepanda/makepanda.py @@ -913,9 +913,19 @@ if (COMPILER=="GCC"): DefSymbol("WITHINPANDA", "WITHIN_PANDA", "1") if GetLinkAllStatic(): - DefSymbol("ALWAYS", "LINK_ALL_STATIC", "") + DefSymbol("ALWAYS", "LINK_ALL_STATIC") if GetTarget() == 'android': - DefSymbol("ALWAYS", "ANDROID", "") + DefSymbol("ALWAYS", "ANDROID") + +if not PkgSkip("EIGEN"): + DefSymbol("ALWAYS", "EIGEN_MPL2_ONLY") + if GetOptimize() >= 3: + DefSymbol("ALWAYS", "EIGEN_NO_DEBUG") + if COMPILER == "MSVC": + # Squeeze out a bit more performance on MSVC builds... + # Only do this if EIGEN_NO_DEBUG is also set, otherwise it + # will turn them into runtime assertions. + DefSymbol("ALWAYS", "EIGEN_NO_STATIC_ASSERT") ######################################################################## ## @@ -1018,10 +1028,10 @@ def CompileCxx(obj,src,opts): if (optlevel==1): cmd += " /MDd /Zi /RTCs /GS" if (optlevel==2): cmd += " /MDd /Zi" - if (optlevel==3): cmd += " /MD /Zi /O2 /Ob2 /Oi /Ot /fp:fast /DFORCE_INLINING" + if (optlevel==3): cmd += " /MD /Zi /GS- /O2 /Ob2 /Oi /Ot /fp:fast" if (optlevel==4): - cmd += " /MD /Zi /Ox /Ob2 /Oi /Ot /fp:fast /DFORCE_INLINING /DNDEBUG /GL" - cmd += " /Oy /Zp16" # jean-claude add /Zp16 insures correct static alignment for SSEx + cmd += " /MD /Zi /GS- /Ox /Ob2 /Oi /Ot /fp:fast /DFORCE_INLINING /DNDEBUG /GL" + cmd += " /Oy /Zp16" # jean-claude add /Zp16 insures correct static alignment for SSEx cmd += " /Fd" + os.path.splitext(obj)[0] + ".pdb" @@ -1036,7 +1046,7 @@ def CompileCxx(obj,src,opts): if 'EXCEPTIONS' in opts: cmd += " /EHsc" else: - cmd += " -D_HAS_EXCEPTIONS=0" + cmd += " /D_HAS_EXCEPTIONS=0" if 'RTTI' not in opts: cmd += " /GR-" diff --git a/panda/src/linmath/vector_LPoint2f.cxx b/panda/src/linmath/vector_LPoint2f.cxx deleted file mode 100644 index 2641b4b26e..0000000000 --- a/panda/src/linmath/vector_LPoint2f.cxx +++ /dev/null @@ -1,27 +0,0 @@ -// Filename: vector_LPoint2f.cxx -// Created by: drose (10May00) -// -//////////////////////////////////////////////////////////////////// -// -// PANDA 3D SOFTWARE -// Copyright (c) Carnegie Mellon University. All rights reserved. -// -// All use of this software is subject to the terms of the revised BSD -// license. You should have received a copy of this license along -// with this source code in a file named "LICENSE." -// -//////////////////////////////////////////////////////////////////// - -#include "vector_LPoint2f.h" - -#define EXPCL EXPCL_PANDA_LINMATH -#define EXPTP EXPTP_PANDA_LINMATH -#define TYPE LPoint2f -#define NAME vector_LPoint2f - -#include "vector_src.cxx" - -// Tell GCC that we'll take care of the instantiation explicitly here. -#ifdef __GNUC__ -#pragma implementation -#endif diff --git a/panda/src/linmath/vector_LPoint2f.h b/panda/src/linmath/vector_LPoint2f.h deleted file mode 100644 index 58dabbc828..0000000000 --- a/panda/src/linmath/vector_LPoint2f.h +++ /dev/null @@ -1,43 +0,0 @@ -// Filename: vector_LPoint2f.h -// Created by: drose (10May00) -// -//////////////////////////////////////////////////////////////////// -// -// PANDA 3D SOFTWARE -// Copyright (c) Carnegie Mellon University. All rights reserved. -// -// All use of this software is subject to the terms of the revised BSD -// license. You should have received a copy of this license along -// with this source code in a file named "LICENSE." -// -//////////////////////////////////////////////////////////////////// - -#ifndef VECTOR_LPOINT2F_H -#define VECTOR_LPOINT2F_H - -#include "pandabase.h" -#include "luse.h" -#include "pvector.h" - -//////////////////////////////////////////////////////////////////// -// Class : vector_LPoint2f -// Description : A vector of LPoint2fs. This class is defined once here, -// and exported to PANDA.DLL; other packages that want -// to use a vector of this type (whether they need to -// export it or not) should include this header file, -// rather than defining the vector again. -//////////////////////////////////////////////////////////////////// - -#define EXPCL EXPCL_PANDA_LINMATH -#define EXPTP EXPTP_PANDA_LINMATH -#define TYPE LPoint2f -#define NAME vector_LPoint2f - -#include "vector_src.h" - -// Tell GCC that we'll take care of the instantiation explicitly here. -#ifdef __GNUC__ -#pragma interface -#endif - -#endif diff --git a/panda/src/pnmimage/convert_srgb.cxx b/panda/src/pnmimage/convert_srgb.cxx index ac46aa50f4..fd99167a79 100644 --- a/panda/src/pnmimage/convert_srgb.cxx +++ b/panda/src/pnmimage/convert_srgb.cxx @@ -15,7 +15,7 @@ #include "convert_srgb.h" // Lookup tables for converting from unsigned char formats. -ALIGN_64BYTE const +const unsigned char to_srgb8_table[256] = { 0x00, 0x0d, 0x16, 0x1c, 0x22, 0x26, 0x2a, 0x2e, 0x32, 0x35, 0x38, 0x3b, 0x3d, 0x40, 0x42, 0x45, 0x47, 0x49, 0x4b, 0x4d, 0x4f, 0x51, 0x53, 0x55, 0x56, 0x58, 0x5a, 0x5c, 0x5d, 0x5f, 0x60, 0x62, 0x63, @@ -38,7 +38,7 @@ unsigned char to_srgb8_table[256] = { 0x00, 0x0d, 0x16, 0x1c, 0x22, 0x26, 0x2a, 0xf9, 0xf9, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfd, 0xfd, 0xfe, 0xfe, 0xff, 0xff}; -ALIGN_64BYTE const +const unsigned char to_linear_uchar_table[256] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, @@ -61,7 +61,6 @@ unsigned char to_linear_uchar_table[256] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe0, 0xe2, 0xe5, 0xe7, 0xe9, 0xeb, 0xed, 0xef, 0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfd, 0xff}; -ALIGN_64BYTE const float to_linear_float_table[256] = { 0, 0.000304f, 0.000607f, 0.000911f, 0.001214f, 0.001518f, 0.001821f, 0.002125f, 0.002428f, 0.002732f, 0.003035f, 0.003347f, 0.003677f, 0.004025f, 0.004391f, 0.004777f, 0.005182f, 0.005605f, diff --git a/panda/src/pnmimage/convert_srgb.h b/panda/src/pnmimage/convert_srgb.h index d2dc064373..db6ec2e435 100644 --- a/panda/src/pnmimage/convert_srgb.h +++ b/panda/src/pnmimage/convert_srgb.h @@ -22,9 +22,9 @@ // The below functions can encode and decode sRGB colors in various // representations. Some of them are implemented using look-up tables, // some others using SSE2 intrinsics. -extern EXPCL_PANDA_PNMIMAGE ALIGN_64BYTE const unsigned char to_srgb8_table[256]; -extern EXPCL_PANDA_PNMIMAGE ALIGN_64BYTE const unsigned char to_linear_uchar_table[256]; -extern EXPCL_PANDA_PNMIMAGE ALIGN_64BYTE const float to_linear_float_table[256]; +extern EXPCL_PANDA_PNMIMAGE const unsigned char to_srgb8_table[256]; +extern EXPCL_PANDA_PNMIMAGE const unsigned char to_linear_uchar_table[256]; +extern EXPCL_PANDA_PNMIMAGE const float to_linear_float_table[256]; EXPCL_PANDA_PNMIMAGE INLINE float decode_sRGB_float(unsigned char val); EXPCL_PANDA_PNMIMAGE INLINE float decode_sRGB_float(float val);