Merge to XFA: Upgrade openjpeg to revision 2997.
[pdfium.git] / core / src / fxcodec / fx_libopenjpeg / libopenjpeg20 / openjpeg.h
index b1e1c29..4a8e75c 100644 (file)
@@ -76,10 +76,36 @@ Most compilers implement their own version of this keyword ...
        #define OPJ_DEPRECATED(func) func
 #endif
 
-// PDFium doesn't need to export any of these methods.
-#define OPJ_API
-#define OPJ_LOCAL
-#define OPJ_CALLCONV
+#if defined(OPJ_STATIC) || !defined(_WIN32)
+/* http://gcc.gnu.org/wiki/Visibility */
+#      if __GNUC__ >= 4
+#              if defined(OPJ_STATIC) /* static library uses "hidden" */
+#                      define OPJ_API    __attribute__ ((visibility ("hidden")))
+#              else
+#                      define OPJ_API    __attribute__ ((visibility ("default")))
+#              endif
+#              define OPJ_LOCAL  __attribute__ ((visibility ("hidden")))
+#      else
+#              define OPJ_API
+#              define OPJ_LOCAL
+#      endif
+#      define OPJ_CALLCONV
+#else
+#      define OPJ_CALLCONV __stdcall
+/*
+The following ifdef block is the standard way of creating macros which make exporting 
+from a DLL simpler. All files within this DLL are compiled with the OPJ_EXPORTS
+symbol defined on the command line. this symbol should not be defined on any project
+that uses this DLL. This way any other project whose source files include this file see 
+OPJ_API functions as being imported from a DLL, wheras this DLL sees symbols
+defined with this macro as being exported.
+*/
+#      if defined(OPJ_EXPORTS) || defined(DLL_EXPORT)
+#              define OPJ_API __declspec(dllexport)
+#      else
+#              define OPJ_API __declspec(dllimport)
+#      endif /* OPJ_EXPORTS */
+#endif /* !OPJ_STATIC || !_WIN32 */
 
 typedef int OPJ_BOOL;
 #define OPJ_TRUE 1