This file is part of MXE. See LICENSE.md for licensing information.

Contains ad hoc patches for cross building.

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: darealshinji <djcj@gmx.de>
Date: Mon, 23 Oct 2023 12:00:00 +0200
Subject: [PATCH 1/1] ad hoc patches

* enable static library builds
* enable pthreads
* fix compilation error in JPEGDecoder.cpp;
  see https://sourceforge.net/p/djvu/djvulibre-git/ci/208a8d6c212e994071dbc56ee5eea3f931eb5860/
  and comment in libjpeg source
  https://github.com/libjpeg-turbo/libjpeg-turbo/blob/ec32420f6b5dfa4e86883d42b209e8371e55aeb5/jmorecfg.h#L128C1-L134C1


diff --git a/libdjvu/Makefile.am b/libdjvu/Makefile.am
index 1111111..2222222 100644
--- a/libdjvu/Makefile.am
+++ b/libdjvu/Makefile.am
@@ -29,15 +29,10 @@ libdjvulibre_la_SOURCES = Arrays.cpp BSByteStream.cpp			\
 
 libdjvulibre_la_CPPFLAGS = -DDIR_DATADIR=\"$(datadir)\"
 libdjvulibre_la_CXXFLAGS = $(JPEG_CFLAGS) $(PTHREAD_CFLAGS)
+libdjvulibre_la_CXXFLAGS += -fvisibility=hidden
 libdjvulibre_la_LIBADD = $(JPEG_LIBS) $(PTHREAD_LIBS)
 libdjvulibre_la_LDFLAGS = -no-undefined -version-info $(version_info)
 
-if HAVE_OS_WIN32
-libdjvulibre_la_CPPFLAGS += -DDJVUAPI_EXPORT 
-libdjvulibre_la_CPPFLAGS += -DDDJVUAPI_EXPORT -DMINILISPAPI_EXPORT
-libdjvulibre_la_LDFLAGS += -Wl,--export-all-symbols
-endif
-
 if HAVE_OS_APPLE
 libdjvulibre_la_LDFLAGS += -framework CoreFoundation
 endif
diff --git a/libdjvu/DjVuGlobal.h b/libdjvu/DjVuGlobal.h
index 1111111..2222222 100644
--- a/libdjvu/DjVuGlobal.h
+++ b/libdjvu/DjVuGlobal.h
@@ -71,7 +71,9 @@
 #endif
 
 #ifndef DJVUAPI
-# ifdef _WIN32
+# ifdef __GNUC__
+#  define DJVUAPI __attribute__((visibility("default")))
+# elif defined(_WIN32)
 #  ifdef DJVUAPI_EXPORT
 #   define DJVUAPI __declspec(dllexport)
 #  else
diff --git a/libdjvu/ddjvuapi.h b/libdjvu/ddjvuapi.h
index 1111111..2222222 100644
--- a/libdjvu/ddjvuapi.h
+++ b/libdjvu/ddjvuapi.h
@@ -69,7 +69,9 @@ extern "C" {
 #include <stdio.h>
 
 #ifndef DDJVUAPI
-# ifdef _WIN32
+# ifdef __GNUC__
+#  define DDJVUAPI __attribute__((visibility("default")))
+# elif defined(_WIN32)
 #  ifdef DDJVUAPI_EXPORT
 #   define DDJVUAPI __declspec(dllexport)
 #  else
diff --git a/libdjvu/miniexp.h b/libdjvu/miniexp.h
index 1111111..2222222 100644
--- a/libdjvu/miniexp.h
+++ b/libdjvu/miniexp.h
@@ -27,7 +27,9 @@ extern "C" {
 #endif
 
 #ifndef MINILISPAPI
-# ifdef _WIN32
+# ifdef __GNUC__
+#  define MINILISPAPI __attribute__((visibility("default")))
+# elif defined(_WIN32)
 #  ifdef MINILISPAPI_EXPORT
 #   define MINILISPAPI __declspec(dllexport)
 #  else
diff --git a/libdjvu/JPEGDecoder.cpp b/libdjvu/JPEGDecoder.cpp
index 1111111..2222222 100644
--- a/libdjvu/JPEGDecoder.cpp
+++ b/libdjvu/JPEGDecoder.cpp
@@ -62,6 +62,10 @@
 
 #ifdef NEED_JPEG_DECODER
 
+#include "GSmartPointer.h"
+#include "ByteStream.h"
+#include "GPixmap.h"
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -81,8 +85,6 @@
 #endif
 
 #include "JPEGDecoder.h"
-#include "ByteStream.h"
-#include "GPixmap.h"
 #ifdef LIBJPEGNAME
 #include "DjVuDynamic.h"
 #include "GString.h"
diff --git a/configure.ac b/configure.ac
index 1111111..2222222 100755
--- a/configure.ac
+++ b/configure.ac
@@ -209,9 +209,9 @@ fi
 # Test auxilliary packages
 # ----------------------------------------
 
-# Search for PTHREADS (when not on windows)
+# Search for PTHREADS
 have_pthread=no
-AM_COND_IF([HAVE_OS_WIN32],,[AC_PATH_PTHREAD([have_pthread=yes])])
+AC_PATH_PTHREAD([have_pthread=yes])
 
 # Search JPEG library
 AC_PATH_JPEG([have_jpeg="yes"], [have_jpeg="no"])
diff --git a/libdjvu/miniexp.cpp b/libdjvu/miniexp.cpp
index 1111111..2222222 100644
--- a/libdjvu/miniexp.cpp
+++ b/libdjvu/miniexp.cpp
@@ -71,7 +71,7 @@ assertfail(const char *fn, int ln)
 /* -------------------------------------------------- */
 
 #ifndef WITHOUT_THREADS
-# ifdef _WIN32
+# if defined(_WIN32) && !defined(__MINGW32__)
 #  include <windows.h>
 #  define USE_WINTHREADS 1
 # elif defined(HAVE_PTHREAD)
