Sfoglia il codice sorgente

Explicit template instantiation on gcc/clang, implement cfsworks' suggestion of moving compiler-specific stuff out of pandasymbols.h et al

rdb 10 anni fa
parent
commit
f69354d9fa

+ 4 - 13
contrib/src/contribbase/contribsymbols.h

@@ -22,21 +22,12 @@
    C++-style comments, since this file is occasionally included by a C
    C++-style comments, since this file is occasionally included by a C
    file. */
    file. */
 
 
-#if defined(WIN32_VC) && !defined(CPPPARSER) && !defined(LINK_ALL_STATIC)
-
 #ifdef BUILDING_PANDAAI
 #ifdef BUILDING_PANDAAI
-  #define EXPCL_PANDAAI __declspec(dllexport)
-  #define EXPTP_PANDAAI
+  #define EXPCL_PANDAAI EXPORT_CLASS
+  #define EXPTP_PANDAAI EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_PANDAAI __declspec(dllimport)
-  #define EXPTP_PANDAAI extern
+  #define EXPCL_PANDAAI IMPORT_CLASS
+  #define EXPTP_PANDAAI IMPORT_TEMPL
 #endif
 #endif
 
 
-#else   /* !WIN32_VC */
-
-#define EXPCL_PANDAAI
-#define EXPTP_PANDAAI
-
-#endif  /* WIN32_VC */
-
 #endif
 #endif

+ 4 - 13
direct/src/directbase/directsymbols.h

@@ -17,21 +17,12 @@
 
 
 /* See dtoolsymbols.h for a rant on the purpose of this file.  */
 /* See dtoolsymbols.h for a rant on the purpose of this file.  */
 
 
-#if defined(WIN32_VC) && !defined(CPPPARSER) && !defined(LINK_ALL_STATIC)
-
 #ifdef BUILDING_DIRECT
 #ifdef BUILDING_DIRECT
-  #define EXPCL_DIRECT __declspec(dllexport)
-  #define EXPTP_DIRECT
+  #define EXPCL_DIRECT EXPORT_CLASS
+  #define EXPTP_DIRECT EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_DIRECT __declspec(dllimport)
-  #define EXPTP_DIRECT extern
+  #define EXPCL_DIRECT IMPORT_CLASS
+  #define EXPTP_DIRECT IMPORT_TEMPL
 #endif
 #endif
 
 
-#else   /* !WIN32_VC */
-
-#define EXPCL_DIRECT
-#define EXPTP_DIRECT
-
-#endif  /* WIN32_VC */
-
 #endif
 #endif

+ 13 - 0
dtool/src/dtoolbase/dtoolbase.h

@@ -427,6 +427,19 @@
 #define EXTEND
 #define EXTEND
 #endif
 #endif
 
 
+/* These symbols are used in dtoolsymbols.h and pandasymbols.h. */
+#if defined(WIN32_VC) && !defined(CPPPARSER) && !defined(LINK_ALL_STATIC)
+#define EXPORT_CLASS __declspec(dllexport)
+#define EXPORT_TEMPL
+#define IMPORT_CLASS __declspec(dllimport)
+#define IMPORT_TEMPL extern
+#else
+#define EXPORT_CLASS
+#define EXPORT_TEMPL
+#define IMPORT_CLASS
+#define IMPORT_TEMPL extern
+#endif
+
 #ifdef __cplusplus
 #ifdef __cplusplus
 #include "dtoolbase_cc.h"
 #include "dtoolbase_cc.h"
 #endif
 #endif

+ 1 - 1
dtool/src/dtoolbase/dtoolbase_cc.h

@@ -174,7 +174,7 @@ typedef ios::seekdir ios_seekdir;
 #  define MOVE(x) x
 #  define MOVE(x) x
 #endif
 #endif
 
 
-#if defined(WIN32_VC) && !defined(LINK_ALL_STATIC) && defined(EXPORT_TEMPLATES)
+#if !defined(LINK_ALL_STATIC) && defined(EXPORT_TEMPLATES)
 // This macro must be used to export an instantiated template class
 // This macro must be used to export an instantiated template class
 // from a DLL.  If the template class name itself contains commas, it
 // from a DLL.  If the template class name itself contains commas, it
 // may be necessary to first define a macro for the class name, to
 // may be necessary to first define a macro for the class name, to

