Commit 11ae6959 authored by Marcus D. Hanwell's avatar Marcus D. Hanwell
Browse files

ENH: Restore GCC visibility support

This now uses the generate export header logic that is integrated into
CMake. Some minor changes were necessary in the Python and Java core
modules to correctly export all symbols on non-Windows platforms.

Change-Id: Ib0f0fa7aedecbd4ae6d54e32c52df70c9de658e6
parent 7104e7df
......@@ -297,7 +297,7 @@ VTK_AUTOINIT(${vtk-module})
generate_export_header(${vtk-module} EXPORT_FILE_NAME ${vtk-module}Module.h)
add_compiler_export_flags(my_abi_flags)
set_property(TARGET ${vtk-module} APPEND
PROPERTY COMPILE_FLAGS "${VTK_ABI_CXX_FLAGS}")
PROPERTY COMPILE_FLAGS "${my_abi_flags}")
# Add the module to the list of wrapped modules if necessary
vtk_add_wrapping(${vtk-module} "${ARGN}")
......
......@@ -22,37 +22,37 @@
#include "vtkStdString.h"
#include "vtkWrappingJavaCoreModule.h"
extern JNIEXPORT jlong vtkJavaGetId(JNIEnv *env,jobject obj);
extern VTKWRAPPINGJAVACORE_EXPORT jlong q(JNIEnv *env,jobject obj);
extern JNIEXPORT void *vtkJavaGetPointerFromObject(JNIEnv *env,jobject obj);
extern JNIEXPORT char *vtkJavaUTFToChar(JNIEnv *env, jstring in);
extern JNIEXPORT bool vtkJavaUTFToString(JNIEnv *env, jstring in, vtkStdString &out);
extern JNIEXPORT jstring vtkJavaMakeJavaString(JNIEnv *env, const char *in);
extern VTKWRAPPINGJAVACORE_EXPORT void *vtkJavaGetPointerFromObject(JNIEnv *env,jobject obj);
extern VTKWRAPPINGJAVACORE_EXPORT char *vtkJavaUTFToChar(JNIEnv *env, jstring in);
extern VTKWRAPPINGJAVACORE_EXPORT bool vtkJavaUTFToString(JNIEnv *env, jstring in, vtkStdString &out);
extern VTKWRAPPINGJAVACORE_EXPORT jstring vtkJavaMakeJavaString(JNIEnv *env, const char *in);
extern JNIEXPORT jarray vtkJavaMakeJArrayOfFloatFromFloat(JNIEnv *env,
extern VTKWRAPPINGJAVACORE_EXPORT jarray vtkJavaMakeJArrayOfFloatFromFloat(JNIEnv *env,
float *arr, int size);
extern JNIEXPORT jarray vtkJavaMakeJArrayOfDoubleFromFloat(JNIEnv *env,
extern VTKWRAPPINGJAVACORE_EXPORT jarray vtkJavaMakeJArrayOfDoubleFromFloat(JNIEnv *env,
float *arr, int size);
extern JNIEXPORT jarray vtkJavaMakeJArrayOfDoubleFromDouble(JNIEnv *env,
extern VTKWRAPPINGJAVACORE_EXPORT jarray vtkJavaMakeJArrayOfDoubleFromDouble(JNIEnv *env,
double *arr, int size);
extern JNIEXPORT jarray vtkJavaMakeJArrayOfShortFromShort(JNIEnv *env, short *arr, int size);
extern JNIEXPORT jarray vtkJavaMakeJArrayOfIntFromInt(JNIEnv *env, int *arr, int size);
extern JNIEXPORT jarray vtkJavaMakeJArrayOfIntFromIdType(JNIEnv *env, vtkIdType *arr, int size);
extern VTKWRAPPINGJAVACORE_EXPORT jarray vtkJavaMakeJArrayOfShortFromShort(JNIEnv *env, short *arr, int size);
extern VTKWRAPPINGJAVACORE_EXPORT jarray vtkJavaMakeJArrayOfIntFromInt(JNIEnv *env, int *arr, int size);
extern VTKWRAPPINGJAVACORE_EXPORT jarray vtkJavaMakeJArrayOfIntFromIdType(JNIEnv *env, vtkIdType *arr, int size);
#if defined(VTK_TYPE_USE_LONG_LONG)
extern JNIEXPORT jarray vtkJavaMakeJArrayOfIntFromLongLong(JNIEnv *env, long long *arr, int size);
extern VTKWRAPPINGJAVACORE_EXPORT jarray vtkJavaMakeJArrayOfIntFromLongLong(JNIEnv *env, long long *arr, int size);
#endif
#if defined(VTK_TYPE_USE___INT64)
extern JNIEXPORT jarray vtkJavaMakeJArrayOfIntFrom__Int64(JNIEnv *env, __int64 *arr, int size);
extern VTKWRAPPINGJAVACORE_EXPORT jarray vtkJavaMakeJArrayOfIntFrom__Int64(JNIEnv *env, __int64 *arr, int size);
#endif
extern JNIEXPORT jarray vtkJavaMakeJArrayOfIntFromSignedChar(JNIEnv *env, signed char *arr, int size);
extern JNIEXPORT jarray vtkJavaMakeJArrayOfLongFromLong(JNIEnv *env, long *arr, int size);
extern JNIEXPORT jarray vtkJavaMakeJArrayOfByteFromUnsignedChar(JNIEnv *env, unsigned char *arr, int size);
extern JNIEXPORT jarray vtkJavaMakeJArrayOfByteFromChar(JNIEnv *env, char *arr, int size);
extern JNIEXPORT jarray vtkJavaMakeJArrayOfCharFromChar(JNIEnv *env, char *arr, int size);
extern JNIEXPORT jarray vtkJavaMakeJArrayOfUnsignedCharFromUnsignedChar(JNIEnv *env, unsigned char *arr, int size);
extern JNIEXPORT jarray vtkJavaMakeJArrayOfUnsignedIntFromUnsignedInt(JNIEnv *env, unsigned int *arr, int size);
extern JNIEXPORT jarray vtkJavaMakeJArrayOfUnsignedShortFromUnsignedShort(JNIEnv *env,unsigned short *ptr,int size);
extern JNIEXPORT jarray vtkJavaMakeJArrayOfUnsignedLongFromUnsignedLong(JNIEnv *env, unsigned long *arr, int size);
extern VTKWRAPPINGJAVACORE_EXPORT jarray vtkJavaMakeJArrayOfIntFromSignedChar(JNIEnv *env, signed char *arr, int size);
extern VTKWRAPPINGJAVACORE_EXPORT jarray vtkJavaMakeJArrayOfLongFromLong(JNIEnv *env, long *arr, int size);
extern VTKWRAPPINGJAVACORE_EXPORT jarray vtkJavaMakeJArrayOfByteFromUnsignedChar(JNIEnv *env, unsigned char *arr, int size);
extern VTKWRAPPINGJAVACORE_EXPORT jarray vtkJavaMakeJArrayOfByteFromChar(JNIEnv *env, char *arr, int size);
extern VTKWRAPPINGJAVACORE_EXPORT jarray vtkJavaMakeJArrayOfCharFromChar(JNIEnv *env, char *arr, int size);
extern VTKWRAPPINGJAVACORE_EXPORT jarray vtkJavaMakeJArrayOfUnsignedCharFromUnsignedChar(JNIEnv *env, unsigned char *arr, int size);
extern VTKWRAPPINGJAVACORE_EXPORT jarray vtkJavaMakeJArrayOfUnsignedIntFromUnsignedInt(JNIEnv *env, unsigned int *arr, int size);
extern VTKWRAPPINGJAVACORE_EXPORT jarray vtkJavaMakeJArrayOfUnsignedShortFromUnsignedShort(JNIEnv *env,unsigned short *ptr,int size);
extern VTKWRAPPINGJAVACORE_EXPORT jarray vtkJavaMakeJArrayOfUnsignedLongFromUnsignedLong(JNIEnv *env, unsigned long *arr, int size);
// this is the void pointer parameter passed to the vtk callback routines on
// behalf of the Java interface for callbacks.
......@@ -63,8 +63,8 @@ struct vtkJavaVoidFuncArg
jmethodID mid;
} ;
extern JNIEXPORT void vtkJavaVoidFunc(void *);
extern JNIEXPORT void vtkJavaVoidFuncArgDelete(void *);
extern VTKWRAPPINGJAVACORE_EXPORT void vtkJavaVoidFunc(void *);
extern VTKWRAPPINGJAVACORE_EXPORT void vtkJavaVoidFuncArgDelete(void *);
class VTKWRAPPINGJAVACORE_EXPORT vtkJavaCommand : public vtkCommand
{
......
......@@ -33,11 +33,7 @@
//--------------------------------------------------------------------
// methods for adding this type to a module
#if defined(WIN32)
extern "C" { __declspec( dllexport ) void PyVTKAddFile_mutable(PyObject *, const char *); }
#else
extern "C" { void PyVTKAddFile_mutable(PyObject *, const char *); }
#endif
extern "C" { VTKWRAPPINGPYTHONCORE_EXPORT void PyVTKAddFile_mutable(PyObject *, const char *); }
//--------------------------------------------------------------------
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment