Introduced LZMA_API_STATIC macro, which the applications
authorLasse Collin <lasse.collin@tukaani.org>
Sat, 7 Feb 2009 09:11:50 +0000 (11:11 +0200)
committerLasse Collin <lasse.collin@tukaani.org>
Sat, 7 Feb 2009 09:11:50 +0000 (11:11 +0200)
need to #define when linking against static liblzma on
platforms like Windows. Most developers don't need to
care about LZMA_API_STATIC at all.

src/liblzma/api/lzma.h
src/liblzma/common/common.h

index c03a19d..7cab390 100644 (file)
 
 /*
  * Some systems require (or at least recommend) that the functions and
- * function pointers are declared specially in the headers.
+ * function pointers are declared specially in the headers. LZMA_API_IMPORT
+ * is for importing symbols and LZMA_API_CALL is to specify calling
+ * convention.
+ *
+ * By default it is assumed that the application will link dynamically
+ * against liblzma. #define LZMA_API_STATIC in your application if you
+ * want to link against static liblzma. If you don't care about portability
+ * to operating systems like Windows, or at least don't care about linking
+ * against static liblzma on them, don't worry about LZMA_API_STATIC. That
+ * is, most developers will never need to use LZMA_API_STATIC.
  */
-#ifdef _WIN32
-#      define LZMA_API_IMPORT __declspec(dllimport)
-#      define LZMA_API_CALL __cdecl
-#else
-#      define LZMA_API_IMPORT
-#      define LZMA_API_CALL
+#ifndef LZMA_API_IMPORT
+#      if !defined(LZMA_API_STATIC) && defined(_WIN32)
+#              define LZMA_API_IMPORT __declspec(dllimport)
+#      else
+#              define LZMA_API_IMPORT
+#      endif
+#endif
+
+#ifndef LZMA_API_CALL
+#      ifdef _WIN32
+#              define LZMA_API_CALL __cdecl
+#      else
+#              define LZMA_API_CALL
+#      endif
 #endif
 
 #ifndef LZMA_API
index cbb2eb9..5a5fe77 100644 (file)
@@ -24,7 +24,7 @@
 #include "../../common/mythread.h"
 #include "../../common/integer.h"
 
-#if defined(_WIN32)
+#if !defined(LZMA_API_STATIC) && defined(_WIN32)
 #      define LZMA_API_EXPORT __declspec(dllexport)
 // Don't use ifdef or defined() below.
 #elif HAVE_VISIBILITY