+ 12 - 27
dtool/src/dtoolbase/dtoolsymbols.h

@@ -70,45 +70,30 @@
 
 
 #define EXPCL_EMPTY
 #define EXPCL_EMPTY
 
 
-#if defined(WIN32_VC) && !defined(CPPPARSER) && !defined(LINK_ALL_STATIC)
-
 #ifdef BUILDING_DTOOL
 #ifdef BUILDING_DTOOL
-  #define EXPCL_DTOOL __declspec(dllexport)
-  #define EXPTP_DTOOL
+  #define EXPCL_DTOOL EXPORT_CLASS
+  #define EXPTP_DTOOL EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_DTOOL __declspec(dllimport)
-  #define EXPTP_DTOOL extern
+  #define EXPCL_DTOOL IMPORT_CLASS
+  #define EXPTP_DTOOL IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_DTOOLCONFIG
 #ifdef BUILDING_DTOOLCONFIG
-  #define EXPCL_DTOOLCONFIG __declspec(dllexport)
-  #define EXPTP_DTOOLCONFIG
+  #define EXPCL_DTOOLCONFIG EXPORT_CLASS
+  #define EXPTP_DTOOLCONFIG EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_DTOOLCONFIG __declspec(dllimport)
-  #define EXPTP_DTOOLCONFIG extern
+  #define EXPCL_DTOOLCONFIG IMPORT_CLASS
+  #define EXPTP_DTOOLCONFIG IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_MISC
 #ifdef BUILDING_MISC
-  #define EXPCL_MISC __declspec(dllexport)
-  #define EXPTP_MISC
+  #define EXPCL_MISC EXPORT_CLASS
+  #define EXPTP_MISC EXPORT_TEMPL
 #else /* BUILDING_MISC */
 #else /* BUILDING_MISC */
-  #define EXPCL_MISC __declspec(dllimport)
-  #define EXPTP_MISC extern
+  #define EXPCL_MISC IMPORT_CLASS
+  #define EXPTP_MISC IMPORT_TEMPL
 #endif /* BUILDING_MISC */
 #endif /* BUILDING_MISC */
 
 
-#else   /* !WIN32_VC */
-
-#define EXPCL_DTOOL
-#define EXPTP_DTOOL
-
-#define EXPCL_DTOOLCONFIG
-#define EXPTP_DTOOLCONFIG
-
-#define EXPCL_MISC
-#define EXPTP_MISC
-
-#endif  /* WIN32_VC */
-
 /* These two are always defined empty, because pystub is statically
 /* These two are always defined empty, because pystub is statically
    built.  But we leave the symbol around in case we change our minds
    built.  But we leave the symbol around in case we change our minds
    to make pystub once again be a dynamic library. */
    to make pystub once again be a dynamic library. */

+ 0 - 2
panda/src/chan/animChannelMatrixFixed.h

@@ -20,8 +20,6 @@
 #include "animChannel.h"
 #include "animChannel.h"
 #include "luse.h"
 #include "luse.h"
 
 
-EXPORT_TEMPLATE_CLASS(EXPCL_PANDA_CHAN, EXPTP_PANDA_CHAN, AnimChannel<ACMatrixSwitchType>);
-
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //       Class : AnimChannelMatrixFixed
 //       Class : AnimChannelMatrixFixed
 // Description : A specialization on AnimChannel to add all the
 // Description : A specialization on AnimChannel to add all the

+ 2 - 0
panda/src/display/displayRegion.h

@@ -360,6 +360,8 @@ private:
   static TypeHandle _type_handle;
   static TypeHandle _type_handle;
 };
 };
 
 
+EXPORT_TEMPLATE_CLASS(EXPCL_PANDA_DISPLAY, EXPTP_PANDA_DISPLAY, epvector<DisplayRegion::Region>);
+
 #include "displayRegion.I"
 #include "displayRegion.I"
 
 
 #endif /* DISPLAYREGION_H */
 #endif /* DISPLAYREGION_H */

