Reapply some Win32 specific magic to properly build a Windows DLL of libjpeg. (Samuel...
authorDaniel Reimer <reimer.daniel@freenet.de>
Wed, 14 Jul 2010 14:53:35 +0000 (14:53 +0000)
committerDaniel Reimer <reimer.daniel@freenet.de>
Wed, 14 Jul 2010 14:53:35 +0000 (14:53 +0000)
svn path=/trunk/; revision=48038

reactos/include/reactos/libs/libjpeg/jmorecfg.h
reactos/include/reactos/libs/libjpeg/rosdiff.patch [new file with mode: 0644]

index a9478f4..ce741f8 100644 (file)
@@ -191,14 +191,63 @@ typedef unsigned int JDIMENSION;
  * or code profilers that require it.
  */
 
+#ifdef _WIN32
+#  if defined(ALL_STATIC)
+#    if defined(JPEG_DLL)
+#      undef JPEG_DLL
+#    endif
+#    if !defined(JPEG_STATIC)
+#      define JPEG_STATIC
+#    endif
+#  endif
+#  if defined(JPEG_DLL)
+#    if defined(JPEG_STATIC)
+#      undef JPEG_STATIC
+#    endif
+#  endif
+#  if defined(JPEG_DLL)
+/* building a DLL */
+#    define JPEG_IMPEXP __declspec(dllexport)
+#  elif defined(JPEG_STATIC)
+/* building or linking to a static library */
+#    define JPEG_IMPEXP
+#  else
+/* linking to the DLL */
+#    define JPEG_IMPEXP __declspec(dllimport)
+#  endif
+#  if !defined(JPEG_API)
+#    define JPEG_API __cdecl
+#  endif
+/* The only remaining magic that is necessary for cygwin */
+#elif defined(__CYGWIN__)
+#  if !defined(JPEG_IMPEXP)
+#    define JPEG_IMPEXP
+#  endif
+#  if !defined(JPEG_API)
+#    define JPEG_API __cdecl
+#  endif
+#endif
+
+/* Ensure our magic doesn't hurt other platforms */
+#if !defined(JPEG_IMPEXP)
+#  define JPEG_IMPEXP
+#endif
+#if !defined(JPEG_API)
+#  define JPEG_API
+#endif
+
 /* a function called through method pointers: */
 #define METHODDEF(type)                static type
 /* a function used only in its module: */
 #define LOCAL(type)            static type
 /* a function referenced thru EXTERNs: */
-#define GLOBAL(type)           type
+#define GLOBAL(type)           type JPEG_API
 /* a reference to a GLOBAL function: */
-#define EXTERN(type)           extern type
+#ifndef EXTERN
+# define EXTERN(type)          extern JPEG_IMPEXP type JPEG_API
+/* a reference to a "GLOBAL" function exported by sourcefiles of utility progs */
+#endif /* EXTERN */
+#define EXTERN_1(type)   extern type JPEG_API
 
 
 /* This macro is used to declare a "method", that is, a function pointer.
diff --git a/reactos/include/reactos/libs/libjpeg/rosdiff.patch b/reactos/include/reactos/libs/libjpeg/rosdiff.patch
new file mode 100644 (file)
index 0000000..5ef5bc4
--- /dev/null
@@ -0,0 +1,70 @@
+Index: libs/libjpeg/jmorecfg.h
+===================================================================
+--- libs/libjpeg/jmorecfg.h    (revision 48026)
++++ libs/libjpeg/jmorecfg.h    (working copy)
+@@ -191,14 +191,63 @@
+  * or code profilers that require it.
+  */
++#ifdef _WIN32
++#  if defined(ALL_STATIC)
++#    if defined(JPEG_DLL)
++#      undef JPEG_DLL
++#    endif
++#    if !defined(JPEG_STATIC)
++#      define JPEG_STATIC
++#    endif
++#  endif
++#  if defined(JPEG_DLL)
++#    if defined(JPEG_STATIC)
++#      undef JPEG_STATIC
++#    endif
++#  endif
++#  if defined(JPEG_DLL)
++/* building a DLL */
++#    define JPEG_IMPEXP __declspec(dllexport)
++#  elif defined(JPEG_STATIC)
++/* building or linking to a static library */
++#    define JPEG_IMPEXP
++#  else
++/* linking to the DLL */
++#    define JPEG_IMPEXP __declspec(dllimport)
++#  endif
++#  if !defined(JPEG_API)
++#    define JPEG_API __cdecl
++#  endif
++/* The only remaining magic that is necessary for cygwin */
++#elif defined(__CYGWIN__)
++#  if !defined(JPEG_IMPEXP)
++#    define JPEG_IMPEXP
++#  endif
++#  if !defined(JPEG_API)
++#    define JPEG_API __cdecl
++#  endif
++#endif
++
++/* Ensure our magic doesn't hurt other platforms */
++#if !defined(JPEG_IMPEXP)
++#  define JPEG_IMPEXP
++#endif
++#if !defined(JPEG_API)
++#  define JPEG_API
++#endif
++
+ /* a function called through method pointers: */
+ #define METHODDEF(type)               static type
+ /* a function used only in its module: */
+ #define LOCAL(type)           static type
+ /* a function referenced thru EXTERNs: */
+-#define GLOBAL(type)          type
++#define GLOBAL(type)          type JPEG_API
+ /* a reference to a GLOBAL function: */
+-#define EXTERN(type)          extern type
++#ifndef EXTERN
++# define EXTERN(type)          extern JPEG_IMPEXP type JPEG_API
++/* a reference to a "GLOBAL" function exported by sourcefiles of utility progs */
++#endif /* EXTERN */
++#define EXTERN_1(type)   extern type JPEG_API
+ /* This macro is used to declare a "method", that is, a function pointer.