diff options
author | Andrew Sun | 2018-11-11 08:59:46 -0500 |
---|---|---|
committer | Andrew Sun | 2018-11-11 08:59:46 -0500 |
commit | b4522c5669caee654479811e304a99b88fe7665e (patch) | |
tree | 3a5ed80fcf268f3ee6297b6cea0eedee3d743966 | |
parent | 38aa39896382db3fc6df86b6ba6662b9648807b5 (diff) | |
download | aur-b4522c5669caee654479811e304a99b88fe7665e.tar.gz |
mingw-w64-libthai: make relocatable
-rw-r--r-- | .SRCINFO | 5 | ||||
-rw-r--r-- | PKGBUILD | 17 | ||||
-rw-r--r-- | relocatable.patch | 91 |
3 files changed, 108 insertions, 5 deletions
@@ -1,19 +1,22 @@ pkgbase = mingw-w64-libthai pkgdesc = Thai language support routines (mingw-w64) pkgver = 0.1.28 - pkgrel = 1 + pkgrel = 2 url = https://linux.thai.net/projects/libthai arch = any license = LGPL makedepends = mingw-w64-configure makedepends = libdatrie + makedepends = autoconf-archive depends = mingw-w64-crt depends = mingw-w64-libdatrie options = !strip options = !buildflags options = staticlibs source = https://linux.thai.net/pub/thailinux/software/libthai/libthai-0.1.28.tar.xz + source = relocatable.patch sha256sums = ffe0a17b4b5aa11b153c15986800eca19f6c93a4025ffa5cf2cab2dcdf1ae911 + sha256sums = f258c748e37a11ce20d307a9a27cf68de9543d79b7e60ebd31c7cf4398b5f6d9 pkgname = mingw-w64-libthai @@ -2,19 +2,28 @@ pkgname=mingw-w64-libthai pkgver=0.1.28 -pkgrel=1 +pkgrel=2 pkgdesc="Thai language support routines (mingw-w64)" arch=('any') url="https://linux.thai.net/projects/libthai" license=('LGPL') -makedepends=('mingw-w64-configure' 'libdatrie') +makedepends=('mingw-w64-configure' 'libdatrie' 'autoconf-archive') depends=('mingw-w64-crt' 'mingw-w64-libdatrie') options=('!strip' '!buildflags' 'staticlibs') -source=("https://linux.thai.net/pub/thailinux/software/libthai/libthai-${pkgver}.tar.xz") -sha256sums=('ffe0a17b4b5aa11b153c15986800eca19f6c93a4025ffa5cf2cab2dcdf1ae911') +source=("https://linux.thai.net/pub/thailinux/software/libthai/libthai-${pkgver}.tar.xz" + 'relocatable.patch') +sha256sums=('ffe0a17b4b5aa11b153c15986800eca19f6c93a4025ffa5cf2cab2dcdf1ae911' + 'f258c748e37a11ce20d307a9a27cf68de9543d79b7e60ebd31c7cf4398b5f6d9') _architectures="i686-w64-mingw32 x86_64-w64-mingw32" +prepare() { + cd "${srcdir}/libthai-${pkgver}" + + patch -Np1 -i "${srcdir}"/relocatable.patch + autoreconf -fiv +} + build() { cd "${srcdir}/libthai-$pkgver/" for _arch in ${_architectures}; do diff --git a/relocatable.patch b/relocatable.patch new file mode 100644 index 000000000000..e65b42d519c0 --- /dev/null +++ b/relocatable.patch @@ -0,0 +1,91 @@ +diff --git a/src/thbrk/Makefile.am b/src/thbrk/Makefile.am +index b528c34..476fbf1 100644 +--- a/src/thbrk/Makefile.am ++++ b/src/thbrk/Makefile.am +@@ -19,5 +19,5 @@ libthbrk_la_SOURCES = \ + brk-maximal.h \ + $(NULL) + +-libthbrk_la_LIBADD = $(DATRIE_LIBS) ++libthbrk_la_LIBADD = -lshlwapi $(DATRIE_LIBS) + +diff --git a/src/thbrk/brk-common.c b/src/thbrk/brk-common.c +index fedb1bf..4f80bca 100644 +--- a/src/thbrk/brk-common.c ++++ b/src/thbrk/brk-common.c +@@ -35,6 +35,49 @@ + + #define DICT_NAME "thbrk" + ++#ifdef _WIN32 ++#define WIN32_LEAN_AND_MEAN ++#include <windows.h> ++#include <shlwapi.h> ++static HMODULE libthai_dll; ++ ++BOOL WINAPI ++DllMain (HINSTANCE hinstDLL, ++ DWORD fdwReason, ++ LPVOID lpvReserved) ++{ ++ switch (fdwReason) { ++ case DLL_PROCESS_ATTACH: ++ libthai_dll = (HMODULE) hinstDLL; ++ break; ++ } ++ ++ return TRUE; ++} ++ ++static BOOL _getWinDictPath(wchar_t *out, int size) { ++ /* returns TRUE on success, FALSE on error */ ++ ++ BOOL status; ++ if (GetModuleFileNameW (libthai_dll, out, MAX_PATH) == 0) ++ return FALSE; ++ PathRemoveFileSpecW (out); ++ /* Assume the DLL is in /bin */ ++ PathRemoveFileSpecW (out); ++ status = PathAppendW (out, L"share"); ++ if (status != TRUE) ++ return FALSE; ++ status = PathAppendW (out, L"libthai"); ++ if (status != TRUE) ++ return FALSE; ++ status = PathAppendW (out, L"thbrk.tri"); ++ if (status != TRUE) ++ return FALSE; ++ ++ return TRUE; ++} ++#endif ++ + static char * + full_path (const char *path, const char *name, const char *ext) + { +@@ -58,10 +101,25 @@ brk_load_default_dict () + free (path); + } + ++#ifdef _WIN32 ++ if (!dict_trie) { ++ wchar_t dict_path[MAX_PATH]; ++ FILE *trie_file; ++ ++ if (_getWinDictPath (dict_path, MAX_PATH) == TRUE) { ++ trie_file = _wfopen (dict_path, L"rb"); ++ if (trie_file != NULL) { ++ dict_trie = trie_fread (trie_file); ++ fclose (trie_file); ++ } ++ } ++ } ++#else + /* Then, fall back to default DICT_DIR macro */ + if (!dict_trie) { + dict_trie = trie_new_from_file (DICT_DIR "/" DICT_NAME ".tri"); + } ++#endif + + return dict_trie; + } |