+ 3 - 0
panda/src/egg/eggMorphList.h

@@ -65,6 +65,9 @@ private:
   Morphs _morphs;
   Morphs _morphs;
 };
 };
 
 
+EXPORT_TEMPLATE_CLASS(EXPCL_PANDAEGG, EXPTP_PANDAEGG, EggMorphList<EggMorph<LVector3d> >);
+EXPORT_TEMPLATE_CLASS(EXPCL_PANDAEGG, EXPTP_PANDAEGG, EggMorphList<EggMorph<LVector4> >);
+
 typedef EggMorphList<EggMorphVertex> EggMorphVertexList;
 typedef EggMorphList<EggMorphVertex> EggMorphVertexList;
 typedef EggMorphList<EggMorphNormal> EggMorphNormalList;
 typedef EggMorphList<EggMorphNormal> EggMorphNormalList;
 typedef EggMorphList<EggMorphTexCoord> EggMorphTexCoordList;
 typedef EggMorphList<EggMorphTexCoord> EggMorphTexCoordList;

+ 2 - 0
panda/src/gobj/shader.h

@@ -607,6 +607,8 @@ private:
   static TypeHandle _type_handle;
   static TypeHandle _type_handle;
 };
 };
 
 
+EXPORT_TEMPLATE_CLASS(EXPCL_PANDA_GOBJ, EXPTP_PANDA_GOBJ, epvector<Shader::ShaderMatSpec>);
+
 #include "shader.I"
 #include "shader.I"
 
 
 #endif
 #endif

+ 128 - 233
panda/src/pandabase/pandasymbols.h

@@ -22,367 +22,262 @@
    C++-style comments, since this file is occasionally included by a C
    C++-style comments, since this file is occasionally included by a C
    file. */
    file. */
 
 
-#if (defined(WIN32_VC) || defined(WIN64_VC)) && !defined(CPPPARSER) && !defined(LINK_ALL_STATIC)
-
 #ifdef BUILDING_CFTALK
 #ifdef BUILDING_CFTALK
-  #define EXPCL_CFTALK __declspec(dllexport)
-  #define EXPTP_CFTALK
+  #define EXPCL_CFTALK EXPORT_CLASS
+  #define EXPTP_CFTALK EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_CFTALK __declspec(dllimport)
-  #define EXPTP_CFTALK extern
+  #define EXPCL_CFTALK IMPORT_CLASS
+  #define EXPTP_CFTALK IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_COLLADA
 #ifdef BUILDING_COLLADA
-  #define EXPCL_COLLADA __declspec(dllexport)
-  #define EXPTP_COLLADA
+  #define EXPCL_COLLADA EXPORT_CLASS
+  #define EXPTP_COLLADA EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_COLLADA __declspec(dllimport)
-  #define EXPTP_COLLADA extern
+  #define EXPCL_COLLADA IMPORT_CLASS
+  #define EXPTP_COLLADA IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_FFMPEG
 #ifdef BUILDING_FFMPEG
-  #define EXPCL_FFMPEG __declspec(dllexport)
-  #define EXPTP_FFMPEG
+  #define EXPCL_FFMPEG EXPORT_CLASS
+  #define EXPTP_FFMPEG EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_FFMPEG __declspec(dllimport)
-  #define EXPTP_FFMPEG extern
+  #define EXPCL_FFMPEG IMPORT_CLASS
+  #define EXPTP_FFMPEG IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_FRAMEWORK
 #ifdef BUILDING_FRAMEWORK
-  #define EXPCL_FRAMEWORK __declspec(dllexport)
-  #define EXPTP_FRAMEWORK
+  #define EXPCL_FRAMEWORK EXPORT_CLASS
+  #define EXPTP_FRAMEWORK EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_FRAMEWORK __declspec(dllimport)
-  #define EXPTP_FRAMEWORK extern
+  #define EXPCL_FRAMEWORK IMPORT_CLASS
+  #define EXPTP_FRAMEWORK IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_LINUX_AUDIO
 #ifdef BUILDING_LINUX_AUDIO
