liblangtag/liblangtag-0.4.0-windows.patch |  291 ++++++++++++++++++++++++++++++
 liblangtag/makefile.mk                    |    1 
 2 files changed, 292 insertions(+)

New commits:
commit 93e83584c491cb53aec34dab2375bfc07337075c
Author: Tor Lillqvist <tlillqv...@suse.com>
Date:   Tue Nov 6 20:21:37 2012 +0200

    Start making liblangtag 0.4.0 build for Windows
    
    Harder than I expected. Still incomplete. Thanks to Fridrich for the
    atomic stuff.
    
    Change-Id: Iacf6d3708ee04c75b98da4ffe250194657fda7c8

diff --git a/liblangtag/liblangtag-0.4.0-windows.patch 
b/liblangtag/liblangtag-0.4.0-windows.patch
new file mode 100644
index 0000000..7e8ec41
--- /dev/null
+++ b/liblangtag/liblangtag-0.4.0-windows.patch
@@ -0,0 +1,291 @@
+--- misc/liblangtag-0.4.0/configure.ac
++++ misc/build/liblangtag-0.4.0/configure.ac
+@@ -291,8 +291,14 @@
+ dnl ======================================================================
+ dnl check another libraries
+ dnl ======================================================================
++case $host_os in
++  cygwin* | mingw*)
++    ;;
+-AX_PTHREAD([],
++  *)
++    AX_PTHREAD([],
+       [AC_MSG_ERROR([*** pthread library are required])])
++    ;;
++esac
+ 
+ GOBJECT_INTROSPECTION_CHECK([1.30.0])
+ if test "x$enable_introspection" != "xyes"; then
+--- misc/liblangtag-0.4.0/configure
++++ misc/build/liblangtag-0.4.0/configure
+@@ -13203,6 +13203,10 @@
+ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS 
conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ 
++case $host_os in
++  cygwin* | mingw*)
++    ;;
++  *)
+ ax_pthread_ok=no
+ 
+ # We used to check for pthread.h first, but this fails if pthread.h
+@@ -13584,6 +13584,8 @@
+         ax_pthread_ok=no
+         as_fn_error $? "*** pthread library are required" "$LINENO" 5
+ fi
++;;
++esac
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+--- misc/liblangtag-0.4.0/liblangtag/lt-macros.h
++++ misc/build/liblangtag-0.4.0/liblangtag/lt-macros.h
+@@ -14,7 +14,9 @@
+ #error "Only <liblangtag/langtag.h> can be included directly."
+ #endif
+ 
++#ifndef _WIN32
+ #include <sys/param.h>
++#endif
+ 
+ #ifndef __LT_MACROS_H__
+ #define __LT_MACROS_H__
+@@ -206,6 +206,14 @@
+ 
+ LT_BEGIN_DECLS
+ 
++#ifdef _MSC_VER
++#ifdef _M_AMD64
++typedef signed long long ssize_t;
++#else
++typedef signed int ssize_t;
++#endif
++#endif
++
+ typedef void *                lt_pointer_t;
+ typedef int           lt_bool_t;
+ typedef lt_pointer_t (* lt_copy_func_t)       (lt_pointer_t data);
+--- misc/liblangtag-0.4.0/liblangtag/lt-atomic.h
++++ misc/build/liblangtag-0.4.0/liblangtag/lt-atomic.h
+@@ -17,7 +17,11 @@
+ #include "config.h"
+ #endif
+ 
++#if !defined(LT_HAVE_ATOMIC_BUILTINS) && !defined(_WIN32)
+ #include <pthread.h>
++#elif defined(_WIN32)
++#include <windows.h>
++#endif
+ #include "lt-messages.h"
+ 
+ LT_BEGIN_DECLS
+@@ -26,14 +30,40 @@
+ LT_INLINE_FUNC int       lt_atomic_int_inc         (volatile int *v);
+ LT_INLINE_FUNC lt_bool_t lt_atomic_int_dec_and_test(volatile int *v);
+ 
+-#ifndef LT_HAVE_ATOMIC_BUILTINS
++#if !defined(LT_HAVE_ATOMIC_BUILTINS) && !defined(_WIN32)
+ static pthread_mutex_t __lt_atomic_lock = PTHREAD_MUTEX_INITIALIZER;
+ #endif
+ 
+ /*< private >*/
+ 
+ /*< public >*/
+-#ifdef LT_HAVE_ATOMIC_BUILTINS
++#ifdef _WIN32
++LT_INLINE_FUNC int
++lt_atomic_int_get(volatile int *v)
++{
++       lt_return_val_if_fail (v != NULL, 0);
++
++       return (int)InterlockedAdd((LONG*)v, 0);
++}
++
++LT_INLINE_FUNC int
++lt_atomic_int_inc(volatile int *v)
++{
++       lt_return_val_if_fail (v != NULL, 0);
++
++       return (int)InterlockedAdd((LONG*)v, 1);
++}
++
++lt_bool_t
++lt_atomic_int_dec_and_test(volatile int *v)
++{
++       lt_return_val_if_fail (v != NULL, FALSE);
++
++       return 1 == InterlockedAdd((LONG*)v, -1);
++}
++
++
++#elif defined(LT_HAVE_ATOMIC_BUILTINS)
+ LT_INLINE_FUNC int
+ lt_atomic_int_get(volatile int *v)
+ {
+--- misc/liblangtag-0.4.0/liblangtag/lt-messages.h
++++ misc/build/liblangtag-0.4.0/liblangtag/lt-messages.h
+@@ -298,10 +298,17 @@
+       _lt_return_after_eval_if_fail(__expr__,__eval__)
+ #define lt_return_val_after_eval_if_fail(__expr__,__val__,__eval__)   \
+       _lt_return_val_after_eval_if_fail(__expr__,__val__,__eval__)
++#ifdef __GNUC__
+ #define lt_warn_if_reached()                                          \
+       lt_message_printf(LT_MSG_WARNING, LT_MSG_FLAG_NONE, 0,          \
+                         "(%s:%d): %s: code should not be reached",    \
+                         __FILE__, __LINE__, __PRETTY_FUNCTION__)
++#else
++#define lt_warn_if_reached()                                          \
++      lt_message_printf(LT_MSG_WARNING, LT_MSG_FLAG_NONE, 0,          \
++                        "(%s:%d): code should not be reached",        \
++                        __FILE__, __LINE__)
++#endif
+ 
+ LT_END_DECLS
+ 
+--- misc/liblangtag-0.4.0/liblangtag/lt-error.c
++++ misc/build/liblangtag-0.4.0/liblangtag/lt-error.c
+@@ -14,7 +14,9 @@
+ #include "config.h"
+ #endif
+ 
++#ifndef _WIN32
+ #include <execinfo.h>
++#endif
+ #include <stdlib.h>
+ #include "lt-list.h"
+ #include "lt-mem.h"
+@@ -120,9 +120,13 @@
+       d->message = lt_strdup_vprintf(message, ap);
+       va_end(ap);
+ 
++#ifdef _WIN32
++      size = 0;
++#else
+       size = backtrace(traces, 1024);
+       if (size > 0)
+               d->traces = backtrace_symbols(traces, size);
++#endif
+       d->stack_size = size;
+ 
+       lt_mem_add_ref(&d->parent, d->message, free);
+--- misc/liblangtag-0.4.0/liblangtag/lt-ext-module.c
++++ misc/build/liblangtag-0.4.0/liblangtag/lt-ext-module.c
+@@ -15,11 +15,15 @@
+ #endif
+ 
+ #include <ctype.h>
++#ifdef ENABLE_MODULE
+ #include <dirent.h>
++#endif
+ #ifdef HAVE_DLFCN_H
+ #include <dlfcn.h>
+ #endif
++#ifndef _WIN32
+ #include <libgen.h>
++#endif
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+--- misc/liblangtag-0.4.0/liblangtag/lt-xml.c
++++ misc/build/liblangtag-0.4.0/liblangtag/lt-xml.c
+@@ -14,7 +14,11 @@
+ #include "config.h"
+ #endif
+ 
++#ifndef _WIN32
+ #include <pthread.h>
++#else
++#include <windows.h>
++#endif
+ #include <sys/stat.h>
+ #include <libxml/parser.h>
+ #include <libxml/xpath.h>
+@@ -40,7 +44,9 @@
+ };
+ 
+ static lt_xml_t *__xml = NULL;
++#ifndef _WIN32
+ static pthread_mutex_t __lt_xml_lock = PTHREAD_MUTEX_INITIALIZER;
++#endif
+ 
+ /*< private >*/
+ static lt_bool_t
+@@ -309,11 +315,18 @@
+ {
+       lt_error_t *err = NULL;
+ 
++#ifdef _WIN32
++       HANDLE __lt_xml_lock = CreateMutex(NULL, FALSE, NULL);
++#else
+       pthread_mutex_lock(&__lt_xml_lock);
++#endif
+ 
+       if (__xml) {
++#ifdef _WIN32
++              ReleaseMutex(__lt_xml_lock);
++#else
+               pthread_mutex_unlock(&__lt_xml_lock);
+-
++#endif
+               return lt_xml_ref(__xml);
+       }
+ 
+@@ -389,8 +402,11 @@
+               lt_xml_unref(__xml);
+       }
+ 
++#ifdef _WIN32
++      ReleaseMutex(__lt_xml_lock);
++#else
+       pthread_mutex_unlock(&__lt_xml_lock);
+-
++#endif
+       return __xml;
+ }
+ 
+--- misc/liblangtag-0.4.0/liblangtag/lt-messages.c
++++ misc/build/liblangtag-0.4.0/liblangtag/lt-messages.c
+@@ -17,7 +17,9 @@
+ #include "config.h"
+ #endif
+ 
++#ifndef _WIN32
+ #include <execinfo.h>
++#endif
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+@@ -98,6 +98,7 @@
+ static void
+ _lt_message_stacktrace(void)
+ {
++#ifndef _WIN32
+       void *traces[1024];
+       char **strings;
+       int size, i;
+@@ -119,6 +119,7 @@
+               }
+               free(strings);
+       }
++#endif
+ }
+ 
+ static void
+--- misc/liblangtag-0.4.0/liblangtag/lt-tag.c
++++ misc/build/liblangtag-0.4.0/liblangtag/lt-tag.c
+@@ -15,9 +15,15 @@
+ #endif
+ 
+ #include <ctype.h>
++#ifndef _WIN32
+ #include <langinfo.h>
++#endif
+ #include <locale.h>
++#ifdef _MSC_VER
++typedef int int32_t;
++#else
+ #include <stdint.h>
++#endif
+ #include <string.h>
+ #include <libxml/xpath.h>
+ #include "lt-database.h"
diff --git a/liblangtag/makefile.mk b/liblangtag/makefile.mk
index 5ecce8c..f4cfc51 100644
--- a/liblangtag/makefile.mk
+++ b/liblangtag/makefile.mk
@@ -35,6 +35,7 @@ 
TARFILE_NAME=liblangtag-$(LIBLANGTAG_MAJOR).$(LIBLANGTAG_MINOR).$(LIBLANGTAG_MIC
 TARFILE_MD5=54e578c91b1b68e69c72be22adcb2195
 
 PATCH_FILES=liblangtag-0.4.0-msvc-warning.patch
+PATCH_FILES+=liblangtag-0.4.0-windows.patch
 PATCH_FILES+=liblangtag-0.4.0-reg2xml-encoding-problem.patch
 .IF "$(OS)" == "MACOSX"
 PATCH_FILES=liblangtag-0.4.0-mac.patch
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to