mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-06-21 21:43:10 +03:00
fix finding raqm deps
This commit is contained in:
parent
3386a9ce02
commit
be0d0a3a48
38
setup.py
38
setup.py
|
@ -123,7 +123,7 @@ _LIB_IMAGING = (
|
||||||
"codec_fd",
|
"codec_fd",
|
||||||
)
|
)
|
||||||
|
|
||||||
DEBUG = False
|
DEBUG = True
|
||||||
|
|
||||||
|
|
||||||
class DependencyException(Exception):
|
class DependencyException(Exception):
|
||||||
|
@ -228,6 +228,19 @@ def _find_library_file(self, library):
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
def _find_include_dir(self, dirname, include):
|
||||||
|
for directory in self.compiler.include_dirs:
|
||||||
|
_dbg("Checking for include file %s in %s", (include, directory))
|
||||||
|
if os.path.isfile(os.path.join(directory, include)):
|
||||||
|
_dbg("Found %s in %s", (include, directory))
|
||||||
|
return True
|
||||||
|
subdir = os.path.join(directory, dirname)
|
||||||
|
_dbg("Checking for include file %s in %s", (include, subdir))
|
||||||
|
if os.path.isfile(os.path.join(subdir, include)):
|
||||||
|
_dbg("Found %s in %s", (include, subdir))
|
||||||
|
return subdir
|
||||||
|
|
||||||
|
|
||||||
def _cmd_exists(cmd):
|
def _cmd_exists(cmd):
|
||||||
return any(
|
return any(
|
||||||
os.access(os.path.join(path, cmd), os.X_OK)
|
os.access(os.path.join(path, cmd), os.X_OK)
|
||||||
|
@ -689,25 +702,36 @@ class pil_build_ext(build_ext):
|
||||||
if subdir:
|
if subdir:
|
||||||
_add_directory(self.compiler.include_dirs, subdir, 0)
|
_add_directory(self.compiler.include_dirs, subdir, 0)
|
||||||
|
|
||||||
if feature.want("raqm"):
|
if feature.freetype and feature.want("raqm"):
|
||||||
if feature.want_system("raqm"): # want system Raqm
|
if feature.want_system("raqm"): # want system Raqm
|
||||||
_dbg("Looking for Raqm")
|
_dbg("Looking for Raqm")
|
||||||
if _find_include_file(self, "raqm.h"):
|
if _find_include_file(self, "raqm.h"):
|
||||||
if _find_library_file(self, "raqm"):
|
if _find_library_file(self, "raqm"):
|
||||||
feature.harfbuzz = "raqm"
|
feature.raqm = "raqm"
|
||||||
elif _find_library_file(self, "libraqm"):
|
elif _find_library_file(self, "libraqm"):
|
||||||
feature.harfbuzz = "libraqm"
|
feature.raqm = "libraqm"
|
||||||
else: # want to build Raqm
|
else: # want to build Raqm
|
||||||
_dbg("Looking for HarfBuzz")
|
_dbg("Looking for HarfBuzz")
|
||||||
if _find_include_file(self, "hb.h"):
|
feature.harfbuzz = None
|
||||||
|
hb_dir = _find_include_dir(self, "harfbuzz", "hb.h")
|
||||||
|
if hb_dir:
|
||||||
|
if isinstance(hb_dir, str):
|
||||||
|
_add_directory(self.compiler.include_dirs, hb_dir, 0)
|
||||||
if _find_library_file(self, "harfbuzz"):
|
if _find_library_file(self, "harfbuzz"):
|
||||||
feature.harfbuzz = "harfbuzz"
|
feature.harfbuzz = "harfbuzz"
|
||||||
if feature.harfbuzz:
|
if feature.harfbuzz:
|
||||||
if feature.want_system("fribidi"): # want system FriBiDi
|
if feature.want_system("fribidi"): # want system FriBiDi
|
||||||
_dbg("Looking for FriBiDi")
|
_dbg("Looking for FriBiDi")
|
||||||
if _find_include_file(self, "fribidi.h"):
|
feature.fribidi = None
|
||||||
|
fribidi_dir = _find_include_dir(self, "fribidi", "fribidi.h")
|
||||||
|
if fribidi_dir:
|
||||||
|
if isinstance(fribidi_dir, str):
|
||||||
|
_add_directory(
|
||||||
|
self.compiler.include_dirs, fribidi_dir, 0
|
||||||
|
)
|
||||||
if _find_library_file(self, "fribidi"):
|
if _find_library_file(self, "fribidi"):
|
||||||
feature.harfbuzz = "fribidi"
|
feature.fribidi = "fribidi"
|
||||||
|
feature.raqm = True
|
||||||
else: # want to build FriBiDi shim
|
else: # want to build FriBiDi shim
|
||||||
feature.raqm = True
|
feature.raqm = True
|
||||||
|
|
||||||
|
|
|
@ -221,6 +221,8 @@ font_getchar(PyObject *string, int index, FT_ULong *char_out) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_RAQM
|
||||||
|
|
||||||
static size_t
|
static size_t
|
||||||
text_layout_raqm(
|
text_layout_raqm(
|
||||||
PyObject *string,
|
PyObject *string,
|
||||||
|
@ -386,6 +388,8 @@ failed:
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
static size_t
|
static size_t
|
||||||
text_layout_fallback(
|
text_layout_fallback(
|
||||||
PyObject *string,
|
PyObject *string,
|
||||||
|
@ -481,11 +485,13 @@ text_layout(
|
||||||
int mask,
|
int mask,
|
||||||
int color) {
|
int color) {
|
||||||
size_t count;
|
size_t count;
|
||||||
|
#ifdef HAVE_RAQM
|
||||||
if (have_raqm && self->layout_engine == LAYOUT_RAQM) {
|
if (have_raqm && self->layout_engine == LAYOUT_RAQM) {
|
||||||
count = text_layout_raqm(
|
count = text_layout_raqm(
|
||||||
string, self, dir, features, lang, glyph_info, mask, color);
|
string, self, dir, features, lang, glyph_info, mask, color);
|
||||||
} else {
|
} else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
count = text_layout_fallback(
|
count = text_layout_fallback(
|
||||||
string, self, dir, features, lang, glyph_info, mask, color);
|
string, self, dir, features, lang, glyph_info, mask, color);
|
||||||
}
|
}
|
||||||
|
@ -1366,7 +1372,7 @@ setup_module(PyObject *m) {
|
||||||
PyDict_SetItemString(d, "freetype2_version", v);
|
PyDict_SetItemString(d, "freetype2_version", v);
|
||||||
|
|
||||||
#ifdef HAVE_RAQM
|
#ifdef HAVE_RAQM
|
||||||
#ifdef HAVE_FRIBIDI_SYSTEM
|
#if defined(HAVE_RAQM_SYSTEM) || defined(HAVE_FRIBIDI_SYSTEM)
|
||||||
have_raqm = 1;
|
have_raqm = 1;
|
||||||
#else
|
#else
|
||||||
load_fribidi();
|
load_fribidi();
|
||||||
|
|
2
src/thirdparty/fribidi-shim/fribidi.c
vendored
2
src/thirdparty/fribidi-shim/fribidi.c
vendored
|
@ -25,7 +25,7 @@ int load_fribidi(void) {
|
||||||
p_fribidi = LoadLibrary("fribidi");
|
p_fribidi = LoadLibrary("fribidi");
|
||||||
/* MSYS2 */
|
/* MSYS2 */
|
||||||
if (!p_fribidi) {
|
if (!p_fribidi) {
|
||||||
p_fribidi = LoadLibrary("libfribidi-1");
|
p_fribidi = LoadLibrary("libfribidi-0");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user