-  #define EXPCL_LINUX_AUDIO __declspec(dllexport)
-  #define EXPTP_LINUX_AUDIO
+  #define EXPCL_LINUX_AUDIO EXPORT_CLASS
+  #define EXPTP_LINUX_AUDIO EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_LINUX_AUDIO __declspec(dllimport)
-  #define EXPTP_LINUX_AUDIO extern
+  #define EXPCL_LINUX_AUDIO IMPORT_CLASS
+  #define EXPTP_LINUX_AUDIO IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_MILES_AUDIO
 #ifdef BUILDING_MILES_AUDIO
-  #define EXPCL_MILES_AUDIO __declspec(dllexport)
-  #define EXPTP_MILES_AUDIO
+  #define EXPCL_MILES_AUDIO EXPORT_CLASS
+  #define EXPTP_MILES_AUDIO EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_MILES_AUDIO __declspec(dllimport)
-  #define EXPTP_MILES_AUDIO extern
+  #define EXPCL_MILES_AUDIO IMPORT_CLASS
+  #define EXPTP_MILES_AUDIO IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_FMOD_AUDIO
 #ifdef BUILDING_FMOD_AUDIO
-  #define EXPCL_FMOD_AUDIO __declspec(dllexport)
-  #define EXPTP_FMOD_AUDIO
+  #define EXPCL_FMOD_AUDIO EXPORT_CLASS
+  #define EXPTP_FMOD_AUDIO EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_FMOD_AUDIO __declspec(dllimport)
-  #define EXPTP_FMOD_AUDIO extern
+  #define EXPCL_FMOD_AUDIO IMPORT_CLASS
+  #define EXPTP_FMOD_AUDIO IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_OCULUSVR
 #ifdef BUILDING_OCULUSVR
-  #define EXPCL_OCULUSVR __declspec(dllexport)
-  #define EXPTP_OCULUSVR
+  #define EXPCL_OCULUSVR EXPORT_CLASS
+  #define EXPTP_OCULUSVR EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_OCULUSVR __declspec(dllimport)
-  #define EXPTP_OCULUSVR extern
+  #define EXPCL_OCULUSVR IMPORT_CLASS
+  #define EXPTP_OCULUSVR IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_OPENAL_AUDIO
 #ifdef BUILDING_OPENAL_AUDIO
-  #define EXPCL_OPENAL_AUDIO __declspec(dllexport)
-  #define EXPTP_OPENAL_AUDIO
+  #define EXPCL_OPENAL_AUDIO EXPORT_CLASS
+  #define EXPTP_OPENAL_AUDIO EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_OPENAL_AUDIO __declspec(dllimport)
-  #define EXPTP_OPENAL_AUDIO extern
+  #define EXPCL_OPENAL_AUDIO IMPORT_CLASS
+  #define EXPTP_OPENAL_AUDIO IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_PANDA
 #ifdef BUILDING_PANDA
-  #define EXPCL_PANDA __declspec(dllexport)
-  #define EXPTP_PANDA
+  #define EXPCL_PANDA EXPORT_CLASS
+  #define EXPTP_PANDA EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_PANDA __declspec(dllimport)
-  #define EXPTP_PANDA extern
+  #define EXPCL_PANDA IMPORT_CLASS
+  #define EXPTP_PANDA IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_PANDAAWESOMIUM
 #ifdef BUILDING_PANDAAWESOMIUM
-  #define EXPCL_PANDAAWESOMIUM __declspec(dllexport)
-  #define EXPTP_PANDAAWESOMIUM
+  #define EXPCL_PANDAAWESOMIUM EXPORT_CLASS
+  #define EXPTP_PANDAAWESOMIUM EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_PANDAAWESOMIUM __declspec(dllimport)
-  #define EXPTP_PANDAAWESOMIUM extern
+  #define EXPCL_PANDAAWESOMIUM IMPORT_CLASS
+  #define EXPTP_PANDAAWESOMIUM IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_PANDABULLET
 #ifdef BUILDING_PANDABULLET
-  #define EXPCL_PANDABULLET __declspec(dllexport)
-  #define EXPTP_PANDABULLET
+  #define EXPCL_PANDABULLET EXPORT_CLASS
+  #define EXPTP_PANDABULLET EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_PANDABULLET __declspec(dllimport)
-  #define EXPTP_PANDABULLET extern
+  #define EXPCL_PANDABULLET IMPORT_CLASS
+  #define EXPTP_PANDABULLET IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_PANDACR
 #ifdef BUILDING_PANDACR
-  #define EXPCL_PANDACR __declspec(dllexport)
-  #define EXPTP_PANDACR
+  #define EXPCL_PANDACR EXPORT_CLASS
+  #define EXPTP_PANDACR EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_PANDACR __declspec(dllimport)
-  #define EXPTP_PANDACR extern
+  #define EXPCL_PANDACR IMPORT_CLASS
+  #define EXPTP_PANDACR IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_PANDADX
 #ifdef BUILDING_PANDADX
-  #define EXPCL_PANDADX __declspec(dllexport)
-  #define EXPTP_PANDADX
+  #define EXPCL_PANDADX EXPORT_CLASS
+  #define EXPTP_PANDADX EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_PANDADX __declspec(dllimport)
-  #define EXPTP_PANDADX extern
+  #define EXPCL_PANDADX IMPORT_CLASS
+  #define EXPTP_PANDADX IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_PANDAEGG
 #ifdef BUILDING_PANDAEGG
-  #define EXPCL_PANDAEGG __declspec(dllexport)
-  #define EXPTP_PANDAEGG
+  #define EXPCL_PANDAEGG EXPORT_CLASS
+  #define EXPTP_PANDAEGG EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_PANDAEGG __declspec(dllimport)
-  #define EXPTP_PANDAEGG extern
+  #define EXPCL_PANDAEGG IMPORT_CLASS
+  #define EXPTP_PANDAEGG IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_PANDAEXPRESS
 #ifdef BUILDING_PANDAEXPRESS
-  #define EXPCL_PANDAEXPRESS __declspec(dllexport)
-  #define EXPTP_PANDAEXPRESS
+  #define EXPCL_PANDAEXPRESS EXPORT_CLASS
+  #define EXPTP_PANDAEXPRESS EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_PANDAEXPRESS __declspec(dllimport)
-  #define EXPTP_PANDAEXPRESS extern
+  #define EXPCL_PANDAEXPRESS IMPORT_CLASS
+  #define EXPTP_PANDAEXPRESS IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_PANDAFX
 #ifdef BUILDING_PANDAFX
-  #define EXPCL_PANDAFX __declspec(dllexport)
-  #define EXPTP_PANDAFX
+  #define EXPCL_PANDAFX EXPORT_CLASS
+  #define EXPTP_PANDAFX EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_PANDAFX __declspec(dllimport)
-  #define EXPTP_PANDAFX extern
+  #define EXPCL_PANDAFX IMPORT_CLASS
+  #define EXPTP_PANDAFX IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_PANDAGL
 #ifdef BUILDING_PANDAGL
-  #define EXPCL_PANDAGL __declspec(dllexport)
-  #define EXPTP_PANDAGL
+  #define EXPCL_PANDAGL EXPORT_CLASS
+  #define EXPTP_PANDAGL EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_PANDAGL __declspec(dllimport)
-  #define EXPTP_PANDAGL extern
+  #define EXPCL_PANDAGL IMPORT_CLASS
+  #define EXPTP_PANDAGL IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_PANDAGLES
 #ifdef BUILDING_PANDAGLES
-  #define EXPCL_PANDAGLES __declspec(dllexport)
-  #define EXPTP_PANDAGLES
+  #define EXPCL_PANDAGLES EXPORT_CLASS
+  #define EXPTP_PANDAGLES EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_PANDAGLES __declspec(dllimport)
-  #define EXPTP_PANDAGLES extern
+  #define EXPCL_PANDAGLES IMPORT_CLASS
+  #define EXPTP_PANDAGLES IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_PANDAGLES2
 #ifdef BUILDING_PANDAGLES2
-  #define EXPCL_PANDAGLES2 __declspec(dllexport)
-  #define EXPTP_PANDAGLES2
+  #define EXPCL_PANDAGLES2 EXPORT_CLASS
+  #define EXPTP_PANDAGLES2 EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_PANDAGLES2 __declspec(dllimport)
-  #define EXPTP_PANDAGLES2 extern
+  #define EXPCL_PANDAGLES2 IMPORT_CLASS
+  #define EXPTP_PANDAGLES2 IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_PANDAODE
 #ifdef BUILDING_PANDAODE
-  #define EXPCL_PANDAODE __declspec(dllexport)
-  #define EXPTP_PANDAODE
+  #define EXPCL_PANDAODE EXPORT_CLASS
+  #define EXPTP_PANDAODE EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_PANDAODE __declspec(dllimport)
-  #define EXPTP_PANDAODE extern
+  #define EXPCL_PANDAODE IMPORT_CLASS
+  #define EXPTP_PANDAODE IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_PANDAPHYSICS
 #ifdef BUILDING_PANDAPHYSICS
-  #define EXPCL_PANDAPHYSICS __declspec(dllexport)
-  #define EXPTP_PANDAPHYSICS
+  #define EXPCL_PANDAPHYSICS EXPORT_CLASS
+  #define EXPTP_PANDAPHYSICS EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_PANDAPHYSICS __declspec(dllimport)
-  #define EXPTP_PANDAPHYSICS extern
+  #define EXPCL_PANDAPHYSICS IMPORT_CLASS
+  #define EXPTP_PANDAPHYSICS IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_PANDAPHYSX
 #ifdef BUILDING_PANDAPHYSX
-  #define EXPCL_PANDAPHYSX __declspec(dllexport)
-  #define EXPTP_PANDAPHYSX
+  #define EXPCL_PANDAPHYSX EXPORT_CLASS
+  #define EXPTP_PANDAPHYSX EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_PANDAPHYSX __declspec(dllimport)
-  #define EXPTP_PANDAPHYSX extern
+  #define EXPCL_PANDAPHYSX IMPORT_CLASS
+  #define EXPTP_PANDAPHYSX IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_PANDASPEEDTREE
 #ifdef BUILDING_PANDASPEEDTREE
-  #define EXPCL_PANDASPEEDTREE __declspec(dllexport)
-  #define EXPTP_PANDASPEEDTREE
+  #define EXPCL_PANDASPEEDTREE EXPORT_CLASS
+  #define EXPTP_PANDASPEEDTREE EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_PANDASPEEDTREE __declspec(dllimport)
-  #define EXPTP_PANDASPEEDTREE extern
+  #define EXPCL_PANDASPEEDTREE IMPORT_CLASS
+  #define EXPTP_PANDASPEEDTREE IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_PANDASKEL
 #ifdef BUILDING_PANDASKEL
-  #define EXPCL_PANDASKEL __declspec(dllexport)
-  #define EXPTP_PANDASKEL
+  #define EXPCL_PANDASKEL EXPORT_CLASS
+  #define EXPTP_PANDASKEL EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_PANDASKEL __declspec(dllimport)
-  #define EXPTP_PANDASKEL extern
+  #define EXPCL_PANDASKEL IMPORT_CLASS
+  #define EXPTP_PANDASKEL IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_PANDAWIN
 #ifdef BUILDING_PANDAWIN
-  #define EXPCL_PANDAWIN __declspec(dllexport)
-  #define EXPTP_PANDAWIN
+  #define EXPCL_PANDAWIN EXPORT_CLASS
+  #define EXPTP_PANDAWIN EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_PANDAWIN __declspec(dllimport)
-  #define EXPTP_PANDAWIN extern
+  #define EXPCL_PANDAWIN IMPORT_CLASS
+  #define EXPTP_PANDAWIN IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_PANDAX11
 #ifdef BUILDING_PANDAX11
-  #define EXPCL_PANDAX11 __declspec(dllexport)
-  #define EXPTP_PANDAX11
+  #define EXPCL_PANDAX11 EXPORT_CLASS
+  #define EXPTP_PANDAX11 EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_PANDAX11 __declspec(dllimport)
-  #define EXPTP_PANDAX11 extern
+  #define EXPCL_PANDAX11 IMPORT_CLASS
+  #define EXPTP_PANDAX11 IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_ROCKET
 #ifdef BUILDING_ROCKET
-  #define EXPCL_ROCKET __declspec(dllexport)
-  #define EXPTP_ROCKET
+  #define EXPCL_ROCKET EXPORT_CLASS
+  #define EXPTP_ROCKET EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_ROCKET __declspec(dllimport)
-  #define EXPTP_ROCKET extern
+  #define EXPCL_ROCKET IMPORT_CLASS
+  #define EXPTP_ROCKET IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_SHADER
 #ifdef BUILDING_SHADER
-  #define EXPCL_SHADER __declspec(dllexport)
-  #define EXPTP_SHADER
+  #define EXPCL_SHADER EXPORT_CLASS
+  #define EXPTP_SHADER EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_SHADER __declspec(dllimport)
-  #define EXPTP_SHADER extern
+  #define EXPCL_SHADER IMPORT_CLASS
+  #define EXPTP_SHADER IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_TINYDISPLAY
 #ifdef BUILDING_TINYDISPLAY
-  #define EXPCL_TINYDISPLAY __declspec(dllexport)
-  #define EXPTP_TINYDISPLAY
+  #define EXPCL_TINYDISPLAY EXPORT_CLASS
+  #define EXPTP_TINYDISPLAY EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_TINYDISPLAY __declspec(dllimport)
-  #define EXPTP_TINYDISPLAY extern
+  #define EXPCL_TINYDISPLAY IMPORT_CLASS
+  #define EXPTP_TINYDISPLAY IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_VISION
 #ifdef BUILDING_VISION
-  #define EXPCL_VISION __declspec(dllexport)
-  #define EXPTP_VISION
+  #define EXPCL_VISION EXPORT_CLASS
+  #define EXPTP_VISION EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_VISION __declspec(dllimport)
-  #define EXPTP_VISION extern
+  #define EXPCL_VISION IMPORT_CLASS
+  #define EXPTP_VISION IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_VRPN
 #ifdef BUILDING_VRPN
-  #define EXPCL_VRPN __declspec(dllexport)
-  #define EXPTP_VRPN
+  #define EXPCL_VRPN EXPORT_CLASS
+  #define EXPTP_VRPN EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_VRPN __declspec(dllimport)
-  #define EXPTP_VRPN extern
+  #define EXPCL_VRPN IMPORT_CLASS
+  #define EXPTP_VRPN IMPORT_TEMPL
 #endif
 #endif
 
 
-#else   /* !WIN32_VC */
-
-#define EXPCL_CFTALK
-#define EXPTP_CFTALK
-
-#define EXPCL_COLLADA
-#define EXPTP_COLLADA
-
-#define EXPCL_FFMPEG
-#define EXPTP_FFMPEG
-
-#define EXPCL_FRAMEWORK
-#define EXPTP_FRAMEWORK
-
-#define EXPCL_LINUX_AUDIO
-#define EXPTP_LINUX_AUDIO
-
-#define EXPCL_MILES_AUDIO
-#define EXPTP_MILES_AUDIO
-
-#define EXPCL_FMOD_AUDIO
-#define EXPTP_FMOD_AUDIO
-
-#define EXPCL_OCULUSVR
-#define EXPTP_OCULUSVR
-
-#define EXPCL_OPENAL_AUDIO
-#define EXPTP_OPENAL_AUDIO
-
-#define EXPCL_PANDA
-#define EXPTP_PANDA
-
-#define EXPCL_PANDAAWESOMIUM
-#define EXPTP_PANDAAWESOMIUM
-
-#define EXPCL_PANDABULLET
-#define EXPTP_PANDABULLET
-
-#define EXPCL_PANDACR
-#define EXPTP_PANDACR
-
-#define EXPCL_PANDADX
-#define EXPTP_PANDADX
-
-#define EXPCL_PANDAEGG
-#define EXPTP_PANDAEGG
-
-#define EXPCL_PANDAEXPRESS
-#define EXPTP_PANDAEXPRESS
-
-#define EXPCL_PANDAFX
-#define EXPTP_PANDAFX
-
-#define EXPCL_PANDAGL
-#define EXPTP_PANDAGL
-
-#define EXPCL_PANDAGLES
-#define EXPTP_PANDAGLES
-
-#define EXPCL_PANDAGLES2
-#define EXPTP_PANDAGLES2
-
-#define EXPCL_PANDAODE
-#define EXPTP_PANDAODE
-
-#define EXPCL_PANDAPHYSICS
-#define EXPTP_PANDAPHYSICS
-
-#define EXPCL_PANDAPHYSX
-#define EXPTP_PANDAPHYSX
-
-#define EXPCL_PANDASPEEDTREE
-#define EXPTP_PANDASPEEDTREE
-
-#define EXPCL_PANDARIB
-#define EXPTP_PANDARIB
-
-#define EXPCL_PANDASKEL
-#define EXPTP_PANDASKEL
-
-#define EXPCL_PANDAWIN
-#define EXPTP_PANDAWIN
-
-#define EXPCL_PANDAX11
-#define EXPTP_PANDAX11
-
-#define EXPCL_ROCKET
-#define EXPTP_ROCKET
-
-#define EXPCL_SHADER
-#define EXPTP_SHADER
-
-#define EXPCL_TINYDISPLAY
-#define EXPTP_TINYDISPLAY
-
-#define EXPCL_VISION
-#define EXPTP_VISION
-
-#define EXPCL_VRPN
-#define EXPTP_VRPN
-
-#endif  /* WIN32_VC */
-
 #if (defined(WIN32_VC) || defined(WIN64_VC)) && !defined(CPPPARSER)
 #if (defined(WIN32_VC) || defined(WIN64_VC)) && !defined(CPPPARSER)
 #define INLINE_LINMATH __forceinline
 #define INLINE_LINMATH __forceinline
 #define INLINE_MATHUTIL __forceinline
 #define INLINE_MATHUTIL __forceinline

+ 8 - 20
pandatool/src/pandatoolbase/pandatoolsymbols.h

@@ -17,32 +17,20 @@
 
 
 /* See dtoolsymbols.h for a rant on the purpose of this file.  */
 /* See dtoolsymbols.h for a rant on the purpose of this file.  */
 
 
-#if defined(WIN32_VC) && !defined(CPPPARSER) && !defined(LINK_ALL_STATIC)
-
 #ifdef BUILDING_ASSIMP
 #ifdef BUILDING_ASSIMP
-  #define EXPCL_ASSIMP __declspec(dllexport)
-  #define EXPTP_ASSIMP
+  #define EXPCL_ASSIMP EXPORT_CLASS
+  #define EXPTP_ASSIMP EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_ASSIMP __declspec(dllimport)
-  #define EXPTP_ASSIMP extern
+  #define EXPCL_ASSIMP IMPORT_CLASS
+  #define EXPTP_ASSIMP IMPORT_TEMPL
 #endif
 #endif
 
 
 #ifdef BUILDING_PTLOADER
 #ifdef BUILDING_PTLOADER
-  #define EXPCL_PTLOADER __declspec(dllexport)
-  #define EXPTP_PTLOADER
+  #define EXPCL_PTLOADER EXPORT_CLASS
+  #define EXPTP_PTLOADER EXPORT_TEMPL
 #else
 #else
-  #define EXPCL_PTLOADER __declspec(dllimport)
-  #define EXPTP_PTLOADER extern
+  #define EXPCL_PTLOADER IMPORT_CLASS
+  #define EXPTP_PTLOADER IMPORT_TEMPL
 #endif
 #endif
 
 
-#else   /* !WIN32_VC */
-
-#define EXPCL_ASSIMP
-#define EXPTP_ASSIMP
-
-#define EXPCL_PTLOADER
-#define EXPTP_PTLOADER
-
-#endif  /* WIN32_VC */
-
 #endif
 #endif