From: Youngbok Shin Date: Wed, 15 Jun 2016 01:53:20 +0000 (+0900) Subject: Imported Upstream version 1.2.7 X-Git-Tag: upstream/1.3.0~3 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fupstream%2Fharfbuzz.git;a=commitdiff_plain;h=087e8c5d58be057cb77192932cd7fa8f7aacf1a5 Imported Upstream version 1.2.7 Change-Id: I3f18de6ca717f4dd265ba99ba7f886b327e52b66 --- diff --git a/Android.mk b/Android.mk index 0552507..654f0e0 100644 --- a/Android.mk +++ b/Android.mk @@ -75,9 +75,10 @@ HARFBUZZ_SRC_FILES = \ src/hb-ot-shape-complex-indic.cc \ src/hb-ot-shape-complex-indic-table.cc \ src/hb-ot-shape-complex-myanmar.cc \ - src/hb-ot-shape-complex-sea.cc \ src/hb-ot-shape-complex-thai.cc \ src/hb-ot-shape-complex-tibetan.cc \ + src/hb-ot-shape-complex-use.cc \ + src/hb-ot-shape-complex-use-table.cc \ src/hb-ot-shape-normalize.cc \ src/hb-ot-shape-fallback.cc \ $(NULL) @@ -100,6 +101,7 @@ LOCAL_SHARED_LIBRARIES := \ liblog LOCAL_C_INCLUDES += \ $(LOCAL_PATH)/src -LOCAL_CFLAGS += -DHB_NO_MT -DHAVE_OT -DHAVE_ICU -DHAVE_ICU_BUILTIN +LOCAL_CFLAGS += -DHB_NO_MT -DHAVE_OT -DHAVE_ICU -DHAVE_ICU_BUILTIN \ + -Wno-unused-parameter -Wno-missing-field-initializers LOCAL_MODULE:= libharfbuzz_ng include $(BUILD_SHARED_LIBRARY) diff --git a/BUILD.md b/BUILD.md new file mode 100644 index 0000000..86285c6 --- /dev/null +++ b/BUILD.md @@ -0,0 +1,33 @@ +On Linux, install the development packages for +[FreeType](http://www.freedesktop.org/wiki/Software/FreeType/), +Cairo, and GLib. For example, on Ubuntu / Debian, you would do: +* sudo apt-get install gcc g++ libfreetype6-dev libglib2.0-dev libcairo2-dev + +whereas on Fedora, RHEL, CentOS, and other Red Hat based systems you would do: +* sudo yum install gcc gcc-c++ freetype-devel glib2-devel cairo-devel + +on the Mac, using MacPorts: +* sudo port install freetype glib2 cairo + +or using Homebrew: +* brew install freetype glib cairo + +If you are using a tarball, you can now proceed to running configure and make +as with any other standard package. That should leave you with a shared +library in src/, and a few utility programs including hb-view and hb-shape +under util/. From the tarball, NMake Makefiles are also provided in win32/, +which supports building HarfBuzz using Visual Studio, with a README.txt that +gives instructions on building using NMake. +If you are bootstraping from git, you need a few more tools before you can +run autogen.sh for the first time. Namely, pkg-config and ragel. Again, +on Ubuntu / Debian: +* sudo apt-get install autoconf automake libtool pkg-config ragel gtk-doc-tools + +and on Fedora, RHEL, CentOS: +* sudo yum install autoconf automake libtool pkgconfig ragel gtk-doc + +on the Mac, using MacPorts: +* sudo port install autoconf automake libtool pkgconfig ragel gtk-doc + +or using Homebrew: +* brew port install autoconf automake libtool pkgconfig ragel gtk-doc diff --git a/ChangeLog b/ChangeLog index 2ef17b2..33749c7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,7224 @@ +commit 9879fc1db3cad684f412c2f3d6b49e0435697d0e +Author: Behdad Esfahbod +Date: Mon May 2 10:29:12 2016 +0200 + + [ot-font] Remove unused 'post' table include for now + + To make a release... + + src/hb-ot-font.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f8061ae7972462ad800c23be7cd7b3d7ab94b93b +Author: Behdad Esfahbod +Date: Mon May 2 10:28:24 2016 +0200 + + [tests] Fix test + + test/shaping/Makefile.am | + 2 +- + .../tests/{fallback-positioning.test => fallback-positioning.tests} + | 0 + 2 files changed, 1 insertion(+), 1 deletion(-) + +commit f00ab2a33ab34ba64f38cbbe65830c770a3e071e +Author: Behdad Esfahbod +Date: Mon May 2 10:24:00 2016 +0200 + + [hb-ot-font] Make 'glyf' table loading lazy + + Apparently some clients have reference-table callbacks that copy + the table. + As such, avoid loading 'glyf' table which is only needed if fallback + positioning + happens. + + src/hb-ot-font.cc | 45 + ++++++++++++++++++++- + test/shaping/Makefile.am | 1 + + .../7ef276fc886ea502a03b9b0e5c8b547d5dc2b61c.ttf | Bin 0 -> 784 bytes + test/shaping/tests/fallback-positioning.test | 2 + + 4 files changed, 46 insertions(+), 2 deletions(-) + +commit 587d46227a56940a7f5bb053cbeda6144394acf7 +Author: Behdad Esfahbod +Date: Sat Apr 30 19:20:56 2016 +0200 + + [ot-font] Start implementing 'post' table, for accessing glyph names + + src/Makefile.sources | 1 + + src/hb-open-type-private.hh | 12 ++++- + src/hb-ot-font.cc | 1 + + src/hb-ot-post-table.hh | 119 + ++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 132 insertions(+), 1 deletion(-) + +commit 9abaaac409b8e3a0a9182b67dc384133013f7878 +Merge: 2f560ee 264b7a7 +Author: Behdad Esfahbod +Date: Wed Apr 27 03:38:24 2016 -0700 + + Merge commit '264b7a728a41becfbf23ce258fc2a3af19d0cbbe' into HEAD + +commit 2f560ee44b7b08683e8e6955fe3b95187e8bda32 +Author: Behdad Esfahbod +Date: Wed Apr 27 03:11:41 2016 -0700 + + [tibetan] Reorder marks to better match Uniscribe + + Fixes https://github.com/behdad/harfbuzz/issues/237 + + Note that Uniscribe enforces a certain syllable order. We don't. + But with this change, I get all of the tibetan contractions pass + with Microsoft Himalaya font. + + src/hb-unicode-private.hh | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit f68390f196216718c22c434e1d8921118e646824 +Author: Behdad Esfahbod +Date: Wed Apr 27 02:44:35 2016 -0700 + + [test] Add text for Tibetan shorthand contractions + + From http://www.babelstone.co.uk/Tibetan/Contractions.html + + .../script-tibetan/misc/contractions.txt | 612 + +++++++++++++++++++++ + 1 file changed, 612 insertions(+) + +commit 264b7a728a41becfbf23ce258fc2a3af19d0cbbe +Merge: 7e2da03 adafdcd +Author: Khaled Hosny +Date: Wed Apr 27 03:48:23 2016 +0300 + + Merge pull request #247 from khaledhosny/update-opentype-language-tags + + Update opentype language tags + +commit adafdcddced076da4bfa3114a00e15a387aaf1f7 +Author: Arthur Reutenauer +Date: Sat Nov 7 23:37:21 2015 +0000 + + Mass-added “difficult” tags – to be curated. + + src/hb-ot-tag.cc | 69 + +++++++++++++++++++++++++++++--------------------------- + 1 file changed, 36 insertions(+), 33 deletions(-) + +commit 3d6a2c0d7d9f6c5b3097f78c1123f9e59dcc76e2 +Author: Arthur Reutenauer +Date: Sat Nov 7 22:59:13 2015 +0000 + + Initial import of missing OpenType 1.7 language tags. + + src/hb-ot-tag.cc | 67 + +++++++++++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 61 insertions(+), 6 deletions(-) + +commit 7e2da035f68e46ce8f4759b67b4ed3a1b211d793 +Author: Behdad Esfahbod +Date: Tue Apr 26 16:42:25 2016 -0700 + + Undo accidental change + + src/hb-ot-shape-complex-arabic.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b20305022a8235b19e6b640bc62651854e1336f1 +Author: Behdad Esfahbod +Date: Tue Apr 26 16:41:17 2016 -0700 + + Do NOT ignore Mongolian Free Variation Selectors during matching + + Fixes https://github.com/behdad/harfbuzz/issues/234 + + src/hb-ot-layout-gsubgpos-private.hh | 2 +- + src/hb-ot-layout-private.hh | 23 + +++++++++++++++++++-- + src/hb-ot-shape-complex-arabic.cc | 2 +- + .../a34a7b00f22ffb5fd7eef6933b81c7e71bc2cdfb.ttf | Bin 0 -> 3700 bytes + .../tests/mongolian-variation-selector.tests | 1 + + 5 files changed, 24 insertions(+), 4 deletions(-) + +commit 21ab5501f5f5267d20cf23256866dd9d82a667ef +Author: Behdad Esfahbod +Date: Tue Apr 26 16:02:04 2016 -0700 + + Move ZWJ/ZWNJ bits to top byte of unicode_props() + + To make room to remember Mongolian Free Variation Selectors. + Part of fixing https://github.com/behdad/harfbuzz/issues/234 + + src/hb-ot-layout-private.hh | 40 ++++++++++++++++++++++------------------ + 1 file changed, 22 insertions(+), 18 deletions(-) + +commit de508516cb06ddb064d75bd7be8e843a5ebcf70d +Author: Behdad Esfahbod +Date: Tue Apr 26 11:28:37 2016 -0700 + + [util] Print out --debug buffer to stderr + + util/main-font-text.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 29393884b9f045460fb65d6ad10a94461ba93430 +Author: Behdad Esfahbod +Date: Tue Apr 26 10:35:23 2016 -0700 + + Annotate blacklisted fonts with their sha1sum + + src/hb-ot-layout.cc | 18 ++++++++++++------ + 1 file changed, 12 insertions(+), 6 deletions(-) + +commit 14bb4a56971fd45063cd6c1288d911627088abb2 +Merge: 1c625df 5069062 +Author: Sascha Brawer +Date: Tue Apr 26 11:38:16 2016 +0200 + + Merge pull request #245 from KonstantinRitt/fixes/ce + + Unbreak build on Windows CE + +commit 5069062d0a9342bb716eebf3ddc1efad91924caa +Author: Konstantin Ritt +Date: Tue Apr 26 12:02:26 2016 +0400 + + Unbreak build on Windows CE + + 0475ef2f97e3035a2eea9a0f96031331e07e8e29 broke the build by using + vsnprintf(), which is not defined on Windows CE + + src/hb-private.hh | 1 + + 1 file changed, 1 insertion(+) + +commit 1c625dff2269c54ff429ca45be88893ff1fa6c34 +Author: Behdad Esfahbod +Date: Sat Apr 9 12:53:23 2016 -0700 + + Minor + + src/hb-ot-layout.cc | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 851b0db36d1b724fc1e0db506445119c78186285 +Author: Behdad Esfahbod +Date: Fri Apr 8 23:46:55 2016 -0700 + + Minor. We should never get to this branch, but fix it anyway. + + src/hb-ot-layout-common-private.hh | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 00ea66f35754a1e6e4d3b7b139d611a9a623a9d1 +Author: Behdad Esfahbod +Date: Fri Apr 8 13:51:01 2016 -0700 + + 1.2.6 + + NEWS | 10 ++++++++++ + configure.ac | 2 +- + 2 files changed, 11 insertions(+), 1 deletion(-) + +commit 4f3d59a1877dcb94d09da48e9694a6c1b05a86fe +Author: Behdad Esfahbod +Date: Fri Apr 8 13:41:20 2016 -0700 + + Blacklist another set of timesi.ttf and timesbi.ttf + + src/hb-ot-layout.cc | 2 ++ + 1 file changed, 2 insertions(+) + +commit ef476be80d773332e0c768a3465d99381d76edd9 +Merge: a0331b5 d3134a6 +Author: Behdad Esfahbod +Date: Fri Apr 8 13:16:33 2016 -0700 + + Merge pull request #239 from ebraminio/dwfix + + Improve DirectWrite backend + +commit d3134a66ad551ded726db9528d3c25459088f105 +Author: Ebrahim Byagowi +Date: Tue Apr 5 21:01:05 2016 +0000 + + Fix when no feature is given + + src/hb-directwrite.cc | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit a0331b55f7b45437980e1fc323251f4091bf2c4e +Author: Behdad Esfahbod +Date: Mon Apr 4 16:25:32 2016 -0700 + + 1.2.5 + + NEWS | 7 +++++++ + configure.ac | 2 +- + 2 files changed, 8 insertions(+), 1 deletion(-) + +commit 6e55199b5f097ac93bad38f32e9813e2da14c5a7 +Author: Behdad Esfahbod +Date: Mon Apr 4 16:24:27 2016 -0700 + + Add test for 6dd80faf0dcb3e8a8915c3a25da44e2a67cb0cd8 + + test/shaping/Makefile.am | 1 + + .../f22416c692720a7d46fadf4af99f4c9e094f00b9.ttf | Bin 0 -> + 16736 bytes + test/shaping/tests/mark-filtering-sets.tests | 5 +++++ + 3 files changed, 6 insertions(+) + +commit 59089622dbb8dda783b1639c932123f125c3592d +Author: Behdad Esfahbod +Date: Mon Apr 4 14:54:32 2016 -0700 + + [coretext] Clarify comment + + src/hb-coretext.cc | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +commit 6dd80faf0dcb3e8a8915c3a25da44e2a67cb0cd8 +Author: Behdad Esfahbod +Date: Mon Apr 4 14:34:25 2016 -0700 + + Fix FixedVersion::to_int() + + Ouch. Had broken it in 9a13ed453ef96822a47d6e6f58332b87f38d5c59 + + Fixes https://github.com/behdad/harfbuzz/issues/238 + Will add test soon. + + src/hb-open-type-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4a104021697439fd21390a1f4cdc9310348882fa +Author: Ebrahim Byagowi +Date: Sat Apr 2 13:47:59 2016 +0000 + + Hide justification behind HB_DIRECTWRITE_EXPERIMENTAL_JUSTIFICATION + + src/hb-directwrite.cc | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 63ee9ca5d81b53eb035972754ed95572821c393c +Author: Ebrahim Byagowi +Date: Fri Apr 1 15:47:07 2016 +0000 + + Use standard types instead Windows favourites ones + + src/hb-directwrite.cc | 100 + +++++++++++++++++++++++++------------------------- + 1 file changed, 50 insertions(+), 50 deletions(-) + +commit adf20ba0d18d1506e633dcd9b4827a6c93abcadd +Author: Ebrahim Byagowi +Date: Fri Apr 1 15:36:40 2016 +0000 + + Limit GetJustifiedGlyphs only to scripts with custom justification + character + + src/hb-directwrite.cc | 98 + +++++++++++++++++++++++++++++++-------------------- + 1 file changed, 60 insertions(+), 38 deletions(-) + +commit 32ae9d1b3ffbe7e26e654437a56a26a95fe9f5a6 +Author: Ebrahim Byagowi +Date: Fri Apr 1 06:39:57 2016 +0000 + + Add justification support + + src/hb-directwrite.cc | 321 + ++++++++++++++++++++++++++++++++------------------ + 1 file changed, 205 insertions(+), 116 deletions(-) + +commit 10c3d9e41520595c88dd2a8321590e03ce8fcf47 +Author: Ebrahim Byagowi +Date: Thu Mar 31 18:19:44 2016 +0000 + + Basic opentype features support + + src/hb-directwrite.cc | 62 + ++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 42 insertions(+), 20 deletions(-) + +commit d129897120d3ad414220d603557c15a60aa69fa6 +Author: Ebrahim Byagowi +Date: Thu Mar 31 13:45:37 2016 +0000 + + Refactor and remove dupe getglyphs call + + src/hb-directwrite.cc | 106 + ++++++++++++++++++++++++-------------------------- + 1 file changed, 51 insertions(+), 55 deletions(-) + +commit 5f1a8961008b93f72acc47336109af3a64e248d0 +Author: Ebrahim Byagowi +Date: Thu Mar 31 12:26:16 2016 +0000 + + Better glyph offset support + + src/hb-directwrite.cc | 44 ++++++++++++++++++++++++-------------------- + 1 file changed, 24 insertions(+), 20 deletions(-) + +commit d691ba3f405738c6857450752b8cc0911dfcdb01 +Author: Ebrahim Byagowi +Date: Wed Mar 30 20:21:40 2016 +0000 + + Don't fail when language is not set + + src/hb-directwrite.cc | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit 1c00a46c7a608ebc0b03c5abfcfe7f2b9881d0df +Author: Ebrahim Byagowi +Date: Wed Mar 30 20:15:09 2016 +0000 + + Make DirectWrite backend to work with different font sizes + + Actually copyedited same logic from Uniscribe to make it just work + + src/hb-directwrite.cc | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit 0251b0cc5c39272d2299d4b2ab802faaafe96837 +Author: Behdad Esfahbod +Date: Thu Mar 17 14:37:11 2016 -0700 + + 1.2.4 + + NEWS | 15 +++++++++++++++ + configure.ac | 2 +- + 2 files changed, 16 insertions(+), 1 deletion(-) + +commit 69f9fbc4200442a35484d3c790ae8f4979be5d60 +Author: Behdad Esfahbod +Date: Thu Mar 17 11:59:43 2016 -0700 + + Synthesize GDEF glyph class for any glyph that does not have one + in GDEF + + Previously we only synthesized GDEF glyph classes if the glyphClassDef + array in GDEF was null. This worked well enough, and is indeed what + OpenType requires: "If the font does not include a GlyphClassDef + table, + the client must define and maintain this information when using the + GSUB and GPOS tables." That sentence does not quite make sense since + one needs Unicode properties as well, but is close enough. + + However, looks like Arial Unicode as shipped on WinXP, does have GDEF + glyph class array, but defines no classes for Hebrew. This results + in Hebrew marks not getting their widths zeroed. So, with this + change, + we synthesize glyph class for any glyph that is not specified in the + GDEF glyph class table. Since, from our point of view, a glyph not + being listed in that table is a font bug, any unwanted consequence of + this change is a font bug :). + + Note that we still don't get the same rendering as Uniscribe, since + Uniscribe seems to do fallback positioning as well, even though the + font does have a GPOS table (which does NOT cover Hebrew!). We are + not going to try to match that though. + + Test string for Arial Unicode: + + U+05E9,U+05B8,U+05C1,U+05DC + + Before: [gid1166=3+991|gid1142=0+737|gid5798=0+1434] + After: [gid1166=3+991|gid1142=0+0|gid5798=0+1434] + Uniscribe: [gid1166=3+991|gid1142=0@348,0+0|gid5798=0+1434] + + Note that our new output matches what we were generating until July + 2014, because the Hebrew shaper used to zero mark advances based on + Unicode, NOT GDEF. That's 9e834e29e0b657f0555df1ab9cea79ff7abcf08d. + + Reported by Greg Douglas. + + src/hb-ot-layout-gsub-table.hh | 22 ++++++++++++++++++++-- + src/hb-ot-shape.cc | 29 ----------------------------- + 2 files changed, 20 insertions(+), 31 deletions(-) + +commit fef5dd9a72f326c160a7194f558749d24bac7283 +Merge: 01ea9ea 5f995db +Author: Behdad Esfahbod +Date: Sat Mar 12 19:15:15 2016 -0800 + + Merge pull request #232 from c0nk/wip-icu + + Add --with-icu=builtin option; fix compile error + +commit 01ea9eaac373d9f3de6e56c1ca26cdcd259ecc8e +Author: Behdad Esfahbod +Date: Fri Mar 11 18:50:02 2016 -0800 + + [build] Use tar-ustar instead of tar-pax + + The default tar-v7 is not good enough for us (99 char filename + limit), so I have had bumped to tar-pax. We got one complaint + that someone's tar couldn't handle tar-pax. Set to tar-ustar + which is ~13 years earlier than tar-pax and is good enough for us. + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3e10460a1dd41de32752e308771aa30d23565cc0 +Author: Behdad Esfahbod +Date: Fri Mar 11 18:45:19 2016 -0800 + + Minor comment + + src/hb-unicode-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d14fea4bdcc1423fe9a585af3abdefa9605d17e6 +Author: Behdad Esfahbod +Date: Tue Mar 8 12:16:41 2016 -0800 + + Remove default clause in minor switch statements + + Bending to clang warnings... + https://bugs.chromium.org/p/chromium/issues/detail?id=593057 + + src/hb-ot-shape-complex-indic.cc | 4 ---- + src/hb-ot-shape-complex-thai.cc | 1 - + 2 files changed, 5 deletions(-) + +commit ce8ae9970102f83b67bb1e8e8b2bf894a0e26c07 +Merge: 731a430 71248a8 +Author: Behdad Esfahbod +Date: Fri Mar 4 17:20:35 2016 -0800 + + Merge pull request #231 from KonstantinRitt/post123buildfix + + Fix build with HB_DISABLE_DEPRECATED + +commit 731a430cd36caabcef04e099b21ebc6daedd536f +Author: Behdad Esfahbod +Date: Wed Mar 2 13:32:42 2016 -0800 + + Fix requiredFeature stage handling logic + + Originally the way Jonathan had written this was correct in + "continue"ing: + + https://github.com/jfkthame/harfbuzz/commit/35e28c7a733eaffcd9f062b18d7db9fbb3d990fc#diff-ead86a33a5cc9ad7f6e6381031a0baddR199 + + When I rewrote his patch, I messed it up: + + https://github.com/behdad/harfbuzz/commit/da132937989acb4d8ca9bd41c79f98750e7dda30#diff-ead86a33a5cc9ad7f6e6381031a0baddR209 + + the intended behavior was NOT to set found=TRUE and NOT to continue. + This was resulting in feature_index[table_index] being left unset. + Oops! + + src/hb-ot-map.cc | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +commit 68b6296d3333fd38bd5442d2ba087ced481603bc +Author: Behdad Esfahbod +Date: Tue Mar 1 16:41:53 2016 +0900 + + Add F2DOT14 type + + src/hb-open-type-private.hh | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit 082b79fe9f06607998178dcdcbe817af28b017de +Author: Behdad Esfahbod +Date: Tue Mar 1 16:41:26 2016 +0900 + + Use FWORD and UFWORD when it makes sense + + I had forgotten about those types. + + src/hb-ot-glyf-table.hh | 8 ++++---- + src/hb-ot-hmtx-table.hh | 6 +++--- + 2 files changed, 7 insertions(+), 7 deletions(-) + +commit 5f995db10381172ec63fd7ffbb0acf2c6b3dae5e +Author: Kal Conley +Date: Fri Feb 26 00:36:17 2016 +0100 + + Fix missing ICU #include + + Fix compile error in hb-icu.cc when ICU configured with + U_NO_DEFAULT_INCLUDE_UTF_HEADERS=1 + + src/hb-icu.cc | 1 + + 1 file changed, 1 insertion(+) + +commit b424b6c372dfe4c0ed75a49761eb34a416819446 +Author: Kal Conley +Date: Fri Feb 26 00:35:15 2016 +0100 + + Add --with-icu=builtin configure option + + configure.ac | 33 +++++++++++++++++++-------------- + src/Makefile.am | 7 +++++++ + 2 files changed, 26 insertions(+), 14 deletions(-) + +commit 71248a843f976c86022eb5bb8c6e8880b2499937 +Author: Konstantin Ritt +Date: Thu Feb 25 18:55:28 2016 +0400 + + Fix build with HB_DISABLE_DEPRECATED + + When HB_DISABLE_DEPRECATED is defined, no code from hb-deprecated.h + should be used, even from within HB itself. + + src/hb-font.cc | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 0c7fb7419c20d04b803412945565562c32b42929 +Author: Behdad Esfahbod +Date: Thu Feb 25 14:40:09 2016 +0900 + + Speed up buffer variable allocation sanity check + + This makes defining HB_NDEBUG much less relevant, to the + point of irrelevance. Sorry about all the fuss in previous + release! + + src/hb-buffer-private.hh | 67 + ++++++++++++++++++++++++++++----------------- + src/hb-buffer.cc | 70 + ------------------------------------------------ + 2 files changed, 43 insertions(+), 94 deletions(-) + +commit 91dd11565221bdb108c138662ea013aac14bb968 +Author: Behdad Esfahbod +Date: Thu Feb 25 13:56:47 2016 +0900 + + Add HB_NDEBUG + + API changes: + - If NDEBUG is defined, define HB_NDEBUG + - Disable costlier sanity checks if HB_NDEBUG is defined. + + In 1.2.3 introduced some code to disable costly sanity checks if + NDEBUG is defined. NDEBUG, however, disables all assert()s as + well. With HB_NDEBUG, one can disable costlier checks but keep + assert()s. + + I'll probably add a way to define HB_NDEBUG automatically in + release tarballs. But for now, production systems that do NOT + define NDEBUG, are encouraged to define HB_NDEBUG for our build. + + src/Makefile.am | 2 +- + src/hb-buffer-private.hh | 4 ++-- + src/hb-buffer.cc | 4 ++-- + src/hb-private.hh | 9 +++++++++ + 4 files changed, 14 insertions(+), 5 deletions(-) + +commit 75568b0a7f811ea18e23037735ec8541a7431f88 +Author: Behdad Esfahbod +Date: Thu Feb 25 12:26:26 2016 +0900 + + 1.2.3 + + NEWS | 42 ++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 43 insertions(+), 1 deletion(-) + +commit 988165021f8d48dc7120b071d056491256569f4f +Author: Behdad Esfahbod +Date: Thu Feb 25 12:23:02 2016 +0900 + + Disable internal buffer variable bookkeeping in NDEBUG builds + + Saves some sweet time and binary size! + + src/Makefile.am | 1 + + src/hb-buffer-private.hh | 30 ++++++++++++++++++++---------- + src/hb-buffer.cc | 6 ++++-- + 3 files changed, 25 insertions(+), 12 deletions(-) + +commit 94dd0bb7e78125994cb7c833a5b03110f1ffc822 +Author: Behdad Esfahbod +Date: Thu Feb 25 11:31:03 2016 +0900 + + Add blacklist signature for Times New Roman (Bold) Italic on OS X + + src/hb-ot-layout.cc | 2 ++ + 1 file changed, 2 insertions(+) + +commit dd8598c1c7f29fc92253b0cd4e856c1941b1d0c0 +Author: Behdad Esfahbod +Date: Thu Feb 25 11:20:05 2016 +0900 + + [test] Pass closure to hb_font_set_glyph_func() + + Exercises fix in c335fd7986fe360ab8e1c032c9b988d0d30511eb + + test/api/test-shape.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e23cf902e91142a10229e3514be4ceee69efde04 +Author: Behdad Esfahbod +Date: Thu Feb 25 11:11:15 2016 +0900 + + Blacklist GDEF table of timesi.ttf and timesbi.ttf on Win 7 + + See discussion: + https://lists.freedesktop.org/archives/harfbuzz/2016-February/005489.html + + src/hb-ot-layout.cc | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +commit c335fd7986fe360ab8e1c032c9b988d0d30511eb +Author: Behdad Esfahbod +Date: Thu Feb 25 09:16:05 2016 +0900 + + In trampoline implementation of get_glyph(), don't destroy user + data twice! + + src/hb-font.cc | 41 +++++++++++++++++++++++++++-------------- + 1 file changed, 27 insertions(+), 14 deletions(-) + +commit 23335deaad9d4d9824ff41343264514d3f9f7e37 +Author: Behdad Esfahbod +Date: Wed Feb 24 20:27:13 2016 +0900 + + [ot-font] Accelerate cmap format4 get_glyph + + src/hb-ot-cmap-table.hh | 111 + ++++++++++++++++++++++++++++-------------------- + src/hb-ot-font.cc | 14 +++++- + 2 files changed, 77 insertions(+), 48 deletions(-) + +commit e0f16a715bc3e621ff21a8be88102e9672630574 +Author: Behdad Esfahbod +Date: Wed Feb 24 19:52:36 2016 +0900 + + [ot-font] Towards accelerating get_glyph() + + src/hb-ot-font.cc | 23 ++++++++++++++++++++--- + 1 file changed, 20 insertions(+), 3 deletions(-) + +commit 5473ebfb84c7b6059ac16e04676b363acc51aa00 +Author: Behdad Esfahbod +Date: Wed Feb 24 19:32:43 2016 +0900 + + [ot-font] Remove level of indirection in get_glyph_variant + + src/hb-ot-cmap-table.hh | 14 ++------------ + src/hb-ot-font.cc | 13 +++++++++---- + 2 files changed, 11 insertions(+), 16 deletions(-) + +commit 49fe6ecf19522413e79a11a29aa0ffc5bdfcd2f8 +Author: Behdad Esfahbod +Date: Wed Feb 24 19:10:06 2016 +0900 + + [TODO] Update + + This file is rather obsolete. Still, give it a refresh. + + TODO | 16 ++-------------- + 1 file changed, 2 insertions(+), 14 deletions(-) + +commit 8b5bc141cd3a6bfcea3c91a882a630426876ceb3 +Author: Behdad Esfahbod +Date: Wed Feb 24 19:05:23 2016 +0900 + + Add get_nominal_glyph() and get_variation_glyph() instead of + get_glyph() + + New API: + - hb_font_get_nominal_glyph_func_t + - hb_font_get_variation_glyph_func_t + - hb_font_funcs_set_nominal_glyph_func() + - hb_font_funcs_set_variation_glyph_func() + - hb_font_get_nominal_glyph() + - hb_font_get_variation_glyph() + + Deprecated API: + - hb_font_get_glyph_func_t + - hb_font_funcs_set_glyph_func() + + Clients that implement their own font-funcs are encouraged to replace + their get_glyph() implementation with a get_nominal_glyph() and + get_variation_glyph() pair. The variation version can assume that + variation_selector argument is not zero. + + src/hb-deprecated.h | 10 ++ + src/hb-fallback-shape.cc | 4 +- + src/hb-font-private.hh | 26 +++-- + src/hb-font.cc | 203 + ++++++++++++++++++++++++++++++++++--- + src/hb-font.h | 55 +++++++--- + src/hb-ft.cc | 38 ++++--- + src/hb-ot-font.cc | 57 +++++++---- + src/hb-ot-shape-complex-indic.cc | 8 +- + src/hb-ot-shape-complex-myanmar.cc | 2 +- + src/hb-ot-shape-complex-use.cc | 2 +- + src/hb-ot-shape-fallback.cc | 6 +- + src/hb-ot-shape-normalize.cc | 18 ++-- + src/hb-ot-shape.cc | 6 +- + 13 files changed, 344 insertions(+), 91 deletions(-) + +commit b30a971bf792b9c683c345e1be25c5a5869a113c +Author: Behdad Esfahbod +Date: Wed Feb 24 17:32:22 2016 +0900 + + 1.2.2 + + NEWS | 14 +++++++++++++- + configure.ac | 2 +- + 2 files changed, 14 insertions(+), 2 deletions(-) + +commit af48e3d27c01c538f46f1dc376d994a0c24a8170 +Author: Behdad Esfahbod +Date: Wed Feb 24 16:06:40 2016 +0900 + + Fix recent test + + Not sure why the FT functions were returning advance 1024. This + caused failure on drone.io. Switch to hb-ot-font and disable + glyph names. + + test/shaping/tests/cursive-positioning.tests | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 17c831701756bb46300c412fd64b19d67f299c18 +Author: Behdad Esfahbod +Date: Wed Feb 24 16:06:23 2016 +0900 + + [tests] Fix for multiple options in test runner scripts + + test/shaping/run-tests.sh | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit ebd7431f824c718db6ce5b85e94f2b3911127af4 +Author: Behdad Esfahbod +Date: Wed Feb 24 15:53:40 2016 +0900 + + Partially revert 86c68c7a2c971efe8e35b1f1bd99401dc8b688d2 + + That commit moved the advance adjustment for mark positioning to + be applied immediately, instead of doing late before. This breaks + if mark advances are zeroed late, like in Arabic. Also, easier to + hit it in RTL scripts since a single mark with non-zero advance is + enough to hit the bug, whereas in LTR, at least two marks are needed. + + This reopens https://github.com/behdad/harfbuzz/issues/211 + The cursive+mark interaction is broken again. To be fixed in a + different way. + + src/hb-ot-layout-gpos-table.hh | 28 + ++++++++++++---------------- + test/shaping/tests/cursive-positioning.tests | 2 +- + 2 files changed, 13 insertions(+), 17 deletions(-) + +commit 284481b3120963353f5f34ed094f07ffc13480ef +Author: Behdad Esfahbod +Date: Wed Feb 24 15:52:37 2016 +0900 + + Add test for mark positioning in rtl with non-zero mark advance + + Apparently I broke this 86c68c7a2c971efe8e35b1f1bd99401dc8b688d2. + Fix coming. + + .../sha1sum/07f054357ff8638bac3711b422a1e31180bba863.ttf | Bin 0 -> + 848 bytes + test/shaping/tests/cursive-positioning.tests | 1 + + 2 files changed, 1 insertion(+) + +commit 56a84e8dd18c63782b8db3a86e94651dae5bb01b +Author: Behdad Esfahbod +Date: Wed Feb 24 15:50:33 2016 +0900 + + [tests] Allow commenting out tests to be skipped + + test/shaping/run-tests.sh | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 7cfd6cc486f2751d7f78c5008a636d677af4e12f +Author: Behdad Esfahbod +Date: Wed Feb 24 12:30:57 2016 +0900 + + [Android.mk] Update with warning flags + + Android.mk | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit dabf32a5ad706726412ba5c64e1ea614a707b928 +Author: Behdad Esfahbod +Date: Tue Feb 23 15:38:43 2016 +0900 + + 1.2.1 + + NEWS | 13 +++++++++++++ + configure.ac | 2 +- + 2 files changed, 14 insertions(+), 1 deletion(-) + +commit 525cc7d28cbe4e8149ddba677224f134dc0a3274 +Author: Behdad Esfahbod +Date: Tue Feb 23 15:19:27 2016 +0900 + + Add note re only adding tests with Free Software fonts + + test/shaping/README.md | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 6a09d7e34b949f9929f616ee53278b2edfd9b7ea +Author: Behdad Esfahbod +Date: Tue Feb 23 13:47:16 2016 +0900 + + [test] Add README about how to add shaping tests + + test/shaping/Makefile.am | 1 + + test/shaping/README.md | 37 +++++++++++++++++++++++++++++++++++++ + 2 files changed, 38 insertions(+) + +commit f8ee7906d0454d950081c621f2b04a6d08e1b92f +Author: Behdad Esfahbod +Date: Tue Feb 23 13:45:38 2016 +0900 + + Remove MANIFEST files + + They are unused currently. We can add later if we hook them up + to anything useful. + + test/shaping/fonts/sha1sum/MANIFEST | 52 + ---------------------- + test/shaping/tests/MANIFEST | 19 -------- + test/shaping/texts/MANIFEST | 1 - + test/shaping/texts/in-tree/MANIFEST | 9 ---- + test/shaping/texts/in-tree/shaper-arabic/MANIFEST | 6 --- + .../in-tree/shaper-arabic/script-arabic/MANIFEST | 3 -- + .../script-arabic/language-persian/MANIFEST | 1 - + .../script-arabic/language-urdu/MANIFEST | 1 - + .../script-arabic/language-urdu/crulp/MANIFEST | 1 - + .../language-urdu/crulp/ligatures/MANIFEST | 7 --- + .../shaper-arabic/script-arabic/misc/MANIFEST | 1 - + .../script-arabic/misc/diacritics/MANIFEST | 7 --- + .../in-tree/shaper-arabic/script-mandaic/MANIFEST | 1 - + .../shaper-arabic/script-mandaic/misc/MANIFEST | 0 + .../shaper-arabic/script-mongolian/MANIFEST | 1 - + .../shaper-arabic/script-mongolian/misc/MANIFEST | 4 -- + .../in-tree/shaper-arabic/script-nko/MANIFEST | 1 - + .../in-tree/shaper-arabic/script-nko/misc/MANIFEST | 1 - + .../in-tree/shaper-arabic/script-phags-pa/MANIFEST | 1 - + .../shaper-arabic/script-phags-pa/misc/MANIFEST | 1 - + .../in-tree/shaper-arabic/script-syriac/MANIFEST | 1 - + .../shaper-arabic/script-syriac/misc/MANIFEST | 2 - + test/shaping/texts/in-tree/shaper-default/MANIFEST | 5 --- + .../shaper-default/script-ethiopic/MANIFEST | 1 - + .../shaper-default/script-ethiopic/misc/MANIFEST | 1 - + .../in-tree/shaper-default/script-han/MANIFEST | 1 - + .../shaper-default/script-han/misc/MANIFEST | 1 - + .../shaper-default/script-hiragana/MANIFEST | 1 - + .../shaper-default/script-hiragana/misc/MANIFEST | 2 - + .../shaper-default/script-linear-b/MANIFEST | 1 - + .../shaper-default/script-linear-b/misc/MANIFEST | 1 - + .../shaper-default/script-tifinagh/MANIFEST | 1 - + .../shaper-default/script-tifinagh/misc/MANIFEST | 1 - + test/shaping/texts/in-tree/shaper-hangul/MANIFEST | 1 - + .../in-tree/shaper-hangul/script-hangul/MANIFEST | 1 - + .../shaper-hangul/script-hangul/misc/MANIFEST | 1 - + test/shaping/texts/in-tree/shaper-hebrew/MANIFEST | 1 - + .../in-tree/shaper-hebrew/script-hebrew/MANIFEST | 1 - + .../shaper-hebrew/script-hebrew/misc/MANIFEST | 1 - + test/shaping/texts/in-tree/shaper-indic/MANIFEST | 2 - + .../texts/in-tree/shaper-indic/indic/MANIFEST | 11 ----- + .../shaper-indic/indic/script-assamese/MANIFEST | 2 - + .../indic/script-assamese/misc/MANIFEST | 0 + .../indic/script-assamese/utrrs/MANIFEST | 3 -- + .../indic/script-assamese/utrrs/codepoint/MANIFEST | 7 --- + .../indic/script-assamese/utrrs/gpos/MANIFEST | 2 - + .../indic/script-assamese/utrrs/gsub/MANIFEST | 1 - + .../shaper-indic/indic/script-bengali/MANIFEST | 2 - + .../indic/script-bengali/misc/MANIFEST | 2 - + .../indic/script-bengali/utrrs/MANIFEST | 3 -- + .../indic/script-bengali/utrrs/codepoint/MANIFEST | 7 --- + .../indic/script-bengali/utrrs/gpos/MANIFEST | 2 - + .../indic/script-bengali/utrrs/gsub/MANIFEST | 1 - + .../shaper-indic/indic/script-devanagari/MANIFEST | 2 - + .../indic/script-devanagari/misc/MANIFEST | 6 --- + .../indic/script-devanagari/utrrs/MANIFEST | 3 -- + .../script-devanagari/utrrs/codepoint/MANIFEST | 9 ---- + .../indic/script-devanagari/utrrs/gpos/MANIFEST | 2 - + .../indic/script-devanagari/utrrs/gsub/MANIFEST | 1 - + .../shaper-indic/indic/script-gujarati/MANIFEST | 2 - + .../indic/script-gujarati/misc/MANIFEST | 0 + .../indic/script-gujarati/utrrs/MANIFEST | 3 -- + .../indic/script-gujarati/utrrs/codepoint/MANIFEST | 7 --- + .../indic/script-gujarati/utrrs/gpos/MANIFEST | 2 - + .../indic/script-gujarati/utrrs/gsub/MANIFEST | 1 - + .../shaper-indic/indic/script-gurmukhi/MANIFEST | 2 - + .../indic/script-gurmukhi/misc/MANIFEST | 1 - + .../indic/script-gurmukhi/utrrs/MANIFEST | 3 -- + .../indic/script-gurmukhi/utrrs/codepoint/MANIFEST | 7 --- + .../indic/script-gurmukhi/utrrs/gpos/MANIFEST | 2 - + .../indic/script-gurmukhi/utrrs/gsub/MANIFEST | 1 - + .../shaper-indic/indic/script-kannada/MANIFEST | 2 - + .../indic/script-kannada/misc/MANIFEST | 2 - + .../indic/script-kannada/utrrs/MANIFEST | 3 -- + .../indic/script-kannada/utrrs/codepoint/MANIFEST | 8 ---- + .../indic/script-kannada/utrrs/gpos/MANIFEST | 1 - + .../indic/script-kannada/utrrs/gsub/MANIFEST | 1 - + .../shaper-indic/indic/script-malayalam/MANIFEST | 2 - + .../indic/script-malayalam/misc/MANIFEST | 3 -- + .../indic/script-malayalam/utrrs/MANIFEST | 2 - + .../script-malayalam/utrrs/codepoint/MANIFEST | 7 --- + .../indic/script-malayalam/utrrs/gsub/MANIFEST | 1 - + .../shaper-indic/indic/script-oriya/MANIFEST | 2 - + .../shaper-indic/indic/script-oriya/misc/MANIFEST | 2 - + .../shaper-indic/indic/script-oriya/utrrs/MANIFEST | 2 - + .../indic/script-oriya/utrrs/codepoint/MANIFEST | 9 ---- + .../indic/script-oriya/utrrs/gsub/MANIFEST | 1 - + .../shaper-indic/indic/script-sinhala/MANIFEST | 2 - + .../indic/script-sinhala/misc/MANIFEST | 4 -- + .../indic/script-sinhala/utrrs/MANIFEST | 3 -- + .../indic/script-sinhala/utrrs/codepoint/MANIFEST | 5 --- + .../indic/script-sinhala/utrrs/gpos/MANIFEST | 1 - + .../indic/script-sinhala/utrrs/gsub/MANIFEST | 7 --- + .../shaper-indic/indic/script-tamil/MANIFEST | 2 - + .../shaper-indic/indic/script-tamil/misc/MANIFEST | 1 - + .../shaper-indic/indic/script-tamil/utrrs/MANIFEST | 3 -- + .../indic/script-tamil/utrrs/codepoint/MANIFEST | 10 ----- + .../indic/script-tamil/utrrs/gpos/MANIFEST | 2 - + .../indic/script-tamil/utrrs/gsub/MANIFEST | 1 - + .../shaper-indic/indic/script-telugu/MANIFEST | 2 - + .../shaper-indic/indic/script-telugu/misc/MANIFEST | 1 - + .../indic/script-telugu/utrrs/MANIFEST | 3 -- + .../indic/script-telugu/utrrs/codepoint/MANIFEST | 7 --- + .../indic/script-telugu/utrrs/gpos/MANIFEST | 1 - + .../indic/script-telugu/utrrs/gsub/MANIFEST | 1 - + .../in-tree/shaper-indic/south-east-asian/MANIFEST | 1 - + .../south-east-asian/script-khmer/MANIFEST | 1 - + .../south-east-asian/script-khmer/misc/MANIFEST | 3 -- + test/shaping/texts/in-tree/shaper-myanmar/MANIFEST | 1 - + .../in-tree/shaper-myanmar/script-myanmar/MANIFEST | 1 - + .../shaper-myanmar/script-myanmar/misc/MANIFEST | 3 -- + test/shaping/texts/in-tree/shaper-thai/MANIFEST | 2 - + .../texts/in-tree/shaper-thai/script-lao/MANIFEST | 1 - + .../in-tree/shaper-thai/script-lao/misc/MANIFEST | 1 - + .../texts/in-tree/shaper-thai/script-thai/MANIFEST | 1 - + .../in-tree/shaper-thai/script-thai/misc/MANIFEST | 4 -- + test/shaping/texts/in-tree/shaper-tibetan/MANIFEST | 1 - + .../in-tree/shaper-tibetan/script-tibetan/MANIFEST | 1 - + .../shaper-tibetan/script-tibetan/misc/MANIFEST | 1 - + test/shaping/texts/in-tree/shaper-use/MANIFEST | 6 --- + .../texts/in-tree/shaper-use/script-batak/MANIFEST | 1 - + .../in-tree/shaper-use/script-buginese/MANIFEST | 1 - + .../texts/in-tree/shaper-use/script-cham/MANIFEST | 1 - + .../in-tree/shaper-use/script-kaithi/MANIFEST | 1 - + .../in-tree/shaper-use/script-kharoshti/MANIFEST | 1 - + .../in-tree/shaper-use/script-tai-tham/MANIFEST | 2 - + 126 files changed, 381 deletions(-) + +commit 815bdd7700155efcffa9a4c3ca5bfc31833d0586 +Author: Behdad Esfahbod +Date: Mon Feb 22 18:22:44 2016 +0900 + + In cluster-level=0, group ZWJ/ZWNJ with previous cluster + + This better emulates Unicode grapheme clusters. + + Note that Uniscribe does NOT do this, but should be harmless with + most clients, + and improve fallback with clients that use HarfBuzz cluster as unit + of fallback. + + Fixes https://github.com/behdad/harfbuzz/issues/217 + + src/hb-ot-layout-private.hh | 6 ++++++ + src/hb-ot-shape.cc | 3 ++- + test/shaping/tests/indic-joiner-candrabindu.tests | 2 +- + test/shaping/tests/mongolian-variation-selector.tests | 2 +- + 4 files changed, 10 insertions(+), 3 deletions(-) + +commit 89137e325a19d62fb00979e1e8ab2ca59a2c1147 +Author: Behdad Esfahbod +Date: Mon Feb 22 16:00:59 2016 +0900 + + Minor + + src/hb-coretext.cc | 2 +- + src/hb-ot-shape.cc | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 15063b12f7619d4f44981248e28f38c172d12e1f +Author: Behdad Esfahbod +Date: Mon Feb 22 15:56:29 2016 +0900 + + [coretext] Move CTFont construction to face_data + + src/hb-coretext.cc | 66 + +++++++++++++++++++++++++----------------------------- + 1 file changed, 30 insertions(+), 36 deletions(-) + +commit ba3d49d9a56932d341bf1916a30f322be665e3a6 +Author: Behdad Esfahbod +Date: Mon Feb 22 15:50:12 2016 +0900 + + [coretext] Move code around + + src/hb-coretext.cc | 70 + +++++++++++++++++++++++++++++++----------------------- + 1 file changed, 40 insertions(+), 30 deletions(-) + +commit 90194efb8480d58c55b7a19962624c7aadbdca63 +Author: Behdad Esfahbod +Date: Mon Feb 22 15:42:53 2016 +0900 + + [coretext] Move code around + + src/hb-coretext.cc | 46 ++++++++++++++++++++++++++-------------------- + 1 file changed, 26 insertions(+), 20 deletions(-) + +commit ca539e37a4b71e585a267a288db1a3975cbb99fc +Author: Behdad Esfahbod +Date: Mon Feb 22 15:37:18 2016 +0900 + + [build] git.mk fix for m4/gtk-doc.m4 + + Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 54788cb1ecc5a5ffd63d07cd1f0b07b2afa9a8ca +Author: Behdad Esfahbod +Date: Mon Feb 22 15:32:52 2016 +0900 + + [win32] Install git.mk + + win32/Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +commit 9a13ed453ef96822a47d6e6f58332b87f38d5c59 +Author: Behdad Esfahbod +Date: Mon Feb 22 11:44:45 2016 +0900 + + Make FixedVersion a template + + src/hb-open-file-private.hh | 4 ++-- + src/hb-open-type-private.hh | 9 +++++---- + src/hb-ot-head-table.hh | 4 ++-- + src/hb-ot-hhea-table.hh | 2 +- + src/hb-ot-layout-gdef-table.hh | 2 +- + src/hb-ot-layout-gsubgpos-private.hh | 2 +- + src/hb-ot-layout-jstf-table.hh | 2 +- + src/hb-ot-maxp-table.hh | 2 +- + 8 files changed, 14 insertions(+), 13 deletions(-) + +commit 238b943e850ea1ab0093e12c74d2cd7c686f318e +Author: Behdad Esfahbod +Date: Mon Feb 22 15:31:22 2016 +0900 + + [coretext] Fix leak! + + src/hb-coretext.cc | 1 + + 1 file changed, 1 insertion(+) + +commit e561122856a50ed405d71cb1629317e7ae63f316 +Author: Behdad Esfahbod +Date: Mon Feb 22 15:28:37 2016 +0900 + + [coretext] Move code around + + src/hb-coretext.cc | 109 + ++++++++++++++++++++++++++++++----------------------- + 1 file changed, 62 insertions(+), 47 deletions(-) + +commit 04c64431530a4a6d9ebd33674c4665a8e6d25bdd +Author: Behdad Esfahbod +Date: Mon Feb 22 15:12:27 2016 +0900 + + [coretext] Ignore PPEM in font size selection + + src/hb-coretext.cc | 14 ++++---------- + 1 file changed, 4 insertions(+), 10 deletions(-) + +commit 62c2711121fe78f373c15c0f53090b62b52d11c1 +Author: Behdad Esfahbod +Date: Mon Feb 22 15:07:20 2016 +0900 + + [coretext] Limit grapheme-cluster forming to cluster-level=0 + + src/hb-coretext.cc | 1 + + src/hb-ot-shape.cc | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +commit 061105ec443eb7350ffe217305f9d8902c179e2f +Author: Behdad Esfahbod +Date: Mon Feb 22 14:59:39 2016 +0900 + + [coretext] Fix shaping with varying font size + + Fixes https://github.com/libass/libass/issues/212 + + src/hb-coretext.cc | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 27847cab1264b4ce8342603f4626b4e0645979e4 +Author: Behdad Esfahbod +Date: Fri Feb 19 15:56:50 2016 +0700 + + 1.2.0 + + NEWS | 20 ++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 21 insertions(+), 1 deletion(-) + +commit c3731559042e1730e85d19574321ad850010f7de +Author: Behdad Esfahbod +Date: Fri Feb 19 15:13:07 2016 +0700 + + [fuzzing] Add test for recent fix + + Test from https://github.com/behdad/harfbuzz/issues/223 + + I forgot that we do run hb-fuzzer on tests in + shaping/tests/fuzzed.tests. + + .../sha1sum/205edd09bd3d141cc9580f650109556cc28b22cb.ttf | Bin 0 -> + 1966 bytes + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/fuzzed.tests | 1 + + 3 files changed, 2 insertions(+) + +commit aa33cb72ab29c31e87f0cca9a0e72fe3a68247b7 +Author: Behdad Esfahbod +Date: Fri Feb 19 15:12:24 2016 +0700 + + [fuzzing] Make test runner actually work + + test/fuzzing/Makefile.am | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 2735555c6b0c95db7dfc2b391f92a1a5c06084c4 +Author: Behdad Esfahbod +Date: Fri Feb 19 15:12:16 2016 +0700 + + [fuzzing] Add TODO item + + test/fuzzing/hb-fuzzer.cc | 1 + + 1 file changed, 1 insertion(+) + +commit b87e36f6f119fac80b8fd55f3abae563c2c5b798 +Author: Behdad Esfahbod +Date: Fri Feb 19 14:52:31 2016 +0700 + + Avoid buffer->move_to() in case of buffer error + + Fixes https://github.com/behdad/harfbuzz/issues/223 + + Right now we cannot test this because it has to be tested using + hb-fuzzer. + We should move all fuzzing tests from test/shaping/tests/fuzzed.tests + to + test/fuzzing/ and have its own test runner. At that point, should add + test from this issue as well. + + src/hb-buffer.cc | 2 ++ + src/hb-ot-layout-gsubgpos-private.hh | 2 +- + 2 files changed, 3 insertions(+), 1 deletion(-) + +commit 7e76bbabbaa56af314abff8ddba8866c634919cd +Author: Behdad Esfahbod +Date: Fri Feb 19 14:43:39 2016 +0700 + + [fuzzing] Make "make hb-fuzzer" build lib dependency + + Not going to do with util/, but is convenient here. + + test/fuzzing/Makefile.am | 3 +++ + 1 file changed, 3 insertions(+) + +commit 568a0c60e8695a6ad8a93ec60d55b137c48890cb +Author: Behdad Esfahbod +Date: Thu Feb 18 19:31:51 2016 +0700 + + Remove pointless overflow check in pointer math + + Fixes https://github.com/behdad/harfbuzz/issues/227 + + src/hb-blob.cc | 1 - + 1 file changed, 1 deletion(-) + +commit aae2847099cbf05bf0668fbe526fc58736837c1b +Author: Behdad Esfahbod +Date: Thu Feb 18 17:06:25 2016 +0700 + + Emoji skin tone modifiers need to be treated as combining marks + + Fixes https://github.com/behdad/harfbuzz/issues/169 + + src/hb-ot-layout-private.hh | 15 ++++++++++++++- + src/hb-unicode-private.hh | 5 +++-- + 2 files changed, 17 insertions(+), 3 deletions(-) + +commit da41e48f0a1a6af6d44ef25185d2421a29bd4166 +Author: Behdad Esfahbod +Date: Tue Feb 16 17:16:33 2016 +0700 + + [USE] Zero mark advances by GDEF early + + This is what Microsoft's implementation does. Marks that need advance + need to add it back using 'dist' or other feature in GPOS. + Update tests to + match. + + src/hb-ot-shape-complex-use.cc | 2 +- + test/shaping/fonts/sha1sum/MANIFEST | 1 + + .../sha1sum/f518eb6f6b5eec2946c9fbbbde44e45d46f5e2ac.ttf | Bin 0 -> + 1356 bytes + test/shaping/tests/context-matching.tests | 2 +- + test/shaping/tests/use.tests | 2 ++ + 5 files changed, 5 insertions(+), 2 deletions(-) + +commit 86c68c7a2c971efe8e35b1f1bd99401dc8b688d2 +Author: Behdad Esfahbod +Date: Tue Feb 16 16:07:20 2016 +0700 + + [GPOS] Fix interaction of mark attachments and cursive chaining + + Fixes https://github.com/behdad/harfbuzz/issues/211 + + What happens in that bug is that a mark is attached to base first, + then a second mark is cursive-chained to the first mark. This only + "works" because it's in the Indic shaper where mark advances are + not zeroed. + + Before, we didn't allow cursive to run on marks at all. Fix that. + We also where updating mark major offsets at the end of GPOS, such + that changes in advance of base will not change the mark attachment + position. That was superior to the alternative (which is what + Uniscribe + does BTW), but made it hard to apply cursive to the mark after it + was positioned. We could track major-direction offset changes and + apply that to cursive in the post process, but that's a much trickier + thing to do than the fix here, which is to immediately apply the + major-direction advance-width offsets... Ie.: + + https://github.com/behdad/harfbuzz/issues/211#issuecomment-183194739 + + If this breaks any fonts, the font should be fixed to do mark + attachment + after all the advances are set up first (kerning, etc). + + Finally, this, still doesn't make us match Uniscribe, for I explained + in that bug. Looks like Uniscribe applies minor-direction cursive + adjustment immediate as well. We don't, and we like it our way, at + least for now. Eg. the sequence in the test case does this: + + - The first subscript attaches with mark-to-base, moving in x only, + - The second subscript attaches with cursive attachment to first + subscript + moving in x only, + - A final context rule moves the first subscript up by 104 units. + + The way we do, the final shift-up, also shifts up the second subscript + mark because it's cursively-attached. Uniscribe doesn't. We get: + + [ttaorya=0+1307|casubscriptorya=0@-242,104+-231|casubscriptnarroworya=0@20,104+507] + + while Uniscribe gets: + + [ttaorya=0+1307|casubscriptorya=0@-242,104+-211|casubscriptnarroworya=0+487] + + note the different y-offset of the last glyph. In our view, + after cursive, + things move together, period. + + src/hb-ot-layout-gpos-table.hh | 31 + +++++++++++---------- + .../706c5d7b625f207bc0d874c67237aad6f1e9cd6f.ttf | Bin 0 -> 3868 bytes + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/cursive-positioning.tests | 1 + + 4 files changed, 18 insertions(+), 15 deletions(-) + +commit 80c8855cfeffa028d74a25df884d0e5577c95c6c +Author: Behdad Esfahbod +Date: Fri Feb 12 12:50:17 2016 +0700 + + Minor + + src/hb-common.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6ab920224c32e38072a0bec5e84d4b0d58b74167 +Author: Behdad Esfahbod +Date: Thu Feb 11 16:57:52 2016 +0700 + + [GPOS] Minor + + No effect. + + src/hb-ot-layout-gpos-table.hh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit cbc3a76c5a38ab24f72e80357377711bd3f54d56 +Author: Behdad Esfahbod +Date: Thu Feb 11 16:48:13 2016 +0700 + + [GPOS] Merge fixing of offsets for cursive and mark attachments + + Part of fixing https://github.com/behdad/harfbuzz/issues/211 + + src/hb-buffer-private.hh | 3 +- + src/hb-ot-layout-gpos-table.hh | 73 + ++++++++++++++++++------------------------ + 2 files changed, 33 insertions(+), 43 deletions(-) + +commit 7d8d58ac81fe267e29ea68cdc6f4a4fa8c22d40f +Author: Behdad Esfahbod +Date: Thu Feb 11 16:34:28 2016 +0700 + + [GPOS] Divide position_finish() into two phases, for advances + and offsets + + Right now the position_finish_advances() is empty. To be used for + spacing attachments proposal later. + + src/hb-ot-layout-gpos-table.hh | 11 +++++++++-- + src/hb-ot-layout-gsub-table.hh | 6 ------ + src/hb-ot-layout-private.hh | 19 +++++++++---------- + src/hb-ot-layout.cc | 16 ++++++++-------- + src/hb-ot-shape.cc | 7 +++---- + 5 files changed, 29 insertions(+), 30 deletions(-) + +commit 8474231567a08873cc5e0aa08fea60316a04c27e +Author: Behdad Esfahbod +Date: Thu Feb 11 16:27:41 2016 +0700 + + [ot] Minor shuffling code around + + src/hb-ot-layout-gpos-table.hh | 2 -- + src/hb-ot-shape.cc | 13 ++++++++----- + 2 files changed, 8 insertions(+), 7 deletions(-) + +commit b0b11614e9fb9ecd1faae28b0ed71ac6bf5c1266 +Author: Behdad Esfahbod +Date: Thu Feb 11 15:28:55 2016 +0700 + + [GPOS] Add harmless recursion in fix_mark_attachment() + + Will do nothing. Just useful for merging two functions. + + src/hb-ot-layout-gpos-table.hh | 2 ++ + 1 file changed, 2 insertions(+) + +commit 686567baab5a32ffea843538643e01de2885fa4f +Author: Behdad Esfahbod +Date: Thu Feb 11 15:25:28 2016 +0700 + + [GPOS] Merge attach_chain() and cursive_chain() + + Differentiate, using new attach_type(). + + src/hb-ot-layout-gpos-table.hh | 50 + +++++++++++++++++++++++++++--------------- + 1 file changed, 32 insertions(+), 18 deletions(-) + +commit 806ad8dc65931ab7893bff7d5592a67a9bd237ca +Author: Behdad Esfahbod +Date: Thu Feb 11 14:53:11 2016 +0700 + + [GPOS] Minor shuffling + + src/hb-ot-layout-gpos-table.hh | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 0f6278d1fbb75856132f1fa2d29648979f033316 +Author: Behdad Esfahbod +Date: Thu Feb 11 14:49:10 2016 +0700 + + [GPOS] Negate sign of attach_lookback(), and rename it to + attach_chain() + + No behavior change. Preparing to unify how cursive and mark + attachments + work. + + src/hb-ot-layout-gpos-table.hh | 17 +++++++++-------- + 1 file changed, 9 insertions(+), 8 deletions(-) + +commit 5b5dc2c0406d8180e72d97a54334c722fda325b1 +Author: Behdad Esfahbod +Date: Thu Feb 11 12:15:38 2016 +0700 + + [tests] Add test for advance zeroing of an ASCII letter marked as + mark in GDEF + + test/shaping/fonts/sha1sum/MANIFEST | 1 + + .../sha1sum/a98e908e2ed21b22228ea59ebcc0f05034c86f2e.ttf | Bin 0 -> + 1016 bytes + test/shaping/tests/zero-width-marks.tests | 1 + + 3 files changed, 2 insertions(+) + +commit 660c9d3fc21172e8dc340b017122c084dac6334c +Author: Behdad Esfahbod +Date: Thu Feb 11 12:14:27 2016 +0700 + + Remove font-dependent ASCII-only perf hack + + Is confusing. I already hit it myself. Remove. We can optimize + ASCII based on Unicode properties. But should not do based on + assumptions on the font. + + src/hb-ot-shape.cc | 4 ---- + 1 file changed, 4 deletions(-) + +commit 3fe0cf10401875f1e9b8b5fbaf59826e64ea61d2 +Author: Behdad Esfahbod +Date: Wed Feb 10 18:43:43 2016 +0700 + + Fix previous commit! + + test/shaping/fonts/sha1sum/MANIFEST | 6 +++--- + test/shaping/tests/zero-width-marks.tests | 6 +++--- + 2 files changed, 6 insertions(+), 6 deletions(-) + +commit 293a210eee0a53b59f4b33298f42ec6e59d785e0 +Author: Behdad Esfahbod +Date: Wed Feb 10 18:39:59 2016 +0700 + + [tests] Fix fonts in cc4a78bf22c4a735b84c89b04be3bb531f42135e + + They had an invalid LookupFlag (32). + + .../sha1sum/0dd3a51c3ea50997cb1f72515d1060408f8b4b59.ttf | Bin 1412 -> + 0 bytes + .../sha1sum/56cfd0e18d07f41c38e9598545a6d369127fc6f9.ttf | Bin 0 -> + 1412 bytes + .../sha1sum/828114d00931885bc25abf7cdb878b2914a2e743.ttf | Bin 1448 -> + 0 bytes + .../sha1sum/894e96a367f00c196d82e6243673a1d4414f4f6a.ttf | Bin 1448 -> + 0 bytes + .../sha1sum/cc5f3d2d717fb6bd4dfae1c16d48a2cb8e12233b.ttf | Bin 0 -> + 1448 bytes + .../sha1sum/ffa0f5d2d9025486d8469d8b1fdd983e7632499b.ttf | Bin 0 -> + 1448 bytes + 6 files changed, 0 insertions(+), 0 deletions(-) + +commit eaadcbbc53e02838c847e53ef214a55d6915d677 +Author: Behdad Esfahbod +Date: Wed Feb 10 18:29:54 2016 +0700 + + Remove now-unused mark zeroing BY_UNICODE + + src/hb-ot-shape-complex-private.hh | 2 -- + src/hb-ot-shape.cc | 29 ----------------------------- + 2 files changed, 31 deletions(-) + +commit cc4a78bf22c4a735b84c89b04be3bb531f42135e +Author: Behdad Esfahbod +Date: Wed Feb 10 18:24:08 2016 +0700 + + [tests] Add tests for Latin mark zeroing + + .../sha1sum/0dd3a51c3ea50997cb1f72515d1060408f8b4b59.ttf | Bin 0 -> + 1412 bytes + .../sha1sum/828114d00931885bc25abf7cdb878b2914a2e743.ttf | Bin 0 -> + 1448 bytes + .../sha1sum/894e96a367f00c196d82e6243673a1d4414f4f6a.ttf | Bin 0 -> + 1448 bytes + test/shaping/fonts/sha1sum/MANIFEST | 4 ++++ + .../sha1sum/fcdcffbdf1c4c97c05308d7600e4c283eb47dbca.ttf | Bin 0 -> + 1344 bytes + test/shaping/tests/zero-width-marks.tests | 4 ++++ + 6 files changed, 8 insertions(+) + +commit 55ff34b9c157a839d026465af8f30424ce7f891b +Author: Behdad Esfahbod +Date: Wed Feb 10 18:20:02 2016 +0700 + + [tests] Add tests for Thai mark zeroing + + .../sha1sum/45855bc8d46332b39c4ab9e2ee1a26b1f896da6b.ttf | Bin 0 -> + 1088 bytes + .../sha1sum/7a37dc4d5bf018456aea291cee06daf004c0221c.ttf | Bin 0 -> + 1080 bytes + .../sha1sum/8099955657a54e9ee38a6ba1d6f950ce58e3cc25.ttf | Bin 0 -> + 1024 bytes + test/shaping/fonts/sha1sum/MANIFEST | 4 ++++ + .../sha1sum/bb0c53752e85c3d28973ebc913287b8987d3dfe8.ttf | Bin 0 -> + 976 bytes + test/shaping/tests/zero-width-marks.tests | 4 ++++ + 6 files changed, 8 insertions(+) + +commit b3582a8ee82942a931130a83b2867b239f8ca71a +Author: Behdad Esfahbod +Date: Wed Feb 10 18:10:15 2016 +0700 + + Change default mark advance zeroing behavior from Unicode to GDEF + + See thread at: + https://lists.freedesktop.org/archives/harfbuzz/2016-February/005462.html + + src/hb-ot-shape-complex-default.cc | 2 +- + src/hb-ot-shape-complex-thai.cc | 2 +- + src/hb-ot-shape-complex-tibetan.cc | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +commit 43bb2b8fb00705c3334730a58ade7984181018b2 +Author: Behdad Esfahbod +Date: Wed Feb 10 14:11:43 2016 +0700 + + Minor + + test/shaping/hb_test_tools.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bdaa784bb610ec65626d63cc068a0958ff5005fc +Merge: a168db4 f6ffba6 +Author: Behdad Esfahbod +Date: Wed Feb 10 11:11:36 2016 +0700 + + Merge pull request #164 from fanc999/msvc.build + + Enable Build of HarfBuzz under Visual Studio using NMake Makefiles + +commit a168db4739148459bc33c7dae88e73efa0153d72 +Author: Behdad Esfahbod +Date: Wed Feb 10 11:10:08 2016 +0700 + + [README] Add ABI Tracker link + + README | 1 + + 1 file changed, 1 insertion(+) + +commit f6ffba634bb33d6d4b051abce9c23fcae280c3fe +Author: Chun-wei Fan +Date: Wed Dec 9 14:57:15 2015 +0800 + + MSVC builds: Add support to build DirectWrite shaping backend + + Add into the NMake Makefiles to build the DirectWrite shaping backend, + but as PR #134 mentions, this is considered to be in an experimental + state, + so don't include this in the build by default for now. This is + most probably + going to replace the Uniscribe backend eventually, since DirectWrite + is meant + to be Uniscribe's replacement, and is needed for Windows Store apps + if a + system shaping API is to be used. + + win32/README.txt | 4 ++++ + win32/config-msvc.mak | 10 ++++++++++ + win32/config.h.win32.in | 3 +++ + win32/info-msvc.mak | 7 +++++++ + 4 files changed, 24 insertions(+) + +commit c6792854557ca104948e8f0b142c9384105b0d05 +Author: Chun-wei Fan +Date: Wed Feb 3 18:31:23 2016 +0800 + + build: Build the DirectWrite sources if requested + + This adds to the autotools build system so that the (experimental) + DirectWrite support for HarfBuzz is built (and dist'ed). + + configure.ac | 25 +++++++++++++++++++++++++ + src/Makefile.am | 7 +++++++ + src/Makefile.sources | 3 +++ + 3 files changed, 35 insertions(+) + +commit d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462e +Author: Chun-wei Fan +Date: Tue Nov 3 19:00:42 2015 +0800 + + build: Support Visual Studio builds using NMake + + This adds a set of NMake Makefiles that can be used to build + HarfBuzz, from + the standard basic build building the minimal HarfBuzz DLL (consisting + of OpenType, fallback and Uniscribe support only), to a full + fledged build + consisting of GLib and FreeType support, as well as building the + utilities, + the test programs in src/ and test/api, and HarfBuzz-ICU and + HarfBuzz-GObject, and up to building the introspection files. + This means a + flexible build mechanism is supported here, so anything that is + supported + for a Windows build (code-wise), should all be supported by this build + system. + + As in an earlier commit, the source listings are shared with the + autotools + builds with the various Makefile.sources in src/, src/hb-ucdn and + util/, and + this set of NMake Makefiles will transform these lists into the + form they + want. + + In the current form, all the test programs in test/api pass, and + this has + been checked successfully with 'make -j8 distcheck'. + + BUILD.md | 4 +- + Makefile.am | 2 +- + configure.ac | 2 + + win32/Makefile.am | 14 +++ + win32/Makefile.vc | 52 +++++++++++ + win32/README.txt | 75 ++++++++++++++++ + win32/build-rules-msvc.mak | 140 ++++++++++++++++++++++++++++++ + win32/config-msvc.mak | 188 + ++++++++++++++++++++++++++++++++++++++++ + win32/create-lists-msvc.mak | 151 ++++++++++++++++++++++++++++++++ + win32/create-lists.bat | 42 +++++++++ + win32/detectenv-msvc.mak | 136 +++++++++++++++++++++++++++++ + win32/generate-msvc.mak | 26 ++++++ + win32/hb-introspection-msvc.mak | 42 +++++++++ + win32/info-msvc.mak | 130 +++++++++++++++++++++++++++ + win32/install.mak | 29 +++++++ + win32/introspection-msvc.mak | 73 ++++++++++++++++ + 16 files changed, 1104 insertions(+), 2 deletions(-) + +commit 5c3e7260bcb4999b8b7cb9afb26e6eaff867634b +Author: Chun-wei Fan +Date: Tue Nov 3 18:52:46 2015 +0800 + + MSVC builds: Add a pre-configured config.h(.win32) template + + This adds a pre-configured config.h template that can be used + for Visual + Studio builds, where autotools is not normally available. This has + the + configs that are suitable for Visual Studio builds, as well as all the + features used for Windows builds enabled (HAVE_OT, HAVE_FALLBACK and + HAVE_UNISCRIBE). + + Note that the optional features are not enabled here, they are + enabled by + /D's (or -D's) in the NMake Makefiles as requested. + + win32/config.h.win32.in | 155 + ++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 155 insertions(+) + +commit 35ded3af74a5bc4b038a07308354d5f7501ae3c7 +Author: Chun-wei Fan +Date: Tue Nov 3 16:56:27 2015 +0800 + + build: Move source listings into separate Makefile snippets + + This moves all the source listings in src/Makefile.am, + src/hb-ucdn/Makefile.am and util/Makefile.am into separate Makefile + snippets, so that they may be shared between different Makefile-based + build systems, such as NMake for Visual Studio. + + src/Makefile.am | 165 + +++++++++---------------------------------- + src/Makefile.sources | 147 ++++++++++++++++++++++++++++++++++++++ + src/hb-ucdn/Makefile.am | 6 +- + src/hb-ucdn/Makefile.sources | 4 ++ + util/Makefile.am | 34 ++------- + util/Makefile.sources | 32 +++++++++ + 6 files changed, 223 insertions(+), 165 deletions(-) + +commit b894a85ad1e7c3ecfb6d3732a7c9779f5462fe70 +Author: Behdad Esfahbod +Date: Tue Feb 2 16:39:19 2016 +0800 + + Fix more hangs in case of buffer allocation errors + + Hopefully + fixes https://github.com/behdad/harfbuzz/issues/214 + + src/hb-ot-shape-complex-indic.cc | 2 +- + src/hb-ot-shape-complex-myanmar.cc | 2 +- + src/hb-ot-shape-complex-use.cc | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +commit b693992ea160b66541f678dc9be29b513c77a30b +Merge: 9a6a33c 498574e +Author: Behdad Esfahbod +Date: Tue Feb 2 12:33:32 2016 +0800 + + Merge pull request #222 from n8willis/master + + Add usermanual chapter on cluster levels + +commit 498574e6c1a83bbd2768925af6e39806fe1ea8bb +Author: n8willis +Date: Thu Jan 28 12:21:32 2016 -0600 + + Update Makefile.am + + docs/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit e12fc666994573dbabb6928a8b2e8698667088ce +Author: n8willis +Date: Thu Jan 28 12:14:12 2016 -0600 + + Added initial usermanual chapter on cluster levels. + + docs/harfbuzz-docs.xml | 1 + + docs/usermanual-clusters.xml | 304 + +++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 305 insertions(+) + +commit 9a6a33ccbea8a2e23e779bd955958fa41974c1c7 +Merge: d05b783 146fe25 +Author: Behdad Esfahbod +Date: Mon Jan 18 12:47:18 2016 +0100 + + Merge pull request #216 from mhosken/master + + Refactor graphite2 to make ovleraps into negative width spaces + +commit 146fe252c3ebd0253344ce20981554e40926497b +Author: Martin Hosken +Date: Sat Jan 16 17:24:00 2016 -0600 + + Refactor graphite2 to make ovleraps into negative width spaces + + src/hb-graphite2.cc | 71 + ++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 43 insertions(+), 28 deletions(-) + +commit d05b783322d90208b2ddf06a5ebffc7c301be3d7 +Author: Behdad Esfahbod +Date: Tue Jan 12 16:17:21 2016 +0000 + + Fix compiler warning + + Fixes https://github.com/behdad/harfbuzz/issues/212 + + src/hb-ot-tag.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d163dc18e66c9e2f404d09310482464245cae704 +Author: Behdad Esfahbod +Date: Tue Jan 12 13:05:01 2016 +0000 + + Minor + + src/hb-ot-layout-common-private.hh | 30 +++++++++++++++--------------- + 1 file changed, 15 insertions(+), 15 deletions(-) + +commit 505b7d4732c6a8c423f43c0de46e05dc583e82c0 +Author: Behdad Esfahbod +Date: Mon Jan 11 18:31:04 2016 +0000 + + [fuzzing] Fuzz input text + + Very rudimentary right now, but will get kcc's bot going. + + From + https://github.com/behdad/harfbuzz/issues/139#issuecomment-163580783 + + test/fuzzing/hb-fuzzer.cc | 25 +++++++++++++++++++------ + 1 file changed, 19 insertions(+), 6 deletions(-) + +commit 3e704521f67e021fb51cda7319925fd39eba4f97 +Author: Behdad Esfahbod +Date: Mon Jan 11 17:38:41 2016 +0000 + + [OT] Get list of lookup subtables once and loop through them + + This speeds up shaping the Amiri font by over 15%. + + This was primarily needed for my work on OpenType GX, since + we will be collecting only sublookups that are "active" for + current font instance; but it's a nice boost in general as + well. + + We might, in the future, collect subtables in the lookup_accel. + That would also allow us to do a per-subtbale set-digest, which + should speed things up some more, specially for ContextChainFormat3 + lookups... Amiri, for example, contains one lookup with 53 + subtables! + + src/hb-ot-layout.cc | 120 + +++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 81 insertions(+), 39 deletions(-) + +commit 11441291bbf4326dca9b14ec3e9cad3d4d229303 +Author: Behdad Esfahbod +Date: Mon Jan 11 13:16:35 2016 +0000 + + 1.1.3 + + NEWS | 29 +++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 30 insertions(+), 1 deletion(-) + +commit 97624d9244de0fdb9c03f60e03fe242028efa8a1 +Author: Behdad Esfahbod +Date: Mon Jan 11 12:58:45 2016 +0000 + + [docs] Minor fixes. + + src/hb-buffer.h | 26 +++++++++++++------------- + 1 file changed, 13 insertions(+), 13 deletions(-) + +commit a39ff95fce39226e80850ff251cb34a7aad12bd7 +Author: Behdad Esfahbod +Date: Mon Jan 11 12:28:37 2016 +0000 + + [coretext] Speed up CoreText font fallback + + Fixes https://code.google.com/p/chromium/issues/detail?id=547912 + + src/hb-coretext.cc | 45 ++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 40 insertions(+), 5 deletions(-) + +commit 5afebbdcb2dab0e9a42d580df629d8e60b50d2f9 +Author: Behdad Esfahbod +Date: Thu Jan 7 22:53:59 2016 +0000 + + Add Homebrew build instructions + + BUILD.md | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit e8a27d79476a5d7a83cf2287d92ca291257546f4 +Author: Behdad Esfahbod +Date: Thu Jan 7 22:52:16 2016 +0000 + + Don't build hb-fuzzer in "make", only "make check" + + test/fuzzing/Makefile.am | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 25671466d245449187f8ab17e1a233f1d087d5ed +Author: Behdad Esfahbod +Date: Thu Jan 7 19:11:41 2016 +0000 + + Add 9 reserved entries to hb_font_extents_t + + Might add italic-angle, underline/strikethrough-position/thickness + in the future. Do this before new struct goes into a release. + + src/hb-font.h | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit e6d5e4c3106180cb22253c2c278b40f7c4c98f2f +Author: Behdad Esfahbod +Date: Wed Jan 6 12:29:50 2016 +0000 + + [uniscribe] Fix negative advance + + This happens with at least one test font I have. + + src/hb-uniscribe.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 99d34955762d0fff4b66a30e6fbe65fd1cf9976b +Author: Behdad Esfahbod +Date: Wed Jan 6 12:20:47 2016 +0000 + + [test] Add test text for Kaithi + + test/shaping/texts/in-tree/shaper-hangul/MANIFEST | 1 + + test/shaping/texts/in-tree/shaper-hebrew/MANIFEST | 1 + + test/shaping/texts/in-tree/shaper-tibetan/MANIFEST | 1 + + test/shaping/texts/in-tree/shaper-use/MANIFEST | 1 + + test/shaping/texts/in-tree/shaper-use/script-kaithi/MANIFEST | 1 + + test/shaping/texts/in-tree/shaper-use/script-kaithi/misc.txt | 6 ++++++ + 6 files changed, 11 insertions(+) + +commit 53c47c85827a7e3ca82000e3baa9aa87c5770ce9 +Author: Behdad Esfahbod +Date: Tue Jan 5 13:26:20 2016 +0000 + + Increase sanitize edit count from 8 to 32 + + See previous commit. + + src/hb-open-type-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit da2fcfdc51a2cc0d0a782efa6c91b733f7aa84ba +Author: Behdad Esfahbod +Date: Tue Jan 5 13:23:45 2016 +0000 + + Don't count fixing-up FeatureParams offset as error + + The font Garamond Premier Pro Caption (and possibly many other + Adobe fonts), have many FeatureParamsSize tables with the old + wrong offset. We handle fixing those up, but they were still + contributing to edit_count, and when I reduced HB_SANITIZE_MAX_EDIT + from 100 to 8 in 14c2de321826c36037adde859ccca3e2011325a9, these + fonts were now getting GPOS dropped and hence kerning disabled. + + Fix, by not counting edits made towareds offset fix-up. I'll + also increase edit count again, in the next commit. + + src/hb-ot-layout-common-private.hh | 3 +++ + 1 file changed, 3 insertions(+) + +commit d0adc80965506810820f9ec165b8df80cc8907e3 +Author: Behdad Esfahbod +Date: Sat Jan 2 13:25:18 2016 +0000 + + Check magicNumber in head table during sanitize + + src/hb-ot-head-table.hh | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 3a48c776701a919e11b067129586e40372d90d54 +Merge: 9230911 4b4948d +Author: Behdad Esfahbod +Date: Sat Jan 2 00:59:14 2016 +0000 + + Merge pull request #208 from khaledhosny/travis-trusty + + [travis] Try building on Trusty + +commit 4b4948d360a2141e0ffda2994aa308645dc32f59 +Author: Khaled Hosny +Date: Sat Jan 2 00:36:19 2016 +0400 + + [travis] Try building on Trusty + + Trusty has gtk-doc 1.20 which has better markdown support which should + fix some of the brokenness in the newly added documentation. The build + seems to be as fast as the current container-based build on Precise. + + .travis.yml | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 9230911facf90c06626e54023ca4d99f5e05f1a4 +Author: Behdad Esfahbod +Date: Fri Jan 1 19:06:43 2016 +0000 + + [travis] Only run coveralls if testing behdad/harfbuzz + + Fixes failures in others' forks, like: + https://travis-ci.org/khaledhosny/harfbuzz/jobs/99719710#L3912 + + .travis.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6f66f05757d3d5738571b3d4ee40afffb8f26ff9 +Merge: bfdf684 9ab9f97 +Author: Behdad Esfahbod +Date: Fri Jan 1 16:44:01 2016 +0000 + + Merge pull request #207 from khaledhosny/docs-4 + + [docs] More buffers documentation + +commit 9ab9f974d42e0001966e243a23a64e6aefbd4764 +Author: Khaled Hosny +Date: Fri Jan 1 20:38:21 2016 +0400 + + [docs] More buffers documentation + + docs/harfbuzz-sections.txt | 4 +- + src/hb-buffer-serialize.cc | 85 + ++++++++++++++++++++++++++++++------------- + src/hb-buffer.cc | 91 + +++++++++++++++++++++++++++++++++++----------- + src/hb-buffer.h | 78 +++++++++++++++++++++++++-------------- + src/hb-shape.cc | 10 +++-- + 5 files changed, 187 insertions(+), 81 deletions(-) + +commit bfdf684f7957645dd016fbf76700c5911c4bee2d +Merge: d7ed6f5 85c2443 +Author: Behdad Esfahbod +Date: Wed Dec 30 22:20:14 2015 +0100 + + Merge pull request #205 from khaledhosny/more-docs + + More docs + +commit d7ed6f50b4ff13a94701131913d931f13a4d1266 +Merge: b758e5e a7f0e25 +Author: Behdad Esfahbod +Date: Wed Dec 30 22:20:00 2015 +0100 + + Merge pull request #206 from nico/patch-3 + + Remove unused HB_SHAPER_DATA_ENSURE_DECLARE lines. + +commit a7f0e25dafa90bd21b01c38cb0782ade54b75cdc +Author: Nico Weber +Date: Wed Dec 30 16:05:52 2015 -0500 + + Remove unused HB_SHAPER_DATA_ENSURE_DECLARE lines. + + The coretext_aat shaper delegates to the regular coretext_..._ensure() + functions, so coretext_aat_..._ensure() functions defined by these + macros are unused. The compiler warns about them, which in turn can + confuse people to think that the coretext_aat_..._ensure() functions + weren't called by accident. + + src/hb-coretext.cc | 4 ---- + 1 file changed, 4 deletions(-) + +commit 85c2443b737335b77c7e9bb6fd6741912f70fcef +Author: Khaled Hosny +Date: Wed Dec 30 22:57:04 2015 +0400 + + [docs] Reduce gtkdoc-check errors + + Now it is just reporting one error about “503 undocumented or + incomplete + symbols”, that will be the easy part I guess. + + docs/harfbuzz-docs.xml | 74 + ++++++++++++++++++++++++++++++++++++++++++++++ + docs/harfbuzz-sections.txt | 40 +++++++++++++++++++++++++ + 2 files changed, 114 insertions(+) + +commit 9cffe329f15b3a74a3af4e68c1884f1dbda49666 +Author: Khaled Hosny +Date: Wed Dec 30 22:50:08 2015 +0400 + + [docs] Typo + + src/hb-buffer.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b758e5ea223eced0fde9a3e62d0fdf04c04914a1 +Merge: 266bfa3 8b1224f +Author: Behdad Esfahbod +Date: Wed Dec 30 16:44:19 2015 +0100 + + Merge pull request #203 from nico/patch-1 + + Remove unused `retry:` label. + +commit 266bfa3772e75fedcd93db22bf8672a13ad7a7d9 +Author: Behdad Esfahbod +Date: Wed Dec 30 16:25:48 2015 +0100 + + [docs] Minor + + .ci/deploy-docs.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d08035f8f15b7ddd89a318ea34bc386a9e33a8ea +Author: Behdad Esfahbod +Date: Wed Dec 30 16:15:36 2015 +0100 + + [docs] Fix up build, really + + .ci/deploy-docs.sh | 9 ++++----- + .travis.yml | 2 +- + 2 files changed, 5 insertions(+), 6 deletions(-) + +commit 0d45c3cf63692151166ca7071f755dfaa8922a67 +Author: Behdad Esfahbod +Date: Wed Dec 30 16:09:39 2015 +0100 + + [docs] Turn bash tracing on + + .ci/deploy-docs.sh | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 33b2d981a0b12ea165ef9282204a73f4a1ce0477 +Author: Behdad Esfahbod +Date: Wed Dec 30 15:56:56 2015 +0100 + + [docs] Another try, not sure why the bot isn't building + + .ci/deploy-docs.sh | 13 ++++--------- + 1 file changed, 4 insertions(+), 9 deletions(-) + +commit f3a051149b3b565b5ad4e489bf730c5203c3549e +Author: Behdad Esfahbod +Date: Wed Dec 30 15:45:43 2015 +0100 + + [docs] Shuffling code around in deploy-docs.sh + + Temporarily makes it rebuild docs on every change again. + + .ci/deploy-docs.sh | 46 +++++++++++++++++++++++++++------------------- + 1 file changed, 27 insertions(+), 19 deletions(-) + +commit 8f31d0a94b27bb658aabe600472fc10bc47885f6 +Merge: 9d280cf fb192c2 +Author: Behdad Esfahbod +Date: Wed Dec 30 15:13:37 2015 +0100 + + Merge pull request #202 from khaledhosny/doc-fixes + + Doc fixes + +commit fb192c263e17081c87f4cc971274d9be42f19513 +Author: Khaled Hosny +Date: Wed Dec 30 15:05:50 2015 +0400 + + [docs] A bit more buffers documentation + + docs/harfbuzz-sections.txt | 2 ++ + src/hb-buffer.cc | 7 +++--- + src/hb-buffer.h | 56 + ++++++++++++++++++++++++++++++++++++++++++++-- + 3 files changed, 60 insertions(+), 5 deletions(-) + +commit 8ab797c5b86c33eab6ee024471fd3c147325d26a +Author: Khaled Hosny +Date: Tue Dec 29 17:42:16 2015 +0400 + + [docs] A bit more buffers documentation + + docs/harfbuzz-sections.txt | 60 +++++++++++++++--------------- + src/hb-buffer.cc | 93 + +++++++++++++++++++++++++++++++--------------- + src/hb-buffer.h | 7 +++- + src/hb-common.cc | 43 +++++++++++++-------- + src/hb-common.h | 15 +++++--- + 5 files changed, 135 insertions(+), 83 deletions(-) + +commit f18d2226b62f20d29e6299c01ae8467c725ea971 +Author: Khaled Hosny +Date: Tue Dec 29 15:21:20 2015 +0400 + + [docs] Some documentation on buffers + + Some of it (create, reference, destroy) are adapted from Cairo docs. + + docs/harfbuzz-sections.txt | 55 +++++++------- + src/hb-buffer.cc | 174 + +++++++++++++++++++++++++++------------------ + 2 files changed, 132 insertions(+), 97 deletions(-) + +commit d7bf9d05c519a369a7b3a02e9ed5ecc05a20cd3e +Author: Khaled Hosny +Date: Tue Dec 29 02:23:24 2015 +0400 + + [docs] Fix comment syntax + + To lower the number of gtk-doc warnings. + + .travis.yml | 2 +- + src/hb-directwrite.cc | 4 ++-- + src/hb-ot-layout.cc | 14 ++++++++++++++ + src/hb-unicode.h | 16 ++++++++++++++++ + 4 files changed, 33 insertions(+), 3 deletions(-) + +commit 8b1224f0eece7a5b6846e206333e57ac4653a705 +Author: Nico Weber +Date: Mon Dec 28 21:31:28 2015 -0500 + + Remove unused `retry:` label. + + Fixes a -Wunused-label warning when building harfbuzz with clang + -Wall. + + src/hb-coretext.cc | 1 - + 1 file changed, 1 deletion(-) + +commit 1f5559293f9bb1b4e911f4bdecf276ff1f6ae01c +Author: Khaled Hosny +Date: Tue Dec 29 02:15:21 2015 +0400 + + [docs] Ignore the new HB_EXTERN decoration + + Otherwise, almost all API functions are not extracted. + + docs/Makefile.am | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 9d280cf49f25181f64c978752f926b79e7c3746a +Author: Khaled Hosny +Date: Sat Dec 26 06:45:51 2015 +0400 + + Fix previous commit + + .ci/deploy-docs.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b789199f107912cfce5e4a95d6152f9a1a7993f2 +Author: Khaled Hosny +Date: Sat Dec 26 06:35:08 2015 +0400 + + [travis] Build docs only on tagged revisions + + Lets see if it works… + + .ci/deploy-docs.sh | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit e5b90c08a4c1f475560209a5e47628f695606d89 +Author: Behdad Esfahbod +Date: Fri Dec 25 18:41:41 2015 +0100 + + [travis] Remove secure var + + I've set up a secure var for behdad/harfbuzz through Travis web + interface, no need + to set the var here. + + .ci/deploy-docs.sh | 2 +- + .travis.yml | 1 - + 2 files changed, 1 insertion(+), 2 deletions(-) + +commit e75c1ffdf548185ce1f1df7937f0d028e5e40efe +Merge: 6173c2a d25317f +Author: Behdad Esfahbod +Date: Fri Dec 25 18:21:08 2015 +0100 + + Merge pull request #199 from behdad/travis-docs + + Deploy docs to gh-pages branch from Travis builds + +commit 6173c2a6fc6ea0bf812f7f398770b5342974f9bf +Author: Behdad Esfahbod +Date: Fri Dec 25 18:18:23 2015 +0100 + + Fix flaky test + + This test font had a upem of 769, which results in rounding-related + errors with + the FreeType font funcs. Change the upem to 1024 to fix that. + + Fixes https://github.com/behdad/harfbuzz/issues/201 + + ...> 1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf} | Bin 4064 -> + 4064 bytes + test/shaping/fonts/sha1sum/MANIFEST | 2 +- + test/shaping/tests/ligature-id.tests | 70 + ++++++++++----------- + 3 files changed, 36 insertions(+), 36 deletions(-) + +commit 3fcae6d82da389c9944386a8ab41eb1c13b99330 +Author: Behdad Esfahbod +Date: Fri Dec 25 18:18:02 2015 +0100 + + [tests] Add --reference, for re-recording tests + + test/shaping/run-tests.sh | 18 ++++++++++++++---- + 1 file changed, 14 insertions(+), 4 deletions(-) + +commit d25317f67f3c5c77f9059961935b0f35cbaa9ac4 +Author: Khaled Hosny +Date: Wed Dec 23 01:29:48 2015 +0400 + + Move more docs from FreeDesktop page + + docs/Makefile.am | 1 + + docs/harfbuzz-docs.xml | 15 ++++---- + docs/usermanual-install-harfbuzz.xml | 70 + ++++++++++++++++++++++++++++++++++++ + 3 files changed, 80 insertions(+), 6 deletions(-) + +commit 493a92220844c8996be67c8a7a2c5447942fe2c1 +Author: Khaled Hosny +Date: Wed Dec 23 00:33:41 2015 +0400 + + Rename user manual files + + Use chapter ids instead of numbers, so that we can reorder them, + introduce new ones etc. without the numbers becoming out of date. + + docs/Makefile.am | 12 + ++++++------ + docs/harfbuzz-docs.xml | 12 + ++++++------ + ... => usermanual-buffers-language-script-and-direction.xml} | 0 + docs/{usermanual-ch04.xml => usermanual-fonts-and-faces.xml} | 0 + ...{usermanual-ch06.xml => usermanual-glyph-information.xml} | 0 + docs/{usermanual-ch02.xml => usermanual-hello-harfbuzz.xml} | 0 + ...{usermanual-ch05.xml => usermanual-opentype-features.xml} | 0 + .../{usermanual-ch01.xml => usermanual-what-is-harfbuzz.xml} | 0 + 8 files changed, 12 insertions(+), 12 deletions(-) + +commit 4dc2265918089ee08c6d82eed0cfd41e02d7d231 +Author: Khaled Hosny +Date: Wed Dec 23 00:26:20 2015 +0400 + + Intro from freedesktop.org/wiki/Software/HarfBuzz/ + + docs/HarfBuzz.png | Bin 0 -> 3419 bytes + docs/Makefile.am | 3 ++- + docs/harfbuzz-docs.xml | 31 ++++++++++++++++++++++++++++++- + 3 files changed, 32 insertions(+), 2 deletions(-) + +commit 22b07782ced6503a0bf33f2fe157b70540238f6d +Author: Khaled Hosny +Date: Mon Dec 14 23:33:51 2015 +0400 + + Deploy docs to gh-pages branch from Travis builds + + Build docs in Travis and push them to the gh-pages branch, which makes + them available at http://behdad.github.io/harfbuzz/ + + .ci/deploy-docs.sh | 25 +++++++++++++++++++++++++ + .travis.yml | 4 ++++ + 2 files changed, 29 insertions(+) + +commit fc38e6034c76d5450f5398d667184bc3696efcc4 +Author: Behdad Esfahbod +Date: Wed Dec 23 14:50:53 2015 +0100 + + [layout] Collect coverage glyphs in PairPos + + Apparently class=0 is used for ClassDef1. See: + https://github.com/adobe-type-tools/afdko/issues/90 + + src/hb-ot-layout-gpos-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8718dae818b22c3933c33bdfc8a7413ef4c3110a +Author: Behdad Esfahbod +Date: Fri Dec 18 19:53:40 2015 +0000 + + [python] Hook up sample debugger + + src/sample.py | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 0475ef2f97e3035a2eea9a0f96031331e07e8e29 +Author: Behdad Esfahbod +Date: Fri Dec 18 18:17:07 2015 +0000 + + [buffer] Add debugging, aka, message, API + + Currently just announces lookup applications. Message-API *will* + change. + hb-shape / hb-view are updated to print-out messages to stder + if --debug + is specified. + + src/hb-buffer-private.hh | 18 ++++++++++++++++++ + src/hb-buffer.cc | 44 + ++++++++++++++++++++++++++++++++++++++++++++ + src/hb-buffer.h | 15 +++++++++++++++ + src/hb-ot-layout.cc | 12 ++---------- + util/main-font-text.hh | 18 ++++++++++++++++++ + 5 files changed, 97 insertions(+), 10 deletions(-) + +commit 9ea0aa43ac5cf243b698aae0ec80241b5efd7488 +Author: Behdad Esfahbod +Date: Fri Dec 18 17:30:18 2015 +0000 + + Don't deserialize positions if buffer has no positions + + src/hb-buffer-serialize.cc | 3 +++ + src/hb-ot-layout.cc | 2 -- + 2 files changed, 3 insertions(+), 2 deletions(-) + +commit 862b1644e9469a7e70555141f53729409d50d0d2 +Author: Behdad Esfahbod +Date: Fri Dec 18 13:54:06 2015 +0000 + + [use] Only set syllable-based topographical features if not + Arabic-joining + + src/hb-ot-shape-complex-use.cc | 3 +++ + 1 file changed, 3 insertions(+) + +commit 45b7ec365225109eb0854e6c417f48860b5f24af +Author: Behdad Esfahbod +Date: Fri Dec 18 13:47:16 2015 +0000 + + [indic] Followup fix for Malayalam context matching + + We regeressed Malayalam in 508cc3d3cfcfb0383df0fe795cc28db4e0fd5729 + This brings down the failures to 198 (from 750). + + BENGALI: 353725 out of 354188 tests passed. 463 failed (0.130722%) + DEVANAGARI: 707307 out of 707394 tests passed. 87 failed (0.0122987%) + GUJARATI: 366349 out of 366457 tests passed. 108 failed (0.0294714%) + GURMUKHI: 60732 out of 60747 tests passed. 15 failed (0.0246926%) + KANNADA: 951190 out of 951913 tests passed. 723 failed (0.0759523%) + KHMER: 299070 out of 299124 tests passed. 54 failed (0.0180527%) + MALAYALAM: 1048136 out of 1048334 tests passed. 198 failed + (0.0188871%) + ORIYA: 42320 out of 42329 tests passed. 9 failed (0.021262%) + SINHALA: 271662 out of 271847 tests passed. 185 failed (0.068053%) + TAMIL: 1091753 out of 1091754 tests passed. 1 failed (9.15957e-05%) + TELUGU: 970555 out of 970573 tests passed. 18 failed (0.00185457%) + MYANMAR: 1123865 out of 1123883 tests passed. 18 failed (0.00160159%) + + src/hb-ot-shape-complex-indic.cc | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +commit 2813e3049a69d64e5395f68c52c4690e1d256d55 +Author: Behdad Esfahbod +Date: Fri Dec 18 11:05:11 2015 +0000 + + [indic] Update data tables to Unicode 8.0 + + Test stats remain unchanged, except for Malayalam, which we + investigate: + + BENGALI: 353725 out of 354188 tests passed. 463 failed (0.130722%) + DEVANAGARI: 707307 out of 707394 tests passed. 87 failed (0.0122987%) + GUJARATI: 366349 out of 366457 tests passed. 108 failed (0.0294714%) + GURMUKHI: 60732 out of 60747 tests passed. 15 failed (0.0246926%) + KANNADA: 951190 out of 951913 tests passed. 723 failed (0.0759523%) + KHMER: 299070 out of 299124 tests passed. 54 failed (0.0180527%) + MALAYALAM: 1047584 out of 1048334 tests passed. 750 failed + (0.0715421%) + ORIYA: 42320 out of 42329 tests passed. 9 failed (0.021262%) + SINHALA: 271662 out of 271847 tests passed. 185 failed (0.068053%) + TAMIL: 1091753 out of 1091754 tests passed. 1 failed (9.15957e-05%) + TELUGU: 970555 out of 970573 tests passed. 18 failed (0.00185457%) + + Myanmar, compared to Windows 10 mmrtext.ttf: + + MYANMAR: 1123865 out of 1123883 tests passed. 18 failed (0.00160159%) + + src/gen-indic-table.py | 1 + + src/hb-ot-shape-complex-indic-private.hh | 40 ++-- + src/hb-ot-shape-complex-indic-table.cc | 372 + ++++++++++++++++++------------- + src/hb-ot-shape-complex-indic.cc | 23 +- + src/hb-ot-shape-complex-myanmar.cc | 4 + + 5 files changed, 244 insertions(+), 196 deletions(-) + +commit fc06cff40f136440f6402d0a5e735e2a4a3c062a +Author: Behdad Esfahbod +Date: Thu Dec 17 17:47:35 2015 +0000 + + Remove HB_OT_SHAPE_ZERO_WIDTH_MARKS_DEFAULT + + The DEFAULT naming wasn't helpful, so just remove it. + + src/hb-ot-shape-complex-default.cc | 2 +- + src/hb-ot-shape-complex-private.hh | 4 +--- + src/hb-ot-shape-complex-thai.cc | 2 +- + src/hb-ot-shape-complex-tibetan.cc | 2 +- + 4 files changed, 4 insertions(+), 6 deletions(-) + +commit 508cc3d3cfcfb0383df0fe795cc28db4e0fd5729 +Author: Behdad Esfahbod +Date: Thu Dec 17 17:31:17 2015 +0000 + + [indic] Allow context when matching for Malayalam new-spec + + Test sequence: + U+0995,U+09CD,U+09B0 + + With Nirmala shipped on Windows 10, this failed to form the below + form. + Works now. + + Reported by Sairus. + + src/hb-ot-shape-complex-indic.cc | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +commit eaf1e93ef1ee19a3e72d781e8abbd7f1165c1618 +Author: Behdad Esfahbod +Date: Thu Dec 17 16:57:47 2015 +0000 + + [uniscribe] Handle E_NOT_SUFFICIENT_BUFFER as well as E_OUTOFMEMORY + + On Windows 10 we are seeing that other error message... + + Test sequence: U+0995,U+-9CD,U+09B0 + With Nirmala shipped on Windows 10, this failed to form the below + form. + Works now. + + Reported by Sairus. + + src/hb-uniscribe.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 21e5d7edc4f28157254ef29a8ac247f3a572f6a6 +Author: Behdad Esfahbod +Date: Thu Dec 17 16:28:38 2015 +0000 + + [util] Use O_BINARY instead of _O_BINARY + + The latter doesn't seem to be available in Cygwin. I'm surprised it + compiled before... + + util/options.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 100fbeaf196515774c985ee839d0fa0695f9a6fa +Author: Behdad Esfahbod +Date: Thu Dec 17 15:23:09 2015 +0000 + + Fix ligature component of a mark happening after a ligature within + a ligature! + + Say, if we are ligating "A B_C m D", then previously 'm' was being + attached to 'B' in the combined A_B_C_D ligature. Now we attach it + to 'C'. No test for this though :(. + + src/hb-ot-layout-gsubgpos-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2f02fc79a5018e3348fccf366c470803554e1e58 +Author: Behdad Esfahbod +Date: Thu Dec 17 15:21:14 2015 +0000 + + Improve ligature-component handling + + We use three bits for lig_id these days, so we finally got a report of + two separate ligatures with the same lig_id happening adjacent to each + other, and then the component-handling code was breaking things. + Protect against that by ignoring same-lig-id but lig-comp=0 glyphs + after + a new ligature. + + Fixes https://github.com/behdad/harfbuzz/issues/198 + + src/hb-ot-layout-gsubgpos-private.hh | 12 +++++-- + test/shaping/Makefile.am | 1 + + test/shaping/fonts/sha1sum/MANIFEST | 1 + + .../c78d1f25ea1df1210414f2fe2e0e1e53082bba76.ttf | Bin 0 -> 4064 bytes + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/ligature-id.tests | 35 + +++++++++++++++++++++ + 6 files changed, 47 insertions(+), 3 deletions(-) + +commit 2ab0de9fbd03231b647345b01e31b136e2e00978 +Author: Behdad Esfahbod +Date: Thu Dec 17 11:59:15 2015 +0000 + + [use] Fix halant detection + + Before, we were just checking the use_category(). This detects as + halant a ligature that had the halant as first glyph (as seen in + NotoSansBalinese.) Change that to use the is_ligated() glyph prop + bit. The font is forming this ligature in ccmp, which is before + the rphf / pref tests. So we need to make sure the "ligated" bit + survives those tests. Since those only check the "substituted" bit, + we now only clear that bit for them and "ligated" survives. + + Fixes https://github.com/behdad/harfbuzz/issues/180 + + src/hb-ot-layout-private.hh | 6 ++---- + src/hb-ot-shape-complex-use.cc | 19 + ++++++++++++------- + test/shaping/Makefile.am | 1 + + test/shaping/fonts/sha1sum/MANIFEST | 1 + + .../fbb6c84c9e1fe0c39e152fbe845e51fd81f6748e.ttf | Bin 0 -> + 2616 bytes + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/use.tests | 1 + + 7 files changed, 18 insertions(+), 11 deletions(-) + +commit 86bcbd65b0d98357fb3d67a2f4f2a704ace55e10 +Author: Behdad Esfahbod +Date: Thu Dec 17 11:04:33 2015 +0000 + + [arabic] Use glyph advance width in apply_stch() instead of extents + + That seems to be what Windows is doing, and makes more sense. + + src/hb-ot-shape-complex-arabic.cc | 24 +++++++----------------- + 1 file changed, 7 insertions(+), 17 deletions(-) + +commit f11c11a1f123ef245e59ba892230db14170a8e5a +Author: Behdad Esfahbod +Date: Wed Dec 16 17:08:36 2015 +0100 + + Fix Since: tags for new API + + https://github.com/behdad/harfbuzz/commit/e1d4d0f1dbd8518b5672245c05d73f22a9ed03ea#commitcomment-15006653 + + src/hb-font.cc | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 15f2c055c17c54b0a6ae6eef50dcda13c58cda75 +Merge: 49e7263 a13b023 +Author: Behdad Esfahbod +Date: Mon Dec 14 14:19:03 2015 +0100 + + Merge pull request #196 from srl295/aix + + AIX fixes + +commit a13b023dbfd0532e8cd74c356fbbd4453d0ffaa0 +Author: Steven R. Loomis +Date: Fri Dec 11 10:21:27 2015 -0800 + + AIX fixes + + - use '-w' instead of '\<...\>' for check-header-guards + grep manpage says these are the same + + - put '-q' first in the grep options + + - move VAR into hb-private.hh + + - hb-font-private.hh - use [VAR] instead of [] for variable array + + src/check-header-guards.sh | 5 ++--- + src/hb-font-private.hh | 2 +- + src/hb-open-type-private.hh | 3 --- + src/hb-private.hh | 2 ++ + 4 files changed, 5 insertions(+), 7 deletions(-) + +commit 49e72634af74a9fbad01f42f48e104218413acc0 +Author: Behdad Esfahbod +Date: Thu Dec 10 17:44:19 2015 +0100 + + Limit use of AIX intrinsics to IBM's compiler + + src/hb-atomic-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e1d4d0f1dbd8518b5672245c05d73f22a9ed03ea +Merge: 70b33ed 808d3fc +Author: Behdad Esfahbod +Date: Thu Dec 10 16:56:07 2015 +0100 + + Merge branch 'font-extents' + + Fixes https://github.com/behdad/harfbuzz/pull/165 + +commit 808d3fc0eadd379909f2a0308fd3db474f1efde8 +Author: Behdad Esfahbod +Date: Thu Dec 10 16:55:16 2015 +0100 + + [util] Port hb-view to use font metrics from HarfBuzz instead of cairo + + util/helper-cairo.cc | 4 +++- + util/view-cairo.cc | 24 ++++++++++++------------ + 2 files changed, 15 insertions(+), 13 deletions(-) + +commit 31fa3892947138c7950303ea3719bb5ceb813625 +Author: Behdad Esfahbod +Date: Thu Dec 10 16:38:29 2015 +0100 + + [ft] Use ftface->size->metrics for font extent info + + src/hb-ft.cc | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 3ad16048fdd841f31f1cb98d7ff9ea1871841146 +Author: Behdad Esfahbod +Date: Thu Dec 10 16:37:49 2015 +0100 + + [ot-font] Respect OS/2 fsSelection USE_TYPO_METRICS bit + + src/hb-ot-font.cc | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +commit 70b33edae7c8b9c031b83c95f00cb383789f1041 +Author: Behdad Esfahbod +Date: Thu Dec 10 15:54:42 2015 +0100 + + Add atomic ops for AIX + + Patch from Volker Simonis. + + src/hb-atomic-private.hh | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +commit 98460779bae19e4d64d29461ff154b3527bf8420 +Author: Behdad Esfahbod +Date: Mon Dec 7 21:38:47 2015 +0100 + + Remove final pause from Arabic shaper + + Back in the old days, we used to apply 'calt' and 'cswh' in Arabic + shaper, + with a pause in between. Then we disabled the 'cswh' because + Microsoft + disabled it, but forgot to remove the unnecessary pause. Do that now. + + This has the benefit that it fixes shaping with monbaiti from + Windows 10. + In that version of that font, the lookups from 'calt' are duplicated + in + 'rclt', and Mongolian was changed to go through Universal Shaping + Engine. + We still use the Arabic shaper for Mongolian. With a pause after + 'calt', + we were applying the duplicate lookups from 'calt' and 'rclt' twice. + It + happened to be the case that these lookups were NOT idempotent. So we + were getting wrong shaping. See thread "Windows 10 monbaiti.ttf + upgrade + (5.01 -> 5.51) caused loss of diacritical marks when shaped with + harfbuz" + on the mailing list. This fixes that. + + src/hb-ot-shape-complex-arabic.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit dee0fbf9e2eac8b61730efc4978bc10c552b5227 +Merge: 255df68 a7ffe35 +Author: Behdad Esfahbod +Date: Mon Dec 7 10:44:08 2015 +0100 + + Merge pull request #192 from behdad/jfkthame-stch + + [issue 191] Make apply_stch() give a more precise fit + +commit 255df6801201fb22402420f7b7b7ea8b042df8ba +Author: Behdad Esfahbod +Date: Mon Dec 7 10:34:47 2015 +0100 + + Fix undefined behavior in cmp function + + Fixes https://bugs.freedesktop.org/show_bug.cgi?id=93274 + + src/hb-ot-map-private.hh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit fcf9e61bad13c828b5482f26491c82db65d91c96 +Author: Behdad Esfahbod +Date: Mon Dec 7 10:30:43 2015 +0100 + + Fix sorting order of ot_languages array + + Looks like the original sort was wrongly done. + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=93275 + + src/hb-ot-tag.cc | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +commit 70952ddb5a29c5bcbb4b6c3a05a428496033234a +Author: Behdad Esfahbod +Date: Mon Dec 7 10:28:46 2015 +0100 + + Add test to make sure ot-languages array is sorted + + Currently fails. Part of + https://bugs.freedesktop.org/show_bug.cgi?id=93275 + + src/Makefile.am | 9 ++++++++- + src/hb-ot-tag.cc | 23 +++++++++++++++++++++++ + 2 files changed, 31 insertions(+), 1 deletion(-) + +commit 8c37556f730d7e961394075cd863f624af4c53c4 +Merge: 8e5f902 f35b3e9 +Author: Behdad Esfahbod +Date: Mon Dec 7 09:34:58 2015 +0100 + + Merge pull request #134 from ebraminio/dwrite + + Add working but less prefect DirectWrite backend + +commit a7ffe3535836032dba5559080dffeec79473197b +Author: jfkthame +Date: Sat Dec 5 17:47:37 2015 +0000 + + Make apply_stch() give a more precise fit + + This aims to make Syriac Abbr Mark sizing more accurate when repeating + segments are used, by adding an extra repeat and tightening up the + spacing slightly rather than leaving a shortfall corresponding to + a partial repeat-width. + + src/hb-ot-shape-complex-arabic.cc | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +commit 8e5f902656d2882d24c30e8b26ddbd3963baa55c +Author: Behdad Esfahbod +Date: Mon Nov 30 16:53:21 2015 -0800 + + src/test.cc: wrong field printed + + Fixes https://github.com/behdad/harfbuzz/issues/188 + Fixes https://bugs.freedesktop.org/show_bug.cgi?id=93182 + + src/test.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6f2e6de1fae0ab2269b472a750788817de6c2a6e +Author: Simon Cozens +Date: Mon Oct 26 16:23:22 2015 +0900 + + Get font ascender and descender metrics from OS/2 table. + + src/hb-font-private.hh | 39 ++++++++++++++++++- + src/hb-font.cc | 102 + ++++++++++++++++++++++++++++++++++++++++++++++++- + src/hb-font.h | 62 ++++++++++++++++++++++++++++-- + src/hb-ft.cc | 21 ++++++++++ + src/hb-ot-font.cc | 58 ++++++++++++++++++++++++++-- + 5 files changed, 274 insertions(+), 8 deletions(-) + +commit 097c998a0c7b250924801bb69f5fa0c529edd183 +Author: Simon Cozens +Date: Mon Oct 26 16:22:38 2015 +0900 + + Parse the OS/2 table. + + src/Makefile.am | 1 + + src/hb-ot-os2-table.hh | 105 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 106 insertions(+) + +commit d44d52bd0da033865641dfd39d94852119fd4fd7 +Author: Behdad Esfahbod +Date: Thu Nov 26 19:35:43 2015 -0500 + + 1.1.2 + + NEWS | 15 +++++++++++++++ + configure.ac | 2 +- + 2 files changed, 16 insertions(+), 1 deletion(-) + +commit 35d18585fc57750d817f57bfffe569069f9803b5 +Author: Behdad Esfahbod +Date: Thu Nov 26 19:30:37 2015 -0500 + + Fix a few docs blocks + + src/hb-buffer.cc | 4 ++++ + src/hb-glib.cc | 2 ++ + src/hb-ot-font.cc | 2 ++ + src/hb-ot-layout.cc | 6 ++++++ + src/hb-ot-shape.cc | 4 ++++ + 5 files changed, 18 insertions(+) + +commit 0e38c918b66df31978d8fd3d8271a9b781384545 +Author: Behdad Esfahbod +Date: Thu Nov 26 19:26:26 2015 -0500 + + [introspection] Make scanner happy with HB_EXTERN + + src/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit ea512f71084296be3bd893f78650def894066de0 +Author: Behdad Esfahbod +Date: Thu Nov 26 19:22:22 2015 -0500 + + Use C-style casts instead of compare to 0, to convert hb_bool_t + to bool + + src/hb-common.cc | 2 +- + src/hb-fallback-shape.cc | 2 +- + src/hb-font-private.hh | 2 +- + src/hb-ot-layout.cc | 2 +- + src/hb-ot-map.cc | 2 +- + src/hb-ot-shape-complex-hangul.cc | 2 +- + src/hb-ot-shape-complex-hebrew.cc | 2 +- + src/hb-ot-shape-complex-indic.cc | 4 ++-- + src/hb-ot-shape-normalize.cc | 6 +++--- + src/hb-ot-shape.cc | 2 +- + 10 files changed, 13 insertions(+), 13 deletions(-) + +commit 67a36a725e2a61a096ba0324f359d17f9b02d312 +Author: Behdad Esfahbod +Date: Thu Nov 26 18:48:42 2015 -0500 + + Fix vertical GPOS + + This was brorken earlier, though, it's really hard to notice it. + Unlike the glyph_h_origin(), an unset glyph_v_origin() does NOT + mean that the vertical origin is at 0,0. + + Related to https://github.com/behdad/harfbuzz/issues/187 + + src/hb-ot-shape.cc | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +commit 1c6a057dd1a52511474630896a597bf8e5215214 +Author: Behdad Esfahbod +Date: Thu Nov 26 18:48:30 2015 -0500 + + Add tests for previous commit + + test/shaping/Makefile.am | 1 + + .../sha1sum/49c9f7485c1392fa09a1b801bc2ffea79275f22e.ttf | Bin 0 -> + 1496 bytes + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/simple.tests | 2 ++ + 5 files changed, 5 insertions(+) + +commit c41c145c7386ebe72b1cfb0475d836a689fecc5e +Author: Behdad Esfahbod +Date: Thu Nov 26 18:43:15 2015 -0500 + + Make nil glyph_h_origin() function return true + + Fixes https://github.com/behdad/harfbuzz/issues/187 + + Funcs implementations that have a non-zero horizontal origin must + implement the glyph_h_origin() callback, nothing new here. + + Other implementations (all I know of!) can simply not set + glyph_h_origin() now. I did that for hb-ot and hb-ft in + 44f82750807475aa5b16099ccccd917d488df703, though that broke the + fallback shaper because the default was returning false... + + src/hb-font.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 766963adba6770dcd45de4417481ed8eda60a716 +Merge: b344af8 f798b8e +Author: Behdad Esfahbod +Date: Tue Nov 24 15:38:43 2015 -0600 + + Merge pull request #114 from ThePhD/vc++-fixes + + Fix all VC++ warnings and errors + +commit b344af80ca95b9eddfd6017aa6ae103388d6b5f8 +Merge: 662acd2 835bbdc +Author: Behdad Esfahbod +Date: Tue Nov 24 15:30:27 2015 -0600 + + Merge pull request #177 from fanc999/exporting + + Enable use of compiler directives to export symbols + +commit 662acd26d10c38e96a9afcdaab2cb2979794966f +Merge: b24e93e 1979f6f +Author: Behdad Esfahbod +Date: Tue Nov 24 15:29:44 2015 -0600 + + Merge pull request #181 from mhosken/master + + Fix y_scale problems in hb-gr + +commit b24e93e3a4d98111c4684fa08e9080b471881d5c +Author: Behdad Esfahbod +Date: Tue Nov 24 13:18:20 2015 -0600 + + 1.1.1 + + NEWS | 7 +++++++ + configure.ac | 2 +- + 2 files changed, 8 insertions(+), 1 deletion(-) + +commit 233944ac91bb81250c0e63150eecfedfaf09f590 +Merge: 5a24b1d d538201 +Author: Khaled Hosny +Date: Tue Nov 24 18:37:35 2015 +0400 + + Merge pull request #185 from khaledhosny/travis-osx + + [travis] Enable Mac OS X support + +commit d538201918e6932ef7645f8d5b2c3491954936f8 +Author: Khaled Hosny +Date: Tue Nov 24 12:46:35 2015 +0400 + + [travis] Enable Mac OS X support + + Fixes https://github.com/behdad/harfbuzz/issues/182 + + .travis.yml | 22 ++++++++++++++++------ + 1 file changed, 16 insertions(+), 6 deletions(-) + +commit 5a24b1d25c59865e298bf105f54503e79587265c +Author: Behdad Esfahbod +Date: Mon Nov 23 16:46:14 2015 -0600 + + [travis] Remove coverity scan + + I never could get it to work, and it's a proprietary platform. + + .travis.yml | 11 ----------- + README | 1 - + 2 files changed, 12 deletions(-) + +commit 1979f6fedca82fa1e4f65491de491db1aa6dc645 +Author: Martin Hosken +Date: Mon Nov 23 10:03:56 2015 +0700 + + Fix y_scale problems in hb-gr + + src/hb-graphite2.cc | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +commit 835bbdc7c92bd774ff92c42a9277ded72066d29d +Author: Chun-wei Fan +Date: Thu Nov 19 18:34:12 2015 +0800 + + Public headers: Decorate public symbols with HB_EXTERN + + This prepares the headers for exporting symbols using visibility + attributes or __declspec(dllexport), so that we do not need to + maintain + symbols listing files, as this is what was and is done in GLib + and GTK+. + + src/hb-blob.h | 24 +++++----- + src/hb-buffer.h | 100 +++++++++++++++++++------------------- + src/hb-common.h | 22 ++++----- + src/hb-coretext.h | 6 +-- + src/hb-face.h | 34 ++++++------- + src/hb-font.h | 114 + ++++++++++++++++++++++---------------------- + src/hb-ft.h | 18 +++---- + src/hb-glib.h | 8 ++-- + src/hb-gobject-enums.h.tmpl | 2 +- + src/hb-gobject-structs.h | 26 +++++----- + src/hb-graphite2.h | 4 +- + src/hb-icu.h | 6 +-- + src/hb-ot-font.h | 2 +- + src/hb-ot-layout.h | 56 +++++++++++----------- + src/hb-ot-shape.h | 4 +- + src/hb-ot-tag.h | 8 ++-- + src/hb-set.h | 52 ++++++++++---------- + src/hb-shape-plan.h | 18 +++---- + src/hb-shape.h | 10 ++-- + src/hb-unicode.h | 52 ++++++++++---------- + src/hb-uniscribe.h | 4 +- + src/hb-version.h.in | 6 +-- + src/hb.h | 4 ++ + 23 files changed, 292 insertions(+), 288 deletions(-) + +commit f798b8e2d683a1b89b6905b1a8615375b847b468 +Author: ThePhD +Date: Sat Nov 21 16:57:26 2015 -0500 + + c-style cast + + src/hb-ot-shape-complex-use.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a6991813659376a6a11c00a9f67d85b4f7ba9b5d +Merge: 1dc32ea f19c6db +Author: Behdad Esfahbod +Date: Fri Nov 20 13:28:42 2015 -0800 + + Merge pull request #176 from behdad/missing-braces + + Add braces for subobject initializer in _hb_font_funcs_nil + +commit 1dc32ea4d2f294f9d1ae1c8fd19fb75f9278223b +Author: Behdad Esfahbod +Date: Fri Nov 20 13:24:19 2015 -0800 + + Whitespace + + src/hb-private.hh | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +commit f94c0ecbb1488138d3ec3b9d6d9fb78113dfee4f +Author: Behdad Esfahbod +Date: Fri Nov 20 13:21:29 2015 -0800 + + Define HB_MARK_AS_FLAG_T as a macro instead of using templates + + The generic template operator overloading was causing more problems + than it + solved. Eg: + + https://github.com/behdad/harfbuzz/pull/163 + https://github.com/behdad/harfbuzz/issues/175 + + So, just use macros. + + Fixes https://github.com/behdad/harfbuzz/issues/175 + Fixes https://github.com/behdad/harfbuzz/pull/178 + + src/hb-private.hh | 27 +++++++++++---------------- + 1 file changed, 11 insertions(+), 16 deletions(-) + +commit f19c6db18e2e2dd0e9a406fc7e8533049fab48b0 +Author: jfkthame +Date: Fri Nov 20 08:43:49 2015 +0000 + + Add braces for subobject initializer in _hb_font_funcs_nil + + To avoid triggering -Wmissing-braces; see + https://bugzilla.mozilla.org/show_bug.cgi?id=1226175#c8 + + src/hb-font.cc | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit 9cc1ed4fa68075b3b142a2737438109772dd0002 +Author: Behdad Esfahbod +Date: Thu Nov 19 12:39:09 2015 -0800 + + Do not allow recursiving to same position and same lookup + + This is just to make it harder to be extremely slow. There definitely + are ways still, just harder. Oh well... how do we tame this problem + without solving halting problem?! + + Fixes https://github.com/behdad/harfbuzz/issues/174 + + src/hb-ot-layout-gsubgpos-private.hh | 5 +++++ + test/shaping/fonts/sha1sum/MANIFEST | 1 + + .../sha1sum/fab39d60d758cb586db5a504f218442cd1395725.ttf | Bin 0 -> + 1894 bytes + test/shaping/tests/fuzzed.tests | 1 + + 4 files changed, 7 insertions(+) + +commit 7d75eee799bbb5ee7eef2651cf7b7d3aee6f09b0 +Author: Behdad Esfahbod +Date: Thu Nov 19 12:03:04 2015 -0800 + + [fuzzing] Run fuzzing tests using hb-fuzzer as well + + test/fuzzing/Makefile.am | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 13188cba7f0eaacd587beeb1c2258526ae24c438 +Author: Behdad Esfahbod +Date: Thu Nov 19 11:59:03 2015 -0800 + + Revert "Fix hang in OOM situations" + + This reverts commit f0599db761d7fc2d585d86e757a797f75ebc7499. + + Commit abadc1717d997b69f987fdf1be9e12156d2d13d6 provides a better + fix for this. + + src/hb-buffer-private.hh | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +commit 18e1c6b6ef7c85a1b02e3dae86280d8ed6b65118 +Author: Behdad Esfahbod +Date: Thu Nov 19 11:50:58 2015 -0800 + + Revert "Make sure we make progress in OOM situations" + + This reverts commit 68b507a3c3c62c28c38e13fee733702bb703b6ca. + + Commit abadc1717d997b69f987fdf1be9e12156d2d13d6 provides a better + fix for this. + + src/hb-buffer-private.hh | 7 +++++-- + src/hb-buffer.cc | 31 ++++++++----------------------- + 2 files changed, 13 insertions(+), 25 deletions(-) + +commit e1118aeac3b5556df0ce502732df8ac92bdac45a +Author: Behdad Esfahbod +Date: Wed Nov 18 23:40:47 2015 -0800 + + 1.1.0 + + NEWS | 22 ++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 23 insertions(+), 1 deletion(-) + +commit 63fe05c8b1cd4f08b525028409e1299f34750810 +Author: Behdad Esfahbod +Date: Wed Nov 18 23:52:34 2015 -0800 + + Fix make distcheck + + src/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 9b087dec7753ad96d256ce1b9ae347bd8d697c75 +Author: Behdad Esfahbod +Date: Wed Nov 18 23:23:35 2015 -0800 + + [travis] Only coverity-scan the coverity_scan branch + + This essentially disables coverity-scan right now, until we find + a pattern to continuously submit branches there. + + For background reasoning, see: + Fixes https://github.com/behdad/harfbuzz/issues/171 + + .travis.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 85062e3b4655ec6d5c3cf5344ce22cd88c21a2aa +Author: Behdad Esfahbod +Date: Wed Nov 18 23:09:13 2015 -0800 + + Add tests for previous two commits + + To fully test what these are supposed to test, they should be run + against libharfbuzz-fuzzing.la instead of libharfbuzz.la, but for + now just record the files. + + .../sha1sum/43979b90b2dd929723cf4fe1715990bcb9c9a56b.ttf | Bin 0 -> + 1804 bytes + test/shaping/fonts/sha1sum/MANIFEST | 2 ++ + .../sha1sum/b9e2aaa0d75fcef6971ec3a96d806ba4a6b31fe2.ttf | Bin 0 -> + 1804 bytes + test/shaping/tests/fuzzed.tests | 2 ++ + 4 files changed, 4 insertions(+) + +commit 37b40cd8a18e25d3324f829acec197f016f4a524 +Author: Behdad Esfahbod +Date: Wed Nov 18 23:04:45 2015 -0800 + + Fix another move_to assertion failure + + If buf->idx is at end, don't set end past it... + + Fixes https://github.com/behdad/harfbuzz/issues/173 + + src/hb-ot-layout-gsubgpos-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit abadc1717d997b69f987fdf1be9e12156d2d13d6 +Author: Behdad Esfahbod +Date: Wed Nov 18 17:52:08 2015 -0800 + + Try to better handle OOM situations + + Fixes assert fail in https://github.com/behdad/harfbuzz/issues/161 + with libharfbuzz-fuzzing. + + src/hb-ot-layout-gsubgpos-private.hh | 2 +- + src/hb-ot-layout.cc | 2 +- + src/hb-ot-shape-complex-hangul.cc | 2 +- + src/hb-ot-shape-complex-indic.cc | 2 +- + src/hb-ot-shape-complex-thai.cc | 2 +- + src/hb-ot-shape-complex-use.cc | 8 +------- + src/hb-ot-shape-normalize.cc | 10 +++++----- + src/hb-ot-shape.cc | 2 +- + 8 files changed, 12 insertions(+), 18 deletions(-) + +commit ec625f7dfb5f6df19d35d81af6605d05e08321f2 +Author: Behdad Esfahbod +Date: Wed Nov 18 16:37:59 2015 -0800 + + Try to fix gnome-continuous build fail + + test/fuzzing/Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +commit ff16ef3379e06afe44b5e78b8893aeae0cee2b5b +Author: Behdad Esfahbod +Date: Wed Nov 18 16:27:32 2015 -0800 + + Enable building a bounded version of the library for fuzzing + + test/fuzzing/hb-fuzzer links against libharfbuzz-fuzzing.so now. + + src/Makefile.am | 16 ++++++++++++++++ + test/fuzzing/Makefile.am | 9 ++------- + test/fuzzing/README | 6 ++---- + 3 files changed, 20 insertions(+), 11 deletions(-) + +commit e0082ae60dbd87d433f3b2b9d2bfa64b9a4c3663 +Author: Behdad Esfahbod +Date: Tue Nov 17 18:42:13 2015 -0800 + + Move things around + + src/hb-private.hh | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +commit dde8cc87bd880bd35baf764820f4c85bd0a58696 +Merge: e97835a 167c327 +Author: Behdad Esfahbod +Date: Tue Nov 17 18:40:10 2015 -0800 + + Merge pull request #163 from fanc999/msvc.src + + Update the sources so they will compile under Visual Studio + +commit 167c3271778cd1a8c4433b9d2230901ce17c099e +Author: Chun-wei Fan +Date: Mon Nov 9 17:17:56 2015 +0800 + + Fix build on MSVC >= 2012 + + Use the DEFINE_ENUM_FLAG_OPERATORS macro in winnt.h on Visual Studio, + which defines the bitwise operators for the enumerations that we + want to + mark as hb_mark_as_flags_t, which will take care of the situation + on newer + Visual Studio (>= 2012), where the build breaks with C2057 errors + as the + underlying types of the enumerations is not clear to the compiler + when we + do a bitwise op within the declaration of the enumerations themselves. + + Also disable the C4200 (nonstandard extension used : zero-sized + array in + struct/union) and C4800 ('type' : forcing value to bool 'true' or + 'false' + (performance warning)) warnings as the C4200 is the intended + scenario and + C4800 is harmless but is so far an unavoidable side effect of using + DEFINE_ENUM_FLAG_OPERATORS. + + src/hb-buffer-private.hh | 6 +++--- + src/hb-ot-layout-common-private.hh | 2 +- + src/hb-ot-layout-private.hh | 4 ++-- + src/hb-ot-map-private.hh | 2 +- + src/hb-private.hh | 11 +++++++++++ + 5 files changed, 18 insertions(+), 7 deletions(-) + +commit 4d27bb87468a1b84387e7ce084e3d92c0fc8f065 +Author: Chun-wei Fan +Date: Fri Nov 6 14:28:30 2015 +0800 + + hb-ot-shape-complex-arabic.cc: Fix build on Visual Studio + + Visual Studio does not like declaring a enum variable within a for + statement, so fix the build by declaring the enum before doing the for + loop. + + src/hb-ot-shape-complex-arabic.cc | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit a49e7b7e40127beba25f39ef3c10d7a77e2bb0f0 +Author: Chun-wei Fan +Date: Tue Nov 3 18:49:34 2015 +0800 + + MSVC builds: Add fallback implementation for pre-2013 MSVC + + Pre-2013 MSVC does not have scalbn() and scalbnf(), which are used + in the + utility programs. Add fallback implementations for these, which + can be + used when necessary. + + util/options.hh | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +commit 998e8dda938cfef0146f1bfc4e8973a0e12d7d35 +Author: Chun-wei Fan +Date: Mon Nov 2 16:55:29 2015 +0800 + + util: Fix build on Visual Studio + + Use the fallback implementation for lround() only on pre-2013 Visual + Studio, and ensure we are clear about the types of the parameters for + lround() and scalbnf(), since Visual Studio can be quite picky on + ambiguous parameter types. Also, use g_ascii_strcasecmp() rather than + strcasecmp() as we are already using GLib for this code and we are + assured that g_ascii_strcasemp() is available. + + For scalbnf() on pre-2013 Visaul Studio, a fallback implementation is + needed, but use another forced-included header for those compilers, + which + will be added later. + + Also use (char)27 on Visual Studio builds as '\e' is not a recognized + escape sequence, which will do the same thing. + + util/ansi-print.cc | 16 +++++++++------- + util/helper-cairo.cc | 20 ++++++++++---------- + util/options.cc | 2 +- + 3 files changed, 20 insertions(+), 18 deletions(-) + +commit e97835ad43f5c68e8cb29599246cae0f4461d663 +Author: Behdad Esfahbod +Date: Tue Nov 10 11:37:01 2015 -0800 + + [util] Fix crash when --output-file is specified but not + --output-format + + util/options.hh | 3 +++ + 1 file changed, 3 insertions(+) + +commit d5f0d7c9fb14255388ab616f56e178cb7ca10ec2 +Merge: 04ff23e 529a933 +Author: Behdad Esfahbod +Date: Sat Nov 7 07:50:58 2015 -0800 + + Merge pull request #167 from KonstantinRitt/unicode_cp_opt + + Micro optimizations to UTF-16 and UTF-32 codecs + +commit 04ff23e73d847ab3a5da0e9fac4fbca19aefd284 +Author: Behdad Esfahbod +Date: Fri Nov 6 16:29:44 2015 -0800 + + [arabic] Improve stretch length calculation + + Err on the side of being too short, than too wide. Reduces chance + of overlaps with neighboring glyphs. + + src/hb-ot-shape-complex-arabic.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 59821ab8b413df3a444c38b80582a5137e364a70 +Author: Behdad Esfahbod +Date: Fri Nov 6 16:27:44 2015 -0800 + + [arabic] Don't stretch over cased letters + + Addresses + https://github.com/behdad/harfbuzz/commit/6e6f82b6f3dde0fc6c3c7d991d9ec6cfff57823d#commitcomment-14248516 + + src/hb-ot-shape-complex-arabic.cc | 24 + +++++++++++++++++++++- + src/hb-unicode-private.hh | 20 + ------------------ + .../script-syriac/misc/abbreviation-mark.txt | 4 ++-- + 3 files changed, 25 insertions(+), 23 deletions(-) + +commit 5337db29af39084d677a63154f404eca0c20cfeb +Author: Behdad Esfahbod +Date: Fri Nov 6 16:18:09 2015 -0800 + + Revert "Don't process lookups if buffer is in error" + + This reverts commit f92bd86cc8c11d262d1830c631cb7c63fc9d4bc8. + + We don't want to be like cairo, where as soon as there's an error, + nothing works anymore. So, lets process lookups as long as there's + no new memory needed. That's also a model that hides fewer bugs. + + src/hb-ot-layout.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 529a93312815dff3c2f37f880bf6ccb428bd3da0 +Author: Konstantin Ritt +Date: Sat Nov 7 02:00:04 2015 +0400 + + Micro optimization to hb_utf16_t and hb_utf32_t ::prev() + + Implement reverse lookup instead of re-using next() + + src/hb-utf-private.hh | 29 +++++++++++++++++++---------- + 1 file changed, 19 insertions(+), 10 deletions(-) + +commit 44ae9be7a29eebd6003cad2fdb90b40512a9c8eb +Author: Konstantin Ritt +Date: Sat Nov 7 01:58:38 2015 +0400 + + Nano optimization to hb_utf16_t and hb_utf32_t ::next() + + src/hb-utf-private.hh | 17 ++++++----------- + 1 file changed, 6 insertions(+), 11 deletions(-) + +commit a6d7668a954a763a053f8af8edbff4731aa43729 +Author: Behdad Esfahbod +Date: Fri Nov 6 09:46:54 2015 -0800 + + [fuzzing] Cap max buffer len at 128 + + test/fuzzing/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit f1c4adbcd3f6275e81e118ddadc9396f82daeccf +Author: Behdad Esfahbod +Date: Fri Nov 6 09:46:05 2015 -0800 + + Fix typo + + src/hb-buffer-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 68b507a3c3c62c28c38e13fee733702bb703b6ca +Author: Behdad Esfahbod +Date: Fri Nov 6 00:09:26 2015 -0800 + + Make sure we make progress in OOM situations + + src/hb-buffer-private.hh | 7 ++----- + src/hb-buffer.cc | 31 +++++++++++++++++++++++-------- + 2 files changed, 25 insertions(+), 13 deletions(-) + +commit 5a7eb5d4d862f402136044c19ead87ad098bd78f +Author: Behdad Esfahbod +Date: Fri Nov 6 00:01:24 2015 -0800 + + [fuzzing] Add test case for OOM + + From https://github.com/behdad/harfbuzz/issues/161 + + .../sha1sum/3511ff5c1647150595846ac414c595cccac34f18.ttf | Bin 0 -> + 1483 bytes + test/shaping/fonts/sha1sum/MANIFEST | 2 +- + test/shaping/tests/fuzzed.tests | 1 + + 3 files changed, 2 insertions(+), 1 deletion(-) + +commit f0599db761d7fc2d585d86e757a797f75ebc7499 +Author: Behdad Esfahbod +Date: Thu Nov 5 23:52:41 2015 -0800 + + Fix hang in OOM situations + + Fixes https://github.com/behdad/harfbuzz/issues/161 + + src/hb-buffer-private.hh | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit f92bd86cc8c11d262d1830c631cb7c63fc9d4bc8 +Author: Behdad Esfahbod +Date: Thu Nov 5 23:52:29 2015 -0800 + + Don't process lookups if buffer is in error + + src/hb-ot-layout.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4301703bddb63a01651a0d58474bb15ac0ebbcf6 +Author: Behdad Esfahbod +Date: Thu Nov 5 23:44:59 2015 -0800 + + Limit buffer max size growth + + https://github.com/behdad/harfbuzz/issues/161 + + src/hb-buffer-private.hh | 11 +++++++++++ + src/hb-buffer.cc | 8 ++++++++ + src/hb-ot-shape.cc | 6 ++++++ + test/fuzzing/Makefile.am | 2 ++ + 4 files changed, 27 insertions(+) + +commit 19300183a6f0bac0d23f7a994b40a51e9c90d6e1 +Author: Behdad Esfahbod +Date: Thu Nov 5 23:08:50 2015 -0800 + + [fuzzing] Add build system + + configure.ac | 1 + + test/Makefile.am | 2 +- + test/fuzzing/Makefile.am | 44 + ++++++++++++++++++++++++++++++++++++++++++++ + test/fuzzing/README | 2 ++ + test/fuzzing/hb-fuzzer.cc | 4 ++-- + 5 files changed, 50 insertions(+), 3 deletions(-) + +commit 9c9ad214af43685b00f6d8493b7807d6607d4e2d +Author: Behdad Esfahbod +Date: Thu Nov 5 22:50:52 2015 -0800 + + [fuzzer] Add README + + https://github.com/behdad/harfbuzz/issues/139#issuecomment-154202645 + + test/fuzzing/README | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +commit 6e6f82b6f3dde0fc6c3c7d991d9ec6cfff57823d +Author: Behdad Esfahbod +Date: Thu Nov 5 17:29:03 2015 -0800 + + Implement SYRIAC ABBREVIATION MARK with 'stch' feature + + The feature is enabled for any character in the Arabic shaper. + We should experiment with using it for Arabic subtending marks. + Though, that has a directionality problem as well, since those + are used with digits... + + Fixes https://github.com/behdad/harfbuzz/issues/141 + + src/hb-ot-shape-complex-arabic.cc | 219 + ++++++++++++++++++++- + src/hb-unicode-private.hh | 19 ++ + .../shaper-arabic/script-syriac/misc/MANIFEST | 1 + + .../script-syriac/misc/abbreviation-mark.txt | 11 ++ + 4 files changed, 244 insertions(+), 6 deletions(-) + +commit c743ec5886a1f6d57de26da33a770a8706be83d6 +Author: Behdad Esfahbod +Date: Thu Nov 5 17:33:57 2015 -0800 + + [ft] Fix extents with negative scales + + Fixes https://github.com/behdad/harfbuzz/issues/162 + + src/hb-ft.cc | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit 73fec3992acb492829bde1d885f1ebeed8dcc133 +Author: Behdad Esfahbod +Date: Thu Nov 5 15:22:18 2015 -0800 + + Reserve a few scratch-flags bits for complex shapers + + src/hb-buffer-private.hh | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 136863371c1402769426d892aef1b92f9ca1a25e +Author: Behdad Esfahbod +Date: Thu Nov 5 13:24:15 2015 -0800 + + Add new shaper method postprocess_glyphs() + + Unused currently. To be used for Syriac stretch implementation. + + https://github.com/behdad/harfbuzz/issues/141 + + src/hb-ot-shape-complex-arabic.cc | 3 ++- + src/hb-ot-shape-complex-default.cc | 1 + + src/hb-ot-shape-complex-hangul.cc | 7 ++++--- + src/hb-ot-shape-complex-hebrew.cc | 1 + + src/hb-ot-shape-complex-indic.cc | 1 + + src/hb-ot-shape-complex-myanmar.cc | 2 ++ + src/hb-ot-shape-complex-private.hh | 9 +++++++++ + src/hb-ot-shape-complex-thai.cc | 1 + + src/hb-ot-shape-complex-tibetan.cc | 1 + + src/hb-ot-shape-complex-use.cc | 1 + + src/hb-ot-shape.cc | 9 ++++++--- + 11 files changed, 29 insertions(+), 7 deletions(-) + +commit 6c0ebd02c99e7536975ba7194832a1f33abd7faf +Author: Behdad Esfahbod +Date: Thu Nov 5 11:37:48 2015 -0800 + + [util] If font has color, generate PNG with color + + util/helper-cairo.cc | 33 ++++++++++++++++++++++++++------- + util/helper-cairo.hh | 6 +++++- + util/view-cairo.cc | 7 ++++++- + 3 files changed, 37 insertions(+), 9 deletions(-) + +commit e95eb23a4ee920eab1e2f4eec9cf490bb431452c +Author: Behdad Esfahbod +Date: Wed Nov 4 22:55:11 2015 -0800 + + Don't try zeroing marks by GDEF if there are no non-ASCII + + This one is a hack, but should be ok. + + src/hb-ot-shape.cc | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 7fa54ed75aa30ae1d6ee9136ccb83b630c24fb65 +Author: Behdad Esfahbod +Date: Wed Nov 4 22:54:49 2015 -0800 + + Don't try zeroing mark attachments by Unicode if there's no non-ASCII + + src/hb-ot-shape.cc | 3 +++ + 1 file changed, 3 insertions(+) + +commit 550bd14d2b21ec2a2b509ff42f4df4341dbf2d46 +Author: Behdad Esfahbod +Date: Wed Nov 4 22:58:58 2015 -0800 + + Actually commit changes for previous commit + + src/hb-buffer-private.hh | 2 ++ + src/hb-ot-layout-gpos-table.hh | 15 ++++++++------- + 2 files changed, 10 insertions(+), 7 deletions(-) + +commit ff31b3c1b8a2a21b57dba37eb5bb5db0579e0640 +Author: Behdad Esfahbod +Date: Wed Nov 4 22:42:41 2015 -0800 + + Skip GPOS cursive / attachment adjustmnent if none happened + + I'm starting to really like how free these new scratch_flags are. + + src/hb-ot-layout-gpos-table.hh | 3 +++ + 1 file changed, 3 insertions(+) + +commit 0f407325f6923db11d332585e8250e3646cb74d6 +Author: Behdad Esfahbod +Date: Wed Nov 4 22:28:44 2015 -0800 + + Minor + + src/hb-ot-shape.cc | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 497a6c2071cd0638e4c6af07621d01335fd963a9 +Author: Behdad Esfahbod +Date: Wed Nov 4 22:24:19 2015 -0800 + + Skip forming clusters if text is all ASCII + + src/hb-ot-shape.cc | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 28de104f15b80df4b678267c4488b7d09a42720c +Author: Behdad Esfahbod +Date: Wed Nov 4 22:00:25 2015 -0800 + + Move variable-sized struct member to end + + Hopefully makes clang build happy + + src/hb-font-private.hh | 21 ++++++++++----------- + src/hb-font.cc | 20 ++++++++++++++++++++ + 2 files changed, 30 insertions(+), 11 deletions(-) + +commit 5bc28b5f688ee90d103d052e98bc15d6e0e7e0b1 +Author: Behdad Esfahbod +Date: Wed Nov 4 21:53:16 2015 -0800 + + Optimize positioning for when h_origin is nil + + src/hb-ot-shape.cc | 38 ++++++++++++++++++++------------------ + 1 file changed, 20 insertions(+), 18 deletions(-) + +commit 762770c964f9f0591bf4c44427f73ea3e1c51733 +Author: Behdad Esfahbod +Date: Wed Nov 4 21:42:55 2015 -0800 + + Add font->has_...() to check for individual nil font funcs + + Hopefully this wouldn't break any compiler. There was some magic + moments to getting this to compile... + + src/hb-font-private.hh | 19 +++++++++++++++++-- + src/hb-font.cc | 7 +++++++ + 2 files changed, 24 insertions(+), 2 deletions(-) + +commit 88e9a9bcae61421d9dd65715d25e5f20b2847c03 +Author: Behdad Esfahbod +Date: Wed Nov 4 21:16:26 2015 -0800 + + Minor reshaping of hb_font_funcs_t implementation + + In anticipation of further changes. No functional changes. + + src/hb-font-private.hh | 80 + ++++++++++++++++++++++++++------------------------ + src/hb-font.cc | 4 +-- + 2 files changed, 43 insertions(+), 41 deletions(-) + +commit a6a7715bac8b0c8f5473b84bc649c315ad4d2d51 +Author: Behdad Esfahbod +Date: Wed Nov 4 20:51:21 2015 -0800 + + Comments + + src/hb-font-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6c48ec830ffac00a920d047ed77acd1b05549074 +Author: Behdad Esfahbod +Date: Wed Nov 4 20:47:42 2015 -0800 + + [ot] Remove font funcs that do nothing + + src/hb-ot-font.cc | 95 + ++++--------------------------------------------------- + 1 file changed, 7 insertions(+), 88 deletions(-) + +commit 75ea2daa1d9bbe235cd4a8570efb1913d58c3c62 +Author: Behdad Esfahbod +Date: Wed Nov 4 20:43:59 2015 -0800 + + [ot] Port ot font funcs to allocated object + + src/hb-ot-font.cc | 47 ++++++++++++++++++++++++++++++++++++++--------- + 1 file changed, 38 insertions(+), 9 deletions(-) + +commit 44f82750807475aa5b16099ccccd917d488df703 +Author: Behdad Esfahbod +Date: Wed Nov 4 20:40:05 2015 -0800 + + [ft] Remove font funcs that do nothing + + src/hb-ft.cc | 29 ++++------------------------- + 1 file changed, 4 insertions(+), 25 deletions(-) + +commit 7918c261efd283e0428ce7836e9e42768a6aa05c +Author: Behdad Esfahbod +Date: Wed Nov 4 20:37:49 2015 -0800 + + [ft] Port ft font funcs to allocated object + + src/hb-ft.cc | 45 ++++++++++++++++++++++++++++++++++++--------- + 1 file changed, 36 insertions(+), 9 deletions(-) + +commit da29b43794cfa3f9a602c34b33c5d8a9c36f87b5 +Author: Behdad Esfahbod +Date: Wed Nov 4 20:22:44 2015 -0800 + + Separate nil font-funcs from parent-peeking font-funcs + + API change: all fonts created with hb_font_create() now inherit from + (ie have parent) hb_font_get_empty(). + + src/hb-font.cc | 211 + +++++++++++++++++++++++++++++++++++---------------- + test/api/test-font.c | 2 +- + 2 files changed, 145 insertions(+), 68 deletions(-) + +commit bee901b38ef3c26a04f69c299c8d5e028a0090e9 +Author: Behdad Esfahbod +Date: Wed Nov 4 19:28:17 2015 -0800 + + Optimize positioning direction calculations + + It makes the binary smaller AND faster. Yumm! + + src/hb-font-private.hh | 40 +++++++++++++++++++++++++++++++++++++++ + src/hb-ot-shape.cc | 51 + +++++++++++++++++++++++++++----------------------- + 2 files changed, 68 insertions(+), 23 deletions(-) + +commit e3e4bb011ae1a2f1ba05e7ea450595b185304bec +Author: Behdad Esfahbod +Date: Wed Nov 4 18:58:02 2015 -0800 + + Don't do fractions if buffer is ASCII-only + + src/hb-buffer-private.hh | 5 +++-- + src/hb-ot-layout-private.hh | 1 + + src/hb-ot-shape.cc | 3 ++- + 3 files changed, 6 insertions(+), 3 deletions(-) + +commit 6986208ba3b395534f4c7bcfa51df6bf9038f717 +Author: Behdad Esfahbod +Date: Wed Nov 4 18:46:22 2015 -0800 + + Optimize runs without Default_Ignorable's + + Now that we have a buffer-wide scratch flags facility, use it to + optimize away a few passes. + + src/hb-buffer-private.hh | 3 ++- + src/hb-ot-layout-private.hh | 4 +++- + src/hb-ot-shape-normalize.cc | 4 ++-- + src/hb-ot-shape.cc | 10 ++++++---- + src/hb-private.hh | 3 +++ + 5 files changed, 16 insertions(+), 8 deletions(-) + +commit 14c2de321826c36037adde859ccca3e2011325a9 +Author: Behdad Esfahbod +Date: Wed Nov 4 18:00:57 2015 -0800 + + Limit max edits during sanitize to 8 + + Used to be 100. If a tabe needs more than one or two edits, it's + probably completely bogus... + + Might help with speeding up fuzzing for + https://github.com/behdad/harfbuzz/issues/157 + + src/hb-open-type-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9cbc39aef962a95b0eba32c24ff9c415d1316d56 +Author: Behdad Esfahbod +Date: Wed Nov 4 18:00:53 2015 -0800 + + Minor + + src/hb-ot-shape-normalize.cc | 2 ++ + 1 file changed, 2 insertions(+) + +commit 52e6c4e15893ed1cb0997795912a07b3e446b65a +Author: Behdad Esfahbod +Date: Wed Nov 4 17:45:06 2015 -0800 + + If font doesn't support U+2011, fall back to U+2010 + + Test passes now. + + src/hb-ot-shape-normalize.cc | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit 75483aafa6ad02d6391712d082d093823edcd758 +Author: Behdad Esfahbod +Date: Wed Nov 4 17:43:36 2015 -0800 + + Untangle if/else waterfall + + src/hb-ot-shape-normalize.cc | 40 + +++++++++++++++++++++++++++------------- + 1 file changed, 27 insertions(+), 13 deletions(-) + +commit 04fd8517f85ae9aa05b44f25578d2b19abfef7cb +Author: Behdad Esfahbod +Date: Wed Nov 4 17:38:22 2015 -0800 + + Add tests for hyphen fallback + + U+2011 is equivaent of U+2010, so we should do the fallback + for it. Currently fails. + + test/shaping/Makefile.am | 1 + + .../sha1sum/1c04a16f32a39c26c851b7fc014d2e8d298ba2b8.ttf | Bin 0 -> + 820 bytes + test/shaping/fonts/sha1sum/MANIFEST | 2 ++ + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/hyphens.tests | 2 ++ + 5 files changed, 6 insertions(+) + +commit 550417117da7e14457a11f49a20145311f58587b +Author: Behdad Esfahbod +Date: Wed Nov 4 17:37:30 2015 -0800 + + [test] Drop hintings when subsetting fonts to record + + test/shaping/record-test.sh | 1 + + 1 file changed, 1 insertion(+) + +commit 49ef630936325b2e56a870fcef9aa8473a8f8526 +Author: Behdad Esfahbod +Date: Wed Nov 4 17:27:07 2015 -0800 + + Adjust the width of various spaces if font does not cover them + + See discussion here: + https://github.com/behdad/harfbuzz/commit/81ef4f407d9c7bd98cf62cef951dc538b13442eb + + There's no way to disable this fallback, but I don't think it would + be needed. Let's hope for the best! + + Fixes https://github.com/behdad/harfbuzz/issues/153 + + src/hb-buffer-private.hh | 7 ++++ + src/hb-buffer.cc | 2 ++ + src/hb-ot-shape-fallback-private.hh | 4 +++ + src/hb-ot-shape-fallback.cc | 67 + +++++++++++++++++++++++++++++++++++++ + src/hb-ot-shape-normalize.cc | 1 + + src/hb-ot-shape.cc | 3 ++ + src/hb-unicode-private.hh | 56 +++++++++++++++++-------------- + test/shaping/tests/spaces.tests | 24 ++++++------- + 8 files changed, 126 insertions(+), 38 deletions(-) + +commit aa7044de0ceacd71cab19212d266c3a66c03b41e +Author: Behdad Esfahbod +Date: Wed Nov 4 16:25:57 2015 -0800 + + Generalize flags types + + src/hb-buffer-private.hh | 3 +++ + src/hb-ot-layout-common-private.hh | 5 +++++ + src/hb-ot-layout-private.hh | 8 +++++--- + src/hb-ot-map-private.hh | 16 +--------------- + src/hb-ot-shape.cc | 2 +- + src/hb-private.hh | 14 ++++++++++++++ + 6 files changed, 29 insertions(+), 19 deletions(-) + +commit 7793aad946e09b53523b30d57de85abd1d15f8b6 +Author: Behdad Esfahbod +Date: Wed Nov 4 14:48:46 2015 -0800 + + Normalize various spaces to space if font doesn't support + + This resurrects the space fallback feature, after I disabled + the compatibility decomposition. Now I can release HarfBuzz + again without breaking Pango! + + It also remembers which space character it was, such that later + on we can approximate the width of this particular space + character. That part is not implemented yet. + + We normalize all GC=Zs chars except for U+1680 OGHA SPACE MARK, + which is better left alone. + + src/hb-ot-layout-private.hh | 47 + +++------------------ + src/hb-ot-shape-normalize.cc | 12 +++++- + src/hb-unicode-private.hh | 40 + ++++++++++++++++++ + test/shaping/Makefile.am | 1 + + .../1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf | Bin 0 -> 316 bytes + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/spaces.tests | 17 ++++++++ + 8 files changed, 76 insertions(+), 43 deletions(-) + +commit 8b3c7f9ede77052225cff8495d660860bf9c7629 +Author: Behdad Esfahbod +Date: Wed Nov 4 15:30:48 2015 -0800 + + [test] Support recording multiple lines of text in record-test.sh + + test/shaping/record-test.sh | 15 +++++++++++++-- + 1 file changed, 13 insertions(+), 2 deletions(-) + +commit 85658394809fe0593ab5dfb30fd96118765c7dc5 +Author: Behdad Esfahbod +Date: Wed Nov 4 14:46:52 2015 -0800 + + Protect against possible invalid-memory access after OOM + + src/hb-buffer-private.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 4cc80bed25450af3d84a30ea417fa9275b15e014 +Author: Behdad Esfahbod +Date: Wed Nov 4 14:46:10 2015 -0800 + + Fix typo! + + Ouch! Fortunately that function was unused. + + src/hb-buffer-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9ac4b9656dd78ffd129bc3d560a92e2692bc3058 +Author: Behdad Esfahbod +Date: Wed Nov 4 14:18:39 2015 -0800 + + Add Unicode space category + + Unused so far. + + src/hb-ot-layout-private.hh | 78 + +++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 76 insertions(+), 2 deletions(-) + +commit 8249ec3f86510fd24462ce71ed64a6978f0ade17 +Author: Behdad Esfahbod +Date: Wed Nov 4 13:26:17 2015 -0800 + + Make top-byte of unicode_props available to be used differently per-GC + + src/hb-ot-layout-private.hh | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit cc5d3a33882b52f906ee4346707700f5e846d2ac +Author: Behdad Esfahbod +Date: Wed Nov 4 13:21:25 2015 -0800 + + Towards using top-byte of unicode-props for more things + + src/hb-ot-layout-gsubgpos-private.hh | 1 - + src/hb-ot-layout-private.hh | 3 ++- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 2f38dde5a1ea5459789fabaee661cae9235d204e +Author: Behdad Esfahbod +Date: Wed Nov 4 13:17:33 2015 -0800 + + Add _hb_glyph_info_is_unicode_mark() + + Unused right now. + + src/hb-ot-layout-private.hh | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 90d75f93bb85aeb627c4e6bb9e4cbd75895c99f7 +Author: Behdad Esfahbod +Date: Tue Nov 3 12:58:12 2015 -0800 + + Tighten ccc-setting a bit and document it + + src/hb-ot-layout-private.hh | 12 +++++++++++- + src/hb-unicode-private.hh | 5 +++++ + 2 files changed, 16 insertions(+), 1 deletion(-) + +commit 2f0dfd43cdc2259e6117704f8077ab6951c761e5 +Author: Behdad Esfahbod +Date: Tue Nov 3 12:28:34 2015 -0800 + + Fix test expectation + + test/shaping/tests/fuzzed.tests | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit df698f3299d92867e3305715f675b2621c316acd +Author: Behdad Esfahbod +Date: Tue Nov 3 12:15:12 2015 -0800 + + [ot-font] Fix hmtx table length checking, *again* + + Exactly the same problem that I fixed in + 63ef0b41dc48d6112d1918c1b1de9de8ea90adb5 + + I rewrote the table checking yesterday in + 67f8821fb25d9bd55719f5e29a582ae1af4b02b3 + and introduced the exact same issue again. :( + Good thing we have ongoing fuzzing going now. Was discovered + immediately by libFuzzer. Thanks kcc! + + https://github.com/behdad/harfbuzz/issues/139#issuecomment-153449473 + Fixes https://github.com/behdad/harfbuzz/issues/156 + + src/hb-ot-font.cc | 4 ++-- + .../sha1sum/8240789f6d12d4cfc4b5e8e6f246c3701bcf861f.ttf | Bin 0 -> + 633 bytes + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/fuzzed.tests | 1 + + 4 files changed, 4 insertions(+), 2 deletions(-) + +commit 3530cc2d7c3b7102902cb0e38b0bf9f46188078d +Author: Behdad Esfahbod +Date: Tue Nov 3 11:34:47 2015 -0800 + + [util] Fix option-parsing leaks + + util/helper-cairo.cc | 7 +++++-- + util/main-font-text.hh | 22 ++++++++++++++++++--- + util/options.cc | 21 ++++++++++---------- + util/options.hh | 53 + +++++++++++++++++++++++++++++++++----------------- + 4 files changed, 70 insertions(+), 33 deletions(-) + +commit 642135f3b2d6d6eb800153c76c4718239733c0e6 +Author: Behdad Esfahbod +Date: Tue Nov 3 11:26:34 2015 -0800 + + [util] In --debug mode, duplicate font data + + This has the effect that the font data will end up in a memory + section malloc()ed exactly to its size. This gives us better + valgrind detection of out-of-bounds access. + + Previously, the font data was placed in a mmap()ed section or + GString-allocated area, which didn't have proper protections + at the end when running under valgrind. + + util/options.cc | 3 +++ + 1 file changed, 3 insertions(+) + +commit ed2024ef93ac3af214082016e5aa8c14db9d7515 +Author: Behdad Esfahbod +Date: Mon Nov 2 17:58:12 2015 -0800 + + [perf] Micro-optimize + + src/hb-ot-layout-private.hh | 23 ++++++++++++++--------- + 1 file changed, 14 insertions(+), 9 deletions(-) + +commit 76a5310a830c7ae12037b768c5043bef0ff733a0 +Author: Behdad Esfahbod +Date: Mon Nov 2 17:52:45 2015 -0800 + + Remove irrelevant comment + + I tried moving the is_default_ignorable() function to an INTERNAL + function. That made the binary size grow by 5k AND things got a + tad bit slower! + + src/hb-ot-layout-private.hh | 1 - + 1 file changed, 1 deletion(-) + +commit 8259669fbd1b070fc02287325894caf1bc4d590e +Author: Behdad Esfahbod +Date: Mon Nov 2 17:44:05 2015 -0800 + + Minor + + src/hb-ot-layout-gsubgpos-private.hh | 2 +- + src/hb-ot-shape-complex-thai.cc | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 9382c471eabce8d36d3a73c97499ab60af422716 +Author: Behdad Esfahbod +Date: Mon Nov 2 17:36:51 2015 -0800 + + Combine unicode_props0/1 into a uint16 + + Slightly faster. In prep for more changes. + + src/hb-ot-layout-private.hh | 55 + ++++++++++++++++++++++++--------------------- + 1 file changed, 29 insertions(+), 26 deletions(-) + +commit 71277185454482cff9b0c10b85c416eb4d6e0ed9 +Author: Behdad Esfahbod +Date: Mon Nov 2 17:27:48 2015 -0800 + + [perf] Only call combining_class() for marks + + Saves some time. Also preparing for reusing the ccc byte for + other stuff. + + src/hb-ot-layout-private.hh | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +commit 5ba450407b9d9856453e63a815499da8721ff6a7 +Author: Behdad Esfahbod +Date: Mon Nov 2 15:43:08 2015 -0800 + + Make max context-length and max nesting level configurable + + ...at compile time. + + src/hb-ot-layout-common-private.hh | 10 ++++++++-- + src/hb-ot-layout-gsub-table.hh | 4 ++-- + src/hb-ot-layout-gsubgpos-private.hh | 20 ++++++++++---------- + 3 files changed, 20 insertions(+), 14 deletions(-) + +commit 67f8821fb25d9bd55719f5e29a582ae1af4b02b3 +Author: Behdad Esfahbod +Date: Mon Nov 2 15:37:29 2015 -0800 + + [ot] Make bad-hmtx handling match FreeType + + Also route fuzzing-related tests through hb-ot-font, to reduce + dependency + on FreeType behavior for badly-broken fonts. Fixes failing test with + FreeType master. + + src/hb-ot-font.cc | 24 ++++++++++++++---------- + test/shaping/tests/fuzzed.tests | 10 +++++----- + 2 files changed, 19 insertions(+), 15 deletions(-) + +commit 672ca3b4e65a75fb3a418ec5d117ad242a98acbb +Author: Behdad Esfahbod +Date: Mon Oct 26 14:05:05 2015 -0700 + + Use templates for making sure expression is constant + + src/hb-private.hh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 5c8174eda32c08187bc2ed40eefa1017f5b40668 +Author: Behdad Esfahbod +Date: Wed Oct 21 18:51:40 2015 -0200 + + Update comments for removal of compat decompositions + + src/hb-ot-shape-normalize.cc | 16 ++-------------- + 1 file changed, 2 insertions(+), 14 deletions(-) + +commit f6799700404c49ae0a6018fd51be19551c76768a +Author: Behdad Esfahbod +Date: Wed Oct 21 17:20:55 2015 -0200 + + Disable compatibility decomposition usage during normalization + + Fixes https://github.com/behdad/harfbuzz/issues/152 + + src/hb-ot-shape-normalize.cc | 24 ------------------------ + 1 file changed, 24 deletions(-) + +commit ce889189c1f8ef5b400a17f623dcb8b935d1102b +Author: Behdad Esfahbod +Date: Wed Oct 21 11:23:12 2015 -0200 + + Fix two more -Wshadow warnings + + https://bugzilla.mozilla.org/show_bug.cgi?id=1215894 + + src/hb-open-type-private.hh | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 4a6b1eedbb0044b57505eea65a329d2dc4f9f917 +Author: Behdad Esfahbod +Date: Wed Oct 21 11:20:55 2015 -0200 + + Fix one more -Wshadow warning + + https://bugzilla.mozilla.org/show_bug.cgi?id=1215894 + + src/hb-ot-layout-gsubgpos-private.hh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 6f932bc8f9045b224613a617af2b4f3450c79467 +Author: Behdad Esfahbod +Date: Wed Oct 21 11:16:49 2015 -0200 + + Fix a few more -Wshadow-local warnings + + https://bugzilla.mozilla.org/show_bug.cgi?id=1215894 + + src/hb-ot-shape-complex-indic.cc | 10 +++++----- + src/hb-ot-shape-complex-myanmar.cc | 10 +++++----- + src/hb-ot-shape-complex-use.cc | 10 +++++----- + 3 files changed, 15 insertions(+), 15 deletions(-) + +commit b90cb366d7723c28758c6b75a0770613fbb5456e +Author: Behdad Esfahbod +Date: Wed Oct 21 11:13:21 2015 -0200 + + Fix one -Wshadow-compatible-local warning + + From https://bugzilla.mozilla.org/show_bug.cgi?id=1215894 + + src/hb-ot-shape-complex-indic.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 50e5750bd8670b4cf4463471a2348d4c99c9d054 +Author: Behdad Esfahbod +Date: Wed Oct 21 11:10:10 2015 -0200 + + Avoid unnecessary cast to 64-bit + + Fixes https://github.com/behdad/harfbuzz/issues/146 + + Or I think it should. + + src/hb-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 305d2fbf5a2db51447c8ed894a48a88896930673 +Author: Behdad Esfahbod +Date: Wed Oct 21 11:04:28 2015 -0200 + + Add HB_FALLTHROUGH + + Borrowed from https://bugzilla.mozilla.org/show_bug.cgi?id=1215411 + + src/hb-ot-shape-complex-indic.cc | 2 +- + src/hb-ot-shape-complex-thai.cc | 2 +- + src/hb-ot-shape-fallback.cc | 4 +++- + src/hb-private.hh | 30 ++++++++++++++++++++++++++++++ + 4 files changed, 35 insertions(+), 3 deletions(-) + +commit f35b3e931ddacd075c5d0810e9b17de07b232ee2 +Author: Ebrahim Byagowi +Date: Fri Sep 11 09:48:12 2015 +0430 + + Add a prototype of DirectWrite as a shaping backend + + src/hb-directwrite.cc | 827 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + src/hb-directwrite.h | 34 +++ + src/hb-shaper-list.hh | 3 + + 3 files changed, 864 insertions(+) + +commit 6486e3755482563ecd89aeb3f8348ed190945e26 +Author: Behdad Esfahbod +Date: Tue Oct 20 16:39:41 2015 -0200 + + Fix typo + + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 753ea7b90904c951c199861409458bea182abb37 +Author: Behdad Esfahbod +Date: Tue Oct 20 15:21:18 2015 -0200 + + Add BUILD.md to dist + + Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 5d7a30fde09320c2c62c7c73570ce3f2e298eba6 +Merge: 904b0dc 2fb95a0 +Author: Behdad Esfahbod +Date: Tue Oct 20 15:19:41 2015 -0200 + + Merge pull request #148 from ebraminio/inst + + Add BUILD.md based on harfbuzz.org docs + +commit 904b0dc3811464cf61dc9457664de95ee4f61a86 +Merge: 86cadc2 ba096bc +Author: Behdad Esfahbod +Date: Mon Oct 19 16:59:43 2015 -0200 + + Merge pull request #147 from ebraminio/dockerci + + [ci] change to docker infrastructure + +commit ba096bcc28ca80e2096e0a15191848fcd175e395 +Author: Ebrahim Byagowi +Date: Mon Oct 19 21:41:01 2015 +0330 + + [ci] change to docker infrastructure + + .travis.yml | 24 ++++++++++++++++-------- + 1 file changed, 16 insertions(+), 8 deletions(-) + +commit 2fb95a0c9d2cb8b03b7c158706d6b0e41283a6df +Author: Ebrahim Byagowi +Date: Mon Oct 19 22:02:12 2015 +0330 + + Add BUILD.md based on harfbuzz.org docs + + BUILD.md | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +commit 86cadc2cd4171050e9d74306b76c42f6ec74b861 +Author: Behdad Esfahbod +Date: Thu Oct 15 20:25:29 2015 -0300 + + 1.0.6 + + NEWS | 13 +++++++++++++ + configure.ac | 2 +- + 2 files changed, 14 insertions(+), 1 deletion(-) + +commit ca97ea7aa2cb7186f432aaba76f4f151aa90c1d0 +Author: Behdad Esfahbod +Date: Thu Oct 15 20:20:22 2015 -0300 + + [ft] Revert change-of-behavior of hb_ft_font_create() introduced + in 1.0.5 + + The default FreeType load flags where changed from FT_LOAD_NO_HINTING + to FT_LOAD_DEFAULT in 2a9627c5641cd000e2adff0e42a0dc687b53ec70. + This is crashing HarfBuzz-enabled FreeType as I suppose it causes + infinite recursion between HB and FT autohinter... + + Revert the behavior change. + + Fixes https://github.com/behdad/harfbuzz/issues/143 + + src/hb-ft.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 338ffec9e4a5819f2be21c3a320a567378c977b1 +Author: Behdad Esfahbod +Date: Thu Oct 15 12:55:57 2015 -0300 + + Add tests for a couple of fixed issues found by libFuzzer + + From: + https://github.com/behdad/harfbuzz/issues/139#issuecomment-147616887 + https://github.com/behdad/harfbuzz/issues/139#issuecomment-148289957 + + .../sha1sum/375d6ae32a3cbe52fbf81a4e5777e3377675d5a3.ttf | Bin 0 -> + 1024 bytes + .../sha1sum/641bd9db850193064d17575053ae2bf8ec149ddc.ttf | Bin 0 -> + 305 bytes + test/shaping/fonts/sha1sum/MANIFEST | 2 ++ + test/shaping/tests/fuzzed.tests | 2 ++ + 4 files changed, 4 insertions(+) + +commit 63ef0b41dc48d6112d1918c1b1de9de8ea90adb5 +Author: Behdad Esfahbod +Date: Thu Oct 15 12:47:22 2015 -0300 + + [ot-font] Fix hmtx wrong table length check + + Discovered by libFuzzer. Ouch! + + https://github.com/behdad/harfbuzz/issues/139#issuecomment-148289957 + + src/hb-ot-font.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 613e630617074eb9b62b794cc37c9b42a7fb079b +Author: Behdad Esfahbod +Date: Tue Oct 13 23:33:28 2015 -0300 + + Reduce max nesting level from 8 to 6 + + We probably should implement better system to catch cyclic lookups. + But for now, this speeds up worst case behavior with broken fonts + considerably without compromising legitimate usecases. + + https://github.com/behdad/harfbuzz/issues/139#issuecomment-147788447 + + src/hb-ot-layout-common-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ab170529246ad80830bef2b3c8b48e9a8d2b7483 +Author: Behdad Esfahbod +Date: Tue Oct 13 10:55:33 2015 -0300 + + 1.0.5 + + NEWS | 24 ++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 25 insertions(+), 1 deletion(-) + +commit ed13e2ce509408f849255be1d3cc3dbd7dbb3ba2 +Author: Behdad Esfahbod +Date: Tue Oct 13 10:32:56 2015 -0300 + + [ot-font] Fix leak + + https://github.com/behdad/harfbuzz/issues/139#issuecomment-147616887 + + src/hb-ot-font.cc | 1 + + 1 file changed, 1 insertion(+) + +commit 55db94be2b754ba9b9121f09abcf8496c798affc +Author: Behdad Esfahbod +Date: Tue Oct 13 00:33:59 2015 -0400 + + Add test for previous commit + + .../sha1sum/0509e80afb379d16560e9e47bdd7d888bebdebc6.ttf | Bin 0 -> + 61 bytes + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/fuzzed.tests | 1 + + 3 files changed, 2 insertions(+) + +commit f96664974774bfeb237a7274f512f64aaafb201e +Author: Behdad Esfahbod +Date: Tue Oct 13 00:30:50 2015 -0400 + + Fix another memory access issue discovered by libFuzzer + + Fixes + https://github.com/behdad/harfbuzz/issues/139#issuecomment-146984679 + + src/hb-ot-layout-gpos-table.hh | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit c1a5dc46c2231f7b62421e06b9766ccfebaf3ef5 +Author: Behdad Esfahbod +Date: Mon Oct 12 17:39:52 2015 -0400 + + [fuzz] Add fuzzing script from kcc@ + + https://github.com/behdad/harfbuzz/issues/139 + + test/fuzzing/hb-fuzzer.cc | 47 + +++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 47 insertions(+) + +commit cc6ea308d4c99b9dd6d625fa3a9b0ef62fa2614f +Author: Behdad Esfahbod +Date: Mon Oct 12 17:21:52 2015 -0400 + + Extern "C" custom-allocator declerations + + src/hb-private.hh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 98c6fccc00062ead7a86892dd059aa13d266b981 +Author: Behdad Esfahbod +Date: Sun Oct 11 21:41:04 2015 -0400 + + Add test for ee9b0b6cb5fdb08671ab064f26c299135f828260 + + .../sha1sum/5a5daf5eb5a4db77a2baa3ad9c7a6ed6e0655fa8.ttf | Bin 0 -> + 61 bytes + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/fuzzed.tests | 1 + + 3 files changed, 2 insertions(+) + +commit 50f489a0a013fc589626bb532a9f64f50bb41f58 +Author: Behdad Esfahbod +Date: Sun Oct 11 20:59:29 2015 -0400 + + Typo + + src/hb-font-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ee9b0b6cb5fdb08671ab064f26c299135f828260 +Author: Behdad Esfahbod +Date: Fri Oct 9 14:23:15 2015 -0400 + + Fix another sanitize bug + + Also discovered by "libFuzzer". + + src/hb-open-type-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 34379b49e6922b86c15ee62f7fe3bf016cdc2514 +Author: Behdad Esfahbod +Date: Fri Oct 9 12:34:02 2015 -0400 + + Add test for previous fix + + test/shaping/Makefile.am | 1 + + .../sha1sum/1a6f1687b7a221f9f2c834b0b360d3c8463b6daf.ttf | Bin 0 -> + 64 bytes + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/fuzzed.tests | 1 + + 5 files changed, 4 insertions(+) + +commit f396fbb000dc1c8acddbf6a16e193b328c5e551e +Author: Behdad Esfahbod +Date: Fri Oct 9 12:25:55 2015 -0400 + + Fix return value of sanitize when subformat is not readable + + This is a fix on top of the previous issue fixed in + c917965b9e6fe2b21ed6c51559673288fa3af4b7. + + This was caught by "libFuzzer" testing. + + src/hb-open-type-private.hh | 2 ++ + src/hb-ot-layout-gpos-table.hh | 15 +++++++-------- + src/hb-ot-layout-gsub-table.hh | 13 ++++++------- + src/hb-ot-layout-gsubgpos-private.hh | 8 ++++---- + 4 files changed, 19 insertions(+), 19 deletions(-) + +commit 77a1a2bc18e7b04d4e352a8777ccce345b2f8659 +Author: Behdad Esfahbod +Date: Fri Oct 9 12:20:58 2015 -0400 + + Add hb_dispatch_context_t + + src/hb-open-type-private.hh | 26 ++++++++++++++++++++++---- + src/hb-ot-layout-gsubgpos-private.hh | 36 + ++++++++++++------------------------ + src/hb-ot-layout.cc | 8 +++----- + 3 files changed, 37 insertions(+), 33 deletions(-) + +commit 3e905e396bcd745bda88e751998a76556c5cb8c6 +Author: Behdad Esfahbod +Date: Thu Oct 8 12:51:02 2015 -0400 + + Add hb_font_set_parent() + + No reason to not have it. Makes life easier later. + We (hb-ft, hb-ot-font, etc) can use this API to inject new + parent into a font... + + src/hb-font.cc | 26 ++++++++++++++++++++++++++ + src/hb-font.h | 4 ++++ + test/api/test-font.c | 12 ++++++++++++ + 3 files changed, 42 insertions(+) + +commit edeb3dabf4a589d67c3f1da7ba43a74e4d3a9afd +Author: Behdad Esfahbod +Date: Thu Oct 8 12:47:15 2015 -0400 + + [ft] Add version for new API + + src/hb-ft.cc | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +commit 2a9627c5641cd000e2adff0e42a0dc687b53ec70 +Author: Behdad Esfahbod +Date: Wed Oct 7 17:33:20 2015 -0400 + + [ft] API: Add hb_font_[sg]et_load_flags() API + + This changes the default load_flags of fonts created using + hb_ft_font_create() from NO_HINTING to DEFAULT. Hope that doesn't + break too much client code. + + Code calling hb_ft_font_set_funcs() is unaffected. + + src/hb-ft.cc | 163 + +++++++++++++++++++++++++++++++++++++++-------------------- + src/hb-ft.h | 13 +++-- + 2 files changed, 118 insertions(+), 58 deletions(-) + +commit 3224a594dcf2164b5585b4ccba34f244af3f61b9 +Author: Behdad Esfahbod +Date: Wed Oct 7 17:33:02 2015 -0400 + + Minor + + src/hb-ot-font.cc | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit 52b418555b62a3b25399f202c1fa72ab7288c224 +Author: Behdad Esfahbod +Date: Sat Oct 3 13:20:55 2015 +0100 + + Allow compiling with custom allocators + + User can define hb_malloc_impl, etc, to name of custom allocator + functions + that have the same signature as malloc. + + src/hb-private.hh | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +commit 88da7bba9fa4665b33f5bfcd45add7443097eaf3 +Author: Behdad Esfahbod +Date: Fri Oct 2 14:38:20 2015 +0100 + + Default font scale to face upem + + Makes for a better default and avoids nasty inheritance issues. + See mailing list thread "Default hb_font_t scale". + + src/hb-font.cc | 2 ++ + test/api/test-font.c | 13 ++++++++----- + 2 files changed, 10 insertions(+), 5 deletions(-) + +commit 1866e17114b41d565eb066e7d9393c2ff3e0a12b +Author: Behdad Esfahbod +Date: Fri Oct 2 14:21:29 2015 +0100 + + Make hb_font_create_sub_font() NOT make parent immutable + + We don't rely on that. However, whenever hb_font_make_immutable() + is called, it makes its parenting chain immutable. + + src/hb-font.cc | 4 +++- + test/api/test-font.c | 21 +++++++++++++++------ + 2 files changed, 18 insertions(+), 7 deletions(-) + +commit 980e25cad2e58c31f5361862b9223d94ec47fc7a +Author: Behdad Esfahbod +Date: Fri Oct 2 08:21:12 2015 +0100 + + Fix hb-ot-shape-normalize with empty buffer + + Part of https://github.com/behdad/harfbuzz/issues/136 + + src/hb-ot-shape-normalize.cc | 2 ++ + 1 file changed, 2 insertions(+) + +commit a5efaac4ff61b587f228830b265b39fe8e5e4e47 +Author: Behdad Esfahbod +Date: Fri Oct 2 08:02:29 2015 +0100 + + Replace a couple of malloc()s with calloc() + + src/hb-face.cc | 2 +- + src/hb-shape-plan.cc | 2 +- + src/hb-shaper.cc | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +commit 26ba4d1e1fb8949632fe08e6a7600badfba4f142 +Author: Behdad Esfahbod +Date: Fri Oct 2 07:25:52 2015 +0100 + + Fix segfault with empty buffer in hb_shape_plan_execute() + + Move the empty-buffer check from hb_shape_full() to + hb_shape_plan_execute(). + + Reported by Simon Cozens. + + src/hb-shape-plan.cc | 9 +++++++-- + src/hb-shape.cc | 5 ----- + 2 files changed, 7 insertions(+), 7 deletions(-) + +commit 432ffc47a46d41bea17d839d0d3980e654c6e638 +Author: Behdad Esfahbod +Date: Wed Sep 30 22:51:16 2015 +0100 + + 1.0.4 + + NEWS | 7 +++++++ + configure.ac | 2 +- + 2 files changed, 8 insertions(+), 1 deletion(-) + +commit b47159011ca518c3b94d782ed16a91ffe9dd2ab2 +Author: Behdad Esfahbod +Date: Tue Sep 29 14:57:02 2015 +0100 + + Define return_trace() + + Not functional change (expected!). + + src/hb-open-file-private.hh | 20 +-- + src/hb-open-type-private.hh | 62 +++---- + src/hb-ot-cmap-table.hh | 56 +++---- + src/hb-ot-glyf-table.hh | 4 +- + src/hb-ot-head-table.hh | 2 +- + src/hb-ot-hhea-table.hh | 2 +- + src/hb-ot-hmtx-table.hh | 2 +- + src/hb-ot-layout-common-private.hh | 108 ++++++------- + src/hb-ot-layout-gdef-table.hh | 44 ++--- + src/hb-ot-layout-gpos-table.hh | 252 +++++++++++++++-------------- + src/hb-ot-layout-gsub-table.hh | 304 + ++++++++++++++++++----------------- + src/hb-ot-layout-gsubgpos-private.hh | 205 +++++++++++------------ + src/hb-ot-layout-jstf-table.hh | 35 ++-- + src/hb-ot-maxp-table.hh | 5 +- + src/hb-ot-name-table.hh | 14 +- + src/hb-private.hh | 6 +- + 16 files changed, 575 insertions(+), 546 deletions(-) + +commit c917965b9e6fe2b21ed6c51559673288fa3af4b7 +Author: Behdad Esfahbod +Date: Tue Sep 29 14:45:35 2015 +0100 + + Add missing returns + + Fixes possible invalid read of two bytes. + + Reported by Behzad Najjarpour Jabbari, Secunia Research. + + src/hb-ot-layout-gpos-table.hh | 14 +++++++------- + src/hb-ot-layout-gsub-table.hh | 12 ++++++------ + src/hb-ot-layout-gsubgpos-private.hh | 8 ++++---- + 3 files changed, 17 insertions(+), 17 deletions(-) + +commit f3159ba5141c2ab0e430e64742972df140f91c43 +Author: Behdad Esfahbod +Date: Tue Sep 29 14:34:56 2015 +0100 + + Micro-optimize hb_language_from_string() + + As measured / improved by Benson Limketkai. + + src/hb-common.cc | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit f2ad935e19338a29113492150f0c5a5fd5befd75 +Author: Sascha Brawer +Date: Sun Jun 28 03:29:47 2015 +0200 + + Handle language tags that indicate phonetic IPA transcription + + The BCP-47 registry defines a variant subtag "fonipa" that can be used + in combination with arbitrary other language tags. For example, + "rm-CH-fonipa-sursilv" indicates the Sursilvan dialect of Romansh + as used in Switzerland, transcribed used the International Phonetic + Alphabet. + + http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry + + src/hb-ot-tag.cc | 15 ++++++++++++++- + test/api/test-ot-tag.c | 7 +++++++ + 2 files changed, 21 insertions(+), 1 deletion(-) + +commit b8811429b6810c4f13be087b593a862c17d9d987 +Author: Behdad Esfahbod +Date: Thu Sep 3 15:53:22 2015 +0430 + + Fix Since tags + + Fixes https://github.com/behdad/harfbuzz/issues/103 + + src/hb-blob.cc | 24 +++++++++---------- + src/hb-buffer-serialize.cc | 10 ++++---- + src/hb-buffer.cc | 58 + +++++++++++++++++++++++----------------------- + src/hb-buffer.h | 9 +++++++ + src/hb-common.cc | 24 +++++++++---------- + src/hb-common.h | 3 +++ + src/hb-coretext.cc | 3 +++ + src/hb-font.h | 18 +++++++------- + src/hb-ft.cc | 6 ++--- + src/hb-graphite2.cc | 6 +++++ + src/hb-ot-layout.cc | 2 +- + src/hb-ot-tag.cc | 2 +- + src/hb-set.h | 3 +++ + src/hb-shape.cc | 2 +- + src/hb-unicode.cc | 18 +++++++------- + src/hb-unicode.h | 10 ++++---- + 16 files changed, 111 insertions(+), 87 deletions(-) + +commit 5d74ff02ab01df67808b416af8bb9cefb06f841e +Author: Behdad Esfahbod +Date: Thu Sep 3 14:55:59 2015 +0430 + + Fix Since: version tags on font and face APIs + + A while back we marked every API as version:1.0. We should fix + them all + to reflect real version they were introduced. This is a start. + + Patch from Nikolay Sivov. + + src/hb-face.cc | 22 ++++++++--------- + src/hb-font.cc | 76 + +++++++++++++++++++++++++++++----------------------------- + 2 files changed, 49 insertions(+), 49 deletions(-) + +commit 7f5405397406a24c5a001b5ef43dcf4d6926415e +Author: Behdad Esfahbod +Date: Tue Sep 1 17:03:50 2015 +0100 + + 1.0.3 + + NEWS | 11 +++++++++++ + configure.ac | 2 +- + 2 files changed, 12 insertions(+), 1 deletion(-) + +commit 5828c45d7a816ccd0a7f10a665ea3cf8cfd63b05 +Author: Behdad Esfahbod +Date: Tue Sep 1 16:26:35 2015 +0100 + + [indic] Add comments to merge_clusters calls + + src/hb-ot-shape-complex-indic.cc | 21 ++++++++++++++++----- + 1 file changed, 16 insertions(+), 5 deletions(-) + +commit bdc8215949a7add742cc800b4fdea6acaa37d152 +Author: Behdad Esfahbod +Date: Tue Sep 1 16:24:54 2015 +0100 + + [thai] Respect cluster-level > 0 + + src/hb-ot-shape-complex-thai.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5b31fe383ead726ec77062501ed3bb24c02842b3 +Author: Behdad Esfahbod +Date: Tue Sep 1 16:24:34 2015 +0100 + + [use] Merge /before/ reordering + + src/hb-ot-shape-complex-use.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 0d438f89bd9422c66838c776eb4aa867de0a2ad8 +Author: Behdad Esfahbod +Date: Tue Sep 1 16:24:13 2015 +0100 + + [hangul] Merge /before/ reordering + + src/hb-ot-shape-complex-hangul.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f883de664fc4bfe01e30c89e07e31dc113f906d9 +Author: Behdad Esfahbod +Date: Tue Sep 1 16:23:40 2015 +0100 + + [OT] Merge /before/ reordering + + src/hb-ot-shape.cc | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit c403d6320074455a5e8e48902c0ac4ee9685e33d +Author: Behdad Esfahbod +Date: Tue Sep 1 16:15:25 2015 +0100 + + [myanmar] Use buffer->sort() to sort cluster + + This can possibly produce more granular clusters. + + src/hb-ot-shape-complex-myanmar.cc | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit e995d33c10a4bd9404699d01bddb2b69d811e9ed +Author: Behdad Esfahbod +Date: Tue Sep 1 16:13:32 2015 +0100 + + [OT] Merge clusters when reordering marks for normalization + + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=541608 + and cluster test. + + src/hb-buffer-private.hh | 2 ++ + src/hb-buffer.cc | 21 +++++++++++++++++++++ + src/hb-ot-shape-normalize.cc | 2 +- + 3 files changed, 24 insertions(+), 1 deletion(-) + +commit b6d7d161a87b5dde710924e5c557d39c302f5630 +Author: Behdad Esfahbod +Date: Tue Sep 1 16:12:44 2015 +0100 + + [tests] Add Hebrew test for normalization under cluster-level=1 + + Currently fails. + https://bugzilla.gnome.org/show_bug.cgi?id=541608 + + .../sha1sum/43ef465752be9af900745f72fe29cb853a1401a5.ttf | Bin 0 -> + 4272 bytes + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/cluster.tests | 1 + + 3 files changed, 2 insertions(+) + +commit 93099748e39740a3f6f003c83d9dec1d21660ce8 +Author: Behdad Esfahbod +Date: Tue Sep 1 16:11:27 2015 +0100 + + Minor + + src/hb-private.hh | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +commit 85846b3de7491b6a07fed6a2c0c6c1b09943b249 +Author: Behdad Esfahbod +Date: Tue Sep 1 15:07:52 2015 +0100 + + Use insertion-sort instead of bubble-sort + + Needed for upcoming merge-clusters fix. + + src/hb-buffer.cc | 4 +-- + src/hb-ot-shape-complex-arabic-fallback.hh | 6 ++-- + src/hb-ot-shape-complex-indic.cc | 2 +- + src/hb-ot-shape-complex-myanmar.cc | 2 +- + src/hb-ot-shape-normalize.cc | 6 ++-- + src/hb-private.hh | 56 + +++++++++++++----------------- + 6 files changed, 34 insertions(+), 42 deletions(-) + +commit fad2674874591b4a1df822603144c8864f5364c1 +Author: Behdad Esfahbod +Date: Tue Sep 1 14:45:46 2015 +0100 + + Minor + + test/Makefile.am | 4 ++++ + test/api/Makefile.am | 4 ++++ + test/shaping/Makefile.am | 4 ++++ + 3 files changed, 12 insertions(+) + +commit 23e4fac6de913201f263a73e13d3c1fab31d1bdd +Author: Behdad Esfahbod +Date: Mon Aug 31 19:41:01 2015 +0100 + + Update git.mk from upstream + + git.mk | 17 ++++++++++++++++- + 1 file changed, 16 insertions(+), 1 deletion(-) + +commit 5783e05f81bbf6debf2618c8994d6852630d9847 +Author: Behdad Esfahbod +Date: Mon Aug 31 19:18:10 2015 +0100 + + [docs] Move docs/reference/ contents into docs/ + + configure.ac | 3 +- + docs/Makefile.am | 117 + ++++++++++++++++++++++++++- + docs/{reference => }/harfbuzz-docs.xml | 0 + docs/{reference => }/harfbuzz-overrides.txt | 0 + docs/{reference => }/harfbuzz-sections.txt | 0 + docs/reference/Makefile.am | 118 + ---------------------------- + docs/{reference => }/usermanual-ch01.xml | 0 + docs/{reference => }/usermanual-ch02.xml | 0 + docs/{reference => }/usermanual-ch03.xml | 0 + docs/{reference => }/usermanual-ch04.xml | 0 + docs/{reference => }/usermanual-ch05.xml | 0 + docs/{reference => }/usermanual-ch06.xml | 0 + docs/{reference => }/version.xml.in | 0 + 13 files changed, 117 insertions(+), 121 deletions(-) + +commit cd5e3a13a6e0b6606d3a421f8cd44cdfb8314907 +Author: Behdad Esfahbod +Date: Mon Aug 31 19:16:41 2015 +0100 + + [docs] Fix out-of-tree build + + docs/reference/Makefile.am | 9 ++++++++- + docs/reference/harfbuzz-docs.xml | 12 ++++++------ + docs/{ => reference}/usermanual-ch01.xml | 0 + docs/{ => reference}/usermanual-ch02.xml | 0 + docs/{ => reference}/usermanual-ch03.xml | 0 + docs/{ => reference}/usermanual-ch04.xml | 0 + docs/{ => reference}/usermanual-ch05.xml | 0 + docs/{ => reference}/usermanual-ch06.xml | 0 + 8 files changed, 14 insertions(+), 7 deletions(-) + +commit 3899795fa3c3e058e3885ec7a6638f0597a752cc +Merge: d205965 01e16e8 +Author: Behdad Esfahbod +Date: Mon Aug 31 10:46:01 2015 +0100 + + Merge pull request #131 from simoncozens/docs + + Use gtk-doc to build user's manual as well as reference + +commit 01e16e88f50b65b82dcb84773f532f18a351319f +Author: Simon Cozens +Date: Mon Aug 31 10:40:17 2015 +0100 + + Combine user / reference information into gtk-doc generated manual. + + docs/reference/harfbuzz-docs.xml | 91 + +++++++++++++++++++++++----------------- + 1 file changed, 52 insertions(+), 39 deletions(-) + +commit 11a07c4729174e1d4af028103ecb0a351e4c2707 +Author: Simon Cozens +Date: Mon Aug 31 10:39:10 2015 +0100 + + Correct tag hierarchy, to allow for table-of-contents entries. + + docs/usermanual-ch01.xml | 12 ++++++------ + docs/usermanual-ch02.xml | 8 ++++---- + docs/usermanual-ch03.xml | 24 ++++++++++++------------ + docs/usermanual-ch04.xml | 16 ++++++++-------- + docs/usermanual-ch05.xml | 12 ++++++------ + 5 files changed, 36 insertions(+), 36 deletions(-) + +commit 387d6af428ddd5d4f211fe5748412011013a3826 +Author: Simon Cozens +Date: Mon Aug 31 10:31:09 2015 +0100 + + Missing tag (oops). + + docs/usermanual-ch02.xml | 1 + + 1 file changed, 1 insertion(+) + +commit d205965286798af4b7ad07e1eafa58288bee4bdb +Author: Behdad Esfahbod +Date: Mon Aug 31 10:12:05 2015 +0100 + + [docs] Fix typo + + docs/usermanual-ch03.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c424b41705b50055c7f92b268cf78a2680af73af +Merge: 31594b9 5470e74 +Author: Behdad Esfahbod +Date: Mon Aug 31 09:53:16 2015 +0100 + + Merge pull request #129 from simoncozens/docs + + First two chapters. More to follow. + +commit 31594b98af0c9181982c77d8d3803753007f8fd4 +Author: Behdad Esfahbod +Date: Sun Aug 30 17:33:04 2015 +0100 + + [test] Fix test-object + + See previous commit. + + test/api/test-object.c | 4 ---- + 1 file changed, 4 deletions(-) + +commit 326b5ebf5748f547e4eb7388d66b79fe23130e2a +Author: Behdad Esfahbod +Date: Sun Aug 30 17:29:21 2015 +0100 + + Poison freed objects such that double-free is detected + + Previously we were setting refcount of freed objects to the inert + value, which + was harmful because it caused further destroy()s of the freed object + to NOT + call free() and hence hide the bug. Indeed, after eb0bf3ae6688b7 + test-object + was double-free'ing objects and this was never caught on Linux. + It only was + caught as crashing on Mac. + + Now we poison refcount upon freeing and check that it's valid + whenever reading + it. Makes test-object fail now. + + src/hb-object-private.hh | 21 ++++++++++++++++----- + 1 file changed, 16 insertions(+), 5 deletions(-) + +commit 5470e744dd264c2dc33437a68d20bcf7c5ffb905 +Author: Simon Cozens +Date: Sat Aug 29 08:21:18 2015 +0100 + + Current state and skeleton outline + + docs/usermanual-ch03.xml | 77 + ++++++++++++++++++++++++++++++++++++++++++++++++ + docs/usermanual-ch04.xml | 18 +++++++++++ + docs/usermanual-ch05.xml | 13 ++++++++ + docs/usermanual-ch06.xml | 8 +++++ + 4 files changed, 116 insertions(+) + +commit 6578575cc8aeb05341f2053039acfcd735707674 +Author: Behdad Esfahbod +Date: Tue Aug 25 20:24:59 2015 +0100 + + [GPOS] Fix cursive connection with mix of RTL and non-RTL lookups + + See thread "Issue with cursive attachment" started by Khaled. + Turned out fixing this wasn't as bad as I had assumed. I like the + new code better; we now have a theoretical model of cursive + connections that is easier to reason about. + + src/hb-ot-layout-gpos-table.hh | 34 ++++++++++++++++++++++++++++++++++ + 1 file changed, 34 insertions(+) + +commit 7368da67244ea53195cd9b95a5c57485df695732 +Author: Behdad Esfahbod +Date: Tue Aug 25 20:28:39 2015 +0100 + + [test] Add test for cursive-positioning with mixed directions + + Fails now. Fix coming. See thread "Issue with cursive attachment" + started by Khaled. Test fonts were made by modifying test font + from Khaled to add more anchors. + + test/shaping/Makefile.am | 1 + + .../sha1sum/298c9e1d955f10f6f72c6915c3c6ff9bf9695cec.ttf | Bin 0 -> + 2520 bytes + test/shaping/fonts/sha1sum/MANIFEST | 2 ++ + .../sha1sum/c4e48b0886ef460f532fb49f00047ec92c432ec0.ttf | Bin 0 -> + 2512 bytes + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/cursive-positioning.tests | 2 ++ + 6 files changed, 6 insertions(+) + +commit f0807654da160bd7ceb9aff5b8338ec0b643171c +Author: Simon Cozens +Date: Tue Aug 25 19:57:15 2015 +0100 + + First two chapters. More to follow. + + docs/usermanual-ch01.xml | 115 ++++++++++++++++++++++++++++++ + docs/usermanual-ch02.xml | 182 + +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 297 insertions(+) + +commit 58f2a73fb95af42e264a91cdef7bb5a89e965601 +Author: Behdad Esfahbod +Date: Tue Aug 25 18:55:34 2015 +0100 + + [GPOS] Rewrite cursive attachment slightly differently + + In anticipation for upcoming fix for bug reported by + Khaled in thread "Issue with cursive attachment". + + src/hb-ot-layout-gpos-table.hh | 36 ++++++++++++++++++++++++------------ + 1 file changed, 24 insertions(+), 12 deletions(-) + +commit fdd1770e006ca2d2973c049177ceda87a575e07f +Author: Behdad Esfahbod +Date: Mon Aug 24 13:49:55 2015 +0100 + + Add API/cmdline to show glyph extents when serializing buffer + + New API: HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS + + hb-shape now accepts --show-extents. + + Patch from Simon Cozens. + + src/hb-buffer-serialize.cc | 17 +++++++++++++++++ + src/hb-buffer.h | 3 ++- + util/hb-shape.cc | 2 ++ + util/options.cc | 1 + + util/options.hh | 2 ++ + 5 files changed, 24 insertions(+), 1 deletion(-) + +commit 2cee5b68a07b99214ef9428fe5d03e7b378a558f +Author: Behdad Esfahbod +Date: Mon Aug 24 13:45:12 2015 +0100 + + [ot-font] Fix short-offset calculation + + src/hb-ot-font.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit b50fcfa82994f93568a54dd1eb7fd327f6db5586 +Author: Behdad Esfahbod +Date: Sun Aug 23 14:42:20 2015 +0100 + + [ot-font] Implement glyph_extents() for TrueType fonts + + This brings ot-fonts into almost-complete shape and mostly in par with + ft font. + + src/Makefile.am | 1 + + src/hb-font.h | 9 +++-- + src/hb-ot-font.cc | 90 +++++++++++++++++++++++++++++++++++++++-- + src/hb-ot-glyf-table.hh | 104 + ++++++++++++++++++++++++++++++++++++++++++++++++ + src/hb-ot-head-table.hh | 3 +- + 5 files changed, 198 insertions(+), 9 deletions(-) + +commit 0299b45000b5047c0b9bf0fe51f3b8b68a7982f8 +Author: Behdad Esfahbod +Date: Fri Aug 21 12:44:36 2015 +0100 + + Make BYTE a real type + + src/hb-open-type-private.hh | 16 +++++++++++++++- + 1 file changed, 15 insertions(+), 1 deletion(-) + +commit ed6962c795ae7c54aaee9ed5667fa65ccf7412bf +Author: Behdad Esfahbod +Date: Thu Aug 20 15:39:53 2015 +0100 + + [coretext] Use i32 instead of u32 as well + + Shouldn't cause *any* functional changes, but is more correct. + + src/hb-coretext.cc | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +commit 163c435f1807c138da9f74f09d29d913eb9e29e9 +Author: Behdad Esfahbod +Date: Thu Aug 20 15:39:06 2015 +0100 + + [uniscribe] Fix negative offsets + + Ouch! + + src/hb-uniscribe.cc | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 789b89ef7130ffe5f22c571fc3cb4e6d35456654 +Author: Behdad Esfahbod +Date: Wed Aug 19 13:39:57 2015 +0100 + + 1.0.2 + + NEWS | 13 +++++++++++++ + configure.ac | 2 +- + 2 files changed, 14 insertions(+), 1 deletion(-) + +commit 958c268fa3a520666436e77a2111a3b564a36d96 +Author: Behdad Esfahbod +Date: Wed Aug 19 13:22:12 2015 +0100 + + [coretext] Add TODO item + + src/hb-coretext.cc | 1 + + 1 file changed, 1 insertion(+) + +commit 7c5bee09d9c7c25672c7c77572ebae0b731892d0 +Author: Behdad Esfahbod +Date: Wed Aug 19 13:20:31 2015 +0100 + + [uniscribe] Fix font scale handling + + By default shape at upem (or ppem), and scale results. + Similar to work done in CoreText backend, but using upem as default. + + src/hb-uniscribe.cc | 25 +++++++++++++++++++------ + 1 file changed, 19 insertions(+), 6 deletions(-) + +commit 902e74a098dad8c3b487856284f9fdf99b04f9f1 +Author: Behdad Esfahbod +Date: Tue Aug 18 18:55:03 2015 +0100 + + Commented-out code to print buffer before each lookup + + To be turned into a useful HB_DEBUG_SHAPE infrastructure... + + src/hb-ot-layout.cc | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit 75504a50488a6aac0b9789f728fb5b87e641d4c3 +Author: Behdad Esfahbod +Date: Tue Aug 18 18:47:02 2015 +0100 + + Allow serializing buffer with output-buffer being used + + Ie, don't call get_positions() if positions are not + requested for serialization. + + src/hb-buffer-serialize.cc | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit e47b772a56af44a9a4f9ec907ee2091b725b94c1 +Author: Behdad Esfahbod +Date: Tue Aug 18 18:42:47 2015 +0100 + + [ot] Change buffer content type right after we map to glyphs + + Needed for upcoming debug output changes. + + src/hb-ot-shape.cc | 2 ++ + 1 file changed, 2 insertions(+) + +commit d104415e4c1e0f9140f794cd8d09c6460c63e966 +Author: Behdad Esfahbod +Date: Tue Aug 18 17:33:34 2015 +0100 + + [Android.mk] Update for SEA removal and USE addition + + Android.mk | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit ddd6bf12f1cabaa298feed820313483b9893528c +Author: Behdad Esfahbod +Date: Tue Aug 18 15:55:09 2015 +0100 + + Don't declare dependency on freetype in harfbuzz.pc + + See comments. + + src/Makefile.am | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit 2c8b3b2e5312c9858584f568b1528c57e5bb8a10 +Author: Behdad Esfahbod +Date: Tue Aug 18 14:36:43 2015 +0100 + + [debug] Print lookup index in debug-apply output + + src/hb-ot-layout-gpos-table.hh | 5 ++++- + src/hb-ot-layout-gsub-table.hh | 5 ++++- + src/hb-ot-layout-gsubgpos-private.hh | 7 +++++-- + src/hb-ot-layout.cc | 3 ++- + 4 files changed, 15 insertions(+), 5 deletions(-) + +commit 50ad7788eeb7160caef4ec78e65c7c630e601b06 +Author: Behdad Esfahbod +Date: Tue Aug 18 10:22:16 2015 +0100 + + [coretext] Remove assert that kicks in on Mac OS 10.6 + + http://crbug.com/419769 + + src/hb-coretext.cc | 18 ++++++++++++++---- + 1 file changed, 14 insertions(+), 4 deletions(-) + +commit 2b646fa07f5f9d4d10d563a91d22a2750b5fc771 +Author: Behdad Esfahbod +Date: Mon Aug 17 16:03:28 2015 +0200 + + Remove unused function + + src/hb-ot-shape-complex-use.cc | 8 -------- + 1 file changed, 8 deletions(-) + +commit 23237b0279a04407addf33f599c45faa60f002ca +Author: ThePhD +Date: Fri Aug 14 01:19:08 2015 -0400 + + Last apparent boolean fix! + + src/hb-ot-shape-complex-use.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5c99cf93d6242803bddcac2ca8300fdec7e0f8a7 +Merge: 8ad89f0 539a610 +Author: ThePhD +Date: Fri Aug 14 01:02:00 2015 -0400 + + Merge branch 'master' into vc++-fixes + +commit 539a610e2e72375e598ab29fd390ed9ec93816d5 +Author: Behdad Esfahbod +Date: Tue Aug 11 12:58:49 2015 +0200 + + Add Libs.private and Requires.private to harfbuzz.pc + + Fixes https://bugs.freedesktop.org/show_bug.cgi?id=64501 + + configure.ac | 12 +++++++++--- + src/Makefile.am | 15 ++++++++++++--- + src/harfbuzz.pc.in | 2 ++ + 3 files changed, 23 insertions(+), 6 deletions(-) + +commit c7dfe316f8c0fc04b7976fca5e58eb46d91b4821 +Author: jfkthame +Date: Fri Aug 7 17:55:03 2015 +0100 + + Don't rely on .cluster in _hb_ot_shape_normalize() + + Fixes https://github.com/behdad/harfbuzz/pull/124 + + src/hb-ot-shape-normalize.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9099e48e29fe5cfdf8566c8f1ba6ddc8c0799e7e +Author: jfkthame +Date: Fri Aug 7 17:51:28 2015 +0100 + + Don't rely on .cluster field in fallback_position + + Fixes tests/cluster. + + Fixes https://github.com/behdad/harfbuzz/pull/123 + + src/hb-ot-shape-fallback.cc | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit f3792342f670978cdc3f8512fb5e80314ca0678d +Author: Behdad Esfahbod +Date: Sat Aug 8 18:02:18 2015 +0200 + + [tests] Add test for fallback positioning with cluster_level > 0 + + For https://github.com/behdad/harfbuzz/pull/123 + Currently fails. Fix coming. + + test/shaping/Makefile.am | 1 + + .../sha1sum/6466d38c62e73a39202435a4f73bf5d6acbb73c0.ttf | Bin 0 -> + 824 bytes + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/cluster.tests | 1 + + 5 files changed, 4 insertions(+) + +commit bd22a5cfae24b3b9253bccaeb139e698e74cd0c3 +Author: Behdad Esfahbod +Date: Fri Aug 7 11:13:27 2015 +0200 + + Bug 91559 - HarfBuzz 1.0.1: Inconsistent DLL files + specified/created... + + Fixes https://bugs.freedesktop.org/show_bug.cgi?id=91559 + + src/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 02d6439f420d959183dd446abd0b0118ee1ee061 +Merge: 9002c27 160f635 +Author: Behdad Esfahbod +Date: Mon Aug 3 22:47:18 2015 +0300 + + Merge pull request #122 from RomainNaour/static-fix + + fix static linking with icu-uc + +commit 160f635523d596f61e292776f638d4eb09673463 +Author: Romain Naour +Date: Wed Jul 22 23:26:23 2015 +0200 + + fix static linking with icu-uc + + When linking test-unicode statically it needs $(ICU_LIBS) + which contains all required flags. + Especially -lstdc++. + + Fixes: + http://autobuild.buildroot.net/results/210/2107f9dfb39eeb6559fb4271c7af8b39aef521ca/ + + Signed-off-by: Romain Naour + + test/api/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9002c27b2f54bb5135db92045c0d770b47317577 +Author: Behdad Esfahbod +Date: Mon Jul 27 12:17:54 2015 +0200 + + 1.0.1 + + NEWS | 9 ++++++++- + configure.ac | 2 +- + 2 files changed, 9 insertions(+), 2 deletions(-) + +commit f1c20e1ba5bf218df7dc3e198bdcf1f449fc9387 +Author: Behdad Esfahbod +Date: Mon Jul 27 12:16:02 2015 +0200 + + [USE] Fix out-of-bounds static array access + + src/hb-ot-shape-complex-use.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 260442346a5756c3538ee8fcbf157d1cddcf6f36 +Author: Behdad Esfahbod +Date: Sun Jul 26 23:39:10 2015 +0200 + + 1.0.0 + + NEWS | 10 ++++++++++ + configure.ac | 4 ++-- + src/Makefile.am | 2 +- + 3 files changed, 13 insertions(+), 3 deletions(-) + +commit df6cb84449a473d540821e41fb5007b59644780f +Merge: 2ed6be6 786ba45 +Author: Behdad Esfahbod +Date: Sun Jul 26 19:40:55 2015 +0200 + + Merge branch 'use' + +commit 2ed6be66703e6cc67f3a3746e197001dad3d9b74 +Author: Behdad Esfahbod +Date: Sun Jul 26 19:29:53 2015 +0200 + + 0.9.42 + + NEWS | 12 ++++++++++++ + configure.ac | 2 +- + 2 files changed, 13 insertions(+), 1 deletion(-) + +commit 23e56e088a721863cfdef4f027fb66eecbd77457 +Author: Behdad Esfahbod +Date: Sat Jul 25 17:36:46 2015 +0200 + + Fix broken sentence + + src/hb-set-private.hh | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +commit 91a2e5d2878a8c0b4d4500e3d52d4fbaaf1ac0d7 +Author: Grigori Goronzy +Date: Wed Jul 8 23:28:11 2015 +0200 + + Update UCDN to upstream commit 8af93f30 + + This adds support for Unicode 8.0 and fixes a bug with wrong + properties + for ranges of codepoints. + + src/hb-ucdn.cc | 6 + + src/hb-ucdn/ucdn.h | 6 + + src/hb-ucdn/unicodedata_db.h | 2167 + +++++++++++++++++++++--------------------- + 3 files changed, 1118 insertions(+), 1061 deletions(-) + +commit 786ba45847127b9cd4d9c0c01ae0e6c61f3a8e06 +Author: Behdad Esfahbod +Date: Thu Jul 23 13:04:34 2015 +0100 + + [test] Encode Kharoshti text + + Ouch! + + .../in-tree/shaper-use/script-kharoshti/misc.txt | 72 + +++++++++++----------- + 1 file changed, 36 insertions(+), 36 deletions(-) + +commit b4231255032e243153a6f32cf8c93c158cb0bf6a +Author: Behdad Esfahbod +Date: Thu Jul 23 13:01:55 2015 +0100 + + [test] Add Batak and Buginese test texts + + test/shaping/texts/in-tree/shaper-use/MANIFEST | 2 + + .../texts/in-tree/shaper-use/script-batak/MANIFEST | 1 + + .../texts/in-tree/shaper-use/script-batak/misc.txt | 9 +++ + .../in-tree/shaper-use/script-buginese/MANIFEST | 1 + + .../in-tree/shaper-use/script-buginese/misc.txt | 70 + ++++++++++++++++++++++ + 5 files changed, 83 insertions(+) + +commit b8c159ffccad090974a2b97be0a0140fa09af132 +Author: Behdad Esfahbod +Date: Thu Jul 23 12:59:17 2015 +0100 + + [test] Remove shaper-sea texts under shaper-use + + test/shaping/texts/in-tree/MANIFEST | + 1 - + test/shaping/texts/in-tree/shaper-sea/MANIFEST | + 2 -- + test/shaping/texts/in-tree/shaper-sea/script-cham/MANIFEST | + 1 - + test/shaping/texts/in-tree/shaper-sea/script-tai-tham/MANIFEST | + 1 - + test/shaping/texts/in-tree/shaper-use/MANIFEST | + 2 ++ + .../{shaper-sea/script-cham/misc => shaper-use/script-cham}/MANIFEST + | 0 + .../{shaper-sea/script-cham/misc => shaper-use/script-cham}/misc.txt + | 0 + .../script-tai-tham/misc => shaper-use/script-tai-tham}/MANIFEST + | 0 + .../script-tai-tham/misc => shaper-use/script-tai-tham}/misc.txt + | 0 + .../script-tai-tham/misc => shaper-use/script-tai-tham}/torture.txt + | 0 + 10 files changed, 2 insertions(+), 5 deletions(-) + +commit 67ba7320cc5545baeacfcff64cea338223b9bd6d +Author: Behdad Esfahbod +Date: Thu Jul 23 12:58:21 2015 +0100 + + [test] Remove New Tai Lue texts + + New Tai Lue changed encoding to visual, boring, model. + + test/shaping/texts/in-tree/shaper-sea/MANIFEST | + 1 - + test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/MANIFEST | + 1 - + test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/misc/MANIFEST | + 1 - + test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/misc/misc.txt | + 1 - + 4 files changed, 4 deletions(-) + +commit c81d957a264539dfe3252f9a94ee066c4a44edf4 +Author: Behdad Esfahbod +Date: Thu Jul 23 12:50:48 2015 +0100 + + [test] Add tests for improved 'vert' feature + + test/shaping/Makefile.am | 1 + + .../sha1sum/191826b9643e3f124d865d617ae609db6a2ce203.ttf | Bin 0 -> + 2140 bytes + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/vertical.tests | 1 + + 5 files changed, 4 insertions(+) + +commit 8a6a16dbcb1808c7ed50f9ba320384565bbf405a +Author: Behdad Esfahbod +Date: Thu Jul 23 12:49:09 2015 +0100 + + [test] Add recently added test + + Ouch. + + test/shaping/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 895fb31c7f0201f13df5a6866b367476bc4aab2e +Author: Behdad Esfahbod +Date: Thu Jul 23 12:14:03 2015 +0100 + + [test] Support additional options to hb-shape in micro-test suite + + test/shaping/record-test.sh | 47 + ++++++++++++++++++---- + test/shaping/run-tests.sh | 9 ++++- + test/shaping/tests/arabic-fallback-shaping.tests | 2 +- + test/shaping/tests/arabic-feature-order.tests | 6 +-- + test/shaping/tests/context-matching.tests | 6 +-- + test/shaping/tests/default-ignorables.tests | 2 +- + test/shaping/tests/hangul-jamo.tests | 4 +- + test/shaping/tests/indic-joiner-candrabindu.tests | 4 +- + test/shaping/tests/indic-old-spec.tests | 4 +- + test/shaping/tests/indic-pref-blocking.tests | 4 +- + .../tests/mongolian-variation-selector.tests | 6 +-- + test/shaping/tests/zero-width-marks.tests | 4 +- + 12 files changed, 67 insertions(+), 31 deletions(-) + +commit 0f98fe88f42471eb8fb28d08d45eca9cd8303f7a +Author: Behdad Esfahbod +Date: Thu Jul 23 11:52:11 2015 +0100 + + [ot] Search globally for 'vert' feature if not found in specified + script/lang + + Fixes https://github.com/behdad/harfbuzz/issues/63 + + src/hb-ot-layout-private.hh | 9 +++++++++ + src/hb-ot-layout.cc | 22 ++++++++++++++++++++++ + src/hb-ot-map-private.hh | 7 ++++--- + src/hb-ot-map.cc | 10 ++++++++++ + src/hb-ot-shape.cc | 6 +++++- + 5 files changed, 50 insertions(+), 4 deletions(-) + +commit f327aacfa107bbef0c823ef9c3b7dfc91316040c +Author: Behdad Esfahbod +Date: Thu Jul 23 11:32:59 2015 +0100 + + [ot] Minor + + src/hb-ot-shape.cc | 11 +++-------- + 1 file changed, 3 insertions(+), 8 deletions(-) + +commit d78463c8016ff1852233479a1ebde30c3bb6de6e +Author: Behdad Esfahbod +Date: Thu Jul 23 10:11:35 2015 +0100 + + Minor debug output fix + + src/hb-ot-layout.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d99f50bde0e8be0866385ca6886938d2023dbd4f +Author: Behdad Esfahbod +Date: Thu Jul 23 10:08:48 2015 +0100 + + Add missing TRACE_RETURN + + src/hb-ot-layout-gsubgpos-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2dc8e3f470d7c0b579f867605b8bf40688bc5722 +Author: Behdad Esfahbod +Date: Thu Jul 23 10:07:21 2015 +0100 + + [ot] Add missing return! + + src/hb-ot-layout-gsubgpos-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 582069172c39326c7f94373793c656439a4c2b59 +Author: Behdad Esfahbod +Date: Wed Jul 22 18:44:59 2015 +0100 + + Add test case for deleting default ignorables with positioning + + .../sha1sum/051d92f8bc6ff724511b296c27623f824de256e9.ttf | Bin 0 -> + 2028 bytes + test/shaping/fonts/sha1sum/MANIFEST | 1 + + test/shaping/tests/MANIFEST | 1 + + test/shaping/tests/default-ignorables.tests | 1 + + 4 files changed, 3 insertions(+) + +commit 8cfbc304ee563ec96e402beed34b10b6c0950a6a +Author: Behdad Esfahbod +Date: Wed Jul 22 18:41:10 2015 +0100 + + Fix hide-default-ignorables after + f0010dfd01ef4a927b0bdc175dd4e343a8637174 + + We can't delete things before hb_ot_layout_position_finish(). So, + just zero the advance before it, and remove later. + + src/hb-ot-shape.cc | 25 +++++++++++++++++++------ + 1 file changed, 19 insertions(+), 6 deletions(-) + +commit 2dbd3d29d6548bd96fd976606ed689fac8ad8817 +Author: Behdad Esfahbod +Date: Wed Jul 22 18:28:39 2015 +0100 + + Fix hide-ignorables if font doesn't have space glyph + + Was broken by 82b521aeb7cc73879b44ca4278d6fa8b4347527f, as we have + positioning data by then and can't use the output buffer. Ouch! + + src/hb-buffer-private.hh | 18 ------------------ + src/hb-ot-shape.cc | 44 + +++++++++++++++++++++++++++++++++++--------- + 2 files changed, 35 insertions(+), 27 deletions(-) + +commit 4ba796b26ee62de0d2830a550f3aa3b4aecf6f59 +Author: Behdad Esfahbod +Date: Wed Jul 22 17:41:31 2015 +0100 + + Refactor _hb_glyph_info_is_default_ignorable() + + src/hb-ot-layout-gsubgpos-private.hh | 3 +-- + src/hb-ot-layout-private.hh | 4 +++- + src/hb-ot-shape.cc | 9 +++------ + 3 files changed, 7 insertions(+), 9 deletions(-) + +commit f0010dfd01ef4a927b0bdc175dd4e343a8637174 +Author: Behdad Esfahbod +Date: Wed Jul 22 17:36:23 2015 +0100 + + [ot] Hide default-ignorables before finishing off positioning + + For example, fixes the following sequence with Arial XP: + 628 25cc 651 25cc 64e 3a 20 628 651 34f 64e + 628 25cc 64e 25cc 651 3a 20 628 64e 34f 651 + + Discovered as part of: + https://bugs.freedesktop.org/show_bug.cgi?id=85873 + + src/hb-ot-shape.cc | 125 + +++++++++++++++++++++++++++-------------------------- + 1 file changed, 63 insertions(+), 62 deletions(-) + +commit 376d587f36b4ff10342ee6ca3bacd73532ea44c8 +Author: Behdad Esfahbod +Date: Wed Jul 22 16:51:12 2015 +0100 + + Implement more granular cluster-merging + + TODO: Documentation. + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=71445 + + NEWS | 8 +++++++ + src/hb-buffer-private.hh | 1 + + src/hb-buffer.cc | 46 + ++++++++++++++++++++++++++++++++++----- + src/hb-buffer.h | 12 ++++++++++ + src/hb-ot-shape-complex-hangul.cc | 13 +++++------ + src/hb-ot-shape.cc | 7 ++++++ + util/options.cc | 1 + + util/options.hh | 3 +++ + 8 files changed, 77 insertions(+), 14 deletions(-) + +commit a60e2cfa395718cde48eb81f43adc27b4a92e117 +Author: Behdad Esfahbod +Date: Wed Jul 22 15:49:08 2015 +0100 + + [ot] Don't rely on cluster numbers for ensure_native_direction() + + src/hb-ot-shape.cc | 19 ++++++++++++++++++- + 1 file changed, 18 insertions(+), 1 deletion(-) + +commit 701112dad9f6e690b253f1e64f4e7e549f5ae65f +Author: Behdad Esfahbod +Date: Wed Jul 22 15:42:20 2015 +0100 + + [ot] Simplify form_clusters() + + src/hb-buffer-private.hh | 9 ++++++++- + src/hb-buffer.cc | 7 ++----- + src/hb-ot-shape.cc | 11 +++++++++-- + 3 files changed, 19 insertions(+), 8 deletions(-) + +commit 7b8b63adc5e0389fc4cf2720ef7e5804ab6c29cc +Author: Behdad Esfahbod +Date: Wed Jul 22 15:24:26 2015 +0100 + + [ot] Don't mirror character if font doesn't support mirrored + character! + + src/hb-ot-shape.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 97d7c3a100e2673279f066540229d229aaf0df78 +Author: Behdad Esfahbod +Date: Wed Jul 22 14:28:25 2015 +0100 + + [graphite2] Fix bunch of stuff + + Based on patch from Martin Hosken, with review from Jonathan and I. + + src/hb-graphite2.cc | 82 + +++++++++++++++++++++++++++++++++++------------------ + 1 file changed, 54 insertions(+), 28 deletions(-) + +commit ea7f8414e34d4b5efc7b98974637c08f75440f0e +Author: Behdad Esfahbod +Date: Wed Jul 22 13:53:45 2015 +0100 + + [graphite2] Enlarge buffer for output glyphs! + + src/hb-graphite2.cc | 1 + + 1 file changed, 1 insertion(+) + +commit 9cd59db1af47ff511edf251949d58b82673cf704 +Author: Behdad Esfahbod +Date: Wed Jul 22 13:27:06 2015 +0100 + + [USE] Implement topographical features for non-Arabic-joining scripts + + This works per-syllable as per the spec, but we think it should be per + spacing/base/??? glyph instead. + + src/hb-ot-shape-complex-use.cc | 87 + ++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 80 insertions(+), 7 deletions(-) + +commit ecb0b24ef3f8177e7c789f45a2e858bd67e31be3 +Author: Behdad Esfahbod +Date: Wed Jul 22 12:02:09 2015 +0100 + + Use foreach_cluster in Indic shaper + + src/hb-ot-shape-complex-indic.cc | 90 + +++++++++------------------------------- + 1 file changed, 19 insertions(+), 71 deletions(-) + +commit 56f71ff98890fc4fd13e8d9743dc34c4b9407309 +Author: Behdad Esfahbod +Date: Wed Jul 22 11:58:11 2015 +0100 + + Use foreach_syllable in Myanmar shaper + + src/hb-ot-shape-complex-myanmar.cc | 62 + ++++++++------------------------------ + 1 file changed, 12 insertions(+), 50 deletions(-) + +commit ac596511a8c9eeaeb455ca16b5b9c5f1b9923b3a +Author: Behdad Esfahbod +Date: Wed Jul 22 11:54:02 2015 +0100 + + Add foreach_syllable + + Use it in USE. + + src/hb-ot-layout-private.hh | 24 ++++++++ + src/hb-ot-shape-complex-use.cc | 129 + +++++++++++++---------------------------- + 2 files changed, 64 insertions(+), 89 deletions(-) + +commit 8ba9e689680f7685c04cfe7c6019222bdf0c52b0 +Author: Behdad Esfahbod +Date: Wed Jul 22 11:16:01 2015 +0100 + + [USE] Do Arabic-like shaping + + src/hb-ot-shape-complex-use.cc | 77 + ++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 75 insertions(+), 2 deletions(-) + +commit 9daf2dfb6bd5683fd951bdf166c8b87938257e52 +Author: Behdad Esfahbod +Date: Wed Jul 22 10:32:30 2015 +0100 + + Add hb-ot-shape-complex-arabic-private.hh + + src/Makefile.am | 1 + + src/hb-ot-shape-complex-arabic-private.hh | 50 + +++++++++++++++++++++++++++++++ + src/hb-ot-shape-complex-arabic.cc | 37 +++++++++++++---------- + 3 files changed, 73 insertions(+), 15 deletions(-) + +commit a51a661fe1dcfdd3a274a6be6ad741c68d430c8c +Author: Behdad Esfahbod +Date: Tue Jul 21 18:24:21 2015 +0100 + + [USE] Only reorder the first component of a split left mark + + src/hb-ot-shape-complex-use.cc | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit a08a278b15c7e57a1d0a783f2bc877471b9d8229 +Author: Behdad Esfahbod +Date: Tue Jul 21 18:09:40 2015 +0100 + + [USE] Don't compose split matras + + Same logic as in Indic shaper. + + src/hb-ot-shape-complex-use.cc | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +commit 21cb08a417f1203523191192d6a342e8cd0ea14c +Author: Behdad Esfahbod +Date: Tue Jul 21 17:47:06 2015 +0100 + + Remove unused SEA shaper + + src/Makefile.am | 4 - + src/hb-ot-shape-complex-sea-machine.rl | 102 --------- + src/hb-ot-shape-complex-sea.cc | 380 + --------------------------------- + 3 files changed, 486 deletions(-) + +commit db1e9cdd41ff7c97c29b4d9b64b2351ed0ef0403 +Author: Behdad Esfahbod +Date: Tue Jul 21 17:46:06 2015 +0100 + + Retire SEA shaper in favor of USE + + src/hb-ot-shape-complex-private.hh | 25 +++---------------------- + 1 file changed, 3 insertions(+), 22 deletions(-) + +commit 87dde9c64753dea4017f11a7734e7528b8eecac0 +Author: Behdad Esfahbod +Date: Tue Jul 21 17:31:43 2015 +0100 + + [USE] Only use USE shaper if script system is not DFLT + + Same logic as Indic and SEA. + + src/hb-ot-shape-complex-private.hh | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +commit 29832d797ff2f3a96721dd44f2f03a83fb2e8dda +Author: Behdad Esfahbod +Date: Tue Jul 21 17:24:18 2015 +0100 + + Route misc untested scripts through USE shaper instead of Indic + + These were never tested with Indic shaper, and indeed wouldn't + work there + because they didn't have their viramas and other config defined. + They are + all also supported by MS through USE, so route them there. + + src/hb-ot-shape-complex-private.hh | 91 + +++++--------------------------------- + 1 file changed, 11 insertions(+), 80 deletions(-) + +commit 40c4a991c7ea18017273ff8993eecc3953869e69 +Author: Behdad Esfahbod +Date: Tue Jul 21 17:14:54 2015 +0100 + + [USE] Implement dotted-circle + + This makes USE feature-complete as far as the Indic-like features + are concerned. + + src/hb-ot-shape-complex-use-machine.rl | 10 ++++++++++ + src/hb-ot-shape-complex-use.cc | 18 +++++++++++++++--- + 2 files changed, 25 insertions(+), 3 deletions(-) + +commit 7ce03ebe7c525919ce22d9094480847ff1b3c2b2 +Author: Behdad Esfahbod +Date: Tue Jul 21 16:55:26 2015 +0100 + + [USE] Move pref + + src/hb-ot-shape-complex-use-machine.rl | 9 +++++---- + src/hb-ot-shape-complex-use-private.hh | 9 +++++---- + src/hb-ot-shape-complex-use.cc | 24 ++++++++++++++++++++++-- + 3 files changed, 32 insertions(+), 10 deletions(-) + +commit 2d4b62ead931b13f95f5dc0e5b740d997a8d1a8e +Author: Behdad Esfahbod +Date: Tue Jul 21 16:46:37 2015 +0100 + + [USE] Fix-up variation selectors and word joiner in table + + src/gen-use-table.py | 7 ++++++- + src/hb-ot-shape-complex-use-table.cc | 34 + +++++++++++++++++++++++----------- + 2 files changed, 29 insertions(+), 12 deletions(-) + +commit ad7178227f16abc17456f122deac1508031cbbc3 +Author: Behdad Esfahbod +Date: Tue Jul 21 16:43:27 2015 +0100 + + [USE] Use a couple warnings + + src/gen-use-table.py | 20 ++++----- + src/hb-ot-shape-complex-use-table.cc | 82 + ++++++++++++++++++------------------ + 2 files changed, 51 insertions(+), 51 deletions(-) + +commit a85c4da9b1750c2f994f9f85226a3e755fafe50b +Author: Behdad Esfahbod +Date: Tue Jul 21 16:07:10 2015 +0100 + + [USE] Move rphf + + src/hb-ot-shape-complex-use.cc | 105 + ++++++++++++++--------------------------- + 1 file changed, 35 insertions(+), 70 deletions(-) + +commit 5b5617e0664e59770910d04d15175f643a5ffb73 +Author: Behdad Esfahbod +Date: Tue Jul 21 15:52:15 2015 +0100 + + Add FLAG_UNSAFE() + + Unused right now. + + src/hb-private.hh | 1 + + 1 file changed, 1 insertion(+) + +commit f8160a495966c790b79134a9f9382b6545f8c733 +Author: Behdad Esfahbod +Date: Tue Jul 21 15:50:02 2015 +0100 + + Add FLAG_SAFE() for values known to be small-enough + + And add check to FLAG() + + src/hb-ot-shape-complex-arabic.cc | 2 +- + src/hb-ot-shape-complex-indic.cc | 12 ++++++------ + src/hb-ot-shape-complex-myanmar.cc | 2 +- + src/hb-private.hh | 5 +++-- + src/hb-unicode-private.hh | 2 +- + 5 files changed, 12 insertions(+), 11 deletions(-) + +commit 366aeaad006b230481a3c08ab4d239fb6b64fef8 +Author: Behdad Esfahbod +Date: Tue Jul 21 15:45:48 2015 +0100 + + Add note re ASSERT_STATIC_EXPR_ZERO() + + src/hb-private.hh | 2 ++ + 1 file changed, 2 insertions(+) + +commit d6adca9fbbbd6fc7c8906121b50c3930fbe2de8e +Author: Behdad Esfahbod +Date: Tue Jul 21 15:17:27 2015 +0100 + + Remove unused macro ASSERT_STATIC_EXPR() + + src/hb-ot-shape-complex-arabic-win1256.hh | 4 ++-- + src/hb-ot-shape-complex-indic-private.hh | 2 -- + src/hb-private.hh | 1 - + 3 files changed, 2 insertions(+), 5 deletions(-) + +commit 1025e1a9e7785ac67cc90d05b02862e38b3e6026 +Author: Behdad Esfahbod +Date: Tue Jul 21 15:05:35 2015 +0100 + + Use unsigned in FLAG() + + src/hb-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit cf59c7589c2b4064f4b9f4936115f830089a8ee7 +Author: Behdad Esfahbod +Date: Tue Jul 21 14:51:45 2015 +0100 + + [USE] Use use_category() for rphf/pref memory + + src/hb-ot-shape-complex-use.cc | 63 + +++++++++++++++--------------------------- + 1 file changed, 22 insertions(+), 41 deletions(-) + +commit 595936ec25e9c0924851bd1aa1af5eed3723b54f +Author: Behdad Esfahbod +Date: Tue Jul 21 14:15:35 2015 +0100 + + [USE] Hook of rphf and pref custom processing + + Still no reordering. + + src/hb-ot-layout-private.hh | 8 ++ + src/hb-ot-shape-complex-use.cc | 181 + +++++++++++++++++++++++++++++++++++++++-- + 2 files changed, 181 insertions(+), 8 deletions(-) + +commit ba72801325e4bd58f7597938d4409762c9fa530c +Author: Behdad Esfahbod +Date: Tue Jul 21 11:57:23 2015 +0100 + + [USE] Add CGJ to table + + src/gen-use-table.py | 13 ++++++++++--- + src/hb-ot-shape-complex-use-table.cc | 1 + + 2 files changed, 11 insertions(+), 3 deletions(-) + +commit 4febed61edc5367543e5a206ae01d3393841b612 +Author: Behdad Esfahbod +Date: Tue Jul 21 10:24:32 2015 +0100 + + [USE] Set up features + + src/hb-ot-shape-complex-use.cc | 68 + +++++++++++++++++++++++------------------- + 1 file changed, 38 insertions(+), 30 deletions(-) + +commit 52a957795697085a5d379921ddd8aa6cf2f1a99d +Author: Behdad Esfahbod +Date: Tue Jul 21 10:02:04 2015 +0100 + + [USE] Hook up new scripts to USE shaper + + Don't reroute scripts that we were routing to other shapers + before (just yet). + + src/hb-ot-shape-complex-private.hh | 71 + ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 71 insertions(+) + +commit b4c0829bc18b696f140a260fa2e1089d10164519 +Author: Behdad Esfahbod +Date: Tue Jul 21 09:31:19 2015 +0100 + + [USE] Remove unused Unicode data enums from USE C++ side + + src/hb-ot-shape-complex-use-private.hh | 66 + +--------------------------------- + src/hb-ot-shape-complex-use.cc | 14 ++------ + 2 files changed, 3 insertions(+), 77 deletions(-) + +commit 44910cef626e6d03baa4d89d8fbe2c088971902d +Author: Behdad Esfahbod +Date: Mon Jul 20 18:01:10 2015 +0100 + + [USE] Finish converting Unicode positional categories to USE + + Even compiles. + + src/gen-use-table.py | 114 +++++- + src/hb-ot-shape-complex-use-table.cc | 702 + ++++++++++++++++++----------------- + 2 files changed, 467 insertions(+), 349 deletions(-) + +commit ad725552521273a1f571f04bc96a04221c3e067a +Author: Behdad Esfahbod +Date: Mon Jul 20 17:00:06 2015 +0100 + + [USE] Map from Unicode data to USE syllabic categories + + Positional sub-categories not applied yet. + + src/gen-use-table.py | 128 ++-- + src/hb-ot-shape-complex-use-table.cc | 1062 + ++++++++++++---------------------- + 2 files changed, 409 insertions(+), 781 deletions(-) + +commit 20e246e674155d5fb6527722fc3ef3accf2413df +Author: Behdad Esfahbod +Date: Mon Jul 20 15:56:19 2015 +0100 + + [USE] Start moving Unicode-to-USE mapping into Python code + + src/Makefile.am | 2 +- + src/gen-use-table.py | 176 + +++++++++++++++++++++++++++++++++-- + src/hb-ot-shape-complex-use-table.cc | 3 +- + 3 files changed, 169 insertions(+), 12 deletions(-) + +commit eb74535cc2c0d0de41e54e75bdc71825ec969523 +Author: Behdad Esfahbod +Date: Mon Jul 20 15:33:25 2015 +0100 + + [USE] Fix Number clusters + + The spec wrongly has "H" where "HN" is meant. + + src/hb-ot-shape-complex-use-machine.rl | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit a9663958fe861950b6f389b389f146232b2cd909 +Author: Behdad Esfahbod +Date: Mon Jul 20 14:24:55 2015 +0100 + + [USE] Start putting together the shaper body + + src/hb-ot-shape-complex-use-private.hh | 2 +- + src/hb-ot-shape-complex-use.cc | 339 + +++++++++++++++++++++++++++++++++ + 2 files changed, 340 insertions(+), 1 deletion(-) + +commit e0eabd7f67462ac34fbfc749d897be478fbd1224 +Author: Behdad Esfahbod +Date: Mon Jul 20 13:30:51 2015 +0100 + + [USE] Put a Ragel machine together + + Grammar from the spec! + + src/hb-ot-shape-complex-use-machine.rl | 169 + +++++++++++++++++++++++++++++++++ + src/hb-ot-shape-complex-use-private.hh | 160 + +++++++++++++++++++++++++++++++ + 2 files changed, 329 insertions(+) + +commit fd74b939b176f47d34d34b3d33e2a09d255c2d9e +Author: Behdad Esfahbod +Date: Mon Jul 20 13:30:45 2015 +0100 + + Minor + + src/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5e5c8560cca3cb9c6be90c7c18ecb77d5cca0c0f +Author: Behdad Esfahbod +Date: Mon Jul 20 12:01:20 2015 +0100 + + [USE] Minor optimization of USE table + + src/gen-use-table.py | 2 +- + src/hb-ot-shape-complex-use-table.cc | 30 ++++++++++++------------------ + 2 files changed, 13 insertions(+), 19 deletions(-) + +commit 14b12f92a9ef7db57c5252ef0442239319ce4bca +Author: Behdad Esfahbod +Date: Mon Jul 20 11:57:44 2015 +0100 + + [USE] Add Kharoshti test data from Unicode proposal + + test/shaping/texts/in-tree/MANIFEST | 1 + + test/shaping/texts/in-tree/shaper-use/MANIFEST | 1 + + .../in-tree/shaper-use/script-kharoshti/MANIFEST | 1 + + .../in-tree/shaper-use/script-kharoshti/misc.txt | 36 + ++++++++++++++++++++++ + 4 files changed, 39 insertions(+) + +commit c48ff288522f33dc6c78520de0a0a74306630895 +Author: Behdad Esfahbod +Date: Mon Jul 20 11:46:17 2015 +0100 + + [USE] Build Universal Shaping Engine data table from Unicode 8 files + + src/gen-use-table.py | 35 +- + src/hb-ot-shape-complex-use-table.cc | 1016 + ++++++++++++++++++++++++++++++++++ + 2 files changed, 1032 insertions(+), 19 deletions(-) + +commit e2c95116e1423f83a692d6170553d0cc95733d24 +Author: Behdad Esfahbod +Date: Mon Jul 20 11:32:48 2015 +0100 + + [USE] Add Universal Shaping Engine to Makefile + + src/Makefile.am | 23 +++- + src/gen-use-table.py | 237 + +++++++++++++++++++++++++++++++++ + src/hb-ot-shape-complex-use-machine.rl | 0 + src/hb-ot-shape-complex-use-private.hh | 0 + src/hb-ot-shape-complex-use-table.cc | 0 + src/hb-ot-shape-complex-use.cc | 0 + 6 files changed, 254 insertions(+), 6 deletions(-) + +commit 41a29af8053782e3a9c6a96a394bd76ef6d42099 +Author: Behdad Esfahbod +Date: Wed Jul 15 01:39:57 2015 +0100 + + Update Arabic shaping table for Unicode 8.0 + + src/hb-ot-shape-complex-arabic-table.hh | 26 +++++++++++++------------- + 1 file changed, 13 insertions(+), 13 deletions(-) + +commit 64a2726e2c6efce4379a7609024ec21eb4b5e4dc +Author: Behdad Esfahbod +Date: Wed Jul 15 01:36:39 2015 +0100 + + Add Unicode 8.0 scripts + + Based on https://bugzilla.mozilla.org/show_bug.cgi?id=1183209 + + src/hb-common.cc | 3 +++ + src/hb-common.h | 7 +++++++ + 2 files changed, 10 insertions(+) + +commit 9ae156b76820d9079bae062e7e38c34a386d9bd2 +Author: Behdad Esfahbod +Date: Sun Jul 5 22:43:17 2015 +0100 + + Fix pragma usage + + https://bugs.freedesktop.org/show_bug.cgi?id=91228 + + Commit cdcdfe61b97a0a48ccf834b6d924d187da9609be changed two `#pragma + message` to `#pragma error` in hb-unicode.cc, however MSVC uses + #error, + just like the #else branch. `#pragma error` is an unknown pragma so + MSVC does not fail the build because of it, which I believe was the + intention of that commit. + + If it's meant to be an #error, then the #ifdef for _MSC_VER can be + removed entirely. + + src/hb-unicode.cc | 5 ----- + src/hb-warning.cc | 10 ---------- + 2 files changed, 15 deletions(-) + +commit 8ad89f057d737ccbc6f411e9ebcf11b8130a50bb +Author: ThePhD +Date: Tue Jun 23 09:09:24 2015 -0400 + + Spelling words is not my strong point. + + src/hb-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e0a828ecbd708757d67977f7e92a6f4c1b0b92fd +Author: ThePhD +Date: Tue Jun 23 09:07:17 2015 -0400 + + Back to using regular `strdup`, with an `hb-private.hh` fix that + special-cases VC++'s + definition and usage of the words + + src/hb-common.cc | 2 +- + src/hb-private.hh | 3 +++ + 2 files changed, 4 insertions(+), 1 deletion(-) + +commit 8e545d59610211261e684c10158b9e5df6fae24d +Author: ThePhD +Date: Mon Jun 22 22:29:04 2015 -0400 + + Fix all VC++ warnings and errors in the current commit's builds. + + src/hb-common.cc | 4 ++-- + src/hb-fallback-shape.cc | 2 +- + src/hb-ot-layout.cc | 2 +- + src/hb-ot-map.cc | 2 +- + src/hb-ot-shape-complex-hangul.cc | 2 +- + src/hb-ot-shape-complex-hebrew.cc | 2 +- + src/hb-ot-shape-complex-indic.cc | 4 ++-- + src/hb-ot-shape-normalize.cc | 6 +++--- + src/hb-ot-shape.cc | 2 +- + 9 files changed, 13 insertions(+), 13 deletions(-) + +commit 5f13bbd9d4b0970851626e2ce3cf4ecb3cfde801 +Author: Behdad Esfahbod +Date: Fri Jun 19 13:31:49 2015 -0700 + + When removing default-ignorables, merge clusters + + Fixes test-shape, and: + https://code.google.com/p/chromium/issues/detail?id=497578 + + src/hb-buffer-private.hh | 2 ++ + src/hb-buffer.cc | 36 ++++++++++++++++++++++++++++++++++-- + src/hb-ot-shape.cc | 2 +- + 3 files changed, 37 insertions(+), 3 deletions(-) + +commit 82b521aeb7cc73879b44ca4278d6fa8b4347527f +Author: Behdad Esfahbod +Date: Fri Jun 19 11:57:57 2015 -0700 + + Rewrite hide_default_ignorables + + Separate the loops for the two cases of replacing with space + and deleting. For deleting, use the out-buffer machinery. + + Needed for upcoming cluster merge fix. + + src/hb-buffer-private.hh | 18 ++++++++++++++ + src/hb-ot-shape.cc | 65 + +++++++++++++++++++++++++++++------------------- + 2 files changed, 57 insertions(+), 26 deletions(-) + +commit b3a2f6afbac1956b65f29a17b9dc896e86135329 +Author: Behdad Esfahbod +Date: Thu Jun 18 17:15:33 2015 -0700 + + [test] Add test for cluster merging + + Based on test from + https://code.google.com/p/chromium/issues/detail?id=497578 + + Currently fails. Basically, if there's a default_ignorable at the + start of text, and font has no space glyph, we remove the + default_ignorable, + and that makes the first char in text to correspond to no cluster. + + Fix coming. + + test/api/test-shape.c | 43 +++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 43 insertions(+) + +commit a6446d44e6d04e1eeea994682e29f9cb6265f7f6 +Author: Behdad Esfahbod +Date: Thu Jun 18 11:14:56 2015 -0700 + + 0.9.41 + + NEWS | 10 ++++++++++ + configure.ac | 2 +- + 2 files changed, 11 insertions(+), 1 deletion(-) + +commit cd042fc8c4a3984c3647cd22a27c34f00636f6e8 +Author: Behdad Esfahbod +Date: Thu Jun 18 10:55:13 2015 -0700 + + [util] Disable hb-fc-list for now + + Until I figure out what to do about the API, and finalize + the tool. + + util/Makefile.am | 28 ++++++++++++++-------------- + 1 file changed, 14 insertions(+), 14 deletions(-) + +commit 351f68f4e01a107f62e4eb3458d7c7ae379939fb +Author: Behdad Esfahbod +Date: Fri Jun 12 17:46:06 2015 -0700 + + [bindings] Fix hb_language_get_default() and hb_ot_tag_to_language() + + Part of https://github.com/behdad/harfbuzz/issues/91 + + src/hb-common.cc | 2 +- + src/hb-ot-tag.cc | 9 +++++++++ + 2 files changed, 10 insertions(+), 1 deletion(-) + +commit f0c80060763475aa34a18ecbef600b6811855cb6 +Author: Behdad Esfahbod +Date: Fri Jun 12 17:37:41 2015 -0700 + + [TravisCI] Hook up Coverity + + First try... + + .travis.yml | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit 8ac446908ca75bea989414a0f551a6da8885bf52 +Author: Behdad Esfahbod +Date: Fri Jun 12 17:29:05 2015 -0700 + + Add Coverity Scan badge + + README | 1 + + 1 file changed, 1 insertion(+) + +commit a5e4f6d6088f6ed37fb1d68d3682b8eb4c9b46fe +Author: Behdad Esfahbod +Date: Wed Jun 10 10:57:46 2015 -0700 + + Fix warnings: "member call on null pointer of type" + + https://bugzilla.mozilla.org/show_bug.cgi?id=1167119 + + src/hb-private.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 16dac7eccf04bb357e95a8e4c18c8418dcfb4030 +Author: Behdad Esfahbod +Date: Wed Jun 3 12:07:46 2015 -0700 + + Fix build + + util/options.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8dacb7f8b46c70f22b70c78e0a8efc3309137650 +Author: Behdad Esfahbod +Date: Wed Jun 3 11:53:42 2015 -0700 + + Add include check to hb-ot-font.h + + src/hb-ot-font.h | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 37c8daf724add4a41a06385e571277d137dc2a2f +Merge: f1b4430 01c3a88 +Author: Behdad Esfahbod +Date: Mon Jun 1 13:27:37 2015 -0700 + + Merge pull request #111 from brawer/since + + Fix "Since:" tags + +commit 01c3a88543850c87483fd8671044df53b368c520 +Author: Sascha Brawer +Date: Mon Jun 1 13:22:01 2015 +0200 + + Fix "Since:" tags + + Based on data from http://upstream-tracker.org/versions/harfbuzz.html + Resolves #103 + + src/hb-buffer.cc | 32 +++++++++++++++++------------ + src/hb-common.cc | 4 ++-- + src/hb-face.cc | 12 +++++------ + src/hb-font.cc | 14 ++++++------- + src/hb-font.h | 4 ++-- + src/hb-ft.cc | 4 ++-- + src/hb-glib.cc | 3 +++ + src/hb-gobject-structs.h | 18 +++++++++++++++++ + src/hb-ot-font.cc | 3 +++ + src/hb-ot-layout.cc | 30 ++++++++++++++++++++++++++++ + src/hb-ot-shape.cc | 6 ++++++ + src/hb-set.cc | 52 + ++++++++++++++++++++++++------------------------ + src/hb-shape-plan.cc | 18 ++++++++--------- + src/hb-shape.cc | 8 ++++---- + src/hb-unicode.cc | 6 +++--- + src/hb-unicode.h | 31 ++++++++++++++++++++++++++--- + 16 files changed, 168 insertions(+), 77 deletions(-) + +commit f1b44303df0712b433e35e1e1e75115c353b279e +Author: Behdad Esfahbod +Date: Thu May 21 14:00:15 2015 -0700 + + Fix unary minus operator applied to unsigned int + + Applying unary minus operator to unsigned int causes the following + warning on MSVS: + + warning C4146: unary minus operator applied to unsigned type, + result still unsigned + + Based on patch from Koji Ishi. + + Fixes https://github.com/behdad/harfbuzz/pull/110 + + src/hb-ot-font.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1ae6cdb365c15405500d4f50ec98016dde23a26b +Author: Behdad Esfahbod +Date: Tue May 19 17:42:30 2015 -0700 + + [gobject] Remove hb_language_t workarounds for g-i shortcomings + + Using latest gobject-introspection, I don't seem to be having this + problem anymore: + + https://bugzilla.gnome.org/show_bug.cgi?id=707656 + + Removing that kludge makes language_t behave more like the way I + expect it + in Python. + + Also fixes: + https://github.com/behdad/harfbuzz/issues/91 + + src/hb-gobject-structs.cc | 1 - + src/hb-gobject-structs.h | 8 -------- + 2 files changed, 9 deletions(-) + +commit ece434fa0fec6754e5164d881c1e967376729eca +Author: Behdad Esfahbod +Date: Tue May 19 17:20:58 2015 -0700 + + [gobject] Macroize value types + + Fixes user_data_t + + src/hb-gobject-structs.cc | 73 + +++++++++++------------------------------------ + 1 file changed, 17 insertions(+), 56 deletions(-) + +commit 9df099b4837df722e738675af318efcc9ac39a78 +Author: Behdad Esfahbod +Date: Mon May 18 18:37:06 2015 -0700 + + [ft] Don't set *glyph in get_glyph() if glyph not found + + src/hb-ft.cc | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +commit ff0f210519bcb0e44d4b986f7eef2004383cd344 +Author: Behdad Esfahbod +Date: Mon May 18 14:16:28 2015 -0700 + + [util] Minor + + util/ansi-print.cc | 26 +++++++++++++------------- + 1 file changed, 13 insertions(+), 13 deletions(-) + +commit fbecde3d5c5c6d5af315140e4966dc850388ad63 +Merge: 5801521 74139f9 +Author: Behdad Esfahbod +Date: Thu May 7 10:46:42 2015 -0700 + + Merge pull request #105 from ebraminio/master + + Fix Travis CI config to pass again + +commit 74139f9839f69ea3e7a1d17627f52fea6c06d58a +Author: Ebrahim Byagowi +Date: Thu May 7 13:09:32 2015 +0000 + + Fix Travis CI config to pass again + + .travis.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 58015215321a76d68df8e0d51039904a67291108 +Author: Behdad Esfahbod +Date: Wed May 6 00:40:31 2015 -0700 + + Add note re OpenType 1.7 language tags + + src/hb-ot-tag.cc | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +commit f6266ad291d7686d5e110255ace5f2ff9e70bf38 +Author: Roozbeh Pournader +Date: Tue May 5 22:31:19 2015 -0700 + + [minor] Remove comment about Navajo OpenType code. + + Apparently the code is already standardized: + https://www.microsoft.com/typography/otspec/languagetags.htm + + src/hb-ot-tag.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 42b00118eae46a5183e885e89e0856f41361f57e +Merge: c60f3c8 cfeb056 +Author: Behdad Esfahbod +Date: Tue May 5 14:49:47 2015 -0700 + + Merge pull request #102 from roozbehp/master + + Add OpenType language tag 'NAV ' for Navajo. + +commit c60f3c8e1156fe7328d42851013cca97333c3bf7 +Author: Behdad Esfahbod +Date: Mon May 4 23:10:32 2015 -0700 + + [README.python] Add package name for gobject-introspection on Ubuntu + + README.python | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit 82010a4bdb32248deb1337a3357dfae5b203c48d +Author: Behdad Esfahbod +Date: Mon May 4 23:09:51 2015 -0700 + + [travis] Comment out gobject-introspection again + + Apparently the version on Travis is 1.32.0, while we require 1.34.0. + + .travis.yml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 8a254bdd29a99eb91b37e9e540179a1a01f77605 +Author: Behdad Esfahbod +Date: Mon May 4 19:22:11 2015 -0700 + + [travis] Build with introspection enabled + + .travis.yml | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit be66ec5373634234f221ace9cfed45d76b87f20e +Author: Behdad Esfahbod +Date: Thu Apr 30 18:27:13 2015 -0400 + + Use TRUE/FALSE instead of true/false in docs + + src/hb-shape.cc | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit d055e1fc781c123f38d321846937965ef794257e +Author: Khaled Hosny +Date: Wed Jan 8 02:28:55 2014 +0200 + + Some attempt into initial hb-shape documentation + + Very anaemic, needs to descripe the format understood by + hb_feature_from_string() etc., but it is just start. + + src/hb-shape.cc | 70 + ++++++++++++++++++++++++++++++++++++++------------------- + src/hb-shape.h | 3 --- + 2 files changed, 47 insertions(+), 26 deletions(-) + +commit 81bedda58cfc15f1987aa1952290cf9d87b4d074 +Author: Behdad Esfahbod +Date: Thu Apr 30 13:04:16 2015 -0400 + + New API: hb_buffer_reverse_range() + + src/hb-buffer.cc | 17 +++++++++++++++++ + src/hb-buffer.h | 4 ++++ + 2 files changed, 21 insertions(+) + +commit cfeb0562ebd8804dad731625153549eafeb78213 +Author: Roozbeh Pournader +Date: Wed Apr 29 09:32:42 2015 -0700 + + Add OpenType language tag 'NAV ' for Navajo. + + The code is not standardized yet, but is used in some Google fonts. + + src/hb-ot-tag.cc | 1 + + 1 file changed, 1 insertion(+) + +commit f724cc351640ee075a9867ef42df32cf5e0ef3b7 +Author: Jonathan Kew +Date: Thu Apr 23 12:45:02 2015 +0100 + + Don't apply Arabic shaping to vertical text. + + src/hb-ot-shape-complex-private.hh | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit 97942420bbee1bc6953d5f805621066301fa17ca +Author: Behdad Esfahbod +Date: Thu Apr 23 18:56:24 2015 -0700 + + Update check-libstdc++ for clang + + src/check-libstdc++.sh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 8f0a4d67143ccdef0b5a6ac99fb9b680c3a2f69c +Author: Behdad Esfahbod +Date: Thu Apr 23 14:32:33 2015 -0700 + + [test] Ignor 'n' and 'i' in hb-unicode-encode + + Allows accepting uniXXXX format. + + test/shaping/hb_test_tools.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 39851ce84efd30f6d0570324ff8f3808a01b813b +Author: Behdad Esfahbod +Date: Tue Apr 21 19:23:27 2015 -0700 + + [coretext] Oops; fix issue number for previous commit + + src/hb-coretext.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 24f17afeafd40ff77177ed42c9007a0f34fcbb78 +Author: Behdad Esfahbod +Date: Tue Apr 21 19:21:32 2015 -0700 + + [coretext] Fix positioning with trailing whitespace + + Fixes https://code.google.com/p/chromium/issues/detail?id=476913 + + src/hb-coretext.cc | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +commit dba482fc4458776ffebdeb2d34b970b4223fa8fd +Author: Behdad Esfahbod +Date: Fri Apr 17 13:08:08 2015 -0700 + + [ot-font] Accept MS Symbol cmap if nothing else found + + src/hb-ot-font.cc | 1 + + 1 file changed, 1 insertion(+) + +commit 3029e8b59d1667dc6a53355be89a2b55d7089b88 +Author: Behdad Esfahbod +Date: Tue Apr 14 13:32:22 2015 -0700 + + Revert "Add MSVC pragma for UTF-8 source code" + + This reverts commit 89cbd4d9533011fb5487caa99a0cd58923e7cf59. + + See discussion: + https://bugzilla.gnome.org/show_bug.cgi?id=747772 + + src/hb-private.hh | 1 - + 1 file changed, 1 deletion(-) + +commit 820505a186ff60e4bae9d717fe4d7ab2390e6fef +Author: Behdad Esfahbod +Date: Mon Apr 13 23:51:45 2015 -0700 + + Whitespace + + util/options.cc | 18 +++++++++++------- + 1 file changed, 11 insertions(+), 7 deletions(-) + +commit 76d57331117be8e0c2d4a2aee8341969b62b6888 +Merge: 89cbd4d 9ee176e +Author: Behdad Esfahbod +Date: Mon Apr 13 23:40:35 2015 -0700 + + Merge pull request #86 from cpfair/hb-shape-output-help-improvement + + Improve hb-shape/hb-view's help text w.r.t. output options + +commit 89cbd4d9533011fb5487caa99a0cd58923e7cf59 +Author: Behdad Esfahbod +Date: Mon Apr 13 12:27:08 2015 -0700 + + Add MSVC pragma for UTF-8 source code + + Not sure we have any right now; motivated by this: + https://bugzilla.gnome.org/show_bug.cgi?id=747772 + + src/hb-private.hh | 1 + + 1 file changed, 1 insertion(+) + +commit 713f99ff6138b4149d9fd382f9af3ace01ee0da5 +Merge: 1086f21 22524a5 +Author: Behdad Esfahbod +Date: Fri Apr 10 14:34:05 2015 -0700 + + Merge pull request #99 from khaledhosny/introspection-fixes2 + + More ntrospection fixes + +commit 22524a514f6609a2bc009b6035f6b5b932c719c7 +Author: Khaled Hosny +Date: Fri Apr 10 18:14:45 2015 +0200 + + [bindings] Fix hb_buffer_get_segment_properties + + Annotate the output parameter. + + src/hb-buffer.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1086f21e546e2435d9da6024fd6afa7a36ba3707 +Merge: 125cb08 fe97b65 +Author: Behdad Esfahbod +Date: Fri Apr 10 12:21:04 2015 -0700 + + Merge branch 'hb-fc' + +commit 125cb08345a7f27e565329d37093b1a60a41a403 +Merge: e8fd839 855a5d7 +Author: Behdad Esfahbod +Date: Fri Apr 10 12:19:57 2015 -0700 + + Merge pull request #98 from KonstantinRitt/WEC2013 + + Fix build on WEC2013 + +commit 04f89e8f7dfdb882e8c98afb613cba3f1d02ed7d +Author: Khaled Hosny +Date: Fri Apr 10 17:49:01 2015 +0200 + + [bindings] Fix ownership of returned hb_language_t + + It should not be freed by the caller. + + src/hb-buffer.cc | 2 +- + src/hb-common.cc | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 855a5d7cb8f585bf66dd18cb480b8c3feef62480 +Author: Konstantin Ritt +Date: Fri Apr 10 17:18:01 2015 +0400 + + Fix build on WEC2013 + + Based on patch from Björn Breitmeyer + + src/hb-private.hh | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit fe97b65a54a416229e28b1c931e5e01ca19f31d3 +Author: Behdad Esfahbod +Date: Wed Aug 6 16:49:51 2014 -0400 + + [utils] Add hb-fc-list + + This is a tool that lists all fonts that can render a given string. + It uses hb_shape() to do so, and as such is aware of HarfBuzz's + normalizer. + + configure.ac | 19 +++++ + util/Makefile.am | 15 ++++ + util/hb-fc-list.c | 222 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + util/hb-fc.cc | 149 ++++++++++++++++++++++++++++++++++++ + util/hb-fc.h | 46 +++++++++++ + 5 files changed, 451 insertions(+) + +commit eb0bf3ae6688b7e98a706df2ad2714c071d77e22 +Author: Behdad Esfahbod +Date: Wed Aug 6 15:36:41 2014 -0400 + + Relax inert checks + + Previously, when creating an object from inert inputs (eg: + "hb_font_create(hb_face_get_empty())") we returned the inert + empty object. This is not helpful as there are legitimate + usecases to do that. + + We now never return the inert object unless allocation failed. + + Tests are revised to reflect. + + src/hb-face.cc | 4 ++-- + src/hb-font.cc | 4 +--- + src/hb-shape-plan.cc | 7 +++++-- + test/api/test-font.c | 10 +++++----- + test/api/test-object.c | 34 +++++++++++++++++----------------- + 5 files changed, 30 insertions(+), 29 deletions(-) + +commit e8fd83932a75cfbaa4638a757868915ebfac3c1f +Author: Behdad Esfahbod +Date: Thu Apr 9 15:52:26 2015 -0700 + + [util/hb-view] Fix rendering with all combinations of negative scales + + util/view-cairo.cc | 90 + ++++++++++++++++++++++++++++-------------------------- + util/view-cairo.hh | 2 -- + 2 files changed, 47 insertions(+), 45 deletions(-) + +commit 69d5af93169ea2d87276b65d43c889a359d5d81e +Author: Behdad Esfahbod +Date: Thu Apr 9 15:17:16 2015 -0700 + + [util] Minor + + util/view-cairo.cc | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +commit a664810e38b479e05ea32cac263cb5730629f9d8 +Author: Behdad Esfahbod +Date: Thu Apr 9 15:04:42 2015 -0700 + + [util] Accept comma as well as space when separating components + of args + + Applies to --font-size and --margin. + + Hopefully the scanf usage here doesn't have compatibility issues + (star being counted in the return value, etc). + + util/options.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 9c974360febcfd67247107352425fe8590d9d452 +Author: Behdad Esfahbod +Date: Thu Apr 9 12:04:14 2015 -0700 + + Minor rename + + src/hb-atomic-private.hh | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit f3b170bdd970e31e9dbfed94c07c3cda41269aed +Author: Behdad Esfahbod +Date: Wed Apr 8 16:26:24 2015 -0700 + + Minor + + src/hb-common.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2958f2c147fc6327175b51a4eaca694263e34ac9 +Author: Behdad Esfahbod +Date: Wed Apr 8 16:26:16 2015 -0700 + + Fixup + + src/hb-atomic-private.hh | 1 + + 1 file changed, 1 insertion(+) + +commit b931e0b0ceeab0e4819d9c4b838c1a1eb87b52e4 +Author: Behdad Esfahbod +Date: Wed Apr 8 14:39:00 2015 -0700 + + Fix warnings + + Part of https://github.com/behdad/harfbuzz/pull/68 + + src/hb-ot-font.cc | 4 ++-- + src/hb-ot-layout-gsubgpos-private.hh | 22 +++++++++++----------- + 2 files changed, 13 insertions(+), 13 deletions(-) + +commit cdcdfe61b97a0a48ccf834b6d924d187da9609be +Author: Behdad Esfahbod +Date: Wed Apr 8 13:25:04 2015 -0700 + + Err, instead of warn, if mutex / atomic / unicode funcs are missing + + Hopefully this results in fewer badly built HarfBuzz integrations. + + src/hb-unicode.cc | 8 ++++---- + src/hb-warning.cc | 22 ++++++++-------------- + 2 files changed, 12 insertions(+), 18 deletions(-) + +commit fc3c59a1d746c5280f6216a94fdc1be3e826051f +Author: Behdad Esfahbod +Date: Wed Apr 8 13:03:27 2015 -0700 + + Fix unused var warnings + + src/hb-ot-layout-gpos-table.hh | 1 - + src/hb-ot-layout-gsub-table.hh | 1 - + 2 files changed, 2 deletions(-) + +commit 3f174cd020b7762fae96f20ce14fc9e9abec748f +Author: Konstantin Ritt +Date: Sat Mar 28 00:49:33 2015 +0400 + + Minor refactoring to the atomics implementation + + s/atomic_int/atomic_int_impl/ and s/atomic_ptr/atomic_ptr_impl/ + to bring it in par with hb_mutex_impl_t, then re-introduce + hb_atomic_int_t as a wrapper around hb_atomic_int_impl_t. + + In hb_reference_count_t, make it clear the non-atomic get and set + are intentional due to nature of the cases they are used in + (comparison to -1 and the debug output/tracing). + + src/hb-atomic-private.hh | 86 + +++++++++++++++++++++++++++++++----------------- + src/hb-mutex-private.hh | 4 ++- + src/hb-object-private.hh | 21 ++++++------ + 3 files changed, 69 insertions(+), 42 deletions(-) + +commit 24930d544ee9e247e4cf6a5f6d5207ba9d7a3ddc +Author: Behdad Esfahbod +Date: Wed Apr 8 12:52:06 2015 -0700 + + Minor + + src/hb-mutex-private.hh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 45a8b46f478d4aa63ae5df74b6bb28ebdd7521ac +Author: Behdad Esfahbod +Date: Wed Apr 8 12:49:38 2015 -0700 + + Allow implementing atomic and mutex ops in config + + Motivated by + https://github.com/behdad/harfbuzz/pull/92 + + src/hb-atomic-private.hh | 6 +++++- + src/hb-mutex-private.hh | 7 ++++++- + 2 files changed, 11 insertions(+), 2 deletions(-) + +commit 3fe4e92bc5ff09d84c6763cedf06ce80d15a5fb2 +Author: Behdad Esfahbod +Date: Wed Apr 8 12:49:23 2015 -0700 + + Minor + + src/hb-set-private.hh | 1 - + 1 file changed, 1 deletion(-) + +commit 9868749abe468130d89c80a2501847a83acb4579 +Author: Behdad Esfahbod +Date: Mon Apr 6 14:51:31 2015 -0700 + + [test] Use /usr/bin/env python instead of /usr/bin/python + + Bug 76494 - #!/usr/bin/python in testsuite + + https://bugs.freedesktop.org/show_bug.cgi?id=76494 + + test/shaping/hb-diff | 2 +- + test/shaping/hb-diff-colorize | 2 +- + test/shaping/hb-diff-filter-failures | 2 +- + test/shaping/hb-diff-ngrams | 2 +- + test/shaping/hb-diff-stat | 2 +- + test/shaping/hb-manifest-read | 2 +- + test/shaping/hb-manifest-update | 2 +- + test/shaping/hb-unicode-decode | 2 +- + test/shaping/hb-unicode-encode | 2 +- + test/shaping/hb-unicode-prettyname | 2 +- + test/shaping/hb_test_tools.py | 2 +- + 11 files changed, 11 insertions(+), 11 deletions(-) + +commit bfcddd32a674dd19fca1bf521e95466a0eec5179 +Merge: ce01ad7 363ceec +Author: Behdad Esfahbod +Date: Mon Apr 6 14:41:32 2015 -0700 + + Merge pull request #93 from ebraminio/archpy3 + + Make hb_test_tools.py compatible with python 3 + +commit ce01ad7c2f5a259030f4dbec746f85522aa9c3f9 +Author: Behdad Esfahbod +Date: Wed Apr 1 11:05:59 2015 -0700 + + MSVC 2015 supports snprintf and not _snprintf + + src/hb-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 560718862f0bd994b62361652d6fd558c4182e2a +Author: Behdad Esfahbod +Date: Wed Apr 1 11:04:33 2015 -0700 + + Move WinCE define to better place + + src/hb-private.hh | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 363ceec3fb0c9566db5a59da31e508f69dea1e92 +Author: Ebrahim Byagowi +Date: Mon Mar 30 03:27:14 2015 +0430 + + Make hb_test_tools.py compatible with python 3 + + On ArchLinux, /usr/bin/python is linked to python 3 so + HarfBuzz `make check` is broken there. + + This makes hb_test_tools.py compatible with python 3 while + no breaking it on python 2. + + test/shaping/hb_test_tools.py | 44 + ++++++++++++++++++++++++------------------- + 1 file changed, 25 insertions(+), 19 deletions(-) + +commit aee685086c8fde6f6c4590e483a177c19f222540 +Author: Behdad Esfahbod +Date: Thu Mar 26 14:13:53 2015 -0400 + + Fix VC++ /analyze warnings + + out\debug\hb-buffer-deserialize-text.rl(47) : warning C6001: Using + uninitialized memory 'pos'. + + src/hb-buffer-deserialize-text.rl | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 8886ab430ca68539cb318e175647e9f6973718b0 +Merge: e3671b8 a394bb6 +Author: Behdad Esfahbod +Date: Sun Mar 22 16:18:57 2015 -0400 + + Merge pull request #90 from khaledhosny/introspection-fixes + + [bindings] Fix *_from_string functions + +commit a394bb66707184c995fe2d08c80e98220e6ec0b0 +Author: Khaled Hosny +Date: Sun Mar 22 20:29:10 2015 +0200 + + [bindings] Fix *_from_string functions + + Without the element-type they will be getting garbage, at least with + Python. + + src/hb-common.cc | 8 ++++---- + src/hb-font.cc | 2 +- + src/hb-shape.cc | 2 +- + 3 files changed, 6 insertions(+), 6 deletions(-) + +commit e3671b8f8bb339e8a563a9da9cd5069073200fec +Author: Behdad Esfahbod +Date: Fri Mar 20 18:03:02 2015 -0400 + + 0.9.40 + + NEWS | 8 ++++++++ + configure.ac | 2 +- + 2 files changed, 9 insertions(+), 1 deletion(-) + commit 9e401f6890f2bea1d11914bca436c2230f8d0f1b Author: Behdad Esfahbod -Date: Fri Mar 20 16:08:38 2015 -0400 +Date: Fri Mar 20 16:08:38 2015 -0400 Fix reverse_range() for empty range @@ -13,7 +7231,7 @@ Date: Fri Mar 20 16:08:38 2015 -0400 commit 7481bd49d56d4e814ab1f85fc2df8bf934d520f4 Author: Behdad Esfahbod -Date: Wed Mar 4 15:47:25 2015 -0800 +Date: Wed Mar 4 15:47:25 2015 -0800 Fix previous commit @@ -24,7 +7242,7 @@ Date: Wed Mar 4 15:47:25 2015 -0800 commit 6763e21afb77b250ad4416ff921d46c63ea12443 Author: Behdad Esfahbod -Date: Wed Mar 4 15:43:05 2015 -0800 +Date: Wed Mar 4 15:43:05 2015 -0800 Accept glibtoolize as libtoolize @@ -37,17 +7255,17 @@ Date: Wed Mar 4 15:43:05 2015 -0800 commit 02a04e6afb1a76894f3723a467716607970d95d3 Author: Behdad Esfahbod -Date: Wed Mar 4 12:32:03 2015 -0800 +Date: Wed Mar 4 12:32:03 2015 -0800 0.9.39 - NEWS | 10 ++++++++++ + NEWS | 10 ++++++++++ configure.ac | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) commit 98e3ea8e34c798ce003e946c9a150bb41be9d09b Author: Behdad Esfahbod -Date: Wed Mar 4 12:03:39 2015 -0800 +Date: Wed Mar 4 12:03:39 2015 -0800 Fix hb-uniscribe build @@ -56,7 +7274,7 @@ Date: Wed Mar 4 12:03:39 2015 -0800 commit 8ac345e5c0ed0aad6547592ea0839aabfb4ba980 Author: Behdad Esfahbod -Date: Mon Mar 2 16:06:55 2015 -0800 +Date: Mon Mar 2 16:06:55 2015 -0800 Fix reverse_range() to only reverse alt array if positions are used @@ -69,7 +7287,7 @@ Date: Mon Mar 2 16:06:55 2015 -0800 commit 1e03d7ac83f3e17aafed1e37390d9ff8394e36da Author: Behdad Esfahbod -Date: Thu Feb 26 13:58:32 2015 -0800 +Date: Thu Feb 26 13:58:32 2015 -0800 Better error message if libtool is not installed @@ -80,7 +7298,7 @@ Date: Thu Feb 26 13:58:32 2015 -0800 commit 6c918e2997fb82e89485f2b50bee2bf4fcd70592 Author: Behdad Esfahbod -Date: Thu Feb 26 13:55:34 2015 -0800 +Date: Thu Feb 26 13:55:34 2015 -0800 Clean up gtk-doc.make @@ -89,7 +7307,7 @@ Date: Thu Feb 26 13:55:34 2015 -0800 commit 5ec5875acb12cf07447c9ebfb03212601368dfc4 Author: Behdad Esfahbod -Date: Thu Feb 26 13:53:05 2015 -0800 +Date: Thu Feb 26 13:53:05 2015 -0800 Install git.mk in docs/ @@ -98,7 +7316,7 @@ Date: Thu Feb 26 13:53:05 2015 -0800 commit d146678d103425b3da7ef393bc6d66f6ba4c5593 Author: Behdad Esfahbod -Date: Thu Feb 26 13:52:50 2015 -0800 +Date: Thu Feb 26 13:52:50 2015 -0800 Update git.mk from upstream @@ -107,7 +7325,7 @@ Date: Thu Feb 26 13:52:50 2015 -0800 commit 5f541f8f7be82f29b77b481827deb212e12d53e4 Author: Behdad Esfahbod -Date: Sat Feb 21 16:51:17 2015 +0300 +Date: Sat Feb 21 16:51:17 2015 +0300 Minor refactoring @@ -116,7 +7334,7 @@ Date: Sat Feb 21 16:51:17 2015 +0300 commit ef79bdf73bbfde1bfaa222834809d105ab7755b3 Author: Behdad Esfahbod -Date: Sat Feb 21 16:49:15 2015 +0300 +Date: Sat Feb 21 16:49:15 2015 +0300 Minor @@ -125,7 +7343,7 @@ Date: Sat Feb 21 16:49:15 2015 +0300 commit 68e04afbb1e1073c47474f7a4d6d2cacf7057f6f Author: Behdad Esfahbod -Date: Sat Feb 21 16:30:28 2015 +0300 +Date: Sat Feb 21 16:30:28 2015 +0300 Typo @@ -134,7 +7352,7 @@ Date: Sat Feb 21 16:30:28 2015 +0300 commit 55553699b38d6481fbfacd0a32fc266e55553b34 Author: Behdad Esfahbod -Date: Sat Feb 21 16:29:08 2015 +0300 +Date: Sat Feb 21 16:29:08 2015 +0300 Minor @@ -143,7 +7361,7 @@ Date: Sat Feb 21 16:29:08 2015 +0300 commit 5175300fbaf4ff19b7d38c14c86331bb614b0390 Author: Behdad Esfahbod -Date: Sat Feb 21 12:50:01 2015 +0300 +Date: Sat Feb 21 12:50:01 2015 +0300 [layout] Fix comparison of GlyphID and hb_codepoint_t @@ -158,7 +7376,7 @@ Date: Sat Feb 21 12:50:01 2015 +0300 commit 7cce809cb11e0ce65dbdab899779ece3dc337763 Author: Behdad Esfahbod -Date: Sat Feb 21 12:41:08 2015 +0300 +Date: Sat Feb 21 12:41:08 2015 +0300 Remove unused (and wrong as of a few commits ago) cmp() function @@ -167,7 +7385,7 @@ Date: Sat Feb 21 12:41:08 2015 +0300 commit 8e3d4bae033bdec649676da26cfc3eb7610832a8 Author: Behdad Esfahbod -Date: Sat Feb 21 12:31:59 2015 +0300 +Date: Sat Feb 21 12:31:59 2015 +0300 Minor @@ -176,7 +7394,7 @@ Date: Sat Feb 21 12:31:59 2015 +0300 commit f47cf1f12dd1fa3cd3aa84502139caca9d469af8 Author: Behdad Esfahbod -Date: Sat Feb 21 11:45:22 2015 +0300 +Date: Sat Feb 21 11:45:22 2015 +0300 Minor @@ -185,7 +7403,7 @@ Date: Sat Feb 21 11:45:22 2015 +0300 commit 640b66c6348653bfd7cf88ea9caa2133c0eb949f Author: Behdad Esfahbod -Date: Thu Feb 19 17:30:05 2015 +0300 +Date: Thu Feb 19 17:30:05 2015 +0300 [layout] If lookup has only one subtable, move the forward loop down to subtable @@ -198,7 +7416,7 @@ Date: Thu Feb 19 17:30:05 2015 +0300 commit e2f50f2a7ebf9882ea89dc3f0c740e7fce964e37 Author: Behdad Esfahbod -Date: Thu Feb 19 17:15:05 2015 +0300 +Date: Thu Feb 19 17:15:05 2015 +0300 [layout] Add apply_forward / apply_backward @@ -208,7 +7426,7 @@ Date: Thu Feb 19 17:15:05 2015 +0300 commit 1d4a328472f094c0d75a062f6e176c6b1875cfdc Author: Behdad Esfahbod -Date: Thu Feb 19 11:33:30 2015 +0300 +Date: Thu Feb 19 11:33:30 2015 +0300 [layout] Remove unneeded return value from apply() @@ -217,7 +7435,7 @@ Date: Thu Feb 19 11:33:30 2015 +0300 commit bbdd6fd21cc2e079defff7cb17c3eb8eff3f9e09 Author: Behdad Esfahbod -Date: Thu Feb 19 17:03:02 2015 +0300 +Date: Thu Feb 19 17:03:02 2015 +0300 Minor simpilfy BEInt @@ -226,7 +7444,7 @@ Date: Thu Feb 19 17:03:02 2015 +0300 commit 88a399acdc0fcb060803da0e7db56de2866981e3 Author: Behdad Esfahbod -Date: Thu Feb 19 16:57:12 2015 +0300 +Date: Thu Feb 19 16:57:12 2015 +0300 Optimize IntType comparison to avoid branches for 16bit numbers @@ -235,7 +7453,7 @@ Date: Thu Feb 19 16:57:12 2015 +0300 commit 37de2d533126245774417234e3536fcfb24f3a6b Author: Behdad Esfahbod -Date: Thu Feb 19 16:55:51 2015 +0300 +Date: Thu Feb 19 16:55:51 2015 +0300 Minor simplify IntType @@ -244,18 +7462,18 @@ Date: Thu Feb 19 16:55:51 2015 +0300 commit bd047d3b7f04d551c0a26bc0ce9b9d61481e34e1 Author: Behdad Esfahbod -Date: Thu Feb 19 10:47:18 2015 +0300 +Date: Thu Feb 19 10:47:18 2015 +0300 [layout] Minor src/hb-ot-layout-gpos-table.hh | 6 ++++++ src/hb-ot-layout-gsub-table.hh | 6 ++++++ - src/hb-ot-layout.cc | 4 ++-- + src/hb-ot-layout.cc | 4 ++-- 3 files changed, 14 insertions(+), 2 deletions(-) commit b9d3f60520c022dc952e65a66eb138d1f7cae2e1 Author: Behdad Esfahbod -Date: Thu Feb 19 10:42:41 2015 +0300 +Date: Thu Feb 19 10:42:41 2015 +0300 [layout] Minor @@ -264,7 +7482,7 @@ Date: Thu Feb 19 10:42:41 2015 +0300 commit 1a2322134a5d7bba990da28baf893b35879a5a7a Author: Behdad Esfahbod -Date: Thu Feb 19 10:40:23 2015 +0300 +Date: Thu Feb 19 10:40:23 2015 +0300 [layout] Don't check glyph props against lookup flags when recursing @@ -277,14 +7495,14 @@ Date: Thu Feb 19 10:40:23 2015 +0300 commit 095a1257cc3cc56b044b4cd842a92f0d0f933a50 Author: Behdad Esfahbod -Date: Thu Feb 19 10:29:41 2015 +0300 +Date: Thu Feb 19 10:29:41 2015 +0300 [layout] Port sanitize() to use dispatch() Needed some rework of Extension table. Hopefully I got it right, and the new template usage doesn't break any compilers... - src/hb-open-type-private.hh | 5 ++- + src/hb-open-type-private.hh | 5 ++- src/hb-ot-layout-gpos-table.hh | 82 +---------------------------------- src/hb-ot-layout-gsub-table.hh | 72 ++----------------------------- @@ -294,7 +7512,7 @@ Date: Thu Feb 19 10:29:41 2015 +0300 commit 758fb20630f84c3d373cda37974b88f16c02995e Author: Behdad Esfahbod -Date: Wed Feb 18 13:45:03 2015 +0300 +Date: Wed Feb 18 13:45:03 2015 +0300 Remove unused macro @@ -303,7 +7521,7 @@ Date: Wed Feb 18 13:45:03 2015 +0300 commit 40c58923cbf689c465f9b65334c455a9b7f71ab0 Author: Behdad Esfahbod -Date: Wed Feb 18 13:18:46 2015 +0300 +Date: Wed Feb 18 13:18:46 2015 +0300 [layout] Refactor Lookup::dispatch() @@ -315,7 +7533,7 @@ Date: Wed Feb 18 13:18:46 2015 +0300 commit 70366f5d19df2e654f0933474fecf1aa16e27812 Author: Behdad Esfahbod -Date: Wed Feb 18 13:09:54 2015 +0300 +Date: Wed Feb 18 13:09:54 2015 +0300 [layout] Refactor get_subtable() @@ -326,7 +7544,7 @@ Date: Wed Feb 18 13:09:54 2015 +0300 commit f72f326aea6d1e93f63040730f7aecd401676c1c Author: Behdad Esfahbod -Date: Tue Feb 17 19:18:07 2015 +0300 +Date: Tue Feb 17 19:18:07 2015 +0300 Minor @@ -335,7 +7553,7 @@ Date: Tue Feb 17 19:18:07 2015 +0300 commit 8e36ccfd4f076888076ca176c055c18104af03b6 Author: Behdad Esfahbod -Date: Tue Feb 17 19:15:34 2015 +0300 +Date: Tue Feb 17 19:15:34 2015 +0300 [layout] Use dispatch() for add_coverage() @@ -346,7 +7564,7 @@ Date: Tue Feb 17 19:15:34 2015 +0300 commit 50b8dc79daffc7ef671dd5eedfea47f8d5e946f4 Author: Behdad Esfahbod -Date: Tue Feb 17 18:14:17 2015 +0300 +Date: Tue Feb 17 18:14:17 2015 +0300 [layout] Add may_dispatch() @@ -359,7 +7577,7 @@ Date: Tue Feb 17 18:14:17 2015 +0300 commit de2118ed7a998a1df9b28fd1be96b4af89ed82c3 Author: Behdad Esfahbod -Date: Tue Feb 17 17:27:44 2015 +0300 +Date: Tue Feb 17 17:27:44 2015 +0300 Make sanitize() a const method @@ -368,12 +7586,12 @@ Date: Tue Feb 17 17:27:44 2015 +0300 place, after making sure it's safe to do so. So, do a const_cast<> in that one place... - src/hb-open-file-private.hh | 15 +++-- - src/hb-open-type-private.hh | 51 +++++++++++------ - src/hb-ot-cmap-table.hh | 35 ++++++++---- - src/hb-ot-head-table.hh | 6 +- - src/hb-ot-hhea-table.hh | 3 +- - src/hb-ot-hmtx-table.hh | 3 +- + src/hb-open-file-private.hh | 15 +++-- + src/hb-open-type-private.hh | 51 +++++++++++------ + src/hb-ot-cmap-table.hh | 35 ++++++++---- + src/hb-ot-head-table.hh | 6 +- + src/hb-ot-hhea-table.hh | 3 +- + src/hb-ot-hmtx-table.hh | 3 +- src/hb-ot-layout-common-private.hh | 58 ++++++++++++------- src/hb-ot-layout-gdef-table.hh | 30 ++++++---- src/hb-ot-layout-gpos-table.hh | 108 @@ -381,13 +7599,13 @@ Date: Tue Feb 17 17:27:44 2015 +0300 src/hb-ot-layout-gsub-table.hh | 58 ++++++++++++------- src/hb-ot-layout-gsubgpos-private.hh | 65 +++++++++++++-------- src/hb-ot-layout-jstf-table.hh | 12 ++-- - src/hb-ot-maxp-table.hh | 6 +- - src/hb-ot-name-table.hh | 6 +- + src/hb-ot-maxp-table.hh | 6 +- + src/hb-ot-name-table.hh | 6 +- 14 files changed, 296 insertions(+), 160 deletions(-) commit 6759ed95a3bec2874826376b68ebff19ba277ef2 Author: Behdad Esfahbod -Date: Tue Feb 17 16:05:30 2015 +0300 +Date: Tue Feb 17 16:05:30 2015 +0300 Minor @@ -397,7 +7615,7 @@ Date: Tue Feb 17 16:05:30 2015 +0300 commit 6b599dac1f814a3c900300241d4c492a8f8b66d2 Author: Behdad Esfahbod -Date: Tue Feb 17 16:04:07 2015 +0300 +Date: Tue Feb 17 16:04:07 2015 +0300 Remove unnecessary check in sanitize @@ -407,7 +7625,7 @@ Date: Tue Feb 17 16:04:07 2015 +0300 commit 365576d246949f9d587e90cf0539dc0381e4d0a3 Author: Behdad Esfahbod -Date: Thu Jan 29 13:59:42 2015 +0100 +Date: Thu Jan 29 13:59:42 2015 +0100 [layout] Allocate iters in the context @@ -417,23 +7635,23 @@ Date: Thu Jan 29 13:59:42 2015 +0100 src/hb-ot-layout-gpos-table.hh | 18 ++++++------------ src/hb-ot-layout-gsubgpos-private.hh | 21 +++++++++++++-------- - src/hb-ot-shape-fallback.cc | 2 +- + src/hb-ot-shape-fallback.cc | 2 +- 3 files changed, 20 insertions(+), 21 deletions(-) commit 514564f5444b8ad2f210b1e3d7d66378f7275317 Author: Behdad Esfahbod -Date: Thu Jan 29 13:48:48 2015 +0100 +Date: Thu Jan 29 13:48:48 2015 +0100 [layout] Move skippy_iter setup from constructor into init() src/hb-ot-layout-gpos-table.hh | 18 ++++++++++++------ src/hb-ot-layout-gsubgpos-private.hh | 28 +++++++++++++++------------- - src/hb-ot-shape-fallback.cc | 3 ++- + src/hb-ot-shape-fallback.cc | 3 ++- 3 files changed, 29 insertions(+), 20 deletions(-) commit b051be542a8945ec14b0192bbc285f3e1a78c8f1 Author: Behdad Esfahbod -Date: Thu Jan 29 13:40:39 2015 +0100 +Date: Thu Jan 29 13:40:39 2015 +0100 [lookup] Add skippy_iter.reset() @@ -441,12 +7659,12 @@ Date: Thu Jan 29 13:40:39 2015 +0100 src/hb-ot-layout-gpos-table.hh | 18 ++++++++++++------ src/hb-ot-layout-gsubgpos-private.hh | 27 ++++++++++++++++++--------- - src/hb-ot-shape-fallback.cc | 3 ++- + src/hb-ot-shape-fallback.cc | 3 ++- 3 files changed, 32 insertions(+), 16 deletions(-) commit 2cecc38c7cf49b2cf697efa7e974ceee7055f2c5 Author: Behdad Esfahbod -Date: Thu Jan 29 13:32:05 2015 +0100 +Date: Thu Jan 29 13:32:05 2015 +0100 [layout] Shuffle code around @@ -456,19 +7674,19 @@ Date: Thu Jan 29 13:32:05 2015 +0100 commit 696266981df5ef6c62ad0115133dad1d6c1d9acc Author: Behdad Esfahbod -Date: Thu Jan 29 13:08:41 2015 +0100 +Date: Thu Jan 29 13:08:41 2015 +0100 [layout] Merge forward and backward iterators src/hb-ot-layout-gpos-table.hh | 12 +++--- src/hb-ot-layout-gsubgpos-private.hh | 71 ++++++++---------------------------- - src/hb-ot-shape-fallback.cc | 2 +- + src/hb-ot-shape-fallback.cc | 2 +- 3 files changed, 23 insertions(+), 62 deletions(-) commit 1f038eec3c0dd6331036f795614fe1ddcbf613b0 Author: Behdad Esfahbod -Date: Thu Jan 29 13:05:25 2015 +0100 +Date: Thu Jan 29 13:05:25 2015 +0100 [layout] Fix backward reject() @@ -480,7 +7698,7 @@ Date: Thu Jan 29 13:05:25 2015 +0100 commit 37d13acd8d414a4b53fac0152addfadecf755cd4 Author: Behdad Esfahbod -Date: Thu Jan 29 11:38:01 2015 +0100 +Date: Thu Jan 29 11:38:01 2015 +0100 [layout] Remove some unnecessary checks in skippy @@ -490,7 +7708,7 @@ Date: Thu Jan 29 11:38:01 2015 +0100 commit baa14e18148d3f5493f78b4fe9e0c835a01f50f7 Author: Behdad Esfahbod -Date: Thu Jan 29 11:08:43 2015 +0100 +Date: Thu Jan 29 11:08:43 2015 +0100 [lookup] Don't initialize skippy if coverage match fails @@ -515,7 +7733,7 @@ Date: Thu Jan 29 11:08:43 2015 +0100 commit 7788993bc19bf122f1e143ab64cc1da2ed1865a3 Author: Behdad Esfahbod -Date: Wed Jan 28 23:01:12 2015 -0800 +Date: Wed Jan 28 23:01:12 2015 -0800 [layout] Use setter method to set c->lookup_props @@ -525,7 +7743,7 @@ Date: Wed Jan 28 23:01:12 2015 -0800 commit f4ee48fd7b312550faf9b0be4cd1b2f2849dd08d Author: Behdad Esfahbod -Date: Wed Jan 28 22:53:54 2015 -0800 +Date: Wed Jan 28 22:53:54 2015 -0800 [layout] Remove unused wrapper method @@ -534,7 +7752,7 @@ Date: Wed Jan 28 22:53:54 2015 -0800 commit 7b7129c7a997def599fb4d2ba05fda40d27aed20 Author: Behdad Esfahbod -Date: Wed Jan 28 21:46:07 2015 -0800 +Date: Wed Jan 28 21:46:07 2015 -0800 Add hb_frozen_set_t @@ -549,18 +7767,18 @@ Date: Wed Jan 28 21:46:07 2015 -0800 commit 241eac9559465fa79f396570af4e87f455b7e9d5 Author: Behdad Esfahbod -Date: Wed Jan 28 20:55:42 2015 -0800 +Date: Wed Jan 28 20:55:42 2015 -0800 Hide internals of lookup accelerators src/hb-ot-layout-gsub-table.hh | 5 +++-- - src/hb-ot-layout-private.hh | 5 +++++ - src/hb-ot-layout.cc | 6 +++--- + src/hb-ot-layout-private.hh | 5 +++++ + src/hb-ot-layout.cc | 6 +++--- 3 files changed, 11 insertions(+), 5 deletions(-) commit e2d4e8480d85436a3acad8145acac345ed593f5a Author: Behdad Esfahbod -Date: Wed Jan 28 20:29:48 2015 -0800 +Date: Wed Jan 28 20:29:48 2015 -0800 [util] Add convenience "make lib" target @@ -570,15 +7788,53 @@ Date: Wed Jan 28 20:29:48 2015 -0800 commit faaae64bf28abdcdd15185374bc09a3809794118 Merge: 7888a6b 9768e65 Author: Behdad Esfahbod -Date: Wed Feb 25 15:34:34 2015 -0800 +Date: Wed Feb 25 15:34:34 2015 -0800 Merge pull request #85 from KonstantinRitt/define_inline Fix build with MSVC on CE +commit 9ee176ee978e6668c4faf00028811ce70979122e +Author: Collin Fair +Date: Sat Feb 14 09:59:44 2015 -0500 + + Stop hb-shape docs leaking into hb-view + + util/options.cc | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +commit 952b8dbdf61da9b4814e09ad3c1b9b76483bef5c +Author: Collin Fair +Date: Sat Feb 14 09:44:00 2015 -0500 + + 'All' of the above, not 'each' + + util/options.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 9e867b64467c46eea5cc9b1d5a9404a1221bbbfc +Author: Collin Fair +Date: Sat Feb 14 09:32:04 2015 -0500 + + Remove reference to --help-output-content in --help-output (as + --help-output-format's options aren't available in hb-view) + + util/options.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1d55ffeb66381889f11ebb9039ca4ec2ca5efbab +Author: Collin Fair +Date: Sat Feb 14 09:29:35 2015 -0500 + + Add serialization syntax documentation. Clarify naming and wording + in --help-output/--help-format + + util/options.cc | 30 ++++++++++++++++-------------- + 1 file changed, 16 insertions(+), 14 deletions(-) + commit 9768e651be0561f07d6f38c3ed8bc5ee04882990 Author: Konstantin Ritt -Date: Sat Feb 14 00:58:51 2015 +0400 +Date: Sat Feb 14 00:58:51 2015 +0400 Fix build with MSVC on CE @@ -608,7 +7864,7 @@ Date: Sat Feb 14 00:58:51 2015 +0400 commit 7888a6b07a9922cedd3e0d235959058e0011357b Author: Behdad Esfahbod -Date: Wed Jan 28 12:40:40 2015 -0800 +Date: Wed Jan 28 12:40:40 2015 -0800 [ft] Handle negative scales with vertical writing @@ -617,7 +7873,7 @@ Date: Wed Jan 28 12:40:40 2015 -0800 commit 982d94eaa2a377616f22f39427e5ed9f1ce43263 Author: Behdad Esfahbod -Date: Wed Jan 28 10:51:33 2015 -0800 +Date: Wed Jan 28 10:51:33 2015 -0800 [coretext] Don't generate notdef glyph for default-ignorables @@ -630,7 +7886,7 @@ Date: Wed Jan 28 10:51:33 2015 -0800 commit 6917a045fd8d16952cad75fda8b291b11e1d3564 Author: Behdad Esfahbod -Date: Wed Jan 28 10:43:32 2015 -0800 +Date: Wed Jan 28 10:43:32 2015 -0800 [coretext] Unbreak glyph positioning in presence of notdef runs @@ -5155,29 +12411,29 @@ Date: Mon Apr 28 12:43:18 2014 -0700 Reshuffle test data - test/shaping/texts/in-tree/MANIFEST | 3 +++ - test/shaping/texts/in-tree/shaper-default/MANIFEST | 3 --- - .../texts/in-tree/shaper-default/script-hangul/MANIFEST | 1 - - .../in-tree/shaper-default/script-hangul/misc/MANIFEST | 1 - - .../in-tree/shaper-default/script-hangul/misc/misc.txt | 4 ---- - .../texts/in-tree/shaper-default/script-hebrew/MANIFEST | 1 - - .../in-tree/shaper-default/script-hebrew/misc/MANIFEST | 1 - - .../shaper-default/script-hebrew/misc/diacritics.txt | 16 - ---------------- - .../texts/in-tree/shaper-default/script-tibetan/MANIFEST | 1 - - .../in-tree/shaper-default/script-tibetan/misc/MANIFEST | 1 - - .../in-tree/shaper-default/script-tibetan/misc/misc.txt | 1 - - .../texts/in-tree/shaper-hangul/script-hangul/MANIFEST | 1 + - .../in-tree/shaper-hangul/script-hangul/misc/MANIFEST | 1 + - .../in-tree/shaper-hangul/script-hangul/misc/misc.txt | 4 ++++ - .../texts/in-tree/shaper-hebrew/script-hebrew/MANIFEST | 1 + - .../in-tree/shaper-hebrew/script-hebrew/misc/MANIFEST | 1 + - .../shaper-hebrew/script-hebrew/misc/diacritics.txt | 16 - ++++++++++++++++ - .../texts/in-tree/shaper-tibetan/script-tibetan/MANIFEST | 1 + - .../in-tree/shaper-tibetan/script-tibetan/misc/MANIFEST | 1 + - .../in-tree/shaper-tibetan/script-tibetan/misc/misc.txt | 1 + - 20 files changed, 30 insertions(+), 30 deletions(-) + test/shaping/texts/in-tree/MANIFEST | + 3 +++ + test/shaping/texts/in-tree/shaper-default/MANIFEST | + 3 --- + .../script-tibetan => shaper-hangul/script-hangul}/MANIFEST | + 0 + .../script-tibetan => shaper-hangul/script-hangul}/misc/MANIFEST + | 0 + .../{shaper-default => shaper-hangul}/script-hangul/misc/misc.txt + | 0 + .../in-tree/{shaper-default => shaper-hebrew}/script-hebrew/MANIFEST + | 0 + .../{shaper-default => shaper-hebrew}/script-hebrew/misc/MANIFEST + | 0 + .../script-hebrew/misc/diacritics.txt | + 0 + .../script-hangul => shaper-tibetan/script-tibetan}/MANIFEST | + 0 + .../script-hangul => shaper-tibetan/script-tibetan}/misc/MANIFEST + | 0 + .../{shaper-default => shaper-tibetan}/script-tibetan/misc/misc.txt + | 0 + 11 files changed, 3 insertions(+), 3 deletions(-) commit b082ef373cefb35dd98b5f2f0b677ccc7806f51e Author: Behdad Esfahbod @@ -5348,19 +12604,18 @@ Date: Mon Mar 24 14:26:36 2014 -0700 Start fleshing out builtin font functions - src/Makefile.am | 3 +- - src/hb-glib.cc | 2 +- - src/hb-icu.cc | 2 +- - src/hb-ot-font.cc | 260 - ++++++++++++++++++++++++++++++++++++++++++++++++ - src/hb-ot-font.h | 41 ++++++++ - src/hb-ot-hhea-table.hh | 2 +- - src/hb-ot-hmtx-table.hh | 2 +- - src/hb-ot.h | 1 + - src/hb-tt-font.cc | 77 -------------- - util/Makefile.am | 4 +- - util/options.cc | 4 + - 11 files changed, 314 insertions(+), 84 deletions(-) + src/Makefile.am | 3 +- + src/hb-glib.cc | 2 +- + src/hb-icu.cc | 2 +- + src/hb-ot-font.cc | 260 + ++++++++++++++++++++++++++++++++++++ + src/{hb-tt-font.cc => hb-ot-font.h} | 56 ++------ + src/hb-ot-hhea-table.hh | 2 +- + src/hb-ot-hmtx-table.hh | 2 +- + src/hb-ot.h | 1 + + util/Makefile.am | 4 +- + util/options.cc | 4 + + 10 files changed, 283 insertions(+), 53 deletions(-) commit 343a0e4e747d93eeeb724c5d585f5ba036a0df84 Author: Behdad Esfahbod @@ -5542,13 +12797,13 @@ Date: Mon Mar 10 14:57:55 2014 -0700 Minor - .../shaper-myanmar/script-myanmar/misc/MANIFEST | 1 - - .../shaper-myanmar/script-myanmar/misc/torture.txt | 23 - ---------------------- - .../shaper-sea/script-tai-tham/misc/MANIFEST | 1 + - .../shaper-sea/script-tai-tham/misc/torture.txt | 23 - ++++++++++++++++++++++ - 4 files changed, 24 insertions(+), 24 deletions(-) + test/shaping/texts/in-tree/shaper-myanmar/script-myanmar/misc/MANIFEST + | 1 - + test/shaping/texts/in-tree/shaper-sea/script-tai-tham/misc/MANIFEST + | 1 + + .../script-myanmar => shaper-sea/script-tai-tham}/misc/torture.txt + | 0 + 3 files changed, 1 insertion(+), 1 deletion(-) commit bb8ffb581b89cf27fb8e0743b81bbda21654233e Author: Behdad Esfahbod @@ -10276,9 +17531,8 @@ Date: Wed Mar 6 20:20:45 2013 -0500 Move valgrind suppressions to the correct directory - test/.valgrind-suppressions | 0 - test/api/.valgrind-suppressions | 0 - 2 files changed, 0 insertions(+), 0 deletions(-) + test/{ => api}/.valgrind-suppressions | 0 + 1 file changed, 0 insertions(+), 0 deletions(-) commit a8ac1d33c731f6200ee472ab6c37a80b72770564 Author: Behdad Esfahbod @@ -10759,37 +18013,25 @@ Date: Tue Feb 19 00:50:46 2013 -0500 Moving files around - test/shaping/texts/in-tree/MANIFEST | + test/shaping/texts/in-tree/MANIFEST | 2 -- - test/shaping/texts/in-tree/script-default/MANIFEST | - 1 - - test/shaping/texts/in-tree/script-default/misc/MANIFEST | - 1 - - test/shaping/texts/in-tree/script-default/misc/misc.txt | - 1 - - test/shaping/texts/in-tree/shaper-default/MANIFEST | + test/shaping/texts/in-tree/shaper-default/MANIFEST | 2 ++ - test/shaping/texts/in-tree/shaper-default/script-hangul/MANIFEST | - 1 + - test/shaping/texts/in-tree/shaper-default/script-hangul/misc/MANIFEST | - 1 + - test/shaping/texts/in-tree/shaper-default/script-hangul/misc/misc.txt | - 3 +++ - test/shaping/texts/in-tree/shaper-default/script-tibetan/MANIFEST | - 1 + - test/shaping/texts/in-tree/shaper-default/script-tibetan/misc/MANIFEST | - 1 + - test/shaping/texts/in-tree/shaper-default/script-tibetan/misc/misc.txt | - 1 + - test/shaping/texts/in-tree/shaper-hangul/MANIFEST | - 1 - - test/shaping/texts/in-tree/shaper-hangul/script-hangul/MANIFEST | - 1 - - test/shaping/texts/in-tree/shaper-hangul/script-hangul/misc/MANIFEST | + .../in-tree/{shaper-hangul => shaper-default}/script-hangul/MANIFEST + | 0 + .../{shaper-hangul => shaper-default}/script-hangul/misc/MANIFEST + | 0 + .../{shaper-hangul => shaper-default}/script-hangul/misc/misc.txt + | 0 + .../in-tree/{script-default => shaper-default/script-tibetan}/MANIFEST + | 0 + .../{script-default => shaper-default/script-tibetan}/misc/MANIFEST + | 0 + .../{script-default => shaper-default/script-tibetan}/misc/misc.txt + | 0 + test/shaping/texts/in-tree/shaper-hangul/MANIFEST | 1 - - test/shaping/texts/in-tree/shaper-hangul/script-hangul/misc/misc.txt | - 3 --- - 15 files changed, 10 insertions(+), 11 deletions(-) + 9 files changed, 2 insertions(+), 3 deletions(-) commit b1f440759161cb5a54e1b1b910f3a8383b8e8472 Author: Behdad Esfahbod @@ -11430,33 +18672,28 @@ Date: Tue Feb 12 12:14:10 2013 -0500 src/Makefile.am | 12 +- src/gen-indic-table.py | 9 +- - src/hb-ot-shape-complex-indic-private.hh | 241 +----- - src/hb-ot-shape-complex-indic-table.cc | 869 - ++++++++++++++++++++ - src/hb-ot-shape-complex-indic-table.hh | 872 - --------------------- - src/hb-ot-shape-complex-indic.cc | 239 ++++++ + src/hb-ot-shape-complex-indic-private.hh | 241 +------------ + ...table.hh => hb-ot-shape-complex-indic-table.cc} | 9 +- + src/hb-ot-shape-complex-indic.cc | 239 ++++++++++++ src/hb-ot-shape-complex-myanmar.cc | 2 +- src/hb-ot-shape-complex-private.hh | 28 +- - src/hb-ot-shape-complex-sea-machine.rl | 102 +++ - src/hb-ot-shape-complex-sea.cc | 400 ++++++++++ + src/hb-ot-shape-complex-sea-machine.rl | 102 ++++++ + src/hb-ot-shape-complex-sea.cc | 400 + +++++++++++++++++++++ test/shaping/texts/in-tree/MANIFEST | 1 + .../in-tree/shaper-indic/south-east-asian/MANIFEST | 1 - - .../south-east-asian/script-new-tai-lue/MANIFEST | 1 - - .../script-new-tai-lue/misc/MANIFEST | 1 - - .../script-new-tai-lue/misc/misc.txt | 1 - test/shaping/texts/in-tree/shaper-myanmar/MANIFEST | 1 + test/shaping/texts/in-tree/shaper-sea/MANIFEST | 3 + - .../texts/in-tree/shaper-sea/script-cham/MANIFEST | 1 + - .../in-tree/shaper-sea/script-cham/misc/MANIFEST | 1 + + .../script-cham}/MANIFEST | 0 + .../script-cham}/misc/MANIFEST | 0 .../in-tree/shaper-sea/script-cham/misc/misc.txt | 1 + .../in-tree/shaper-sea/script-new-tai-lue/MANIFEST | 1 + .../shaper-sea/script-new-tai-lue/misc/MANIFEST | 1 + - .../shaper-sea/script-new-tai-lue/misc/misc.txt | 1 + + .../script-new-tai-lue/misc/misc.txt | 0 .../in-tree/shaper-sea/script-tai-tham/MANIFEST | 1 + .../shaper-sea/script-tai-tham/misc/MANIFEST | 1 + .../shaper-sea/script-tai-tham/misc/misc.txt | 2 + - 26 files changed, 1661 insertions(+), 1132 deletions(-) + 22 files changed, 792 insertions(+), 263 deletions(-) commit fb960212063016656dfaba83f072c81d1efc3202 Author: Behdad Esfahbod @@ -11466,29 +18703,23 @@ Date: Tue Feb 12 10:33:58 2013 -0500 test/shaping/texts/in-tree/MANIFEST | 1 + - test/shaping/texts/in-tree/script-default/MANIFEST - | 1 + - test/shaping/texts/in-tree/script-default/misc/MANIFEST - | 1 + - test/shaping/texts/in-tree/script-default/misc/misc.txt - | 1 + + .../south-east-asian/script-thai => script-default}/MANIFEST + | 0 + .../south-asian/script-tibetan => script-default}/misc/MANIFEST + | 0 + .../south-asian/script-tibetan => script-default}/misc/misc.txt + | 0 test/shaping/texts/in-tree/shaper-indic/MANIFEST | 1 - test/shaping/texts/in-tree/shaper-indic/south-asian/MANIFEST | 1 - .../texts/in-tree/shaper-indic/south-asian/script-tibetan/MANIFEST | 1 - - .../texts/in-tree/shaper-indic/south-asian/script-tibetan/misc/MANIFEST - | 1 - - .../texts/in-tree/shaper-indic/south-asian/script-tibetan/misc/misc.txt - | 1 - test/shaping/texts/in-tree/shaper-indic/south-east-asian/MANIFEST | 1 - - .../texts/in-tree/shaper-indic/south-east-asian/script-thai/MANIFEST - | 1 - .../in-tree/shaper-indic/south-east-asian/script-thai/misc/MANIFEST | 0 - 12 files changed, 4 insertions(+), 7 deletions(-) + 9 files changed, 1 insertion(+), 4 deletions(-) commit 5676d5d52784e16068ae483103d59111a8081854 Author: Behdad Esfahbod @@ -11611,23 +18842,25 @@ Date: Mon Feb 11 14:24:03 2013 -0500 Shuffle test data around - test/shaping/texts/in-tree/MANIFEST | 1 + - .../in-tree/shaper-indic/south-east-asian/MANIFEST | 1 - - .../south-east-asian/script-myanmar/MANIFEST | 1 - - .../south-east-asian/script-myanmar/misc/MANIFEST | 2 -- - .../south-east-asian/script-myanmar/misc/misc.txt | 1 - - .../south-east-asian/script-myanmar/misc/utn11.txt | 34 - ---------------------- - .../south-east-asian/script-thai/misc/MANIFEST | 1 - - .../south-east-asian/script-thai/misc/misc.txt | 11 ------- - .../in-tree/shaper-myanmar/script-myanmar/MANIFEST | 1 + - .../shaper-myanmar/script-myanmar/misc/MANIFEST | 2 ++ - .../shaper-myanmar/script-myanmar/misc/misc.txt | 1 + - .../shaper-myanmar/script-myanmar/misc/utn11.txt | 34 - ++++++++++++++++++++++ - .../in-tree/shaper-thai/script-thai/misc/MANIFEST | 1 + - .../in-tree/shaper-thai/script-thai/misc/misc.txt | 11 +++++++ - 14 files changed, 51 insertions(+), 51 deletions(-) + test/shaping/texts/in-tree/MANIFEST + | 1 + + test/shaping/texts/in-tree/shaper-indic/south-east-asian/MANIFEST + | 1 - + .../in-tree/shaper-indic/south-east-asian/script-thai/misc/MANIFEST + | 1 - + .../south-east-asian => shaper-myanmar}/script-myanmar/MANIFEST + | 0 + .../south-east-asian => shaper-myanmar}/script-myanmar/misc/MANIFEST + | 0 + .../south-east-asian => shaper-myanmar}/script-myanmar/misc/misc.txt + | 0 + .../south-east-asian => shaper-myanmar}/script-myanmar/misc/utn11.txt + | 0 + test/shaping/texts/in-tree/shaper-thai/script-thai/misc/MANIFEST + | 1 + + .../south-east-asian => shaper-thai}/script-thai/misc/misc.txt + | 0 + 9 files changed, 2 insertions(+), 2 deletions(-) commit 98628cac9f733f2674d6409954cddb7d0634c233 Author: Behdad Esfahbod @@ -11812,12 +19045,11 @@ Date: Mon Feb 4 23:06:50 2013 -0500 Merge check-internal-symbols.sh and check-exported-symbols.sh - src/Makefile.am | 3 +-- - src/check-exported-symbols.sh | 40 ---------------------------------- - src/check-internal-symbols.sh | 34 ----------------------------- - src/check-symbols.sh | 50 - +++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 51 insertions(+), 76 deletions(-) + src/Makefile.am | 3 +- + src/check-internal-symbols.sh | 34 + ---------------------- + ...{check-exported-symbols.sh => check-symbols.sh} | 16 ++++++++-- + 3 files changed, 14 insertions(+), 39 deletions(-) commit ceeae30f47b9d628484ae398bc38f3f60ee8eab4 Author: Behdad Esfahbod @@ -13741,12 +20973,12 @@ Date: Wed Nov 14 15:51:54 2012 -0800 Move Thai shaper into a separate file - src/Makefile.am | 3 +- - src/hb-ot-shape-complex-default.cc | 225 ++++++++++++++++++++++++ - src/hb-ot-shape-complex-misc.cc | 339 - ------------------------------------- - src/hb-ot-shape-complex-thai.cc | 141 +++++++++++++++ - 4 files changed, 368 insertions(+), 340 deletions(-) + src/Makefile.am | 3 +- + ...plex-misc.cc => hb-ot-shape-complex-default.cc} | 114 + ----------------- + src/hb-ot-shape-complex-thai.cc | 141 + +++++++++++++++++++++ + 3 files changed, 143 insertions(+), 115 deletions(-) commit ba82325b7a6311b787ae47f41a56964e2f2cba9f Author: Behdad Esfahbod @@ -16371,37 +23603,35 @@ Date: Fri Aug 10 09:06:30 2012 -0400 [test] Move around - .../in-tree/shaper-arabic/script-arabic/MANIFEST | 2 +- - .../shaper-arabic/script-arabic/crulp/MANIFEST | 1 - - .../script-arabic/crulp/ligatures/2grams.txt | 601 -- - .../script-arabic/crulp/ligatures/3grams.txt | 3415 ----------- - .../script-arabic/crulp/ligatures/4grams.txt | 6316 - -------------------- - .../script-arabic/crulp/ligatures/5grams.txt | 5029 - ---------------- - .../script-arabic/crulp/ligatures/6grams.txt | 1542 ----- - .../script-arabic/crulp/ligatures/7grams.txt | 354 -- - .../script-arabic/crulp/ligatures/8grams.txt | 26 - - .../script-arabic/crulp/ligatures/LICENSE | 3 - - .../script-arabic/crulp/ligatures/MANIFEST | 7 - - .../script-arabic/crulp/ligatures/README | 16 - - .../script-arabic/crulp/ligatures/SOURCES | 4 - - .../script-arabic/language-urdu/MANIFEST | 1 + - .../script-arabic/language-urdu/crulp/MANIFEST | 1 + - .../language-urdu/crulp/ligatures/2grams.txt | 601 ++ - .../language-urdu/crulp/ligatures/3grams.txt | 3415 +++++++++++ - .../language-urdu/crulp/ligatures/4grams.txt | 6316 - ++++++++++++++++++++ - .../language-urdu/crulp/ligatures/5grams.txt | 5029 - ++++++++++++++++ - .../language-urdu/crulp/ligatures/6grams.txt | 1542 +++++ - .../language-urdu/crulp/ligatures/7grams.txt | 354 ++ - .../language-urdu/crulp/ligatures/8grams.txt | 26 + - .../language-urdu/crulp/ligatures/LICENSE | 3 + - .../language-urdu/crulp/ligatures/MANIFEST | 7 + - .../language-urdu/crulp/ligatures/README | 16 + - .../language-urdu/crulp/ligatures/SOURCES | 4 + - 26 files changed, 17316 insertions(+), 17315 deletions(-) + test/shaping/texts/in-tree/shaper-arabic/script-arabic/MANIFEST | + 2 +- + .../texts/in-tree/shaper-arabic/script-arabic/language-urdu/MANIFEST | + 1 + + .../shaper-arabic/script-arabic/{ => language-urdu}/crulp/MANIFEST + | 0 + .../script-arabic/{ => language-urdu}/crulp/ligatures/2grams.txt + | 0 + .../script-arabic/{ => language-urdu}/crulp/ligatures/3grams.txt + | 0 + .../script-arabic/{ => language-urdu}/crulp/ligatures/4grams.txt + | 0 + .../script-arabic/{ => language-urdu}/crulp/ligatures/5grams.txt + | 0 + .../script-arabic/{ => language-urdu}/crulp/ligatures/6grams.txt + | 0 + .../script-arabic/{ => language-urdu}/crulp/ligatures/7grams.txt + | 0 + .../script-arabic/{ => language-urdu}/crulp/ligatures/8grams.txt + | 0 + .../script-arabic/{ => language-urdu}/crulp/ligatures/LICENSE + | 0 + .../script-arabic/{ => language-urdu}/crulp/ligatures/MANIFEST + | 0 + .../script-arabic/{ => language-urdu}/crulp/ligatures/README | + 0 + .../script-arabic/{ => language-urdu}/crulp/ligatures/SOURCES + | 0 + 14 files changed, 2 insertions(+), 1 deletion(-) commit 7a484c601e0958533eb85a6902296733c39537fe Author: Behdad Esfahbod @@ -16676,15 +23906,15 @@ Date: Wed Aug 8 14:33:37 2012 -0400 Minor renaming - src/Makefile.am | 4 +- - src/hb-ot-shape-fallback-private.hh | 39 ++++ - src/hb-ot-shape-fallback.cc | 276 - +++++++++++++++++++++++++++ - src/hb-ot-shape-position-fallback-private.hh | 39 ---- - src/hb-ot-shape-position-fallback.cc | 276 - --------------------------- - src/hb-ot-shape.cc | 4 +- - 6 files changed, 319 insertions(+), 319 deletions(-) + src/Makefile.am | + 4 ++-- + ...sition-fallback-private.hh => hb-ot-shape-fallback-private.hh} | + 8 ++++---- + src/{hb-ot-shape-position-fallback.cc => hb-ot-shape-fallback.cc} | + 4 ++-- + src/hb-ot-shape.cc | + 4 ++-- + 4 files changed, 10 insertions(+), 10 deletions(-) commit 801298b590effd768607bb532dc83c73ba65d16b Author: Behdad Esfahbod @@ -18280,29 +25510,25 @@ Date: Thu Jul 26 17:34:25 2012 -0400 Add global shape_plan. Unused so far. - src/Makefile.am | 15 ++-- - src/hb-coretext-private.hh | 42 --------- - src/hb-coretext.cc | 6 +- - src/hb-fallback-shape-private.hh | 41 --------- - src/hb-fallback-shape.cc | 62 ++++++++++++- - src/hb-font-private.hh | 12 +++ - src/hb-font.cc | 15 +++- - src/hb-graphite2-private.hh | 42 --------- - src/hb-old-private.hh | 40 --------- - src/hb-old.cc | 109 ++++++++++++++++++----- - src/hb-ot-shape-private.hh | 8 -- - src/hb-ot-shape.cc | 60 ++++++++++++- - src/hb-shape-plan-private.hh | 52 +++++++++++ - src/hb-shape-plan.cc | 85 ++++++++++++++++++ - src/hb-shape-plan.h | 60 +++++++++++++ - src/hb-shape.cc | 48 ++-------- - src/hb-shaper-impl-private.hh | 44 +++++++++ - src/hb-shaper-list.hh | 50 +++++++++++ - src/hb-shaper-private.hh | 81 +++++++++++++++++ - src/hb-uniscribe-private.hh | 42 --------- - src/hb-uniscribe.cc | 186 - ++++++++++++++++++++++++--------------- - 21 files changed, 735 insertions(+), 365 deletions(-) + src/Makefile.am | 15 +- + src/hb-coretext-private.hh | 42 ----- + src/hb-coretext.cc | 6 +- + src/hb-fallback-shape.cc | 62 ++++++- + src/hb-font-private.hh | 12 ++ + src/hb-font.cc | 15 +- + src/hb-old.cc | 109 +++++++++--- + src/hb-ot-shape-private.hh | 8 - + src/hb-ot-shape.cc | 60 ++++++- + ...aphite2-private.hh => hb-shape-plan-private.hh} | 28 +++- + src/hb-shape-plan.cc | 85 ++++++++++ + ...b-fallback-shape-private.hh => hb-shape-plan.h} | 39 +++-- + src/hb-shape.cc | 48 +----- + ...scribe-private.hh => hb-shaper-impl-private.hh} | 20 ++- + src/{hb-old-private.hh => hb-shaper-list.hh} | 30 ++-- + src/hb-shaper-private.hh | 81 +++++++++ + src/hb-uniscribe.cc | 186 + +++++++++++++-------- + 17 files changed, 608 insertions(+), 238 deletions(-) commit fa2dfcd560444d8c54b6349ee106134d3536f79b Author: Behdad Esfahbod @@ -20657,13 +27883,11 @@ Date: Tue Jul 3 11:38:46 2012 -0400 test/shaping/texts/in-tree/shaper-thai/MANIFEST | 2 +- test/shaping/texts/in-tree/shaper-thai/misc/MANIFEST | 1 - - test/shaping/texts/in-tree/shaper-thai/misc/misc.txt | - 6 ------ test/shaping/texts/in-tree/shaper-thai/script-thai/MANIFEST | 1 + test/shaping/texts/in-tree/shaper-thai/script-thai/misc/MANIFEST | 1 + - test/shaping/texts/in-tree/shaper-thai/script-thai/misc/sara-am.txt | - 4 ++++ - 6 files changed, 7 insertions(+), 8 deletions(-) + .../shaper-thai/{misc/misc.txt => script-thai/misc/sara-am.txt} | + 6 ++---- + 5 files changed, 5 insertions(+), 6 deletions(-) commit aa116582e69d18777448e7993078e5d6335ddfed Author: Behdad Esfahbod @@ -21705,50 +28929,49 @@ Date: Mon Jun 4 10:21:22 2012 -0400 s/script-punjabi/script-gurmukhi/ - .../texts/in-tree/shaper-indic/indic/MANIFEST | 2 +- - .../shaper-indic/indic/script-gurmukhi/MANIFEST | 2 + - .../indic/script-gurmukhi/misc/MANIFEST | 1 + - .../indic/script-gurmukhi/misc/misc.txt | 1 + - .../indic/script-gurmukhi/utrrs/LICENSE | 19 +++ - .../indic/script-gurmukhi/utrrs/MANIFEST | 3 + - .../indic/script-gurmukhi/utrrs/README | 13 ++ - .../indic/script-gurmukhi/utrrs/SOURCES | 2 + - .../IndicFontFeatureCodepoint-Consonants.txt | 38 ++++++ - .../IndicFontFeatureCodepoint-DependentVowels.txt | 9 ++ - .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 ++ - .../IndicFontFeatureCodepoint-GurmukhiSpecific.txt | 6 + - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 10 ++ - .../IndicFontFeatureCodepoint-Reserved.txt | 2 + - .../IndicFontFeatureCodepoint-VariousSigns.txt | 6 + - .../indic/script-gurmukhi/utrrs/codepoint/MANIFEST | 7 + - .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 22 +++ - .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 2 + - .../indic/script-gurmukhi/utrrs/gpos/MANIFEST | 2 + - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 152 - +++++++++++++++++++++ - .../indic/script-gurmukhi/utrrs/gsub/MANIFEST | 1 + - .../shaper-indic/indic/script-punjabi/MANIFEST | 2 - - .../indic/script-punjabi/misc/MANIFEST | 1 - - .../indic/script-punjabi/misc/misc.txt | 1 - - .../indic/script-punjabi/utrrs/LICENSE | 19 --- - .../indic/script-punjabi/utrrs/MANIFEST | 3 - - .../shaper-indic/indic/script-punjabi/utrrs/README | 13 -- - .../indic/script-punjabi/utrrs/SOURCES | 2 - - .../IndicFontFeatureCodepoint-Consonants.txt | 38 ------ - .../IndicFontFeatureCodepoint-DependentVowels.txt | 9 -- - .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 -- - .../IndicFontFeatureCodepoint-GurmukhiSpecific.txt | 6 - - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 10 -- - .../IndicFontFeatureCodepoint-Reserved.txt | 2 - - .../IndicFontFeatureCodepoint-VariousSigns.txt | 6 - - .../indic/script-punjabi/utrrs/codepoint/MANIFEST | 7 - - .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 22 --- - .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 2 - - .../indic/script-punjabi/utrrs/gpos/MANIFEST | 2 - - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 152 - --------------------- - .../indic/script-punjabi/utrrs/gsub/MANIFEST | 1 - - 41 files changed, 309 insertions(+), 309 deletions(-) + test/shaping/texts/in-tree/shaper-indic/indic/MANIFEST | + 2 +- + .../shaper-indic/indic/{script-punjabi => script-gurmukhi}/MANIFEST + | 0 + .../indic/{script-punjabi => script-gurmukhi}/misc/MANIFEST | + 0 + .../indic/{script-punjabi => script-gurmukhi}/misc/misc.txt | + 0 + .../indic/{script-punjabi => script-gurmukhi}/utrrs/LICENSE | + 0 + .../indic/{script-punjabi => script-gurmukhi}/utrrs/MANIFEST | + 0 + .../shaper-indic/indic/{script-punjabi => script-gurmukhi}/utrrs/README + | 0 + .../indic/{script-punjabi => script-gurmukhi}/utrrs/SOURCES | + 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt | + 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt + | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt | + 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-GurmukhiSpecific.txt + | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt + | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt | + 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt + | 0 + .../indic/{script-punjabi => script-gurmukhi}/utrrs/codepoint/MANIFEST + | 0 + .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | + 0 + .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | + 0 + .../indic/{script-punjabi => script-gurmukhi}/utrrs/gpos/MANIFEST + | 0 + .../utrrs/gsub/IndicFontFeatureGSUB.txt | + 0 + .../indic/{script-punjabi => script-gurmukhi}/utrrs/gsub/MANIFEST + | 0 + 21 files changed, 1 insertion(+), 1 deletion(-) commit c1885483120d4b686b2fe95b217dce7248e040b1 Author: Behdad Esfahbod @@ -22054,9 +29277,8 @@ Date: Wed May 23 21:50:43 2012 -0400 +++++++++++++++++++++ .../misc/diacritics/language-persian.txt | 48 ++ .../misc/diacritics/language-urdu.txt | 188 ++++++ - .../misc/diacritics/ligature-diacritics.txt | 1 + - .../script-arabic/misc/ligature-diacritics.txt | 1 - - 8 files changed, 966 insertions(+), 2 deletions(-) + .../misc/{ => diacritics}/ligature-diacritics.txt | 0 + 7 files changed, 965 insertions(+), 1 deletion(-) commit ed2f1363a391add41f10cff18792003583a10257 Author: Behdad Esfahbod @@ -22082,21 +29304,23 @@ Date: Fri May 18 15:04:35 2012 -0400 From: http://people.mozilla.org/~jdaggett/tests/cjkcompat.html - test/shaping/texts/in-tree/shaper-default/MANIFEST | 3 +- - .../in-tree/shaper-default/script-han/MANIFEST | 1 + - .../shaper-default/script-han/misc/MANIFEST | 1 + - .../shaper-default/script-han/misc/cjk-compat.txt | 3 ++ - .../shaper-default/script-hiragana/MANIFEST | 1 + - .../shaper-default/script-hiragana/misc/MANIFEST | 2 + - .../script-hiragana/misc/kazuraki-liga-lines.txt | 8 ++++ - .../script-hiragana/misc/kazuraki-liga.txt | 53 - ++++++++++++++++++++++ - .../shaper-default/script-japanese/MANIFEST | 1 - - .../shaper-default/script-japanese/misc/MANIFEST | 2 - - .../script-japanese/misc/kazuraki-liga-lines.txt | 8 ---- - .../script-japanese/misc/kazuraki-liga.txt | 53 - ---------------------- - 12 files changed, 71 insertions(+), 65 deletions(-) + test/shaping/texts/in-tree/shaper-default/MANIFEST | + 3 ++- + .../in-tree/shaper-default/{script-japanese => script-han}/MANIFEST + | 0 + test/shaping/texts/in-tree/shaper-default/script-han/misc/MANIFEST | + 1 + + .../texts/in-tree/shaper-default/script-han/misc/cjk-compat.txt | + 3 +++ + test/shaping/texts/in-tree/shaper-default/script-hiragana/MANIFEST | + 1 + + .../shaper-default/{script-japanese => script-hiragana}/misc/MANIFEST + | 0 + .../{script-japanese => script-hiragana}/misc/kazuraki-liga-lines.txt + | 0 + .../{script-japanese => script-hiragana}/misc/kazuraki-liga.txt + | 0 + 8 files changed, 7 insertions(+), 1 deletion(-) commit 20fdb0f41d81b226e076a4830d4b0d03da31fc19 Author: Behdad Esfahbod @@ -22243,15 +29467,14 @@ Date: Tue May 15 23:10:39 2012 -0400 [util] Refactor to accommodate for upcoming new tool - util/Makefile.am | 10 ++++--- - util/hb-shape.cc | 70 +++++++++++++++++++------------------------ - util/hb-view.cc | 8 +++-- - util/hb-view.hh | 80 - -------------------------------------------------- - util/main-font-text.hh | 80 - ++++++++++++++++++++++++++++++++++++++++++++++++++ - util/shape-consumer.hh | 69 +++++++++++++++++++++++++++++++++++++++++++ - 6 files changed, 191 insertions(+), 126 deletions(-) + util/Makefile.am | 10 +++-- + util/hb-shape.cc | 70 + +++++++++++++++------------------- + util/hb-view.cc | 8 ++-- + util/{hb-view.hh => main-font-text.hh} | 48 +++++++++++------------ + util/shape-consumer.hh | 69 + +++++++++++++++++++++++++++++++++ + 5 files changed, 135 insertions(+), 70 deletions(-) commit 1d6846db9ebf84561bb30a4e48c6c43184914099 Author: Behdad Esfahbod @@ -24169,25 +31392,24 @@ Date: Thu Apr 12 14:53:53 2012 -0400 More shaper API coming in preparation for plan/planned API. - configure.ac | 6 ++--- - src/Makefile.am | 11 +++++---- - src/hb-fallback-shape-private.hh | 9 ++++---- - src/hb-fallback-shape.cc | 9 ++++---- - src/hb-graphite2-private.hh | 42 +++++++++++++++++++++++++++++++++++ - src/hb-graphite2.cc | 5 ++--- - src/hb-graphite2.h | 7 ------ - src/hb-ot-shape-private.hh | 8 +++++-- - src/hb-ot-shape.cc | 11 ++++----- - src/hb-ot-shape.h | 48 - ---------------------------------------- - src/hb-ot.h | 1 - - src/hb-shape.cc | 24 ++++++++------------ - src/hb-shape.h | 1 - - src/hb-uniscribe-private.hh | 42 +++++++++++++++++++++++++++++++++++ - src/hb-uniscribe.cc | 9 ++++---- - src/hb-uniscribe.h | 7 ------ - util/options.hh | 2 +- - 17 files changed, 126 insertions(+), 116 deletions(-) + configure.ac | 6 ++-- + src/Makefile.am | 11 +++---- + src/hb-fallback-shape-private.hh | 9 +++--- + src/hb-fallback-shape.cc | 9 +++--- + src/{hb-ot-shape.h => hb-graphite2-private.hh} | 30 ++++++++---------- + src/hb-graphite2.cc | 5 ++- + src/hb-graphite2.h | 7 ----- + src/hb-ot-shape-private.hh | 8 +++-- + src/hb-ot-shape.cc | 11 +++---- + src/hb-ot.h | 1 - + src/hb-shape.cc | 24 ++++++--------- + src/hb-shape.h | 1 - + src/hb-uniscribe-private.hh | 42 + ++++++++++++++++++++++++++ + src/hb-uniscribe.cc | 9 +++--- + src/hb-uniscribe.h | 7 ----- + util/options.hh | 2 +- + 16 files changed, 96 insertions(+), 86 deletions(-) commit c6035cf802c60f0526f421f39a55886061df94ee Author: Behdad Esfahbod @@ -24491,23 +31713,17 @@ Date: Sat Apr 7 22:07:23 2012 -0400 Move around - test/shaping/texts/in-tree/MANIFEST | - 1 + - test/shaping/texts/in-tree/shaper-default/MANIFEST | - 1 - - test/shaping/texts/in-tree/shaper-default/script-hangul/MANIFEST | - 1 - - test/shaping/texts/in-tree/shaper-default/script-hangul/misc/MANIFEST | - 1 - - test/shaping/texts/in-tree/shaper-default/script-hangul/misc/misc.txt | - 2 -- - test/shaping/texts/in-tree/shaper-hangul/script-hangul/MANIFEST | - 1 + - test/shaping/texts/in-tree/shaper-hangul/script-hangul/misc/MANIFEST | - 1 + - test/shaping/texts/in-tree/shaper-hangul/script-hangul/misc/misc.txt | - 2 ++ - 8 files changed, 5 insertions(+), 5 deletions(-) + test/shaping/texts/in-tree/MANIFEST + | 1 + + test/shaping/texts/in-tree/shaper-default/MANIFEST + | 1 - + .../in-tree/{shaper-default => shaper-hangul}/script-hangul/MANIFEST + | 0 + .../{shaper-default => shaper-hangul}/script-hangul/misc/MANIFEST + | 0 + .../{shaper-default => shaper-hangul}/script-hangul/misc/misc.txt + | 0 + 5 files changed, 1 insertion(+), 1 deletion(-) commit d4cc44716c1e098f8abbc0e495404598026ef242 Author: Behdad Esfahbod @@ -25374,433 +32590,221 @@ Date: Fri Jan 20 17:16:35 2012 -0500 Move - test/shaping/texts/MANIFEST | 4 +- - test/shaping/texts/in-tree/MANIFEST | 3 + - test/shaping/texts/in-tree/shaper-arabic/MANIFEST | 5 + - .../in-tree/shaper-arabic/script-arabic/MANIFEST | 0 - .../in-tree/shaper-arabic/script-mandaic/MANIFEST | 0 - .../shaper-arabic/script-mongolian/MANIFEST | 0 - .../in-tree/shaper-arabic/script-nko/MANIFEST | 0 - .../in-tree/shaper-arabic/script-syriac/MANIFEST | 0 - test/shaping/texts/in-tree/shaper-default/MANIFEST | 0 - test/shaping/texts/in-tree/shaper-indic/MANIFEST | 1 + - .../texts/in-tree/shaper-indic/indic/MANIFEST | 11 + - .../shaper-indic/indic/script-assamese/MANIFEST | 1 + - .../indic/script-assamese/utrrs/LICENSE | 19 + - .../indic/script-assamese/utrrs/MANIFEST | 3 + - .../indic/script-assamese/utrrs/README | 13 + - .../indic/script-assamese/utrrs/SOURCES | 2 + - .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 4 + - .../IndicFontFeatureCodepoint-Consonants.txt | 40 + - .../IndicFontFeatureCodepoint-DependentVowels.txt | 10 + - .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 + - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 11 + - .../IndicFontFeatureCodepoint-Reserved.txt | 2 + - .../IndicFontFeatureCodepoint-VariousSigns.txt | 6 + - .../indic/script-assamese/utrrs/codepoint/MANIFEST | 7 + - .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 59 + - .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 131 ++ - .../indic/script-assamese/utrrs/gpos/MANIFEST | 2 + - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 139 ++ - .../indic/script-assamese/utrrs/gsub/MANIFEST | 1 + - .../shaper-indic/indic/script-bengali/MANIFEST | 1 + - .../indic/script-bengali/utrrs/LICENSE | 19 + - .../indic/script-bengali/utrrs/MANIFEST | 3 + - .../shaper-indic/indic/script-bengali/utrrs/README | 13 + - .../indic/script-bengali/utrrs/SOURCES | 2 + - .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 1 + - .../IndicFontFeatureCodepoint-Consonants.txt | 36 + - .../IndicFontFeatureCodepoint-DependentVowels.txt | 10 + - .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 + - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 12 + - .../IndicFontFeatureCodepoint-Reserved.txt | 2 + - .../IndicFontFeatureCodepoint-VariousSigns.txt | 6 + - .../indic/script-bengali/utrrs/codepoint/MANIFEST | 7 + - .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 58 + - .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 119 ++ - .../indic/script-bengali/utrrs/gpos/MANIFEST | 2 + - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 215 +++ - .../indic/script-bengali/utrrs/gsub/MANIFEST | 1 + - .../shaper-indic/indic/script-devanagari/MANIFEST | 1 + - .../indic/script-devanagari/utrrs/LICENSE | 19 + - .../indic/script-devanagari/utrrs/MANIFEST | 3 + - .../indic/script-devanagari/utrrs/README | 13 + - .../indic/script-devanagari/utrrs/SOURCES | 2 + - ...icFontFeatureCodepoint-AdditionalConsonants.txt | 8 + - .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 4 + - .../IndicFontFeatureCodepoint-Consonants.txt | 45 + - .../IndicFontFeatureCodepoint-DependentVowels.txt | 14 + - ...tFeatureCodepoint-DevnagariSpecificAddition.txt | 1 + - .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 + - ...ndicFontFeatureCodepoint-GenericPunctuation.txt | 2 + - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 16 + - .../IndicFontFeatureCodepoint-VariousSigns.txt | 10 + - .../script-devanagari/utrrs/codepoint/MANIFEST | 9 + - .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 185 +++ - .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 185 +++ - .../indic/script-devanagari/utrrs/gpos/MANIFEST | 2 + - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 1367 - ++++++++++++++++++++ - .../indic/script-devanagari/utrrs/gsub/MANIFEST | 1 + - .../shaper-indic/indic/script-gujarati/MANIFEST | 1 + - .../indic/script-gujarati/utrrs/LICENSE | 19 + - .../indic/script-gujarati/utrrs/MANIFEST | 3 + - .../indic/script-gujarati/utrrs/README | 13 + - .../indic/script-gujarati/utrrs/SOURCES | 2 + - .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 1 + - .../IndicFontFeatureCodepoint-Consonants.txt | 34 + - .../IndicFontFeatureCodepoint-DependentVowels.txt | 12 + - .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 + - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 13 + - .../IndicFontFeatureCodepoint-Reserved.txt | 2 + - .../IndicFontFeatureCodepoint-VariousSigns.txt | 7 + - .../indic/script-gujarati/utrrs/codepoint/MANIFEST | 7 + - .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 170 +++ - .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 170 +++ - .../indic/script-gujarati/utrrs/gpos/MANIFEST | 2 + - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 1156 - +++++++++++++++++ - .../indic/script-gujarati/utrrs/gsub/MANIFEST | 1 + - .../shaper-indic/indic/script-kannada/MANIFEST | 1 + - .../indic/script-kannada/utrrs/LICENSE | 19 + - .../indic/script-kannada/utrrs/MANIFEST | 3 + - .../shaper-indic/indic/script-kannada/utrrs/README | 13 + - .../indic/script-kannada/utrrs/SOURCES | 2 + - ...icFontFeatureCodepoint-AdditionalConsonants.txt | 1 + - .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 4 + - .../IndicFontFeatureCodepoint-Consonants.txt | 40 + - .../IndicFontFeatureCodepoint-DependentVowels.txt | 13 + - .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 + - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 14 + - .../IndicFontFeatureCodepoint-Reserved.txt | 2 + - .../IndicFontFeatureCodepoint-VariousSigns.txt | 9 + - .../indic/script-kannada/utrrs/codepoint/MANIFEST | 8 + - .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 188 +++ - .../indic/script-kannada/utrrs/gpos/MANIFEST | 1 + - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 306 +++++ - .../indic/script-kannada/utrrs/gsub/MANIFEST | 1 + - .../shaper-indic/indic/script-malayalam/MANIFEST | 1 + - .../indic/script-malayalam/utrrs/LICENSE | 19 + - .../indic/script-malayalam/utrrs/MANIFEST | 2 + - .../indic/script-malayalam/utrrs/README | 13 + - .../indic/script-malayalam/utrrs/SOURCES | 2 + - .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 2 + - .../IndicFontFeatureCodepoint-Consonants.txt | 36 + - .../IndicFontFeatureCodepoint-DependentVowels.txt | 12 + - .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 + - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 14 + - .../IndicFontFeatureCodepoint-Reserved.txt | 2 + - .../IndicFontFeatureCodepoint-VariousSigns.txt | 4 + - .../script-malayalam/utrrs/codepoint/MANIFEST | 7 + - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 254 ++++ - .../indic/script-malayalam/utrrs/gsub/MANIFEST | 1 + - .../shaper-indic/indic/script-oriya/MANIFEST | 1 + - .../shaper-indic/indic/script-oriya/utrrs/LICENSE | 19 + - .../shaper-indic/indic/script-oriya/utrrs/MANIFEST | 2 + - .../shaper-indic/indic/script-oriya/utrrs/README | 13 + - .../shaper-indic/indic/script-oriya/utrrs/SOURCES | 2 + - ...icFontFeatureCodepoint-AdditionalConsonants.txt | 3 + - .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 2 + - .../IndicFontFeatureCodepoint-Consonants.txt | 34 + - .../IndicFontFeatureCodepoint-DependentVowels.txt | 12 + - .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 + - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 12 + - .../IndicFontFeatureCodepoint-OriyaSpecific.txt | 2 + - .../IndicFontFeatureCodepoint-Reserved.txt | 2 + - .../IndicFontFeatureCodepoint-VariousSigns.txt | 8 + - .../indic/script-oriya/utrrs/codepoint/MANIFEST | 9 + - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 170 +++ - .../indic/script-oriya/utrrs/gsub/MANIFEST | 1 + - .../shaper-indic/indic/script-punjabi/MANIFEST | 1 + - .../indic/script-punjabi/utrrs/LICENSE | 19 + - .../indic/script-punjabi/utrrs/MANIFEST | 3 + - .../shaper-indic/indic/script-punjabi/utrrs/README | 13 + - .../indic/script-punjabi/utrrs/SOURCES | 2 + - .../IndicFontFeatureCodepoint-Consonants.txt | 38 + - .../IndicFontFeatureCodepoint-DependentVowels.txt | 9 + - .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 + - .../IndicFontFeatureCodepoint-GurmukhiSpecific.txt | 6 + - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 10 + - .../IndicFontFeatureCodepoint-Reserved.txt | 2 + - .../IndicFontFeatureCodepoint-VariousSigns.txt | 6 + - .../indic/script-punjabi/utrrs/codepoint/MANIFEST | 7 + - .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 22 + - .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 2 + - .../indic/script-punjabi/utrrs/gpos/MANIFEST | 2 + - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 152 +++ - .../indic/script-punjabi/utrrs/gsub/MANIFEST | 1 + - .../shaper-indic/indic/script-sinhala/MANIFEST | 1 + - .../indic/script-sinhala/utrrs/LICENSE | 19 + - .../indic/script-sinhala/utrrs/MANIFEST | 3 + - .../shaper-indic/indic/script-sinhala/utrrs/README | 13 + - .../indic/script-sinhala/utrrs/SOURCES | 2 + - .../IndicFontFeatureCodepoint-Consonants.txt | 41 + - .../IndicFontFeatureCodepoint-DependentVowels.txt | 17 + - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 18 + - .../IndicFontFeatureCodepoint-Punctuation.txt | 1 + - .../IndicFontFeatureCodepoint-VariousSigns.txt | 3 + - .../indic/script-sinhala/utrrs/codepoint/MANIFEST | 5 + - .../utrrs/gpos/IndicFontFeatureGPOS.txt | 162 +++ - .../indic/script-sinhala/utrrs/gpos/MANIFEST | 1 + - .../utrrs/gsub/IndicFontFeatureGSUB-Conjunct.txt | 1 + - .../gsub/IndicFontFeatureGSUB-Rakaaraansaya.txt | 41 + - .../utrrs/gsub/IndicFontFeatureGSUB-Repaya.txt | 42 + - .../gsub/IndicFontFeatureGSUB-Special-Cases.txt | 2 + - .../gsub/IndicFontFeatureGSUB-TouchingLetters.txt | 1 + - .../utrrs/gsub/IndicFontFeatureGSUB-Yansaya.txt | 41 + - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 1 + - .../indic/script-sinhala/utrrs/gsub/MANIFEST | 7 + - .../shaper-indic/indic/script-tamil/MANIFEST | 1 + - .../shaper-indic/indic/script-tamil/utrrs/LICENSE | 19 + - .../shaper-indic/indic/script-tamil/utrrs/MANIFEST | 3 + - .../shaper-indic/indic/script-tamil/utrrs/README | 13 + - .../shaper-indic/indic/script-tamil/utrrs/SOURCES | 2 + - .../IndicFontFeatureCodepoint-Consonants.txt | 23 + - .../IndicFontFeatureCodepoint-CurrencySymbols.txt | 1 + - .../IndicFontFeatureCodepoint-DependentVowels.txt | 11 + - .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 + - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 12 + - .../IndicFontFeatureCodepoint-Numerics.txt | 3 + - .../IndicFontFeatureCodepoint-Reserved.txt | 2 + - .../IndicFontFeatureCodepoint-Symbols.txt | 6 + - .../IndicFontFeatureCodepoint-TamilSymbol.txt | 1 + - .../IndicFontFeatureCodepoint-VariousSigns.txt | 4 + - .../indic/script-tamil/utrrs/codepoint/MANIFEST | 10 + - .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 64 + - .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 44 + - .../indic/script-tamil/utrrs/gpos/MANIFEST | 2 + - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 4 + - .../indic/script-tamil/utrrs/gsub/MANIFEST | 1 + - .../shaper-indic/indic/script-telugu/MANIFEST | 1 + - .../shaper-indic/indic/script-telugu/utrrs/LICENSE | 19 + - .../indic/script-telugu/utrrs/MANIFEST | 3 + - .../shaper-indic/indic/script-telugu/utrrs/README | 13 + - .../shaper-indic/indic/script-telugu/utrrs/SOURCES | 2 + - .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 2 + - .../IndicFontFeatureCodepoint-Consonants.txt | 38 + - .../IndicFontFeatureCodepoint-DependentVowels.txt | 13 + - .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 + - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 14 + - .../IndicFontFeatureCodepoint-Reserved.txt | 2 + - .../IndicFontFeatureCodepoint-VariousSigns.txt | 6 + - .../indic/script-telugu/utrrs/codepoint/MANIFEST | 7 + - .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 385 ++++++ - .../indic/script-telugu/utrrs/gpos/MANIFEST | 1 + - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 287 ++++ - .../indic/script-telugu/utrrs/gsub/MANIFEST | 1 + - test/shaping/texts/shaper-arabic/MANIFEST | 5 - - .../texts/shaper-arabic/script-arabic/MANIFEST | 0 - .../texts/shaper-arabic/script-mandaic/MANIFEST | 0 - .../texts/shaper-arabic/script-mongolian/MANIFEST | 0 - .../texts/shaper-arabic/script-nko/MANIFEST | 0 - .../texts/shaper-arabic/script-syriac/MANIFEST | 0 - test/shaping/texts/shaper-default/MANIFEST | 0 - test/shaping/texts/shaper-indic/MANIFEST | 1 - - test/shaping/texts/shaper-indic/indic/MANIFEST | 11 - - .../shaper-indic/indic/script-assamese/MANIFEST | 1 - - .../indic/script-assamese/utrrs/LICENSE | 19 - - .../indic/script-assamese/utrrs/MANIFEST | 3 - - .../indic/script-assamese/utrrs/README | 13 - - .../indic/script-assamese/utrrs/SOURCES | 2 - - .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 4 - - .../IndicFontFeatureCodepoint-Consonants.txt | 40 - - .../IndicFontFeatureCodepoint-DependentVowels.txt | 10 - - .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 - - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 11 - - .../IndicFontFeatureCodepoint-Reserved.txt | 2 - - .../IndicFontFeatureCodepoint-VariousSigns.txt | 6 - - .../indic/script-assamese/utrrs/codepoint/MANIFEST | 7 - - .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 59 - - .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 131 -- - .../indic/script-assamese/utrrs/gpos/MANIFEST | 2 - - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 139 -- - .../indic/script-assamese/utrrs/gsub/MANIFEST | 1 - - .../shaper-indic/indic/script-bengali/MANIFEST | 1 - - .../indic/script-bengali/utrrs/LICENSE | 19 - - .../indic/script-bengali/utrrs/MANIFEST | 3 - - .../shaper-indic/indic/script-bengali/utrrs/README | 13 - - .../indic/script-bengali/utrrs/SOURCES | 2 - - .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 1 - - .../IndicFontFeatureCodepoint-Consonants.txt | 36 - - .../IndicFontFeatureCodepoint-DependentVowels.txt | 10 - - .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 - - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 12 - - .../IndicFontFeatureCodepoint-Reserved.txt | 2 - - .../IndicFontFeatureCodepoint-VariousSigns.txt | 6 - - .../indic/script-bengali/utrrs/codepoint/MANIFEST | 7 - - .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 58 - - .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 119 -- - .../indic/script-bengali/utrrs/gpos/MANIFEST | 2 - - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 215 --- - .../indic/script-bengali/utrrs/gsub/MANIFEST | 1 - - .../shaper-indic/indic/script-devanagari/MANIFEST | 1 - - .../indic/script-devanagari/utrrs/LICENSE | 19 - - .../indic/script-devanagari/utrrs/MANIFEST | 3 - - .../indic/script-devanagari/utrrs/README | 13 - - .../indic/script-devanagari/utrrs/SOURCES | 2 - - ...icFontFeatureCodepoint-AdditionalConsonants.txt | 8 - - .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 4 - - .../IndicFontFeatureCodepoint-Consonants.txt | 45 - - .../IndicFontFeatureCodepoint-DependentVowels.txt | 14 - - ...tFeatureCodepoint-DevnagariSpecificAddition.txt | 1 - - .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 - - ...ndicFontFeatureCodepoint-GenericPunctuation.txt | 2 - - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 16 - - .../IndicFontFeatureCodepoint-VariousSigns.txt | 10 - - .../script-devanagari/utrrs/codepoint/MANIFEST | 9 - - .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 185 --- - .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 185 --- - .../indic/script-devanagari/utrrs/gpos/MANIFEST | 2 - - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 1367 - -------------------- - .../indic/script-devanagari/utrrs/gsub/MANIFEST | 1 - - .../shaper-indic/indic/script-gujarati/MANIFEST | 1 - - .../indic/script-gujarati/utrrs/LICENSE | 19 - - .../indic/script-gujarati/utrrs/MANIFEST | 3 - - .../indic/script-gujarati/utrrs/README | 13 - - .../indic/script-gujarati/utrrs/SOURCES | 2 - - .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 1 - - .../IndicFontFeatureCodepoint-Consonants.txt | 34 - - .../IndicFontFeatureCodepoint-DependentVowels.txt | 12 - - .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 - - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 13 - - .../IndicFontFeatureCodepoint-Reserved.txt | 2 - - .../IndicFontFeatureCodepoint-VariousSigns.txt | 7 - - .../indic/script-gujarati/utrrs/codepoint/MANIFEST | 7 - - .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 170 --- - .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 170 --- - .../indic/script-gujarati/utrrs/gpos/MANIFEST | 2 - - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 1156 - ----------------- - .../indic/script-gujarati/utrrs/gsub/MANIFEST | 1 - - .../shaper-indic/indic/script-kannada/MANIFEST | 1 - - .../indic/script-kannada/utrrs/LICENSE | 19 - - .../indic/script-kannada/utrrs/MANIFEST | 3 - - .../shaper-indic/indic/script-kannada/utrrs/README | 13 - - .../indic/script-kannada/utrrs/SOURCES | 2 - - ...icFontFeatureCodepoint-AdditionalConsonants.txt | 1 - - .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 4 - - .../IndicFontFeatureCodepoint-Consonants.txt | 40 - - .../IndicFontFeatureCodepoint-DependentVowels.txt | 13 - - .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 - - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 14 - - .../IndicFontFeatureCodepoint-Reserved.txt | 2 - - .../IndicFontFeatureCodepoint-VariousSigns.txt | 9 - - .../indic/script-kannada/utrrs/codepoint/MANIFEST | 8 - - .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 188 --- - .../indic/script-kannada/utrrs/gpos/MANIFEST | 1 - - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 306 ----- - .../indic/script-kannada/utrrs/gsub/MANIFEST | 1 - - .../shaper-indic/indic/script-malayalam/MANIFEST | 1 - - .../indic/script-malayalam/utrrs/LICENSE | 19 - - .../indic/script-malayalam/utrrs/MANIFEST | 2 - - .../indic/script-malayalam/utrrs/README | 13 - - .../indic/script-malayalam/utrrs/SOURCES | 2 - - .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 2 - - .../IndicFontFeatureCodepoint-Consonants.txt | 36 - - .../IndicFontFeatureCodepoint-DependentVowels.txt | 12 - - .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 - - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 14 - - .../IndicFontFeatureCodepoint-Reserved.txt | 2 - - .../IndicFontFeatureCodepoint-VariousSigns.txt | 4 - - .../script-malayalam/utrrs/codepoint/MANIFEST | 7 - - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 254 ---- - .../indic/script-malayalam/utrrs/gsub/MANIFEST | 1 - - .../texts/shaper-indic/indic/script-oriya/MANIFEST | 1 - - .../shaper-indic/indic/script-oriya/utrrs/LICENSE | 19 - - .../shaper-indic/indic/script-oriya/utrrs/MANIFEST | 2 - - .../shaper-indic/indic/script-oriya/utrrs/README | 13 - - .../shaper-indic/indic/script-oriya/utrrs/SOURCES | 2 - - ...icFontFeatureCodepoint-AdditionalConsonants.txt | 3 - - .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 2 - - .../IndicFontFeatureCodepoint-Consonants.txt | 34 - - .../IndicFontFeatureCodepoint-DependentVowels.txt | 12 - - .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 - - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 12 - - .../IndicFontFeatureCodepoint-OriyaSpecific.txt | 2 - - .../IndicFontFeatureCodepoint-Reserved.txt | 2 - - .../IndicFontFeatureCodepoint-VariousSigns.txt | 8 - - .../indic/script-oriya/utrrs/codepoint/MANIFEST | 9 - - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 170 --- - .../indic/script-oriya/utrrs/gsub/MANIFEST | 1 - - .../shaper-indic/indic/script-punjabi/MANIFEST | 1 - - .../indic/script-punjabi/utrrs/LICENSE | 19 - - .../indic/script-punjabi/utrrs/MANIFEST | 3 - - .../shaper-indic/indic/script-punjabi/utrrs/README | 13 - - .../indic/script-punjabi/utrrs/SOURCES | 2 - - .../IndicFontFeatureCodepoint-Consonants.txt | 38 - - .../IndicFontFeatureCodepoint-DependentVowels.txt | 9 - - .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 - - .../IndicFontFeatureCodepoint-GurmukhiSpecific.txt | 6 - - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 10 - - .../IndicFontFeatureCodepoint-Reserved.txt | 2 - - .../IndicFontFeatureCodepoint-VariousSigns.txt | 6 - - .../indic/script-punjabi/utrrs/codepoint/MANIFEST | 7 - - .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 22 - - .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 2 - - .../indic/script-punjabi/utrrs/gpos/MANIFEST | 2 - - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 152 --- - .../indic/script-punjabi/utrrs/gsub/MANIFEST | 1 - - .../shaper-indic/indic/script-sinhala/MANIFEST | 1 - - .../indic/script-sinhala/utrrs/LICENSE | 19 - - .../indic/script-sinhala/utrrs/MANIFEST | 3 - - .../shaper-indic/indic/script-sinhala/utrrs/README | 13 - - .../indic/script-sinhala/utrrs/SOURCES | 2 - - .../IndicFontFeatureCodepoint-Consonants.txt | 41 - - .../IndicFontFeatureCodepoint-DependentVowels.txt | 17 - - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 18 - - .../IndicFontFeatureCodepoint-Punctuation.txt | 1 - - .../IndicFontFeatureCodepoint-VariousSigns.txt | 3 - - .../indic/script-sinhala/utrrs/codepoint/MANIFEST | 5 - - .../utrrs/gpos/IndicFontFeatureGPOS.txt | 162 --- - .../indic/script-sinhala/utrrs/gpos/MANIFEST | 1 - - .../utrrs/gsub/IndicFontFeatureGSUB-Conjunct.txt | 1 - - .../gsub/IndicFontFeatureGSUB-Rakaaraansaya.txt | 41 - - .../utrrs/gsub/IndicFontFeatureGSUB-Repaya.txt | 42 - - .../gsub/IndicFontFeatureGSUB-Special-Cases.txt | 2 - - .../gsub/IndicFontFeatureGSUB-TouchingLetters.txt | 1 - - .../utrrs/gsub/IndicFontFeatureGSUB-Yansaya.txt | 41 - - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 1 - - .../indic/script-sinhala/utrrs/gsub/MANIFEST | 7 - - .../texts/shaper-indic/indic/script-tamil/MANIFEST | 1 - - .../shaper-indic/indic/script-tamil/utrrs/LICENSE | 19 - - .../shaper-indic/indic/script-tamil/utrrs/MANIFEST | 3 - - .../shaper-indic/indic/script-tamil/utrrs/README | 13 - - .../shaper-indic/indic/script-tamil/utrrs/SOURCES | 2 - - .../IndicFontFeatureCodepoint-Consonants.txt | 23 - - .../IndicFontFeatureCodepoint-CurrencySymbols.txt | 1 - - .../IndicFontFeatureCodepoint-DependentVowels.txt | 11 - - .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 - - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 12 - - .../IndicFontFeatureCodepoint-Numerics.txt | 3 - - .../IndicFontFeatureCodepoint-Reserved.txt | 2 - - .../IndicFontFeatureCodepoint-Symbols.txt | 6 - - .../IndicFontFeatureCodepoint-TamilSymbol.txt | 1 - - .../IndicFontFeatureCodepoint-VariousSigns.txt | 4 - - .../indic/script-tamil/utrrs/codepoint/MANIFEST | 10 - - .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 64 - - .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 44 - - .../indic/script-tamil/utrrs/gpos/MANIFEST | 2 - - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 4 - - .../indic/script-tamil/utrrs/gsub/MANIFEST | 1 - - .../shaper-indic/indic/script-telugu/MANIFEST | 1 - - .../shaper-indic/indic/script-telugu/utrrs/LICENSE | 19 - - .../indic/script-telugu/utrrs/MANIFEST | 3 - - .../shaper-indic/indic/script-telugu/utrrs/README | 13 - - .../shaper-indic/indic/script-telugu/utrrs/SOURCES | 2 - - .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 2 - - .../IndicFontFeatureCodepoint-Consonants.txt | 38 - - .../IndicFontFeatureCodepoint-DependentVowels.txt | 13 - - .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 - - ...IndicFontFeatureCodepoint-IndependentVowels.txt | 14 - - .../IndicFontFeatureCodepoint-Reserved.txt | 2 - - .../IndicFontFeatureCodepoint-VariousSigns.txt | 6 - - .../indic/script-telugu/utrrs/codepoint/MANIFEST | 7 - - .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 385 ------ - .../indic/script-telugu/utrrs/gpos/MANIFEST | 1 - - .../utrrs/gsub/IndicFontFeatureGSUB.txt | 287 ---- - .../indic/script-telugu/utrrs/gsub/MANIFEST | 1 - - 422 files changed, 7601 insertions(+), 7600 deletions(-) + test/shaping/texts/MANIFEST | + 4 +--- + test/shaping/texts/in-tree/MANIFEST | + 3 +++ + test/shaping/texts/{ => in-tree}/shaper-arabic/MANIFEST | 0 + .../{shaper-default => in-tree/shaper-arabic/script-arabic}/MANIFEST | 0 + .../script-syriac => in-tree/shaper-arabic/script-mandaic}/MANIFEST | 0 + .../script-nko => in-tree/shaper-arabic/script-mongolian}/MANIFEST | 0 + .../script-mongolian => in-tree/shaper-arabic/script-nko}/MANIFEST | 0 + .../script-mandaic => in-tree/shaper-arabic/script-syriac}/MANIFEST | 0 + .../{shaper-arabic/script-arabic => in-tree/shaper-default}/MANIFEST | 0 + test/shaping/texts/{ => in-tree}/shaper-indic/MANIFEST | 0 + test/shaping/texts/{ => in-tree}/shaper-indic/indic/MANIFEST | 0 + .../shaper-indic/indic/script-assamese}/MANIFEST | 0 + .../shaper-indic/indic/script-assamese}/utrrs/LICENSE | 0 + .../shaper-indic/indic/script-assamese}/utrrs/MANIFEST | 0 + .../shaper-indic/indic/script-assamese}/utrrs/README | 0 + .../shaper-indic/indic/script-assamese}/utrrs/SOURCES | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt | 0 + .../shaper-indic/indic/script-assamese}/utrrs/codepoint/MANIFEST | 0 + .../script-assamese/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 0 + .../script-assamese/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 0 + .../shaper-indic/indic/script-assamese}/utrrs/gpos/MANIFEST | 0 + .../indic/script-assamese/utrrs/gsub/IndicFontFeatureGSUB.txt | 0 + .../shaper-indic/indic/script-assamese}/utrrs/gsub/MANIFEST | 0 + .../shaper-indic/indic/script-bengali}/MANIFEST | 0 + .../shaper-indic/indic/script-bengali}/utrrs/LICENSE | 0 + .../shaper-indic/indic/script-bengali}/utrrs/MANIFEST | 0 + .../shaper-indic/indic/script-bengali}/utrrs/README | 0 + .../shaper-indic/indic/script-bengali}/utrrs/SOURCES | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt | 0 + .../shaper-indic/indic/script-bengali}/utrrs/codepoint/MANIFEST | 0 + .../script-bengali/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 0 + .../script-bengali/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 0 + .../shaper-indic/indic/script-bengali}/utrrs/gpos/MANIFEST | 0 + .../indic/script-bengali/utrrs/gsub/IndicFontFeatureGSUB.txt | 0 + .../shaper-indic/indic/script-bengali}/utrrs/gsub/MANIFEST | 0 + .../shaper-indic/indic/script-devanagari}/MANIFEST | 0 + .../shaper-indic/indic/script-devanagari}/utrrs/LICENSE | 0 + .../shaper-indic/indic/script-devanagari}/utrrs/MANIFEST | 0 + .../shaper-indic/indic/script-devanagari}/utrrs/README | 0 + .../shaper-indic/indic/script-devanagari}/utrrs/SOURCES | 0 + .../codepoint/IndicFontFeatureCodepoint-AdditionalConsonants.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt | 0 + .../codepoint/IndicFontFeatureCodepoint-DevnagariSpecificAddition.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-GenericPunctuation.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt | 0 + .../shaper-indic/indic/script-devanagari/utrrs/codepoint/MANIFEST | 0 + .../script-devanagari/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 0 + .../script-devanagari/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 0 + .../shaper-indic/indic/script-devanagari}/utrrs/gpos/MANIFEST | 0 + .../indic/script-devanagari/utrrs/gsub/IndicFontFeatureGSUB.txt | 0 + .../shaper-indic/indic/script-devanagari}/utrrs/gsub/MANIFEST | 0 + .../shaper-indic/indic/script-gujarati}/MANIFEST | 0 + .../shaper-indic/indic/script-gujarati}/utrrs/LICENSE | 0 + .../shaper-indic/indic/script-gujarati}/utrrs/MANIFEST | 0 + .../shaper-indic/indic/script-gujarati}/utrrs/README | 0 + .../shaper-indic/indic/script-gujarati}/utrrs/SOURCES | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt | 0 + .../shaper-indic/indic/script-gujarati/utrrs/codepoint/MANIFEST | 0 + .../script-gujarati/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 0 + .../script-gujarati/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 0 + .../shaper-indic/indic/script-gujarati}/utrrs/gpos/MANIFEST | 0 + .../indic/script-gujarati/utrrs/gsub/IndicFontFeatureGSUB.txt | 0 + .../shaper-indic/indic/script-gujarati}/utrrs/gsub/MANIFEST | 0 + .../shaper-indic/indic/script-kannada}/MANIFEST | 0 + .../shaper-indic/indic/script-kannada}/utrrs/LICENSE | 0 + .../{ => in-tree}/shaper-indic/indic/script-kannada/utrrs/MANIFEST | 0 + .../shaper-indic/indic/script-kannada}/utrrs/README | 0 + .../shaper-indic/indic/script-kannada}/utrrs/SOURCES | 0 + .../codepoint/IndicFontFeatureCodepoint-AdditionalConsonants.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt | 0 + .../shaper-indic/indic/script-kannada/utrrs/codepoint/MANIFEST | 0 + .../script-kannada/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 0 + .../shaper-indic/indic/script-kannada}/utrrs/gpos/MANIFEST | 0 + .../indic/script-kannada/utrrs/gsub/IndicFontFeatureGSUB.txt | 0 + .../shaper-indic/indic/script-kannada}/utrrs/gsub/MANIFEST | 0 + .../texts/{ => in-tree}/shaper-indic/indic/script-malayalam/MANIFEST | 0 + .../{ => in-tree}/shaper-indic/indic/script-malayalam/utrrs/LICENSE | 0 + .../shaper-indic/indic/script-malayalam}/utrrs/MANIFEST | 0 + .../{ => in-tree}/shaper-indic/indic/script-malayalam/utrrs/README | 0 + .../{ => in-tree}/shaper-indic/indic/script-malayalam/utrrs/SOURCES | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt | 0 + .../shaper-indic/indic/script-malayalam}/utrrs/codepoint/MANIFEST | 0 + .../indic/script-malayalam/utrrs/gsub/IndicFontFeatureGSUB.txt | 0 + .../shaper-indic/indic/script-malayalam}/utrrs/gsub/MANIFEST | 0 + .../shaper-indic/indic/script-oriya}/MANIFEST | 0 + .../shaper-indic/indic/script-oriya}/utrrs/LICENSE | 0 + .../shaper-indic/indic/script-oriya}/utrrs/MANIFEST | 0 + .../shaper-indic/indic/script-oriya}/utrrs/README | 0 + .../shaper-indic/indic/script-oriya}/utrrs/SOURCES | 0 + .../codepoint/IndicFontFeatureCodepoint-AdditionalConsonants.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt | 0 + .../script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-OriyaSpecific.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt | 0 + .../shaper-indic/indic/script-oriya/utrrs/codepoint/MANIFEST | 0 + .../indic/script-oriya/utrrs/gsub/IndicFontFeatureGSUB.txt | 0 + .../shaper-indic/indic/script-oriya}/utrrs/gsub/MANIFEST | 0 + .../shaper-indic/indic/script-punjabi}/MANIFEST | 0 + .../shaper-indic/indic/script-punjabi}/utrrs/LICENSE | 0 + .../shaper-indic/indic/script-punjabi}/utrrs/MANIFEST | 0 + .../shaper-indic/indic/script-punjabi}/utrrs/README | 0 + .../shaper-indic/indic/script-punjabi}/utrrs/SOURCES | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-GurmukhiSpecific.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt | 0 + .../shaper-indic/indic/script-punjabi/utrrs/codepoint/MANIFEST | 0 + .../script-punjabi/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 0 + .../script-punjabi/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 0 + .../shaper-indic/indic/script-punjabi}/utrrs/gpos/MANIFEST | 0 + .../indic/script-punjabi/utrrs/gsub/IndicFontFeatureGSUB.txt | 0 + .../shaper-indic/indic/script-punjabi}/utrrs/gsub/MANIFEST | 0 + .../shaper-indic/indic/script-sinhala}/MANIFEST | 0 + .../shaper-indic/indic/script-sinhala}/utrrs/LICENSE | 0 + .../shaper-indic/indic/script-sinhala}/utrrs/MANIFEST | 0 + .../shaper-indic/indic/script-sinhala}/utrrs/README | 0 + .../shaper-indic/indic/script-sinhala}/utrrs/SOURCES | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Punctuation.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt | 0 + .../shaper-indic/indic/script-sinhala/utrrs/codepoint/MANIFEST | 0 + .../indic/script-sinhala/utrrs/gpos/IndicFontFeatureGPOS.txt | 0 + .../shaper-indic/indic/script-sinhala/utrrs/gpos/MANIFEST | 0 + .../indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Conjunct.txt | 0 + .../script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Rakaaraansaya.txt | 0 + .../indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Repaya.txt | 0 + .../script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Special-Cases.txt | 0 + .../utrrs/gsub/IndicFontFeatureGSUB-TouchingLetters.txt | 0 + .../indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Yansaya.txt | 0 + .../indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB.txt | 0 + .../shaper-indic/indic/script-sinhala/utrrs/gsub/MANIFEST | 0 + .../shaper-indic/indic/script-tamil}/MANIFEST | 0 + .../shaper-indic/indic/script-tamil}/utrrs/LICENSE | 0 + .../shaper-indic/indic/script-tamil}/utrrs/MANIFEST | 0 + .../shaper-indic/indic/script-tamil}/utrrs/README | 0 + .../shaper-indic/indic/script-tamil}/utrrs/SOURCES | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-CurrencySymbols.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt | 0 + .../script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Numerics.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Symbols.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-TamilSymbol.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt | 0 + .../shaper-indic/indic/script-tamil/utrrs/codepoint/MANIFEST | 0 + .../indic/script-tamil/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 0 + .../indic/script-tamil/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 0 + .../shaper-indic/indic/script-tamil}/utrrs/gpos/MANIFEST | 0 + .../indic/script-tamil/utrrs/gsub/IndicFontFeatureGSUB.txt | 0 + .../shaper-indic/indic/script-tamil}/utrrs/gsub/MANIFEST | 0 + .../shaper-indic/indic/script-telugu}/MANIFEST | 0 + .../shaper-indic/indic/script-telugu}/utrrs/LICENSE | 0 + .../shaper-indic/indic/script-telugu}/utrrs/MANIFEST | 0 + .../shaper-indic/indic/script-telugu}/utrrs/README | 0 + .../shaper-indic/indic/script-telugu}/utrrs/SOURCES | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt | 0 + .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt | 0 + .../shaper-indic/indic/script-telugu}/utrrs/codepoint/MANIFEST | 0 + .../indic/script-telugu/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 0 + .../shaper-indic/indic/script-telugu}/utrrs/gpos/MANIFEST | 0 + .../indic/script-telugu/utrrs/gsub/IndicFontFeatureGSUB.txt | 0 + .../shaper-indic/indic/script-telugu}/utrrs/gsub/MANIFEST | 0 + 212 files changed, 4 insertions(+), 3 deletions(-) commit 45f640c98d752161e51eda63061d70fad9ab9f68 Author: Behdad Esfahbod @@ -26050,12 +33054,9 @@ Date: Fri Jan 20 13:50:55 2012 -0500 Move hb-diff to test/shaping/ - test/shaping/hb-diff | 70 - ++++++++++++++++++++++++++++++++++++++++++++++++++++ - util/Makefile.am | 2 -- - util/hb-diff | 70 - ---------------------------------------------------- - 3 files changed, 70 insertions(+), 72 deletions(-) + {util => test/shaping}/hb-diff | 0 + util/Makefile.am | 2 -- + 2 files changed, 2 deletions(-) commit f868e1b84d2f73688d4d6558d44610b1ac75ec13 Author: Behdad Esfahbod @@ -26063,14 +33064,11 @@ Date: Fri Jan 20 13:50:05 2012 -0500 Add hb-unicode-decode - test/shaping/hb-manifest-read | 36 - ++++++++++++++++++++++++++++++++++++ - test/shaping/hb-manifest-update | 22 ++++++++++++++++++++++ - test/shaping/hb-read-manifest | 36 - ------------------------------------ - test/shaping/hb-unicode-decode | 19 +++++++++++++++++++ - test/shaping/hb-update-manifests | 22 ---------------------- - 5 files changed, 77 insertions(+), 58 deletions(-) + test/shaping/{hb-read-manifest => hb-manifest-read} | 0 + .../{hb-update-manifests => hb-manifest-update} | 0 + test/shaping/hb-unicode-decode | 19 + +++++++++++++++++++ + 3 files changed, 19 insertions(+) commit 9ab23ef4749b51e60464b9ef2a92739cdc2b36ba Author: Behdad Esfahbod @@ -26209,38 +33207,25 @@ Date: Thu Jan 19 14:52:02 2012 -0500 Rename test/ to test/api/ - configure.ac | 1 + - test/Makefile.am | 128 +---- - test/api/Makefile.am | 131 +++++ - test/api/hb-test.h | 265 +++++++++ - test/api/test-blob.c | 301 +++++++++++ - test/api/test-buffer.c | 783 +++++++++++++++++++++++++++ - test/api/test-c.c | 58 ++ - test/api/test-common.c | 213 ++++++++ - test/api/test-cplusplus.cc | 30 ++ - test/api/test-font.c | 502 +++++++++++++++++ - test/api/test-object.c | 367 +++++++++++++ - test/api/test-ot-tag.c | 241 +++++++++ - test/api/test-shape-complex.c | 1189 - +++++++++++++++++++++++++++++++++++++++++ - test/api/test-shape.c | 165 ++++++ - test/api/test-unicode.c | 887 ++++++++++++++++++++++++++++++ - test/api/test-version.c | 80 +++ - test/hb-test.h | 265 --------- - test/test-blob.c | 301 ----------- - test/test-buffer.c | 783 --------------------------- - test/test-c.c | 58 -- - test/test-common.c | 213 -------- - test/test-cplusplus.cc | 30 -- - test/test-font.c | 502 ----------------- - test/test-object.c | 367 ------------- - test/test-ot-tag.c | 241 --------- - test/test-shape-complex.c | 1189 - ----------------------------------------- - test/test-shape.c | 165 ------ - test/test-unicode.c | 887 ------------------------------ - test/test-version.c | 80 --- - 29 files changed, 5214 insertions(+), 5208 deletions(-) + configure.ac | 1 + + test/Makefile.am | 128 + +---------------------------------- + test/api/Makefile.am | 131 + ++++++++++++++++++++++++++++++++++++ + test/{ => api}/hb-test.h | 0 + test/{ => api}/test-blob.c | 0 + test/{ => api}/test-buffer.c | 0 + test/{ => api}/test-c.c | 0 + test/{ => api}/test-common.c | 0 + test/{ => api}/test-cplusplus.cc | 0 + test/{ => api}/test-font.c | 0 + test/{ => api}/test-object.c | 0 + test/{ => api}/test-ot-tag.c | 0 + test/{ => api}/test-shape-complex.c | 0 + test/{ => api}/test-shape.c | 0 + test/{ => api}/test-unicode.c | 0 + test/{ => api}/test-version.c | 0 + 16 files changed, 133 insertions(+), 127 deletions(-) commit 3b5c22c39b87155f315853fb0c40edcf14e99b54 Author: Behdad Esfahbod @@ -26734,22 +33719,20 @@ Date: Mon Sep 19 16:41:17 2011 -0400 The output format is kinda cryptic. Suggestions welcome. - configure.ac | 6 - - util/Makefile.am | 44 +++--- - util/common.cc | 43 ------ - util/common.hh | 57 -------- - util/hb-shape.cc | 78 +++++++++++ - util/hb-view.cc | 44 +----- - util/hb-view.hh | 79 +++++++++++ - util/helper-cairo.cc | 375 - ++++++++++++++++++++++++++++++++++++++++++++++++++ - util/helper-cairo.hh | 79 +++++++++++ - util/options.cc | 79 +++++++++++ - util/options.hh | 53 ++++++- - util/view-cairo.cc | 381 - ++------------------------------------------------- - util/view-cairo.hh | 8 +- - 13 files changed, 785 insertions(+), 541 deletions(-) + configure.ac | 6 - + util/Makefile.am | 44 +++-- + util/{common.cc => hb-shape.cc} | 57 ++++-- + util/hb-view.cc | 44 +---- + util/hb-view.hh | 79 ++++++++ + util/helper-cairo.cc | 375 + +++++++++++++++++++++++++++++++++++ + util/{common.hh => helper-cairo.hh} | 64 ++++-- + util/options.cc | 79 ++++++++ + util/options.hh | 53 ++++- + util/view-cairo.cc | 381 + ++---------------------------------- + util/view-cairo.hh | 8 +- + 11 files changed, 717 insertions(+), 473 deletions(-) commit eb2d8be7a8ede0c0f5e346cf06516792f83f36f7 Author: Behdad Esfahbod @@ -27342,12 +34325,9 @@ Date: Wed Aug 24 01:31:29 2011 +0200 Minor - src/Makefile.am | 2 +- - src/hb-uniscribe-shape.cc | 454 - ---------------------------------------------- - src/hb-uniscribe.cc | 454 - ++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 455 insertions(+), 455 deletions(-) + src/Makefile.am | 2 +- + src/{hb-uniscribe-shape.cc => hb-uniscribe.cc} | 0 + 2 files changed, 1 insertion(+), 1 deletion(-) commit efde8113258b117ec0a7fbffe6d681442d045c41 Author: Behdad Esfahbod @@ -27369,13 +34349,12 @@ Date: Fri Aug 19 19:59:24 2011 +0200 need to figure out the naming. The generated code doesn't have the right name. - configure.ac | 2 ++ - src/Makefile.am | 13 ++++++-- - src/hb-gobject-enums.cc.tmpl | 74 - ++++++++++++++++++++++++++++++++++++++++++++ - src/hb-gobject-structs.cc | 63 +++++++++++++++++++++++++++++++++++++ - src/hb-gobject.cc | 63 ------------------------------------- - 5 files changed, 149 insertions(+), 66 deletions(-) + configure.ac | 2 + + src/Makefile.am | 13 +++-- + src/hb-gobject-enums.cc.tmpl | 74 + ++++++++++++++++++++++++++++ + src/{hb-gobject.cc => hb-gobject-structs.cc} | 0 + 4 files changed, 86 insertions(+), 3 deletions(-) commit 7d235d272f4c9213f54c9c807fb8fba5068c45b0 Author: Behdad Esfahbod @@ -27465,27 +34444,21 @@ Date: Wed Aug 17 14:19:59 2011 +0200 Rename table files from eg maxp-private.hh to maxp-table.hh - src/Makefile.am | 12 +- - src/hb-font.cc | 2 +- - src/hb-ot-head-private.hh | 143 --- - src/hb-ot-head-table.hh | 143 +++ - src/hb-ot-layout-gdef-private.hh | 427 --------- - src/hb-ot-layout-gdef-table.hh | 427 +++++++++ - src/hb-ot-layout-gpos-private.hh | 1633 - ---------------------------------- - src/hb-ot-layout-gpos-table.hh | 1633 - ++++++++++++++++++++++++++++++++++ - src/hb-ot-layout-gsub-private.hh | 943 -------------------- - src/hb-ot-layout-gsub-table.hh | 943 ++++++++++++++++++++ - src/hb-ot-layout-gsubgpos-private.hh | 2 +- - src/hb-ot-layout.cc | 8 +- - src/hb-ot-maxp-private.hh | 66 -- - src/hb-ot-maxp-table.hh | 66 ++ - src/hb-ot-name-private.hh | 128 --- - src/hb-ot-name-table.hh | 128 +++ - src/hb-uniscribe-shape.cc | 2 +- - src/main.cc | 2 +- - 18 files changed, 3354 insertions(+), 3354 deletions(-) + src/Makefile.am | 12 + ++++++------ + src/hb-font.cc | 2 +- + src/{hb-ot-head-private.hh => hb-ot-head-table.hh} | 6 +++--- + ...-ot-layout-gdef-private.hh => hb-ot-layout-gdef-table.hh} | 6 +++--- + ...-ot-layout-gpos-private.hh => hb-ot-layout-gpos-table.hh} | 6 +++--- + ...-ot-layout-gsub-private.hh => hb-ot-layout-gsub-table.hh} | 6 +++--- + src/hb-ot-layout-gsubgpos-private.hh | 2 +- + src/hb-ot-layout.cc | + 8 ++++---- + src/{hb-ot-maxp-private.hh => hb-ot-maxp-table.hh} | 6 +++--- + src/{hb-ot-name-private.hh => hb-ot-name-table.hh} | 6 +++--- + src/hb-uniscribe-shape.cc | 2 +- + src/main.cc | 2 +- + 12 files changed, 32 insertions(+), 32 deletions(-) commit 0b7e4d9f20b3ed947d0c441ca59b43c4097cdb0e Author: Behdad Esfahbod @@ -27687,15 +34660,12 @@ Date: Tue Aug 9 15:03:00 2011 +0200 Move hb-view into util/ - Makefile.am | 3 +- - configure.ac | 1 + - src/Makefile.am | 13 -- - src/hb-view.cc | 568 - ------------------------------------------------------- - util/Makefile.am | 24 +++ - util/hb-view.cc | 568 - +++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 6 files changed, 594 insertions(+), 583 deletions(-) + Makefile.am | 3 +-- + configure.ac | 1 + + src/Makefile.am | 13 ------------- + util/Makefile.am | 24 ++++++++++++++++++++++++ + {src => util}/hb-view.cc | 0 + 5 files changed, 26 insertions(+), 15 deletions(-) commit d753ac78da5619a0a545cdaf7a8e65787e996570 Author: Behdad Esfahbod @@ -29858,13 +36828,10 @@ Date: Wed Jun 1 18:10:10 2011 -0400 Minor rename - src/Makefile.am | 2 +- - src/gen-arabic-joining-table.py | 83 - --------------------------------- - src/gen-arabic-table.py | 83 - +++++++++++++++++++++++++++++++++ - src/hb-ot-shape-complex-arabic-table.hh | 2 +- - 4 files changed, 85 insertions(+), 85 deletions(-) + src/Makefile.am | 2 +- + src/{gen-arabic-joining-table.py => gen-arabic-table.py} | 2 +- + src/hb-ot-shape-complex-arabic-table.hh | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) commit 0eafce56eed4c5166ee5b97b121a452ffd292a7a Author: Behdad Esfahbod @@ -32156,14 +39123,10 @@ Date: Wed Apr 27 12:15:06 2011 -0400 Rename hb-view.c and test.c to .cc files - src/Makefile.am | 4 +- - src/hb-view.c | 540 - -------------------------------------------------------- - src/hb-view.cc | 540 - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/test.c | 94 ---------- - src/test.cc | 97 ++++++++++ - 5 files changed, 639 insertions(+), 636 deletions(-) + src/Makefile.am | 4 ++-- + src/{hb-view.c => hb-view.cc} | 2 +- + src/{test.c => test.cc} | 5 ++++- + 3 files changed, 7 insertions(+), 4 deletions(-) commit eb5796f58897ecfb9d76fd99915bf1a30669a0fa Author: Behdad Esfahbod @@ -32459,43 +39422,32 @@ Date: Wed Apr 20 18:50:27 2011 -0400 So we can liberally use the simple features of C++ that parts of the codebase is already using. - src/Makefile.am | 17 +- - src/hb-blob-private.h | 59 --- - src/hb-blob-private.hh | 59 +++ - src/hb-blob.cc | 4 +- - src/hb-buffer-private.hh | 2 +- - src/hb-common.c | 222 ----------- - src/hb-common.cc | 222 +++++++++++ - src/hb-font-private.h | 97 ----- - src/hb-font-private.hh | 97 +++++ - src/hb-font.cc | 6 +- - src/hb-ft.c | 262 ------------ - src/hb-ft.cc | 262 ++++++++++++ - src/hb-glib.cc | 2 +- - src/hb-icu.cc | 2 +- - src/hb-object-private.h | 134 ------- - src/hb-object-private.hh | 132 +++++++ - src/hb-open-type-private.hh | 2 +- - src/hb-ot-layout-gdef-private.hh | 2 +- - src/hb-ot-layout-private.hh | 4 +- - src/hb-ot-shape-complex-arabic-table.h | 674 - ------------------------------- - src/hb-ot-shape-complex-arabic-table.hh | 674 - +++++++++++++++++++++++++++++++ - src/hb-ot-shape-complex-arabic.cc | 2 +- - src/hb-ot-shape-complex-private.hh | 2 +- - src/hb-ot-shape-private.hh | 2 +- - src/hb-ot-tag.c | 677 - -------------------------------- - src/hb-ot-tag.cc | 677 - ++++++++++++++++++++++++++++++++ - src/hb-private.h | 301 -------------- - src/hb-private.hh | 301 ++++++++++++++ - src/hb-shape.cc | 2 +- - src/hb-unicode-private.hh | 2 +- - src/hb-unicode.cc | 2 +- - src/hb-view.c | 6 + - 32 files changed, 2457 insertions(+), 2452 deletions(-) + src/Makefile.am | 17 + +++++++++-------- + src/{hb-blob-private.h => hb-blob-private.hh} | 8 ++++---- + src/hb-blob.cc | 4 ++-- + src/hb-buffer-private.hh | 2 +- + src/{hb-common.c => hb-common.cc} | 8 ++++---- + src/{hb-font-private.h => hb-font-private.hh} | 8 ++++---- + src/hb-font.cc | 6 +++--- + src/{hb-ft.c => hb-ft.cc} | 4 ++-- + src/hb-glib.cc | 2 +- + src/hb-icu.cc | 2 +- + src/{hb-object-private.h => hb-object-private.hh} | 10 ++++------ + src/hb-open-type-private.hh | 2 +- + src/hb-ot-layout-gdef-private.hh | 2 +- + src/hb-ot-layout-private.hh | 4 ++-- + ...abic-table.h => hb-ot-shape-complex-arabic-table.hh} | 8 ++++---- + src/hb-ot-shape-complex-arabic.cc | 2 +- + src/hb-ot-shape-complex-private.hh | 2 +- + src/hb-ot-shape-private.hh | 2 +- + src/{hb-ot-tag.c => hb-ot-tag.cc} | 8 ++++---- + src/{hb-private.h => hb-private.hh} | 8 ++++---- + src/hb-shape.cc | 2 +- + src/hb-unicode-private.hh | 2 +- + src/hb-unicode.cc | 2 +- + src/hb-view.c | 6 ++++++ + 24 files changed, 63 insertions(+), 58 deletions(-) commit f19f4f9b0965ad7473a0f3a1ffcdbf16930e35d4 Author: Behdad Esfahbod @@ -32503,12 +39455,9 @@ Date: Wed Apr 20 18:25:56 2011 -0400 Rename hb-blob.c to hb-blob.cc in preparation of more changes - src/Makefile.am | 2 +- - src/hb-blob.c | 356 - -------------------------------------------------------- - src/hb-blob.cc | 356 - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 357 insertions(+), 357 deletions(-) + src/Makefile.am | 2 +- + src/{hb-blob.c => hb-blob.cc} | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) commit 04744e73bad22d679986173b5f0d84dbbf49dd57 Author: Behdad Esfahbod @@ -32658,12 +39607,9 @@ Date: Wed Apr 20 02:56:39 2011 -0400 [test] Rename test-types to test-common - test/Makefile.am | 2 +- - test/test-common.c | 166 - +++++++++++++++++++++++++++++++++++++++++++++++++++++ - test/test-types.c | 166 - ----------------------------------------------------- - 3 files changed, 167 insertions(+), 167 deletions(-) + test/Makefile.am | 2 +- + test/{test-types.c => test-common.c} | 0 + 2 files changed, 1 insertion(+), 1 deletion(-) commit f144a8ea840c6452c1fece2fd988b42a8ea7c5a6 Author: Behdad Esfahbod @@ -32711,23 +39657,18 @@ Date: Wed Apr 20 02:00:47 2011 -0400 unicode: Cleanup implementation - src/Makefile.am | 8 +- - src/hb-buffer-private.hh | 2 +- - src/hb-glib.c | 230 ------------------------------------- - src/hb-glib.cc | 231 +++++++++++++++++++++++++++++++++++++ - src/hb-icu.c | 285 - ---------------------------------------------- - src/hb-icu.cc | 285 - ++++++++++++++++++++++++++++++++++++++++++++++ - src/hb-ot-shape.cc | 14 +-- - src/hb-shape.cc | 4 +- - src/hb-unicode-private.h | 77 ------------- - src/hb-unicode-private.hh | 96 ++++++++++++++++ - src/hb-unicode.c | 256 ----------------------------------------- - src/hb-unicode.cc | 223 ++++++++++++++++++++++++++++++++++++ - src/hb-unicode.h | 57 +++++----- - test/test-unicode.c | 23 ++-- - 14 files changed, 892 insertions(+), 899 deletions(-) + src/Makefile.am | 8 +- + src/hb-buffer-private.hh | 2 +- + src/{hb-glib.c => hb-glib.cc} | 65 +++---- + src/{hb-icu.c => hb-icu.cc} | 30 +-- + src/hb-ot-shape.cc | 14 +- + src/hb-shape.cc | 4 +- + ...{hb-unicode-private.h => hb-unicode-private.hh} | 65 ++++--- + src/{hb-unicode.c => hb-unicode.cc} | 213 + +++++++++------------ + src/hb-unicode.h | 57 +++--- + test/test-unicode.c | 23 ++- + 10 files changed, 237 insertions(+), 244 deletions(-) commit ecfb773829a5d98a4f5456a992f3e5ecd6731435 Author: Behdad Esfahbod @@ -34544,17 +41485,15 @@ Date: Tue Oct 12 16:50:36 2010 -0400 Add hb_ot_complex_shaper_t stuff and start hooking Arabic shaper up - src/Makefile.am | 3 +- - src/hb-ot-map-private.hh | 2 +- - src/hb-ot-map.cc | 2 +- - src/hb-ot-shape-arabic.cc | 706 - ------------------------------------ - src/hb-ot-shape-complex-arabic.cc | 715 - +++++++++++++++++++++++++++++++++++++ - src/hb-ot-shape-complex-private.hh | 88 +++++ - src/hb-ot-shape-private.hh | 12 +- - src/hb-ot-shape.cc | 8 +- - 8 files changed, 813 insertions(+), 723 deletions(-) + src/Makefile.am | 3 +- + src/hb-ot-map-private.hh | 2 +- + src/hb-ot-map.cc | 2 +- + ...ape-arabic.cc => hb-ot-shape-complex-arabic.cc} | 9 +++ + src/hb-ot-shape-complex-private.hh | 88 + ++++++++++++++++++++++ + src/hb-ot-shape-private.hh | 12 +-- + src/hb-ot-shape.cc | 8 +- + 7 files changed, 107 insertions(+), 17 deletions(-) commit 605ed468f380f86d642031f6451447d270cb6de1 Author: Behdad Esfahbod @@ -35233,19 +42172,15 @@ Date: Fri Jul 23 15:00:13 2010 -0400 Helps with avoiding many "extern C" declarations in source files. - src/Makefile.am | 4 +- - src/check-header-guards.sh | 2 +- - src/hb-font-private.h | 95 ++++++++++++++++ - src/hb-font-private.hh | 95 ---------------- - src/hb-font.cc | 2 +- - src/hb-ft.c | 240 - +++++++++++++++++++++++++++++++++++++++ - src/hb-ft.cc | 240 - --------------------------------------- - src/hb-graphite.cc | 2 +- - src/hb-ot-layout-gdef-private.hh | 2 +- - src/hb-ot-layout-private.hh | 2 +- - 10 files changed, 342 insertions(+), 342 deletions(-) + src/Makefile.am | 4 ++-- + src/check-header-guards.sh | 2 +- + src/{hb-font-private.hh => hb-font-private.h} | 6 +++--- + src/hb-font.cc | 2 +- + src/{hb-ft.cc => hb-ft.c} | 2 +- + src/hb-graphite.cc | 2 +- + src/hb-ot-layout-gdef-private.hh | 2 +- + src/hb-ot-layout-private.hh | 2 +- + 8 files changed, 11 insertions(+), 11 deletions(-) commit 0dd200d28f51bf4062d8a377432c8977c80cb210 Author: Behdad Esfahbod @@ -36572,32 +43507,24 @@ Date: Wed May 12 18:23:21 2010 -0400 In anticipation for buffer revamp coming. - src/Makefile.am | 16 +- - src/hb-buffer-private.h | 155 --------- - src/hb-buffer-private.hh | 155 +++++++++ - src/hb-buffer.c | 650 - ----------------------------------- - src/hb-buffer.cc | 650 - +++++++++++++++++++++++++++++++++++ - src/hb-common.h | 1 + - src/hb-font-private.h | 92 ----- - src/hb-font-private.hh | 92 +++++ - src/hb-font.cc | 4 +- - src/hb-ft.c | 240 ------------- - src/hb-ft.cc | 240 +++++++++++++ - src/hb-ot-layout-common-private.hh | 2 +- - src/hb-ot-layout-gdef-private.hh | 2 +- - src/hb-ot-layout-gsubgpos-private.hh | 2 +- - src/hb-ot-layout-private.h | 121 ------- - src/hb-ot-layout-private.hh | 121 +++++++ - src/hb-ot-layout.cc | 2 +- - src/hb-ot-shape-private.h | 53 --- - src/hb-ot-shape-private.hh | 53 +++ - src/hb-ot-shape.c | 164 --------- - src/hb-ot-shape.cc | 164 +++++++++ - src/hb-shape.c | 258 -------------- - src/hb-shape.cc | 258 ++++++++++++++ - 23 files changed, 1748 insertions(+), 1747 deletions(-) + src/Makefile.am | 16 + ++++++++-------- + src/{hb-buffer-private.h => hb-buffer-private.hh} | 2 +- + src/{hb-buffer.c => hb-buffer.cc} | 14 + +++++++------- + src/hb-common.h | 1 + + src/{hb-font-private.h => hb-font-private.hh} | 2 +- + src/hb-font.cc | 4 ++-- + src/{hb-ft.c => hb-ft.cc} | 8 ++++---- + src/hb-ot-layout-common-private.hh | 2 +- + src/hb-ot-layout-gdef-private.hh | 2 +- + src/hb-ot-layout-gsubgpos-private.hh | 2 +- + src/{hb-ot-layout-private.h => hb-ot-layout-private.hh} | 2 +- + src/hb-ot-layout.cc | 2 +- + src/{hb-ot-shape-private.h => hb-ot-shape-private.hh} | 0 + src/{hb-ot-shape.c => hb-ot-shape.cc} | 4 ++-- + src/{hb-shape.c => hb-shape.cc} | 6 +++--- + 15 files changed, 34 insertions(+), 33 deletions(-) commit c3df649f258b334e93c7626a43cd8ebfbd5a610e Author: Behdad Esfahbod @@ -39799,24 +46726,21 @@ Date: Mon Nov 2 16:28:39 2009 -0500 Add build system - AUTHORS | 0 - COPYING | 17 +++++ - Makefile.am | 3 + - NEWS | 0 - README | 9 +++ - TODO | 6 ++ - autogen.sh | 189 - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - configure.ac | 40 ++++++++++++ - git.mk | 184 - ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - harfbuzz.pc.in | 11 ++++ - src/.gitignore | 1 - - src/COPYING | 17 ----- - src/Makefile.ng | 11 ---- - src/README | 9 --- - src/TODO | 6 -- - 15 files changed, 459 insertions(+), 44 deletions(-) + AUTHORS | 0 + src/COPYING => COPYING | 0 + Makefile.am | 3 + + NEWS | 0 + src/README => README | 0 + src/TODO => TODO | 0 + autogen.sh | 189 + +++++++++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 40 +++++++++++ + git.mk | 184 + +++++++++++++++++++++++++++++++++++++++++++++++ + harfbuzz.pc.in | 11 +++ + src/.gitignore | 1 - + src/Makefile.ng | 11 --- + 12 files changed, 427 insertions(+), 12 deletions(-) commit c09ed9801ead002d6f8e507ce664b83707b202e9 Author: Behdad Esfahbod @@ -40909,14 +47833,11 @@ Date: Tue Aug 4 22:06:57 2009 -0400 [HB] Rename open-types to open-type; beauty - src/Makefile.am | 2 +- - src/hb-open-file-private.hh | 2 +- - src/hb-open-type-private.hh | 565 - +++++++++++++++++++++++++++++++++++++ - src/hb-open-types-private.hh | 565 - ------------------------------------- - src/hb-ot-layout-common-private.hh | 2 +- - 5 files changed, 568 insertions(+), 568 deletions(-) + src/Makefile.am | 2 +- + src/hb-open-file-private.hh | 2 +- + src/{hb-open-types-private.hh => hb-open-type-private.hh} | 0 + src/hb-ot-layout-common-private.hh | 2 +- + 4 files changed, 3 insertions(+), 3 deletions(-) commit f4b58d3fc2956a9d1b6178588d809c781f7a5c0c Author: Behdad Esfahbod @@ -41313,12 +48234,9 @@ Date: Sun Aug 2 20:06:48 2009 -0400 [HB] Rename hb-font.c to hb-font.cc - src/Makefile.am | 2 +- - src/hb-font.c | 349 - -------------------------------------------------------- - src/hb-font.cc | 349 - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 350 insertions(+), 350 deletions(-) + src/Makefile.am | 2 +- + src/{hb-font.c => hb-font.cc} | 0 + 2 files changed, 1 insertion(+), 1 deletion(-) commit 5f5b24f99f52bbc922e238b65c06061ba07c8548 Author: Behdad Esfahbod @@ -41326,26 +48244,18 @@ Date: Sun Aug 2 20:03:12 2009 -0400 [OT] Rename C++ header files from *.h to *.hh - src/Makefile.am | 14 +- - src/hb-open-file-private.h | 145 ---- - src/hb-open-file-private.hh | 145 ++++ - src/hb-open-types-private.h | 386 ---------- - src/hb-open-types-private.hh | 386 ++++++++++ - src/hb-ot-layout-common-private.h | 447 ----------- - src/hb-ot-layout-common-private.hh | 447 +++++++++++ - src/hb-ot-layout-gdef-private.h | 320 -------- - src/hb-ot-layout-gdef-private.hh | 320 ++++++++ - src/hb-ot-layout-gpos-private.h | 1355 - ---------------------------------- - src/hb-ot-layout-gpos-private.hh | 1355 - ++++++++++++++++++++++++++++++++++ - src/hb-ot-layout-gsub-private.h | 751 ------------------- - src/hb-ot-layout-gsub-private.hh | 751 +++++++++++++++++++ - src/hb-ot-layout-gsubgpos-private.h | 773 ------------------- - src/hb-ot-layout-gsubgpos-private.hh | 773 +++++++++++++++++++ - src/hb-ot-layout.cc | 8 +- - src/main.cc | 6 +- - 17 files changed, 4191 insertions(+), 4191 deletions(-) + src/Makefile.am | 14 + +++++++------- + src/{hb-open-file-private.h => hb-open-file-private.hh} | 8 ++++---- + src/{hb-open-types-private.h => hb-open-types-private.hh} | 6 +++--- + ...out-common-private.h => hb-ot-layout-common-private.hh} | 8 ++++---- + ...-layout-gdef-private.h => hb-ot-layout-gdef-private.hh} | 8 ++++---- + ...-layout-gpos-private.h => hb-ot-layout-gpos-private.hh} | 8 ++++---- + ...-layout-gsub-private.h => hb-ot-layout-gsub-private.hh} | 8 ++++---- + ...gsubgpos-private.h => hb-ot-layout-gsubgpos-private.hh} | 8 ++++---- + src/hb-ot-layout.cc | 8 ++++---- + src/main.cc | 6 +++--- + 10 files changed, 41 insertions(+), 41 deletions(-) commit 2098a021a826e76ee27d5db74e32738d7d1c3d30 Author: Behdad Esfahbod @@ -41353,15 +48263,15 @@ Date: Sun Aug 2 19:57:00 2009 -0400 [HB] Move OT file handling out of ot-layout - src/Makefile.am | 3 +- - src/hb-open-file-private.h | 145 +++++++++++ - src/hb-open-types-private.h | 386 +++++++++++++++++++++++++++++ - src/hb-ot-layout-common-private.h | 4 +- - src/hb-ot-layout-open-private.h | 495 - -------------------------------------- - src/hb-ot-layout.cc | 2 +- - src/main.cc | 4 +- - 7 files changed, 539 insertions(+), 500 deletions(-) + src/Makefile.am | 3 +- + src/hb-open-file-private.h | 145 + +++++++++++++++++++++ + ...yout-open-private.h => hb-open-types-private.h} | 117 + +---------------- + src/hb-ot-layout-common-private.h | 4 +- + src/hb-ot-layout.cc | 2 +- + src/main.cc | 4 +- + 6 files changed, 157 insertions(+), 118 deletions(-) commit 0ead481a5a8623103565fd7d924666e7342278dd Author: Behdad Esfahbod @@ -41517,15 +48427,14 @@ Date: Sat Aug 1 20:29:22 2009 -0400 [HB] Simplify object creation - src/Makefile.am | 2 +- - src/hb-blob.c | 6 +-- - src/hb-font-private.h | 1 - - src/hb-font.c | 37 ++++++------------ - src/hb-object-private.h | 97 - +++++++++++++++++++++++++++++++++++++++++++++++ - src/hb-private.h | 2 + - src/hb-refcount-private.h | 87 ------------------------------------------ - 7 files changed, 112 insertions(+), 120 deletions(-) + src/Makefile.am | 2 +- + src/hb-blob.c | 6 +--- + src/hb-font-private.h | 1 - + src/hb-font.c | 37 + +++++++--------------- + src/{hb-refcount-private.h => hb-object-private.h} | 14 ++++++-- + src/hb-private.h | 2 ++ + 6 files changed, 27 insertions(+), 35 deletions(-) commit c62b503770325819f249885dfc9d4683a69c9efd Author: Behdad Esfahbod @@ -42316,20 +49225,15 @@ Date: Wed May 20 05:42:12 2009 -0400 [HB] Rename harfbuzz-buffer to hb-buffer - src/Makefile.am | 5 +- - src/harfbuzz-buffer-private.h | 106 ----------- - src/harfbuzz-buffer.c | 349 - ------------------------------------ - src/harfbuzz-buffer.h | 94 ---------- - src/hb-buffer-private.h | 106 +++++++++++ - src/hb-buffer.c | 347 - +++++++++++++++++++++++++++++++++++ - src/hb-buffer.h | 94 ++++++++++ - src/hb-ot-layout-gsubgpos-private.h | 2 +- - src/hb-ot-layout-private.h | 2 +- - src/hb-ot-layout.cc | 5 +- - src/hb-ot-layout.h | 2 +- - 11 files changed, 556 insertions(+), 556 deletions(-) + src/Makefile.am | 5 +++-- + src/{harfbuzz-buffer-private.h => hb-buffer-private.h} | 8 ++++---- + src/{harfbuzz-buffer.c => hb-buffer.c} | 6 ++---- + src/{harfbuzz-buffer.h => hb-buffer.h} | 8 ++++---- + src/hb-ot-layout-gsubgpos-private.h | 2 +- + src/hb-ot-layout-private.h | 2 +- + src/hb-ot-layout.cc | 5 +++-- + src/hb-ot-layout.h | 2 +- + 8 files changed, 19 insertions(+), 19 deletions(-) commit b857b49c82782d29d6d189f1a9f4a84d39cd84ea Author: Behdad Esfahbod @@ -43792,8 +50696,7 @@ Date: Thu Jan 24 03:11:09 2008 -0500 Starting public interface - src/Makefile | 11 ----- - src/Makefile.ng | 11 +++++ + src/{Makefile => Makefile.ng} | 0 src/hb-ot-layout-gdef-private.h | 17 ++++---- src/hb-ot-layout-gsub-private.h | 3 +- src/hb-ot-layout-open-private.h | 92 @@ -43802,7 +50705,7 @@ Date: Thu Jan 24 03:11:09 2008 -0500 src/hb-ot-layout.cc | 67 ++++++++++++++++++++++++++++++ src/hb-ot-layout.h | 35 ++++++++++++++-- src/main.cc | 1 + - 9 files changed, 236 insertions(+), 52 deletions(-) + 8 files changed, 225 insertions(+), 41 deletions(-) commit 7d6b95b000ec6cd8ca93113b2d81a049ad2f9bbe Author: Behdad Esfahbod @@ -43882,21 +50785,20 @@ Date: Wed Jan 23 05:00:30 2008 -0500 Clean up file names, add namespace - src/harfbuzz-common.h | 14 - - src/harfbuzz-gdef-private.h | 213 ----------- - src/harfbuzz-gdef.h | 11 - - src/harfbuzz-open-private.h | 804 - ---------------------------------------- - src/harfbuzz-open.h | 17 - - src/harfbuzz-private.h | 12 - - src/hb-common.h | 14 + - src/hb-ot-layout-gdef-private.h | 213 +++++++++++ - src/hb-ot-layout-open-private.h | 804 - ++++++++++++++++++++++++++++++++++++++++ - src/hb-ot-layout.h | 17 + - src/hb-private.h | 12 + - src/main.cc | 4 +- - 12 files changed, 1062 insertions(+), 1073 deletions(-) + src/harfbuzz-common.h | 14 + -------------- + src/harfbuzz-gdef.h | 11 + ----------- + src/hb-common.h | 14 + ++++++++++++++ + ...harfbuzz-gdef-private.h => hb-ot-layout-gdef-private.h} | 8 ++++---- + ...harfbuzz-open-private.h => hb-ot-layout-open-private.h} | 10 + +++++----- + src/{harfbuzz-open.h => hb-ot-layout.h} | 12 + ++++++------ + src/{harfbuzz-private.h => hb-private.h} | 6 +++--- + src/main.cc | 4 ++-- + 8 files changed, 34 insertions(+), 45 deletions(-) commit 1f437e6f47fb6c15761021bd2078f31778f2179c Author: Behdad Esfahbod @@ -44216,26 +51118,24 @@ Date: Thu Oct 25 00:23:46 2007 +0000 and more type renames and moving code around. - src/Makefile.am | 3 +- - src/ftglue.c | 287 - -------------------------------------------- - src/ftglue.h | 151 ----------------------- - src/harfbuzz-dump-main.c | 48 +------- - src/harfbuzz-dump.c | 30 ++--- - src/harfbuzz-gdef.c | 18 +-- - src/harfbuzz-global.h | 18 +++ - src/harfbuzz-gpos-private.h | 2 +- - src/harfbuzz-gpos.c | 90 +++++++------- - src/harfbuzz-gsub-private.h | 2 +- - src/harfbuzz-gsub.c | 64 +++++----- - src/harfbuzz-impl.c | 283 - +++++++++++++++++++++++++++++++++++++++++++ - src/harfbuzz-impl.h | 114 ++++++++++++++++-- - src/harfbuzz-open-private.h | 14 +-- - src/harfbuzz-open.c | 32 ++--- - src/harfbuzz-open.h | 16 --- - src/harfbuzz.c | 4 +- - 17 files changed, 542 insertions(+), 634 deletions(-) + src/Makefile.am | 3 +- + src/ftglue.h | 151 + -------------------------------------- + src/harfbuzz-dump-main.c | 48 ++---------- + src/harfbuzz-dump.c | 30 ++++---- + src/harfbuzz-gdef.c | 18 ++--- + src/harfbuzz-global.h | 18 +++++ + src/harfbuzz-gpos-private.h | 2 +- + src/harfbuzz-gpos.c | 90 +++++++++++------------ + src/harfbuzz-gsub-private.h | 2 +- + src/harfbuzz-gsub.c | 64 ++++++++-------- + src/{ftglue.c => harfbuzz-impl.c} | 64 ++++++++-------- + src/harfbuzz-impl.h | 114 ++++++++++++++++++++++++++-- + src/harfbuzz-open-private.h | 14 ++-- + src/harfbuzz-open.c | 32 ++++---- + src/harfbuzz-open.h | 16 ---- + src/harfbuzz.c | 4 +- + 16 files changed, 289 insertions(+), 381 deletions(-) commit 5716ae278a82d318ddbfeba01d0785d4efbe1454 Author: Behdad Esfahbod @@ -44735,15 +51635,15 @@ Date: Thu Dec 28 06:10:59 2006 -0500 Break and rename, in the layout of old HarfBuzz codebase - src/.gitignore | 1 + - src/Makefile | 2 +- - src/harfbuzz-common.h | 14 + - src/harfbuzz-ng.cc | 802 - -------------------------------------------- - src/harfbuzz-open-private.h | 697 ++++++++++++++++++++++++++++++++++++++ - src/harfbuzz-open.h | 13 + - src/main.cc | 98 ++++++ - 7 files changed, 824 insertions(+), 803 deletions(-) + src/.gitignore | 1 + + src/Makefile | 2 +- + src/harfbuzz-common.h | 14 +++ + src/{harfbuzz-ng.cc => harfbuzz-open-private.h} | 117 + ++---------------------- + src/harfbuzz-open.h | 13 +++ + src/main.cc | 98 + ++++++++++++++++++++ + 6 files changed, 133 insertions(+), 112 deletions(-) commit 3158d84b0dfe5032e7c56c03f2da97b8ab549d94 Author: Behdad Esfahbod @@ -44871,12 +51771,9 @@ Date: Mon Dec 25 10:28:31 2006 -0500 Rename to harfbuzz-ng.cc - src/Makefile | 2 +- - src/harfbuzz-ng.cc | 513 - ++++++++++++++++++++++++++++++++++++++++++++++++ - src/hb-types-private.cc | 513 - ------------------------------------------------ - 3 files changed, 514 insertions(+), 514 deletions(-) + src/Makefile | 2 +- + src/{hb-types-private.cc => harfbuzz-ng.cc} | 0 + 2 files changed, 1 insertion(+), 1 deletion(-) commit f8ba99f6f322800a915428ffc3b5eaf1be2e6c21 Author: Behdad Esfahbod @@ -45243,52 +52140,48 @@ Date: Fri Mar 31 12:28:09 2006 +0000 * pango/pango-ot-*: Updated to use HarfBuzz symbol names. - src/COPYING | 15 + - src/COPYING.FTL | 174 ++ - src/COPYING.GPL | 340 +++ - src/FT-license.txt | 28 - - src/FTL.TXT | 174 -- - src/Makefile.am | 89 +- - src/README | 44 +- - src/disasm.c | 720 ----- - src/disasm.h | 26 - - src/ftglue.c | 88 +- - src/ftglue.h | 68 +- - src/ftxgdef.c | 1225 --------- - src/ftxgdef.h | 224 -- - src/ftxgpos.c | 6199 - ------------------------------------------ - src/ftxgpos.h | 838 ------ - src/ftxgsub.c | 4533 ------------------------------- - src/ftxgsub.h | 594 ---- - src/ftxopen.c | 1552 ----------- - src/ftxopen.h | 317 --- - src/ftxopenf.h | 166 -- - src/harfbuzz-buffer.c | 227 ++ - src/harfbuzz-buffer.h | 106 + - src/harfbuzz-dump-main.c | 272 ++ - src/harfbuzz-dump.c | 720 +++++ - src/harfbuzz-dump.h | 34 + - src/harfbuzz-gdef-private.h | 101 + - src/harfbuzz-gdef.c | 1228 +++++++++ - src/harfbuzz-gdef.h | 127 + - src/harfbuzz-gpos-private.h | 683 +++++ - src/harfbuzz-gpos.c | 6269 - +++++++++++++++++++++++++++++++++++++++++++ - src/harfbuzz-gpos.h | 168 ++ - src/harfbuzz-gsub-private.h | 448 ++++ - src/harfbuzz-gsub.c | 4581 +++++++++++++++++++++++++++++++ - src/harfbuzz-gsub.h | 132 + - src/harfbuzz-impl.h | 64 + - src/harfbuzz-open-private.h | 81 + - src/harfbuzz-open.c | 1426 ++++++++++ - src/harfbuzz-open.h | 285 ++ - src/harfbuzz.c | 19 + - src/harfbuzz.h | 23 + - src/otlbuffer.c | 238 -- - src/otlbuffer.h | 103 - - src/ottest.c | 274 -- - 43 files changed, 17635 insertions(+), 17388 deletions(-) + src/COPYING | 15 + + src/{FTL.TXT => COPYING.FTL} | 0 + src/COPYING.GPL | 340 ++ + src/FT-license.txt | 28 - + src/Makefile.am | 89 +- + src/README | 44 +- + src/ftglue.c | 88 +- + src/ftglue.h | 68 +- + src/ftxgdef.c | 1225 ------- + src/ftxgdef.h | 224 -- + src/ftxgpos.c | 6199 + ------------------------------- + src/ftxgpos.h | 838 ----- + src/ftxgsub.c | 4533 ----------------------- + src/ftxgsub.h | 594 --- + src/ftxopen.c | 1552 -------- + src/ftxopen.h | 317 -- + src/ftxopenf.h | 166 - + src/harfbuzz-buffer.c | 227 ++ + src/harfbuzz-buffer.h | 106 + + src/{ottest.c => harfbuzz-dump-main.c} | 84 +- + src/{disasm.c => harfbuzz-dump.c} | 186 +- + src/{disasm.h => harfbuzz-dump.h} | 18 +- + src/harfbuzz-gdef-private.h | 101 + + src/harfbuzz-gdef.c | 1228 +++++++ + src/harfbuzz-gdef.h | 127 + + src/harfbuzz-gpos-private.h | 683 ++++ + src/harfbuzz-gpos.c | 6269 + ++++++++++++++++++++++++++++++++ + src/harfbuzz-gpos.h | 168 + + src/harfbuzz-gsub-private.h | 448 +++ + src/harfbuzz-gsub.c | 4581 +++++++++++++++++++++++ + src/harfbuzz-gsub.h | 132 + + src/harfbuzz-impl.h | 64 + + src/harfbuzz-open-private.h | 81 + + src/harfbuzz-open.c | 1426 ++++++++ + src/harfbuzz-open.h | 285 ++ + src/harfbuzz.c | 19 + + src/harfbuzz.h | 23 + + src/otlbuffer.c | 238 -- + src/otlbuffer.h | 103 - + 39 files changed, 16582 insertions(+), 16335 deletions(-) commit dd2a8d4d490df1d310e7553ba6c7c8de661f28a1 Author: Behdad Esfahbod diff --git a/INSTALL b/INSTALL index 007e939..2099840 100644 --- a/INSTALL +++ b/INSTALL @@ -12,8 +12,8 @@ without warranty of any kind. Basic Installation ================== - Briefly, the shell commands `./configure; make; make install' should -configure, build, and install this package. The following + Briefly, the shell command `./configure && make && make install' +should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. Some packages provide this `INSTALL' file but do not implement all of the features documented diff --git a/Makefile.am b/Makefile.am index 47aeb97..d56a151 100644 --- a/Makefile.am +++ b/Makefile.am @@ -4,13 +4,14 @@ NULL = ACLOCAL_AMFLAGS = -I m4 -SUBDIRS = src util test docs +SUBDIRS = src util test docs win32 EXTRA_DIST = \ autogen.sh \ harfbuzz.doap \ Android.mk \ README.python \ + BUILD.md \ $(NULL) MAINTAINERCLEANFILES = \ @@ -20,6 +21,7 @@ MAINTAINERCLEANFILES = \ $(srcdir)/INSTALL \ $(srcdir)/ChangeLog \ $(srcdir)/gtk-doc.make \ + $(srcdir)/m4/gtk-doc.m4 \ $(NULL) diff --git a/Makefile.in b/Makefile.in index badd4c0..e817519 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.14 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. @@ -224,6 +224,8 @@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ +DIRECTWRITE_CXXFLAGS = @DIRECTWRITE_CXXFLAGS@ +DIRECTWRITE_LIBS = @DIRECTWRITE_LIBS@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ @@ -233,15 +235,20 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ +FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_DEPS = @FREETYPE_DEPS@ FREETYPE_LIBS = @FREETYPE_LIBS@ GIT = @GIT@ GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_DEPS = @GLIB_DEPS@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GRAPHITE2_CFLAGS = @GRAPHITE2_CFLAGS@ +GRAPHITE2_DEPS = @GRAPHITE2_DEPS@ GRAPHITE2_LIBS = @GRAPHITE2_LIBS@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ @@ -366,12 +373,13 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ NULL = ACLOCAL_AMFLAGS = -I m4 -SUBDIRS = src util test docs +SUBDIRS = src util test docs win32 EXTRA_DIST = \ autogen.sh \ harfbuzz.doap \ Android.mk \ README.python \ + BUILD.md \ $(NULL) MAINTAINERCLEANFILES = \ @@ -381,6 +389,7 @@ MAINTAINERCLEANFILES = \ $(srcdir)/INSTALL \ $(srcdir)/ChangeLog \ $(srcdir)/gtk-doc.make \ + $(srcdir)/m4/gtk-doc.m4 \ $(NULL) @@ -716,9 +725,10 @@ distcheck: dist && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + && ../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ diff --git a/NEWS b/NEWS index c4950e2..e62b198 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,322 @@ +Overview of changes leading to 1.2.7 +Monday, May 2, 2016 +==================================== + +- Blacklist another version of Times New Roman (Bold) Italic from Windows 7. +- Fix Mongolian Free Variation Selectors shaping with certain fonts. +- Fix Tibetan shorthand contractions shaping. +- Improved list of language tag mappings. +- Unbreak build on Windows CE. +- Make 'glyf' table loading lazy in hb-ot-font. + + +Overview of changes leading to 1.2.6 +Friday, April 8, 2016 +==================================== + +- Blacklist GDEF table of another set of Times New Roman (Bold) Italic. +- DirectWrite backend improvements. Note: DirectWrite backend is + exclusively for our internal testing and should NOT be used in any + production system whatsoever. + + +Overview of changes leading to 1.2.5 +Monday, April 4, 2016 +==================================== + +- Fix GDEF mark-filtering-set, which was broken in 1.2.3. + + +Overview of changes leading to 1.2.4 +Thursday, March 17, 2016 +==================================== + +- Synthesize GDEF glyph class for any glyph that does not have one in GDEF. + I really hope we don't discover broken fonts that shape badly with this + change. +- Misc build and other minor fixes. +- API changes: + - Added HB_NDEBUG. It's fine for production systems to define this to + disable high-overhead debugging checks. However, I also reduced the + overhead of those checks, so it's a non-issue right now. You can + forget it. Just not defining anything at all is fine. + + +Overview of changes leading to 1.2.3 +Thursday, February 25, 2016 +==================================== + +- Blacklist GDEF table of certain versions of Times New Roman (Bold) Italic, + due to bug in glyph class of ASCII double-quote character. This should + address "regression" introduced in 1.2.0 when we switched mark zeroing + in most shapers from BY_UNICODE_LATE to BY_GDEF_LATE. + This fourth release in a week should finally stablize things... + +- hb-ot-font's get_glyph() implementation saw some optimizations. Though, + might be really hard to measure in real-world situations. + +- Also, two rather small API changes: + +We now disable some time-consuming internal bookkeeping if built with NDEBUG +defined. This is a first time that we use NDEBUG to disable debug code. If +there exist production systems that do NOT want to enable NDEBUG, please let +me know and I'll add HB_NDEBUG. + +Added get_nominal_glyph() and get_variation_glyph() instead of get_glyph() + +New API: +- hb_font_get_nominal_glyph_func_t +- hb_font_get_variation_glyph_func_t +- hb_font_funcs_set_nominal_glyph_func() +- hb_font_funcs_set_variation_glyph_func() +- hb_font_get_nominal_glyph() +- hb_font_get_variation_glyph() + +Deprecated API: +- hb_font_get_glyph_func_t +- hb_font_funcs_set_glyph_func() + +Clients that implement their own font-funcs are encouraged to replace +their get_glyph() implementation with a get_nominal_glyph() and +get_variation_glyph() pair. The variation version can assume that +variation_selector argument is not zero. Old (deprecated) functions +will continue working indefinitely using internal gymnastics; it is +just more efficient to use the new functions. + + +Overview of changes leading to 1.2.2 +Wednesday, February 24, 2016 +==================================== + +- Fix regression with mark positioning with fonts that have + non-zero mark advances. This was introduced in 1.2.0 while + trying to make mark and cursive attachments to work together. + I have partially reverted that, so this version is much more + like what we had before. All clients who updated to 1.2.0 + should update to this version. + + +Overview of changes leading to 1.2.1 +Tuesday, February 23, 2016 +==================================== + +- CoreText: Fix bug with wrong scale if font scale was changed later. + https://github.com/libass/libass/issues/212 +- CoreText: Drastically speed up font initialization. +- CoreText: Fix tiny leak. +- Group ZWJ/ZWNJ with previous syllable under cluster-level=0. + https://github.com/behdad/harfbuzz/issues/217 +- Add test/shaping/README.md about how to add tests to the suite. + + +Overview of changes leading to 1.2.0 +Friday, February 19, 2016 +==================================== + +- Fix various issues (hangs mostly) in case of memory allocation failure. +- Change mark zeroing types of most shapers from BY_UNICODE_LATE to + BY_GDEF_LATE. This seems to be what Uniscribe does. +- Change mark zeroing of USE shaper from NONE to BY_GDEF_EARLY. That's + what Windows does. +- Allow GPOS cursive connection on marks, and fix the interaction with + mark attachment. This work resulted in some changes to how mark + attachments work. See: + https://github.com/behdad/harfbuzz/issues/211 + https://github.com/behdad/harfbuzz/commit/86c68c7a2c971efe8e35b1f1bd99401dc8b688d2 +- Graphite2 shaper: improved negative advance handling (eg. Nastaliq). +- Add nmake-based build system for Windows. +- Minor speedup. +- Misc. improvements. + + +Overview of changes leading to 1.1.3 +Monday, January 11, 2016 +==================================== + +- Ported Indic shaper to Unicode 8.0 data. +- Universal Shaping Engine fixes. +- Speed up CoreText shaper when font fallback happens in CoreText. +- Documentation improvements, thanks to Khaled Hosny. +- Very rough directwrite shaper for testing, thanks to Ebrahim Byagowi. +- Misc bug fixes. +- New API: + + * Font extents: + hb_font_extents_t + hb_font_get_font_extents_func_t + hb_font_get_font_h_extents_func_t + hb_font_get_font_v_extents_func_t + hb_font_funcs_set_font_h_extents_func + hb_font_funcs_set_font_v_extents_func + hb_font_get_h_extents + hb_font_get_v_extents + hb_font_get_extents_for_direction + + * Buffer message (aka debug): + hb_buffer_message_func_t + hb_buffer_set_message_func() + Actual message protocol to be fleshed out later. + + +Overview of changes leading to 1.1.2 +Wednesday, November 26, 2015 +==================================== + +- Fix badly-broken fallback shaper that affected terminology. + https://github.com/behdad/harfbuzz/issues/187 +- Fix y_scaling in Graphite shaper. +- API changes: + * An unset glyph_h_origin() function in font-funcs now (sensibly) + implies horizontal origin at 0,0. Ie, the nil callback returns + true instead of false. As such, implementations that have a + glyph_h_origin() that simply returns true, can remove that function + with HarfBuzz >= 1.1.2. This results in a tiny speedup. + + +Overview of changes leading to 1.1.1 +Wednesday, November 24, 2015 +==================================== + +- Build fixes, specially for hb-coretext. + + +Overview of changes leading to 1.1.0 +Wednesday, November 18, 2015 +==================================== + +- Implement 'stch' stretch feature for Syriac Abbreviation Mark. + https://github.com/behdad/harfbuzz/issues/141 +- Disable use of decompose_compatibility() callback. +- Implement "shaping" of various Unicode space characters, even + if the font does not support them. + https://github.com/behdad/harfbuzz/issues/153 +- If font does not support U+2011 NO-BREAK HYPHEN, fallback to + U+2010 HYPHEN. +- Changes resulting from libFuzzer continuous fuzzing: + * Reject font tables that need more than 8 edits, + * Bound buffer growth during shaping to 32x, + * Fix assertions and other issues at OOM / buffer max-growth. +- Misc fixes and optimizations. +- API changes: + * All fonts created with hb_font_create() now inherit from + (ie. have parent) hb_font_get_empty(). + + +Overview of changes leading to 1.0.6 +Thursday, October 15, 2015 +==================================== + +- Reduce max nesting level in OT lookups from 8 to 6. + Should not affect any real font as far as I know. +- Fix memory access issue in ot-font. +- Revert default load-flags of fonts created using hb_ft_font_create() + back to FT_LOAD_DEFAULT|FT_LOAD_NO_HINTING. This was changed in + last release (1.0.5), but caused major issues, so revert. + https://github.com/behdad/harfbuzz/issues/143 + + +Overview of changes leading to 1.0.5 +Tuesday, October 13, 2015 +==================================== + +- Fix multiple memory access bugs discovered using libFuzzer. + https://github.com/behdad/harfbuzz/issues/139 + Everyone should upgrade to this version as soon as possible. + We now have continuous fuzzing set up, to avoid issues like + these creeping in again. +- Misc fixes. + +- New API: + * hb_font_set_parent(). + * hb_ft_font_[sg]et_load_flags() + The default flags for fonts created using hb_ft_font_create() + has changed to default to FT_LOAD_DEFAULT now. Previously it + was defaulting to FT_LOAD_DFEAULT|FT_LOAD_NO_HINTING. + +- API changes: + * Fonts now default to units-per-EM as their scale, instead of 0. + * hb_font_create_sub_font() does NOT make parent font immutable + anymore. hb_font_make_immutable() does. + + +Overview of changes leading to 1.0.4 +Wednesday, September 30, 2015 +==================================== + +- Fix minor out-of-bounds read error. + + +Overview of changes leading to 1.0.3 +Tuesday, September 1, 2015 +==================================== + +- Start of user documentation, from Simon Cozens! +- Implement glyph_extents() for TrueType fonts in hb-ot-font. +- Improve GPOS cursive attachments with conflicting lookups. +- More fixes for cluster-level = 1. +- Uniscribe positioning fix. + + +Overview of changes leading to 1.0.2 +Wednesday, August 19, 2015 +==================================== + +- Fix shaping with cluster-level > 0. +- Fix Uniscribe backend font-size scaling. +- Declare dependencies in harfbuzz.pc. + FreeType is not declared though, to avoid bugs in pkg-config + 0.26 with recursive dependencies. +- Slightly improved debug infrastructure. More to come later. +- Misc build fixes. + + +Overview of changes leading to 1.0.1 +Monday, July 27, 2015 +==================================== + +- Fix out-of-bounds access in USE shaper. + + +Overview of changes leading to 1.0.0 +Sunday, July 26, 2015 +==================================== + +- Implement Universal Shaping Engine: + https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm + http://blogs.windows.com/bloggingwindows/2015/02/23/windows-shapes-the-worlds-languages/ +- Bump version to 1.0.0. The soname was NOT bumped. + + +Overview of changes leading to 0.9.42 +Thursday, July 26, 2015 +===================================== + +- New API to allow for retrieving finer-grained cluster + mappings if the client desires to handle them. Default + behavior is unchanged. +- Fix cluster merging when removing default-ignorables. +- Update to Unicode 8.0 +- hb-graphite2 fixes. +- Misc fixes. +- Removed HB_NO_MERGE_CLUSTERS hack. +- New API: + hb_buffer_cluster_level_t enum + hb_buffer_get_cluster_level() + hb_buffer_set_cluster_level() + hb-shape / hb-view --cluster-level + + +Overview of changes leading to 0.9.41 +Thursday, June 18, 2015 +===================================== + +- Fix hb-coretext with trailing whitespace in right-to-left. +- New API: hb_buffer_reverse_range(). +- Allow implementing atomic ops in config.h. +- Fix hb_language_t in language bindings. +- Misc fixes. + + Overview of changes leading to 0.9.40 Friday, March 20, 2015 ===================================== diff --git a/README b/README index d34bc74..3fcdfb4 100644 --- a/README +++ b/README @@ -1,5 +1,6 @@ [![Build Status](https://travis-ci.org/behdad/harfbuzz.svg)](https://travis-ci.org/behdad/harfbuzz) [![Coverage Status](https://img.shields.io/coveralls/behdad/harfbuzz.svg)](https://coveralls.io/r/behdad/harfbuzz) +[ABI Tracker](http://abi-laboratory.pro/tracker/timeline/harfbuzz/) This is HarfBuzz, a text shaping library. diff --git a/README.python b/README.python index eabdf5b..cd31264 100644 --- a/README.python +++ b/README.python @@ -1,6 +1,10 @@ To enable HarfBuzz bindings for Python among other languages, make sure -you have latest version of gobject-introspection compiled, and then -run autogen.sh (if building from git), and then: +you have latest version of gobject-introspection available. On Ubuntu, +you can install that this way: + + sudo apt-get install libgirepository1.0-dev + +And then run autogen.sh (if building from git), and then: ./configure --with-gobject --enable-introspection diff --git a/TODO b/TODO index e1aa39c..4f37f60 100644 --- a/TODO +++ b/TODO @@ -9,26 +9,14 @@ General fixes: - mask propagation? (when ligation, "or" the masks). -- Warn at compile time (and runtime with HB_DEBUG?) if no Unicode / font - funcs found / set. -- Do proper rounding when scaling from font space? May be a non-issue. - -- Misc features: - * init/medi/fina/isol for non-cursive scripts - - -API issues to fix before 1.0: -============================ +API issues: +=========== - API to accept a list of languages? - Add init_func to font_funcs. Adjust ft. -- hb-ft load_flags issues. - -- Add pkg-config files for glue codes (harfbuzz-glib, etc) - - 'const' for getter APIs? (use mutable internally) - Remove hb_ot_shape_glyphs_closure()? diff --git a/aclocal.m4 b/aclocal.m4 index 0a02487..c0e8135 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,4 +1,4 @@ -# generated automatically by aclocal 1.14 -*- Autoconf -*- +# generated automatically by aclocal 1.14.1 -*- Autoconf -*- # Copyright (C) 1996-2013 Free Software Foundation, Inc. @@ -132,7 +132,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.14' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.14], [], +m4_if([$1], [1.14.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -148,7 +148,7 @@ m4_define([_AM_AUTOCONF_VERSION], []) # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.14])dnl +[AM_AUTOMAKE_VERSION([1.14.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) diff --git a/config.h.in b/config.h.in index 35395c3..c4ca473 100644 --- a/config.h.in +++ b/config.h.in @@ -15,12 +15,21 @@ /* Have Core Text backend */ #undef HAVE_CORETEXT +/* Have DirectWrite library */ +#undef HAVE_DIRECTWRITE + /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H +/* Define to 1 if you have the header file. */ +#undef HAVE_DWRITE_H + /* Have simple TrueType Layout backend */ #undef HAVE_FALLBACK +/* Have fontconfig library */ +#undef HAVE_FONTCONFIG + /* Have FreeType 2 library */ #undef HAVE_FREETYPE @@ -39,6 +48,9 @@ /* Have ICU library */ #undef HAVE_ICU +/* Use hb-icu Unicode callbacks */ +#undef HAVE_ICU_BUILTIN + /* Have Intel __sync_* atomic primitives */ #undef HAVE_INTEL_ATOMIC_PRIMITIVES @@ -114,7 +126,8 @@ /* Define to 1 if you have the header file. */ #undef HAVE_WINDOWS_H -/* Define to the sub-directory where libtool stores uninstalled libraries. */ +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ #undef LT_OBJDIR /* Define to the address where bug reports for this package should be sent. */ diff --git a/config.sub b/config.sub index 8b612ab..9633db7 100755 --- a/config.sub +++ b/config.sub @@ -2,7 +2,7 @@ # Configuration validation subroutine script. # Copyright 1992-2013 Free Software Foundation, Inc. -timestamp='2013-04-24' +timestamp='2013-08-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -257,7 +257,7 @@ case $basic_machine in | avr | avr32 \ | be32 | be64 \ | bfin \ - | c4x | clipper \ + | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ @@ -372,7 +372,7 @@ case $basic_machine in | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | clipper-* | craynv-* | cydra-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ @@ -794,7 +794,7 @@ case $basic_machine in os=-mingw64 ;; mingw32) - basic_machine=i386-pc + basic_machine=i686-pc os=-mingw32 ;; mingw32ce) @@ -830,7 +830,7 @@ case $basic_machine in basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) - basic_machine=i386-pc + basic_machine=i686-pc os=-msys ;; mvs) @@ -1546,6 +1546,9 @@ case $basic_machine in c4x-* | tic4x-*) os=-coff ;; + c8051-*) + os=-elf + ;; hexagon-*) os=-elf ;; diff --git a/configure b/configure index 1c08cae..1b45257 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for HarfBuzz 0.9.40. +# Generated by GNU Autoconf 2.69 for HarfBuzz 1.2.7. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='HarfBuzz' PACKAGE_TARNAME='harfbuzz' -PACKAGE_VERSION='0.9.40' -PACKAGE_STRING='HarfBuzz 0.9.40' +PACKAGE_VERSION='1.2.7' +PACKAGE_STRING='HarfBuzz 1.2.7' PACKAGE_BUGREPORT='http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz' PACKAGE_URL='http://harfbuzz.org/' @@ -641,6 +641,10 @@ HAVE_CORETEXT_FALSE HAVE_CORETEXT_TRUE CORETEXT_LIBS CORETEXT_CFLAGS +HAVE_DIRECTWRITE_FALSE +HAVE_DIRECTWRITE_TRUE +DIRECTWRITE_LIBS +DIRECTWRITE_CXXFLAGS HAVE_UNISCRIBE_FALSE HAVE_UNISCRIBE_TRUE UNISCRIBE_LIBS @@ -649,15 +653,25 @@ HAVE_FREETYPE_FALSE HAVE_FREETYPE_TRUE FREETYPE_LIBS FREETYPE_CFLAGS +FREETYPE_DEPS HAVE_GRAPHITE2_FALSE HAVE_GRAPHITE2_TRUE GRAPHITE2_LIBS GRAPHITE2_CFLAGS +GRAPHITE2_DEPS +HAVE_UCDN_FALSE +HAVE_UCDN_TRUE +HAVE_ICU_BUILTIN_FALSE +HAVE_ICU_BUILTIN_TRUE HAVE_ICU_FALSE HAVE_ICU_TRUE ICU_CONFIG ICU_LIBS ICU_CFLAGS +HAVE_FONTCONFIG_FALSE +HAVE_FONTCONFIG_TRUE +FONTCONFIG_LIBS +FONTCONFIG_CFLAGS HAVE_CAIRO_FT_FALSE HAVE_CAIRO_FT_TRUE CAIRO_FT_LIBS @@ -666,8 +680,6 @@ HAVE_CAIRO_FALSE HAVE_CAIRO_TRUE CAIRO_LIBS CAIRO_CFLAGS -HAVE_UCDN_FALSE -HAVE_UCDN_TRUE HAVE_INTROSPECTION_FALSE HAVE_INTROSPECTION_TRUE INTROSPECTION_MAKEFILE @@ -687,6 +699,7 @@ HAVE_GLIB_FALSE HAVE_GLIB_TRUE GLIB_LIBS GLIB_CFLAGS +GLIB_DEPS HAVE_FALLBACK_FALSE HAVE_FALLBACK_TRUE HAVE_OT_FALSE @@ -869,10 +882,12 @@ with_glib with_gobject enable_introspection with_cairo +with_fontconfig with_icu with_graphite2 with_freetype with_uniscribe +with_directwrite with_coretext ' ac_precious_vars='build_alias @@ -899,6 +914,8 @@ CAIRO_CFLAGS CAIRO_LIBS CAIRO_FT_CFLAGS CAIRO_FT_LIBS +FONTCONFIG_CFLAGS +FONTCONFIG_LIBS ICU_CFLAGS ICU_LIBS GRAPHITE2_CFLAGS @@ -1445,7 +1462,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures HarfBuzz 0.9.40 to adapt to many kinds of systems. +\`configure' configures HarfBuzz 1.2.7 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1515,7 +1532,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of HarfBuzz 0.9.40:";; + short | recursive ) echo "Configuration of HarfBuzz 1.2.7:";; esac cat <<\_ACEOF @@ -1546,8 +1563,8 @@ Optional Packages: --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-sysroot[=DIR] Search for dependent libraries within DIR (or the - compiler's sysroot if not specified). + --with-sysroot=DIR Search for dependent libraries within DIR + (or the compiler's sysroot if not specified). --with-html-dir=PATH path to installed docs --with-glib=[yes/no/auto] Use glib [default=auto] @@ -1555,7 +1572,9 @@ Optional Packages: Use gobject [default=auto] --with-cairo=[yes/no/auto] Use cairo [default=auto] - --with-icu=[yes/no/auto] + --with-fontconfig=[yes/no/auto] + Use fontconfig [default=auto] + --with-icu=[yes/no/builtin/auto] Use ICU [default=auto] --with-graphite2=[yes/no/auto] Use the graphite2 library [default=no] @@ -1563,6 +1582,9 @@ Optional Packages: Use the FreeType library [default=auto] --with-uniscribe=[yes/no/auto] Use the Uniscribe library [default=no] + --with-directwrite=[yes/no/auto] + Use the DirectWrite library (experimental) + [default=no] --with-coretext=[yes/no/auto] Use CoreText [default=no] @@ -1596,6 +1618,10 @@ Some influential environment variables: C compiler flags for CAIRO_FT, overriding pkg-config CAIRO_FT_LIBS linker flags for CAIRO_FT, overriding pkg-config + FONTCONFIG_CFLAGS + C compiler flags for FONTCONFIG, overriding pkg-config + FONTCONFIG_LIBS + linker flags for FONTCONFIG, overriding pkg-config ICU_CFLAGS C compiler flags for ICU, overriding pkg-config ICU_LIBS linker flags for ICU, overriding pkg-config GRAPHITE2_CFLAGS @@ -1674,7 +1700,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -HarfBuzz configure 0.9.40 +HarfBuzz configure 1.2.7 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2344,6 +2370,97 @@ rm -f conftest.val } # ac_fn_c_compute_int +# ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES +# --------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_cxx_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## ------------------------------------------------------------------------- ## +## Report this to http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz ## +## ------------------------------------------------------------------------- ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_cxx_check_header_mongrel + # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache @@ -2401,7 +2518,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by HarfBuzz $as_me 0.9.40, which was +It was created by HarfBuzz $as_me 1.2.7, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3270,7 +3387,7 @@ fi # Define the identity of the package. PACKAGE='harfbuzz' - VERSION='0.9.40' + VERSION='1.2.7' # Some tools Automake needs. @@ -3303,16 +3420,47 @@ AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. -_am_tools='gnutar pax cpio none' - - +_am_tools='gnutar plaintar pax cpio none' + +# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 +$as_echo_n "checking whether UID '$am_uid' is supported by ustar format... " >&6; } + if test $am_uid -le $am_max_uid; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + _am_tools=none + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 +$as_echo_n "checking whether GID '$am_gid' is supported by ustar format... " >&6; } + if test $am_gid -le $am_max_gid; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + _am_tools=none + fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a pax tar archive" >&5 -$as_echo_n "checking how to create a pax tar archive... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 +$as_echo_n "checking how to create a ustar tar archive... " >&6; } # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. - _am_tools=${am_cv_prog_tar_pax-$_am_tools} + _am_tools=${am_cv_prog_tar_ustar-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in @@ -3324,8 +3472,8 @@ $as_echo_n "checking how to create a pax tar archive... " >&6; } echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && break done - am__tar="$_am_tar --format=posix -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=posix -chf - "'"$tardir"' + am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) @@ -3337,14 +3485,14 @@ $as_echo_n "checking how to create a pax tar archive... " >&6; } am__untar='tar xf -' ;; pax) - am__tar='pax -L -x pax -w "$$tardir"' - am__tar_='pax -L -x pax -w "$tardir"' + am__tar='pax -L -x ustar -w "$$tardir"' + am__tar_='pax -L -x ustar -w "$tardir"' am__untar='pax -r' ;; cpio) - am__tar='find "$$tardir" -print | cpio -o -H pax -L' - am__tar_='find "$tardir" -print | cpio -o -H pax -L' - am__untar='cpio -i -H pax -d' + am__tar='find "$$tardir" -print | cpio -o -H ustar -L' + am__tar_='find "$tardir" -print | cpio -o -H ustar -L' + am__untar='cpio -i -H ustar -d' ;; none) am__tar=false @@ -3355,7 +3503,7 @@ $as_echo_n "checking how to create a pax tar archive... " >&6; } # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. - test -n "${am_cv_prog_tar_pax}" && break + test -n "${am_cv_prog_tar_ustar}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir @@ -3383,14 +3531,14 @@ $as_echo_n "checking how to create a pax tar archive... " >&6; } done rm -rf conftest.dir - if ${am_cv_prog_tar_pax+:} false; then : + if ${am_cv_prog_tar_ustar+:} false; then : $as_echo_n "(cached) " >&6 else - am_cv_prog_tar_pax=$_am_tool + am_cv_prog_tar_ustar=$_am_tool fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_pax" >&5 -$as_echo "$am_cv_prog_tar_pax" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 +$as_echo "$am_cv_prog_tar_ustar" >&6; } @@ -4707,8 +4855,8 @@ esac -macro_version='2.4.2.418' -macro_revision='2.4.2.418' +macro_version='2.4.2' +macro_revision='1.3337' @@ -4722,7 +4870,7 @@ macro_revision='2.4.2.418' -ltmain=$ac_aux_dir/ltmain.sh +ltmain="$ac_aux_dir/ltmain.sh" # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || @@ -4842,7 +4990,7 @@ func_echo_all () $ECHO "" } -case $ECHO in +case "$ECHO" in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 @@ -5165,19 +5313,19 @@ test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld -if test yes = "$GCC"; then +if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) - # gcc leaves a trailing carriage return, which upsets mingw + # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; @@ -5191,7 +5339,7 @@ $as_echo_n "checking for ld used by $CC... " >&6; } while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done - test -z "$LD" && LD=$ac_prog + test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. @@ -5202,7 +5350,7 @@ $as_echo_n "checking for ld used by $CC... " >&6; } with_gnu_ld=unknown ;; esac -elif test yes = "$with_gnu_ld"; then +elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else @@ -5213,32 +5361,32 @@ if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD=$ac_dir/$ac_prog + lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } @@ -5281,33 +5429,33 @@ if ${lt_cv_path_NM+:} false; then : else if test -n "$NM"; then # Let the user override the test. - lt_cv_path_NM=$NM + lt_cv_path_NM="$NM" else - lt_nm_to_check=${ac_tool_prefix}nm + lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. - tmp_nm=$ac_dir/$lt_tmp_nm - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. - # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" - break 2 + break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" - break 2 + break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but @@ -5318,15 +5466,15 @@ else esac fi done - IFS=$lt_save_ifs + IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } -if test no != "$lt_cv_path_NM"; then - NM=$lt_cv_path_NM +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : @@ -5432,9 +5580,9 @@ esac fi fi - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) - DUMPBIN="$DUMPBIN -symbols -headers" + DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: @@ -5442,8 +5590,8 @@ fi esac fi - if test : != "$DUMPBIN"; then - NM=$DUMPBIN + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm @@ -5494,7 +5642,7 @@ if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 - teststring=ABCD + teststring="ABCD" case $build_os in msdosdjgpp*) @@ -5534,7 +5682,7 @@ else lt_cv_sys_max_cmd_len=8192; ;; - bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` @@ -5585,22 +5733,22 @@ else *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then + test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8; do + for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. - while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && - test 17 != "$i" # 1/2 MB should be enough + test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring @@ -5618,7 +5766,7 @@ else fi -if test -n "$lt_cv_sys_max_cmd_len"; then +if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else @@ -5636,6 +5784,30 @@ max_cmd_len=$lt_cv_sys_max_cmd_len : ${MV="mv -f"} : ${RM="rm -f"} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 +$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 +$as_echo "$xsi_shell" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 +$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } +lt_shell_append=no +( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 +$as_echo "$lt_shell_append" >&6; } + + if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else @@ -5758,13 +5930,13 @@ esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) - if test yes != "$GCC"; then + if test "$GCC" != yes; then reload_cmds=false fi ;; darwin*) - if test yes = "$GCC"; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi @@ -5892,13 +6064,13 @@ lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. -# 'unknown' -- same as none, but documents that we really don't know. +# `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path -# that responds to the $file_magic_cmd with a given extended regex. -# If you have 'file' or equivalent on your system and you're not sure -# whether 'pass_all' will *always* work, you probably want this one. +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) @@ -5925,7 +6097,8 @@ mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then + # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. + if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else @@ -6003,7 +6176,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; -netbsd*) +netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else @@ -6021,8 +6194,8 @@ newos6*) lt_cv_deplibs_check_method=pass_all ;; -openbsd* | bitrig*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' @@ -6232,8 +6405,8 @@ else case $host_os in cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh; - # decide which one to use based on capabilities of $DLLTOOL + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib @@ -6245,7 +6418,7 @@ cygwin* | mingw* | pw32* | cegcc*) ;; *) # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd=$ECHO + lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac @@ -6399,7 +6572,7 @@ if ac_fn_c_try_compile "$LINENO"; then : ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } - if test 0 -eq "$ac_status"; then + if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 @@ -6407,7 +6580,7 @@ if ac_fn_c_try_compile "$LINENO"; then : ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } - if test 0 -ne "$ac_status"; then + if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi @@ -6420,7 +6593,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } -if test no = "$lt_cv_ar_at_file"; then +if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file @@ -6637,7 +6810,7 @@ old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in - bitrig* | openbsd*) + openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) @@ -6727,7 +6900,7 @@ cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi ;; @@ -6760,44 +6933,14 @@ case `$NM -V 2>&1` in symcode='[ABCDGIRSTW]' ;; esac -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" - # Adjust the below global symbol transforms to fixup imported variables. - lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" - lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" - lt_c_name_lib_hook="\ - -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ - -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" -else - # Disable hooks by default. - lt_cv_sys_global_symbol_to_import= - lt_cdecl_hook= - lt_c_name_hook= - lt_c_name_lib_hook= -fi - # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n"\ -$lt_cdecl_hook\ -" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ -$lt_c_name_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" - -# Transform an extracted symbol line into symbol name with lib prefix and -# symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ -$lt_c_name_lib_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= @@ -6815,24 +6958,21 @@ for ac_symprfx in "" "_"; do # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function, - # D for any global variable and I for any imported variable. + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ -" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ -" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ -" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ -" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ -" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" @@ -6880,11 +7020,11 @@ _LT_EOF if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE -/* DATA imports from DLLs on WIN32 can't be const, because runtime +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST -#elif defined __osf__ +#elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else @@ -6910,7 +7050,7 @@ lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF - $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; @@ -6930,13 +7070,13 @@ _LT_EOF mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS - LIBS=conftstm.$ac_objext + LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest$ac_exeext; then + test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS @@ -6957,7 +7097,7 @@ _LT_EOF rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. - if test yes = "$pipe_works"; then + if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= @@ -7010,16 +7150,6 @@ fi - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } @@ -7032,9 +7162,9 @@ fi lt_sysroot= -case $with_sysroot in #( +case ${with_sysroot} in #( yes) - if test yes = "$GCC"; then + if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( @@ -7044,8 +7174,8 @@ case $with_sysroot in #( no|'') ;; #( *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 -$as_echo "$with_sysroot" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 +$as_echo "${with_sysroot}" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac @@ -7062,14 +7192,13 @@ if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi -test no = "$enable_libtool_lock" || enable_libtool_lock=yes +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) - # Find out what ABI is being produced by ac_compile, and set mode - # options accordingly. + # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 @@ -7078,25 +7207,24 @@ ia64-*-hpux*) test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) - HPUX_IA64_MODE=32 + HPUX_IA64_MODE="32" ;; *ELF-64*) - HPUX_IA64_MODE=64 + HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. + # Find out which ABI we are using. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test yes = "$lt_cv_prog_gnu_ld"; then + if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" @@ -7125,50 +7253,9 @@ ia64-*-hpux*) rm -rf conftest* ;; -mips64*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - emul=elf - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - emul="${emul}32" - ;; - *64-bit*) - emul="${emul}64" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *MSB*) - emul="${emul}btsmip" - ;; - *LSB*) - emul="${emul}ltsmip" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *N32*) - emul="${emul}n32" - ;; - esac - LD="${LD-ld} -m $emul" - fi - rm -rf conftest* - ;; - x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. Note that the listed cases only cover the - # situations where additional linker options are needed (such as when - # doing 32-bit compilation for a host where ld defaults to 64-bit, or - # vice versa); the common cases where no linker options are needed do - # not appear in the list. + # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 @@ -7191,10 +7278,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) ;; esac ;; - powerpc64le-*linux*) + powerpc64le-*) LD="${LD-ld} -m elf32lppclinux" ;; - powerpc64-*linux*) + powerpc64-*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) @@ -7213,10 +7300,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; - powerpcle-*linux*) + powerpcle-*) LD="${LD-ld} -m elf64lppc" ;; - powerpc-*linux*) + powerpc-*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) @@ -7234,7 +7321,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS=$CFLAGS + SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } @@ -7274,14 +7361,13 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } - if test yes != "$lt_cv_cc_needs_belf"; then + if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS=$SAVE_CFLAGS + CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. + # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 @@ -7293,7 +7379,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; } case $lt_cv_prog_gnu_ld in yes*) case $host in - i?86-*-solaris*|x86_64-*-solaris*) + i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) @@ -7302,7 +7388,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; } esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD=${LD-ld}_sol2 + LD="${LD-ld}_sol2" fi ;; *) @@ -7318,7 +7404,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; } ;; esac -need_locks=$enable_libtool_lock +need_locks="$enable_libtool_lock" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. @@ -7429,7 +7515,7 @@ else fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } -if test yes != "$lt_cv_path_mainfest_tool"; then +if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi @@ -7932,7 +8018,7 @@ if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no - if test -z "$LT_MULTI_MODULE"; then + if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the @@ -7950,7 +8036,7 @@ else cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. - elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 @@ -7989,7 +8075,7 @@ else fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS + LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 @@ -8018,7 +8104,7 @@ _LT_EOF _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 - elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&5 @@ -8031,32 +8117,32 @@ fi $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac - if test yes = "$lt_cv_apple_cc_single_mod"; then + if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi - if test yes = "$lt_cv_ld_exported_symbols_list"; then - _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi - if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= @@ -8358,14 +8444,14 @@ if test "${enable_static+set}" = set; then : *) enable_static=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done - IFS=$lt_save_ifs + IFS="$lt_save_ifs" ;; esac else @@ -8396,14 +8482,14 @@ if test "${enable_shared+set}" = set; then : *) enable_shared=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done - IFS=$lt_save_ifs + IFS="$lt_save_ifs" ;; esac else @@ -8428,14 +8514,14 @@ if test "${with_pic+set}" = set; then : *) pic_mode=default # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done - IFS=$lt_save_ifs + IFS="$lt_save_ifs" ;; esac else @@ -8443,6 +8529,8 @@ else fi +test -z "$pic_mode" && pic_mode=default + @@ -8458,14 +8546,14 @@ if test "${enable_fast_install+set}" = set; then : *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done - IFS=$lt_save_ifs + IFS="$lt_save_ifs" ;; esac else @@ -8483,7 +8571,7 @@ fi # This can be used to rebuild libtool when needed -LIBTOOL_DEPS=$ltmain +LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' @@ -8532,7 +8620,7 @@ test -z "$LN_S" && LN_S="ln -s" -if test -n "${ZSH_VERSION+set}"; then +if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi @@ -8571,7 +8659,7 @@ aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. - if test set != "${COLLECT_NAMES+set}"; then + if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi @@ -8582,14 +8670,14 @@ esac ofile=libtool can_build_shared=yes -# All known linkers require a '.a' archive for static linking (except MSVC, +# All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a -with_gnu_ld=$lt_cv_prog_gnu_ld +with_gnu_ld="$lt_cv_prog_gnu_ld" -old_CC=$CC -old_CFLAGS=$CFLAGS +old_CC="$CC" +old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc @@ -8621,22 +8709,22 @@ if ${lt_cv_path_MAGIC_CMD+:} false; then : else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/${ac_tool_prefix}file"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : @@ -8659,13 +8747,13 @@ _LT_EOF break fi done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi -MAGIC_CMD=$lt_cv_path_MAGIC_CMD +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } @@ -8687,22 +8775,22 @@ if ${lt_cv_path_MAGIC_CMD+:} false; then : else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/file"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"file" + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : @@ -8725,13 +8813,13 @@ _LT_EOF break fi done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi -MAGIC_CMD=$lt_cv_path_MAGIC_CMD +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } @@ -8752,7 +8840,7 @@ esac # Use C for the default configuration in the libtool script -lt_save_CC=$CC +lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -8814,7 +8902,7 @@ if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= -if test yes = "$GCC"; then +if test "$GCC" = yes; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; @@ -8830,7 +8918,7 @@ else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment + lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins @@ -8860,7 +8948,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } -if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : @@ -8878,18 +8966,17 @@ lt_prog_compiler_pic= lt_prog_compiler_static= - if test yes = "$GCC"; then + if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi - lt_prog_compiler_pic='-fPIC' ;; amigaos*) @@ -8900,8 +8987,8 @@ lt_prog_compiler_static= ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac @@ -8987,7 +9074,7 @@ lt_prog_compiler_static= case $host_os in aix*) lt_prog_compiler_wl='-Wl,' - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else @@ -8995,20 +9082,6 @@ lt_prog_compiler_static= fi ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - case $cc_basename in - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). @@ -9028,7 +9101,7 @@ lt_prog_compiler_static= ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='$wl-a ${wl}archive' + lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) @@ -9039,7 +9112,7 @@ lt_prog_compiler_static= linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in - # old Intel for x86_64, which still supported -KPIC. + # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' @@ -9064,12 +9137,6 @@ lt_prog_compiler_static= lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) @@ -9167,7 +9234,7 @@ lt_prog_compiler_static= ;; sysv4*MP*) - if test -d /usr/nec; then + if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi @@ -9196,7 +9263,7 @@ lt_prog_compiler_static= fi case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: + # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; @@ -9228,7 +9295,7 @@ else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins @@ -9258,7 +9325,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } -if test yes = "$lt_cv_prog_compiler_pic_works"; then +if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; @@ -9290,7 +9357,7 @@ if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no - save_LDFLAGS=$LDFLAGS + save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then @@ -9309,13 +9376,13 @@ else fi fi $RM -r conftest* - LDFLAGS=$save_LDFLAGS + LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } -if test yes = "$lt_cv_prog_compiler_static_works"; then +if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= @@ -9435,8 +9502,8 @@ $as_echo "$lt_cv_prog_compiler_c_o" >&6; } -hard_links=nottested -if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } @@ -9448,9 +9515,9 @@ $as_echo_n "checking if we can lock with hard links... " >&6; } ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } - if test no = "$hard_links"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else @@ -9493,9 +9560,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ' (' and ')$', so one must not match beginning or - # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', - # as well as any symbol that contains 'd'. + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if @@ -9510,7 +9577,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. - if test yes != "$GCC"; then + if test "$GCC" != yes; then with_gnu_ld=no fi ;; @@ -9518,9 +9585,12 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; - openbsd* | bitrig*) + openbsd*) with_gnu_ld=no ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs=no + ;; esac ld_shlibs=yes @@ -9528,7 +9598,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no - if test yes = "$with_gnu_ld"; then + if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility @@ -9550,24 +9620,24 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie esac fi - if test yes = "$lt_use_gnu_ld_interface"; then + if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='$wl' + wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - export_dynamic_flag_spec='$wl--export-dynamic' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no - case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in + case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... @@ -9580,7 +9650,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken - if test ia64 != "$host_cpu"; then + if test "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 @@ -9599,7 +9669,7 @@ _LT_EOF case $host_cpu in powerpc) # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) @@ -9615,7 +9685,7 @@ _LT_EOF allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi @@ -9625,7 +9695,7 @@ _LT_EOF # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='$wl--export-all-symbols' + export_dynamic_flag_spec='${wl}--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes @@ -9633,61 +9703,61 @@ _LT_EOF exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - export_dynamic_flag_spec='$wl-E' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no - if test linux-dietlibc = "$host_os"; then + if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test no = "$tmp_diet" + && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; @@ -9698,44 +9768,42 @@ _LT_EOF lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; - nagfor*) # NAGFOR 5.3 - tmp_sharedflag='-Wl,-shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test yes = "$supports_anon_versioning"; then + if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test yes = "$supports_anon_versioning"; then + if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac @@ -9744,13 +9812,13 @@ _LT_EOF fi ;; - netbsd*) + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; @@ -9768,8 +9836,8 @@ _LT_EOF _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi @@ -9781,7 +9849,7 @@ _LT_EOF ld_shlibs=no cat <<_LT_EOF 1>&2 -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify @@ -9796,9 +9864,9 @@ _LT_EOF # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi @@ -9815,15 +9883,15 @@ _LT_EOF *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac - if test no = "$ld_shlibs"; then + if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= @@ -9839,7 +9907,7 @@ _LT_EOF # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes - if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported @@ -9847,12 +9915,12 @@ _LT_EOF ;; aix[4-9]*) - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' - no_entry_flag= + no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm @@ -9870,7 +9938,7 @@ _LT_EOF # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do - if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi @@ -9893,13 +9961,13 @@ _LT_EOF hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes - file_list_spec='$wl-f,' + file_list_spec='${wl}-f,' - if test yes = "$GCC"; then + if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` + collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then @@ -9918,35 +9986,36 @@ _LT_EOF ;; esac shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag="$shared_flag "'$wl-G' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' fi + link_all_deplibs=no else # not using gcc - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' else - shared_flag='$wl-bM:SRE' + shared_flag='${wl}-bM:SRE' fi fi fi - export_dynamic_flag_spec='$wl-bexpall' + export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes - if test yes = "$aix_use_runtimelinking"; then + if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then + if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : @@ -9981,7 +10050,7 @@ fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=/usr/lib:/lib + lt_cv_aix_libpath_="/usr/lib:/lib" fi fi @@ -9989,17 +10058,17 @@ fi aix_libpath=$lt_cv_aix_libpath_ fi - hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else - if test ia64 = "$host_cpu"; then - hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then + if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : @@ -10034,7 +10103,7 @@ fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=/usr/lib:/lib + lt_cv_aix_libpath_="/usr/lib:/lib" fi fi @@ -10042,21 +10111,21 @@ fi aix_libpath=$lt_cv_aix_libpath_ fi - hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. - no_undefined_flag=' $wl-bernotok' - allow_undefined_flag=' $wl-berok' - if test yes = "$with_gnu_ld"; then + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' + whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $wl-bnoentry $compiler_flags $wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; @@ -10065,7 +10134,7 @@ fi case $host_cpu in powerpc) # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) @@ -10095,17 +10164,16 @@ fi # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll + shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes @@ -10114,18 +10182,18 @@ fi # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' ;; *) # Assume MSVC wrapper @@ -10134,7 +10202,7 @@ fi # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll + shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. @@ -10153,24 +10221,24 @@ fi hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported - if test yes = "$lt_cv_ld_force_load"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + if test "$lt_cv_ld_force_load" = "yes"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes - allow_undefined_flag=$_lt_dar_allow_undefined + allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; + ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac - if test yes = "$_lt_dar_can_shared"; then + if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else ld_shlibs=no @@ -10212,33 +10280,33 @@ fi ;; hpux9*) - if test yes = "$GCC"; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + if test "$GCC" = yes; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi - hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes - export_dynamic_flag_spec='$wl-E' + export_dynamic_flag_spec='${wl}-E' ;; hpux10*) - if test yes,no = "$GCC,$with_gnu_ld"; then - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes - export_dynamic_flag_spec='$wl-E' + export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes @@ -10246,25 +10314,25 @@ fi ;; hpux11*) - if test yes,no = "$GCC,$with_gnu_ld"; then + if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) - archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) - archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) @@ -10276,7 +10344,7 @@ if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no - save_LDFLAGS=$LDFLAGS + save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then @@ -10295,14 +10363,14 @@ else fi fi $RM -r conftest* - LDFLAGS=$save_LDFLAGS + LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } -if test yes = "$lt_cv_prog_compiler__b"; then - archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +if test x"$lt_cv_prog_compiler__b" = xyes; then + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi @@ -10310,8 +10378,8 @@ fi ;; esac fi - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in @@ -10322,7 +10390,7 @@ fi *) hardcode_direct=yes hardcode_direct_absolute=yes - export_dynamic_flag_spec='$wl-E' + export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. @@ -10333,8 +10401,8 @@ fi ;; irix5* | irix6* | nonstopux*) - if test yes = "$GCC"; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + if test "$GCC" = yes; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. @@ -10344,8 +10412,8 @@ $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " > if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } @@ -10357,25 +10425,25 @@ else fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS + LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } - if test yes = "$lt_cv_irix_exported_symbol"; then - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + if test "$lt_cv_irix_exported_symbol" = yes; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; - netbsd*) + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else @@ -10389,7 +10457,7 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; @@ -10397,19 +10465,27 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } *nto* | *qnx*) ;; - openbsd* | bitrig*) + openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - export_dynamic_flag_spec='$wl-E' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' else - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='$wl-rpath,$libdir' + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac fi else ld_shlibs=no @@ -10425,28 +10501,28 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } ;; osf3*) - if test yes = "$GCC"; then - allow_undefined_flag=' $wl-expect_unresolved $wl\*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag - if test yes = "$GCC"; then - allow_undefined_flag=' $wl-expect_unresolved $wl\*' - archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' @@ -10457,24 +10533,24 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } solaris*) no_undefined_flag=' -z defs' - if test yes = "$GCC"; then - wlarc='$wl' - archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' - archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) - wlarc='$wl' - archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + wlarc='${wl}' + archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi @@ -10484,11 +10560,11 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. GCC discards it without '$wl', + # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) - if test yes = "$GCC"; then - whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + if test "$GCC" = yes; then + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi @@ -10498,10 +10574,10 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } ;; sunos4*) - if test sequent = "$host_vendor"; then + if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. - archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi @@ -10550,43 +10626,43 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='$wl-z,text' + no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' - if test yes = "$GCC"; then - archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else - archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not + # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. - no_undefined_flag='$wl-z,text' - allow_undefined_flag='$wl-z,nodefs' + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='$wl-R,$libdir' + hardcode_libdir_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes - export_dynamic_flag_spec='$wl-Bexport' + export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' - if test yes = "$GCC"; then - archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else - archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; @@ -10601,10 +10677,10 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } ;; esac - if test sni = "$host_vendor"; then + if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='$wl-Blargedynsym' + export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi @@ -10612,7 +10688,7 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } -test no = "$ld_shlibs" && can_build_shared=no +test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld @@ -10638,7 +10714,7 @@ x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes - if test yes,yes = "$GCC,$enable_shared"; then + if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. @@ -10853,14 +10929,14 @@ esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } -if test yes = "$GCC"; then +if test "$GCC" = yes; then case $host_os in - darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; - *) lt_awk_arg='/^libraries:/' ;; + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in - mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; - *) lt_sed_strip_eq='s|=/|/|g' ;; + mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in @@ -10876,35 +10952,28 @@ if test yes = "$GCC"; then ;; esac # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary... + # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= - lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - # ...but if some path component already ends with the multilib dir we assume - # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). - case "$lt_multi_os_dir; $lt_search_path_spec " in - "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) - lt_multi_os_dir= - ;; - esac + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" - elif test -n "$lt_multi_os_dir"; then + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS = " "; FS = "/|\n";} { - lt_foo = ""; - lt_count = 0; +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { - lt_foo = "/" $lt_i lt_foo; + lt_foo="/" $lt_i lt_foo; } else { lt_count--; } @@ -10918,7 +10987,7 @@ BEGIN {RS = " "; FS = "/|\n";} { # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's|/\([A-Za-z]:\)|\1|g'` ;; + $SED 's,/\([A-Za-z]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else @@ -10927,7 +10996,7 @@ fi library_names_spec= libname_spec='lib$name' soname_spec= -shrext_cmds=.so +shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= @@ -10947,11 +11016,11 @@ need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='$libname$release$shared_ext$major' + soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) @@ -10959,40 +11028,40 @@ aix[4-9]*) need_lib_prefix=no need_version=no hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # AIX 5 supports IA64 - library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with - # the line '#! .'. This would cause the generated library to - # depend on '.', always an invalid library. This was fixed in + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' - echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. - if test yes = "$aix_use_runtimelinking"; then + if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi @@ -11003,18 +11072,18 @@ amigaos*) powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) - library_names_spec='$libname$shared_ext' + library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; @@ -11022,8 +11091,8 @@ beos*) bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" @@ -11035,7 +11104,7 @@ bsdi[45]*) cygwin* | mingw* | pw32* | cegcc*) version_type=windows - shrext_cmds=.dll + shrext_cmds=".dll" need_version=no need_lib_prefix=no @@ -11044,8 +11113,8 @@ cygwin* | mingw* | pw32* | cegcc*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ @@ -11061,17 +11130,17 @@ cygwin* | mingw* | pw32* | cegcc*) case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' @@ -11080,8 +11149,8 @@ cygwin* | mingw* | pw32* | cegcc*) *,cl*) # Native MSVC libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' case $build_os in mingw*) @@ -11108,7 +11177,7 @@ cygwin* | mingw* | pw32* | cegcc*) sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) - sys_lib_search_path_spec=$LIB + sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` @@ -11121,8 +11190,8 @@ cygwin* | mingw* | pw32* | cegcc*) esac # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' @@ -11135,7 +11204,7 @@ cygwin* | mingw* | pw32* | cegcc*) *) # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac @@ -11148,8 +11217,8 @@ darwin* | rhapsody*) version_type=darwin need_lib_prefix=no need_version=no - library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' - soname_spec='$libname$release$major$shared_ext' + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' @@ -11162,8 +11231,8 @@ dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; @@ -11181,12 +11250,12 @@ freebsd* | dragonfly*) version_type=freebsd-$objformat case $version_type in freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac @@ -11216,10 +11285,10 @@ haiku*) need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=no + shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; @@ -11237,9 +11306,9 @@ hpux9* | hpux10* | hpux11*) dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - if test 32 = "$HPUX_IA64_MODE"; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" @@ -11252,8 +11321,8 @@ hpux9* | hpux10* | hpux11*) dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; @@ -11262,8 +11331,8 @@ hpux9* | hpux10* | hpux11*) dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... @@ -11276,8 +11345,8 @@ interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no @@ -11288,7 +11357,7 @@ irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) - if test yes = "$lt_cv_prog_gnu_ld"; then + if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix @@ -11296,8 +11365,8 @@ irix5* | irix6* | nonstopux*) esac need_lib_prefix=no need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= @@ -11316,8 +11385,8 @@ irix5* | irix6* | nonstopux*) esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" - sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; @@ -11326,33 +11395,13 @@ linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - hardcode_libdir_flag_spec='-L$libdir' - ;; - # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no @@ -11411,17 +11460,29 @@ fi dynamic_linker='GNU/Linux ld.so' ;; +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH @@ -11431,7 +11492,7 @@ netbsd*) newsos6) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; @@ -11440,34 +11501,45 @@ newsos6) version_type=qnx need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; -openbsd* | bitrig*) +openbsd*) version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib + sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi ;; os2*) libname_spec='$name' - shrext_cmds=.dll + shrext_cmds=".dll" need_lib_prefix=no - library_names_spec='$libname$shared_ext $libname.a' + library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; @@ -11476,11 +11548,11 @@ osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) @@ -11491,8 +11563,8 @@ solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes @@ -11502,11 +11574,11 @@ solaris*) sunos4*) version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes - if test yes = "$with_gnu_ld"; then + if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes @@ -11514,8 +11586,8 @@ sunos4*) sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) @@ -11536,10 +11608,10 @@ sysv4 | sysv4.3*) ;; sysv4*MP*) - if test -d /usr/nec; then + if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; @@ -11548,12 +11620,12 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes - if test yes = "$with_gnu_ld"; then + if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' @@ -11571,7 +11643,7 @@ tpf*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes @@ -11579,8 +11651,8 @@ tpf*) uts4*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; @@ -11590,18 +11662,18 @@ uts4*) esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } -test no = "$dynamic_linker" && can_build_shared=no +test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then +if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi -if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi @@ -11700,15 +11772,15 @@ $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || - test yes = "$hardcode_automatic"; then + test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. - if test no != "$hardcode_direct" && + if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one - ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && - test no != "$hardcode_minus_L"; then + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else @@ -11723,12 +11795,12 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } -if test relink = "$hardcode_action" || - test yes = "$inherit_rpath"; then +if test "$hardcode_action" = relink || + test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi @@ -11738,7 +11810,7 @@ fi - if test yes != "$enable_dlopen"; then + if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown @@ -11748,23 +11820,23 @@ else case $host_os in beos*) - lt_cv_dlopen=load_add_on + lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) - lt_cv_dlopen=LoadLibrary + lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) - lt_cv_dlopen=dlopen + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) - # if libdl is installed we need to link against it + # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : @@ -11802,10 +11874,10 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else - lt_cv_dlopen=dyld + lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes @@ -11813,18 +11885,10 @@ fi ;; - tpf*) - # Don't try to run any link tests for TPF. We know it's impossible - # because TPF is a cross-compiler, and we know how we open DSOs. - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - lt_cv_dlopen_self=no - ;; - *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen=shl_load + lt_cv_dlopen="shl_load" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } @@ -11863,11 +11927,11 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen=dlopen + lt_cv_dlopen="dlopen" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } @@ -11906,7 +11970,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } @@ -11945,7 +12009,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } @@ -11984,7 +12048,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi @@ -12005,21 +12069,21 @@ fi ;; esac - if test no = "$lt_cv_dlopen"; then - enable_dlopen=no - else + if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes + else + enable_dlopen=no fi case $lt_cv_dlopen in dlopen) - save_CPPFLAGS=$CPPFLAGS - test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - save_LDFLAGS=$LDFLAGS + save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - save_LIBS=$LIBS + save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 @@ -12027,7 +12091,7 @@ $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else - if test yes = "$cross_compiling"; then : + if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 @@ -12076,7 +12140,7 @@ else /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif @@ -12106,7 +12170,7 @@ _LT_EOF (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in @@ -12126,14 +12190,14 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } - if test yes = "$lt_cv_dlopen_self"; then + if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else - if test yes = "$cross_compiling"; then : + if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 @@ -12182,7 +12246,7 @@ else /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif @@ -12212,7 +12276,7 @@ _LT_EOF (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in @@ -12233,9 +12297,9 @@ fi $as_echo "$lt_cv_dlopen_self_static" >&6; } fi - CPPFLAGS=$save_CPPFLAGS - LDFLAGS=$save_LDFLAGS - LIBS=$save_LIBS + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" ;; esac @@ -12279,7 +12343,7 @@ else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) - if test -n "$STRIP"; then + if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 @@ -12307,7 +12371,7 @@ fi - # Report what library types will actually be built + # Report which library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 @@ -12315,13 +12379,13 @@ $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } - test no = "$can_build_shared" && enable_shared=no + test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) - test yes = "$enable_shared" && enable_static=no + test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' @@ -12329,8 +12393,8 @@ $as_echo_n "checking whether to build shared libraries... " >&6; } ;; aix[4-9]*) - if test ia64 != "$host_cpu" && test no = "$aix_use_runtimelinking"; then - test yes = "$enable_shared" && enable_static=no + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no fi ;; esac @@ -12340,7 +12404,7 @@ $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes + test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } @@ -12354,7 +12418,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -CC=$lt_save_CC +CC="$lt_save_CC" @@ -13496,15 +13560,15 @@ fi func_stripname_cnf () { - case $2 in - .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;; - *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;; + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf - if test -n "$CXX" && ( test no != "$CXX" && - ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || - (test g++ != "$CXX"))); then + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -13683,7 +13747,7 @@ objext_CXX=$objext # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_caught_CXX_error"; then +if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" @@ -13758,32 +13822,32 @@ cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately - if test yes = "$GXX"; then + if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi - if test yes = "$GXX"; then + if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld -if test yes = "$GCC"; then +if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) - # gcc leaves a trailing carriage return, which upsets mingw + # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; @@ -13797,7 +13861,7 @@ $as_echo_n "checking for ld used by $CC... " >&6; } while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done - test -z "$LD" && LD=$ac_prog + test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. @@ -13808,7 +13872,7 @@ $as_echo_n "checking for ld used by $CC... " >&6; } with_gnu_ld=unknown ;; esac -elif test yes = "$with_gnu_ld"; then +elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else @@ -13819,32 +13883,32 @@ if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD=$ac_dir/$ac_prog + lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } @@ -13880,22 +13944,22 @@ with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. - if test yes = "$with_gnu_ld"; then - archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) - wlarc='$wl' + wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi @@ -13932,12 +13996,12 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie ld_shlibs_CXX=no ;; aix[4-9]*) - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' - no_entry_flag= + no_entry_flag="" else aix_use_runtimelinking=no @@ -13971,13 +14035,13 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes - file_list_spec_CXX='$wl-f,' + file_list_spec_CXX='${wl}-f,' - if test yes = "$GXX"; then + if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` + collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then @@ -13995,36 +14059,36 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie fi esac shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag=$shared_flag' $wl-G' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' else - shared_flag='$wl-bM:SRE' + shared_flag='${wl}-bM:SRE' fi fi fi - export_dynamic_flag_spec_CXX='$wl-bexpall' + export_dynamic_flag_spec_CXX='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes - if test yes = "$aix_use_runtimelinking"; then + if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty # executable. - if test set = "${lt_cv_aix_libpath+set}"; then + if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : @@ -14059,7 +14123,7 @@ fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=/usr/lib:/lib + lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi @@ -14067,18 +14131,18 @@ fi aix_libpath=$lt_cv_aix_libpath__CXX fi - hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else - if test ia64 = "$host_cpu"; then - hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then + if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : @@ -14113,7 +14177,7 @@ fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=/usr/lib:/lib + lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi @@ -14121,14 +14185,14 @@ fi aix_libpath=$lt_cv_aix_libpath__CXX fi - hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. - no_undefined_flag_CXX=' $wl-bernotok' - allow_undefined_flag_CXX=' $wl-berok' - if test yes = "$with_gnu_ld"; then + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' @@ -14136,7 +14200,7 @@ fi archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared # libraries. - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $wl-bnoentry $compiler_flags $wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; @@ -14146,7 +14210,7 @@ fi allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME - archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi @@ -14174,58 +14238,57 @@ fi # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll + shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. - archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' + archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' - export_dynamic_flag_spec_CXX='$wl--export-all-symbols' + export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi @@ -14239,27 +14302,27 @@ fi hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported - if test yes = "$lt_cv_ld_force_load"; then - whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + if test "$lt_cv_ld_force_load" = "yes"; then + whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes - allow_undefined_flag_CXX=$_lt_dar_allow_undefined + allow_undefined_flag_CXX="$_lt_dar_allow_undefined" case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; + ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac - if test yes = "$_lt_dar_can_shared"; then + if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all - archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" - module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" - if test yes != "$lt_cv_apple_cc_single_mod"; then - archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" - archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + if test "$lt_cv_apple_cc_single_mod" != "yes"; then + archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi else @@ -14303,14 +14366,14 @@ fi ;; haiku*) - archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes ;; hpux9*) - hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: - export_dynamic_flag_spec_CXX='$wl-E' + export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default @@ -14322,7 +14385,7 @@ fi ld_shlibs_CXX=no ;; aCC*) - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. @@ -14331,11 +14394,11 @@ fi # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) - if test yes = "$GXX"; then - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + if test "$GXX" = yes; then + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no @@ -14345,15 +14408,15 @@ fi ;; hpux10*|hpux11*) - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' + if test $with_gnu_ld = no; then + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) - export_dynamic_flag_spec_CXX='$wl-E' + export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi @@ -14379,13 +14442,13 @@ fi aCC*) case $host_cpu in hppa*64*) - archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) - archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) - archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists @@ -14396,20 +14459,20 @@ fi # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; then + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi @@ -14424,22 +14487,22 @@ fi interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - export_dynamic_flag_spec_CXX='$wl-E' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ - archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is @@ -14448,17 +14511,17 @@ fi old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; @@ -14471,8 +14534,8 @@ fi # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. @@ -14481,10 +14544,10 @@ fi # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. @@ -14498,59 +14561,59 @@ fi # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac - archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac - hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' @@ -14564,18 +14627,18 @@ fi # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - if test yes = "$supports_anon_versioning"; then + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) @@ -14583,10 +14646,10 @@ fi *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' - whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on @@ -14644,17 +14707,22 @@ fi ld_shlibs_CXX=yes ;; - openbsd* | bitrig*) + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + + openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' - export_dynamic_flag_spec_CXX='$wl-E' - whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else @@ -14670,9 +14738,9 @@ fi # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using @@ -14690,17 +14758,17 @@ fi cxx*) case $host in osf3*) - allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' - archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' - archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ - $RM $lib.exp' + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac @@ -14715,21 +14783,21 @@ fi # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) - if test yes,no = "$GXX,$with_gnu_ld"; then - allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) - archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists @@ -14775,9 +14843,9 @@ fi # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no @@ -14785,7 +14853,7 @@ fi solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. + # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; @@ -14802,30 +14870,30 @@ fi ;; gcx*) # Green Hills C++ Compiler - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker - if test yes,no = "$GXX,$with_gnu_ld"; then - no_undefined_flag_CXX=' $wl-z ${wl}defs' + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else - # g++ 2.7 appears to require '-G' NOT '-shared' on this + # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. - archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when @@ -14833,11 +14901,11 @@ fi output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi - hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) - whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi @@ -14846,52 +14914,52 @@ fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag_CXX='$wl-z,text' + no_undefined_flag_CXX='${wl}-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) - archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) - archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not + # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. - no_undefined_flag_CXX='$wl-z,text' - allow_undefined_flag_CXX='$wl-z,nodefs' + no_undefined_flag_CXX='${wl}-z,text' + allow_undefined_flag_CXX='${wl}-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' + hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes - export_dynamic_flag_spec_CXX='$wl-Bexport' + export_dynamic_flag_spec_CXX='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) - archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ - '"$old_archive_cmds_CXX" + '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ - '"$reload_cmds_CXX" + '"$reload_cmds_CXX" ;; *) - archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; @@ -14923,10 +14991,10 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } - test no = "$ld_shlibs_CXX" && can_build_shared=no + test "$ld_shlibs_CXX" = no && can_build_shared=no - GCC_CXX=$GXX - LD_CXX=$LD + GCC_CXX="$GXX" + LD_CXX="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change @@ -14970,13 +15038,13 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do - case $prev$p in + case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. - if test x-L = "$p" || - test x-R = "$p"; then + if test $p = "-L" || + test $p = "-R"; then prev=$p continue fi @@ -14992,16 +15060,16 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac - if test no = "$pre_test_object_deps_done"; then - case $prev in + if test "$pre_test_object_deps_done" = no; then + case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then - compiler_lib_search_path_CXX=$prev$p + compiler_lib_search_path_CXX="${prev}${p}" else - compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being @@ -15009,9 +15077,9 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 esac else if test -z "$postdeps_CXX"; then - postdeps_CXX=$prev$p + postdeps_CXX="${prev}${p}" else - postdeps_CXX="${postdeps_CXX} $prev$p" + postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi prev= @@ -15026,15 +15094,15 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 continue fi - if test no = "$pre_test_object_deps_done"; then + if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then - predep_objects_CXX=$p + predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then - postdep_objects_CXX=$p + postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi @@ -15080,7 +15148,7 @@ linux*) ;; esac - if test yes != "$solaris_use_stlport4"; then + if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; @@ -15103,7 +15171,7 @@ solaris*) # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. - if test yes != "$solaris_use_stlport4"; then + if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; @@ -15117,7 +15185,7 @@ case " $postdeps_CXX " in esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then - compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` + compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi @@ -15156,18 +15224,17 @@ lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. - if test yes = "$GXX"; then + if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi - lt_prog_compiler_pic_CXX='-fPIC' ;; amigaos*) @@ -15178,8 +15245,8 @@ lt_prog_compiler_static_CXX= ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac @@ -15243,7 +15310,7 @@ lt_prog_compiler_static_CXX= case $host_os in aix[4-9]*) # All AIX code is PIC. - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else @@ -15283,14 +15350,14 @@ lt_prog_compiler_static_CXX= case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='$wl-a ${wl}archive' - if test ia64 != "$host_cpu"; then + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='$wl-a ${wl}archive' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default @@ -15327,7 +15394,7 @@ lt_prog_compiler_static_CXX= lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) - # old Intel C++ for x86_64, which still supported -KPIC. + # old Intel C++ for x86_64 which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' @@ -15383,7 +15450,7 @@ lt_prog_compiler_static_CXX= ;; esac ;; - netbsd*) + netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise @@ -15472,7 +15539,7 @@ lt_prog_compiler_static_CXX= fi case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: + # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; @@ -15504,7 +15571,7 @@ else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins @@ -15534,7 +15601,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } -if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then +if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; @@ -15560,7 +15627,7 @@ if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no - save_LDFLAGS=$LDFLAGS + save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then @@ -15579,13 +15646,13 @@ else fi fi $RM -r conftest* - LDFLAGS=$save_LDFLAGS + LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } -if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then +if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : else lt_prog_compiler_static_CXX= @@ -15699,8 +15766,8 @@ $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } -hard_links=nottested -if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } @@ -15712,9 +15779,9 @@ $as_echo_n "checking if we can lock with hard links... " >&6; } ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } - if test no = "$hard_links"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else @@ -15741,7 +15808,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie fi ;; pw32*) - export_symbols_cmds_CXX=$ltdll_cmds + export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in @@ -15754,6 +15821,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie ;; esac ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs_CXX=no + ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; @@ -15761,7 +15831,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } -test no = "$ld_shlibs_CXX" && can_build_shared=no +test "$ld_shlibs_CXX" = no && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld @@ -15778,7 +15848,7 @@ x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes - if test yes,yes = "$GCC,$enable_shared"; then + if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. @@ -15906,7 +15976,7 @@ $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= -shrext_cmds=.so +shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= @@ -15926,11 +15996,11 @@ need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='$libname$release$shared_ext$major' + soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) @@ -15938,40 +16008,40 @@ aix[4-9]*) need_lib_prefix=no need_version=no hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # AIX 5 supports IA64 - library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with - # the line '#! .'. This would cause the generated library to - # depend on '.', always an invalid library. This was fixed in + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' - echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. - if test yes = "$aix_use_runtimelinking"; then + if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi @@ -15982,18 +16052,18 @@ amigaos*) powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) - library_names_spec='$libname$shared_ext' + library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; @@ -16001,8 +16071,8 @@ beos*) bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" @@ -16014,7 +16084,7 @@ bsdi[45]*) cygwin* | mingw* | pw32* | cegcc*) version_type=windows - shrext_cmds=.dll + shrext_cmds=".dll" need_version=no need_lib_prefix=no @@ -16023,8 +16093,8 @@ cygwin* | mingw* | pw32* | cegcc*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ @@ -16040,16 +16110,16 @@ cygwin* | mingw* | pw32* | cegcc*) case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' @@ -16058,8 +16128,8 @@ cygwin* | mingw* | pw32* | cegcc*) *,cl*) # Native MSVC libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' case $build_os in mingw*) @@ -16086,7 +16156,7 @@ cygwin* | mingw* | pw32* | cegcc*) sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) - sys_lib_search_path_spec=$LIB + sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` @@ -16099,8 +16169,8 @@ cygwin* | mingw* | pw32* | cegcc*) esac # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' @@ -16113,7 +16183,7 @@ cygwin* | mingw* | pw32* | cegcc*) *) # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac @@ -16126,8 +16196,8 @@ darwin* | rhapsody*) version_type=darwin need_lib_prefix=no need_version=no - library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' - soname_spec='$libname$release$major$shared_ext' + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' @@ -16139,8 +16209,8 @@ dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; @@ -16158,12 +16228,12 @@ freebsd* | dragonfly*) version_type=freebsd-$objformat case $version_type in freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac @@ -16193,10 +16263,10 @@ haiku*) need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=no + shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; @@ -16214,9 +16284,9 @@ hpux9* | hpux10* | hpux11*) dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - if test 32 = "$HPUX_IA64_MODE"; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" @@ -16229,8 +16299,8 @@ hpux9* | hpux10* | hpux11*) dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; @@ -16239,8 +16309,8 @@ hpux9* | hpux10* | hpux11*) dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... @@ -16253,8 +16323,8 @@ interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no @@ -16265,7 +16335,7 @@ irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) - if test yes = "$lt_cv_prog_gnu_ld"; then + if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix @@ -16273,8 +16343,8 @@ irix5* | irix6* | nonstopux*) esac need_lib_prefix=no need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= @@ -16293,8 +16363,8 @@ irix5* | irix6* | nonstopux*) esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" - sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; @@ -16303,33 +16373,13 @@ linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - hardcode_libdir_flag_spec_CXX='-L$libdir' - ;; - # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no @@ -16388,17 +16438,29 @@ fi dynamic_linker='GNU/Linux ld.so' ;; +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH @@ -16408,7 +16470,7 @@ netbsd*) newsos6) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; @@ -16417,34 +16479,45 @@ newsos6) version_type=qnx need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; -openbsd* | bitrig*) +openbsd*) version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib + sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi ;; os2*) libname_spec='$name' - shrext_cmds=.dll + shrext_cmds=".dll" need_lib_prefix=no - library_names_spec='$libname$shared_ext $libname.a' + library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; @@ -16453,11 +16526,11 @@ osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) @@ -16468,8 +16541,8 @@ solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes @@ -16479,11 +16552,11 @@ solaris*) sunos4*) version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes - if test yes = "$with_gnu_ld"; then + if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes @@ -16491,8 +16564,8 @@ sunos4*) sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) @@ -16513,10 +16586,10 @@ sysv4 | sysv4.3*) ;; sysv4*MP*) - if test -d /usr/nec; then + if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; @@ -16525,12 +16598,12 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes - if test yes = "$with_gnu_ld"; then + if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' @@ -16548,7 +16621,7 @@ tpf*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes @@ -16556,8 +16629,8 @@ tpf*) uts4*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; @@ -16567,18 +16640,18 @@ uts4*) esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } -test no = "$dynamic_linker" && can_build_shared=no +test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then +if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi -if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi @@ -16623,15 +16696,15 @@ $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || - test yes = "$hardcode_automatic_CXX"; then + test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existent directories. - if test no != "$hardcode_direct_CXX" && + if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one - ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && - test no != "$hardcode_minus_L_CXX"; then + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else @@ -16646,12 +16719,12 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } -if test relink = "$hardcode_action_CXX" || - test yes = "$inherit_rpath_CXX"; then +if test "$hardcode_action_CXX" = relink || + test "$inherit_rpath_CXX" = yes; then # Fast installation is not supported enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi @@ -16674,7 +16747,7 @@ fi lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test yes != "$_lt_caught_CXX_error" +fi # test "$_lt_caught_CXX_error" != yes ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -16811,10 +16884,10 @@ GIT=${GIT-"${am_missing_run}git"} -HB_VERSION_MAJOR=0 -HB_VERSION_MINOR=9 -HB_VERSION_MICRO=40 -HB_VERSION=0.9.40 +HB_VERSION_MAJOR=1 +HB_VERSION_MINOR=2 +HB_VERSION_MICRO=7 +HB_VERSION=1.2.7 @@ -16825,7 +16898,7 @@ HB_VERSION=0.9.40 -HB_LIBTOOL_VERSION_INFO=940:0:940 +HB_LIBTOOL_VERSION_INFO=10200:7:10200 # Documentation @@ -17780,6 +17853,8 @@ else fi have_glib=false +GLIB_DEPS="glib-2.0 >= 2.16" + if test "x$with_glib" = "xyes" -o "x$with_glib" = "xauto"; then pkg_failed=no @@ -17791,12 +17866,12 @@ if test -n "$PKG_CONFIG"; then pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS" else if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.16\""; } >&5 - ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.16") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$GLIB_DEPS\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$GLIB_DEPS") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.16" 2>/dev/null` + pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "$GLIB_DEPS" 2>/dev/null` else pkg_failed=yes fi @@ -17809,12 +17884,12 @@ if test -n "$PKG_CONFIG"; then pkg_cv_GLIB_LIBS="$GLIB_LIBS" else if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.16\""; } >&5 - ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.16") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$GLIB_DEPS\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$GLIB_DEPS") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.16" 2>/dev/null` + pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "$GLIB_DEPS" 2>/dev/null` else pkg_failed=yes fi @@ -17833,9 +17908,9 @@ else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "glib-2.0 >= 2.16"` + GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$GLIB_DEPS"` else - GLIB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "glib-2.0 >= 2.16"` + GLIB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$GLIB_DEPS"` fi # Put the nasty error message in config.log where it belongs echo "$GLIB_PKG_ERRORS" >&5 @@ -18088,25 +18163,6 @@ fi -have_ucdn=true -if $have_glib; then - have_ucdn=false -fi -if $have_ucdn; then - -$as_echo "#define HAVE_UCDN 1" >>confdefs.h - -fi - if $have_ucdn; then - HAVE_UCDN_TRUE= - HAVE_UCDN_FALSE='#' -else - HAVE_UCDN_TRUE='#' - HAVE_UCDN_FALSE= -fi - - - # Check whether --with-cairo was given. if test "${with_cairo+set}" = set; then : @@ -18296,6 +18352,106 @@ fi +# Check whether --with-fontconfig was given. +if test "${with_fontconfig+set}" = set; then : + withval=$with_fontconfig; +else + with_fontconfig=auto +fi + +have_fontconfig=false +if test "x$with_fontconfig" = "xyes" -o "x$with_fontconfig" = "xauto"; then + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FONTCONFIG" >&5 +$as_echo_n "checking for FONTCONFIG... " >&6; } + +if test -n "$PKG_CONFIG"; then + if test -n "$FONTCONFIG_CFLAGS"; then + pkg_cv_FONTCONFIG_CFLAGS="$FONTCONFIG_CFLAGS" + else + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fontconfig\""; } >&5 + ($PKG_CONFIG --exists --print-errors "fontconfig") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_FONTCONFIG_CFLAGS=`$PKG_CONFIG --cflags "fontconfig" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi +if test -n "$PKG_CONFIG"; then + if test -n "$FONTCONFIG_LIBS"; then + pkg_cv_FONTCONFIG_LIBS="$FONTCONFIG_LIBS" + else + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fontconfig\""; } >&5 + ($PKG_CONFIG --exists --print-errors "fontconfig") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_FONTCONFIG_LIBS=`$PKG_CONFIG --libs "fontconfig" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + FONTCONFIG_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "fontconfig"` + else + FONTCONFIG_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "fontconfig"` + fi + # Put the nasty error message in config.log where it belongs + echo "$FONTCONFIG_PKG_ERRORS" >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + : +elif test $pkg_failed = untried; then + : +else + FONTCONFIG_CFLAGS=$pkg_cv_FONTCONFIG_CFLAGS + FONTCONFIG_LIBS=$pkg_cv_FONTCONFIG_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + have_fontconfig=true +fi +fi +if test "x$with_fontconfig" = "xyes" -a "x$have_fontconfig" != "xtrue"; then + as_fn_error $? "fontconfig support requested but not found" "$LINENO" 5 +fi +if $have_fontconfig; then + +$as_echo "#define HAVE_FONTCONFIG 1" >>confdefs.h + +fi + if $have_fontconfig; then + HAVE_FONTCONFIG_TRUE= + HAVE_FONTCONFIG_FALSE='#' +else + HAVE_FONTCONFIG_TRUE='#' + HAVE_FONTCONFIG_FALSE= +fi + + + + # Check whether --with-icu was given. if test "${with_icu+set}" = set; then : withval=$with_icu; @@ -18304,7 +18460,7 @@ else fi have_icu=false -if test "x$with_icu" = "xyes" -o "x$with_icu" = "xauto"; then +if test "x$with_icu" = "xyes" -o "x$with_icu" = "xbuiltin" -o "x$with_icu" = "xauto"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ICU" >&5 @@ -18489,14 +18645,20 @@ $as_echo "no" >&6; } fi fi fi -if test "x$with_icu" = "xyes" -a "x$have_icu" != "xtrue"; then +if test \( "x$with_icu" = "xyes" -o "x$with_icu" = "xbuiltin" \) -a "x$have_icu" != "xtrue"; then as_fn_error $? "icu support requested but icu-uc not found" "$LINENO" 5 fi + if $have_icu; then CXXFLAGS="$CXXFLAGS `$PKG_CONFIG --variable=CXXFLAGS icu-uc`" $as_echo "#define HAVE_ICU 1" >>confdefs.h + if test "x$with_icu" = "xbuiltin"; then + +$as_echo "#define HAVE_ICU_BUILTIN 1" >>confdefs.h + + fi fi if $have_icu; then HAVE_ICU_TRUE= @@ -18506,6 +18668,33 @@ else HAVE_ICU_FALSE= fi + if $have_icu && test "x$with_icu" = "xbuiltin"; then + HAVE_ICU_BUILTIN_TRUE= + HAVE_ICU_BUILTIN_FALSE='#' +else + HAVE_ICU_BUILTIN_TRUE='#' + HAVE_ICU_BUILTIN_FALSE= +fi + + + +have_ucdn=true +if $have_glib || $have_icu && test "x$with_icu" = "xbuiltin"; then + have_ucdn=false +fi +if $have_ucdn; then + +$as_echo "#define HAVE_UCDN 1" >>confdefs.h + +fi + if $have_ucdn; then + HAVE_UCDN_TRUE= + HAVE_UCDN_FALSE='#' +else + HAVE_UCDN_TRUE='#' + HAVE_UCDN_FALSE= +fi + @@ -18517,6 +18706,8 @@ else fi have_graphite2=false +GRAPHITE2_DEPS="graphite2" + if test "x$with_graphite2" = "xyes" -o "x$with_graphite2" = "xauto"; then pkg_failed=no @@ -18528,12 +18719,12 @@ if test -n "$PKG_CONFIG"; then pkg_cv_GRAPHITE2_CFLAGS="$GRAPHITE2_CFLAGS" else if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"graphite2\""; } >&5 - ($PKG_CONFIG --exists --print-errors "graphite2") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$GRAPHITE2_DEPS\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$GRAPHITE2_DEPS") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_GRAPHITE2_CFLAGS=`$PKG_CONFIG --cflags "graphite2" 2>/dev/null` + pkg_cv_GRAPHITE2_CFLAGS=`$PKG_CONFIG --cflags "$GRAPHITE2_DEPS" 2>/dev/null` else pkg_failed=yes fi @@ -18546,12 +18737,12 @@ if test -n "$PKG_CONFIG"; then pkg_cv_GRAPHITE2_LIBS="$GRAPHITE2_LIBS" else if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"graphite2\""; } >&5 - ($PKG_CONFIG --exists --print-errors "graphite2") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$GRAPHITE2_DEPS\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$GRAPHITE2_DEPS") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_GRAPHITE2_LIBS=`$PKG_CONFIG --libs "graphite2" 2>/dev/null` + pkg_cv_GRAPHITE2_LIBS=`$PKG_CONFIG --libs "$GRAPHITE2_DEPS" 2>/dev/null` else pkg_failed=yes fi @@ -18570,9 +18761,9 @@ else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GRAPHITE2_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "graphite2"` + GRAPHITE2_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$GRAPHITE2_DEPS"` else - GRAPHITE2_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "graphite2"` + GRAPHITE2_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$GRAPHITE2_DEPS"` fi # Put the nasty error message in config.log where it belongs echo "$GRAPHITE2_PKG_ERRORS" >&5 @@ -18617,6 +18808,8 @@ else fi have_freetype=false +FREETYPE_DEPS="freetype2 >= 12.0.6" + if test "x$with_freetype" = "xyes" -o "x$with_freetype" = "xauto"; then # See freetype/docs/VERSION.DLL; 12.0.6 means freetype-2.4.2 @@ -18629,12 +18822,12 @@ if test -n "$PKG_CONFIG"; then pkg_cv_FREETYPE_CFLAGS="$FREETYPE_CFLAGS" else if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"freetype2 >= 12.0.6\""; } >&5 - ($PKG_CONFIG --exists --print-errors "freetype2 >= 12.0.6") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$FREETYPE_DEPS\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$FREETYPE_DEPS") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_FREETYPE_CFLAGS=`$PKG_CONFIG --cflags "freetype2 >= 12.0.6" 2>/dev/null` + pkg_cv_FREETYPE_CFLAGS=`$PKG_CONFIG --cflags "$FREETYPE_DEPS" 2>/dev/null` else pkg_failed=yes fi @@ -18647,12 +18840,12 @@ if test -n "$PKG_CONFIG"; then pkg_cv_FREETYPE_LIBS="$FREETYPE_LIBS" else if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"freetype2 >= 12.0.6\""; } >&5 - ($PKG_CONFIG --exists --print-errors "freetype2 >= 12.0.6") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$FREETYPE_DEPS\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$FREETYPE_DEPS") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_FREETYPE_LIBS=`$PKG_CONFIG --libs "freetype2 >= 12.0.6" 2>/dev/null` + pkg_cv_FREETYPE_LIBS=`$PKG_CONFIG --libs "$FREETYPE_DEPS" 2>/dev/null` else pkg_failed=yes fi @@ -18671,9 +18864,9 @@ else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - FREETYPE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "freetype2 >= 12.0.6"` + FREETYPE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$FREETYPE_DEPS"` else - FREETYPE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "freetype2 >= 12.0.6"` + FREETYPE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$FREETYPE_DEPS"` fi # Put the nasty error message in config.log where it belongs echo "$FREETYPE_PKG_ERRORS" >&5 @@ -18756,6 +18949,64 @@ fi +# Check whether --with-directwrite was given. +if test "${with_directwrite+set}" = set; then : + withval=$with_directwrite; +else + with_directwrite=no +fi + +have_directwrite=false +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +if test "x$with_directwrite" = "xyes" -o "x$with_directwrite" = "xauto"; then + +for ac_header in dwrite.h +do : + ac_fn_cxx_check_header_mongrel "$LINENO" "dwrite.h" "ac_cv_header_dwrite_h" "$ac_includes_default" +if test "x$ac_cv_header_dwrite_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DWRITE_H 1 +_ACEOF + have_directwrite=true +fi + +done + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test "x$with_directwrite" = "xyes" -a "x$have_directwrite" != "xtrue"; then + as_fn_error $? "directwrite support requested but not found" "$LINENO" 5 +fi +if $have_directwrite; then + DIRECTWRITE_CXXFLAGS= + DIRECTWRITE_LIBS="-ldwrite" + + + +$as_echo "#define HAVE_DIRECTWRITE 1" >>confdefs.h + +fi + if $have_directwrite; then + HAVE_DIRECTWRITE_TRUE= + HAVE_DIRECTWRITE_FALSE='#' +else + HAVE_DIRECTWRITE_TRUE='#' + HAVE_DIRECTWRITE_FALSE= +fi + + + + # Check whether --with-coretext was given. if test "${with_coretext+set}" = set; then : withval=$with_coretext; @@ -18969,7 +19220,7 @@ fi fi -ac_config_files="$ac_config_files Makefile src/Makefile src/hb-version.h src/hb-ucdn/Makefile util/Makefile test/Makefile test/api/Makefile test/shaping/Makefile docs/Makefile docs/reference/Makefile docs/reference/version.xml" +ac_config_files="$ac_config_files Makefile src/Makefile src/hb-version.h src/hb-ucdn/Makefile util/Makefile test/Makefile test/api/Makefile test/fuzzing/Makefile test/shaping/Makefile docs/Makefile docs/version.xml win32/Makefile win32/config.h.win32" cat >confcache <<\_ACEOF @@ -19177,10 +19428,6 @@ if test -z "${HAVE_INTROSPECTION_TRUE}" && test -z "${HAVE_INTROSPECTION_FALSE}" as_fn_error $? "conditional \"HAVE_INTROSPECTION\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${HAVE_UCDN_TRUE}" && test -z "${HAVE_UCDN_FALSE}"; then - as_fn_error $? "conditional \"HAVE_UCDN\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi if test -z "${HAVE_CAIRO_TRUE}" && test -z "${HAVE_CAIRO_FALSE}"; then as_fn_error $? "conditional \"HAVE_CAIRO\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -19189,10 +19436,22 @@ if test -z "${HAVE_CAIRO_FT_TRUE}" && test -z "${HAVE_CAIRO_FT_FALSE}"; then as_fn_error $? "conditional \"HAVE_CAIRO_FT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${HAVE_FONTCONFIG_TRUE}" && test -z "${HAVE_FONTCONFIG_FALSE}"; then + as_fn_error $? "conditional \"HAVE_FONTCONFIG\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${HAVE_ICU_TRUE}" && test -z "${HAVE_ICU_FALSE}"; then as_fn_error $? "conditional \"HAVE_ICU\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${HAVE_ICU_BUILTIN_TRUE}" && test -z "${HAVE_ICU_BUILTIN_FALSE}"; then + as_fn_error $? "conditional \"HAVE_ICU_BUILTIN\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_UCDN_TRUE}" && test -z "${HAVE_UCDN_FALSE}"; then + as_fn_error $? "conditional \"HAVE_UCDN\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${HAVE_GRAPHITE2_TRUE}" && test -z "${HAVE_GRAPHITE2_FALSE}"; then as_fn_error $? "conditional \"HAVE_GRAPHITE2\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -19205,6 +19464,10 @@ if test -z "${HAVE_UNISCRIBE_TRUE}" && test -z "${HAVE_UNISCRIBE_FALSE}"; then as_fn_error $? "conditional \"HAVE_UNISCRIBE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${HAVE_DIRECTWRITE_TRUE}" && test -z "${HAVE_DIRECTWRITE_FALSE}"; then + as_fn_error $? "conditional \"HAVE_DIRECTWRITE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${HAVE_CORETEXT_TRUE}" && test -z "${HAVE_CORETEXT_FALSE}"; then as_fn_error $? "conditional \"HAVE_CORETEXT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -19606,7 +19869,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by HarfBuzz $as_me 0.9.40, which was +This file was extended by HarfBuzz $as_me 1.2.7, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -19673,7 +19936,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -HarfBuzz config.status 0.9.40 +HarfBuzz config.status 1.2.7 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -19857,10 +20120,8 @@ compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' @@ -20032,10 +20293,8 @@ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -lt_cv_nm_interface \ nm_file_list_spec \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ @@ -20102,7 +20361,7 @@ postdeps_CXX \ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -20143,7 +20402,7 @@ prelink_cmds_CXX \ postlink_cmds_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -20152,16 +20411,19 @@ postlink_cmds_CXX; do done ac_aux_dir='$ac_aux_dir' +xsi_shell='$xsi_shell' +lt_shell_append='$lt_shell_append' -# See if we are running on zsh, and set the options that allow our +# See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}"; then +if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' @@ -20188,10 +20450,12 @@ do "util/Makefile") CONFIG_FILES="$CONFIG_FILES util/Makefile" ;; "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; "test/api/Makefile") CONFIG_FILES="$CONFIG_FILES test/api/Makefile" ;; + "test/fuzzing/Makefile") CONFIG_FILES="$CONFIG_FILES test/fuzzing/Makefile" ;; "test/shaping/Makefile") CONFIG_FILES="$CONFIG_FILES test/shaping/Makefile" ;; "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;; - "docs/reference/Makefile") CONFIG_FILES="$CONFIG_FILES docs/reference/Makefile" ;; - "docs/reference/version.xml") CONFIG_FILES="$CONFIG_FILES docs/reference/version.xml" ;; + "docs/version.xml") CONFIG_FILES="$CONFIG_FILES docs/version.xml" ;; + "win32/Makefile") CONFIG_FILES="$CONFIG_FILES win32/Makefile" ;; + "win32/config.h.win32") CONFIG_FILES="$CONFIG_FILES win32/config.h.win32" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac @@ -20882,13 +21146,13 @@ $as_echo X"$file" | ;; "libtool":C) - # See if we are running on zsh, and set the options that allow our + # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}"; then + if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi - cfgfile=${ofile}T + cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" @@ -20896,7 +21160,7 @@ $as_echo X"$file" | #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE) $VERSION +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # @@ -20930,7 +21194,7 @@ $as_echo X"$file" | # The names of the tagged configurations supported by this script. -available_tags='CXX ' +available_tags="CXX " # ### BEGIN LIBTOOL CONFIG @@ -21067,22 +21331,16 @@ global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl -# Transform the output of nm into a list of symbols to manually relocate. -global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import - # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix -# The name lister interface. -nm_interface=$lt_lt_cv_nm_interface - # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec -# The root where to search for dependent libraries,and where our libraries should be installed. +# The root where to search for dependent libraries,and in which our libraries should be installed. lt_sysroot=$lt_sysroot # The name of the directory that contains temporary libtool files. @@ -21269,13 +21527,13 @@ hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute @@ -21347,7 +21605,7 @@ _LT_EOF # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. -if test set != "${COLLECT_NAMES+set}"; then +if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi @@ -21356,7 +21614,7 @@ _LT_EOF esac -ltmain=$ac_aux_dir/ltmain.sh +ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if @@ -21366,6 +21624,165 @@ ltmain=$ac_aux_dir/ltmain.sh sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) + if test x"$xsi_shell" = xyes; then + sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ +func_dirname ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_basename ()$/,/^} # func_basename /c\ +func_basename ()\ +{\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ +func_dirname_and_basename ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ +func_stripname ()\ +{\ +\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ +\ # positional parameters, so assign one to ordinary parameter first.\ +\ func_stripname_result=${3}\ +\ func_stripname_result=${func_stripname_result#"${1}"}\ +\ func_stripname_result=${func_stripname_result%"${2}"}\ +} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ +func_split_long_opt ()\ +{\ +\ func_split_long_opt_name=${1%%=*}\ +\ func_split_long_opt_arg=${1#*=}\ +} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ +func_split_short_opt ()\ +{\ +\ func_split_short_opt_arg=${1#??}\ +\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ +} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ +func_lo2o ()\ +{\ +\ case ${1} in\ +\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ +\ *) func_lo2o_result=${1} ;;\ +\ esac\ +} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_xform ()$/,/^} # func_xform /c\ +func_xform ()\ +{\ + func_xform_result=${1%.*}.lo\ +} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_arith ()$/,/^} # func_arith /c\ +func_arith ()\ +{\ + func_arith_result=$(( $* ))\ +} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_len ()$/,/^} # func_len /c\ +func_len ()\ +{\ + func_len_result=${#1}\ +} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + +fi + +if test x"$lt_shell_append" = xyes; then + sed -e '/^func_append ()$/,/^} # func_append /c\ +func_append ()\ +{\ + eval "${1}+=\\${2}"\ +} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ +func_append_quoted ()\ +{\ +\ func_quote_for_eval "${2}"\ +\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ +} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 +$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} +fi + + mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" @@ -21452,13 +21869,13 @@ hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX @@ -21577,6 +21994,7 @@ Font callbacks (the more the better): Tools used for command-line utilities: Cairo: ${have_cairo} + Fontconfig: ${have_fontconfig} Additional shapers (the more the better): Graphite2: ${have_graphite2} @@ -21584,6 +22002,7 @@ Additional shapers (the more the better): Platform shapers (not normally needed): CoreText: ${have_coretext} Uniscribe: ${have_uniscribe} + DirectWrite: ${have_directwrite} Other features: Documentation: ${have_gtk_doc} @@ -21604,6 +22023,7 @@ Font callbacks (the more the better): Tools used for command-line utilities: Cairo: ${have_cairo} + Fontconfig: ${have_fontconfig} Additional shapers (the more the better): Graphite2: ${have_graphite2} @@ -21611,6 +22031,7 @@ Additional shapers (the more the better): Platform shapers (not normally needed): CoreText: ${have_coretext} Uniscribe: ${have_uniscribe} + DirectWrite: ${have_directwrite} Other features: Documentation: ${have_gtk_doc} diff --git a/configure.ac b/configure.ac index 5baad1f..5ffd494 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,6 @@ AC_PREREQ([2.64]) AC_INIT([HarfBuzz], - [0.9.40], + [1.2.7], [http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz], [harfbuzz], [http://harfbuzz.org/]) @@ -9,7 +9,7 @@ AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_SRCDIR([src/harfbuzz.pc.in]) AC_CONFIG_HEADERS([config.h]) -AM_INIT_AUTOMAKE([1.11.1 gnits tar-pax dist-bzip2 no-dist-gzip -Wall no-define color-tests -Wno-portability]) +AM_INIT_AUTOMAKE([1.11.1 gnits tar-ustar dist-bzip2 no-dist-gzip -Wall no-define color-tests -Wno-portability]) AM_CONDITIONAL(AUTOMAKE_OLDER_THAN_1_13, test $am__api_version = 1.11 -o $am__api_version = 1.12) AM_SILENT_RULES([yes]) @@ -51,7 +51,7 @@ m4_if(m4_eval(hb_version_minor % 2), [1], m4_define([hb_libtool_age], m4_eval(hb_version_int - hb_libtool_revision)) m4_define([hb_libtool_current], - m4_eval(hb_version_major + hb_libtool_age)) + m4_eval(hb_libtool_age)) HB_LIBTOOL_VERSION_INFO=hb_libtool_current:hb_libtool_revision:hb_libtool_age AC_SUBST(HB_LIBTOOL_VERSION_INFO) @@ -145,8 +145,10 @@ AC_ARG_WITH(glib, [Use glib @<:@default=auto@:>@])],, [with_glib=auto]) have_glib=false +GLIB_DEPS="glib-2.0 >= 2.16" +AC_SUBST(GLIB_DEPS) if test "x$with_glib" = "xyes" -o "x$with_glib" = "xauto"; then - PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.16, have_glib=true, :) + PKG_CHECK_MODULES(GLIB, $GLIB_DEPS, have_glib=true, :) fi if test "x$with_glib" = "xyes" -a "x$have_glib" != "xtrue"; then AC_MSG_ERROR([glib support requested but glib-2.0 not found]) @@ -195,17 +197,6 @@ m4_ifdef([GOBJECT_INTROSPECTION_CHECK], [ AM_CONDITIONAL([HAVE_INTROSPECTION], false) ]) -dnl =========================================================================== - -have_ucdn=true -if $have_glib; then - have_ucdn=false -fi -if $have_ucdn; then - AC_DEFINE(HAVE_UCDN, 1, [Have UCDN Unicode functions]) -fi -AM_CONDITIONAL(HAVE_UCDN, $have_ucdn) - dnl ========================================================================== AC_ARG_WITH(cairo, @@ -235,12 +226,30 @@ AM_CONDITIONAL(HAVE_CAIRO_FT, $have_cairo_ft) dnl ========================================================================== +AC_ARG_WITH(fontconfig, + [AS_HELP_STRING([--with-fontconfig=@<:@yes/no/auto@:>@], + [Use fontconfig @<:@default=auto@:>@])],, + [with_fontconfig=auto]) +have_fontconfig=false +if test "x$with_fontconfig" = "xyes" -o "x$with_fontconfig" = "xauto"; then + PKG_CHECK_MODULES(FONTCONFIG, fontconfig, have_fontconfig=true, :) +fi +if test "x$with_fontconfig" = "xyes" -a "x$have_fontconfig" != "xtrue"; then + AC_MSG_ERROR([fontconfig support requested but not found]) +fi +if $have_fontconfig; then + AC_DEFINE(HAVE_FONTCONFIG, 1, [Have fontconfig library]) +fi +AM_CONDITIONAL(HAVE_FONTCONFIG, $have_fontconfig) + +dnl ========================================================================== + AC_ARG_WITH(icu, - [AS_HELP_STRING([--with-icu=@<:@yes/no/auto@:>@], + [AS_HELP_STRING([--with-icu=@<:@yes/no/builtin/auto@:>@], [Use ICU @<:@default=auto@:>@])],, [with_icu=auto]) have_icu=false -if test "x$with_icu" = "xyes" -o "x$with_icu" = "xauto"; then +if test "x$with_icu" = "xyes" -o "x$with_icu" = "xbuiltin" -o "x$with_icu" = "xauto"; then PKG_CHECK_MODULES(ICU, icu-uc, have_icu=true, :) dnl Fallback to icu-config if ICU pkg-config files could not be found @@ -262,14 +271,30 @@ if test "x$with_icu" = "xyes" -o "x$with_icu" = "xauto"; then fi fi fi -if test "x$with_icu" = "xyes" -a "x$have_icu" != "xtrue"; then +if test \( "x$with_icu" = "xyes" -o "x$with_icu" = "xbuiltin" \) -a "x$have_icu" != "xtrue"; then AC_MSG_ERROR([icu support requested but icu-uc not found]) fi + if $have_icu; then CXXFLAGS="$CXXFLAGS `$PKG_CONFIG --variable=CXXFLAGS icu-uc`" AC_DEFINE(HAVE_ICU, 1, [Have ICU library]) + if test "x$with_icu" = "xbuiltin"; then + AC_DEFINE(HAVE_ICU_BUILTIN, 1, [Use hb-icu Unicode callbacks]) + fi fi AM_CONDITIONAL(HAVE_ICU, $have_icu) +AM_CONDITIONAL(HAVE_ICU_BUILTIN, $have_icu && test "x$with_icu" = "xbuiltin") + +dnl =========================================================================== + +have_ucdn=true +if $have_glib || $have_icu && test "x$with_icu" = "xbuiltin"; then + have_ucdn=false +fi +if $have_ucdn; then + AC_DEFINE(HAVE_UCDN, 1, [Have UCDN Unicode functions]) +fi +AM_CONDITIONAL(HAVE_UCDN, $have_ucdn) dnl ========================================================================== @@ -278,8 +303,10 @@ AC_ARG_WITH(graphite2, [Use the graphite2 library @<:@default=no@:>@])],, [with_graphite2=no]) have_graphite2=false +GRAPHITE2_DEPS="graphite2" +AC_SUBST(GRAPHITE2_DEPS) if test "x$with_graphite2" = "xyes" -o "x$with_graphite2" = "xauto"; then - PKG_CHECK_MODULES(GRAPHITE2, graphite2, have_graphite2=true, :) + PKG_CHECK_MODULES(GRAPHITE2, $GRAPHITE2_DEPS, have_graphite2=true, :) fi if test "x$with_graphite2" = "xyes" -a "x$have_graphite2" != "xtrue"; then AC_MSG_ERROR([graphite2 support requested but libgraphite2 not found]) @@ -296,9 +323,11 @@ AC_ARG_WITH(freetype, [Use the FreeType library @<:@default=auto@:>@])],, [with_freetype=auto]) have_freetype=false +FREETYPE_DEPS="freetype2 >= 12.0.6" +AC_SUBST(FREETYPE_DEPS) if test "x$with_freetype" = "xyes" -o "x$with_freetype" = "xauto"; then # See freetype/docs/VERSION.DLL; 12.0.6 means freetype-2.4.2 - PKG_CHECK_MODULES(FREETYPE, freetype2 >= 12.0.6, have_freetype=true, :) + PKG_CHECK_MODULES(FREETYPE, $FREETYPE_DEPS, have_freetype=true, :) fi if test "x$with_freetype" = "xyes" -a "x$have_freetype" != "xtrue"; then AC_MSG_ERROR([FreeType support requested but libfreetype2 not found]) @@ -332,6 +361,30 @@ AM_CONDITIONAL(HAVE_UNISCRIBE, $have_uniscribe) dnl =========================================================================== +AC_ARG_WITH(directwrite, + [AS_HELP_STRING([--with-directwrite=@<:@yes/no/auto@:>@], + [Use the DirectWrite library (experimental) @<:@default=no@:>@])],, + [with_directwrite=no]) +have_directwrite=false +AC_LANG_PUSH([C++]) +if test "x$with_directwrite" = "xyes" -o "x$with_directwrite" = "xauto"; then + AC_CHECK_HEADERS(dwrite.h, have_directwrite=true) +fi +AC_LANG_POP([C++]) +if test "x$with_directwrite" = "xyes" -a "x$have_directwrite" != "xtrue"; then + AC_MSG_ERROR([directwrite support requested but not found]) +fi +if $have_directwrite; then + DIRECTWRITE_CXXFLAGS= + DIRECTWRITE_LIBS="-ldwrite" + AC_SUBST(DIRECTWRITE_CXXFLAGS) + AC_SUBST(DIRECTWRITE_LIBS) + AC_DEFINE(HAVE_DIRECTWRITE, 1, [Have DirectWrite library]) +fi +AM_CONDITIONAL(HAVE_DIRECTWRITE, $have_directwrite) + +dnl =========================================================================== + AC_ARG_WITH(coretext, [AS_HELP_STRING([--with-coretext=@<:@yes/no/auto@:>@], [Use CoreText @<:@default=no@:>@])],, @@ -416,10 +469,12 @@ src/hb-ucdn/Makefile util/Makefile test/Makefile test/api/Makefile +test/fuzzing/Makefile test/shaping/Makefile docs/Makefile -docs/reference/Makefile -docs/reference/version.xml +docs/version.xml +win32/Makefile +win32/config.h.win32 ]) AC_OUTPUT @@ -438,6 +493,7 @@ Font callbacks (the more the better): Tools used for command-line utilities: Cairo: ${have_cairo} + Fontconfig: ${have_fontconfig} Additional shapers (the more the better): Graphite2: ${have_graphite2} @@ -445,6 +501,7 @@ Additional shapers (the more the better): Platform shapers (not normally needed): CoreText: ${have_coretext} Uniscribe: ${have_uniscribe} + DirectWrite: ${have_directwrite} Other features: Documentation: ${have_gtk_doc} diff --git a/docs/HarfBuzz.png b/docs/HarfBuzz.png new file mode 100644 index 0000000..d58d9fc Binary files /dev/null and b/docs/HarfBuzz.png differ diff --git a/docs/Makefile.am b/docs/Makefile.am index 034926c..3916801 100644 --- a/docs/Makefile.am +++ b/docs/Makefile.am @@ -1,3 +1,122 @@ -SUBDIRS = reference +# Process this file with automake to produce Makefile.in + +# We require automake 1.6 at least. +AUTOMAKE_OPTIONS = 1.6 + +# This is a blank Makefile.am for using gtk-doc. +# Copy this to your project's API docs directory and modify the variables to +# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples +# of using the various options. + +# The name of the module, e.g. 'glib'. +DOC_MODULE=harfbuzz + +# Uncomment for versioned docs and specify the version of the module, e.g. '2'. +#DOC_MODULE_VERSION=$(HB_VERSION_MAJOR) + +# The top-level SGML file. You can change this if you want to. +DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml + +# Directories containing the source code. +# gtk-doc will search all .c and .h files beneath these paths +# for inline comments documenting functions and macros. +# e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk +DOC_SOURCE_DIR=$(top_srcdir)/src $(top_builddir)/src + +# Extra options to pass to gtkdoc-scangobj. Not normally needed. +SCANGOBJ_OPTIONS= + +# Extra options to supply to gtkdoc-scan. +# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" +SCAN_OPTIONS=--rebuild-types --deprecated-guards="HB_DISABLE_DEPRECATED" \ + --ignore-decorators="HB_EXTERN" + +# Header files or dirs to ignore when scanning. Use base file/dir names +# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code +IGNORE_HFILES=`cd $(top_srcdir)/src; find . -path './hb-*/*.h' | sed 's@^.*/@@'` +if HAVE_GOBJECT +else +IGNORE_HFILES+=hb-gobject.h hb-gobject-enums.h hb-gobject-structs.h +endif + +# Extra options to supply to gtkdoc-mkdb. +# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml +MKDB_OPTIONS=--source-suffixes=h,cc --xml-mode --output-format=xml --ignore-files="$(IGNORE_HFILES)" + +# Extra options to supply to gtkdoc-mktmpl +# e.g. MKTMPL_OPTIONS=--only-section-tmpl +MKTMPL_OPTIONS= + +# Extra options to supply to gtkdoc-mkhtml +MKHTML_OPTIONS= + +# Extra options to supply to gtkdoc-fixref. Not normally needed. +# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html +FIXXREF_OPTIONS= + +# Used for dependencies. The docs will be rebuilt if any of these change. +# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h +# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c +HFILE_GLOB=$(top_srcdir)/src/hb.h $(top_srcdir)/src/hb-*.h +CFILE_GLOB=$(top_srcdir)/src/hb-*.cc + +# Extra header to include when scanning, which are not under DOC_SOURCE_DIR +# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h +EXTRA_HFILES=$(top_builddir)/src/hb-version.h + +# Images to copy into HTML directory. +# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png +HTML_IMAGES= \ + HarfBuzz.png + +# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). +# e.g. content_files=running.sgml building.sgml changes-2.0.sgml +content_files= \ + usermanual-buffers-language-script-and-direction.xml \ + usermanual-clusters.xml \ + usermanual-fonts-and-faces.xml \ + usermanual-glyph-information.xml \ + usermanual-hello-harfbuzz.xml \ + usermanual-install-harfbuzz.xml \ + usermanual-opentype-features.xml \ + usermanual-what-is-harfbuzz.xml \ + version.xml + +# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded +# These files must be listed here *and* in content_files +# e.g. expand_content_files=running.sgml +expand_content_files= + +# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. +# Only needed if you are using gtkdoc-scangobj to dynamically query widget +# signals and properties. +# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) +# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) +GTKDOC_CFLAGS= +GTKDOC_LIBS=$(top_builddir)/src/libharfbuzz.la +if HAVE_GOBJECT +GTKDOC_LIBS+=$(top_builddir)/src/libharfbuzz-gobject.la +endif + +# This includes the standard gtk-doc make rules, copied by gtkdocize. +include $(top_srcdir)/gtk-doc.make + +# Other files to distribute +# e.g. EXTRA_DIST += version.xml.in +EXTRA_DIST += version.xml.in + +# Files not to distribute +# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types +# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt +#DISTCLEANFILES += + +# Comment this out if you want 'make check' to test you doc status +# and run some sanity checks +if ENABLE_GTK_DOC +TESTS_ENVIRONMENT = cd $(srcdir) && \ + DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ + SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) +#TESTS = $(GTKDOC_CHECK) +endif -include $(top_srcdir)/git.mk diff --git a/docs/Makefile.in b/docs/Makefile.in index f8fe860..04b9a15 100644 --- a/docs/Makefile.in +++ b/docs/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.14 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. @@ -13,6 +13,14 @@ # PARTICULAR PURPOSE. @SET_MAKE@ + +# Process this file with automake to produce Makefile.in + +# -*- mode: makefile -*- + +#################################### +# Everything below here is generic # +#################################### VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ @@ -77,8 +85,11 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ +@HAVE_GOBJECT_FALSE@am__append_1 = hb-gobject.h hb-gobject-enums.h hb-gobject-structs.h +@HAVE_GOBJECT_TRUE@am__append_2 = $(top_builddir)/src/libharfbuzz-gobject.la +DIST_COMMON = $(top_srcdir)/gtk-doc.make $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(srcdir)/version.xml.in subdir = docs -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ @@ -89,7 +100,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = +CONFIG_CLEAN_FILES = version.xml CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) @@ -105,73 +116,13 @@ am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ - ctags-recursive dvi-recursive html-recursive info-recursive \ - install-data-recursive install-dvi-recursive \ - install-exec-recursive install-html-recursive \ - install-info-recursive install-pdf-recursive \ - install-ps-recursive install-recursive installcheck-recursive \ - installdirs-recursive pdf-recursive ps-recursive \ - tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -am__recursive_targets = \ - $(RECURSIVE_TARGETS) \ - $(RECURSIVE_CLEAN_TARGETS) \ - $(am__extra_recursive_targets) -AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ - distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ @@ -198,6 +149,8 @@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ +DIRECTWRITE_CXXFLAGS = @DIRECTWRITE_CXXFLAGS@ +DIRECTWRITE_LIBS = @DIRECTWRITE_LIBS@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ @@ -207,15 +160,20 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ +FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_DEPS = @FREETYPE_DEPS@ FREETYPE_LIBS = @FREETYPE_LIBS@ GIT = @GIT@ GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_DEPS = @GLIB_DEPS@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GRAPHITE2_CFLAGS = @GRAPHITE2_CFLAGS@ +GRAPHITE2_DEPS = @GRAPHITE2_DEPS@ GRAPHITE2_LIBS = @GRAPHITE2_LIBS@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ @@ -338,11 +296,195 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -SUBDIRS = reference -all: all-recursive + +# We require automake 1.6 at least. +AUTOMAKE_OPTIONS = 1.6 + +# This is a blank Makefile.am for using gtk-doc. +# Copy this to your project's API docs directory and modify the variables to +# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples +# of using the various options. + +# The name of the module, e.g. 'glib'. +DOC_MODULE = harfbuzz + +# Uncomment for versioned docs and specify the version of the module, e.g. '2'. +#DOC_MODULE_VERSION=$(HB_VERSION_MAJOR) + +# The top-level SGML file. You can change this if you want to. +DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.xml + +# Directories containing the source code. +# gtk-doc will search all .c and .h files beneath these paths +# for inline comments documenting functions and macros. +# e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk +DOC_SOURCE_DIR = $(top_srcdir)/src $(top_builddir)/src + +# Extra options to pass to gtkdoc-scangobj. Not normally needed. +SCANGOBJ_OPTIONS = + +# Extra options to supply to gtkdoc-scan. +# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" +SCAN_OPTIONS = --rebuild-types --deprecated-guards="HB_DISABLE_DEPRECATED" \ + --ignore-decorators="HB_EXTERN" + + +# Header files or dirs to ignore when scanning. Use base file/dir names +# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code +IGNORE_HFILES = `cd $(top_srcdir)/src; find . -path './hb-*/*.h' | sed \ + 's@^.*/@@'` $(am__append_1) + +# Extra options to supply to gtkdoc-mkdb. +# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml +MKDB_OPTIONS = --source-suffixes=h,cc --xml-mode --output-format=xml --ignore-files="$(IGNORE_HFILES)" + +# Extra options to supply to gtkdoc-mktmpl +# e.g. MKTMPL_OPTIONS=--only-section-tmpl +MKTMPL_OPTIONS = + +# Extra options to supply to gtkdoc-mkhtml +MKHTML_OPTIONS = + +# Extra options to supply to gtkdoc-fixref. Not normally needed. +# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html +FIXXREF_OPTIONS = + +# Used for dependencies. The docs will be rebuilt if any of these change. +# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h +# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c +HFILE_GLOB = $(top_srcdir)/src/hb.h $(top_srcdir)/src/hb-*.h +CFILE_GLOB = $(top_srcdir)/src/hb-*.cc + +# Extra header to include when scanning, which are not under DOC_SOURCE_DIR +# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h +EXTRA_HFILES = $(top_builddir)/src/hb-version.h + +# Images to copy into HTML directory. +# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png +HTML_IMAGES = \ + HarfBuzz.png + + +# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). +# e.g. content_files=running.sgml building.sgml changes-2.0.sgml +content_files = \ + usermanual-buffers-language-script-and-direction.xml \ + usermanual-clusters.xml \ + usermanual-fonts-and-faces.xml \ + usermanual-glyph-information.xml \ + usermanual-hello-harfbuzz.xml \ + usermanual-install-harfbuzz.xml \ + usermanual-opentype-features.xml \ + usermanual-what-is-harfbuzz.xml \ + version.xml + + +# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded +# These files must be listed here *and* in content_files +# e.g. expand_content_files=running.sgml +expand_content_files = + +# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. +# Only needed if you are using gtkdoc-scangobj to dynamically query widget +# signals and properties. +# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) +# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) +GTKDOC_CFLAGS = +GTKDOC_LIBS = $(top_builddir)/src/libharfbuzz.la $(am__append_2) +@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN = +@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute + +# We set GPATH here; this gives us semantics for GNU make +# which are more like other make's VPATH, when it comes to +# whether a source that is a target of one rule is then +# searched for in VPATH/GPATH. +# +GPATH = $(srcdir) +TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE) +SETUP_FILES = \ + $(content_files) \ + $(DOC_MAIN_SGML_FILE) \ + $(DOC_MODULE)-sections.txt \ + $(DOC_MODULE)-overrides.txt + + +# This includes the standard gtk-doc make rules, copied by gtkdocize. + +# Other files to distribute +# e.g. EXTRA_DIST += version.xml.in +EXTRA_DIST = $(HTML_IMAGES) $(SETUP_FILES) version.xml.in +DOC_STAMPS = setup-build.stamp scan-build.stamp sgml-build.stamp \ + html-build.stamp pdf-build.stamp \ + sgml.stamp html.stamp pdf.stamp + +SCANOBJ_FILES = \ + $(DOC_MODULE).args \ + $(DOC_MODULE).hierarchy \ + $(DOC_MODULE).interfaces \ + $(DOC_MODULE).prerequisites \ + $(DOC_MODULE).signals + +REPORT_FILES = \ + $(DOC_MODULE)-undocumented.txt \ + $(DOC_MODULE)-undeclared.txt \ + $(DOC_MODULE)-unused.txt + +CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) gtkdoc-check.test +@GTK_DOC_BUILD_HTML_FALSE@HTML_BUILD_STAMP = +@GTK_DOC_BUILD_HTML_TRUE@HTML_BUILD_STAMP = html-build.stamp +@GTK_DOC_BUILD_PDF_FALSE@PDF_BUILD_STAMP = +@GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp + +#### setup #### +GTK_DOC_V_SETUP = $(GTK_DOC_V_SETUP_$(V)) +GTK_DOC_V_SETUP_ = $(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_SETUP_0 = @echo " DOC Preparing build"; + +#### scan #### +GTK_DOC_V_SCAN = $(GTK_DOC_V_SCAN_$(V)) +GTK_DOC_V_SCAN_ = $(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_SCAN_0 = @echo " DOC Scanning header files"; +GTK_DOC_V_INTROSPECT = $(GTK_DOC_V_INTROSPECT_$(V)) +GTK_DOC_V_INTROSPECT_ = $(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_INTROSPECT_0 = @echo " DOC Introspecting gobjects"; + +#### xml #### +GTK_DOC_V_XML = $(GTK_DOC_V_XML_$(V)) +GTK_DOC_V_XML_ = $(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_XML_0 = @echo " DOC Building XML"; + +#### html #### +GTK_DOC_V_HTML = $(GTK_DOC_V_HTML_$(V)) +GTK_DOC_V_HTML_ = $(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_HTML_0 = @echo " DOC Building HTML"; +GTK_DOC_V_XREF = $(GTK_DOC_V_XREF_$(V)) +GTK_DOC_V_XREF_ = $(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_XREF_0 = @echo " DOC Fixing cross-references"; + +#### pdf #### +GTK_DOC_V_PDF = $(GTK_DOC_V_PDF_$(V)) +GTK_DOC_V_PDF_ = $(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_PDF_0 = @echo " DOC Building PDF"; + +# Files not to distribute +# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types +# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt +#DISTCLEANFILES += + +# Comment this out if you want 'make check' to test you doc status +# and run some sanity checks +@ENABLE_GTK_DOC_TRUE@TESTS_ENVIRONMENT = cd $(srcdir) && \ +@ENABLE_GTK_DOC_TRUE@ DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ +@ENABLE_GTK_DOC_TRUE@ SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) + +all: all-am .SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/gtk-doc.make $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -363,6 +505,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/gtk-doc.make: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -372,111 +515,20 @@ $(top_srcdir)/configure: $(am__configure_deps) $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): +version.xml: $(top_builddir)/config.status $(srcdir)/version.xml.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs +tags TAGS: -# This directory's subdirectories are mostly independent; you can cd -# into them and run 'make' without going through this Makefile. -# To change the values of 'make' variables: instead of editing Makefiles, -# (1) if the variable is set in 'config.status', edit 'config.status' -# (which will cause the Makefiles to be regenerated when you run 'make'); -# (2) otherwise, pass the desired values on the 'make' command line. -$(am__recursive_targets): - @fail=; \ - if $(am__make_keepgoing); then \ - failcom='fail=yes'; \ - else \ - failcom='exit 1'; \ - fi; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-recursive -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-recursive - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-recursive - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files +ctags CTAGS: + +cscope cscopelist: -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ @@ -508,45 +560,23 @@ distdir: $(DISTFILES) || exit 1; \ fi; \ done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook check-am: all-am -check: check-recursive -all-am: Makefile -installdirs: installdirs-recursive -installdirs-am: -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive +check: check-am +@ENABLE_GTK_DOC_FALSE@all-local: +all-am: Makefile all-local +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -installcheck: installcheck-recursive +installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ @@ -560,6 +590,7 @@ install-strip: mostlyclean-generic: clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) @@ -568,87 +599,272 @@ distclean-generic: maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive +clean: clean-am -clean-am: clean-generic clean-libtool mostlyclean-am +clean-am: clean-generic clean-libtool clean-local mostlyclean-am -distclean: distclean-recursive +distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags +distclean-am: clean-am distclean-generic distclean-local -dvi: dvi-recursive +dvi: dvi-am dvi-am: -html: html-recursive +html: html-am html-am: -info: info-recursive +info: info-am info-am: -install-data-am: +install-data-am: install-data-local -install-dvi: install-dvi-recursive +install-dvi: install-dvi-am install-dvi-am: install-exec-am: -install-html: install-html-recursive +install-html: install-html-am install-html-am: -install-info: install-info-recursive +install-info: install-info-am install-info-am: install-man: -install-pdf: install-pdf-recursive +install-pdf: install-pdf-am install-pdf-am: -install-ps: install-ps-recursive +install-ps: install-ps-am install-ps-am: installcheck-am: -maintainer-clean: maintainer-clean-recursive +maintainer-clean: maintainer-clean-am -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic +maintainer-clean-am: distclean-am maintainer-clean-generic \ + maintainer-clean-local -mostlyclean: mostlyclean-recursive +mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool -pdf: pdf-recursive +pdf: pdf-am pdf-am: -ps: ps-recursive +ps: ps-am ps-am: -uninstall-am: +uninstall-am: uninstall-local + +.MAKE: install-am install-strip + +.PHONY: all all-am all-local check check-am clean clean-generic \ + clean-libtool clean-local cscopelist-am ctags-am dist-hook \ + distclean distclean-generic distclean-libtool distclean-local \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-data-local \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + maintainer-clean-local mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am uninstall-local + + +gtkdoc-check.test: Makefile + $(AM_V_GEN)echo "#!/bin/sh -e" > $@; \ + echo "$(GTKDOC_CHECK_PATH) || exit 1" >> $@; \ + chmod +x $@ + +all-gtk-doc: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) +.PHONY: all-gtk-doc + +@ENABLE_GTK_DOC_TRUE@all-local: all-gtk-doc + +docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) + +$(REPORT_FILES): sgml-build.stamp + +setup-build.stamp: + -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ + files=`echo $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types`; \ + if test "x$$files" != "x" ; then \ + for file in $$files ; do \ + destdir=`dirname $(abs_builddir)/$$file`; \ + test -d "$$destdir" || mkdir -p "$$destdir"; \ + test -f $(abs_srcdir)/$$file && \ + cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ + done; \ + fi; \ + fi + $(AM_V_at)touch setup-build.stamp + +scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB) + $(GTK_DOC_V_SCAN)_source_dir='' ; \ + for i in $(DOC_SOURCE_DIR) ; do \ + _source_dir="$${_source_dir} --source-dir=$$i" ; \ + done ; \ + gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) + $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ + scanobj_options=""; \ + gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ + if test "$(?)" = "0"; then \ + if test "x$(V)" = "x1"; then \ + scanobj_options="--verbose"; \ + fi; \ + fi; \ + CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ + gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ + else \ + for i in $(SCANOBJ_FILES) ; do \ + test -f $$i || touch $$i ; \ + done \ + fi + $(AM_V_at)touch scan-build.stamp + +$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp + @true + +sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) + $(GTK_DOC_V_XML)_source_dir='' ; \ + for i in $(DOC_SOURCE_DIR) ; do \ + _source_dir="$${_source_dir} --source-dir=$$i" ; \ + done ; \ + gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) + $(AM_V_at)touch sgml-build.stamp + +sgml.stamp: sgml-build.stamp + @true + +html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) + $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \ + mkhtml_options=""; \ + gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \ + if test "$(?)" = "0"; then \ + if test "x$(V)" = "x1"; then \ + mkhtml_options="$$mkhtml_options --verbose"; \ + fi; \ + fi; \ + gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ + if test "$(?)" = "0"; then \ + mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \ + fi; \ + cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) + -@test "x$(HTML_IMAGES)" = "x" || \ + for file in $(HTML_IMAGES) ; do \ + if test -f $(abs_srcdir)/$$file ; then \ + cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ + fi; \ + if test -f $(abs_builddir)/$$file ; then \ + cp $(abs_builddir)/$$file $(abs_builddir)/html; \ + fi; \ + done; + $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) + $(AM_V_at)touch html-build.stamp + +pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) + $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \ + mkpdf_options=""; \ + gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \ + if test "$(?)" = "0"; then \ + if test "x$(V)" = "x1"; then \ + mkpdf_options="$$mkpdf_options --verbose"; \ + fi; \ + fi; \ + if test "x$(HTML_IMAGES)" != "x"; then \ + for img in $(HTML_IMAGES); do \ + part=`dirname $$img`; \ + echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \ + if test $$? != 0; then \ + mkpdf_options="$$mkpdf_options --imgdir=$$part"; \ + fi; \ + done; \ + fi; \ + gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) + $(AM_V_at)touch pdf-build.stamp + +############## + +clean-local: + @rm -f *~ *.bak + @rm -rf .libs + @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-types" ; then \ + rm -f $(DOC_MODULE).types; \ + fi + +distclean-local: + @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \ + $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt + @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ + rm -f $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types; \ + fi -.MAKE: $(am__recursive_targets) install-am install-strip +maintainer-clean-local: + @rm -rf xml html -.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ - check-am clean clean-generic clean-libtool cscopelist-am ctags \ - ctags-am distclean distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - installdirs-am maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ - ps ps-am tags tags-am uninstall uninstall-am +install-data-local: + @installfiles=`echo $(builddir)/html/*`; \ + if test "$$installfiles" = '$(builddir)/html/*'; \ + then echo 1>&2 'Nothing to install' ; \ + else \ + if test -n "$(DOC_MODULE_VERSION)"; then \ + installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ + else \ + installdir="$(DESTDIR)$(TARGET_DIR)"; \ + fi; \ + $(mkinstalldirs) $${installdir} ; \ + for i in $$installfiles; do \ + echo ' $(INSTALL_DATA) '$$i ; \ + $(INSTALL_DATA) $$i $${installdir}; \ + done; \ + if test -n "$(DOC_MODULE_VERSION)"; then \ + mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ + $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ + fi; \ + $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ + fi +uninstall-local: + @if test -n "$(DOC_MODULE_VERSION)"; then \ + installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ + else \ + installdir="$(DESTDIR)$(TARGET_DIR)"; \ + fi; \ + rm -rf $${installdir} + +# +# Require gtk-doc when making dist +# +@HAVE_GTK_DOC_TRUE@dist-check-gtkdoc: docs +@HAVE_GTK_DOC_FALSE@dist-check-gtkdoc: +@HAVE_GTK_DOC_FALSE@ @echo "*** gtk-doc is needed to run 'make dist'. ***" +@HAVE_GTK_DOC_FALSE@ @echo "*** gtk-doc was not found when 'configure' ran. ***" +@HAVE_GTK_DOC_FALSE@ @echo "*** please install gtk-doc and rerun 'configure'. ***" +@HAVE_GTK_DOC_FALSE@ @false + +dist-hook: dist-check-gtkdoc all-gtk-doc dist-hook-local + @mkdir $(distdir)/html + @cp ./html/* $(distdir)/html + @-cp ./$(DOC_MODULE).pdf $(distdir)/ + @-cp ./$(DOC_MODULE).types $(distdir)/ + @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/ + @cd $(distdir) && rm -f $(DISTCLEANFILES) + @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html + +.PHONY : dist-hook-local docs +#TESTS = $(GTKDOC_CHECK) -include $(top_srcdir)/git.mk diff --git a/docs/harfbuzz-docs.xml b/docs/harfbuzz-docs.xml new file mode 100644 index 0000000..6c03f39 --- /dev/null +++ b/docs/harfbuzz-docs.xml @@ -0,0 +1,184 @@ + + + +]> + + + HarfBuzz Manual + + HarfBuzz + + + HarfBuzz is an OpenType + text shaping engine. + + + The current HarfBuzz codebase, formerly known as harfbuzz-ng, is + versioned 1.x.x and is stable and under active maintenance. This is + what is used in latest versions of Firefox, GNOME, ChromeOS, Chrome, + LibreOffice, XeTeX, Android, and KDE, among other places. The canonical + source tree is available + here. + Also available on + github. + See for release tarballs. + + + The old HarfBuzz codebase, these days known as harfbuzz-old, was + derived from FreeType, + Pango, and + Qt and is available + here. + It is not actively developed or maintained, and is extremely buggy. All + users are encouraged to switch over to the new HarfBuzz as soon as + possible. There are no release tarballs of old HarfBuzz whatsoever. + + + + + + User's manual + + + + + + + + + + + + + This document is for HarfBuzz &version;. + + + + Reference manual + + Harfbuzz API + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Object Hierarchy + + + + API Index + + + + Index of new symbols in 0.9.2 + + + + Index of new symbols in 0.9.5 + + + + Index of new symbols in 0.9.7 + + + + Index of new symbols in 0.9.8 + + + + Index of new symbols in 0.9.10 + + + + Index of new symbols in 0.9.11 + + + + Index of new symbols in 0.9.20 + + + + Index of new symbols in 0.9.22 + + + + Index of new symbols in 0.9.28 + + + + Index of new symbols in 0.9.30 + + + + Index of new symbols in 0.9.31 + + + + Index of new symbols in 0.9.38 + + + + Index of new symbols in 0.9.39 + + + + Index of new symbols in 0.9.41 + + + + Index of new symbols in 0.9.42 + + + + Index of new symbols in 1.0.5 + + + + Index of new symbols in 1.1.2 + + + + Index of new symbols in 1.1.3 + + + + Index of deprecated API + + + + + + diff --git a/docs/reference/harfbuzz-overrides.txt b/docs/harfbuzz-overrides.txt similarity index 100% rename from docs/reference/harfbuzz-overrides.txt rename to docs/harfbuzz-overrides.txt diff --git a/docs/reference/harfbuzz-sections.txt b/docs/harfbuzz-sections.txt similarity index 90% rename from docs/reference/harfbuzz-sections.txt rename to docs/harfbuzz-sections.txt index b112047..e0dc23d 100644 --- a/docs/reference/harfbuzz-sections.txt +++ b/docs/harfbuzz-sections.txt @@ -2,6 +2,7 @@ hb HB_H_IN +HB_EXTERN
@@ -25,97 +26,106 @@ hb_memory_mode_t
hb-buffer HB_SEGMENT_PROPERTIES_DEFAULT +HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT +hb_buffer_create +hb_buffer_reference +hb_buffer_get_empty +hb_buffer_destroy +hb_buffer_reset +hb_buffer_clear_contents +hb_buffer_pre_allocate +hb_buffer_allocation_successful hb_buffer_add -hb_buffer_add_utf16 +hb_buffer_add_codepoints hb_buffer_add_utf32 +hb_buffer_add_utf16 hb_buffer_add_utf8 -hb_buffer_add_codepoints -hb_buffer_allocation_successful -hb_buffer_clear_contents -hb_buffer_content_type_t -hb_buffer_create -hb_buffer_deserialize_glyphs -hb_buffer_destroy -hb_buffer_flags_t +hb_buffer_add_latin1 +hb_buffer_set_content_type hb_buffer_get_content_type +hb_buffer_set_direction hb_buffer_get_direction -hb_buffer_get_empty -hb_buffer_get_flags -hb_buffer_get_glyph_infos -hb_buffer_get_glyph_positions +hb_buffer_set_script +hb_buffer_get_script +hb_buffer_set_language hb_buffer_get_language +hb_buffer_set_flags +hb_buffer_get_flags +hb_buffer_set_cluster_level +hb_buffer_get_cluster_level +hb_buffer_set_length hb_buffer_get_length -hb_buffer_get_replacement_codepoint -hb_buffer_get_script +hb_buffer_set_segment_properties hb_buffer_get_segment_properties +hb_buffer_guess_segment_properties +hb_buffer_set_unicode_funcs hb_buffer_get_unicode_funcs +hb_buffer_set_user_data hb_buffer_get_user_data -hb_buffer_guess_segment_properties +hb_buffer_get_glyph_infos +hb_buffer_get_glyph_positions +hb_buffer_set_replacement_codepoint +hb_buffer_get_replacement_codepoint hb_buffer_normalize_glyphs -hb_buffer_pre_allocate -hb_buffer_reference -hb_buffer_reset hb_buffer_reverse +hb_buffer_reverse_range hb_buffer_reverse_clusters -hb_buffer_serialize_flags_t +hb_buffer_serialize_glyphs +hb_buffer_deserialize_glyphs hb_buffer_serialize_format_from_string -hb_buffer_serialize_format_t hb_buffer_serialize_format_to_string -hb_buffer_serialize_glyphs hb_buffer_serialize_list_formats -hb_buffer_set_content_type -hb_buffer_set_direction -hb_buffer_set_flags -hb_buffer_set_language -hb_buffer_set_length -hb_buffer_set_replacement_codepoint -hb_buffer_set_script -hb_buffer_set_segment_properties -hb_buffer_set_unicode_funcs -hb_buffer_set_user_data +hb_segment_properties_equal +hb_segment_properties_hash +hb_buffer_set_message_func hb_buffer_t hb_glyph_info_t hb_glyph_position_t -hb_segment_properties_equal -hb_segment_properties_hash +hb_buffer_content_type_t +hb_buffer_flags_t +hb_buffer_cluster_level_t hb_segment_properties_t +hb_buffer_serialize_format_t +hb_buffer_serialize_flags_t +hb_buffer_message_func_t
hb-common -HB_DIRECTION_REVERSE -HB_LANGUAGE_INVALID -HB_TAG -HB_TAG_NONE -HB_TAG_MAX -HB_UNTAG -hb_bool_t -hb_codepoint_t -hb_destroy_func_t +hb_tag_from_string +hb_tag_to_string hb_direction_from_string -hb_direction_t hb_direction_to_string +hb_script_from_iso15924_tag +hb_script_from_string +hb_script_to_iso15924_tag +hb_script_get_horizontal_direction hb_language_from_string +hb_language_to_string hb_language_get_default +hb_bool_t +hb_codepoint_t +hb_destroy_func_t +hb_direction_t hb_language_t -hb_language_to_string hb_mask_t hb_position_t -hb_script_from_iso15924_tag -hb_script_from_string -hb_script_get_horizontal_direction -hb_script_t -hb_script_to_iso15924_tag -hb_tag_from_string hb_tag_t -hb_tag_to_string +hb_script_t hb_user_data_key_t hb_var_int_t +HB_TAG +HB_TAG_NONE +HB_TAG_MAX +HB_TAG_MAX_SIGNED +HB_UNTAG +HB_DIRECTION_REVERSE HB_DIRECTION_IS_BACKWARD HB_DIRECTION_IS_FORWARD HB_DIRECTION_IS_HORIZONTAL HB_DIRECTION_IS_VALID HB_DIRECTION_IS_VERTICAL +HB_LANGUAGE_INVALID HB_BEGIN_DECLS HB_END_DECLS @@ -242,14 +252,27 @@ hb_font_set_user_data hb_font_subtract_glyph_origin_for_direction hb_font_t hb_reference_table_func_t +hb_font_funcs_set_font_h_extents_func +hb_font_funcs_set_font_v_extents_func +hb_font_get_extents_for_direction +hb_font_get_font_extents_func_t +hb_font_get_font_h_extents_func_t +hb_font_get_font_v_extents_func_t +hb_font_get_h_extents +hb_font_get_v_extents +hb_font_set_parent
hb-ft hb_ft_face_create hb_ft_face_create_cached +hb_ft_face_create_referenced hb_ft_font_create +hb_ft_font_create_referenced hb_ft_font_get_face +hb_ft_font_set_load_flags +hb_ft_font_get_load_flags hb_ft_font_set_funcs
@@ -258,6 +281,7 @@ hb_ft_font_set_funcs hb_glib_get_unicode_funcs hb_glib_script_from_script hb_glib_script_to_script +hb_glib_blob_create
@@ -279,6 +303,13 @@ HB_GOBJECT_TYPE_SHAPE_PLAN HB_GOBJECT_TYPE_UNICODE_COMBINING_CLASS HB_GOBJECT_TYPE_UNICODE_FUNCS HB_GOBJECT_TYPE_UNICODE_GENERAL_CATEGORY +HB_GOBJECT_TYPE_BUFFER_CLUSTER_LEVEL +HB_GOBJECT_TYPE_FEATURE +HB_GOBJECT_TYPE_GLYPH_INFO +HB_GOBJECT_TYPE_GLYPH_POSITION +HB_GOBJECT_TYPE_SEGMENT_PROPERTIES +HB_GOBJECT_TYPE_SET +HB_GOBJECT_TYPE_USER_DATA_KEY hb_gobject_blob_get_type hb_gobject_buffer_content_type_get_type hb_gobject_buffer_flags_get_type @@ -296,6 +327,13 @@ hb_gobject_shape_plan_get_type hb_gobject_unicode_combining_class_get_type hb_gobject_unicode_funcs_get_type hb_gobject_unicode_general_category_get_type +hb_gobject_buffer_cluster_level_get_type +hb_gobject_feature_get_type +hb_gobject_glyph_info_get_type +hb_gobject_glyph_position_get_type +hb_gobject_segment_properties_get_type +hb_gobject_set_get_type +hb_gobject_user_data_key_get_type HB_GOBJECT_H_IN
@@ -343,6 +381,7 @@ HB_OT_LAYOUT_NO_SCRIPT_INDEX HB_OT_TAG_GDEF HB_OT_TAG_GPOS HB_OT_TAG_GSUB +HB_OT_TAG_JSTF hb_ot_layout_collect_lookups hb_ot_layout_feature_get_lookups hb_ot_layout_get_attach_points @@ -370,6 +409,7 @@ hb_ot_layout_table_get_feature_tags hb_ot_layout_table_get_script_tags hb_ot_layout_table_get_lookup_count hb_ot_shape_plan_collect_lookups +hb_ot_layout_language_get_required_feature_index Xhb_ot_layout_lookup_enumerate_sequences Xhb_ot_layout_lookup_position @@ -490,12 +530,12 @@ hb_uniscribe_font_get_logfontw
hb-version -HB_VERSION_CHECK +HB_VERSION_ATLEAST HB_VERSION_MAJOR HB_VERSION_MICRO HB_VERSION_MINOR HB_VERSION_STRING hb_version -hb_version_check +hb_version_atleast hb_version_string
diff --git a/docs/harfbuzz.types b/docs/harfbuzz.types new file mode 100644 index 0000000..d9664df --- /dev/null +++ b/docs/harfbuzz.types @@ -0,0 +1,24 @@ +hb_gobject_blob_get_type +hb_gobject_buffer_cluster_level_get_type +hb_gobject_buffer_content_type_get_type +hb_gobject_buffer_flags_get_type +hb_gobject_buffer_get_type +hb_gobject_buffer_serialize_flags_get_type +hb_gobject_buffer_serialize_format_get_type +hb_gobject_direction_get_type +hb_gobject_face_get_type +hb_gobject_feature_get_type +hb_gobject_font_funcs_get_type +hb_gobject_font_get_type +hb_gobject_glyph_info_get_type +hb_gobject_glyph_position_get_type +hb_gobject_memory_mode_get_type +hb_gobject_ot_layout_glyph_class_get_type +hb_gobject_script_get_type +hb_gobject_segment_properties_get_type +hb_gobject_set_get_type +hb_gobject_shape_plan_get_type +hb_gobject_unicode_combining_class_get_type +hb_gobject_unicode_funcs_get_type +hb_gobject_unicode_general_category_get_type +hb_gobject_user_data_key_get_type diff --git a/docs/html/HarfBuzz.png b/docs/html/HarfBuzz.png new file mode 100644 index 0000000..d58d9fc Binary files /dev/null and b/docs/html/HarfBuzz.png differ diff --git a/docs/html/adding-text-to-the-buffer.html b/docs/html/adding-text-to-the-buffer.html new file mode 100644 index 0000000..ccf96bc --- /dev/null +++ b/docs/html/adding-text-to-the-buffer.html @@ -0,0 +1,35 @@ + + + + +Adding text to the buffer: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Adding text to the buffer

+

+ Now we have a brand new Harfbuzz buffer. Let's start filling it + with text! From Harfbuzz's perspective, a buffer is just a stream + of Unicode codepoints, but your input string is probably in one of + the standard Unicode character encodings (UTF-8, UTF-16, UTF-32) +

+
+ + + \ No newline at end of file diff --git a/docs/html/annotation-glossary.html b/docs/html/annotation-glossary.html new file mode 100644 index 0000000..ccbbafe --- /dev/null +++ b/docs/html/annotation-glossary.html @@ -0,0 +1,77 @@ + + + + +Annotation Glossary: HarfBuzz Manual + + + + + + + + + + + + + + + +
+

+Annotation Glossary

+

A

+
allow-none
+

NULL is OK, both for passing and for returning.

+
array
+

Parameter points to an array of items.

+

C

+
closure
+

This parameter is a 'user_data', for callbacks; many bindings can pass NULL here.

+

D

+
destroy
+

This parameter is a 'destroy_data', for callbacks.

+

E

+
element-type
+

Generics and defining elements of containers and arrays.

+

I

+
inout
+

Parameter for input and for returning results. Default is transfer full.

+

N

+
nullable
+

NULL may be passed as the value in, out, in-out; or as a return value.

+

O

+
out
+

Parameter for returning results. Default is transfer full.

+

S

+
scope notified
+

The callback is valid until the GDestroyNotify argument is called.

+
skip
+

Exposed in C code, not necessarily available in other languages.

+

T

+
transfer full
+

Free data after the code is done.

+
transfer none
+

Don't free data after the code is done.

+
+ + + \ No newline at end of file diff --git a/docs/html/api-index-0-9-10.html b/docs/html/api-index-0-9-10.html new file mode 100644 index 0000000..76ac9c6 --- /dev/null +++ b/docs/html/api-index-0-9-10.html @@ -0,0 +1,41 @@ + + + + +Index of new symbols in 0.9.10: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 0.9.10

+

O

+
+hb_ot_layout_get_size_params, function in hb-ot-layout +
+
+

S

+
+hb_set_invert, function in hb-set +
+
+
+ + + \ No newline at end of file diff --git a/docs/html/api-index-0-9-11.html b/docs/html/api-index-0-9-11.html new file mode 100644 index 0000000..83271c7 --- /dev/null +++ b/docs/html/api-index-0-9-11.html @@ -0,0 +1,34 @@ + + + + +Index of new symbols in 0.9.11: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 0.9.11

+

B

+
+hb_buffer_clear_contents, function in Buffers +
+
+
+ + + \ No newline at end of file diff --git a/docs/html/api-index-0-9-2.html b/docs/html/api-index-0-9-2.html new file mode 100644 index 0000000..75ae862 --- /dev/null +++ b/docs/html/api-index-0-9-2.html @@ -0,0 +1,746 @@ + + + + +Index of new symbols in 0.9.2: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 0.9.2

+

B

+
+hb_blob_create, function in hb-blob +
+
+
+hb_blob_create_sub_blob, function in hb-blob +
+
+
+hb_blob_destroy, function in hb-blob +
+
+
+hb_blob_get_data, function in hb-blob +
+
+
+hb_blob_get_data_writable, function in hb-blob +
+
+
+hb_blob_get_empty, function in hb-blob +
+
+
+hb_blob_get_length, function in hb-blob +
+
+
+hb_blob_get_user_data, function in hb-blob +
+
+
+hb_blob_is_immutable, function in hb-blob +
+
+
+hb_blob_make_immutable, function in hb-blob +
+
+
+hb_blob_reference, function in hb-blob +
+
+
+hb_blob_set_user_data, function in hb-blob +
+
+
+hb_buffer_add_utf16, function in Buffers +
+
+
+hb_buffer_add_utf32, function in Buffers +
+
+
+hb_buffer_add_utf8, function in Buffers +
+
+
+hb_buffer_allocation_successful, function in Buffers +
+
+
+hb_buffer_create, function in Buffers +
+
+
+hb_buffer_destroy, function in Buffers +
+
+
+hb_buffer_get_direction, function in Buffers +
+
+
+hb_buffer_get_empty, function in Buffers +
+
+
+hb_buffer_get_glyph_infos, function in Buffers +
+
+
+hb_buffer_get_glyph_positions, function in Buffers +
+
+
+hb_buffer_get_language, function in Buffers +
+
+
+hb_buffer_get_length, function in Buffers +
+
+
+hb_buffer_get_script, function in Buffers +
+
+
+hb_buffer_get_unicode_funcs, function in Buffers +
+
+
+hb_buffer_get_user_data, function in Buffers +
+
+
+hb_buffer_normalize_glyphs, function in Buffers +
+
+
+hb_buffer_pre_allocate, function in Buffers +
+
+
+hb_buffer_reference, function in Buffers +
+
+
+hb_buffer_reset, function in Buffers +
+
+
+hb_buffer_reverse, function in Buffers +
+
+
+hb_buffer_reverse_clusters, function in Buffers +
+
+
+hb_buffer_serialize_format_t, enum in Buffers +
+
+
+hb_buffer_set_direction, function in Buffers +
+
+
+hb_buffer_set_language, function in Buffers +
+
+
+hb_buffer_set_length, function in Buffers +
+
+
+hb_buffer_set_script, function in Buffers +
+
+
+hb_buffer_set_unicode_funcs, function in Buffers +
+
+
+hb_buffer_set_user_data, function in Buffers +
+
+

D

+
+hb_direction_from_string, function in hb-common +
+
+
+hb_direction_to_string, function in hb-common +
+
+

F

+
+hb_face_create, function in hb-face +
+
+
+hb_face_create_for_tables, function in hb-face +
+
+
+hb_face_destroy, function in hb-face +
+
+
+hb_face_get_empty, function in hb-face +
+
+
+hb_face_get_index, function in hb-face +
+
+
+hb_face_get_upem, function in hb-face +
+
+
+hb_face_get_user_data, function in hb-face +
+
+
+hb_face_is_immutable, function in hb-face +
+
+
+hb_face_make_immutable, function in hb-face +
+
+
+hb_face_reference, function in hb-face +
+
+
+hb_face_reference_blob, function in hb-face +
+
+
+hb_face_reference_table, function in hb-face +
+
+
+hb_face_set_index, function in hb-face +
+
+
+hb_face_set_upem, function in hb-face +
+
+
+hb_face_set_user_data, function in hb-face +
+
+
+hb_font_add_glyph_origin_for_direction, function in hb-font +
+
+
+hb_font_create, function in hb-font +
+
+
+hb_font_create_sub_font, function in hb-font +
+
+
+hb_font_destroy, function in hb-font +
+
+
+hb_font_funcs_create, function in hb-font +
+
+
+hb_font_funcs_destroy, function in hb-font +
+
+
+hb_font_funcs_get_empty, function in hb-font +
+
+
+hb_font_funcs_get_user_data, function in hb-font +
+
+
+hb_font_funcs_is_immutable, function in hb-font +
+
+
+hb_font_funcs_make_immutable, function in hb-font +
+
+
+hb_font_funcs_reference, function in hb-font +
+
+
+hb_font_funcs_set_glyph_contour_point_func, function in hb-font +
+
+
+hb_font_funcs_set_glyph_extents_func, function in hb-font +
+
+
+hb_font_funcs_set_glyph_from_name_func, function in hb-font +
+
+
+hb_font_funcs_set_glyph_func, function in hb-font +
+
+
+hb_font_funcs_set_glyph_h_advance_func, function in hb-font +
+
+
+hb_font_funcs_set_glyph_h_kerning_func, function in hb-font +
+
+
+hb_font_funcs_set_glyph_h_origin_func, function in hb-font +
+
+
+hb_font_funcs_set_glyph_name_func, function in hb-font +
+
+
+hb_font_funcs_set_glyph_v_advance_func, function in hb-font +
+
+
+hb_font_funcs_set_glyph_v_kerning_func, function in hb-font +
+
+
+hb_font_funcs_set_glyph_v_origin_func, function in hb-font +
+
+
+hb_font_funcs_set_user_data, function in hb-font +
+
+
+hb_font_get_empty, function in hb-font +
+
+
+hb_font_get_face, function in hb-font +
+
+
+hb_font_get_glyph, function in hb-font +
+
+
+hb_font_get_glyph_advance_for_direction, function in hb-font +
+
+
+hb_font_get_glyph_contour_point, function in hb-font +
+
+
+hb_font_get_glyph_contour_point_for_origin, function in hb-font +
+
+
+hb_font_get_glyph_extents, function in hb-font +
+
+
+hb_font_get_glyph_extents_for_origin, function in hb-font +
+
+
+hb_font_get_glyph_from_name, function in hb-font +
+
+
+hb_font_get_glyph_h_advance, function in hb-font +
+
+
+hb_font_get_glyph_h_kerning, function in hb-font +
+
+
+hb_font_get_glyph_h_origin, function in hb-font +
+
+
+hb_font_get_glyph_kerning_for_direction, function in hb-font +
+
+
+hb_font_get_glyph_name, function in hb-font +
+
+
+hb_font_get_glyph_origin_for_direction, function in hb-font +
+
+
+hb_font_get_glyph_v_advance, function in hb-font +
+
+
+hb_font_get_glyph_v_kerning, function in hb-font +
+
+
+hb_font_get_glyph_v_origin, function in hb-font +
+
+
+hb_font_get_parent, function in hb-font +
+
+
+hb_font_get_ppem, function in hb-font +
+
+
+hb_font_get_scale, function in hb-font +
+
+
+hb_font_get_user_data, function in hb-font +
+
+
+hb_font_glyph_from_string, function in hb-font +
+
+
+hb_font_glyph_to_string, function in hb-font +
+
+
+hb_font_is_immutable, function in hb-font +
+
+
+hb_font_make_immutable, function in hb-font +
+
+
+hb_font_reference, function in hb-font +
+
+
+hb_font_set_funcs, function in hb-font +
+
+
+hb_font_set_funcs_data, function in hb-font +
+
+
+hb_font_set_ppem, function in hb-font +
+
+
+hb_font_set_scale, function in hb-font +
+
+
+hb_font_set_user_data, function in hb-font +
+
+
+hb_font_subtract_glyph_origin_for_direction, function in hb-font +
+
+
+hb_ft_face_create, function in hb-ft +
+
+
+hb_ft_face_create_cached, function in hb-ft +
+
+
+hb_ft_font_create, function in hb-ft +
+
+

L

+
+hb_language_from_string, function in hb-common +
+
+
+hb_language_get_default, function in hb-common +
+
+
+hb_language_to_string, function in hb-common +
+
+

O

+
+hb_ot_shape_glyphs_closure, function in hb-ot-shape +
+
+
+hb_ot_tag_to_language, function in hb-ot-tag +
+
+

S

+
+hb_script_from_iso15924_tag, function in hb-common +
+
+
+hb_script_from_string, function in hb-common +
+
+
+hb_script_get_horizontal_direction, function in hb-common +
+
+
+hb_script_to_iso15924_tag, function in hb-common +
+
+
+hb_set_add, function in hb-set +
+
+
+hb_set_allocation_successful, function in hb-set +
+
+
+hb_set_clear, function in hb-set +
+
+
+hb_set_create, function in hb-set +
+
+
+hb_set_del, function in hb-set +
+
+
+hb_set_destroy, function in hb-set +
+
+
+hb_set_get_empty, function in hb-set +
+
+
+hb_set_get_user_data, function in hb-set +
+
+
+hb_set_has, function in hb-set +
+
+
+hb_set_intersect, function in hb-set +
+
+
+hb_set_next, function in hb-set +
+
+
+hb_set_reference, function in hb-set +
+
+
+hb_set_set, function in hb-set +
+
+
+hb_set_set_user_data, function in hb-set +
+
+
+hb_set_subtract, function in hb-set +
+
+
+hb_set_symmetric_difference, function in hb-set +
+
+
+hb_set_union, function in hb-set +
+
+
+hb_shape, function in Shaping +
+
+
+hb_shape_full, function in Shaping +
+
+
+hb_shape_list_shapers, function in Shaping +
+
+

T

+
+hb_tag_from_string, function in hb-common +
+
+

U

+
+hb_unicode_combining_class, function in hb-unicode +
+
+
+hb_unicode_compose, function in hb-unicode +
+
+
+hb_unicode_decompose, function in hb-unicode +
+
+
+hb_unicode_decompose_compatibility, function in hb-unicode +
+
+
+hb_unicode_eastasian_width, function in hb-unicode +
+
+
+hb_unicode_funcs_create, function in hb-unicode +
+
+
+hb_unicode_funcs_destroy, function in hb-unicode +
+
+
+hb_unicode_funcs_get_empty, function in hb-unicode +
+
+
+hb_unicode_funcs_get_parent, function in hb-unicode +
+
+
+hb_unicode_funcs_get_user_data, function in hb-unicode +
+
+
+hb_unicode_funcs_is_immutable, function in hb-unicode +
+
+
+hb_unicode_funcs_make_immutable, function in hb-unicode +
+
+
+hb_unicode_funcs_reference, function in hb-unicode +
+
+
+hb_unicode_funcs_set_combining_class_func, function in hb-unicode +
+
+
+hb_unicode_funcs_set_compose_func, function in hb-unicode +
+
+
+hb_unicode_funcs_set_decompose_compatibility_func, function in hb-unicode +
+
+
+hb_unicode_funcs_set_decompose_func, function in hb-unicode +
+
+
+hb_unicode_funcs_set_eastasian_width_func, function in hb-unicode +
+
+
+hb_unicode_funcs_set_general_category_func, function in hb-unicode +
+
+
+hb_unicode_funcs_set_mirroring_func, function in hb-unicode +
+
+
+hb_unicode_funcs_set_script_func, function in hb-unicode +
+
+
+hb_unicode_funcs_set_user_data, function in hb-unicode +
+
+
+hb_unicode_general_category, function in hb-unicode +
+
+
+hb_unicode_mirroring, function in hb-unicode +
+
+
+hb_unicode_script, function in hb-unicode +
+
+

V

+
+hb_version, function in hb-version +
+
+
+hb_version_string, function in hb-version +
+
+
+ + + \ No newline at end of file diff --git a/docs/html/api-index-0-9-20.html b/docs/html/api-index-0-9-20.html new file mode 100644 index 0000000..cb1b1f6 --- /dev/null +++ b/docs/html/api-index-0-9-20.html @@ -0,0 +1,38 @@ + + + + +Index of new symbols in 0.9.20: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 0.9.20

+

B

+
+hb_buffer_flags_t, enum in Buffers +
+
+
+hb_buffer_serialize_flags_t, enum in Buffers +
+
+
+ + + \ No newline at end of file diff --git a/docs/html/api-index-0-9-22.html b/docs/html/api-index-0-9-22.html new file mode 100644 index 0000000..29003d2 --- /dev/null +++ b/docs/html/api-index-0-9-22.html @@ -0,0 +1,34 @@ + + + + +Index of new symbols in 0.9.22: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 0.9.22

+

O

+
+hb_ot_layout_table_get_lookup_count, function in hb-ot-layout +
+
+
+ + + \ No newline at end of file diff --git a/docs/html/api-index-0-9-28.html b/docs/html/api-index-0-9-28.html new file mode 100644 index 0000000..db1a51b --- /dev/null +++ b/docs/html/api-index-0-9-28.html @@ -0,0 +1,34 @@ + + + + +Index of new symbols in 0.9.28: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 0.9.28

+

O

+
+hb_ot_font_set_funcs, function in hb-ot-font +
+
+
+ + + \ No newline at end of file diff --git a/docs/html/api-index-0-9-30.html b/docs/html/api-index-0-9-30.html new file mode 100644 index 0000000..e28f4db --- /dev/null +++ b/docs/html/api-index-0-9-30.html @@ -0,0 +1,41 @@ + + + + +Index of new symbols in 0.9.30: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 0.9.30

+

O

+
+hb_ot_layout_language_get_required_feature, function in hb-ot-layout +
+
+

V

+
+hb_version_atleast, function in hb-version +
+
+
+ + + \ No newline at end of file diff --git a/docs/html/api-index-0-9-31.html b/docs/html/api-index-0-9-31.html new file mode 100644 index 0000000..b011157 --- /dev/null +++ b/docs/html/api-index-0-9-31.html @@ -0,0 +1,46 @@ + + + + +Index of new symbols in 0.9.31: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 0.9.31

+

B

+
+hb_buffer_add_codepoints, function in Buffers +
+
+
+hb_buffer_get_replacement_codepoint, function in Buffers +
+
+
+HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT, macro in Buffers +
+
+
+hb_buffer_set_replacement_codepoint, function in Buffers +
+
+
+ + + \ No newline at end of file diff --git a/docs/html/api-index-0-9-38.html b/docs/html/api-index-0-9-38.html new file mode 100644 index 0000000..263adb8 --- /dev/null +++ b/docs/html/api-index-0-9-38.html @@ -0,0 +1,45 @@ + + + + +Index of new symbols in 0.9.38: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 0.9.38

+

F

+
+hb_ft_face_create_referenced, function in hb-ft +
+
+
+hb_ft_font_create_referenced, function in hb-ft +
+
+

G

+
+hb_glib_blob_create, function in hb-glib +
+
+
+ + + \ No newline at end of file diff --git a/docs/html/api-index-0-9-39.html b/docs/html/api-index-0-9-39.html new file mode 100644 index 0000000..dc36815 --- /dev/null +++ b/docs/html/api-index-0-9-39.html @@ -0,0 +1,34 @@ + + + + +Index of new symbols in 0.9.39: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 0.9.39

+

B

+
+hb_buffer_add_latin1, function in Buffers +
+
+
+ + + \ No newline at end of file diff --git a/docs/html/api-index-0-9-41.html b/docs/html/api-index-0-9-41.html new file mode 100644 index 0000000..b4b2466 --- /dev/null +++ b/docs/html/api-index-0-9-41.html @@ -0,0 +1,34 @@ + + + + +Index of new symbols in 0.9.41: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 0.9.41

+

B

+
+hb_buffer_reverse_range, function in Buffers +
+
+
+ + + \ No newline at end of file diff --git a/docs/html/api-index-0-9-42.html b/docs/html/api-index-0-9-42.html new file mode 100644 index 0000000..4fdb417 --- /dev/null +++ b/docs/html/api-index-0-9-42.html @@ -0,0 +1,38 @@ + + + + +Index of new symbols in 0.9.42: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 0.9.42

+

B

+
+hb_buffer_get_cluster_level, function in Buffers +
+
+
+hb_buffer_set_cluster_level, function in Buffers +
+
+
+ + + \ No newline at end of file diff --git a/docs/html/api-index-0-9-5.html b/docs/html/api-index-0-9-5.html new file mode 100644 index 0000000..5f03c6d --- /dev/null +++ b/docs/html/api-index-0-9-5.html @@ -0,0 +1,56 @@ + + + + +Index of new symbols in 0.9.5: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 0.9.5

+

B

+
+hb_buffer_get_content_type, function in Buffers +
+
+
+hb_buffer_set_content_type, function in Buffers +
+
+

F

+
+hb_feature_from_string, function in Shaping +
+
+
+hb_feature_to_string, function in Shaping +
+
+

T

+
+hb_tag_to_string, function in hb-common +
+
+
+ + + \ No newline at end of file diff --git a/docs/html/api-index-0-9-7.html b/docs/html/api-index-0-9-7.html new file mode 100644 index 0000000..d948391 --- /dev/null +++ b/docs/html/api-index-0-9-7.html @@ -0,0 +1,195 @@ + + + + +Index of new symbols in 0.9.7: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 0.9.7

+

B

+
+hb_buffer_add, function in Buffers +
+
+
+hb_buffer_deserialize_glyphs, function in Buffers +
+
+
+hb_buffer_get_flags, function in Buffers +
+
+
+hb_buffer_get_segment_properties, function in Buffers +
+
+
+hb_buffer_guess_segment_properties, function in Buffers +
+
+
+hb_buffer_serialize_format_from_string, function in Buffers +
+
+
+hb_buffer_serialize_format_to_string, function in Buffers +
+
+
+hb_buffer_serialize_glyphs, function in Buffers +
+
+
+hb_buffer_serialize_list_formats, function in Buffers +
+
+
+hb_buffer_set_flags, function in Buffers +
+
+
+hb_buffer_set_segment_properties, function in Buffers +
+
+

F

+
+hb_face_get_glyph_count, function in hb-face +
+
+
+hb_face_set_glyph_count, function in hb-face +
+
+

O

+
+hb_ot_layout_feature_get_lookups, function in hb-ot-layout +
+
+
+hb_ot_layout_get_glyphs_in_class, function in hb-ot-layout +
+
+
+hb_ot_layout_get_glyph_class, function in hb-ot-layout +
+
+
+hb_ot_layout_lookup_collect_glyphs, function in hb-ot-layout +
+
+
+hb_ot_layout_lookup_substitute_closure, function in hb-ot-layout +
+
+
+hb_ot_layout_lookup_would_substitute, function in hb-ot-layout +
+
+
+hb_ot_shape_plan_collect_lookups, function in hb-ot-layout +
+
+

S

+
+hb_segment_properties_equal, function in Buffers +
+
+
+hb_segment_properties_hash, function in Buffers +
+
+
+hb_set_add_range, function in hb-set +
+
+
+hb_set_del_range, function in hb-set +
+
+
+hb_set_get_max, function in hb-set +
+
+
+hb_set_get_min, function in hb-set +
+
+
+hb_set_get_population, function in hb-set +
+
+
+hb_set_is_empty, function in hb-set +
+
+
+hb_set_is_equal, function in hb-set +
+
+
+hb_set_next_range, function in hb-set +
+
+
+hb_shape_plan_create, function in hb-shape-plan +
+
+
+hb_shape_plan_create_cached, function in hb-shape-plan +
+
+
+hb_shape_plan_destroy, function in hb-shape-plan +
+
+
+hb_shape_plan_execute, function in hb-shape-plan +
+
+
+hb_shape_plan_get_empty, function in hb-shape-plan +
+
+
+hb_shape_plan_get_shaper, function in hb-shape-plan +
+
+
+hb_shape_plan_get_user_data, function in hb-shape-plan +
+
+
+hb_shape_plan_reference, function in hb-shape-plan +
+
+
+hb_shape_plan_set_user_data, function in hb-shape-plan +
+
+
+ + + \ No newline at end of file diff --git a/docs/html/api-index-0-9-8.html b/docs/html/api-index-0-9-8.html new file mode 100644 index 0000000..13ef9b1 --- /dev/null +++ b/docs/html/api-index-0-9-8.html @@ -0,0 +1,34 @@ + + + + +Index of new symbols in 0.9.8: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 0.9.8

+

O

+
+hb_ot_layout_collect_lookups, function in hb-ot-layout +
+
+
+ + + \ No newline at end of file diff --git a/docs/html/api-index-1-0-5.html b/docs/html/api-index-1-0-5.html new file mode 100644 index 0000000..243d7b8 --- /dev/null +++ b/docs/html/api-index-1-0-5.html @@ -0,0 +1,42 @@ + + + + +Index of new symbols in 1.0.5: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 1.0.5

+

F

+
+hb_font_set_parent, function in hb-font +
+
+
+hb_ft_font_get_load_flags, function in hb-ft +
+
+
+hb_ft_font_set_load_flags, function in hb-ft +
+
+
+ + + \ No newline at end of file diff --git a/docs/html/api-index-1-1-2.html b/docs/html/api-index-1-1-2.html new file mode 100644 index 0000000..2d8ba8a --- /dev/null +++ b/docs/html/api-index-1-1-2.html @@ -0,0 +1,38 @@ + + + + +Index of new symbols in 1.1.2: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 1.1.2

+

F

+
+hb_font_funcs_set_font_h_extents_func, function in hb-font +
+
+
+hb_font_funcs_set_font_v_extents_func, function in hb-font +
+
+
+ + + \ No newline at end of file diff --git a/docs/html/api-index-1-1-3.html b/docs/html/api-index-1-1-3.html new file mode 100644 index 0000000..545ed99 --- /dev/null +++ b/docs/html/api-index-1-1-3.html @@ -0,0 +1,49 @@ + + + + +Index of new symbols in 1.1.3: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 1.1.3

+

B

+
+hb_buffer_set_message_func, function in Buffers +
+
+

F

+
+hb_font_get_extents_for_direction, function in hb-font +
+
+
+hb_font_get_h_extents, function in hb-font +
+
+
+hb_font_get_v_extents, function in hb-font +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/html/api-index-full.html b/docs/html/api-index-full.html similarity index 68% rename from docs/reference/html/api-index-full.html rename to docs/html/api-index-full.html index bb4c5a0..b82641b 100644 --- a/docs/reference/html/api-index-full.html +++ b/docs/html/api-index-full.html @@ -2,13 +2,13 @@ -API Index - - - +API Index: HarfBuzz Manual + + + - - + + @@ -43,9 +43,9 @@  |  V Home - +Up Prev -Next +Next

@@ -108,47 +108,55 @@
-hb_buffer_add, function in hb-buffer +hb_buffer_add, function in Buffers
-hb_buffer_add_codepoints, function in hb-buffer +hb_buffer_add_codepoints, function in Buffers
-hb_buffer_add_utf16, function in hb-buffer +hb_buffer_add_latin1, function in Buffers
-hb_buffer_add_utf32, function in hb-buffer +hb_buffer_add_utf16, function in Buffers
-hb_buffer_add_utf8, function in hb-buffer +hb_buffer_add_utf32, function in Buffers
-hb_buffer_allocation_successful, function in hb-buffer +hb_buffer_add_utf8, function in Buffers
-hb_buffer_clear_contents, function in hb-buffer +hb_buffer_allocation_successful, function in Buffers
-hb_buffer_content_type_t, enum in hb-buffer +hb_buffer_clear_contents, function in Buffers
-hb_buffer_create, function in hb-buffer +hb_buffer_cluster_level_t, enum in Buffers
-hb_buffer_deserialize_glyphs, function in hb-buffer +hb_buffer_content_type_t, enum in Buffers
-hb_buffer_destroy, function in hb-buffer +hb_buffer_create, function in Buffers +
+
+
+hb_buffer_deserialize_glyphs, function in Buffers +
+
+
+hb_buffer_destroy, function in Buffers
@@ -156,87 +164,103 @@
-hb_buffer_flags_t, enum in hb-buffer +hb_buffer_flags_t, enum in Buffers +
+
+
+hb_buffer_get_cluster_level, function in Buffers +
+
+
+hb_buffer_get_content_type, function in Buffers +
+
+
+hb_buffer_get_direction, function in Buffers
-hb_buffer_get_content_type, function in hb-buffer +hb_buffer_get_empty, function in Buffers
-hb_buffer_get_direction, function in hb-buffer +hb_buffer_get_flags, function in Buffers
-hb_buffer_get_empty, function in hb-buffer +hb_buffer_get_glyph_infos, function in Buffers
-hb_buffer_get_flags, function in hb-buffer +hb_buffer_get_glyph_positions, function in Buffers
-hb_buffer_get_glyph_infos, function in hb-buffer +hb_buffer_get_language, function in Buffers
-hb_buffer_get_glyph_positions, function in hb-buffer +hb_buffer_get_length, function in Buffers
-hb_buffer_get_language, function in hb-buffer +hb_buffer_get_replacement_codepoint, function in Buffers
-hb_buffer_get_length, function in hb-buffer +hb_buffer_get_script, function in Buffers
-hb_buffer_get_replacement_codepoint, function in hb-buffer +hb_buffer_get_segment_properties, function in Buffers
-hb_buffer_get_script, function in hb-buffer +hb_buffer_get_unicode_funcs, function in Buffers
-hb_buffer_get_segment_properties, function in hb-buffer +hb_buffer_get_user_data, function in Buffers
-hb_buffer_get_unicode_funcs, function in hb-buffer +hb_buffer_guess_segment_properties, function in Buffers
-hb_buffer_get_user_data, function in hb-buffer +hb_buffer_message_func_t, user_function in Buffers
-hb_buffer_guess_segment_properties, function in hb-buffer +hb_buffer_normalize_glyphs, function in Buffers
-hb_buffer_normalize_glyphs, function in hb-buffer +hb_buffer_pre_allocate, function in Buffers
-hb_buffer_pre_allocate, function in hb-buffer +hb_buffer_reference, function in Buffers
-hb_buffer_reference, function in hb-buffer +HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT, macro in Buffers
-hb_buffer_reset, function in hb-buffer +hb_buffer_reset, function in Buffers
-hb_buffer_reverse, function in hb-buffer +hb_buffer_reverse, function in Buffers
-hb_buffer_reverse_clusters, function in hb-buffer +hb_buffer_reverse_clusters, function in Buffers +
+
+
+hb_buffer_reverse_range, function in Buffers
@@ -244,71 +268,79 @@
-hb_buffer_serialize_flags_t, enum in hb-buffer +hb_buffer_serialize_flags_t, enum in Buffers +
+
+
+hb_buffer_serialize_format_from_string, function in Buffers +
+
+
+hb_buffer_serialize_format_t, enum in Buffers
-hb_buffer_serialize_format_from_string, function in hb-buffer +hb_buffer_serialize_format_to_string, function in Buffers
-hb_buffer_serialize_format_t, enum in hb-buffer +hb_buffer_serialize_glyphs, function in Buffers
-hb_buffer_serialize_format_to_string, function in hb-buffer +hb_buffer_serialize_list_formats, function in Buffers
-hb_buffer_serialize_glyphs, function in hb-buffer +hb_buffer_set_cluster_level, function in Buffers
-hb_buffer_serialize_list_formats, function in hb-buffer +hb_buffer_set_content_type, function in Buffers
-hb_buffer_set_content_type, function in hb-buffer +hb_buffer_set_direction, function in Buffers
-hb_buffer_set_direction, function in hb-buffer +hb_buffer_set_flags, function in Buffers
-hb_buffer_set_flags, function in hb-buffer +hb_buffer_set_language, function in Buffers
-hb_buffer_set_language, function in hb-buffer +hb_buffer_set_length, function in Buffers
-hb_buffer_set_length, function in hb-buffer +hb_buffer_set_message_func, function in Buffers
-hb_buffer_set_replacement_codepoint, function in hb-buffer +hb_buffer_set_replacement_codepoint, function in Buffers
-hb_buffer_set_script, function in hb-buffer +hb_buffer_set_script, function in Buffers
-hb_buffer_set_segment_properties, function in hb-buffer +hb_buffer_set_segment_properties, function in Buffers
-hb_buffer_set_unicode_funcs, function in hb-buffer +hb_buffer_set_unicode_funcs, function in Buffers
-hb_buffer_set_user_data, function in hb-buffer +hb_buffer_set_user_data, function in Buffers
-hb_buffer_t, typedef in hb-buffer +hb_buffer_t, typedef in Buffers

C

@@ -451,15 +483,15 @@
-hb_feature_from_string, function in hb-shape +hb_feature_from_string, function in Shaping
-hb_feature_t, struct in hb-shape +hb_feature_t, struct in Shaping
-hb_feature_to_string, function in hb-shape +hb_feature_to_string, function in Shaping
@@ -507,6 +539,14 @@
+hb_font_funcs_set_font_h_extents_func, function in hb-font +
+
+
+hb_font_funcs_set_font_v_extents_func, function in hb-font +
+
+
hb_font_funcs_set_glyph_contour_point_func, function in hb-font
@@ -563,10 +603,26 @@
+hb_font_get_extents_for_direction, function in hb-font +
+
+
hb_font_get_face, function in hb-font
+hb_font_get_font_extents_func_t, user_function in hb-font +
+
+
+hb_font_get_font_h_extents_func_t, typedef in hb-font +
+
+
+hb_font_get_font_v_extents_func_t, typedef in hb-font +
+
+
hb_font_get_glyph, function in hb-font
@@ -687,6 +743,10 @@
+hb_font_get_h_extents, function in hb-font +
+
+
hb_font_get_parent, function in hb-font
@@ -703,6 +763,10 @@
+hb_font_get_v_extents, function in hb-font +
+
+
hb_font_glyph_from_string, function in hb-font
@@ -731,6 +795,10 @@
+hb_font_set_parent, function in hb-font +
+
+
hb_font_set_ppem, function in hb-font
@@ -759,19 +827,39 @@
+hb_ft_face_create_referenced, function in hb-ft +
+
+
hb_ft_font_create, function in hb-ft
+hb_ft_font_create_referenced, function in hb-ft +
+
+
hb_ft_font_get_face, function in hb-ft
+hb_ft_font_get_load_flags, function in hb-ft +
+
+
hb_ft_font_set_funcs, function in hb-ft
+
+hb_ft_font_set_load_flags, function in hb-ft +
+

G

+hb_glib_blob_create, function in hb-glib +
+
+
hb_glib_get_unicode_funcs, function in hb-glib
@@ -784,11 +872,203 @@
-hb_glyph_info_t, struct in hb-buffer +hb_glyph_info_t, struct in Buffers +
+
+
+hb_glyph_position_t, struct in Buffers +
+
+
+hb_gobject_blob_get_type, function in hb-gobject +
+
+
+hb_gobject_buffer_cluster_level_get_type, function in hb-gobject +
+
+
+hb_gobject_buffer_content_type_get_type, function in hb-gobject +
+
+
+hb_gobject_buffer_flags_get_type, function in hb-gobject +
+
+
+hb_gobject_buffer_get_type, function in hb-gobject +
+
+
+hb_gobject_buffer_serialize_flags_get_type, function in hb-gobject +
+
+
+hb_gobject_buffer_serialize_format_get_type, function in hb-gobject +
+
+
+hb_gobject_direction_get_type, function in hb-gobject +
+
+
+hb_gobject_face_get_type, function in hb-gobject +
+
+
+hb_gobject_feature_get_type, function in hb-gobject
-hb_glyph_position_t, struct in hb-buffer +hb_gobject_font_funcs_get_type, function in hb-gobject +
+
+
+hb_gobject_font_get_type, function in hb-gobject +
+
+
+hb_gobject_glyph_info_get_type, function in hb-gobject +
+
+
+hb_gobject_glyph_position_get_type, function in hb-gobject +
+
+
+hb_gobject_memory_mode_get_type, function in hb-gobject +
+
+
+hb_gobject_ot_layout_glyph_class_get_type, function in hb-gobject +
+
+
+hb_gobject_script_get_type, function in hb-gobject +
+
+
+hb_gobject_segment_properties_get_type, function in hb-gobject +
+
+
+hb_gobject_set_get_type, function in hb-gobject +
+
+
+hb_gobject_shape_plan_get_type, function in hb-gobject +
+
+
+HB_GOBJECT_TYPE_BLOB, macro in hb-gobject +
+
+
+HB_GOBJECT_TYPE_BUFFER, macro in hb-gobject +
+
+
+HB_GOBJECT_TYPE_BUFFER_CLUSTER_LEVEL, macro in hb-gobject +
+
+
+HB_GOBJECT_TYPE_BUFFER_CONTENT_TYPE, macro in hb-gobject +
+
+
+HB_GOBJECT_TYPE_BUFFER_FLAGS, macro in hb-gobject +
+
+
+HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FLAGS, macro in hb-gobject +
+
+
+HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FORMAT, macro in hb-gobject +
+
+
+HB_GOBJECT_TYPE_DIRECTION, macro in hb-gobject +
+
+
+HB_GOBJECT_TYPE_FACE, macro in hb-gobject +
+
+
+HB_GOBJECT_TYPE_FEATURE, macro in hb-gobject +
+
+
+HB_GOBJECT_TYPE_FONT, macro in hb-gobject +
+
+
+HB_GOBJECT_TYPE_FONT_FUNCS, macro in hb-gobject +
+
+
+HB_GOBJECT_TYPE_GLYPH_INFO, macro in hb-gobject +
+
+
+HB_GOBJECT_TYPE_GLYPH_POSITION, macro in hb-gobject +
+
+
+HB_GOBJECT_TYPE_MEMORY_MODE, macro in hb-gobject +
+
+
+HB_GOBJECT_TYPE_OT_LAYOUT_GLYPH_CLASS, macro in hb-gobject +
+
+
+HB_GOBJECT_TYPE_SCRIPT, macro in hb-gobject +
+
+
+HB_GOBJECT_TYPE_SEGMENT_PROPERTIES, macro in hb-gobject +
+
+
+HB_GOBJECT_TYPE_SET, macro in hb-gobject +
+
+
+HB_GOBJECT_TYPE_SHAPE_PLAN, macro in hb-gobject +
+
+
+HB_GOBJECT_TYPE_UNICODE_COMBINING_CLASS, macro in hb-gobject +
+
+
+HB_GOBJECT_TYPE_UNICODE_FUNCS, macro in hb-gobject +
+
+
+HB_GOBJECT_TYPE_UNICODE_GENERAL_CATEGORY, macro in hb-gobject +
+
+
+HB_GOBJECT_TYPE_USER_DATA_KEY, macro in hb-gobject +
+
+
+hb_gobject_unicode_combining_class_get_type, function in hb-gobject +
+
+
+hb_gobject_unicode_funcs_get_type, function in hb-gobject +
+
+
+hb_gobject_unicode_general_category_get_type, function in hb-gobject +
+
+
+hb_gobject_user_data_key_get_type, function in hb-gobject
@@ -830,7 +1110,7 @@
-hb_language_t, typedef in hb-common +hb_language_t, typedef in hb-common
@@ -848,7 +1128,7 @@

O

-hb_ot_font_set_funcs, function in hb-ot-font +hb_ot_font_set_funcs, function in hb-ot-font
@@ -920,6 +1200,10 @@ hb_ot_font_set_funcs, function in hb-ot-font
+hb_ot_layout_language_get_required_feature_index, function in hb-ot-layout +
+
+
hb_ot_layout_lookup_collect_glyphs, function in hb-ot-layout
@@ -968,7 +1252,7 @@ hb_ot_font_set_funcs, function in hb-ot-font
-hb_ot_shape_glyphs_closure, function in hb-ot-shape +hb_ot_shape_glyphs_closure, function in hb-ot-shape
@@ -1004,6 +1288,10 @@ hb_ot_shape_glyphs_closure, function in hb-ot-shape
+HB_OT_TAG_JSTF, macro in hb-ot-layout +
+
+
hb_ot_tag_to_language, function in hb-ot-tag
@@ -1047,19 +1335,19 @@ hb_ot_shape_glyphs_closure, function in hb-ot-shape
-HB_SEGMENT_PROPERTIES_DEFAULT, macro in hb-buffer +HB_SEGMENT_PROPERTIES_DEFAULT, macro in Buffers
-hb_segment_properties_equal, function in hb-buffer +hb_segment_properties_equal, function in Buffers
-hb_segment_properties_hash, function in hb-buffer +hb_segment_properties_hash, function in Buffers
-hb_segment_properties_t, struct in hb-buffer +hb_segment_properties_t, struct in Buffers
@@ -1175,15 +1463,15 @@ hb_ot_shape_glyphs_closure, function in hb-ot-shape
-hb_shape, function in hb-shape +hb_shape, function in Shaping
-hb_shape_full, function in hb-shape +hb_shape_full, function in Shaping
-hb_shape_list_shapers, function in hb-shape +hb_shape_list_shapers, function in Shaping
@@ -1240,6 +1528,10 @@ hb_ot_shape_glyphs_closure, function in hb-ot-shape
+HB_TAG_MAX_SIGNED, macro in hb-common +
+
+
HB_TAG_NONE, macro in hb-common
@@ -1422,6 +1714,14 @@ hb_ot_shape_glyphs_closure, function in hb-ot-shape
+HB_VERSION_ATLEAST, macro in hb-version +
+
+
+hb_version_atleast, function in hb-version +
+
+
HB_VERSION_MAJOR, macro in hb-version
@@ -1443,7 +1743,6 @@ hb_ot_shape_glyphs_closure, function in hb-ot-shape
+
Generated by GTK-Doc V1.24.1
\ No newline at end of file diff --git a/docs/html/buffers-language-script-and-direction.html b/docs/html/buffers-language-script-and-direction.html new file mode 100644 index 0000000..5447496 --- /dev/null +++ b/docs/html/buffers-language-script-and-direction.html @@ -0,0 +1,87 @@ + + + + +Buffers, language, script and direction: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Buffers, language, script and direction

+ +

+ The input to Harfbuzz is a series of Unicode characters, stored in a + buffer. In this chapter, we'll look at how to set up a buffer with + the text that we want and then customize the properties of the + buffer. +

+
+

+Creating and destroying buffers

+

+ As we saw in our initial example, a buffer is created and + initialized with hb_buffer_create(). This + produces a new, empty buffer object, instantiated with some + default values and ready to accept your Unicode strings. +

+

+ Harfbuzz manages the memory of objects that it creates (such as + buffers), so you don't have to. When you have finished working on + a buffer, you can call hb_buffer_destroy(): +

+
+  hb_buffer_t *buffer = hb_buffer_create();
+  ...
+  hb_buffer_destroy(buffer);
+
+

+ This will destroy the object and free its associated memory - + unless some other part of the program holds a reference to this + buffer. If you acquire a Harfbuzz buffer from another subsystem + and want to ensure that it is not garbage collected by someone + else destroying it, you should increase its reference count: +

+
+void somefunc(hb_buffer_t *buffer) {
+  buffer = hb_buffer_reference(buffer);
+  ...
+
+

+ And then decrease it once you're done with it: +

+
+  hb_buffer_destroy(buffer);
+}
+
+

+ To throw away all the data in your buffer and start from scratch, + call hb_buffer_reset(buffer). If you want to + throw away the string in the buffer but keep the options, you can + instead call hb_buffer_clear_contents(buffer). +

+
+
+ + + \ No newline at end of file diff --git a/docs/html/building.html b/docs/html/building.html new file mode 100644 index 0000000..0351b6c --- /dev/null +++ b/docs/html/building.html @@ -0,0 +1,80 @@ + + + + +Building: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Building

+

+ On Linux, install the development packages for FreeType, Cairo, and GLib. + For example, on Ubuntu / Debian, you would do: +

+
+sudo apt-get install gcc g++ libfreetype6-dev libglib2.0-dev libcairo2-dev
+      
+

+ whereas on Fedora, RHEL, CentOS, and other Red Hat based systems you would do: +

+
+sudo yum install gcc gcc-c++ freetype-devel glib2-devel cairo-devel
+      
+

+ or using MacPorts: +

+
+sudo port install freetype glib2 cairo
+      
+

+

+

+ If you are using a tarball, you can now proceed to running + configure and make as with any + other standard package. That should leave you with a shared library in + src/, and a few utility programs including hb-view + and hb-shape under util/. +

+

+ If you are bootstraping from git, you need a few more tools before you + can run autogen.sh for the first time. Namely, + pkg-config and ragel. + Again, on Ubuntu / Debian: +

+
+sudo apt-get install autoconf automake libtool pkg-config ragel gtk-doc-tools
+      
+

+ and on Fedora, RHEL, CentOS: +

+
+sudo yum install autoconf automake libtool pkgconfig ragel gtk-doc
+      
+

+ or using MacPorts: +

+
+sudo port install autoconf automake libtool pkgconfig ragel gtk-doc
+      
+

+

+
+ + + \ No newline at end of file diff --git a/docs/reference/html/ch01.html b/docs/html/ch07.html similarity index 72% rename from docs/reference/html/ch01.html rename to docs/html/ch07.html index a86abae..69fe962 100644 --- a/docs/reference/html/ch01.html +++ b/docs/html/ch07.html @@ -2,27 +2,27 @@ -[Insert title here] - - - - +Harfbuzz API: HarfBuzz Manual + + + + - + - - + +

-[Insert title here]

-
+Harfbuzz API
+
hb
@@ -33,7 +33,7 @@ hb-unicode
-hb-buffer +Buffers — Input and output buffers
hb-blob @@ -45,7 +45,7 @@ hb-font
-hb-shape +Shaping — Conversion of text strings into positioned glyphs
hb-version @@ -66,6 +66,12 @@ hb-ot-tag
+hb-ot-font +
+
+hb-ot-shape +
+
hb-shape-plan
@@ -92,7 +98,6 @@
+
Generated by GTK-Doc V1.24.1 \ No newline at end of file diff --git a/docs/html/customizing-unicode-functions.html b/docs/html/customizing-unicode-functions.html new file mode 100644 index 0000000..f496df4 --- /dev/null +++ b/docs/html/customizing-unicode-functions.html @@ -0,0 +1,31 @@ + + + + +Customizing Unicode functions: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Customizing Unicode functions

+

+

+
+ + + \ No newline at end of file diff --git a/docs/reference/html/deprecated-api-index.html b/docs/html/deprecated-api-index.html similarity index 61% rename from docs/reference/html/deprecated-api-index.html rename to docs/html/deprecated-api-index.html index 3ccc21a..5b5bfbc 100644 --- a/docs/reference/html/deprecated-api-index.html +++ b/docs/html/deprecated-api-index.html @@ -2,23 +2,25 @@ -Index of deprecated API - - - - +Index of deprecated API: HarfBuzz Manual + + + + - + - - + +
@@ -33,6 +35,15 @@ HB_BUFFER_SERIALIZE_FLAGS_DEFAULT, macro in hb-deprecated
+

F

+
+hb_font_funcs_set_glyph_func, function in hb-font +
+
+
+hb_font_get_glyph_func_t, user_function in hb-font +
+

S

HB_SCRIPT_CANADIAN_ABORIGINAL, macro in hb-deprecated @@ -40,7 +51,6 @@
+
Generated by GTK-Doc V1.24.1 \ No newline at end of file diff --git a/docs/html/fonts-and-faces.html b/docs/html/fonts-and-faces.html new file mode 100644 index 0000000..0700a1c --- /dev/null +++ b/docs/html/fonts-and-faces.html @@ -0,0 +1,40 @@ + + + + +Fonts and faces: HarfBuzz Manual + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/html/harfbuzz-Buffers.html b/docs/html/harfbuzz-Buffers.html new file mode 100644 index 0000000..6c7d0e9 --- /dev/null +++ b/docs/html/harfbuzz-Buffers.html @@ -0,0 +1,2722 @@ + + + + +Buffers: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Buffers

+

Buffers — Input and output buffers

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+hb_buffer_t * + +hb_buffer_create () +
+hb_buffer_t * + +hb_buffer_reference () +
+hb_buffer_t * + +hb_buffer_get_empty () +
+void + +hb_buffer_destroy () +
+void + +hb_buffer_reset () +
+void + +hb_buffer_clear_contents () +
+hb_bool_t + +hb_buffer_pre_allocate () +
+hb_bool_t + +hb_buffer_allocation_successful () +
+void + +hb_buffer_add () +
+void + +hb_buffer_add_codepoints () +
+void + +hb_buffer_add_utf32 () +
+void + +hb_buffer_add_utf16 () +
+void + +hb_buffer_add_utf8 () +
+void + +hb_buffer_add_latin1 () +
+void + +hb_buffer_set_content_type () +
+hb_buffer_content_type_t + +hb_buffer_get_content_type () +
+void + +hb_buffer_set_direction () +
+hb_direction_t + +hb_buffer_get_direction () +
+void + +hb_buffer_set_script () +
+hb_script_t + +hb_buffer_get_script () +
+void + +hb_buffer_set_language () +
+hb_language_t + +hb_buffer_get_language () +
+void + +hb_buffer_set_flags () +
+hb_buffer_flags_t + +hb_buffer_get_flags () +
+void + +hb_buffer_set_cluster_level () +
+hb_buffer_cluster_level_t + +hb_buffer_get_cluster_level () +
+hb_bool_t + +hb_buffer_set_length () +
unsigned int + +hb_buffer_get_length () +
+void + +hb_buffer_set_segment_properties () +
+void + +hb_buffer_get_segment_properties () +
+void + +hb_buffer_guess_segment_properties () +
+void + +hb_buffer_set_unicode_funcs () +
+hb_unicode_funcs_t * + +hb_buffer_get_unicode_funcs () +
+hb_bool_t + +hb_buffer_set_user_data () +
+void * + +hb_buffer_get_user_data () +
+hb_glyph_info_t * + +hb_buffer_get_glyph_infos () +
+hb_glyph_position_t * + +hb_buffer_get_glyph_positions () +
+void + +hb_buffer_set_replacement_codepoint () +
+hb_codepoint_t + +hb_buffer_get_replacement_codepoint () +
+void + +hb_buffer_normalize_glyphs () +
+void + +hb_buffer_reverse () +
+void + +hb_buffer_reverse_range () +
+void + +hb_buffer_reverse_clusters () +
unsigned int + +hb_buffer_serialize_glyphs () +
+hb_bool_t + +hb_buffer_deserialize_glyphs () +
+hb_buffer_serialize_format_t + +hb_buffer_serialize_format_from_string () +
const char * + +hb_buffer_serialize_format_to_string () +
const char ** + +hb_buffer_serialize_list_formats () +
+hb_bool_t + +hb_segment_properties_equal () +
unsigned int + +hb_segment_properties_hash () +
+void + +hb_buffer_set_message_func () +
+hb_bool_t + +(*hb_buffer_message_func_t) () +
+
+
+

Types and Values

+ +
+
+

Object Hierarchy

+
    GBoxed
+    ├── hb_buffer_t
+    ├── hb_glyph_info_t
+    ├── hb_glyph_position_t
+    ╰── hb_segment_properties_t
+    GEnum
+    ├── hb_buffer_cluster_level_t
+    ├── hb_buffer_content_type_t
+    ╰── hb_buffer_serialize_format_t
+    GFlags
+    ├── hb_buffer_flags_t
+    ╰── hb_buffer_serialize_flags_t
+
+
+
+

Includes

+
#include <hb.h>
+
+
+
+

Description

+

Buffers serve dual role in HarfBuzz; they hold the input characters that are +passed hb_shape(), and after shaping they hold the output glyphs.

+
+
+

Functions

+
+

hb_buffer_create ()

+
hb_buffer_t *
+hb_buffer_create (void);
+

Creates a new hb_buffer_t with all properties to defaults.

+

[Xconstructor]

+
+

Returns

+

A newly allocated hb_buffer_t with a reference count of 1. The initial +reference count should be released with hb_buffer_destroy() when you are done +using the hb_buffer_t. This function never returns NULL. If memory cannot +be allocated, a special hb_buffer_t object will be returned on which +hb_buffer_allocation_successful() returns false.

+

[transfer full]

+
+

Since: 0.9.2

+
+
+
+

hb_buffer_reference ()

+
hb_buffer_t *
+hb_buffer_reference (hb_buffer_t *buffer);
+

Increases the reference count on buffer + by one. This prevents buffer + from +being destroyed until a matching call to hb_buffer_destroy() is made.

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

buffer

an hb_buffer_t.

 
+
+
+

Returns

+

The referenced hb_buffer_t.

+

[transfer full]

+
+

Since: 0.9.2

+
+
+
+

hb_buffer_get_empty ()

+
hb_buffer_t *
+hb_buffer_get_empty (void);
+
+

Returns

+

.

+

[transfer full]

+
+

Since: 0.9.2

+
+
+
+

hb_buffer_destroy ()

+
void
+hb_buffer_destroy (hb_buffer_t *buffer);
+

Deallocate the buffer +. +Decreases the reference count on buffer + by one. If the result is zero, then +buffer + and all associated resources are freed. See hb_buffer_reference().

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

buffer

an hb_buffer_t.

 
+
+

Since: 0.9.2

+
+
+
+

hb_buffer_reset ()

+
void
+hb_buffer_reset (hb_buffer_t *buffer);
+

Resets the buffer to its initial status, as if it was just newly created +with hb_buffer_create().

+
+

Parameters

+
+++++ + + + + + +

buffer

an hb_buffer_t.

 
+
+

Since: 0.9.2

+
+
+
+

hb_buffer_clear_contents ()

+
void
+hb_buffer_clear_contents (hb_buffer_t *buffer);
+

Similar to hb_buffer_reset(), but does not clear the Unicode functions and +the replacement code point.

+
+

Parameters

+
+++++ + + + + + +

buffer

an hb_buffer_t.

 
+
+

Since: 0.9.11

+
+
+
+

hb_buffer_pre_allocate ()

+
hb_bool_t
+hb_buffer_pre_allocate (hb_buffer_t *buffer,
+                        unsigned int size);
+

Pre allocates memory for buffer + to fit at least size + number of items.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

buffer

an hb_buffer_t.

 

size

number of items to pre allocate.

 
+
+
+

Returns

+

true if buffer +memory allocation succeeded, false otherwise.

+
+

Since: 0.9.2

+
+
+
+

hb_buffer_allocation_successful ()

+
hb_bool_t
+hb_buffer_allocation_successful (hb_buffer_t *buffer);
+

Check if allocating memory for the buffer succeeded.

+
+

Parameters

+
+++++ + + + + + +

buffer

an hb_buffer_t.

 
+
+
+

Returns

+

true if buffer +memory allocation succeeded, false otherwise.

+
+

Since: 0.9.2

+
+
+
+

hb_buffer_add ()

+
void
+hb_buffer_add (hb_buffer_t *buffer,
+               hb_codepoint_t codepoint,
+               unsigned int cluster);
+

Appends a character with the Unicode value of codepoint + to buffer +, and +gives it the initial cluster value of cluster +. Clusters can be any thing +the client wants, they are usually used to refer to the index of the +character in the input text stream and are output in +hb_glyph_info_t.cluster field.

+

This function does not check the validity of codepoint +, it is up to the +caller to ensure it is a valid Unicode code point.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

buffer

an hb_buffer_t.

 

codepoint

a Unicode code point.

 

cluster

the cluster value of codepoint +.

 
+
+

Since: 0.9.7

+
+
+
+

hb_buffer_add_codepoints ()

+
void
+hb_buffer_add_codepoints (hb_buffer_t *buffer,
+                          const hb_codepoint_t *text,
+                          int text_length,
+                          unsigned int item_offset,
+                          int item_length);
+

Appends characters from text + array to buffer +. The item_offset + is the +position of the first character from text + that will be appended, and +item_length + is the number of character. When shaping part of a larger text +(e.g. a run of text from a paragraph), instead of passing just the substring +corresponding to the run, it is preferable to pass the whole +paragraph and specify the run start and length as item_offset + and +item_length +, respectively, to give HarfBuzz the full context to be able, +for example, to do cross-run Arabic shaping or properly handle combining +marks at stat of run.

+

This function does not check the validity of text +, it is up to the caller +to ensure it contains a valid Unicode code points.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

buffer

a hb_buffer_t to append characters to.

 

text

an array of Unicode code points to append.

[array length=text_length]

text_length

the length of the text +, or -1 if it is NULL terminated.

 

item_offset

the offset of the first code point to add to the buffer +.

 

item_length

the number of code points to add to the buffer +, or -1 for the +end of text +(assuming it is NULL terminated).

 
+
+

Since: 0.9.31

+
+
+
+

hb_buffer_add_utf32 ()

+
void
+hb_buffer_add_utf32 (hb_buffer_t *buffer,
+                     const uint32_t *text,
+                     int text_length,
+                     unsigned int item_offset,
+                     int item_length);
+

See hb_buffer_add_codepoints().

+

Replaces invalid UTF-32 characters with the buffer + replacement code point, +see hb_buffer_set_replacement_codepoint().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

buffer

an hb_buffer_t.

 

text

an array of UTF-32 characters to append.

[array length=text_length]

text_length

the length of the text +, or -1 if it is NULL terminated.

 

item_offset

the offset of the first character to add to the buffer +.

 

item_length

the number of characters to add to the buffer +, or -1 for the +end of text +(assuming it is NULL terminated).

 
+
+

Since: 0.9.2

+
+
+
+

hb_buffer_add_utf16 ()

+
void
+hb_buffer_add_utf16 (hb_buffer_t *buffer,
+                     const uint16_t *text,
+                     int text_length,
+                     unsigned int item_offset,
+                     int item_length);
+

See hb_buffer_add_codepoints().

+

Replaces invalid UTF-16 characters with the buffer + replacement code point, +see hb_buffer_set_replacement_codepoint().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

buffer

an hb_buffer_t.

 

text

an array of UTF-16 characters to append.

[array length=text_length]

text_length

the length of the text +, or -1 if it is NULL terminated.

 

item_offset

the offset of the first character to add to the buffer +.

 

item_length

the number of characters to add to the buffer +, or -1 for the +end of text +(assuming it is NULL terminated).

 
+
+

Since: 0.9.2

+
+
+
+

hb_buffer_add_utf8 ()

+
void
+hb_buffer_add_utf8 (hb_buffer_t *buffer,
+                    const char *text,
+                    int text_length,
+                    unsigned int item_offset,
+                    int item_length);
+

See hb_buffer_add_codepoints().

+

Replaces invalid UTF-8 characters with the buffer + replacement code point, +see hb_buffer_set_replacement_codepoint().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

buffer

an hb_buffer_t.

 

text

an array of UTF-8 +characters to append.

[array length=text_length][element-type uint8_t]

text_length

the length of the text +, or -1 if it is NULL terminated.

 

item_offset

the offset of the first character to add to the buffer +.

 

item_length

the number of characters to add to the buffer +, or -1 for the +end of text +(assuming it is NULL terminated).

 
+
+

Since: 0.9.2

+
+
+
+

hb_buffer_add_latin1 ()

+
void
+hb_buffer_add_latin1 (hb_buffer_t *buffer,
+                      const uint8_t *text,
+                      int text_length,
+                      unsigned int item_offset,
+                      int item_length);
+

Similar to hb_buffer_add_codepoints(), but allows only access to first 256 +Unicode code points that can fit in 8-bit strings.

+
Has nothing to do with non-Unicode Latin-1 encoding.
+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

buffer

an hb_buffer_t.

 

text

an array of UTF-8 +characters to append.

[array length=text_length][element-type uint8_t]

text_length

the length of the text +, or -1 if it is NULL terminated.

 

item_offset

the offset of the first character to add to the buffer +.

 

item_length

the number of characters to add to the buffer +, or -1 for the +end of text +(assuming it is NULL terminated).

 
+
+

Since: 0.9.39

+
+
+
+

hb_buffer_set_content_type ()

+
void
+hb_buffer_set_content_type (hb_buffer_t *buffer,
+                            hb_buffer_content_type_t content_type);
+

Sets the type of buffer + contents, buffers are either empty, contain +characters (before shaping) or glyphs (the result of shaping).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

buffer

an hb_buffer_t.

 

content_type

the type of buffer contents to set

 
+
+

Since: 0.9.5

+
+
+
+

hb_buffer_get_content_type ()

+
hb_buffer_content_type_t
+hb_buffer_get_content_type (hb_buffer_t *buffer);
+

see hb_buffer_set_content_type().

+
+

Parameters

+
+++++ + + + + + +

buffer

an hb_buffer_t.

 
+
+
+

Returns

+

The type of buffer +contents.

+
+

Since: 0.9.5

+
+
+
+

hb_buffer_set_direction ()

+
void
+hb_buffer_set_direction (hb_buffer_t *buffer,
+                         hb_direction_t direction);
+

Set the text flow direction of the buffer. No shaping can happen without +setting buffer + direction, and it controls the visual direction for the +output glyphs; for RTL direction the glyphs will be reversed. Many layout +features depend on the proper setting of the direction, for example, +reversing RTL text before shaping, then shaping with LTR direction is not +the same as keeping the text in logical order and shaping with RTL +direction.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

buffer

an hb_buffer_t.

 

direction

the hb_direction_t of the buffer +

 
+
+

Since: 0.9.2

+
+
+
+

hb_buffer_get_direction ()

+
hb_direction_t
+hb_buffer_get_direction (hb_buffer_t *buffer);
+

See hb_buffer_set_direction()

+
+

Parameters

+
+++++ + + + + + +

buffer

an hb_buffer_t.

 
+
+
+

Returns

+

The direction of the buffer +.

+
+

Since: 0.9.2

+
+
+
+

hb_buffer_set_script ()

+
void
+hb_buffer_set_script (hb_buffer_t *buffer,
+                      hb_script_t script);
+

Sets the script of buffer + to script +.

+

Script is crucial for choosing the proper shaping behaviour for scripts that +require it (e.g. Arabic) and the which OpenType features defined in the font +to be applied.

+

You can pass one of the predefined hb_script_t values, or use +hb_script_from_string() or hb_script_from_iso15924_tag() to get the +corresponding script from an ISO 15924 script tag.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

buffer

an hb_buffer_t.

 

script

an hb_script_t to set.

 
+
+

Since: 0.9.2

+
+
+
+

hb_buffer_get_script ()

+
hb_script_t
+hb_buffer_get_script (hb_buffer_t *buffer);
+

See hb_buffer_set_script().

+
+

Parameters

+
+++++ + + + + + +

buffer

an hb_buffer_t.

 
+
+
+

Returns

+

The hb_script_t of the buffer +.

+
+

Since: 0.9.2

+
+
+
+

hb_buffer_set_language ()

+
void
+hb_buffer_set_language (hb_buffer_t *buffer,
+                        hb_language_t language);
+

Sets the language of buffer + to language +.

+

Languages are crucial for selecting which OpenType feature to apply to the +buffer which can result in applying language-specific behaviour. Languages +are orthogonal to the scripts, and though they are related, they are +different concepts and should not be confused with each other.

+

Use hb_language_from_string() to convert from ISO 639 language codes to +hb_language_t.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

buffer

an hb_buffer_t.

 

language

an hb_language_t to set.

 
+
+

Since: 0.9.2

+
+
+
+

hb_buffer_get_language ()

+
hb_language_t
+hb_buffer_get_language (hb_buffer_t *buffer);
+

See hb_buffer_set_language().

+
+

Parameters

+
+++++ + + + + + +

buffer

an hb_buffer_t.

 
+
+
+

Returns

+

The hb_language_t of the buffer. Must not be freed by the caller.

+

[transfer none]

+
+

Since: 0.9.2

+
+
+
+

hb_buffer_set_flags ()

+
void
+hb_buffer_set_flags (hb_buffer_t *buffer,
+                     hb_buffer_flags_t flags);
+

Sets buffer + flags to flags +. See hb_buffer_flags_t.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

buffer

an hb_buffer_t.

 

flags

the buffer flags to set.

 
+
+

Since: 0.9.7

+
+
+
+

hb_buffer_get_flags ()

+
hb_buffer_flags_t
+hb_buffer_get_flags (hb_buffer_t *buffer);
+

See hb_buffer_set_flags().

+
+

Parameters

+
+++++ + + + + + +

buffer

an hb_buffer_t.

 
+
+
+

Returns

+

The buffer +flags.

+
+

Since: 0.9.7

+
+
+
+

hb_buffer_set_cluster_level ()

+
void
+hb_buffer_set_cluster_level (hb_buffer_t *buffer,
+                             hb_buffer_cluster_level_t cluster_level);
+
+

Parameters

+
+++++ + + + + + +

buffer

an hb_buffer_t.

 
+
+

Since: 0.9.42

+
+
+
+

hb_buffer_get_cluster_level ()

+
hb_buffer_cluster_level_t
+hb_buffer_get_cluster_level (hb_buffer_t *buffer);
+
+

Parameters

+
+++++ + + + + + +

buffer

an hb_buffer_t.

 
+
+

Since: 0.9.42

+
+
+
+

hb_buffer_set_length ()

+
hb_bool_t
+hb_buffer_set_length (hb_buffer_t *buffer,
+                      unsigned int length);
+

Similar to hb_buffer_pre_allocate(), but clears any new items added at the +end.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

buffer

an hb_buffer_t.

 

length

the new length of buffer +.

 
+
+
+

Returns

+

true if buffer +memory allocation succeeded, false otherwise.

+
+

Since: 0.9.2

+
+
+
+

hb_buffer_get_length ()

+
unsigned int
+hb_buffer_get_length (hb_buffer_t *buffer);
+

Returns the number of items in the buffer.

+
+

Parameters

+
+++++ + + + + + +

buffer

an hb_buffer_t.

 
+
+
+

Returns

+

The buffer +length. +The value valid as long as buffer has not been modified.

+
+

Since: 0.9.2

+
+
+
+

hb_buffer_set_segment_properties ()

+
void
+hb_buffer_set_segment_properties (hb_buffer_t *buffer,
+                                  const hb_segment_properties_t *props);
+

Sets the segment properties of the buffer, a shortcut for calling +hb_buffer_set_direction(), hb_buffer_set_script() and +hb_buffer_set_language() individually.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

buffer

an hb_buffer_t.

 

props

an hb_segment_properties_t to use.

 
+
+

Since: 0.9.7

+
+
+
+

hb_buffer_get_segment_properties ()

+
void
+hb_buffer_get_segment_properties (hb_buffer_t *buffer,
+                                  hb_segment_properties_t *props);
+

Sets props + to the hb_segment_properties_t of buffer +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

buffer

an hb_buffer_t.

 

props

the output hb_segment_properties_t.

[out]
+
+

Since: 0.9.7

+
+
+
+

hb_buffer_guess_segment_properties ()

+
void
+hb_buffer_guess_segment_properties (hb_buffer_t *buffer);
+

Sets unset buffer segment properties based on buffer Unicode +contents. If buffer is not empty, it must have content type +HB_BUFFER_CONTENT_TYPE_UNICODE.

+

If buffer script is not set (ie. is HB_SCRIPT_INVALID), it +will be set to the Unicode script of the first character in +the buffer that has a script other than HB_SCRIPT_COMMON, +HB_SCRIPT_INHERITED, and HB_SCRIPT_UNKNOWN.

+

Next, if buffer direction is not set (ie. is HB_DIRECTION_INVALID), +it will be set to the natural horizontal direction of the +buffer script as returned by hb_script_get_horizontal_direction().

+

Finally, if buffer language is not set (ie. is HB_LANGUAGE_INVALID), +it will be set to the process's default language as returned by +hb_language_get_default(). This may change in the future by +taking buffer script into consideration when choosing a language.

+
+

Parameters

+
+++++ + + + + + +

buffer

an hb_buffer_t.

 
+
+

Since: 0.9.7

+
+
+
+

hb_buffer_set_unicode_funcs ()

+
void
+hb_buffer_set_unicode_funcs (hb_buffer_t *buffer,
+                             hb_unicode_funcs_t *unicode_funcs);
+
+

Parameters

+
+++++ + + + + + +

buffer

an hb_buffer_t.

 
+
+

Since: 0.9.2

+
+
+
+

hb_buffer_get_unicode_funcs ()

+
hb_unicode_funcs_t *
+hb_buffer_get_unicode_funcs (hb_buffer_t *buffer);
+
+

Parameters

+
+++++ + + + + + +

buffer

an hb_buffer_t.

 
+
+

Since: 0.9.2

+
+
+
+

hb_buffer_set_user_data ()

+
hb_bool_t
+hb_buffer_set_user_data (hb_buffer_t *buffer,
+                         hb_user_data_key_t *key,
+                         void *data,
+                         hb_destroy_func_t destroy,
+                         hb_bool_t replace);
+

[skip]

+
+

Parameters

+
+++++ + + + + + +

buffer

an hb_buffer_t.

 
+
+

Since: 0.9.2

+
+
+
+

hb_buffer_get_user_data ()

+
void *
+hb_buffer_get_user_data (hb_buffer_t *buffer,
+                         hb_user_data_key_t *key);
+

[skip]

+
+

Parameters

+
+++++ + + + + + +

buffer

an hb_buffer_t.

 
+
+

Since: 0.9.2

+
+
+
+

hb_buffer_get_glyph_infos ()

+
hb_glyph_info_t *
+hb_buffer_get_glyph_infos (hb_buffer_t *buffer,
+                           unsigned int *length);
+

Returns buffer + glyph information array. Returned pointer +is valid as long as buffer + contents are not modified.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

buffer

an hb_buffer_t.

 

length

output array length.

[out]
+
+
+

Returns

+

The buffer +glyph information array. +The value valid as long as buffer has not been modified.

+

[transfer none][array length=length]

+
+

Since: 0.9.2

+
+
+
+

hb_buffer_get_glyph_positions ()

+
hb_glyph_position_t *
+hb_buffer_get_glyph_positions (hb_buffer_t *buffer,
+                               unsigned int *length);
+

Returns buffer + glyph position array. Returned pointer +is valid as long as buffer + contents are not modified.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

buffer

an hb_buffer_t.

 

length

output length.

[out]
+
+
+

Returns

+

The buffer +glyph position array. +The value valid as long as buffer has not been modified.

+

[transfer none][array length=length]

+
+

Since: 0.9.2

+
+
+
+

hb_buffer_set_replacement_codepoint ()

+
void
+hb_buffer_set_replacement_codepoint (hb_buffer_t *buffer,
+                                     hb_codepoint_t replacement);
+

Sets the hb_codepoint_t that replaces invalid entries for a given encoding +when adding text to buffer +.

+

Default is HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

buffer

an hb_buffer_t.

 

replacement

the replacement hb_codepoint_t

 
+
+

Since: 0.9.31

+
+
+
+

hb_buffer_get_replacement_codepoint ()

+
hb_codepoint_t
+hb_buffer_get_replacement_codepoint (hb_buffer_t *buffer);
+

See hb_buffer_set_replacement_codepoint().

+
+

Parameters

+
+++++ + + + + + +

buffer

an hb_buffer_t.

 
+
+
+

Returns

+

The buffer +replacement hb_codepoint_t.

+
+

Since: 0.9.31

+
+
+
+

hb_buffer_normalize_glyphs ()

+
void
+hb_buffer_normalize_glyphs (hb_buffer_t *buffer);
+

Reorders a glyph buffer to have canonical in-cluster glyph order / position. +The resulting clusters should behave identical to pre-reordering clusters.

+
This has nothing to do with Unicode normalization.
+
+

Parameters

+
+++++ + + + + + +

buffer

an hb_buffer_t.

 
+
+

Since: 0.9.2

+
+
+
+

hb_buffer_reverse ()

+
void
+hb_buffer_reverse (hb_buffer_t *buffer);
+

Reverses buffer contents.

+
+

Parameters

+
+++++ + + + + + +

buffer

an hb_buffer_t.

 
+
+

Since: 0.9.2

+
+
+
+

hb_buffer_reverse_range ()

+
void
+hb_buffer_reverse_range (hb_buffer_t *buffer,
+                         unsigned int start,
+                         unsigned int end);
+

Reverses buffer contents between start to end.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

buffer

an hb_buffer_t.

 

start

start index.

 

end

end index.

 
+
+

Since: 0.9.41

+
+
+
+

hb_buffer_reverse_clusters ()

+
void
+hb_buffer_reverse_clusters (hb_buffer_t *buffer);
+

Reverses buffer clusters. That is, the buffer contents are +reversed, then each cluster (consecutive items having the +same cluster number) are reversed again.

+
+

Parameters

+
+++++ + + + + + +

buffer

an hb_buffer_t.

 
+
+

Since: 0.9.2

+
+
+
+

hb_buffer_serialize_glyphs ()

+
unsigned int
+hb_buffer_serialize_glyphs (hb_buffer_t *buffer,
+                            unsigned int start,
+                            unsigned int end,
+                            char *buf,
+                            unsigned int buf_size,
+                            unsigned int *buf_consumed,
+                            hb_font_t *font,
+                            hb_buffer_serialize_format_t format,
+                            hb_buffer_serialize_flags_t flags);
+

Serializes buffer + into a textual representation of its glyph content, +useful for showing the contents of the buffer, for example during debugging. +There are currently two supported serialization formats:

+
+

text

+

A human-readable, plain text format. +The serialized glyphs will look something like:

+

+[uni0651=0@518,0+0|uni0628=0+1897] +

+
+
+
+

json

+

TODO.

+
+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

buffer

an hb_buffer_t buffer.

 

start

the first item in buffer +to serialize.

 

end

the last item in buffer +to serialize.

 

buf

output string to +write serialized buffer into.

[out][array length=buf_size][element-type uint8_t]

buf_size

the size of buf +.

 

buf_consumed

if not NULL, will be set to the number of byes written into buf +.

[out][allow-none]

font

the hb_font_t used to shape this buffer, needed to +read glyph names and extents. If NULL, and empty font will be used.

[allow-none]

format

the hb_buffer_serialize_format_t to use for formatting the output.

 

flags

the hb_buffer_serialize_flags_t that control what glyph properties +to serialize.

 
+
+
+

Returns

+

The number of serialized items.

+
+

Since: 0.9.7

+
+
+
+

hb_buffer_deserialize_glyphs ()

+
hb_bool_t
+hb_buffer_deserialize_glyphs (hb_buffer_t *buffer,
+                              const char *buf,
+                              int buf_len,
+                              const char **end_ptr,
+                              hb_font_t *font,
+                              hb_buffer_serialize_format_t format);
+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

buffer

an hb_buffer_t buffer.

 

buf

.

[array length=buf_len]

end_ptr

.

[out]
+
+

Since: 0.9.7

+
+
+
+

hb_buffer_serialize_format_from_string ()

+
hb_buffer_serialize_format_t
+hb_buffer_serialize_format_from_string
+                               (const char *str,
+                                int len);
+

Parses a string into an hb_buffer_serialize_format_t. Does not check if +str + is a valid buffer serialization format, use +hb_buffer_serialize_list_formats() to get the list of supported formats.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

str

a string to parse.

[array length=len][element-type uint8_t]

len

length of str +, or -1 if string is NULL terminated

 
+
+
+

Returns

+

The parsed hb_buffer_serialize_format_t.

+
+

Since: 0.9.7

+
+
+
+

hb_buffer_serialize_format_to_string ()

+
const char *
+hb_buffer_serialize_format_to_string (hb_buffer_serialize_format_t format);
+

Converts format + to the string corresponding it, or NULL if it is not a valid +hb_buffer_serialize_format_t.

+
+

Parameters

+
+++++ + + + + + +

format

an hb_buffer_serialize_format_t to convert.

 
+
+
+

Returns

+

A NULL terminated string corresponding to format +. Should not be freed.

+

[transfer none]

+
+

Since: 0.9.7

+
+
+
+

hb_buffer_serialize_list_formats ()

+
const char **
+hb_buffer_serialize_list_formats (void);
+

Returns a list of supported buffer serialization formats.

+
+

Returns

+

A string array of buffer serialization formats. Should not be freed.

+

[transfer none]

+
+

Since: 0.9.7

+
+
+
+

hb_segment_properties_equal ()

+
hb_bool_t
+hb_segment_properties_equal (const hb_segment_properties_t *a,
+                             const hb_segment_properties_t *b);
+

Checks the equality of two hb_segment_properties_t's.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

a

first hb_segment_properties_t to compare.

 

b

second hb_segment_properties_t to compare.

 
+
+
+

Returns

+

true if all properties of a +equal those of b +, false otherwise.

+

[transfer full]

+
+

Since: 0.9.7

+
+
+
+

hb_segment_properties_hash ()

+
unsigned int
+hb_segment_properties_hash (const hb_segment_properties_t *p);
+

Creates a hash representing p +.

+
+

Parameters

+
+++++ + + + + + +

p

hb_segment_properties_t to hash.

 
+
+
+

Returns

+

A hash of p +.

+
+

Since: 0.9.7

+
+
+
+

hb_buffer_set_message_func ()

+
void
+hb_buffer_set_message_func (hb_buffer_t *buffer,
+                            hb_buffer_message_func_t func,
+                            void *user_data,
+                            hb_destroy_func_t destroy);
+
+

Parameters

+
+++++ + + + + + + + + + + + + +

buffer

an hb_buffer_t.

 

func

.

[closure user_data][destroy destroy][scope notified]
+
+

Since: 1.1.3

+
+
+
+

hb_buffer_message_func_t ()

+
hb_bool_t
+(*hb_buffer_message_func_t) (hb_buffer_t *buffer,
+                             hb_font_t *font,
+                             const char *message,
+                             void *user_data);
+
+
+
+

Types and Values

+
+

HB_SEGMENT_PROPERTIES_DEFAULT

+
#define             HB_SEGMENT_PROPERTIES_DEFAULT
+
+
+
+

HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT

+
#define HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT 0xFFFDu
+
+

The default code point for replacing invalid characters in a given encoding. +Set to U+FFFD REPLACEMENT CHARACTER.

+

Since: 0.9.31

+
+
+
+

hb_buffer_t

+
typedef struct hb_buffer_t hb_buffer_t;
+
+

The main structure holding the input text and its properties before shaping, +and output glyphs and their information after shaping.

+
+
+
+

hb_glyph_info_t

+
typedef struct {
+  hb_codepoint_t codepoint;
+  hb_mask_t      mask;
+  uint32_t       cluster;
+} hb_glyph_info_t;
+
+

The hb_glyph_info_t is the structure that holds information about the +glyphs and their relation to input text.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

hb_codepoint_t codepoint;

either a Unicode code point (before shaping) or a glyph index +(after shaping).

 

hb_mask_t mask;

  

uint32_t cluster;

the index of the character in the original text that corresponds +to this hb_glyph_info_t, or whatever the client passes to +hb_buffer_add(). More than one hb_glyph_info_t can have the same +cluster +value, if they resulted from the same character (e.g. one +to many glyph substitution), and when more than one character gets +merged in the same glyph (e.g. many to one glyph substitution) the +hb_glyph_info_t will have the smallest cluster value of them. +By default some characters are merged into the same cluster +(e.g. combining marks have the same cluster as their bases) +even if they are separate glyphs, hb_buffer_set_cluster_level() +allow selecting more fine-grained cluster handling.

 
+
+
+
+
+

hb_glyph_position_t

+
typedef struct {
+  hb_position_t  x_advance;
+  hb_position_t  y_advance;
+  hb_position_t  x_offset;
+  hb_position_t  y_offset;
+} hb_glyph_position_t;
+
+

The hb_glyph_position_t is the structure that holds the positions of the +glyph in both horizontal and vertical directions. All positions in +hb_glyph_position_t are relative to the current point.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

hb_position_t x_advance;

how much the line advances after drawing this glyph when setting +text in horizontal direction.

 

hb_position_t y_advance;

how much the line advances after drawing this glyph when setting +text in vertical direction.

 

hb_position_t x_offset;

how much the glyph moves on the X-axis before drawing it, this +should not affect how much the line advances.

 

hb_position_t y_offset;

how much the glyph moves on the Y-axis before drawing it, this +should not affect how much the line advances.

 
+
+
+
+
+

enum hb_buffer_content_type_t

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

HB_BUFFER_CONTENT_TYPE_INVALID

+

Initial value for new buffer.

+
 

HB_BUFFER_CONTENT_TYPE_UNICODE

+

The buffer contains input characters (before shaping).

+
 

HB_BUFFER_CONTENT_TYPE_GLYPHS

+

The buffer contains output glyphs (after shaping).

+
 
+
+
+
+
+

enum hb_buffer_flags_t

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

HB_BUFFER_FLAG_DEFAULT

+

the default buffer flag.

+
 

HB_BUFFER_FLAG_BOT

+

flag indicating that special handling of the beginning + of text paragraph can be applied to this buffer. Should usually + be set, unless you are passing to the buffer only part + of the text without the full context.

+
 

HB_BUFFER_FLAG_EOT

+

flag indicating that special handling of the end of text + paragraph can be applied to this buffer, similar to + HB_BUFFER_FLAG_EOT +.

+
 

HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES

+

flag indication that character with Default_Ignorable + Unicode property should use the corresponding glyph + from the font, instead of hiding them (currently done + by replacing them with the space glyph and zeroing the + advance width.)

+
 
+
+

Since: 0.9.20

+
+
+
+

enum hb_buffer_cluster_level_t

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES

  

HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS

  

HB_BUFFER_CLUSTER_LEVEL_CHARACTERS

  

HB_BUFFER_CLUSTER_LEVEL_DEFAULT

  
+
+
+
+
+

hb_segment_properties_t

+
typedef struct {
+  hb_direction_t  direction;
+  hb_script_t     script;
+  hb_language_t   language;
+} hb_segment_properties_t;
+
+

The structure that holds various text properties of an hb_buffer_t. Can be +set and retrieved using hb_buffer_set_segment_properties() and +hb_buffer_get_segment_properties(), respectively.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

hb_direction_t direction;

the hb_direction_t of the buffer, see hb_buffer_set_direction().

 

hb_script_t script;

the hb_script_t of the buffer, see hb_buffer_set_script().

 

hb_language_t language;

the hb_language_t of the buffer, see hb_buffer_set_language().

 
+
+
+
+
+

enum hb_buffer_serialize_format_t

+

The buffer serialization and de-serialization format used in +hb_buffer_serialize_glyphs() and hb_buffer_deserialize_glyphs().

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

HB_BUFFER_SERIALIZE_FORMAT_TEXT

+

a human-readable, plain text format.

+
 

HB_BUFFER_SERIALIZE_FORMAT_JSON

+

a machine-readable JSON format.

+
 

HB_BUFFER_SERIALIZE_FORMAT_INVALID

+

invalid format.

+
 
+
+

Since: 0.9.2

+
+
+
+

enum hb_buffer_serialize_flags_t

+

Flags that control what glyph information are serialized in hb_buffer_serialize_glyphs().

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

HB_BUFFER_SERIALIZE_FLAG_DEFAULT

+

serialize glyph names, clusters and positions.

+
 

HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS

+

do not serialize glyph cluster.

+
 

HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS

+

do not serialize glyph position information.

+
 

HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES

+

do no serialize glyph name.

+
 

HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS

+

serialize glyph extents.

+
 
+
+

Since: 0.9.20

+
+
+
+ + + \ No newline at end of file diff --git a/docs/html/harfbuzz-Shaping.html b/docs/html/harfbuzz-Shaping.html new file mode 100644 index 0000000..3e35150 --- /dev/null +++ b/docs/html/harfbuzz-Shaping.html @@ -0,0 +1,347 @@ + + + + +Shaping: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Shaping

+

Shaping — Conversion of text strings into positioned glyphs

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
+hb_bool_t + +hb_feature_from_string () +
+void + +hb_feature_to_string () +
+void + +hb_shape () +
+hb_bool_t + +hb_shape_full () +
const char ** + +hb_shape_list_shapers () +
+
+
+

Types and Values

+
++++ + + + + +
 hb_feature_t
+
+
+

Object Hierarchy

+
    GBoxed
+    ╰── hb_feature_t
+
+
+
+

Includes

+
#include <hb.h>
+
+
+
+

Description

+

Shaping is the central operation of HarfBuzz. Shaping operates on buffers, +which are sequences of Unicode characters that use the same font and have +the same text direction, script and language. After shaping the buffer +contains the output glyphs and their positions.

+
+
+

Functions

+
+

hb_feature_from_string ()

+
hb_bool_t
+hb_feature_from_string (const char *str,
+                        int len,
+                        hb_feature_t *feature);
+

Parses a string into a hb_feature_t.

+

TODO: document the syntax here.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

str

a string to parse.

[array length=len][element-type uint8_t]

len

length of str +, or -1 if string is NULL terminated

 

feature

the hb_feature_t to initialize with the parsed values.

[out]
+
+
+

Returns

+

true if str +is successfully parsed, false otherwise.

+
+

Since: 0.9.5

+
+
+
+

hb_feature_to_string ()

+
void
+hb_feature_to_string (hb_feature_t *feature,
+                      char *buf,
+                      unsigned int size);
+

Converts a hb_feature_t into a NULL-terminated string in the format +understood by hb_feature_from_string(). The client in responsible for +allocating big enough size for buf +, 128 bytes is more than enough.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

feature

an hb_feature_t to convert

 

buf

output string.

[array length=size][out]

size

the allocated size of buf +

 
+
+

Since: 0.9.5

+
+
+
+

hb_shape ()

+
void
+hb_shape (hb_font_t *font,
+          hb_buffer_t *buffer,
+          const hb_feature_t *features,
+          unsigned int num_features);
+

Shapes buffer + using font + turning its Unicode characters content to +positioned glyphs. If features + is not NULL, it will be used to control the +features applied during shaping.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

font

an hb_font_t to use for shaping

 

buffer

an hb_buffer_t to shape

 

features

an array of user +specified hb_feature_t or NULL.

[array length=num_features][allow-none]

num_features

the length of features +array

 
+
+
+

Returns

+

FALSE if all shapers failed, TRUE otherwise

+
+

Since: 0.9.2

+
+
+
+

hb_shape_full ()

+
hb_bool_t
+hb_shape_full (hb_font_t *font,
+               hb_buffer_t *buffer,
+               const hb_feature_t *features,
+               unsigned int num_features,
+               const char * const *shaper_list);
+

See hb_shape() for details. If shaper_list + is not NULL, the specified +shapers will be used in the given order, otherwise the default shapers list +will be used.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

font

an hb_font_t to use for shaping

 

buffer

an hb_buffer_t to shape

 

features

an array of user +specified hb_feature_t or NULL.

[array length=num_features][allow-none]

num_features

the length of features +array

 

shaper_list

a NULL-terminated +array of shapers to use or NULL.

[array zero-terminated=1][allow-none]
+
+
+

Returns

+

FALSE if all shapers failed, TRUE otherwise

+
+

Since: 0.9.2

+
+
+
+

hb_shape_list_shapers ()

+
const char **
+hb_shape_list_shapers (void);
+

Retrieves the list of shapers supported by HarfBuzz.

+
+

Returns

+

an array of +constant strings.

+

[transfer none][array zero-terminated=1]

+
+

Since: 0.9.2

+
+
+
+

Types and Values

+
+

hb_feature_t

+
typedef struct {
+  hb_tag_t      tag;
+  uint32_t      value;
+  unsigned int  start;
+  unsigned int  end;
+} hb_feature_t;
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/html/harfbuzz-hb-blob.html b/docs/html/harfbuzz-hb-blob.html similarity index 85% rename from docs/reference/html/harfbuzz-hb-blob.html rename to docs/html/harfbuzz-hb-blob.html index b7f9a12..fa54243 100644 --- a/docs/reference/html/harfbuzz-hb-blob.html +++ b/docs/html/harfbuzz-hb-blob.html @@ -2,13 +2,13 @@ -hb-blob - - - - +hb-blob: HarfBuzz Manual + + + + - + @@ -19,8 +19,8 @@ Object Hierarchy Home -Up -Prev +Up +Prev Next
@@ -158,16 +158,14 @@

Object Hierarchy

-
    GBoxed
+
    GBoxed
     ╰── hb_blob_t
-    GEnum
+    GEnum
     ╰── hb_memory_mode_t
 

Description

-

-

Functions

@@ -184,8 +182,9 @@ hb_blob_create (const char parameter is used to negotiate ownership and lifecycle of data .

+

[skip]

-

Parameters

+

Parameters

@@ -226,13 +225,12 @@ is not needed anymore.

-

Returns

+

Returns

New blob, or the empty blob if something failed or if length is zero. Destroy with hb_blob_destroy().

-

-

Since 1.0

+

Since: 0.9.2


@@ -250,7 +248,7 @@ is.

Makes parent immutable.

-

Parameters

+

Parameters

@@ -278,16 +276,15 @@ is.

-

Returns

+

Returns

New blob, or the empty blob if something failed or if length is zero or offset is beyond the end of parent 's data. Destroy with hb_blob_destroy().

-

-

Since 1.0

+

Since: 0.9.2


@@ -300,8 +297,9 @@ hb_blob_destroy ([skip]

-

Parameters

+

Parameters

@@ -315,7 +313,7 @@ was created for if it has not been called already.

-

Since 1.0

+

Since: 0.9.2


@@ -324,7 +322,7 @@ was created for if it has not been called already.

hb_blob_get_data (hb_blob_t *blob, unsigned int *length);
-

Parameters

+

Parameters

@@ -346,11 +344,11 @@ hb_blob_get_data ( -

Returns

+

Returns

.

[transfer none][array length=length]

-

Since 1.0

+

Since: 0.9.2


@@ -363,7 +361,7 @@ return pointer to data.

Fails if blob has been made immutable, or if memory allocation fails.

-

Parameters

+

Parameters

@@ -385,12 +383,12 @@ fails.

-

Returns

+

Returns

Writable blob data, or NULL if failed.

[transfer none][array length=length]

-

Since 1.0

+

Since: 0.9.2


@@ -400,11 +398,11 @@ hb_blob_get_empty (voidReturns the singleton empty blob.

See TODO:link object types for more information.

-

Returns

+

Returns

the empty blob.

[transfer full]

-

Since 1.0

+

Since: 0.9.2


@@ -412,7 +410,7 @@ hb_blob_get_empty (voidunsigned int hb_blob_get_length (hb_blob_t *blob);
-

Parameters

+

Parameters

@@ -427,11 +425,10 @@ hb_blob_get_length ( -

Returns

+

Returns

the length of blob data in bytes.

-

-

Since 1.0

+

Since: 0.9.2


@@ -439,8 +436,9 @@ hb_blob_get_length (void * hb_blob_get_user_data (hb_blob_t *blob, hb_user_data_key_t *key); +

[skip]

-

Parameters

+

Parameters

@@ -462,11 +460,11 @@ hb_blob_get_user_data ( -

Returns

+

Returns

.

[transfer none]

-

Since 1.0

+

Since: 0.9.2


@@ -474,7 +472,7 @@ hb_blob_get_user_data (hb_bool_t hb_blob_is_immutable (hb_blob_t *blob);
-

Parameters

+

Parameters

@@ -489,11 +487,10 @@ hb_blob_is_immutable ( -

Returns

+

Returns

TODO

-

-

Since 1.0

+

Since: 0.9.2


@@ -501,7 +498,7 @@ hb_blob_is_immutable (void hb_blob_make_immutable (hb_blob_t *blob);
-

Parameters

+

Parameters

@@ -515,7 +512,7 @@ hb_blob_make_immutable (Since 1.0

+

Since: 0.9.2


@@ -525,8 +522,9 @@ hb_blob_reference (blob .

See TODO:link object types for more information.

+

[skip]

-

Parameters

+

Parameters

@@ -541,12 +539,11 @@ hb_blob_reference ( -

Returns

+

Returns

blob .

-

-

Since 1.0

+

Since: 0.9.2


@@ -557,8 +554,9 @@ hb_blob_set_user_data (void *data, hb_destroy_func_t destroy, hb_bool_t replace); +

[skip]

-

Parameters

+

Parameters

@@ -595,11 +593,7 @@ is not needed anymore.

-
-

Returns

-

-
-

Since 1.0

+

Since: 0.9.2

@@ -608,16 +602,12 @@ is not needed anymore.

hb_blob_t

typedef struct hb_blob_t hb_blob_t;
 
-

-


enum hb_memory_mode_t

-

-

-

Members

+

Members

@@ -627,23 +617,23 @@ is not needed anymore.

- - + + - - + + - - + + - - + +

HB_MEMORY_MODE_DUPLICATE

    

HB_MEMORY_MODE_READONLY

    

HB_MEMORY_MODE_WRITABLE

    

HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE

    
@@ -652,7 +642,6 @@ is not needed anymore.

+
Generated by GTK-Doc V1.24.1 \ No newline at end of file diff --git a/docs/reference/html/harfbuzz-hb-common.html b/docs/html/harfbuzz-hb-common.html similarity index 74% rename from docs/reference/html/harfbuzz-hb-common.html rename to docs/html/harfbuzz-hb-common.html index e2b1a8b..064be6e 100644 --- a/docs/reference/html/harfbuzz-hb-common.html +++ b/docs/html/harfbuzz-hb-common.html @@ -2,13 +2,13 @@ -hb-common - - - +hb-common: HarfBuzz Manual + + + - + @@ -19,7 +19,7 @@ Object Hierarchy Home -Up +Up Prev Next @@ -41,25 +41,11 @@ -#define - -HB_DIRECTION_REVERSE() - - - -#define -HB_LANGUAGE_INVALID - - -#define - -HB_TAG() + +hb_tag_t - - -#define -HB_UNTAG() +hb_tag_from_string () @@ -67,7 +53,7 @@ void -(*hb_destroy_func_t) () +hb_tag_to_string () @@ -87,73 +73,83 @@ -hb_language_t +hb_script_t -hb_language_from_string () +hb_script_from_iso15924_tag () -hb_language_t +hb_script_t -hb_language_get_default () +hb_script_from_string () -const char * + +hb_tag_t -hb_language_to_string () +hb_script_to_iso15924_tag () -hb_script_t +hb_direction_t -hb_script_from_iso15924_tag () +hb_script_get_horizontal_direction () -hb_script_t +hb_language_t -hb_script_from_string () +hb_language_from_string () - -hb_direction_t +const char * -hb_script_get_horizontal_direction () +hb_language_to_string () -hb_tag_t +hb_language_t -hb_script_to_iso15924_tag () +hb_language_get_default () -hb_tag_t +void -hb_tag_from_string () +(*hb_destroy_func_t) () - -void +#define + +HB_TAG() + + +#define -hb_tag_to_string () +HB_UNTAG() + + + +#define + +HB_DIRECTION_REVERSE() @@ -189,7 +185,7 @@ -
+

Types and Values

@@ -198,14 +194,6 @@ - - - - - - - - @@ -219,7 +207,7 @@ - + @@ -230,14 +218,14 @@ - - - - + + + + @@ -245,64 +233,83 @@ + + + + + + + + + + + + + + + +
#defineHB_TAG_NONE
#defineHB_TAG_MAX
typedef hb_bool_t
typedefhb_language_thb_language_t
typedefhb_position_t
enumhb_script_t
typedef hb_tag_t
enumhb_script_t
  hb_user_data_key_t
  hb_var_int_t
#defineHB_TAG_NONE
#defineHB_TAG_MAX
#defineHB_TAG_MAX_SIGNED
#defineHB_LANGUAGE_INVALID

Object Hierarchy

-
    GBoxed
-    ├── hb_language_t
+
    GBoxed
     ╰── hb_user_data_key_t
-    GEnum
+    GEnum
     ├── hb_direction_t
     ╰── hb_script_t
 

Description

-

-

Functions

-

HB_DIRECTION_REVERSE()

-
#define HB_DIRECTION_REVERSE(dir) ((hb_direction_t) (((unsigned int) (dir)) ^ 1))
-
-

-

-
-
-
-

HB_LANGUAGE_INVALID

-
#define HB_LANGUAGE_INVALID ((hb_language_t) NULL)
-
-

-

-
-
-
-

HB_TAG()

-
#define HB_TAG(c1,c2,c3,c4) ((hb_tag_t)((((uint8_t)(c1))<<24)|(((uint8_t)(c2))<<16)|(((uint8_t)(c3))<<8)|((uint8_t)(c4))))
-
-

-

+

hb_tag_from_string ()

+
hb_tag_t
+hb_tag_from_string (const char *str,
+                    int len);
+
+

Parameters

+
+++++ + + + + + +

str

.

[array length=len][element-type uint8_t]
-
-
-

HB_UNTAG()

-
#define HB_UNTAG(tag)   ((uint8_t)((tag)>>24)), ((uint8_t)((tag)>>16)), ((uint8_t)((tag)>>8)), ((uint8_t)(tag))
-
-

-

+

Since: 0.9.2


-

hb_destroy_func_t ()

+

hb_tag_to_string ()

void
-(*hb_destroy_func_t) (void *user_data);
-

-

+hb_tag_to_string (hb_tag_t tag, + char *buf); +
+

Parameters

+
+++++ + + + + + +

buf

.

[array fixed-size=4]
+
+

Since: 0.9.5


@@ -311,7 +318,7 @@ hb_direction_from_string (const char *str, int len);
-

Parameters

+

Parameters

@@ -321,15 +328,11 @@ hb_direction_from_string (const c - +

str

.

[array length=len][array length=len][element-type uint8_t]
-
-

Returns

-

-
-

Since 1.0

+

Since: 0.9.2


@@ -337,20 +340,20 @@ hb_direction_from_string (const c
const char *
 hb_direction_to_string (hb_direction_t direction);
-

Returns

+

Returns

.

[transfer none]

-

Since 1.0

+

Since: 0.9.2


-

hb_language_from_string ()

-
hb_language_t
-hb_language_from_string (const char *str,
-                         int len);
+

hb_script_from_iso15924_tag ()

+
hb_script_t
+hb_script_from_iso15924_tag (hb_tag_t tag);
+

Converts an ISO 15924 script tag to a corresponding hb_script_t.

-

Parameters

+

Parameters

@@ -358,60 +361,66 @@ hb_language_from_string (const ch - - - + + +

str

.

[array length=len]

tag

an hb_tag_t representing an ISO 15924 tag.

 
-

Returns

-

-
-

Since 1.0

-
-
-
-

hb_language_get_default ()

-
hb_language_t
-hb_language_get_default (void);
-
-

Returns

-

+

Returns

+

An hb_script_t corresponding to the ISO 15924 tag.

-

Since 1.0

+

Since: 0.9.2


-

hb_language_to_string ()

-
const char *
-hb_language_to_string (hb_language_t language);
+

hb_script_from_string ()

+
hb_script_t
+hb_script_from_string (const char *str,
+                       int len);
+

Converts a string str + representing an ISO 15924 script tag to a +corresponding hb_script_t. Shorthand for hb_tag_from_string() then +hb_script_from_iso15924_tag().

-

Returns

-

.

-

[transfer none]

-
-

Since 1.0

+

Parameters

+
+++++ + + + + + + + + + + + + +

str

a string representing an +ISO 15924 tag.

[array length=len][element-type uint8_t]

len

length of the str +, or -1 if it is NULL-terminated.

 
-
-
-

hb_script_from_iso15924_tag ()

-
hb_script_t
-hb_script_from_iso15924_tag (hb_tag_t tag);
-

Returns

-

+

Returns

+

An hb_script_t corresponding to the ISO 15924 tag.

-

Since 1.0

+

Since: 0.9.2


-

hb_script_from_string ()

-
hb_script_t
-hb_script_from_string (const char *s,
-                       int len);
+

hb_script_to_iso15924_tag ()

+
hb_tag_t
+hb_script_to_iso15924_tag (hb_script_t script);
+

See hb_script_from_iso15924_tag().

-

Parameters

+

Parameters

@@ -419,75 +428,73 @@ hb_script_from_string (const char - - - + + +

s

.

[array length=len]

script

an hb_script_ to convert.

 
-

Returns

-

+

Returns

+

An hb_tag_t representing an ISO 15924 script tag.

-

Since 1.0

+

Since: 0.9.2


hb_script_get_horizontal_direction ()

hb_direction_t
 hb_script_get_horizontal_direction (hb_script_t script);
-
-

Returns

-

-
-

Since 1.0

+

Since: 0.9.2


-

hb_script_to_iso15924_tag ()

-
hb_tag_t
-hb_script_to_iso15924_tag (hb_script_t script);
-
-

Returns

-

-
-

Since 1.0

-
-
-
-

hb_tag_from_string ()

-
hb_tag_t
-hb_tag_from_string (const char *str,
-                    int len);
+

hb_language_from_string ()

+
hb_language_t
+hb_language_from_string (const char *str,
+                         int len);
+

Converts str + representing an ISO 639 language code to the corresponding +hb_language_t.

-

Parameters

+

Parameters

- + + - - - + + + + + + + + +

str

.

[array length=len]

a string representing +ISO 639 language code.

[array length=len][element-type uint8_t]

len

length of the str +, or -1 if it is NULL-terminated.

 
-

Returns

-

+

Returns

+

The hb_language_t corresponding to the ISO 639 language code.

+

[transfer none]

-

Since 1.0

+

Since: 0.9.2


-

hb_tag_to_string ()

-
void
-hb_tag_to_string (hb_tag_t tag,
-                  char *buf);
+

hb_language_to_string ()

+
const char *
+hb_language_to_string (hb_language_t language);
+

See hb_language_from_string().

-

Parameters

+

Parameters

@@ -495,93 +502,106 @@ hb_tag_to_string ( - - - + + +

buf

.

[array fixed-size=4]

language

an hb_language_t to convert.

 
-

Since 1.0

+
+

Returns

+

A NULL-terminated string representing the language +. Must not be freed by +the caller.

+

[transfer none]

+
+

Since: 0.9.2

+
+
+
+

hb_language_get_default ()

+
hb_language_t
+hb_language_get_default (void);
+
+

Returns

+

.

+

[transfer none]

+
+

Since: 0.9.2

+
+
+
+

hb_destroy_func_t ()

+
void
+(*hb_destroy_func_t) (void *user_data);
+
+
+
+

HB_TAG()

+
#define HB_TAG(c1,c2,c3,c4) ((hb_tag_t)((((uint8_t)(c1))<<24)|(((uint8_t)(c2))<<16)|(((uint8_t)(c3))<<8)|((uint8_t)(c4))))
+
+
+
+
+

HB_UNTAG()

+
#define HB_UNTAG(tag)   ((uint8_t)((tag)>>24)), ((uint8_t)((tag)>>16)), ((uint8_t)((tag)>>8)), ((uint8_t)(tag))
+
+
+
+
+

HB_DIRECTION_REVERSE()

+
#define HB_DIRECTION_REVERSE(dir) ((hb_direction_t) (((unsigned int) (dir)) ^ 1))
+

HB_DIRECTION_IS_BACKWARD()

#define HB_DIRECTION_IS_BACKWARD(dir) ((((unsigned int) (dir)) & ~2U) == 5)
 
-

-


HB_DIRECTION_IS_FORWARD()

#define HB_DIRECTION_IS_FORWARD(dir) ((((unsigned int) (dir)) & ~2U) == 4)
 
-

-


HB_DIRECTION_IS_HORIZONTAL()

#define HB_DIRECTION_IS_HORIZONTAL(dir) ((((unsigned int) (dir)) & ~1U) == 4)
 
-

-


HB_DIRECTION_IS_VALID()

#define HB_DIRECTION_IS_VALID(dir) ((((unsigned int) (dir)) & ~3U) == 4)
 
-

-


HB_DIRECTION_IS_VERTICAL()

#define HB_DIRECTION_IS_VERTICAL(dir) ((((unsigned int) (dir)) & ~1U) == 6)
 
-

-

Types and Values

-

HB_TAG_NONE

-
#define HB_TAG_NONE HB_TAG(0,0,0,0)
-
-

-

-
-
-
-

HB_TAG_MAX

-
#define HB_TAG_MAX HB_TAG(0xff,0xff,0xff,0xff)
-
-
-
-

hb_bool_t

typedef int hb_bool_t;
 
-

-


hb_codepoint_t

typedef uint32_t hb_codepoint_t;
 
-

-


enum hb_direction_t

-

-

-

Members

+

Members

@@ -591,27 +611,37 @@ hb_tag_to_string (

HB_DIRECTION_INVALID

-
+ - + - + - + - + @@ -623,32 +653,30 @@ hb_tag_to_string (

hb_language_t

typedef const struct hb_language_impl_t *hb_language_t;
 
-

-


hb_mask_t

typedef uint32_t hb_mask_t;
 
-

-


hb_position_t

typedef int32_t hb_position_t;
 
-

-

+
+
+
+

hb_tag_t

+
typedef uint32_t hb_tag_t;
+

enum hb_script_t

-

-

-

Members

+

Members

  +

Initial, unset direction.

+
 

HB_DIRECTION_LTR

  +

Text is set horizontally from left to right.

+
 

HB_DIRECTION_RTL

  +

Text is set horizontally from right to left.

+
 

HB_DIRECTION_TTB

  +

Text is set vertically from top to bottom.

+
 

HB_DIRECTION_BTT

  +

Text is set vertically from bottom to top.

+
 
@@ -658,518 +686,518 @@ hb_tag_to_string (

HB_SCRIPT_COMMON

-
- + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -1287,9 +1315,39 @@ hb_tag_to_string (

HB_SCRIPT_AHOM

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + @@ -1307,31 +1365,42 @@ hb_tag_to_string ( -

hb_tag_t

-
typedef uint32_t hb_tag_t;
-
-

-

- -
-

hb_user_data_key_t

typedef struct {
 } hb_user_data_key_t;
 
-

-


hb_var_int_t

-

-

+
+
+
+

HB_TAG_NONE

+
#define HB_TAG_NONE HB_TAG(0,0,0,0)
+
+
+
+
+

HB_TAG_MAX

+
#define HB_TAG_MAX HB_TAG(0xff,0xff,0xff,0xff)
+
+
+
+
+

HB_TAG_MAX_SIGNED

+
#define HB_TAG_MAX_SIGNED HB_TAG(0x7f,0xff,0xff,0xff)
+
+
+
+
+

HB_LANGUAGE_INVALID

+
#define HB_LANGUAGE_INVALID ((hb_language_t) NULL)
+
+
Generated by GTK-Doc V1.24.1 \ No newline at end of file diff --git a/docs/reference/html/harfbuzz-hb-coretext.html b/docs/html/harfbuzz-hb-coretext.html similarity index 90% rename from docs/reference/html/harfbuzz-hb-coretext.html rename to docs/html/harfbuzz-hb-coretext.html index 8d3ab15..68615e0 100644 --- a/docs/reference/html/harfbuzz-hb-coretext.html +++ b/docs/html/harfbuzz-hb-coretext.html @@ -2,13 +2,13 @@ -hb-coretext - - - +hb-coretext: HarfBuzz Manual + + + - + @@ -18,7 +18,7 @@ Description
- +
    

HB_SCRIPT_INHERITED

    

HB_SCRIPT_UNKNOWN

    

HB_SCRIPT_ARABIC

    

HB_SCRIPT_ARMENIAN

    

HB_SCRIPT_BENGALI

    

HB_SCRIPT_CYRILLIC

    

HB_SCRIPT_DEVANAGARI

    

HB_SCRIPT_GEORGIAN

    

HB_SCRIPT_GREEK

    

HB_SCRIPT_GUJARATI

    

HB_SCRIPT_GURMUKHI

    

HB_SCRIPT_HANGUL

    

HB_SCRIPT_HAN

    

HB_SCRIPT_HEBREW

    

HB_SCRIPT_HIRAGANA

    

HB_SCRIPT_KANNADA

    

HB_SCRIPT_KATAKANA

    

HB_SCRIPT_LAO

    

HB_SCRIPT_LATIN

    

HB_SCRIPT_MALAYALAM

    

HB_SCRIPT_ORIYA

    

HB_SCRIPT_TAMIL

    

HB_SCRIPT_TELUGU

    

HB_SCRIPT_THAI

    

HB_SCRIPT_TIBETAN

    

HB_SCRIPT_BOPOMOFO

    

HB_SCRIPT_BRAILLE

    

HB_SCRIPT_CANADIAN_SYLLABICS

    

HB_SCRIPT_CHEROKEE

    

HB_SCRIPT_ETHIOPIC

    

HB_SCRIPT_KHMER

    

HB_SCRIPT_MONGOLIAN

    

HB_SCRIPT_MYANMAR

    

HB_SCRIPT_OGHAM

    

HB_SCRIPT_RUNIC

    

HB_SCRIPT_SINHALA

    

HB_SCRIPT_SYRIAC

    

HB_SCRIPT_THAANA

    

HB_SCRIPT_YI

    

HB_SCRIPT_DESERET

    

HB_SCRIPT_GOTHIC

    

HB_SCRIPT_OLD_ITALIC

    

HB_SCRIPT_BUHID

    

HB_SCRIPT_HANUNOO

    

HB_SCRIPT_TAGALOG

    

HB_SCRIPT_TAGBANWA

    

HB_SCRIPT_CYPRIOT

    

HB_SCRIPT_LIMBU

    

HB_SCRIPT_LINEAR_B

    

HB_SCRIPT_OSMANYA

    

HB_SCRIPT_SHAVIAN

    

HB_SCRIPT_TAI_LE

    

HB_SCRIPT_UGARITIC

    

HB_SCRIPT_BUGINESE

    

HB_SCRIPT_COPTIC

    

HB_SCRIPT_GLAGOLITIC

    

HB_SCRIPT_KHAROSHTHI

    

HB_SCRIPT_NEW_TAI_LUE

    

HB_SCRIPT_OLD_PERSIAN

    

HB_SCRIPT_SYLOTI_NAGRI

    

HB_SCRIPT_TIFINAGH

    

HB_SCRIPT_BALINESE

    

HB_SCRIPT_CUNEIFORM

    

HB_SCRIPT_NKO

    

HB_SCRIPT_PHAGS_PA

    

HB_SCRIPT_PHOENICIAN

    

HB_SCRIPT_CARIAN

    

HB_SCRIPT_CHAM

    

HB_SCRIPT_KAYAH_LI

    

HB_SCRIPT_LEPCHA

    

HB_SCRIPT_LYCIAN

    

HB_SCRIPT_LYDIAN

    

HB_SCRIPT_OL_CHIKI

    

HB_SCRIPT_REJANG

    

HB_SCRIPT_SAURASHTRA

    

HB_SCRIPT_SUNDANESE

    

HB_SCRIPT_VAI

    

HB_SCRIPT_AVESTAN

    

HB_SCRIPT_BAMUM

    

HB_SCRIPT_EGYPTIAN_HIEROGLYPHS

    

HB_SCRIPT_IMPERIAL_ARAMAIC

    

HB_SCRIPT_INSCRIPTIONAL_PAHLAVI

    

HB_SCRIPT_INSCRIPTIONAL_PARTHIAN

    

HB_SCRIPT_JAVANESE

    

HB_SCRIPT_KAITHI

    

HB_SCRIPT_LISU

    

HB_SCRIPT_MEETEI_MAYEK

    

HB_SCRIPT_OLD_SOUTH_ARABIAN

    

HB_SCRIPT_OLD_TURKIC

    

HB_SCRIPT_SAMARITAN

    

HB_SCRIPT_TAI_THAM

    

HB_SCRIPT_TAI_VIET

    

HB_SCRIPT_BATAK

    

HB_SCRIPT_BRAHMI

    

HB_SCRIPT_MANDAIC

    

HB_SCRIPT_CHAKMA

    

HB_SCRIPT_MEROITIC_CURSIVE

    

HB_SCRIPT_MEROITIC_HIEROGLYPHS

    

HB_SCRIPT_MIAO

    

HB_SCRIPT_SHARADA

    

HB_SCRIPT_SORA_SOMPENG

    

HB_SCRIPT_TAKRI

    

HB_SCRIPT_BASSA_VAH

  

HB_SCRIPT_ANATOLIAN_HIEROGLYPHS

  

HB_SCRIPT_HATRAN

  

HB_SCRIPT_MULTANI

  

HB_SCRIPT_OLD_HUNGARIAN

  

HB_SCRIPT_SIGNWRITING

  

HB_SCRIPT_INVALID

    

_HB_SCRIPT_MAX_VALUE

HomeUpUp Prev Next
@@ -87,8 +87,6 @@

Description

-

-

Functions

@@ -102,24 +100,12 @@ hb_coretext_face_create (CGFontRe

hb_coretext_face_get_cg_font ()

CGFontRef
 hb_coretext_face_get_cg_font (hb_face_t *face);
-

-

-
-

Returns

-

-

hb_coretext_font_get_ct_font ()

CTFontRef
 hb_coretext_font_get_ct_font (hb_font_t *font);
-

-

-
-

Returns

-

-
@@ -138,7 +124,6 @@ hb_coretext_font_get_ct_font ( -
- Generated by GTK-Doc V1.20.1
+
Generated by GTK-Doc V1.24.1
\ No newline at end of file diff --git a/docs/reference/html/harfbuzz-hb-deprecated.html b/docs/html/harfbuzz-hb-deprecated.html similarity index 90% rename from docs/reference/html/harfbuzz-hb-deprecated.html rename to docs/html/harfbuzz-hb-deprecated.html index 09961c1..13beba0 100644 --- a/docs/reference/html/harfbuzz-hb-deprecated.html +++ b/docs/html/harfbuzz-hb-deprecated.html @@ -2,13 +2,13 @@ -hb-deprecated - - - +hb-deprecated: HarfBuzz Manual + + + - + @@ -18,7 +18,7 @@ Description Home -Up +Up Prev Next @@ -56,11 +56,10 @@

Description

-

-

Functions

+

Types and Values

@@ -69,8 +68,6 @@
#define HB_BUFFER_FLAGS_DEFAULT			HB_BUFFER_FLAG_DEFAULT
 

HB_BUFFER_FLAGS_DEFAULT is deprecated and should not be used in newly-written code.

-

-


@@ -78,8 +75,6 @@
#define HB_BUFFER_SERIALIZE_FLAGS_DEFAULT HB_BUFFER_SERIALIZE_FLAG_DEFAULT
 

HB_BUFFER_SERIALIZE_FLAGS_DEFAULT is deprecated and should not be used in newly-written code.

-

-


@@ -87,13 +82,10 @@
#define HB_SCRIPT_CANADIAN_ABORIGINAL		HB_SCRIPT_CANADIAN_SYLLABICS
 

HB_SCRIPT_CANADIAN_ABORIGINAL is deprecated and should not be used in newly-written code.

-

-

+
Generated by GTK-Doc V1.24.1 \ No newline at end of file diff --git a/docs/reference/html/harfbuzz-hb-face.html b/docs/html/harfbuzz-hb-face.html similarity index 84% rename from docs/reference/html/harfbuzz-hb-face.html rename to docs/html/harfbuzz-hb-face.html index dc31c55..ddc16d0 100644 --- a/docs/reference/html/harfbuzz-hb-face.html +++ b/docs/html/harfbuzz-hb-face.html @@ -2,13 +2,13 @@ -hb-face - - - +hb-face: HarfBuzz Manual + + + - + @@ -19,7 +19,7 @@ Object Hierarchy Home -Up +Up Prev Next @@ -191,14 +191,12 @@

Object Hierarchy

-
    GBoxed
+
    GBoxed
     ╰── hb_face_t
 

Description

-

-

Functions

@@ -207,12 +205,13 @@
hb_face_t *
 hb_face_create (hb_blob_t *blob,
                 unsigned int index);
-

-

+

[Xconstructor]

-

Returns

-

+

Returns

+

.

+

[transfer full]

+

Since: 0.9.2


@@ -222,7 +221,7 @@ hb_face_create_for_tables (void *user_data, hb_destroy_func_t destroy);
-

Parameters

+

Parameters

@@ -237,19 +236,19 @@ hb_face_create_for_tables ( -

Returns

+

Returns

(transfer full)

-

-

Since 1.0

+

Since: 0.9.2


hb_face_destroy ()

void
 hb_face_destroy (hb_face_t *face);
+

[skip]

-

Parameters

+

Parameters

@@ -263,7 +262,7 @@ hb_face_destroy (Since 1.0

+

Since: 0.9.2


@@ -271,11 +270,10 @@ hb_face_destroy (hb_face_t * hb_face_get_empty (void);
-

Returns

+

Returns

(transfer full)

-

-

Since 1.0

+

Since: 0.9.2


@@ -283,7 +281,7 @@ hb_face_get_empty (voidunsigned int hb_face_get_glyph_count (hb_face_t *face);
-

Parameters

+

Parameters

@@ -297,11 +295,7 @@ hb_face_get_glyph_count ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.7


@@ -309,7 +303,7 @@ hb_face_get_glyph_count (unsigned int hb_face_get_index (hb_face_t *face);
-

Parameters

+

Parameters

@@ -323,11 +317,7 @@ hb_face_get_index ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -335,7 +325,7 @@ hb_face_get_index (unsigned int hb_face_get_upem (hb_face_t *face);
-

Parameters

+

Parameters

@@ -349,11 +339,7 @@ hb_face_get_upem ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -361,8 +347,9 @@ hb_face_get_upem (void * hb_face_get_user_data (hb_face_t *face, hb_user_data_key_t *key); +

[skip]

-

Parameters

+

Parameters

@@ -377,11 +364,11 @@ hb_face_get_user_data ( -

Returns

+

Returns

.

[transfer none]

-

Since 1.0

+

Since: 0.9.2


@@ -389,7 +376,7 @@ hb_face_get_user_data (hb_bool_t hb_face_is_immutable (hb_face_t *face);
-

Parameters

+

Parameters

@@ -403,11 +390,7 @@ hb_face_is_immutable ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -415,7 +398,7 @@ hb_face_is_immutable (void hb_face_make_immutable (hb_face_t *face);
-

Parameters

+

Parameters

@@ -429,15 +412,16 @@ hb_face_make_immutable (Since 1.0

+

Since: 0.9.2


hb_face_reference ()

hb_face_t *
 hb_face_reference (hb_face_t *face);
+

[skip]

-

Parameters

+

Parameters

@@ -451,11 +435,7 @@ hb_face_reference ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -463,7 +443,7 @@ hb_face_reference (hb_blob_t * hb_face_reference_blob (hb_face_t *face);
-

Parameters

+

Parameters

@@ -478,11 +458,11 @@ hb_face_reference_blob ( -

Returns

+

Returns

.

[transfer full]

-

Since 1.0

+

Since: 0.9.2


@@ -491,7 +471,7 @@ hb_face_reference_blob (hb_face_t *face, hb_tag_t tag);
-

Parameters

+

Parameters

@@ -506,11 +486,11 @@ hb_face_reference_table ( -

Returns

+

Returns

.

[transfer full]

-

Since 1.0

+

Since: 0.9.2


@@ -519,7 +499,7 @@ hb_face_reference_table (hb_face_t *face, unsigned int glyph_count);
-

Parameters

+

Parameters

@@ -533,7 +513,7 @@ hb_face_set_glyph_count (Since 1.0

+

Since: 0.9.7


@@ -542,7 +522,7 @@ hb_face_set_glyph_count (hb_face_t *face, unsigned int index);
-

Parameters

+

Parameters

@@ -556,7 +536,7 @@ hb_face_set_index (Since 1.0

+

Since: 0.9.2


@@ -565,7 +545,7 @@ hb_face_set_index (hb_face_t *face, unsigned int upem);
-

Parameters

+

Parameters

@@ -579,7 +559,7 @@ hb_face_set_upem (Since 1.0

+

Since: 0.9.2


@@ -590,8 +570,9 @@ hb_face_set_user_data (void *data, hb_destroy_func_t destroy, hb_bool_t replace); +

[skip]

-

Parameters

+

Parameters

@@ -605,11 +586,7 @@ hb_face_set_user_data ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2

@@ -618,13 +595,10 @@ hb_face_set_user_data (

hb_face_t

typedef struct hb_face_t hb_face_t;
 
-

-

+
Generated by GTK-Doc V1.24.1 \ No newline at end of file diff --git a/docs/reference/html/harfbuzz-hb-font.html b/docs/html/harfbuzz-hb-font.html similarity index 80% rename from docs/reference/html/harfbuzz-hb-font.html rename to docs/html/harfbuzz-hb-font.html index 9596d54..1a81a44 100644 --- a/docs/reference/html/harfbuzz-hb-font.html +++ b/docs/html/harfbuzz-hb-font.html @@ -2,13 +2,13 @@ -hb-font - - - +hb-font: HarfBuzz Manual + + + - - + + @@ -19,9 +19,9 @@ Object Hierarchy
- + - +
HomeUpUp PrevNextNext
@@ -560,6 +560,62 @@ (*hb_reference_table_func_t) () + + +void + + +hb_font_funcs_set_font_h_extents_func () + + + + +void + + +hb_font_funcs_set_font_v_extents_func () + + + + +void + + +hb_font_get_extents_for_direction () + + + + +hb_bool_t + + +(*hb_font_get_font_extents_func_t) () + + + + +hb_bool_t + + +hb_font_get_h_extents () + + + + +hb_bool_t + + +hb_font_get_v_extents () + + + + +void + + +hb_font_set_parent () + +
@@ -603,20 +659,26 @@ typedef hb_font_t + +typedef +hb_font_get_font_h_extents_func_t + + +typedef +hb_font_get_font_v_extents_func_t +

Object Hierarchy

-
    GBoxed
+
    GBoxed
     ├── hb_font_funcs_t
     ╰── hb_font_t
 

Description

-

-

Functions

@@ -630,7 +692,7 @@ hb_font_add_glyph_origin_for_direction hb_position_t *x, hb_position_t *y);
-

Parameters

+

Parameters

@@ -656,19 +718,35 @@ hb_font_add_glyph_origin_for_direction
-

Since 1.0

+

Since: 0.9.2


hb_font_create ()

hb_font_t *
 hb_font_create (hb_face_t *face);
-

-

+

[Xconstructor]

+
+

Parameters

+
+++++ + + + + + +

face

a face.

 
+
-

Returns

-

+

Returns

+

.

+

[transfer full]

+

Since: 0.9.2


@@ -676,7 +754,7 @@ hb_font_create (hb_font_t * hb_font_create_sub_font (hb_font_t *parent);
-

Parameters

+

Parameters

@@ -691,19 +769,20 @@ hb_font_create_sub_font ( -

Returns

+

Returns

.

[transfer full]

-

Since 1.0

+

Since: 0.9.2


hb_font_destroy ()

void
 hb_font_destroy (hb_font_t *font);
+

[skip]

-

Parameters

+

Parameters

@@ -717,27 +796,29 @@ hb_font_destroy (Since 1.0

+

Since: 0.9.2


hb_font_funcs_create ()

hb_font_funcs_t *
 hb_font_funcs_create (void);
-

-

+

[Xconstructor]

-

Returns

-

+

Returns

+

.

+

[transfer full]

+

Since: 0.9.2


hb_font_funcs_destroy ()

void
 hb_font_funcs_destroy (hb_font_funcs_t *ffuncs);
+

[skip]

-

Parameters

+

Parameters

@@ -751,7 +832,7 @@ hb_font_funcs_destroy (Since 1.0

+

Since: 0.9.2


@@ -759,11 +840,11 @@ hb_font_funcs_destroy (hb_font_funcs_t * hb_font_funcs_get_empty (void);
-

Returns

+

Returns

.

[transfer full]

-

Since 1.0

+

Since: 0.9.2


@@ -771,8 +852,9 @@ hb_font_funcs_get_empty (voidvoid * hb_font_funcs_get_user_data (hb_font_funcs_t *ffuncs, hb_user_data_key_t *key); +

[skip]

-

Parameters

+

Parameters

@@ -787,11 +869,11 @@ hb_font_funcs_get_user_data ( -

Returns

+

Returns

.

[transfer none]

-

Since 1.0

+

Since: 0.9.2


@@ -799,7 +881,7 @@ hb_font_funcs_get_user_data (hb_bool_t hb_font_funcs_is_immutable (hb_font_funcs_t *ffuncs);
-

Parameters

+

Parameters

@@ -813,11 +895,7 @@ hb_font_funcs_is_immutable ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -825,7 +903,7 @@ hb_font_funcs_is_immutable (void hb_font_funcs_make_immutable (hb_font_funcs_t *ffuncs);
-

Parameters

+

Parameters

@@ -839,15 +917,16 @@ hb_font_funcs_make_immutable (Since 1.0

+

Since: 0.9.2


hb_font_funcs_reference ()

hb_font_funcs_t *
 hb_font_funcs_reference (hb_font_funcs_t *ffuncs);
+

[skip]

-

Parameters

+

Parameters

@@ -861,11 +940,7 @@ hb_font_funcs_reference ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -877,7 +952,7 @@ hb_font_funcs_set_glyph_contour_point_func void *user_data, hb_destroy_func_t destroy);
-

Parameters

+

Parameters

@@ -898,7 +973,7 @@ hb_font_funcs_set_glyph_contour_point_func
-

Since 1.0

+

Since: 0.9.2


@@ -909,7 +984,7 @@ hb_font_funcs_set_glyph_extents_func (void *user_data, hb_destroy_func_t destroy);
-

Parameters

+

Parameters

@@ -930,7 +1005,7 @@ hb_font_funcs_set_glyph_extents_func (Since 1.0

+

Since: 0.9.2


@@ -942,21 +1017,28 @@ hb_font_funcs_set_glyph_from_name_func void *user_data, hb_destroy_func_t destroy);
-

Parameters

+

Parameters

- + + - + + + + + + +

ffuncs

font functions.

 

func

.

[closure user_data][destroy destroy][scope notified]
-

Since 1.0

+

Since: 0.9.2


@@ -966,22 +1048,32 @@ hb_font_funcs_set_glyph_func (hb_font_get_glyph_func_t func, void *user_data, hb_destroy_func_t destroy); +

hb_font_funcs_set_glyph_func has been deprecated since version 1.2.3 and should not be used in newly-written code.

+

Deprecated. Use hb_font_funcs_set_nominal_glyph_func() and +hb_font_funcs_set_variation_glyph_func() instead.

-

Parameters

+

Parameters

- + + - + + + + + + +

ffuncs

font functions.

 

func

.

[closure user_data][destroy destroy][scope notified]
-

Since 1.0

+

Since: 0.9.2


@@ -993,7 +1085,7 @@ hb_font_funcs_set_glyph_h_advance_func void *user_data, hb_destroy_func_t destroy);
-

Parameters

+

Parameters

@@ -1014,7 +1106,7 @@ hb_font_funcs_set_glyph_h_advance_func
-

Since 1.0

+

Since: 0.9.2


@@ -1026,7 +1118,7 @@ hb_font_funcs_set_glyph_h_kerning_func void *user_data, hb_destroy_func_t destroy);
-

Parameters

+

Parameters

@@ -1047,7 +1139,7 @@ hb_font_funcs_set_glyph_h_kerning_func
-

Since 1.0

+

Since: 0.9.2


@@ -1058,7 +1150,7 @@ hb_font_funcs_set_glyph_h_origin_func (void *user_data, hb_destroy_func_t destroy);
-

Parameters

+

Parameters

@@ -1079,7 +1171,7 @@ hb_font_funcs_set_glyph_h_origin_func (Since 1.0

+

Since: 0.9.2


@@ -1090,21 +1182,28 @@ hb_font_funcs_set_glyph_name_func (void *user_data, hb_destroy_func_t destroy);
-

Parameters

+

Parameters

- + + - + + + + + + +

ffuncs

font functions.

 

func

.

[closure user_data][destroy destroy][scope notified]
-

Since 1.0

+

Since: 0.9.2


@@ -1116,7 +1215,7 @@ hb_font_funcs_set_glyph_v_advance_func void *user_data, hb_destroy_func_t destroy);
-

Parameters

+

Parameters

@@ -1137,7 +1236,7 @@ hb_font_funcs_set_glyph_v_advance_func
-

Since 1.0

+

Since: 0.9.2


@@ -1149,7 +1248,7 @@ hb_font_funcs_set_glyph_v_kerning_func void *user_data, hb_destroy_func_t destroy);
-

Parameters

+

Parameters

@@ -1170,7 +1269,7 @@ hb_font_funcs_set_glyph_v_kerning_func
-

Since 1.0

+

Since: 0.9.2


@@ -1181,7 +1280,7 @@ hb_font_funcs_set_glyph_v_origin_func (void *user_data, hb_destroy_func_t destroy);
-

Parameters

+

Parameters

@@ -1202,7 +1301,7 @@ hb_font_funcs_set_glyph_v_origin_func (Since 1.0

+

Since: 0.9.2


@@ -1213,8 +1312,9 @@ hb_font_funcs_set_user_data (void *data, hb_destroy_func_t destroy, hb_bool_t replace); +

[skip]

-

Parameters

+

Parameters

@@ -1228,11 +1328,7 @@ hb_font_funcs_set_user_data ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -1240,11 +1336,10 @@ hb_font_funcs_set_user_data (hb_font_t * hb_font_get_empty (void);
-

Returns

+

Returns

(transfer full)

-

-

Since 1.0

+

Since: 0.9.2


@@ -1252,7 +1347,7 @@ hb_font_get_empty (voidhb_face_t * hb_font_get_face (hb_font_t *font);
-

Parameters

+

Parameters

@@ -1267,11 +1362,11 @@ hb_font_get_face ( -

Returns

+

Returns

.

[transfer none]

-

Since 1.0

+

Since: 0.9.2


@@ -1282,7 +1377,7 @@ hb_font_get_glyph (hb_codepoint_t variation_selector, hb_codepoint_t *glyph);
-

Parameters

+

Parameters

@@ -1303,11 +1398,7 @@ hb_font_get_glyph ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -1320,7 +1411,7 @@ hb_font_get_glyph_advance_for_direction hb_position_t *x, hb_position_t *y);
-

Parameters

+

Parameters

@@ -1346,7 +1437,7 @@ hb_font_get_glyph_advance_for_direction
-

Since 1.0

+

Since: 0.9.2


@@ -1356,12 +1447,6 @@ hb_font_get_glyph_advance_for_direction void *font_data, hb_codepoint_t glyph, void *user_data); -

-

-
-

Returns

-

-

@@ -1373,7 +1458,7 @@ hb_font_get_glyph_contour_point (hb_position_t *x, hb_position_t *y);
-

Parameters

+

Parameters

@@ -1399,11 +1484,7 @@ hb_font_get_glyph_contour_point (
-
-

Returns

-

-
-

Since 1.0

+

Since: 0.9.2


@@ -1417,7 +1498,7 @@ hb_font_get_glyph_contour_point_for_origin hb_position_t *x, hb_position_t *y);
-

Parameters

+

Parameters

@@ -1443,11 +1524,7 @@ hb_font_get_glyph_contour_point_for_origin
-
-

Returns

-

-
-

Since 1.0

+

Since: 0.9.2


@@ -1461,12 +1538,6 @@ hb_font_get_glyph_contour_point_for_origin hb_position_t *x, hb_position_t *y, void *user_data); -

-

-
-

Returns

-

-

@@ -1476,7 +1547,7 @@ hb_font_get_glyph_extents (hb_codepoint_t glyph, hb_glyph_extents_t *extents);
-

Parameters

+

Parameters

@@ -1497,11 +1568,7 @@ hb_font_get_glyph_extents ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -1512,7 +1579,7 @@ hb_font_get_glyph_extents_for_origin (hb_direction_t direction, hb_glyph_extents_t *extents);
-

Parameters

+

Parameters

@@ -1533,11 +1600,7 @@ hb_font_get_glyph_extents_for_origin ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -1548,12 +1611,6 @@ hb_font_get_glyph_extents_for_origin (hb_codepoint_t glyph, hb_glyph_extents_t *extents, void *user_data); -

-

-
-

Returns

-

-

@@ -1564,7 +1621,7 @@ hb_font_get_glyph_from_name (int len, hb_codepoint_t *glyph);
-

Parameters

+

Parameters

@@ -1590,11 +1647,7 @@ hb_font_get_glyph_from_name ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -1604,12 +1657,6 @@ hb_font_get_glyph_from_name (void *font_data, const char *name, int len); -

-

-
-

Returns

-

-

@@ -1621,12 +1668,7 @@ hb_font_get_glyph_from_name (hb_codepoint_t variation_selector, hb_codepoint_t *glyph, void *user_data); -

-

-
-

Returns

-

-
+

hb_font_get_glyph_func_t is deprecated and should not be used in newly-written code.


@@ -1635,7 +1677,7 @@ hb_font_get_glyph_from_name (hb_font_t *font, hb_codepoint_t glyph);
-

Parameters

+

Parameters

@@ -1649,11 +1691,7 @@ hb_font_get_glyph_h_advance ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -1663,7 +1701,7 @@ hb_font_get_glyph_h_kerning (hb_codepoint_t left_glyph, hb_codepoint_t right_glyph);
-

Parameters

+

Parameters

@@ -1677,11 +1715,7 @@ hb_font_get_glyph_h_kerning ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -1692,7 +1726,7 @@ hb_font_get_glyph_h_origin (hb_position_t *x, hb_position_t *y);
-

Parameters

+

Parameters

@@ -1718,11 +1752,7 @@ hb_font_get_glyph_h_origin ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -1736,7 +1766,7 @@ hb_font_get_glyph_kerning_for_direction hb_position_t *x, hb_position_t *y);
-

Parameters

+

Parameters

@@ -1762,7 +1792,7 @@ hb_font_get_glyph_kerning_for_direction
-

Since 1.0

+

Since: 0.9.2


@@ -1773,12 +1803,6 @@ hb_font_get_glyph_kerning_for_direction hb_codepoint_t first_glyph, hb_codepoint_t second_glyph, void *user_data); -

-

-
-

Returns

-

-

@@ -1789,7 +1813,7 @@ hb_font_get_glyph_name (char *name, unsigned int size);
-

Parameters

+

Parameters

@@ -1810,11 +1834,7 @@ hb_font_get_glyph_name ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -1826,12 +1846,6 @@ hb_font_get_glyph_name (char *name, unsigned int size, void *user_data); -

-

-
-

Returns

-

-

@@ -1844,7 +1858,7 @@ hb_font_get_glyph_origin_for_direction hb_position_t *x, hb_position_t *y);
-

Parameters

+

Parameters

@@ -1870,7 +1884,7 @@ hb_font_get_glyph_origin_for_direction
-

Since 1.0

+

Since: 0.9.2


@@ -1882,12 +1896,6 @@ hb_font_get_glyph_origin_for_direction hb_position_t *x, hb_position_t *y, void *user_data); -

-

-
-

Returns

-

-

@@ -1896,7 +1904,7 @@ hb_font_get_glyph_origin_for_direction hb_font_get_glyph_v_advance (hb_font_t *font, hb_codepoint_t glyph);
-

Parameters

+

Parameters

@@ -1910,11 +1918,7 @@ hb_font_get_glyph_v_advance ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -1924,7 +1928,7 @@ hb_font_get_glyph_v_kerning (hb_codepoint_t top_glyph, hb_codepoint_t bottom_glyph);
-

Parameters

+

Parameters

@@ -1938,11 +1942,7 @@ hb_font_get_glyph_v_kerning ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -1953,7 +1953,7 @@ hb_font_get_glyph_v_origin (hb_position_t *x, hb_position_t *y);
-

Parameters

+

Parameters

@@ -1979,11 +1979,7 @@ hb_font_get_glyph_v_origin ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -1991,7 +1987,7 @@ hb_font_get_glyph_v_origin (hb_font_t * hb_font_get_parent (hb_font_t *font);
-

Parameters

+

Parameters

@@ -2006,11 +2002,11 @@ hb_font_get_parent ( -

Returns

+

Returns

.

[transfer none]

-

Since 1.0

+

Since: 0.9.2


@@ -2020,7 +2016,7 @@ hb_font_get_ppem (unsigned int *x_ppem, unsigned int *y_ppem);
-

Parameters

+

Parameters

@@ -2046,7 +2042,7 @@ hb_font_get_ppem (Since 1.0

+

Since: 0.9.2


@@ -2056,7 +2052,7 @@ hb_font_get_scale (int *x_scale, int *y_scale);
-

Parameters

+

Parameters

@@ -2082,7 +2078,7 @@ hb_font_get_scale (Since 1.0

+

Since: 0.9.2


@@ -2090,8 +2086,9 @@ hb_font_get_scale (void * hb_font_get_user_data (hb_font_t *font, hb_user_data_key_t *key); +

[skip]

-

Parameters

+

Parameters

@@ -2106,11 +2103,11 @@ hb_font_get_user_data ( -

Returns

+

Returns

.

[transfer none]

-

Since 1.0

+

Since: 0.9.2


@@ -2121,7 +2118,7 @@ hb_font_glyph_from_string (int len, hb_codepoint_t *glyph);
-

Parameters

+

Parameters

@@ -2137,7 +2134,7 @@ hb_font_glyph_from_string (

s

- + @@ -2147,11 +2144,7 @@ hb_font_glyph_from_string ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -2162,7 +2155,7 @@ hb_font_glyph_to_string (char *s, unsigned int size);
-

Parameters

+

Parameters

.

[array length=len][array length=len][element-type uint8_t]

glyph

@@ -2183,7 +2176,7 @@ hb_font_glyph_to_string (Since 1.0

+

Since: 0.9.2


@@ -2191,7 +2184,7 @@ hb_font_glyph_to_string (hb_bool_t hb_font_is_immutable (hb_font_t *font);
-

Parameters

+

Parameters

@@ -2205,11 +2198,7 @@ hb_font_is_immutable ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -2217,7 +2206,7 @@ hb_font_is_immutable (void hb_font_make_immutable (hb_font_t *font);
-

Parameters

+

Parameters

@@ -2231,15 +2220,16 @@ hb_font_make_immutable (Since 1.0

+

Since: 0.9.2


hb_font_reference ()

hb_font_t *
 hb_font_reference (hb_font_t *font);
+

[skip]

-

Parameters

+

Parameters

@@ -2254,11 +2244,11 @@ hb_font_reference ( -

Returns

+

Returns

.

[transfer full]

-

Since 1.0

+

Since: 0.9.2


@@ -2269,7 +2259,7 @@ hb_font_set_funcs (void *font_data, hb_destroy_func_t destroy);
-

Parameters

+

Parameters

@@ -2290,7 +2280,7 @@ hb_font_set_funcs (Since 1.0

+

Since: 0.9.2


@@ -2300,7 +2290,7 @@ hb_font_set_funcs_data (void *font_data, hb_destroy_func_t destroy);
-

Parameters

+

Parameters

@@ -2321,7 +2311,7 @@ hb_font_set_funcs_data (Since 1.0

+

Since: 0.9.2


@@ -2331,7 +2321,7 @@ hb_font_set_ppem (unsigned int x_ppem, unsigned int y_ppem);
-

Parameters

+

Parameters

@@ -2345,7 +2335,7 @@ hb_font_set_ppem (Since 1.0

+

Since: 0.9.2


@@ -2355,7 +2345,7 @@ hb_font_set_scale (int x_scale, int y_scale);
-

Parameters

+

Parameters

@@ -2369,7 +2359,7 @@ hb_font_set_scale (Since 1.0

+

Since: 0.9.2


@@ -2380,8 +2370,9 @@ hb_font_set_user_data (void *data, hb_destroy_func_t destroy, hb_bool_t replace); +

[skip]

-

Parameters

+

Parameters

@@ -2395,11 +2386,7 @@ hb_font_set_user_data ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -2412,7 +2399,7 @@ hb_font_subtract_glyph_origin_for_direction hb_position_t *x, hb_position_t *y);
-

Parameters

+

Parameters

@@ -2438,7 +2425,7 @@ hb_font_subtract_glyph_origin_for_direction
-

Since 1.0

+

Since: 0.9.2


@@ -2447,12 +2434,195 @@ hb_font_subtract_glyph_origin_for_direction (*hb_reference_table_func_t) (hb_face_t *face, hb_tag_t tag, void *user_data); -

-

+
+
+
+

hb_font_funcs_set_font_h_extents_func ()

+
void
+hb_font_funcs_set_font_h_extents_func (hb_font_funcs_t *ffuncs,
+                                       hb_font_get_font_h_extents_func_t func,
+                                       void *user_data,
+                                       hb_destroy_func_t destroy);
+
+

Parameters

+
+++++ + + + + + + + + + + + + +

ffuncs

font functions.

 

func

.

[closure user_data][destroy destroy][scope notified]
+
+

Since: 1.1.2

+
+
+
+

hb_font_funcs_set_font_v_extents_func ()

+
void
+hb_font_funcs_set_font_v_extents_func (hb_font_funcs_t *ffuncs,
+                                       hb_font_get_font_v_extents_func_t func,
+                                       void *user_data,
+                                       hb_destroy_func_t destroy);
+
+

Parameters

+
+++++ + + + + + + + + + + + + +

ffuncs

font functions.

 

func

.

[closure user_data][destroy destroy][scope notified]
+
+

Since: 1.1.2

+
+
+
+

hb_font_get_extents_for_direction ()

+
void
+hb_font_get_extents_for_direction (hb_font_t *font,
+                                   hb_direction_t direction,
+                                   hb_font_extents_t *extents);
-

Returns

-

+

Parameters

+
+++++ + + + + + +

font

a font.

 
+

Since: 1.1.3

+
+
+
+

hb_font_get_font_extents_func_t ()

+
hb_bool_t
+(*hb_font_get_font_extents_func_t) (hb_font_t *font,
+                                    void *font_data,
+                                    hb_font_extents_t *metrics,
+                                    void *user_data);
+
+
+
+

hb_font_get_h_extents ()

+
hb_bool_t
+hb_font_get_h_extents (hb_font_t *font,
+                       hb_font_extents_t *extents);
+
+

Parameters

+
+++++ + + + + + + + + + + + + +

font

a font.

 

extents

.

[out]
+
+

Since: 1.1.3

+
+
+
+

hb_font_get_v_extents ()

+
hb_bool_t
+hb_font_get_v_extents (hb_font_t *font,
+                       hb_font_extents_t *extents);
+
+

Parameters

+
+++++ + + + + + + + + + + + + +

font

a font.

 

extents

.

[out]
+
+

Since: 1.1.3

+
+
+
+

hb_font_set_parent ()

+
void
+hb_font_set_parent (hb_font_t *font,
+                    hb_font_t *parent);
+

Sets parent font of font +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

font

a font.

 

parent

new parent.

 
+
+

Since: 1.0.5

@@ -2461,69 +2631,64 @@ hb_font_subtract_glyph_origin_for_direction

hb_font_funcs_t

typedef struct hb_font_funcs_t hb_font_funcs_t;
 
-

-


hb_font_get_glyph_h_advance_func_t

typedef hb_font_get_glyph_advance_func_t hb_font_get_glyph_h_advance_func_t;
 
-

-


hb_font_get_glyph_h_kerning_func_t

typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_h_kerning_func_t;
 
-

-


hb_font_get_glyph_h_origin_func_t

typedef hb_font_get_glyph_origin_func_t hb_font_get_glyph_h_origin_func_t;
 
-

-


hb_font_get_glyph_v_advance_func_t

typedef hb_font_get_glyph_advance_func_t hb_font_get_glyph_v_advance_func_t;
 
-

-


hb_font_get_glyph_v_kerning_func_t

typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_v_kerning_func_t;
 
-

-


hb_font_get_glyph_v_origin_func_t

typedef hb_font_get_glyph_origin_func_t hb_font_get_glyph_v_origin_func_t;
 
-

-


hb_font_t

typedef struct hb_font_t hb_font_t;
 
-

-

+
+
+
+

hb_font_get_font_h_extents_func_t

+
typedef hb_font_get_font_extents_func_t hb_font_get_font_h_extents_func_t;
+
+
+
+
+

hb_font_get_font_v_extents_func_t

+
typedef hb_font_get_font_extents_func_t hb_font_get_font_v_extents_func_t;
+
+
Generated by GTK-Doc V1.24.1 \ No newline at end of file diff --git a/docs/reference/html/harfbuzz-hb-ft.html b/docs/html/harfbuzz-hb-ft.html similarity index 62% rename from docs/reference/html/harfbuzz-hb-ft.html rename to docs/html/harfbuzz-hb-ft.html index 910af86..66c83db 100644 --- a/docs/reference/html/harfbuzz-hb-ft.html +++ b/docs/html/harfbuzz-hb-ft.html @@ -2,13 +2,13 @@ -hb-ft - - - +hb-ft: HarfBuzz Manual + + + - + @@ -18,7 +18,7 @@ Description Home -Up +Up Prev Next @@ -57,6 +57,14 @@ +hb_face_t * + + +hb_ft_face_create_referenced () + + + + hb_font_t * @@ -65,6 +73,14 @@ +hb_font_t * + + +hb_ft_font_create_referenced () + + + + FT_Face @@ -76,6 +92,22 @@ void +hb_ft_font_set_load_flags () + + + + +int + + +hb_ft_font_get_load_flags () + + + + +void + + hb_ft_font_set_funcs () @@ -84,8 +116,6 @@

Description

-

-

Functions

@@ -95,7 +125,7 @@ hb_ft_face_create (FT_Face ft_face, hb_destroy_func_t destroy);
-

Parameters

+

Parameters

@@ -110,11 +140,11 @@ hb_ft_face_create (FT_Face
-

Returns

+

Returns

.

[transfer full]

-

Since 1.0

+

Since: 0.9.2


@@ -122,11 +152,23 @@ hb_ft_face_create (FT_Face
hb_face_t *
 hb_ft_face_create_cached (FT_Face ft_face);
-

Returns

+

Returns

.

[transfer full]

-

Since 1.0

+

Since: 0.9.2

+
+
+
+

hb_ft_face_create_referenced ()

+
hb_face_t *
+hb_ft_face_create_referenced (FT_Face ft_face);
+
+

Returns

+

.

+

[transfer full]

+
+

Since: 0.9.38


@@ -135,7 +177,7 @@ hb_ft_face_create_cached (FT_Face hb_ft_font_create (FT_Face ft_face, hb_destroy_func_t destroy);
-

Parameters

+

Parameters

@@ -150,31 +192,50 @@ hb_ft_font_create (FT_Face
-

Returns

+

Returns

.

[transfer full]

-

Since 1.0

+

Since: 0.9.2

+
+
+
+

hb_ft_font_create_referenced ()

+
hb_font_t *
+hb_ft_font_create_referenced (FT_Face ft_face);
+
+

Returns

+

.

+

[transfer full]

+
+

Since: 0.9.38


hb_ft_font_get_face ()

FT_Face
 hb_ft_font_get_face (hb_font_t *font);
-

-

-
-

Returns

-

+
+
+

hb_ft_font_set_load_flags ()

+
void
+hb_ft_font_set_load_flags (hb_font_t *font,
+                           int load_flags);
+

Since: 1.0.5

+
+
+
+

hb_ft_font_get_load_flags ()

+
int
+hb_ft_font_get_load_flags (hb_font_t *font);
+

Since: 1.0.5


hb_ft_font_set_funcs ()

void
 hb_ft_font_set_funcs (hb_font_t *font);
-

-

@@ -182,7 +243,6 @@ hb_ft_font_set_funcs ( -
- Generated by GTK-Doc V1.20.1
+
Generated by GTK-Doc V1.24.1 \ No newline at end of file diff --git a/docs/reference/html/harfbuzz-hb-glib.html b/docs/html/harfbuzz-hb-glib.html similarity index 79% rename from docs/reference/html/harfbuzz-hb-glib.html rename to docs/html/harfbuzz-hb-glib.html index 03ab919..342625c 100644 --- a/docs/reference/html/harfbuzz-hb-glib.html +++ b/docs/html/harfbuzz-hb-glib.html @@ -2,13 +2,13 @@ -hb-glib - - - +hb-glib: HarfBuzz Manual + + + - + @@ -18,7 +18,7 @@
Description Home -Up +Up Prev Next @@ -63,13 +63,19 @@ hb_glib_script_to_script () + + +hb_blob_t * + + +hb_glib_blob_create () + +

Description

-

-

Functions

@@ -77,36 +83,25 @@

hb_glib_get_unicode_funcs ()

hb_unicode_funcs_t *
 hb_glib_get_unicode_funcs (void);
-

-

-
-

Returns

-

-

hb_glib_script_from_script ()

GUnicodeScript
 hb_glib_script_from_script (hb_script_t script);
-

-

-
-

Returns

-

-

hb_glib_script_to_script ()

hb_script_t
 hb_glib_script_to_script (GUnicodeScript script);
-

-

-
-

Returns

-

+
+
+

hb_glib_blob_create ()

+
hb_blob_t *
+hb_glib_blob_create (GBytes *gbytes);
+

Since: 0.9.38

@@ -114,7 +109,6 @@ hb_glib_script_to_script (GUnicod
+
Generated by GTK-Doc V1.24.1 \ No newline at end of file diff --git a/docs/html/harfbuzz-hb-gobject.html b/docs/html/harfbuzz-hb-gobject.html new file mode 100644 index 0000000..6dfcd08 --- /dev/null +++ b/docs/html/harfbuzz-hb-gobject.html @@ -0,0 +1,651 @@ + + + + +hb-gobject: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

hb-gobject

+

hb-gobject

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GType + +hb_gobject_blob_get_type () +
+GType + +hb_gobject_buffer_content_type_get_type () +
+GType + +hb_gobject_buffer_flags_get_type () +
+GType + +hb_gobject_buffer_get_type () +
+GType + +hb_gobject_buffer_serialize_flags_get_type () +
+GType + +hb_gobject_buffer_serialize_format_get_type () +
+GType + +hb_gobject_direction_get_type () +
+GType + +hb_gobject_face_get_type () +
+GType + +hb_gobject_font_funcs_get_type () +
+GType + +hb_gobject_font_get_type () +
+GType + +hb_gobject_memory_mode_get_type () +
+GType + +hb_gobject_ot_layout_glyph_class_get_type () +
+GType + +hb_gobject_script_get_type () +
+GType + +hb_gobject_shape_plan_get_type () +
+GType + +hb_gobject_unicode_combining_class_get_type () +
+GType + +hb_gobject_unicode_funcs_get_type () +
+GType + +hb_gobject_unicode_general_category_get_type () +
+GType + +hb_gobject_buffer_cluster_level_get_type () +
+GType + +hb_gobject_feature_get_type () +
+GType + +hb_gobject_glyph_info_get_type () +
+GType + +hb_gobject_glyph_position_get_type () +
+GType + +hb_gobject_segment_properties_get_type () +
+GType + +hb_gobject_set_get_type () +
+GType + +hb_gobject_user_data_key_get_type () +
+
+ +
+

Description

+
+
+

Functions

+
+

hb_gobject_blob_get_type ()

+
GType
+hb_gobject_blob_get_type (void);
+
+
+
+

hb_gobject_buffer_content_type_get_type ()

+
GType
+hb_gobject_buffer_content_type_get_type
+                               (void);
+
+
+
+

hb_gobject_buffer_flags_get_type ()

+
GType
+hb_gobject_buffer_flags_get_type (void);
+
+
+
+

hb_gobject_buffer_get_type ()

+
GType
+hb_gobject_buffer_get_type (void);
+
+
+
+

hb_gobject_buffer_serialize_flags_get_type ()

+
GType
+hb_gobject_buffer_serialize_flags_get_type
+                               (void);
+
+
+
+

hb_gobject_buffer_serialize_format_get_type ()

+
GType
+hb_gobject_buffer_serialize_format_get_type
+                               (void);
+
+
+
+

hb_gobject_direction_get_type ()

+
GType
+hb_gobject_direction_get_type (void);
+
+
+
+

hb_gobject_face_get_type ()

+
GType
+hb_gobject_face_get_type (void);
+
+
+
+

hb_gobject_font_funcs_get_type ()

+
GType
+hb_gobject_font_funcs_get_type (void);
+
+
+
+

hb_gobject_font_get_type ()

+
GType
+hb_gobject_font_get_type (void);
+
+
+
+

hb_gobject_memory_mode_get_type ()

+
GType
+hb_gobject_memory_mode_get_type (void);
+
+
+
+

hb_gobject_ot_layout_glyph_class_get_type ()

+
GType
+hb_gobject_ot_layout_glyph_class_get_type
+                               (void);
+
+
+
+

hb_gobject_script_get_type ()

+
GType
+hb_gobject_script_get_type (void);
+
+
+
+

hb_gobject_shape_plan_get_type ()

+
GType
+hb_gobject_shape_plan_get_type (void);
+
+
+
+

hb_gobject_unicode_combining_class_get_type ()

+
GType
+hb_gobject_unicode_combining_class_get_type
+                               (void);
+
+
+
+

hb_gobject_unicode_funcs_get_type ()

+
GType
+hb_gobject_unicode_funcs_get_type (void);
+
+
+
+

hb_gobject_unicode_general_category_get_type ()

+
GType
+hb_gobject_unicode_general_category_get_type
+                               (void);
+
+
+
+

hb_gobject_buffer_cluster_level_get_type ()

+
GType
+hb_gobject_buffer_cluster_level_get_type
+                               (void);
+
+
+
+

hb_gobject_feature_get_type ()

+
GType
+hb_gobject_feature_get_type (void);
+
+
+
+

hb_gobject_glyph_info_get_type ()

+
GType
+hb_gobject_glyph_info_get_type (void);
+
+
+
+

hb_gobject_glyph_position_get_type ()

+
GType
+hb_gobject_glyph_position_get_type (void);
+
+
+
+

hb_gobject_segment_properties_get_type ()

+
GType
+hb_gobject_segment_properties_get_type
+                               (void);
+
+
+
+

hb_gobject_set_get_type ()

+
GType
+hb_gobject_set_get_type (void);
+
+
+
+

hb_gobject_user_data_key_get_type ()

+
GType
+hb_gobject_user_data_key_get_type (void);
+
+
+
+

Types and Values

+
+

HB_GOBJECT_TYPE_BLOB

+
#define HB_GOBJECT_TYPE_BLOB (hb_gobject_blob_get_type ())
+
+
+
+
+

HB_GOBJECT_TYPE_BUFFER

+
#define HB_GOBJECT_TYPE_BUFFER (hb_gobject_buffer_get_type ())
+
+
+
+
+

HB_GOBJECT_TYPE_BUFFER_CONTENT_TYPE

+
#define HB_GOBJECT_TYPE_BUFFER_CONTENT_TYPE (hb_gobject_buffer_content_type_get_type ())
+
+
+
+
+

HB_GOBJECT_TYPE_BUFFER_FLAGS

+
#define HB_GOBJECT_TYPE_BUFFER_FLAGS (hb_gobject_buffer_flags_get_type ())
+
+
+
+
+

HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FLAGS

+
#define HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FLAGS (hb_gobject_buffer_serialize_flags_get_type ())
+
+
+
+
+

HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FORMAT

+
#define HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FORMAT (hb_gobject_buffer_serialize_format_get_type ())
+
+
+
+
+

HB_GOBJECT_TYPE_DIRECTION

+
#define HB_GOBJECT_TYPE_DIRECTION (hb_gobject_direction_get_type ())
+
+
+
+
+

HB_GOBJECT_TYPE_FACE

+
#define HB_GOBJECT_TYPE_FACE (hb_gobject_face_get_type ())
+
+
+
+
+

HB_GOBJECT_TYPE_FONT

+
#define HB_GOBJECT_TYPE_FONT (hb_gobject_font_get_type ())
+
+
+
+
+

HB_GOBJECT_TYPE_FONT_FUNCS

+
#define HB_GOBJECT_TYPE_FONT_FUNCS (hb_gobject_font_funcs_get_type ())
+
+
+
+
+

HB_GOBJECT_TYPE_MEMORY_MODE

+
#define HB_GOBJECT_TYPE_MEMORY_MODE (hb_gobject_memory_mode_get_type ())
+
+
+
+
+

HB_GOBJECT_TYPE_OT_LAYOUT_GLYPH_CLASS

+
#define HB_GOBJECT_TYPE_OT_LAYOUT_GLYPH_CLASS (hb_gobject_ot_layout_glyph_class_get_type ())
+
+
+
+
+

HB_GOBJECT_TYPE_SCRIPT

+
#define HB_GOBJECT_TYPE_SCRIPT (hb_gobject_script_get_type ())
+
+
+
+
+

HB_GOBJECT_TYPE_SHAPE_PLAN

+
#define HB_GOBJECT_TYPE_SHAPE_PLAN (hb_gobject_shape_plan_get_type ())
+
+
+
+
+

HB_GOBJECT_TYPE_UNICODE_COMBINING_CLASS

+
#define HB_GOBJECT_TYPE_UNICODE_COMBINING_CLASS (hb_gobject_unicode_combining_class_get_type ())
+
+
+
+
+

HB_GOBJECT_TYPE_UNICODE_FUNCS

+
#define HB_GOBJECT_TYPE_UNICODE_FUNCS (hb_gobject_unicode_funcs_get_type ())
+
+
+
+
+

HB_GOBJECT_TYPE_UNICODE_GENERAL_CATEGORY

+
#define HB_GOBJECT_TYPE_UNICODE_GENERAL_CATEGORY (hb_gobject_unicode_general_category_get_type ())
+
+
+
+
+

HB_GOBJECT_TYPE_BUFFER_CLUSTER_LEVEL

+
#define HB_GOBJECT_TYPE_BUFFER_CLUSTER_LEVEL (hb_gobject_buffer_cluster_level_get_type ())
+
+
+
+
+

HB_GOBJECT_TYPE_FEATURE

+
#define HB_GOBJECT_TYPE_FEATURE (hb_gobject_feature_get_type ())
+
+
+
+
+

HB_GOBJECT_TYPE_GLYPH_INFO

+
#define HB_GOBJECT_TYPE_GLYPH_INFO (hb_gobject_glyph_info_get_type ())
+
+
+
+
+

HB_GOBJECT_TYPE_GLYPH_POSITION

+
#define HB_GOBJECT_TYPE_GLYPH_POSITION (hb_gobject_glyph_position_get_type ())
+
+
+
+
+

HB_GOBJECT_TYPE_SEGMENT_PROPERTIES

+
#define HB_GOBJECT_TYPE_SEGMENT_PROPERTIES (hb_gobject_segment_properties_get_type ())
+
+
+
+
+

HB_GOBJECT_TYPE_SET

+
#define HB_GOBJECT_TYPE_SET (hb_gobject_set_get_type ())
+
+
+
+
+

HB_GOBJECT_TYPE_USER_DATA_KEY

+
#define HB_GOBJECT_TYPE_USER_DATA_KEY (hb_gobject_user_data_key_get_type ())
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/html/harfbuzz-hb-graphite2.html b/docs/html/harfbuzz-hb-graphite2.html similarity index 87% rename from docs/reference/html/harfbuzz-hb-graphite2.html rename to docs/html/harfbuzz-hb-graphite2.html index 2c57cac..a19c83c 100644 --- a/docs/reference/html/harfbuzz-hb-graphite2.html +++ b/docs/html/harfbuzz-hb-graphite2.html @@ -2,13 +2,13 @@ -hb-graphite2 - - - +hb-graphite2: HarfBuzz Manual + + + - + @@ -18,7 +18,7 @@ Description Home -Up +Up Prev Next @@ -73,8 +73,6 @@

Description

-

-

Functions

@@ -82,24 +80,12 @@

hb_graphite2_face_get_gr_face ()

gr_face *
 hb_graphite2_face_get_gr_face (hb_face_t *face);
-

-

-
-

Returns

-

-

hb_graphite2_font_get_gr_font ()

gr_font *
 hb_graphite2_font_get_gr_font (hb_font_t *font);
-

-

-
-

Returns

-

-
@@ -108,13 +94,10 @@ hb_graphite2_font_get_gr_font (

HB_GRAPHITE2_TAG_SILF

#define HB_GRAPHITE2_TAG_SILF HB_TAG('S','i','l','f')
 
-

-

+
Generated by GTK-Doc V1.24.1 \ No newline at end of file diff --git a/docs/reference/html/harfbuzz-hb-icu.html b/docs/html/harfbuzz-hb-icu.html similarity index 86% rename from docs/reference/html/harfbuzz-hb-icu.html rename to docs/html/harfbuzz-hb-icu.html index 307aeb2..906e91c 100644 --- a/docs/reference/html/harfbuzz-hb-icu.html +++ b/docs/html/harfbuzz-hb-icu.html @@ -2,13 +2,13 @@ -hb-icu - - - +hb-icu: HarfBuzz Manual + + + - + @@ -18,7 +18,7 @@ Description Home -Up +Up Prev Next @@ -68,8 +68,6 @@

Description

-

-

Functions

@@ -77,36 +75,18 @@

hb_icu_get_unicode_funcs ()

hb_unicode_funcs_t *
 hb_icu_get_unicode_funcs (void);
-

-

-
-

Returns

-

-

hb_icu_script_from_script ()

UScriptCode
 hb_icu_script_from_script (hb_script_t script);
-

-

-
-

Returns

-

-

hb_icu_script_to_script ()

hb_script_t
 hb_icu_script_to_script (UScriptCode script);
-

-

-
-

Returns

-

-
@@ -114,7 +94,6 @@ hb_icu_script_to_script (UScriptC
+
Generated by GTK-Doc V1.24.1 \ No newline at end of file diff --git a/docs/html/harfbuzz-hb-ot-font.html b/docs/html/harfbuzz-hb-ot-font.html new file mode 100644 index 0000000..289d871 --- /dev/null +++ b/docs/html/harfbuzz-hb-ot-font.html @@ -0,0 +1,70 @@ + + + + +hb-ot-font: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

hb-ot-font

+

hb-ot-font

+
+
+

Functions

+
++++ + + + + +
+void + +hb_ot_font_set_funcs () +
+
+
+

Description

+
+
+

Functions

+
+

hb_ot_font_set_funcs ()

+
void
+hb_ot_font_set_funcs (hb_font_t *font);
+

Since: 0.9.28

+
+
+
+

Types and Values

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/html/harfbuzz-hb-ot-layout.html b/docs/html/harfbuzz-hb-ot-layout.html similarity index 91% rename from docs/reference/html/harfbuzz-hb-ot-layout.html rename to docs/html/harfbuzz-hb-ot-layout.html index d7231db..0da9306 100644 --- a/docs/reference/html/harfbuzz-hb-ot-layout.html +++ b/docs/html/harfbuzz-hb-ot-layout.html @@ -2,13 +2,13 @@ -hb-ot-layout - - - +hb-ot-layout: HarfBuzz Manual + + + - + @@ -19,7 +19,7 @@ Object Hierarchy Home -Up +Up Prev Next @@ -239,6 +239,14 @@ hb_ot_shape_plan_collect_lookups () + + +hb_bool_t + + +hb_ot_layout_language_get_required_feature_index () + + @@ -275,6 +283,10 @@ HB_OT_TAG_GSUB +#define +HB_OT_TAG_JSTF + + enum hb_ot_layout_glyph_class_t @@ -283,14 +295,12 @@

Object Hierarchy

-
    GEnum
+
    GEnum
     ╰── hb_ot_layout_glyph_class_t
 

Description

-

-

Functions

@@ -303,8 +313,7 @@ hb_ot_layout_collect_lookups (const hb_tag_t *languages, const hb_tag_t *features, hb_set_t *lookup_indexes); -

-

+

Since: 0.9.8


@@ -316,12 +325,7 @@ hb_ot_layout_feature_get_lookups (unsigned int start_offset, unsigned int *lookup_count, unsigned int *lookup_indexes); -

-

-
-

Returns

-

-
+

Since: 0.9.7


@@ -332,12 +336,6 @@ hb_ot_layout_get_attach_points (unsigned int start_offset, unsigned int *point_count, unsigned int *point_array); -

-

-
-

Returns

-

-

@@ -345,12 +343,7 @@ hb_ot_layout_get_attach_points (hb_ot_layout_glyph_class_t hb_ot_layout_get_glyph_class (hb_face_t *face, hb_codepoint_t glyph); -

-

-
-

Returns

-

-
+

Since: 0.9.7


@@ -359,8 +352,7 @@ hb_ot_layout_get_glyph_class (hb_face_t *face, hb_ot_layout_glyph_class_t klass, hb_set_t *glyphs); -

-

+

Since: 0.9.7


@@ -372,12 +364,6 @@ hb_ot_layout_get_ligature_carets (unsigned int start_offset, unsigned int *caret_count, hb_position_t *caret_array); -

-

-
-

Returns

-

-

@@ -389,12 +375,7 @@ hb_ot_layout_get_size_params (unsigned int *subfamily_name_id, unsigned int *range_start, unsigned int *range_end); -

-

-
-

Returns

-

-
+

Since: 0.9.10



hb_ot_layout_has_glyph_classes ()

hb_bool_t
 hb_ot_layout_has_glyph_classes (hb_face_t *face);
-

-

-
-

Returns

-

-

hb_ot_layout_has_positioning ()

hb_bool_t
 hb_ot_layout_has_positioning (hb_face_t *face);
-

-

-
-

Returns

-

-

hb_ot_layout_has_substitution ()

hb_bool_t
 hb_ot_layout_has_substitution (hb_face_t *face);
-

-

-
-

Returns

-

-

@@ -458,12 +415,6 @@ hb_ot_layout_language_find_feature (unsigned int language_index, hb_tag_t feature_tag, unsigned int *feature_index); -

-

-
-

Returns

-

-

@@ -477,12 +428,6 @@ hb_ot_layout_language_get_feature_indexes unsigned int start_offset, unsigned int *feature_count, unsigned int *feature_indexes); -

-

-
-

Returns

-

-

@@ -496,12 +441,6 @@ hb_ot_layout_language_get_feature_tags unsigned int start_offset, unsigned int *feature_count, hb_tag_t *feature_tags); -

-

-
-

Returns

-

-

@@ -514,6 +453,7 @@ hb_ot_layout_language_get_required_feature unsigned int language_index, unsigned int *feature_index, hb_tag_t *feature_tag); +

Since: 0.9.30


@@ -526,8 +466,7 @@ hb_ot_layout_lookup_collect_glyphs (hb_set_t *glyphs_input, hb_set_t *glyphs_after, hb_set_t *glyphs_output); -

-

+

Since: 0.9.7


@@ -537,8 +476,7 @@ hb_ot_layout_lookup_substitute_closure (hb_face_t *face, unsigned int lookup_index, hb_set_t *glyphs); -

-

+

Since: 0.9.7


@@ -549,12 +487,7 @@ hb_ot_layout_lookup_would_substitute (const hb_codepoint_t *glyphs, unsigned int glyphs_length, hb_bool_t zero_context); -

-

-
-

Returns

-

-
+

Since: 0.9.7


@@ -565,12 +498,6 @@ hb_ot_layout_script_find_language (unsigned int script_index, hb_tag_t language_tag, unsigned int *language_index); -

-

-
-

Returns

-

-

@@ -582,12 +509,6 @@ hb_ot_layout_script_get_language_tags (unsigned int start_offset, unsigned int *language_count, hb_tag_t *language_tags); -

-

-
-

Returns

-

-

@@ -598,12 +519,6 @@ hb_ot_layout_table_choose_script (const hb_tag_t *script_tags, unsigned int *script_index, hb_tag_t *chosen_script); -

-

-
-

Returns

-

-

@@ -613,12 +528,6 @@ hb_ot_layout_table_find_script (hb_tag_t table_tag, hb_tag_t script_tag, unsigned int *script_index); -

-

-
-

Returns

-

-

@@ -629,12 +538,6 @@ hb_ot_layout_table_get_feature_tags (unsigned int start_offset, unsigned int *feature_count, hb_tag_t *feature_tags); -

-

-
-

Returns

-

-

@@ -645,12 +548,6 @@ hb_ot_layout_table_get_script_tags (unsigned int start_offset, unsigned int *script_count, hb_tag_t *script_tags); -

-

-
-

Returns

-

-

@@ -658,6 +555,7 @@ hb_ot_layout_table_get_script_tags (unsigned int hb_ot_layout_table_get_lookup_count (hb_face_t *face, hb_tag_t table_tag); +

Since: 0.9.22


@@ -666,8 +564,18 @@ hb_ot_layout_table_get_lookup_count (hb_shape_plan_t *shape_plan, hb_tag_t table_tag, hb_set_t *lookup_indexes); -

-

+

Since: 0.9.7

+
+
+
+

hb_ot_layout_language_get_required_feature_index ()

+
hb_bool_t
+hb_ot_layout_language_get_required_feature_index
+                               (hb_face_t *face,
+                                hb_tag_t table_tag,
+                                unsigned int script_index,
+                                unsigned int language_index,
+                                unsigned int *feature_index);
@@ -676,56 +584,48 @@ hb_ot_shape_plan_collect_lookups (

HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX

#define HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX 0xFFFFu
 
-

-


HB_OT_LAYOUT_NO_FEATURE_INDEX

#define HB_OT_LAYOUT_NO_FEATURE_INDEX		0xFFFFu
 
-

-


HB_OT_LAYOUT_NO_SCRIPT_INDEX

#define HB_OT_LAYOUT_NO_SCRIPT_INDEX		0xFFFFu
 
-

-


HB_OT_TAG_GDEF

#define HB_OT_TAG_GDEF HB_TAG('G','D','E','F')
 
-

-


HB_OT_TAG_GPOS

#define HB_OT_TAG_GPOS HB_TAG('G','P','O','S')
 
-

-


HB_OT_TAG_GSUB

#define HB_OT_TAG_GSUB HB_TAG('G','S','U','B')
 
-

-

+
+
+
+

HB_OT_TAG_JSTF

+
#define HB_OT_TAG_JSTF HB_TAG('J','S','T','F')
+

enum hb_ot_layout_glyph_class_t

-

-

-

Members

+

Members

@@ -735,28 +635,28 @@ hb_ot_shape_plan_collect_lookups ( - - + + - - + + - - + + - - + + - - + +

HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED

    

HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH

    

HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE

    

HB_OT_LAYOUT_GLYPH_CLASS_MARK

    

HB_OT_LAYOUT_GLYPH_CLASS_COMPONENT

    
@@ -765,7 +665,6 @@ hb_ot_shape_plan_collect_lookups (
+
Generated by GTK-Doc V1.24.1
\ No newline at end of file diff --git a/docs/html/harfbuzz-hb-ot-shape.html b/docs/html/harfbuzz-hb-ot-shape.html new file mode 100644 index 0000000..fa22099 --- /dev/null +++ b/docs/html/harfbuzz-hb-ot-shape.html @@ -0,0 +1,74 @@ + + + + +hb-ot-shape: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

hb-ot-shape

+

hb-ot-shape

+
+
+

Functions

+
++++ + + + + +
+void + +hb_ot_shape_glyphs_closure () +
+
+
+

Description

+
+
+

Functions

+
+

hb_ot_shape_glyphs_closure ()

+
void
+hb_ot_shape_glyphs_closure (hb_font_t *font,
+                            hb_buffer_t *buffer,
+                            const hb_feature_t *features,
+                            unsigned int num_features,
+                            hb_set_t *glyphs);
+

Since: 0.9.2

+
+
+
+

Types and Values

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/html/harfbuzz-hb-ot-tag.html b/docs/html/harfbuzz-hb-ot-tag.html similarity index 83% rename from docs/reference/html/harfbuzz-hb-ot-tag.html rename to docs/html/harfbuzz-hb-ot-tag.html index 058623f..ea49a15 100644 --- a/docs/reference/html/harfbuzz-hb-ot-tag.html +++ b/docs/html/harfbuzz-hb-ot-tag.html @@ -2,13 +2,13 @@ -hb-ot-tag - - - +hb-ot-tag: HarfBuzz Manual + + + - - + + @@ -18,9 +18,9 @@ Description Home -Up +Up Prev -Next +Next
@@ -49,7 +49,7 @@ -hb_language_t +hb_language_t hb_ot_tag_to_language () @@ -95,45 +95,31 @@

Description

-

-

Functions

hb_ot_tag_from_language ()

hb_tag_t
-hb_ot_tag_from_language (hb_language_t language);
-

-

-
-

Returns

-

-
+hb_ot_tag_from_language (hb_language_t language);

hb_ot_tag_to_language ()

-
hb_language_t
+
hb_language_t
 hb_ot_tag_to_language (hb_tag_t tag);
-

-

-

Returns

-

+

Returns

+

.

+

[transfer none]

+

Since: 0.9.2


hb_ot_tag_to_script ()

hb_script_t
 hb_ot_tag_to_script (hb_tag_t tag);
-

-

-
-

Returns

-

-

@@ -142,8 +128,6 @@ hb_ot_tag_to_script (hb_script_t script, hb_tag_t *script_tag_1, hb_tag_t *script_tag_2); -

-

@@ -152,21 +136,16 @@ hb_ot_tags_from_script (

HB_OT_TAG_DEFAULT_LANGUAGE

#define HB_OT_TAG_DEFAULT_LANGUAGE HB_TAG ('d', 'f', 'l', 't')
 
-

-


HB_OT_TAG_DEFAULT_SCRIPT

#define HB_OT_TAG_DEFAULT_SCRIPT HB_TAG ('D', 'F', 'L', 'T')
 
-

-

+
Generated by GTK-Doc V1.24.1 \ No newline at end of file diff --git a/docs/reference/html/harfbuzz-hb-ot.html b/docs/html/harfbuzz-hb-ot.html similarity index 82% rename from docs/reference/html/harfbuzz-hb-ot.html rename to docs/html/harfbuzz-hb-ot.html index 9c48aad..00ecee7 100644 --- a/docs/reference/html/harfbuzz-hb-ot.html +++ b/docs/html/harfbuzz-hb-ot.html @@ -2,13 +2,13 @@ -hb-ot - - - +hb-ot: HarfBuzz Manual + + + - + @@ -18,7 +18,7 @@ Description Home -Up +Up Prev Next @@ -33,18 +33,16 @@

Description

-

-

Functions

+

Types and Values

+
Generated by GTK-Doc V1.24.1 \ No newline at end of file diff --git a/docs/reference/html/harfbuzz-hb-set.html b/docs/html/harfbuzz-hb-set.html similarity index 86% rename from docs/reference/html/harfbuzz-hb-set.html rename to docs/html/harfbuzz-hb-set.html index 87ce9bf..7b57884 100644 --- a/docs/reference/html/harfbuzz-hb-set.html +++ b/docs/html/harfbuzz-hb-set.html @@ -2,13 +2,13 @@ -hb-set - - - +hb-set: HarfBuzz Manual + + + - + @@ -19,7 +19,7 @@ Object Hierarchy Home -Up +Up Prev Next @@ -41,10 +41,6 @@ -#define -HB_SET_VALUE_INVALID - - void @@ -261,38 +257,36 @@ - + + +#define +HB_SET_VALUE_INVALID + + typedef hb_set_t - + +

Object Hierarchy

-
    GBoxed
+
    GBoxed
     ╰── hb_set_t
 

Description

-

-

Functions

-

HB_SET_VALUE_INVALID

-
#define HB_SET_VALUE_INVALID ((hb_codepoint_t) -1)
-
-
-
-

hb_set_add ()

void
 hb_set_add (hb_set_t *set,
             hb_codepoint_t codepoint);
-

Parameters

+

Parameters

@@ -306,7 +300,7 @@ hb_set_add (Since 1.0

+

Since: 0.9.2


@@ -316,7 +310,7 @@ hb_set_add_range (hb_codepoint_t first, hb_codepoint_t last);
-

Parameters

+

Parameters

@@ -330,7 +324,7 @@ hb_set_add_range (Since 1.0

+

Since: 0.9.7


@@ -338,7 +332,7 @@ hb_set_add_range (hb_bool_t hb_set_allocation_successful (const hb_set_t *set);
-

Parameters

+

Parameters

@@ -352,11 +346,7 @@ hb_set_allocation_successful (const
-
-

Returns

-

-
-

Since 1.0

+

Since: 0.9.2


@@ -364,7 +354,7 @@ hb_set_allocation_successful (const void hb_set_clear (hb_set_t *set);
-

Parameters

+

Parameters

@@ -378,19 +368,20 @@ hb_set_clear (Since 1.0

+

Since: 0.9.2


hb_set_create ()

hb_set_t *
 hb_set_create (void);
-

-

+

[Xconstructor]

-

Returns

-

+

Returns

+

.

+

[transfer full]

+

Since: 0.9.2


@@ -399,7 +390,7 @@ hb_set_create (void hb_set_del (hb_set_t *set, hb_codepoint_t codepoint);
-

Parameters

+

Parameters

@@ -413,7 +404,7 @@ hb_set_del (Since 1.0

+

Since: 0.9.2


@@ -423,7 +414,7 @@ hb_set_del_range (hb_codepoint_t first, hb_codepoint_t last);
-

Parameters

+

Parameters

@@ -437,15 +428,16 @@ hb_set_del_range (Since 1.0

+

Since: 0.9.7


hb_set_destroy ()

void
 hb_set_destroy (hb_set_t *set);
+

[skip]

-

Parameters

+

Parameters

@@ -459,7 +451,7 @@ hb_set_destroy (Since 1.0

+

Since: 0.9.2


@@ -467,11 +459,11 @@ hb_set_destroy (hb_set_t * hb_set_get_empty (void);
-

Returns

+

Returns

.

[transfer full]

-

Since 1.0

+

Since: 0.9.2


@@ -480,7 +472,7 @@ hb_set_get_empty (voidconst hb_set_t *set);

Finds the maximum number in the set.

-

Parameters

+

Parameters

@@ -495,11 +487,10 @@ hb_set_get_max (const -

Returns

+

Returns

minimum of the set, or HB_SET_VALUE_INVALID if set is empty.

-

-

Since 1.0

+

Since: 0.9.7


@@ -508,7 +499,7 @@ hb_set_get_max (const const hb_set_t *set);

Finds the minimum number in the set.

-

Parameters

+

Parameters

@@ -523,11 +514,10 @@ hb_set_get_min (const -

Returns

+

Returns

minimum of the set, or HB_SET_VALUE_INVALID if set is empty.

-

-

Since 1.0

+

Since: 0.9.7


@@ -536,7 +526,7 @@ hb_set_get_min (const const hb_set_t *set);

Returns the number of numbers in the set.

-

Parameters

+

Parameters

@@ -551,11 +541,10 @@ hb_set_get_population (const -

Returns

+

Returns

set population.

-

-

Since 1.0

+

Since: 0.9.7


@@ -563,8 +552,9 @@ hb_set_get_population (const void * hb_set_get_user_data (hb_set_t *set, hb_user_data_key_t *key); +

[skip]

-

Parameters

+

Parameters

@@ -579,11 +569,11 @@ hb_set_get_user_data ( -

Returns

+

Returns

.

[transfer none]

-

Since 1.0

+

Since: 0.9.2


@@ -592,7 +582,7 @@ hb_set_get_user_data (const hb_set_t *set, hb_codepoint_t codepoint);
-

Parameters

+

Parameters

@@ -606,11 +596,7 @@ hb_set_has (const -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -619,7 +605,7 @@ hb_set_has (const hb_set_t *set, const hb_set_t *other);
-

Parameters

+

Parameters

@@ -633,7 +619,7 @@ hb_set_intersect (Since 1.0

+

Since: 0.9.2


@@ -641,7 +627,7 @@ hb_set_intersect (void hb_set_invert (hb_set_t *set);
-

Parameters

+

Parameters

@@ -655,7 +641,7 @@ hb_set_invert (Since 1.0

+

Since: 0.9.10


@@ -663,7 +649,7 @@ hb_set_invert (hb_bool_t hb_set_is_empty (const hb_set_t *set);
-

Parameters

+

Parameters

@@ -677,11 +663,7 @@ hb_set_is_empty (const -

Returns

-

- -

Since 1.0

+

Since: 0.9.7


@@ -690,7 +672,7 @@ hb_set_is_empty (const const hb_set_t *set, const hb_set_t *other);
-

Parameters

+

Parameters

@@ -704,11 +686,7 @@ hb_set_is_equal (const -

Returns

-

- -

Since 1.0

+

Since: 0.9.7


@@ -717,7 +695,7 @@ hb_set_is_equal (const const hb_set_t *set, hb_codepoint_t *codepoint);
-

Parameters

+

Parameters

@@ -739,11 +717,10 @@ hb_set_next (const -

Returns

+

Returns

whether there was a next value.

-

-

Since 1.0

+

Since: 0.9.2


@@ -757,7 +734,7 @@ hb_set_next_range (const last .

-

Parameters

+

Parameters

@@ -784,19 +761,19 @@ are greater than current value of last
-

Returns

+

Returns

whether there was a next range.

-

-

Since 1.0

+

Since: 0.9.7


hb_set_reference ()

hb_set_t *
 hb_set_reference (hb_set_t *set);
+

[skip]

-

Parameters

+

Parameters

@@ -811,11 +788,11 @@ hb_set_reference ( -

Returns

+

Returns

.

[transfer full]

-

Since 1.0

+

Since: 0.9.2


@@ -824,7 +801,7 @@ hb_set_reference (hb_set_t *set, const hb_set_t *other);
-

Parameters

+

Parameters

@@ -838,7 +815,7 @@ hb_set_set (Since 1.0

+

Since: 0.9.2


@@ -849,8 +826,9 @@ hb_set_set_user_data (void *data, hb_destroy_func_t destroy, hb_bool_t replace); +

[skip]

-

Parameters

+

Parameters

@@ -872,11 +850,7 @@ hb_set_set_user_data ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -885,7 +859,7 @@ hb_set_set_user_data (hb_set_t *set, const hb_set_t *other);
-

Parameters

+

Parameters

@@ -899,7 +873,7 @@ hb_set_subtract (Since 1.0

+

Since: 0.9.2


@@ -908,7 +882,7 @@ hb_set_subtract (hb_set_t *set, const hb_set_t *other);
-

Parameters

+

Parameters

@@ -922,7 +896,7 @@ hb_set_symmetric_difference (Since 1.0

+

Since: 0.9.2


@@ -931,7 +905,7 @@ hb_set_symmetric_difference (hb_set_t *set, const hb_set_t *other);
-

Parameters

+

Parameters

@@ -945,22 +919,25 @@ hb_set_union (Since 1.0

+

Since: 0.9.2

Types and Values

+

HB_SET_VALUE_INVALID

+
#define HB_SET_VALUE_INVALID ((hb_codepoint_t) -1)
+
+
+
+

hb_set_t

typedef struct hb_set_t hb_set_t;
 
-

-

+
Generated by GTK-Doc V1.24.1 \ No newline at end of file diff --git a/docs/reference/html/harfbuzz-hb-shape-plan.html b/docs/html/harfbuzz-hb-shape-plan.html similarity index 77% rename from docs/reference/html/harfbuzz-hb-shape-plan.html rename to docs/html/harfbuzz-hb-shape-plan.html index d612552..aee3168 100644 --- a/docs/reference/html/harfbuzz-hb-shape-plan.html +++ b/docs/html/harfbuzz-hb-shape-plan.html @@ -2,13 +2,13 @@ -hb-shape-plan - - - - +hb-shape-plan: HarfBuzz Manual + + + + - + @@ -19,8 +19,8 @@ Object Hierarchy
- - + +
HomeUpPrevUpPrev Next
@@ -129,14 +129,12 @@

Object Hierarchy

-
    GBoxed
+
    GBoxed
     ╰── hb_shape_plan_t
 

Description

-

-

Functions

@@ -144,28 +142,51 @@

hb_shape_plan_create ()

hb_shape_plan_t *
 hb_shape_plan_create (hb_face_t *face,
-                      const hb_segment_properties_t *props,
-                      const hb_feature_t *user_features,
+                      const hb_segment_properties_t *props,
+                      const hb_feature_t *user_features,
                       unsigned int num_user_features,
                       const char * const *shaper_list);
-

-

+

[Xconstructor]

-

Returns

-

+

Parameters

+
+++++ + + + + + + + + + + + + +

user_features

.

[array length=num_user_features]

shaper_list

.

[array zero-terminated=1]
+
+
+

Returns

+

.

+

[transfer full]

+

Since: 0.9.7


hb_shape_plan_create_cached ()

hb_shape_plan_t *
 hb_shape_plan_create_cached (hb_face_t *face,
-                             const hb_segment_properties_t *props,
-                             const hb_feature_t *user_features,
+                             const hb_segment_properties_t *props,
+                             const hb_feature_t *user_features,
                              unsigned int num_user_features,
                              const char * const *shaper_list);
-

Parameters

+

Parameters

@@ -187,19 +208,20 @@ hb_shape_plan_create_cached ( -

Returns

+

Returns

.

[transfer full]

-

Since 1.0

+

Since: 0.9.7


hb_shape_plan_destroy ()

void
 hb_shape_plan_destroy (hb_shape_plan_t *shape_plan);
+

[skip]

-

Parameters

+

Parameters

@@ -213,7 +235,7 @@ hb_shape_plan_destroy (Since 1.0

+

Since: 0.9.7


@@ -221,11 +243,11 @@ hb_shape_plan_destroy (hb_bool_t hb_shape_plan_execute (hb_shape_plan_t *shape_plan, hb_font_t *font, - hb_buffer_t *buffer, - const hb_feature_t *features, + hb_buffer_t *buffer, + const hb_feature_t *features, unsigned int num_features);
-

Parameters

+

Parameters

@@ -256,11 +278,7 @@ hb_shape_plan_execute ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.7


@@ -268,11 +286,11 @@ hb_shape_plan_execute (hb_shape_plan_t * hb_shape_plan_get_empty (void);
-

Returns

+

Returns

.

[transfer full]

-

Since 1.0

+

Since: 0.9.7


@@ -280,7 +298,7 @@ hb_shape_plan_get_empty (voidconst char * hb_shape_plan_get_shaper (hb_shape_plan_t *shape_plan);
-

Parameters

+

Parameters

@@ -295,11 +313,11 @@ hb_shape_plan_get_shaper ( -

Returns

+

Returns

.

[transfer none]

-

Since 1.0

+

Since: 0.9.7


@@ -307,8 +325,9 @@ hb_shape_plan_get_shaper (void * hb_shape_plan_get_user_data (hb_shape_plan_t *shape_plan, hb_user_data_key_t *key); +

[skip]

-

Parameters

+

Parameters

@@ -323,19 +342,20 @@ hb_shape_plan_get_user_data ( -

Returns

+

Returns

.

[transfer none]

-

Since 1.0

+

Since: 0.9.7


hb_shape_plan_reference ()

hb_shape_plan_t *
 hb_shape_plan_reference (hb_shape_plan_t *shape_plan);
+

[skip]

-

Parameters

+

Parameters

@@ -350,11 +370,11 @@ hb_shape_plan_reference ( -

Returns

+

Returns

.

[transfer full]

-

Since 1.0

+

Since: 0.9.7


@@ -365,8 +385,9 @@ hb_shape_plan_set_user_data (void *data, hb_destroy_func_t destroy, hb_bool_t replace); +

[skip]

-

Parameters

+

Parameters

@@ -380,11 +401,7 @@ hb_shape_plan_set_user_data ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.7

@@ -393,13 +410,10 @@ hb_shape_plan_set_user_data (

hb_shape_plan_t

typedef struct hb_shape_plan_t hb_shape_plan_t;
 
-

-

+
Generated by GTK-Doc V1.24.1 \ No newline at end of file diff --git a/docs/reference/html/harfbuzz-hb-unicode.html b/docs/html/harfbuzz-hb-unicode.html similarity index 82% rename from docs/reference/html/harfbuzz-hb-unicode.html rename to docs/html/harfbuzz-hb-unicode.html index 91358b2..ecc82c5 100644 --- a/docs/reference/html/harfbuzz-hb-unicode.html +++ b/docs/html/harfbuzz-hb-unicode.html @@ -2,13 +2,13 @@ -hb-unicode - - - +hb-unicode: HarfBuzz Manual + + + - - + + @@ -19,9 +19,9 @@ Object Hierarchy
- + - +
HomeUpUp PrevNextNext
@@ -41,10 +41,6 @@ -#define -HB_UNICODE_MAX_DECOMPOSITION_LEN - - hb_unicode_combining_class_t @@ -310,6 +306,10 @@ +#define +HB_UNICODE_MAX_DECOMPOSITION_LEN + + enum hb_unicode_combining_class_t @@ -326,39 +326,24 @@

Object Hierarchy

-
    GBoxed
+
    GBoxed
     ╰── hb_unicode_funcs_t
-    GEnum
+    GEnum
     ├── hb_unicode_combining_class_t
     ╰── hb_unicode_general_category_t
 

Description

-

-

Functions

-

HB_UNICODE_MAX_DECOMPOSITION_LEN

-
#define HB_UNICODE_MAX_DECOMPOSITION_LEN (18+1) /* codepoints */
-
-

-

-
-
-

hb_unicode_combining_class ()

hb_unicode_combining_class_t
 hb_unicode_combining_class (hb_unicode_funcs_t *ufuncs,
                             hb_codepoint_t unicode);
-

-

-
-

Returns

-

-
+

Since: 0.9.2


@@ -367,12 +352,6 @@ hb_unicode_combining_class ((*hb_unicode_combining_class_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, void *user_data); -

-

-
-

Returns

-

-

@@ -383,7 +362,7 @@ hb_unicode_compose (hb_codepoint_t b, hb_codepoint_t *ab);
-

Parameters

+

Parameters

@@ -404,11 +383,7 @@ hb_unicode_compose ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -419,12 +394,6 @@ hb_unicode_compose (hb_codepoint_t b, hb_codepoint_t *ab, void *user_data); -

-

-
-

Returns

-

-

@@ -435,7 +404,7 @@ hb_unicode_decompose (hb_codepoint_t *a, hb_codepoint_t *b);
-

Parameters

+

Parameters

@@ -461,11 +430,7 @@ hb_unicode_decompose ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -475,7 +440,7 @@ hb_unicode_decompose_compatibility (hb_codepoint_t u, hb_codepoint_t *decomposed);
-

Parameters

+

Parameters

@@ -496,11 +461,7 @@ hb_unicode_decompose_compatibility (
-
-

Returns

-

-
-

Since 1.0

+

Since: 0.9.2


@@ -511,12 +472,6 @@ hb_unicode_decompose_compatibility (hb_codepoint_t *a, hb_codepoint_t *b, void *user_data); -

-

-
-

Returns

-

-

@@ -524,32 +479,44 @@ hb_unicode_decompose_compatibility (unsigned int hb_unicode_eastasian_width (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode); -

-

-
-

Returns

-

-
+

Since: 0.9.2


hb_unicode_funcs_create ()

hb_unicode_funcs_t *
 hb_unicode_funcs_create (hb_unicode_funcs_t *parent);
-

-

+

[Xconstructor]

+
+

Parameters

+
+++++ + + + + + +

parent

.

[nullable]
+
-

Returns

-

+

Returns

+

.

+

[transfer full]

+

Since: 0.9.2


hb_unicode_funcs_destroy ()

void
 hb_unicode_funcs_destroy (hb_unicode_funcs_t *ufuncs);
+

[skip]

-

Parameters

+

Parameters

@@ -563,19 +530,13 @@ hb_unicode_funcs_destroy (Since 1.0

+

Since: 0.9.2


hb_unicode_funcs_get_default ()

hb_unicode_funcs_t *
 hb_unicode_funcs_get_default (void);
-

-

-
-

Returns

-

-

@@ -583,11 +544,11 @@ hb_unicode_funcs_get_default (voi
hb_unicode_funcs_t *
 hb_unicode_funcs_get_empty (void);
-

Returns

+

Returns

.

[transfer full]

-

Since 1.0

+

Since: 0.9.2


@@ -595,7 +556,7 @@ hb_unicode_funcs_get_empty (void<
hb_unicode_funcs_t *
 hb_unicode_funcs_get_parent (hb_unicode_funcs_t *ufuncs);
-

Parameters

+

Parameters

@@ -609,11 +570,7 @@ hb_unicode_funcs_get_parent ( -

Returns

-

- -

Since 1.0

+

Since: 0.9.2


@@ -621,8 +578,9 @@ hb_unicode_funcs_get_parent (void * hb_unicode_funcs_get_user_data (hb_unicode_funcs_t *ufuncs, hb_user_data_key_t *key); +

[skip]

-

Parameters

+

Parameters

@@ -637,11 +595,11 @@ hb_unicode_funcs_get_user_data (
-

Returns

+

Returns

.

[transfer none]

-

Since 1.0

+

Since: 0.9.2


@@ -649,7 +607,7 @@ hb_unicode_funcs_get_user_data (hb_bool_t hb_unicode_funcs_is_immutable (hb_unicode_funcs_t *ufuncs);
-

Parameters

+

Parameters

@@ -663,11 +621,7 @@ hb_unicode_funcs_is_immutable (
-
-

Returns

-

-
-

Since 1.0

+

Since: 0.9.2


@@ -675,7 +629,7 @@ hb_unicode_funcs_is_immutable (void hb_unicode_funcs_make_immutable (hb_unicode_funcs_t *ufuncs);
-

Parameters

+

Parameters

@@ -689,15 +643,16 @@ hb_unicode_funcs_make_immutable (
-

Since 1.0

+

Since: 0.9.2


hb_unicode_funcs_reference ()

hb_unicode_funcs_t *
 hb_unicode_funcs_reference (hb_unicode_funcs_t *ufuncs);
+

[skip]

-

Parameters

+

Parameters

@@ -712,11 +667,11 @@ hb_unicode_funcs_reference ( -

Returns

+

Returns

.

[transfer full]

-

Since 1.0

+

Since: 0.9.2


@@ -728,21 +683,28 @@ hb_unicode_funcs_set_combining_class_func void *user_data, hb_destroy_func_t destroy);
-

Parameters

+

Parameters

- + + - + + + + + + +

ufuncs

a Unicode function structure

 

func

.

[closure user_data][destroy destroy][scope notified]
-

Since 1.0

+

Since: 0.9.2


@@ -753,21 +715,28 @@ hb_unicode_funcs_set_compose_func (void *user_data, hb_destroy_func_t destroy);
-

Parameters

+

Parameters

- + + - + + + + + + +

ufuncs

a Unicode function structure

 

func

.

[closure user_data][destroy destroy][scope notified]
-

Since 1.0

+

Since: 0.9.2


@@ -779,21 +748,28 @@ hb_unicode_funcs_set_decompose_compatibility_func void *user_data, hb_destroy_func_t destroy);
-

Parameters

+

Parameters

- + + - + + + + + + +

ufuncs

a Unicode function structure

 

func

.

[closure user_data][destroy destroy][scope notified]
-

Since 1.0

+

Since: 0.9.2


@@ -804,21 +780,28 @@ hb_unicode_funcs_set_decompose_func (void *user_data, hb_destroy_func_t destroy);
-

Parameters

+

Parameters

- + + - + + + + + + +

ufuncs

a Unicode function structure

 

func

.

[closure user_data][destroy destroy][scope notified]
-

Since 1.0

+

Since: 0.9.2


@@ -830,21 +813,28 @@ hb_unicode_funcs_set_eastasian_width_func void *user_data, hb_destroy_func_t destroy);
-

Parameters

+

Parameters

- + + - + + + + + + +

ufuncs

a Unicode function structure

 

func

.

[closure user_data][destroy destroy][scope notified]
-

Since 1.0

+

Since: 0.9.2


@@ -856,21 +846,28 @@ hb_unicode_funcs_set_general_category_func void *user_data, hb_destroy_func_t destroy);
-

Parameters

+

Parameters

- + + - + + + + + + +

ufuncs

a Unicode function structure

 

func

.

[closure user_data][destroy destroy][scope notified]
-

Since 1.0

+

Since: 0.9.2


@@ -881,21 +878,28 @@ hb_unicode_funcs_set_mirroring_func (void *user_data, hb_destroy_func_t destroy);
-

Parameters

+

Parameters

- + + - + + + + + + +

ufuncs

a Unicode function structure

 

func

.

[closure user_data][destroy destroy][scope notified]
-

Since 1.0

+

Since: 0.9.2


@@ -906,21 +910,28 @@ hb_unicode_funcs_set_script_func (void *user_data, hb_destroy_func_t destroy);
-

Parameters

+

Parameters

- + + - + + + + + + +

ufuncs

a Unicode function structure

 

func

.

[closure user_data][destroy destroy][scope notified]
-

Since 1.0

+

Since: 0.9.2


@@ -931,8 +942,9 @@ hb_unicode_funcs_set_user_data (void *data, hb_destroy_func_t destroy, hb_bool_t replace); +

[skip]

-

Parameters

+

Parameters

@@ -946,11 +958,7 @@ hb_unicode_funcs_set_user_data (
-
-

Returns

-

-
-

Since 1.0

+

Since: 0.9.2


@@ -958,12 +966,7 @@ hb_unicode_funcs_set_user_data (hb_unicode_general_category_t hb_unicode_general_category (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode); -

-

-
-

Returns

-

-
+

Since: 0.9.2


@@ -972,12 +975,6 @@ hb_unicode_general_category ((*hb_unicode_general_category_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, void *user_data); -

-

-
-

Returns

-

-

@@ -985,12 +982,7 @@ hb_unicode_general_category (hb_codepoint_t hb_unicode_mirroring (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode); -

-

-
-

Returns

-

-
+

Since: 0.9.2


@@ -999,12 +991,6 @@ hb_unicode_mirroring ((*hb_unicode_mirroring_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, void *user_data); -

-

-
-

Returns

-

-

@@ -1012,12 +998,7 @@ hb_unicode_mirroring (hb_script_t hb_unicode_script (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode); -

-

-
-

Returns

-

-
+

Since: 0.9.2


@@ -1026,22 +1007,20 @@ hb_unicode_script ((*hb_unicode_script_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, void *user_data); -

-

-
-

Returns

-

-

Types and Values

+

HB_UNICODE_MAX_DECOMPOSITION_LEN

+
#define HB_UNICODE_MAX_DECOMPOSITION_LEN (18+1) /* codepoints */
+
+
+
+

enum hb_unicode_combining_class_t

-

-

-

Members

+

Members

@@ -1051,288 +1030,288 @@ hb_unicode_script (

HB_UNICODE_COMBINING_CLASS_NOT_REORDERED

-
- + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + +
    

HB_UNICODE_COMBINING_CLASS_OVERLAY

    

HB_UNICODE_COMBINING_CLASS_NUKTA

    

HB_UNICODE_COMBINING_CLASS_KANA_VOICING

    

HB_UNICODE_COMBINING_CLASS_VIRAMA

    

HB_UNICODE_COMBINING_CLASS_CCC10

    

HB_UNICODE_COMBINING_CLASS_CCC11

    

HB_UNICODE_COMBINING_CLASS_CCC12

    

HB_UNICODE_COMBINING_CLASS_CCC13

    

HB_UNICODE_COMBINING_CLASS_CCC14

    

HB_UNICODE_COMBINING_CLASS_CCC15

    

HB_UNICODE_COMBINING_CLASS_CCC16

    

HB_UNICODE_COMBINING_CLASS_CCC17

    

HB_UNICODE_COMBINING_CLASS_CCC18

    

HB_UNICODE_COMBINING_CLASS_CCC19

    

HB_UNICODE_COMBINING_CLASS_CCC20

    

HB_UNICODE_COMBINING_CLASS_CCC21

    

HB_UNICODE_COMBINING_CLASS_CCC22

    

HB_UNICODE_COMBINING_CLASS_CCC23

    

HB_UNICODE_COMBINING_CLASS_CCC24

    

HB_UNICODE_COMBINING_CLASS_CCC25

    

HB_UNICODE_COMBINING_CLASS_CCC26

    

HB_UNICODE_COMBINING_CLASS_CCC27

    

HB_UNICODE_COMBINING_CLASS_CCC28

    

HB_UNICODE_COMBINING_CLASS_CCC29

    

HB_UNICODE_COMBINING_CLASS_CCC30

    

HB_UNICODE_COMBINING_CLASS_CCC31

    

HB_UNICODE_COMBINING_CLASS_CCC32

    

HB_UNICODE_COMBINING_CLASS_CCC33

    

HB_UNICODE_COMBINING_CLASS_CCC34

    

HB_UNICODE_COMBINING_CLASS_CCC35

    

HB_UNICODE_COMBINING_CLASS_CCC36

    

HB_UNICODE_COMBINING_CLASS_CCC84

    

HB_UNICODE_COMBINING_CLASS_CCC91

    

HB_UNICODE_COMBINING_CLASS_CCC103

    

HB_UNICODE_COMBINING_CLASS_CCC107

    

HB_UNICODE_COMBINING_CLASS_CCC118

    

HB_UNICODE_COMBINING_CLASS_CCC122

    

HB_UNICODE_COMBINING_CLASS_CCC129

    

HB_UNICODE_COMBINING_CLASS_CCC130

    

HB_UNICODE_COMBINING_CLASS_CCC133

    

HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT

    

HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW

    

HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE

    

HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT

    

HB_UNICODE_COMBINING_CLASS_BELOW_LEFT

    

HB_UNICODE_COMBINING_CLASS_BELOW

    

HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT

    

HB_UNICODE_COMBINING_CLASS_LEFT

    

HB_UNICODE_COMBINING_CLASS_RIGHT

    

HB_UNICODE_COMBINING_CLASS_ABOVE_LEFT

    

HB_UNICODE_COMBINING_CLASS_ABOVE

    

HB_UNICODE_COMBINING_CLASS_ABOVE_RIGHT

    

HB_UNICODE_COMBINING_CLASS_DOUBLE_BELOW

    

HB_UNICODE_COMBINING_CLASS_DOUBLE_ABOVE

    

HB_UNICODE_COMBINING_CLASS_IOTA_SUBSCRIPT

    

HB_UNICODE_COMBINING_CLASS_INVALID

    
@@ -1343,16 +1322,12 @@ hb_unicode_script (

hb_unicode_funcs_t

typedef struct hb_unicode_funcs_t hb_unicode_funcs_t;
 
-

-


enum hb_unicode_general_category_t

-

-

-

Members

+

Members

@@ -1362,153 +1337,153 @@ hb_unicode_script (

HB_UNICODE_GENERAL_CATEGORY_CONTROL

-
- + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + +
    

HB_UNICODE_GENERAL_CATEGORY_FORMAT

    

HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED

    

HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE

    

HB_UNICODE_GENERAL_CATEGORY_SURROGATE

    

HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER

    

HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER

    

HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER

    

HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER

    

HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER

    

HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK

    

HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK

    

HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK

    

HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER

    

HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER

    

HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER

    

HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION

    

HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION

    

HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION

    

HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION

    

HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION

    

HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION

    

HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION

    

HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL

    

HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL

    

HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL

    

HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL

    

HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR

    

HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR

    

HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR

    
@@ -1517,7 +1492,6 @@ hb_unicode_script ( -
- Generated by GTK-Doc V1.20.1
+
Generated by GTK-Doc V1.24.1
\ No newline at end of file diff --git a/docs/reference/html/harfbuzz-hb-uniscribe.html b/docs/html/harfbuzz-hb-uniscribe.html similarity index 85% rename from docs/reference/html/harfbuzz-hb-uniscribe.html rename to docs/html/harfbuzz-hb-uniscribe.html index 3b9645a..2096fbe 100644 --- a/docs/reference/html/harfbuzz-hb-uniscribe.html +++ b/docs/html/harfbuzz-hb-uniscribe.html @@ -2,13 +2,13 @@ -hb-uniscribe - - - +hb-uniscribe: HarfBuzz Manual + + + - + @@ -18,7 +18,7 @@ Description Home -Up +Up Prev Next @@ -60,8 +60,6 @@

Description

-

-

Functions

@@ -69,24 +67,12 @@

hb_uniscribe_font_get_hfont ()

HFONT
 hb_uniscribe_font_get_hfont (hb_font_t *font);
-

-

-
-

Returns

-

-

hb_uniscribe_font_get_logfontw ()

LOGFONTW *
 hb_uniscribe_font_get_logfontw (hb_font_t *font);
-

-

-
-

Returns

-

-
@@ -94,7 +80,6 @@ hb_uniscribe_font_get_logfontw (
+
Generated by GTK-Doc V1.24.1
\ No newline at end of file diff --git a/docs/reference/html/harfbuzz-hb-version.html b/docs/html/harfbuzz-hb-version.html similarity index 69% rename from docs/reference/html/harfbuzz-hb-version.html rename to docs/html/harfbuzz-hb-version.html index 3438e91..28a9346 100644 --- a/docs/reference/html/harfbuzz-hb-version.html +++ b/docs/html/harfbuzz-hb-version.html @@ -2,13 +2,13 @@ -hb-version - - - - +hb-version: HarfBuzz Manual + + + + - + @@ -18,8 +18,8 @@ Description Home -Up -Prev +Up +Prev Next
@@ -40,6 +40,12 @@ +#define + +HB_VERSION_ATLEAST() + + + void @@ -48,6 +54,14 @@ + +hb_bool_t + + +hb_version_atleast () + + + const char * @@ -86,19 +100,23 @@

Description

-

-

Functions

+

HB_VERSION_ATLEAST()

+
#define             HB_VERSION_ATLEAST(major,minor,micro)
+
+
+

hb_version ()

void
 hb_version (unsigned int *major,
             unsigned int *minor,
             unsigned int *micro);
+

Returns library version as three integer components.

-

Parameters

+

Parameters

@@ -124,7 +142,16 @@ hb_version (unsigned int *
-

Since 1.0

+

Since: 0.9.2

+
+
+
+

hb_version_atleast ()

+
hb_bool_t
+hb_version_atleast (unsigned int major,
+                    unsigned int minor,
+                    unsigned int micro);
+

Since: 0.9.30


@@ -133,50 +160,40 @@ hb_version (unsigned int * hb_version_string (void);

Returns library version as a string with three components.

-

Returns

+

Returns

library version string.

-

-

Since 1.0

+

Since: 0.9.2

Types and Values

HB_VERSION_MAJOR

-
#define HB_VERSION_MAJOR 0
+
#define HB_VERSION_MAJOR 1
 
-

-


HB_VERSION_MICRO

-
#define HB_VERSION_MICRO 40
+
#define HB_VERSION_MICRO 6
 
-

-


HB_VERSION_MINOR

-
#define HB_VERSION_MINOR 9
+
#define HB_VERSION_MINOR 2
 
-

-


HB_VERSION_STRING

-
#define HB_VERSION_STRING "0.9.40"
+
#define HB_VERSION_STRING "1.2.6"
 
-

-

+
Generated by GTK-Doc V1.24.1
\ No newline at end of file diff --git a/docs/reference/html/harfbuzz-hb.html b/docs/html/harfbuzz-hb.html similarity index 76% rename from docs/reference/html/harfbuzz-hb.html rename to docs/html/harfbuzz-hb.html index 0ce86d6..ca615fe 100644 --- a/docs/reference/html/harfbuzz-hb.html +++ b/docs/html/harfbuzz-hb.html @@ -2,13 +2,13 @@ -hb - - - - +hb: HarfBuzz Manual + + + + - + @@ -18,8 +18,8 @@ Description Home -Up -Prev +Up +Prev Next
@@ -33,18 +33,16 @@

Description

-

-

Functions

+

Types and Values

+
Generated by GTK-Doc V1.24.1
\ No newline at end of file diff --git a/docs/html/harfbuzz.devhelp2 b/docs/html/harfbuzz.devhelp2 new file mode 100644 index 0000000..15ffc29 --- /dev/null +++ b/docs/html/harfbuzz.devhelp2 @@ -0,0 +1,771 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/hello-harfbuzz.html b/docs/html/hello-harfbuzz.html new file mode 100644 index 0000000..c665efc --- /dev/null +++ b/docs/html/hello-harfbuzz.html @@ -0,0 +1,181 @@ + + + + +Hello, Harfbuzz: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Hello, Harfbuzz

+ +

+ Here's the simplest Harfbuzz that can possibly work. We will improve + it later. +

+
  1. + Create a buffer and put your text in it. +

+
+  #include <hb.h>
+  hb_buffer_t *buf;
+  buf = hb_buffer_create();
+  hb_buffer_add_utf8(buf, text, strlen(text), 0, strlen(text));
+
+
  1. + Guess the script, language and direction of the buffer. +

+
+  hb_buffer_guess_segment_properties(buf);
+
+
  1. + Create a face and a font, using FreeType for now. +

+
+  #include <hb-ft.h>
+  FT_New_Face(ft_library, font_path, index, &face)
+  hb_font_t *font = hb_ft_font_create(face);
+
+
  1. + Shape! +

+
+  hb_shape(font, buf, NULL, 0);
+
+
  1. + Get the glyph and position information. +

+
+  hb_glyph_info_t *glyph_info    = hb_buffer_get_glyph_infos(buf, &glyph_count);
+  hb_glyph_position_t *glyph_pos = hb_buffer_get_glyph_positions(buf, &glyph_count);
+
+
  1. + Iterate over each glyph. +

+
+  for (i = 0; i < glyph_count; ++i) {
+    glyphid = glyph_info[i].codepoint;
+    x_offset = glyph_pos[i].x_offset / 64.0;
+    y_offset = glyph_pos[i].y_offset / 64.0;
+    x_advance = glyph_pos[i].x_advance / 64.0;
+    y_advance = glyph_pos[i].y_advance / 64.0;
+    draw_glyph(glyphid, cursor_x + x_offset, cursor_y + y_offset);
+    cursor_x += x_advance;
+    cursor_y += y_advance;
+  }
+
+
  1. + Tidy up. +

+
+  hb_buffer_destroy(buf);
+  hb_font_destroy(hb_ft_font);
+
+
+

+What Harfbuzz doesn't do

+

+ The code above will take a UTF8 string, shape it, and give you the + information required to lay it out correctly on a single + horizontal (or vertical) line using the font provided. That is the + extent of Harfbuzz's responsibility. +

+

+ If you are implementing a text layout engine you may have other + responsibilities, that Harfbuzz will not help you with: +

+
    +
  • +

    + Harfbuzz won't help you with bidirectionality. If you want to + lay out text with mixed Hebrew and English, you will need to + ensure that the buffer provided to Harfbuzz has those + characters in the correct layout order. This will be different + from the logical order in which the Unicode text is stored. In + other words, the user will hit the keys in the following + sequence: +

    +
    +A B C [space] ג ב א [space] D E F
    +        
    +

    + but will expect to see in the output: +

    +
    +ABC אבג DEF
    +        
    +

    + This reordering is called bidi processing + ("bidi" is short for bidirectional), and there's an + algorithm as an annex to the Unicode Standard which tells you how + to reorder a string from logical order into presentation order. + Before sending your string to Harfbuzz, you may need to apply the + bidi algorithm to it. Libraries such as ICU and fribidi can do + this for you. +

    +
  • +
  • + Harfbuzz won't help you with text that contains different font + properties. For instance, if you have the string "a + huge breakfast", and you expect + "huge" to be italic, you will need to send three + strings to Harfbuzz: a, in your Roman font; + huge using your italic font; and + breakfast using your Roman font again. + Similarly if you change font, font size, script, language or + direction within your string, you will need to shape each run + independently and then output them independently. Harfbuzz + expects to shape a run of characters sharing the same + properties. +

  • +
  • +

    + Harfbuzz won't help you with line breaking, hyphenation or + justification. As mentioned above, it lays out the string + along a single line of, notionally, + infinite length. If you want to find out where the potential + word, sentence and line break points are in your text, you + could use the ICU library's break iterator functions. +

    +

    + Harfbuzz can tell you how wide a shaped piece of text is, which is + useful input to a justification algorithm, but it knows nothing + about paragraphs, lines or line lengths. Nor will it adjust the + space between words to fit them proportionally into a line. If you + want to layout text in paragraphs, you will probably want to send + each word of your text to Harfbuzz to determine its shaped width + after glyph substitutions, then work out how many words will fit + on a line, and then finally output each word of the line separated + by a space of the correct size to fully justify the paragraph. +

    +
  • +
+

+ As a layout engine implementor, Harfbuzz will help you with the + interface between your text and your font, and that's something + that you'll need - what you then do with the glyphs that your font + returns is up to you. The example we saw above enough to get us + started using Harfbuzz. Now we are going to use the remainder of + Harfbuzz's API to refine that example and improve our text shaping + capabilities. +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/html/home.png b/docs/html/home.png similarity index 100% rename from docs/reference/html/home.png rename to docs/html/home.png diff --git a/docs/html/index.html b/docs/html/index.html new file mode 100644 index 0000000..fbf4dcd --- /dev/null +++ b/docs/html/index.html @@ -0,0 +1,190 @@ + + + + +HarfBuzz Manual: HarfBuzz Manual + + + + + + + + +
+
+
+
+
+

HarfBuzz

+
+

+ HarfBuzz is an OpenType + text shaping engine. +

+

+ The current HarfBuzz codebase, formerly known as harfbuzz-ng, is + versioned 1.x.x and is stable and under active maintenance. This is + what is used in latest versions of Firefox, GNOME, ChromeOS, Chrome, + LibreOffice, XeTeX, Android, and KDE, among other places. The canonical + source tree is available + here. + Also available on + github. + See Download for release tarballs. +

+

+ The old HarfBuzz codebase, these days known as harfbuzz-old, was + derived from FreeType, + Pango, and + Qt and is available + here. + It is not actively developed or maintained, and is extremely buggy. All + users are encouraged to switch over to the new HarfBuzz as soon as + possible. There are no release tarballs of old HarfBuzz whatsoever. +

+
+
+
+
+
+
I. User's manual
+
+
What is Harfbuzz?
+
+
Why do I need it?
+
Why is it called Harfbuzz?
+
+
Install Harfbuzz
+
+
Download
+
Building
+
+
Hello, Harfbuzz
+
What Harfbuzz doesn't do
+
Buffers, language, script and direction
+
+
Creating and destroying buffers
+
Adding text to the buffer
+
Setting buffer properties
+
What about the other scripts?
+
Customizing Unicode functions
+
+
Fonts and faces
+
+
Using FreeType
+
Using Harfbuzz's native OpenType implementation
+
Using your own font functions
+
+
Shaping and shape plans
+
+
OpenType features
+
Plans and caching
+
+
+
II. Reference manual
+
+
Harfbuzz API
+
+
+hb +
+
+hb-common +
+
+hb-unicode +
+
+Buffers — Input and output buffers +
+
+hb-blob +
+
+hb-face +
+
+hb-font +
+
+Shaping — Conversion of text strings into positioned glyphs +
+
+hb-version +
+
+hb-deprecated +
+
+hb-set +
+
+hb-ot +
+
+hb-ot-layout +
+
+hb-ot-tag +
+
+hb-ot-font +
+
+hb-ot-shape +
+
+hb-shape-plan +
+
+hb-glib +
+
+hb-icu +
+
+hb-ft +
+
+hb-graphite2 +
+
+hb-uniscribe +
+
+hb-coretext +
+
+hb-gobject +
+
+
Object Hierarchy
+
API Index
+
Index of new symbols in 0.9.2
+
Index of new symbols in 0.9.5
+
Index of new symbols in 0.9.7
+
Index of new symbols in 0.9.8
+
Index of new symbols in 0.9.10
+
Index of new symbols in 0.9.11
+
Index of new symbols in 0.9.20
+
Index of new symbols in 0.9.22
+
Index of new symbols in 0.9.28
+
Index of new symbols in 0.9.30
+
Index of new symbols in 0.9.31
+
Index of new symbols in 0.9.38
+
Index of new symbols in 0.9.39
+
Index of new symbols in 0.9.41
+
Index of new symbols in 0.9.42
+
Index of new symbols in 1.0.5
+
Index of new symbols in 1.1.2
+
Index of new symbols in 1.1.3
+
Index of deprecated API
+
Annotation Glossary
+
+
+
+ + + \ No newline at end of file diff --git a/docs/html/install-harfbuzz.html b/docs/html/install-harfbuzz.html new file mode 100644 index 0000000..10017eb --- /dev/null +++ b/docs/html/install-harfbuzz.html @@ -0,0 +1,59 @@ + + + + +Install Harfbuzz: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Install Harfbuzz

+ +
+

+Download

+

+ For tarball releases of HarfBuzz, look + here. + At the same place you will + also find Win32 binary bundles that include libharfbuzz DLL, hb-view.exe, + hb-shape.exe, and all dependencies. +

+

+ The canonical source tree is available + here. + Also available on github. +

+

+ The API that comes with hb.h will + not change incompatibly. Other, peripheral, headers are more likely to go + through minor modifications, but again, will do our best to never change + API in an incompatible way. We will never break the ABI. +

+

+ If you are not sure whether Pango or HarfBuzz is right for you, read + this. +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/html/left-insensitive.png b/docs/html/left-insensitive.png similarity index 100% rename from docs/reference/html/left-insensitive.png rename to docs/html/left-insensitive.png diff --git a/docs/reference/html/left.png b/docs/html/left.png similarity index 100% rename from docs/reference/html/left.png rename to docs/html/left.png diff --git a/docs/reference/html/object-tree.html b/docs/html/object-tree.html similarity index 69% rename from docs/reference/html/object-tree.html rename to docs/html/object-tree.html index c4f447b..0dff3cc 100644 --- a/docs/reference/html/object-tree.html +++ b/docs/html/object-tree.html @@ -2,20 +2,20 @@ -Object Hierarchy - - - +Object Hierarchy: HarfBuzz Manual + + + - + - + @@ -23,37 +23,36 @@

Object Hierarchy

-    GBoxed
+    GBoxed
     ├── hb_blob_t
-    ├── hb_buffer_t
+    ├── hb_buffer_t
     ├── hb_face_t
-    ├── hb_feature_t
+    ├── hb_feature_t
     ├── hb_font_funcs_t
     ├── hb_font_t
-    ├── hb_glyph_info_t
-    ├── hb_glyph_position_t
-    ├── hb_language_t
-    ├── hb_segment_properties_t
+    ├── hb_glyph_info_t
+    ├── hb_glyph_position_t
+    ├── hb_segment_properties_t
     ├── hb_set_t
     ├── hb_shape_plan_t
     ├── hb_unicode_funcs_t
     ╰── hb_user_data_key_t
-    GEnum
-    ├── hb_buffer_content_type_t
-    ├── hb_buffer_serialize_format_t
+    GEnum
+    ├── hb_buffer_cluster_level_t
+    ├── hb_buffer_content_type_t
+    ├── hb_buffer_serialize_format_t
     ├── hb_direction_t
     ├── hb_memory_mode_t
     ├── hb_ot_layout_glyph_class_t
     ├── hb_script_t
     ├── hb_unicode_combining_class_t
     ╰── hb_unicode_general_category_t
-    GFlags
-    ├── hb_buffer_flags_t
-    ╰── hb_buffer_serialize_flags_t
+    GFlags
+    ├── hb_buffer_flags_t
+    ╰── hb_buffer_serialize_flags_t
 
+
Generated by GTK-Doc V1.24.1
\ No newline at end of file diff --git a/docs/html/plans-and-caching.html b/docs/html/plans-and-caching.html new file mode 100644 index 0000000..8ab4e97 --- /dev/null +++ b/docs/html/plans-and-caching.html @@ -0,0 +1,31 @@ + + + + +Plans and caching: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Plans and caching

+

+

+
+ + + \ No newline at end of file diff --git a/docs/html/pt01.html b/docs/html/pt01.html new file mode 100644 index 0000000..e49ad58 --- /dev/null +++ b/docs/html/pt01.html @@ -0,0 +1,75 @@ + + + + +Part I. User's manual: HarfBuzz Manual + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/html/pt02.html b/docs/html/pt02.html new file mode 100644 index 0000000..f5580c5 --- /dev/null +++ b/docs/html/pt02.html @@ -0,0 +1,138 @@ + + + + +Part II. Reference manual: HarfBuzz Manual + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/reference/html/right-insensitive.png b/docs/html/right-insensitive.png similarity index 100% rename from docs/reference/html/right-insensitive.png rename to docs/html/right-insensitive.png diff --git a/docs/reference/html/right.png b/docs/html/right.png similarity index 100% rename from docs/reference/html/right.png rename to docs/html/right.png diff --git a/docs/html/setting-buffer-properties.html b/docs/html/setting-buffer-properties.html new file mode 100644 index 0000000..0c1cc60 --- /dev/null +++ b/docs/html/setting-buffer-properties.html @@ -0,0 +1,31 @@ + + + + +Setting buffer properties: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Setting buffer properties

+

+

+
+ + + \ No newline at end of file diff --git a/docs/html/shaping-and-shape-plans.html b/docs/html/shaping-and-shape-plans.html new file mode 100644 index 0000000..04bffbb --- /dev/null +++ b/docs/html/shaping-and-shape-plans.html @@ -0,0 +1,39 @@ + + + + +Shaping and shape plans: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Shaping and shape plans

+ +
+

+OpenType features

+

+

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/html/style.css b/docs/html/style.css similarity index 97% rename from docs/reference/html/style.css rename to docs/html/style.css index c141ddd..3675420 100644 --- a/docs/reference/html/style.css +++ b/docs/html/style.css @@ -60,7 +60,7 @@ a:hover div.informaltable table { border-collapse: separate; - border-spacing: 1em 0.5em; + border-spacing: 1em 0.3em; border: none; } @@ -148,6 +148,8 @@ div.table table th h4 { color: #555753; + margin-top: 1em; + margin-bottom: 1em; } hr @@ -166,17 +168,16 @@ dl.toc dt padding-bottom: 0.25em; } -dl.toc > dd > dl > dt +dl.toc > dt { padding-top: 0.25em; padding-bottom: 0.25em; + font-weight: bold; } -dl.toc > dt +dl.toc > dl { - padding-top: 1em; padding-bottom: 0.5em; - font-weight: bold; } .parameter @@ -346,7 +347,9 @@ acronym,abbr } @media screen { - sup a.footnote + /* these have a as a first child, but since there are no parent selectors + * we can't use that. */ + a.footnote { position: relative; top: 0em ! important; diff --git a/docs/reference/html/up-insensitive.png b/docs/html/up-insensitive.png similarity index 100% rename from docs/reference/html/up-insensitive.png rename to docs/html/up-insensitive.png diff --git a/docs/reference/html/up.png b/docs/html/up.png similarity index 100% rename from docs/reference/html/up.png rename to docs/html/up.png diff --git a/docs/html/using-harfbuzzs-native-opentype-implementation.html b/docs/html/using-harfbuzzs-native-opentype-implementation.html new file mode 100644 index 0000000..1980ba8 --- /dev/null +++ b/docs/html/using-harfbuzzs-native-opentype-implementation.html @@ -0,0 +1,31 @@ + + + + +Using Harfbuzz's native OpenType implementation: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Using Harfbuzz's native OpenType implementation

+

+

+
+ + + \ No newline at end of file diff --git a/docs/html/using-your-own-font-functions.html b/docs/html/using-your-own-font-functions.html new file mode 100644 index 0000000..b1e94d8 --- /dev/null +++ b/docs/html/using-your-own-font-functions.html @@ -0,0 +1,31 @@ + + + + +Using your own font functions: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Using your own font functions

+

+

+
+ + + \ No newline at end of file diff --git a/docs/html/what-about-the-other-scripts.html b/docs/html/what-about-the-other-scripts.html new file mode 100644 index 0000000..0550e73 --- /dev/null +++ b/docs/html/what-about-the-other-scripts.html @@ -0,0 +1,31 @@ + + + + +What about the other scripts?: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+What about the other scripts?

+

+

+
+ + + \ No newline at end of file diff --git a/docs/html/what-is-harfbuzz.html b/docs/html/what-is-harfbuzz.html new file mode 100644 index 0000000..d791d47 --- /dev/null +++ b/docs/html/what-is-harfbuzz.html @@ -0,0 +1,124 @@ + + + + +What is Harfbuzz?: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+What is Harfbuzz?

+ +

+ Harfbuzz is a text shaping engine. It solves + the problem of selecting and positioning glyphs from a font given a + Unicode string. +

+
+

+Why do I need it?

+

+ Text shaping is an integral part of preparing text for display. It + is a fairly low level operation; Harfbuzz is used directly by + graphic rendering libraries such as Pango, and the layout engines + in Firefox, LibreOffice and Chromium. Unless you are + writing one of these layout engines yourself, + you will probably not need to use Harfbuzz - normally higher level + libraries will turn text into glyphs for you. +

+

+ However, if you are writing a layout engine + or graphics library yourself, you will need to perform text + shaping, and this is where Harfbuzz can help you. Here are some + reasons why you need it: +

+
    +
  • + OpenType fonts contain a set of glyphs, indexed by glyph ID. + The glyph ID within the font does not necessarily relate to a + Unicode codepoint. For instance, some fonts have the letter + "a" as glyph ID 1. To pull the right glyph out of + the font in order to display it, you need to consult a table + within the font (the "cmap" table) which maps + Unicode codepoints to glyph IDs. Text shaping turns codepoints + into glyph IDs. +

  • +
  • + Many OpenType fonts contain ligatures: combinations of + characters which are rendered together. For instance, it's + common for the fi combination to appear in + print as the single ligature "fi". Whether you should + render text as fi or "fi" does not + depend on the input text, but on the capabilities of the font + and the level of ligature application you wish to perform. + Text shaping involves querying the font's ligature tables and + determining what substitutions should be made. +

  • +
  • + While ligatures like "fi" are typographic + refinements, some languages require such + substitutions to be made in order to display text correctly. + In Tamil, when the letter "TTA" (ட) letter is + followed by "U" (உ), the combination should appear + as the single glyph "டு". The sequence of Unicode + characters "டஉ" needs to be rendered as a single + glyph from the font - text shaping chooses the correct glyph + from the sequence of characters provided. +

  • +
  • + Similarly, each Arabic character has four different variants: + within a font, there will be glyphs for the initial, medial, + final, and isolated forms of each letter. Unicode only encodes + one codepoint per character, and so a Unicode string will not + tell you which glyph to use. Text shaping chooses the correct + form of the letter and returns the correct glyph from the font + that you need to render. +

  • +
  • + Other languages have marks and accents which need to be + rendered in certain positions around a base character. For + instance, the Moldovan language has the Cyrillic letter + "zhe" (ж) with a breve accent, like so: ӂ. Some + fonts will contain this character as an individual glyph, + whereas other fonts will not contain a zhe-with-breve glyph + but expect the rendering engine to form the character by + overlaying the two glyphs ж and ˘. Where you should draw the + combining breve depends on the height of the preceding glyph. + Again, for Arabic, the correct positioning of vowel marks + depends on the height of the character on which you are + placing the mark. Text shaping tells you whether you have a + precomposed glyph within your font or if you need to compose a + glyph yourself out of combining marks, and if so, where to + position those marks. +

  • +
+

+ If this is something that you need to do, then you need a text + shaping engine: you could use Uniscribe if you are using Windows; + you could use CoreText on OS X; or you could use Harfbuzz. In the + rest of this manual, we are going to assume that you are the + implementor of a text layout engine. +

+
+
+ + + \ No newline at end of file diff --git a/docs/html/why-is-it-called-harfbuzz.html b/docs/html/why-is-it-called-harfbuzz.html new file mode 100644 index 0000000..afe00b0 --- /dev/null +++ b/docs/html/why-is-it-called-harfbuzz.html @@ -0,0 +1,38 @@ + + + + +Why is it called Harfbuzz?: HarfBuzz Manual + + + + + + + + + + + + + + + + +
+

+Why is it called Harfbuzz?

+

+ Harfbuzz began its life as text shaping code within the FreeType + project, (and you will see references to the FreeType authors + within the source code copyright declarations) but was then + abstracted out to its own project. This project is maintained by + Behdad Esfahbod, and named Harfbuzz. Originally, it was a shaping + engine for OpenType fonts - "Harfbuzz" is the Persian + for "open type". +

+
+ + + \ No newline at end of file diff --git a/docs/reference/Makefile.am b/docs/reference/Makefile.am deleted file mode 100644 index f7a4ad6..0000000 --- a/docs/reference/Makefile.am +++ /dev/null @@ -1,111 +0,0 @@ -# Process this file with automake to produce Makefile.in - -# We require automake 1.6 at least. -AUTOMAKE_OPTIONS = 1.6 - -# This is a blank Makefile.am for using gtk-doc. -# Copy this to your project's API docs directory and modify the variables to -# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples -# of using the various options. - -# The name of the module, e.g. 'glib'. -DOC_MODULE=harfbuzz - -# Uncomment for versioned docs and specify the version of the module, e.g. '2'. -#DOC_MODULE_VERSION=$(HB_VERSION_MAJOR) - -# The top-level SGML file. You can change this if you want to. -DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml - -# Directories containing the source code. -# gtk-doc will search all .c and .h files beneath these paths -# for inline comments documenting functions and macros. -# e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk -DOC_SOURCE_DIR=$(top_srcdir)/src $(top_builddir)/src - -# Extra options to pass to gtkdoc-scangobj. Not normally needed. -SCANGOBJ_OPTIONS= - -# Extra options to supply to gtkdoc-scan. -# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" -SCAN_OPTIONS=--rebuild-types --deprecated-guards="HB_DISABLE_DEPRECATED" - -# Header files or dirs to ignore when scanning. Use base file/dir names -# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code -IGNORE_HFILES=`cd $(top_srcdir)/src; find . -path './hb-*/*.h' | sed 's@^.*/@@'` -if HAVE_GOBJECT -else -IGNORE_HFILES+=hb-gobject.h hb-gobject-enums.h hb-gobject-structs.h -endif - -# Extra options to supply to gtkdoc-mkdb. -# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml -MKDB_OPTIONS=--source-suffixes=h,cc --xml-mode --output-format=xml --ignore-files="$(IGNORE_HFILES)" - -# Extra options to supply to gtkdoc-mktmpl -# e.g. MKTMPL_OPTIONS=--only-section-tmpl -MKTMPL_OPTIONS= - -# Extra options to supply to gtkdoc-mkhtml -MKHTML_OPTIONS= - -# Extra options to supply to gtkdoc-fixref. Not normally needed. -# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html -FIXXREF_OPTIONS= - -# Used for dependencies. The docs will be rebuilt if any of these change. -# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h -# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c -HFILE_GLOB=$(top_srcdir)/src/hb.h $(top_srcdir)/src/hb-*.h -CFILE_GLOB=$(top_srcdir)/src/hb-*.cc - -# Extra header to include when scanning, which are not under DOC_SOURCE_DIR -# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h -EXTRA_HFILES=$(top_builddir)/src/hb-version.h - -# Images to copy into HTML directory. -# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png -HTML_IMAGES= - -# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). -# e.g. content_files=running.sgml building.sgml changes-2.0.sgml -content_files= version.xml - -# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded -# These files must be listed here *and* in content_files -# e.g. expand_content_files=running.sgml -expand_content_files= - -# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. -# Only needed if you are using gtkdoc-scangobj to dynamically query widget -# signals and properties. -# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) -# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) -GTKDOC_CFLAGS= -GTKDOC_LIBS=$(top_builddir)/src/libharfbuzz.la -if HAVE_GOBJECT -GTKDOC_LIBS+=$(top_builddir)/src/libharfbuzz-gobject.la -endif - -# This includes the standard gtk-doc make rules, copied by gtkdocize. -include $(top_srcdir)/gtk-doc.make - -# Other files to distribute -# e.g. EXTRA_DIST += version.xml.in -EXTRA_DIST += version.xml.in - -# Files not to distribute -# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types -# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt -#DISTCLEANFILES += - -# Comment this out if you want 'make check' to test you doc status -# and run some sanity checks -if ENABLE_GTK_DOC -TESTS_ENVIRONMENT = cd $(srcdir) && \ - DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ - SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) -#TESTS = $(GTKDOC_CHECK) -endif - --include $(top_srcdir)/git.mk diff --git a/docs/reference/Makefile.in b/docs/reference/Makefile.in deleted file mode 100644 index d090c74..0000000 --- a/docs/reference/Makefile.in +++ /dev/null @@ -1,852 +0,0 @@ -# Makefile.in generated by automake 1.14 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Process this file with automake to produce Makefile.in - -# -*- mode: makefile -*- - -#################################### -# Everything below here is generic # -#################################### -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -@HAVE_GOBJECT_FALSE@am__append_1 = hb-gobject.h hb-gobject-enums.h hb-gobject-structs.h -@HAVE_GOBJECT_TRUE@am__append_2 = $(top_builddir)/src/libharfbuzz-gobject.la -DIST_COMMON = $(top_srcdir)/gtk-doc.make $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am $(srcdir)/version.xml.in -subdir = docs/reference -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \ - $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = version.xml -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -SOURCES = -DIST_SOURCES = -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CAIRO_CFLAGS = @CAIRO_CFLAGS@ -CAIRO_FT_CFLAGS = @CAIRO_FT_CFLAGS@ -CAIRO_FT_LIBS = @CAIRO_FT_LIBS@ -CAIRO_LIBS = @CAIRO_LIBS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CORETEXT_CFLAGS = @CORETEXT_CFLAGS@ -CORETEXT_LIBS = @CORETEXT_LIBS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ -FREETYPE_LIBS = @FREETYPE_LIBS@ -GIT = @GIT@ -GLIB_CFLAGS = @GLIB_CFLAGS@ -GLIB_LIBS = @GLIB_LIBS@ -GLIB_MKENUMS = @GLIB_MKENUMS@ -GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ -GOBJECT_LIBS = @GOBJECT_LIBS@ -GRAPHITE2_CFLAGS = @GRAPHITE2_CFLAGS@ -GRAPHITE2_LIBS = @GRAPHITE2_LIBS@ -GREP = @GREP@ -GTKDOC_CHECK = @GTKDOC_CHECK@ -GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ -GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ -GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ -GTKDOC_MKPDF = @GTKDOC_MKPDF@ -GTKDOC_REBASE = @GTKDOC_REBASE@ -HB_LIBTOOL_VERSION_INFO = @HB_LIBTOOL_VERSION_INFO@ -HB_VERSION = @HB_VERSION@ -HB_VERSION_MAJOR = @HB_VERSION_MAJOR@ -HB_VERSION_MICRO = @HB_VERSION_MICRO@ -HB_VERSION_MINOR = @HB_VERSION_MINOR@ -HTML_DIR = @HTML_DIR@ -ICU_CFLAGS = @ICU_CFLAGS@ -ICU_CONFIG = @ICU_CONFIG@ -ICU_LIBS = @ICU_LIBS@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ -INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ -INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ -INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ -INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ -INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ -INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ -INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PTHREAD_CC = @PTHREAD_CC@ -PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ -PTHREAD_LIBS = @PTHREAD_LIBS@ -RAGEL = @RAGEL@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -UNISCRIBE_CFLAGS = @UNISCRIBE_CFLAGS@ -UNISCRIBE_LIBS = @UNISCRIBE_LIBS@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -ax_pthread_config = @ax_pthread_config@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ - -# We require automake 1.6 at least. -AUTOMAKE_OPTIONS = 1.6 - -# This is a blank Makefile.am for using gtk-doc. -# Copy this to your project's API docs directory and modify the variables to -# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples -# of using the various options. - -# The name of the module, e.g. 'glib'. -DOC_MODULE = harfbuzz - -# Uncomment for versioned docs and specify the version of the module, e.g. '2'. -#DOC_MODULE_VERSION=$(HB_VERSION_MAJOR) - -# The top-level SGML file. You can change this if you want to. -DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.xml - -# Directories containing the source code. -# gtk-doc will search all .c and .h files beneath these paths -# for inline comments documenting functions and macros. -# e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk -DOC_SOURCE_DIR = $(top_srcdir)/src $(top_builddir)/src - -# Extra options to pass to gtkdoc-scangobj. Not normally needed. -SCANGOBJ_OPTIONS = - -# Extra options to supply to gtkdoc-scan. -# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" -SCAN_OPTIONS = --rebuild-types --deprecated-guards="HB_DISABLE_DEPRECATED" - -# Header files or dirs to ignore when scanning. Use base file/dir names -# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code -IGNORE_HFILES = `cd $(top_srcdir)/src; find . -path './hb-*/*.h' | sed \ - 's@^.*/@@'` $(am__append_1) - -# Extra options to supply to gtkdoc-mkdb. -# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml -MKDB_OPTIONS = --source-suffixes=h,cc --xml-mode --output-format=xml --ignore-files="$(IGNORE_HFILES)" - -# Extra options to supply to gtkdoc-mktmpl -# e.g. MKTMPL_OPTIONS=--only-section-tmpl -MKTMPL_OPTIONS = - -# Extra options to supply to gtkdoc-mkhtml -MKHTML_OPTIONS = - -# Extra options to supply to gtkdoc-fixref. Not normally needed. -# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html -FIXXREF_OPTIONS = - -# Used for dependencies. The docs will be rebuilt if any of these change. -# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h -# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c -HFILE_GLOB = $(top_srcdir)/src/hb.h $(top_srcdir)/src/hb-*.h -CFILE_GLOB = $(top_srcdir)/src/hb-*.cc - -# Extra header to include when scanning, which are not under DOC_SOURCE_DIR -# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h -EXTRA_HFILES = $(top_builddir)/src/hb-version.h - -# Images to copy into HTML directory. -# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png -HTML_IMAGES = - -# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). -# e.g. content_files=running.sgml building.sgml changes-2.0.sgml -content_files = version.xml - -# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded -# These files must be listed here *and* in content_files -# e.g. expand_content_files=running.sgml -expand_content_files = - -# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. -# Only needed if you are using gtkdoc-scangobj to dynamically query widget -# signals and properties. -# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) -# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) -GTKDOC_CFLAGS = -GTKDOC_LIBS = $(top_builddir)/src/libharfbuzz.la $(am__append_2) -@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN = -@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute - -# We set GPATH here; this gives us semantics for GNU make -# which are more like other make's VPATH, when it comes to -# whether a source that is a target of one rule is then -# searched for in VPATH/GPATH. -# -GPATH = $(srcdir) -TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE) -SETUP_FILES = \ - $(content_files) \ - $(DOC_MAIN_SGML_FILE) \ - $(DOC_MODULE)-sections.txt \ - $(DOC_MODULE)-overrides.txt - - -# This includes the standard gtk-doc make rules, copied by gtkdocize. - -# Other files to distribute -# e.g. EXTRA_DIST += version.xml.in -EXTRA_DIST = $(HTML_IMAGES) $(SETUP_FILES) version.xml.in -DOC_STAMPS = setup-build.stamp scan-build.stamp sgml-build.stamp \ - html-build.stamp pdf-build.stamp \ - sgml.stamp html.stamp pdf.stamp - -SCANOBJ_FILES = \ - $(DOC_MODULE).args \ - $(DOC_MODULE).hierarchy \ - $(DOC_MODULE).interfaces \ - $(DOC_MODULE).prerequisites \ - $(DOC_MODULE).signals - -REPORT_FILES = \ - $(DOC_MODULE)-undocumented.txt \ - $(DOC_MODULE)-undeclared.txt \ - $(DOC_MODULE)-unused.txt - -CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) gtkdoc-check.test -@GTK_DOC_BUILD_HTML_FALSE@HTML_BUILD_STAMP = -@GTK_DOC_BUILD_HTML_TRUE@HTML_BUILD_STAMP = html-build.stamp -@GTK_DOC_BUILD_PDF_FALSE@PDF_BUILD_STAMP = -@GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp - -#### setup #### -GTK_DOC_V_SETUP = $(GTK_DOC_V_SETUP_$(V)) -GTK_DOC_V_SETUP_ = $(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) -GTK_DOC_V_SETUP_0 = @echo " DOC Preparing build"; - -#### scan #### -GTK_DOC_V_SCAN = $(GTK_DOC_V_SCAN_$(V)) -GTK_DOC_V_SCAN_ = $(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) -GTK_DOC_V_SCAN_0 = @echo " DOC Scanning header files"; -GTK_DOC_V_INTROSPECT = $(GTK_DOC_V_INTROSPECT_$(V)) -GTK_DOC_V_INTROSPECT_ = $(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) -GTK_DOC_V_INTROSPECT_0 = @echo " DOC Introspecting gobjects"; - -#### xml #### -GTK_DOC_V_XML = $(GTK_DOC_V_XML_$(V)) -GTK_DOC_V_XML_ = $(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) -GTK_DOC_V_XML_0 = @echo " DOC Building XML"; - -#### html #### -GTK_DOC_V_HTML = $(GTK_DOC_V_HTML_$(V)) -GTK_DOC_V_HTML_ = $(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) -GTK_DOC_V_HTML_0 = @echo " DOC Building HTML"; -GTK_DOC_V_XREF = $(GTK_DOC_V_XREF_$(V)) -GTK_DOC_V_XREF_ = $(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) -GTK_DOC_V_XREF_0 = @echo " DOC Fixing cross-references"; - -#### pdf #### -GTK_DOC_V_PDF = $(GTK_DOC_V_PDF_$(V)) -GTK_DOC_V_PDF_ = $(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) -GTK_DOC_V_PDF_0 = @echo " DOC Building PDF"; - -# Files not to distribute -# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types -# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt -#DISTCLEANFILES += - -# Comment this out if you want 'make check' to test you doc status -# and run some sanity checks -@ENABLE_GTK_DOC_TRUE@TESTS_ENVIRONMENT = cd $(srcdir) && \ -@ENABLE_GTK_DOC_TRUE@ DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ -@ENABLE_GTK_DOC_TRUE@ SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/gtk-doc.make $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits docs/reference/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnits docs/reference/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; -$(top_srcdir)/gtk-doc.make: - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -version.xml: $(top_builddir)/config.status $(srcdir)/version.xml.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags TAGS: - -ctags CTAGS: - -cscope cscopelist: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$(top_distdir)" distdir="$(distdir)" \ - dist-hook -check-am: all-am -check: check-am -@ENABLE_GTK_DOC_FALSE@all-local: -all-am: Makefile all-local -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-local mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-local - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-data-local - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic \ - maintainer-clean-local - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-local - -.MAKE: install-am install-strip - -.PHONY: all all-am all-local check check-am clean clean-generic \ - clean-libtool clean-local cscopelist-am ctags-am dist-hook \ - distclean distclean-generic distclean-libtool distclean-local \ - distdir dvi dvi-am html html-am info info-am install \ - install-am install-data install-data-am install-data-local \ - install-dvi install-dvi-am install-exec install-exec-am \ - install-html install-html-am install-info install-info-am \ - install-man install-pdf install-pdf-am install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - maintainer-clean-local mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ - uninstall-am uninstall-local - - -gtkdoc-check.test: Makefile - $(AM_V_GEN)echo "#!/bin/sh -e" > $@; \ - echo "$(GTKDOC_CHECK_PATH) || exit 1" >> $@; \ - chmod +x $@ - -all-gtk-doc: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) -.PHONY: all-gtk-doc - -@ENABLE_GTK_DOC_TRUE@all-local: all-gtk-doc - -docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) - -$(REPORT_FILES): sgml-build.stamp - -setup-build.stamp: - -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ - files=`echo $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types`; \ - if test "x$$files" != "x" ; then \ - for file in $$files ; do \ - destdir=`dirname $(abs_builddir)/$$file`; \ - test -d "$$destdir" || mkdir -p "$$destdir"; \ - test -f $(abs_srcdir)/$$file && \ - cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ - done; \ - fi; \ - fi - $(AM_V_at)touch setup-build.stamp - -scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB) - $(GTK_DOC_V_SCAN)_source_dir='' ; \ - for i in $(DOC_SOURCE_DIR) ; do \ - _source_dir="$${_source_dir} --source-dir=$$i" ; \ - done ; \ - gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) - $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ - scanobj_options=""; \ - gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ - if test "$(?)" = "0"; then \ - if test "x$(V)" = "x1"; then \ - scanobj_options="--verbose"; \ - fi; \ - fi; \ - CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ - gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ - else \ - for i in $(SCANOBJ_FILES) ; do \ - test -f $$i || touch $$i ; \ - done \ - fi - $(AM_V_at)touch scan-build.stamp - -$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp - @true - -sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) - $(GTK_DOC_V_XML)_source_dir='' ; \ - for i in $(DOC_SOURCE_DIR) ; do \ - _source_dir="$${_source_dir} --source-dir=$$i" ; \ - done ; \ - gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) - $(AM_V_at)touch sgml-build.stamp - -sgml.stamp: sgml-build.stamp - @true - -html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) - $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \ - mkhtml_options=""; \ - gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \ - if test "$(?)" = "0"; then \ - if test "x$(V)" = "x1"; then \ - mkhtml_options="$$mkhtml_options --verbose"; \ - fi; \ - fi; \ - gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ - if test "$(?)" = "0"; then \ - mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \ - fi; \ - cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) - -@test "x$(HTML_IMAGES)" = "x" || \ - for file in $(HTML_IMAGES) ; do \ - if test -f $(abs_srcdir)/$$file ; then \ - cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ - fi; \ - if test -f $(abs_builddir)/$$file ; then \ - cp $(abs_builddir)/$$file $(abs_builddir)/html; \ - fi; \ - done; - $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) - $(AM_V_at)touch html-build.stamp - -pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) - $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \ - mkpdf_options=""; \ - gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \ - if test "$(?)" = "0"; then \ - if test "x$(V)" = "x1"; then \ - mkpdf_options="$$mkpdf_options --verbose"; \ - fi; \ - fi; \ - if test "x$(HTML_IMAGES)" != "x"; then \ - for img in $(HTML_IMAGES); do \ - part=`dirname $$img`; \ - echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \ - if test $$? != 0; then \ - mkpdf_options="$$mkpdf_options --imgdir=$$part"; \ - fi; \ - done; \ - fi; \ - gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) - $(AM_V_at)touch pdf-build.stamp - -############## - -clean-local: - @rm -f *~ *.bak - @rm -rf .libs - @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-types" ; then \ - rm -f $(DOC_MODULE).types; \ - fi - -distclean-local: - @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \ - $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt - @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ - rm -f $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types; \ - fi - -maintainer-clean-local: - @rm -rf xml html - -install-data-local: - @installfiles=`echo $(builddir)/html/*`; \ - if test "$$installfiles" = '$(builddir)/html/*'; \ - then echo 1>&2 'Nothing to install' ; \ - else \ - if test -n "$(DOC_MODULE_VERSION)"; then \ - installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ - else \ - installdir="$(DESTDIR)$(TARGET_DIR)"; \ - fi; \ - $(mkinstalldirs) $${installdir} ; \ - for i in $$installfiles; do \ - echo ' $(INSTALL_DATA) '$$i ; \ - $(INSTALL_DATA) $$i $${installdir}; \ - done; \ - if test -n "$(DOC_MODULE_VERSION)"; then \ - mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ - $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ - fi; \ - $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ - fi - -uninstall-local: - @if test -n "$(DOC_MODULE_VERSION)"; then \ - installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ - else \ - installdir="$(DESTDIR)$(TARGET_DIR)"; \ - fi; \ - rm -rf $${installdir} - -# -# Require gtk-doc when making dist -# -@HAVE_GTK_DOC_TRUE@dist-check-gtkdoc: docs -@HAVE_GTK_DOC_FALSE@dist-check-gtkdoc: -@HAVE_GTK_DOC_FALSE@ @echo "*** gtk-doc is needed to run 'make dist'. ***" -@HAVE_GTK_DOC_FALSE@ @echo "*** gtk-doc was not found when 'configure' ran. ***" -@HAVE_GTK_DOC_FALSE@ @echo "*** please install gtk-doc and rerun 'configure'. ***" -@HAVE_GTK_DOC_FALSE@ @false - -dist-hook: dist-check-gtkdoc all-gtk-doc dist-hook-local - @mkdir $(distdir)/html - @cp ./html/* $(distdir)/html - @-cp ./$(DOC_MODULE).pdf $(distdir)/ - @-cp ./$(DOC_MODULE).types $(distdir)/ - @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/ - @cd $(distdir) && rm -f $(DISTCLEANFILES) - @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html - -.PHONY : dist-hook-local docs -#TESTS = $(GTKDOC_CHECK) - --include $(top_srcdir)/git.mk - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/docs/reference/harfbuzz-docs.xml b/docs/reference/harfbuzz-docs.xml deleted file mode 100644 index 2731fab..0000000 --- a/docs/reference/harfbuzz-docs.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - -]> - - - HarfBuzz Reference Manual - - for HarfBuzz &version;. - - - - - - [Insert title here] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Object Hierarchy - - - - API Index - - - - Index of deprecated API - - - - - diff --git a/docs/reference/harfbuzz.types b/docs/reference/harfbuzz.types deleted file mode 100644 index e69de29..0000000 diff --git a/docs/reference/html/annotation-glossary.html b/docs/reference/html/annotation-glossary.html deleted file mode 100644 index 1afb91d..0000000 --- a/docs/reference/html/annotation-glossary.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - -Annotation Glossary - - - - - - - - - - - - - - - -
-

-Annotation Glossary

-

A

-
-array
-

Parameter points to an array of items.

-

C

-
-closure
-

This parameter is a 'user_data', for callbacks; many bindings can pass NULL here.

-

D

-
-destroy
-

This parameter is a 'destroy_data', for callbacks.

-

E

-
-element-type
-

Generics and defining elements of containers and arrays.

-

I

-
-inout
-

Parameter for input and for returning results. Default is transfer full.

-

O

-
-out
-

Parameter for returning results. Default is transfer full.

-

S

-
-scope notified
-

The callback is valid until the GDestroyNotify argument is called.

-

T

-
-transfer full
-

Free data after the code is done.

-
-transfer none
-

Don't free data after the code is done.

-
- - - \ No newline at end of file diff --git a/docs/reference/html/harfbuzz-hb-buffer.html b/docs/reference/html/harfbuzz-hb-buffer.html deleted file mode 100644 index 0c32fc8..0000000 --- a/docs/reference/html/harfbuzz-hb-buffer.html +++ /dev/null @@ -1,1780 +0,0 @@ - - - - -hb-buffer - - - - - - - - - - - - - - - - -
-
-
- - -
-

hb-buffer

-

hb-buffer

-
-
-

Functions

-
---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-void - -hb_buffer_add () -
-void - -hb_buffer_add_utf16 () -
-void - -hb_buffer_add_utf32 () -
-void - -hb_buffer_add_utf8 () -
-void - -hb_buffer_add_codepoints () -
-hb_bool_t - -hb_buffer_allocation_successful () -
-void - -hb_buffer_clear_contents () -
-hb_buffer_t * - -hb_buffer_create () -
-hb_bool_t - -hb_buffer_deserialize_glyphs () -
-void - -hb_buffer_destroy () -
-hb_buffer_content_type_t - -hb_buffer_get_content_type () -
-hb_direction_t - -hb_buffer_get_direction () -
-hb_buffer_t * - -hb_buffer_get_empty () -
-hb_buffer_flags_t - -hb_buffer_get_flags () -
-hb_glyph_info_t * - -hb_buffer_get_glyph_infos () -
-hb_glyph_position_t * - -hb_buffer_get_glyph_positions () -
-hb_language_t - -hb_buffer_get_language () -
unsigned int - -hb_buffer_get_length () -
-hb_codepoint_t - -hb_buffer_get_replacement_codepoint () -
-hb_script_t - -hb_buffer_get_script () -
-void - -hb_buffer_get_segment_properties () -
-hb_unicode_funcs_t * - -hb_buffer_get_unicode_funcs () -
-void * - -hb_buffer_get_user_data () -
-void - -hb_buffer_guess_segment_properties () -
-void - -hb_buffer_normalize_glyphs () -
-hb_bool_t - -hb_buffer_pre_allocate () -
-hb_buffer_t * - -hb_buffer_reference () -
-void - -hb_buffer_reset () -
-void - -hb_buffer_reverse () -
-void - -hb_buffer_reverse_clusters () -
-hb_buffer_serialize_format_t - -hb_buffer_serialize_format_from_string () -
const char * - -hb_buffer_serialize_format_to_string () -
unsigned int - -hb_buffer_serialize_glyphs () -
const char ** - -hb_buffer_serialize_list_formats () -
-void - -hb_buffer_set_content_type () -
-void - -hb_buffer_set_direction () -
-void - -hb_buffer_set_flags () -
-void - -hb_buffer_set_language () -
-hb_bool_t - -hb_buffer_set_length () -
-void - -hb_buffer_set_replacement_codepoint () -
-void - -hb_buffer_set_script () -
-void - -hb_buffer_set_segment_properties () -
-void - -hb_buffer_set_unicode_funcs () -
-hb_bool_t - -hb_buffer_set_user_data () -
-hb_bool_t - -hb_segment_properties_equal () -
unsigned int - -hb_segment_properties_hash () -
-
-
-

Types and Values

- -
-
-

Object Hierarchy

-
    GBoxed
-    ├── hb_buffer_t
-    ├── hb_glyph_info_t
-    ├── hb_glyph_position_t
-    ╰── hb_segment_properties_t
-    GEnum
-    ├── hb_buffer_content_type_t
-    ╰── hb_buffer_serialize_format_t
-    GFlags
-    ├── hb_buffer_flags_t
-    ╰── hb_buffer_serialize_flags_t
-
-
-
-

Description

-

-

-
-
-

Functions

-
-

hb_buffer_add ()

-
void
-hb_buffer_add (hb_buffer_t *buffer,
-               hb_codepoint_t codepoint,
-               unsigned int cluster);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-

Since 1.0

-
-
-
-

hb_buffer_add_utf16 ()

-
void
-hb_buffer_add_utf16 (hb_buffer_t *buffer,
-                     const uint16_t *text,
-                     int text_length,
-                     unsigned int item_offset,
-                     int item_length);
-
-

Parameters

-
----- - - - - - - - - - - - - -

buffer

a buffer.

 

text

.

[array length=text_length]
-
-

Since 1.0

-
-
-
-

hb_buffer_add_utf32 ()

-
void
-hb_buffer_add_utf32 (hb_buffer_t *buffer,
-                     const uint32_t *text,
-                     int text_length,
-                     unsigned int item_offset,
-                     int item_length);
-
-

Parameters

-
----- - - - - - - - - - - - - -

buffer

a buffer.

 

text

.

[array length=text_length]
-
-

Since 1.0

-
-
-
-

hb_buffer_add_utf8 ()

-
void
-hb_buffer_add_utf8 (hb_buffer_t *buffer,
-                    const char *text,
-                    int text_length,
-                    unsigned int item_offset,
-                    int item_length);
-
-

Parameters

-
----- - - - - - - - - - - - - -

buffer

a buffer.

 

text

.

[array length=text_length][element-type uint8_t]
-
-

Since 1.0

-
-
-
-

hb_buffer_add_codepoints ()

-
void
-hb_buffer_add_codepoints (hb_buffer_t *buffer,
-                          const hb_codepoint_t *text,
-                          int text_length,
-                          unsigned int item_offset,
-                          int item_length);
-

Since 1.0

-
-
-
-

hb_buffer_allocation_successful ()

-
hb_bool_t
-hb_buffer_allocation_successful (hb_buffer_t *buffer);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-
-

Returns

-

-
-

Since 1.0

-
-
-
-

hb_buffer_clear_contents ()

-
void
-hb_buffer_clear_contents (hb_buffer_t *buffer);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-

Since 1.0

-
-
-
-

hb_buffer_create ()

-
hb_buffer_t *
-hb_buffer_create (void);
-

-

-
-

Returns

-

-
-
-
-
-

hb_buffer_deserialize_glyphs ()

-
hb_bool_t
-hb_buffer_deserialize_glyphs (hb_buffer_t *buffer,
-                              const char *buf,
-                              int buf_len,
-                              const char **end_ptr,
-                              hb_font_t *font,
-                              hb_buffer_serialize_format_t format);
-
-

Parameters

-
----- - - - - - - - - - - - - - - - - - -

buffer

a buffer.

 

buf

.

[array length=buf_len]

end_ptr

.

[out]
-
-
-

Returns

-

-
-

Since 1.0

-
-
-
-

hb_buffer_destroy ()

-
void
-hb_buffer_destroy (hb_buffer_t *buffer);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-

Since 1.0

-
-
-
-

hb_buffer_get_content_type ()

-
hb_buffer_content_type_t
-hb_buffer_get_content_type (hb_buffer_t *buffer);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-
-

Returns

-

-
-

Since 1.0

-
-
-
-

hb_buffer_get_direction ()

-
hb_direction_t
-hb_buffer_get_direction (hb_buffer_t *buffer);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-
-

Returns

-

-
-

Since 1.0

-
-
-
-

hb_buffer_get_empty ()

-
hb_buffer_t *
-hb_buffer_get_empty (void);
-
-

Returns

-

.

-

[transfer full]

-
-

Since 1.0

-
-
-
-

hb_buffer_get_flags ()

-
hb_buffer_flags_t
-hb_buffer_get_flags (hb_buffer_t *buffer);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-
-

Returns

-

-
-

Since 1.0

-
-
-
-

hb_buffer_get_glyph_infos ()

-
hb_glyph_info_t *
-hb_buffer_get_glyph_infos (hb_buffer_t *buffer,
-                           unsigned int *length);
-

Returns buffer glyph information array. Returned pointer -is valid as long as buffer contents are not modified.

-
-

Parameters

-
----- - - - - - - - - - - - - -

buffer

a buffer.

 

length

output array length.

[out]
-
-
-

Returns

-

buffer glyph information array.

-

[transfer none][array length=length]

-
-

Since 1.0

-
-
-
-

hb_buffer_get_glyph_positions ()

-
hb_glyph_position_t *
-hb_buffer_get_glyph_positions (hb_buffer_t *buffer,
-                               unsigned int *length);
-

Returns buffer glyph position array. Returned pointer -is valid as long as buffer contents are not modified.

-
-

Parameters

-
----- - - - - - - - - - - - - -

buffer

a buffer.

 

length

output length.

[out]
-
-
-

Returns

-

buffer glyph position array.

-

[transfer none][array length=length]

-
-

Since 1.0

-
-
-
-

hb_buffer_get_language ()

-
hb_language_t
-hb_buffer_get_language (hb_buffer_t *buffer);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-
-

Returns

-

-
-

Since 1.0

-
-
-
-

hb_buffer_get_length ()

-
unsigned int
-hb_buffer_get_length (hb_buffer_t *buffer);
-

Returns the number of items in the buffer.

-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-
-

Returns

-

buffer length.

-

-
-

Since 1.0

-
-
-
-

hb_buffer_get_replacement_codepoint ()

-
hb_codepoint_t
-hb_buffer_get_replacement_codepoint (hb_buffer_t *buffer);
-

Since 1.0

-
-
-
-

hb_buffer_get_script ()

-
hb_script_t
-hb_buffer_get_script (hb_buffer_t *buffer);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-
-

Returns

-

-
-

Since 1.0

-
-
-
-

hb_buffer_get_segment_properties ()

-
void
-hb_buffer_get_segment_properties (hb_buffer_t *buffer,
-                                  hb_segment_properties_t *props);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-

Since 1.0

-
-
-
-

hb_buffer_get_unicode_funcs ()

-
hb_unicode_funcs_t *
-hb_buffer_get_unicode_funcs (hb_buffer_t *buffer);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-
-

Returns

-

-
-

Since 1.0

-
-
-
-

hb_buffer_get_user_data ()

-
void *
-hb_buffer_get_user_data (hb_buffer_t *buffer,
-                         hb_user_data_key_t *key);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-
-

Returns

-

-
-

Since 1.0

-
-
-
-

hb_buffer_guess_segment_properties ()

-
void
-hb_buffer_guess_segment_properties (hb_buffer_t *buffer);
-

Sets unset buffer segment properties based on buffer Unicode -contents. If buffer is not empty, it must have content type -HB_BUFFER_CONTENT_TYPE_UNICODE.

-

If buffer script is not set (ie. is HB_SCRIPT_INVALID), it -will be set to the Unicode script of the first character in -the buffer that has a script other than HB_SCRIPT_COMMON, -HB_SCRIPT_INHERITED, and HB_SCRIPT_UNKNOWN.

-

Next, if buffer direction is not set (ie. is HB_DIRECTION_INVALID), -it will be set to the natural horizontal direction of the -buffer script as returned by hb_script_get_horizontal_direction().

-

Finally, if buffer language is not set (ie. is HB_LANGUAGE_INVALID), -it will be set to the process's default language as returned by -hb_language_get_default(). This may change in the future by -taking buffer script into consideration when choosing a language.

-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-

Since 1.0

-
-
-
-

hb_buffer_normalize_glyphs ()

-
void
-hb_buffer_normalize_glyphs (hb_buffer_t *buffer);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-

Since 1.0

-
-
-
-

hb_buffer_pre_allocate ()

-
hb_bool_t
-hb_buffer_pre_allocate (hb_buffer_t *buffer,
-                        unsigned int size);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-
-

Returns

-

-
-

Since 1.0

-
-
-
-

hb_buffer_reference ()

-
hb_buffer_t *
-hb_buffer_reference (hb_buffer_t *buffer);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-
-

Returns

-

.

-

[transfer full]

-
-

Since 1.0

-
-
-
-

hb_buffer_reset ()

-
void
-hb_buffer_reset (hb_buffer_t *buffer);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-

Since 1.0

-
-
-
-

hb_buffer_reverse ()

-
void
-hb_buffer_reverse (hb_buffer_t *buffer);
-

Reverses buffer contents.

-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-

Since 1.0

-
-
-
-

hb_buffer_reverse_clusters ()

-
void
-hb_buffer_reverse_clusters (hb_buffer_t *buffer);
-

Reverses buffer clusters. That is, the buffer contents are -reversed, then each cluster (consecutive items having the -same cluster number) are reversed again.

-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-

Since 1.0

-
-
-
-

hb_buffer_serialize_format_from_string ()

-
hb_buffer_serialize_format_t
-hb_buffer_serialize_format_from_string
-                               (const char *str,
-                                int len);
-
-

Returns

-

-
-

Since 1.0

-
-
-
-

hb_buffer_serialize_format_to_string ()

-
const char *
-hb_buffer_serialize_format_to_string (hb_buffer_serialize_format_t format);
-
-

Returns

-

-
-

Since 1.0

-
-
-
-

hb_buffer_serialize_glyphs ()

-
unsigned int
-hb_buffer_serialize_glyphs (hb_buffer_t *buffer,
-                            unsigned int start,
-                            unsigned int end,
-                            char *buf,
-                            unsigned int buf_size,
-                            unsigned int *buf_consumed,
-                            hb_font_t *font,
-                            hb_buffer_serialize_format_t format,
-                            hb_buffer_serialize_flags_t flags);
-
-

Parameters

-
----- - - - - - - - - - - - - - - - - - -

buffer

a buffer.

 

buf

.

[array length=buf_size]

buf_consumed

.

[out]
-
-
-

Returns

-

-
-

Since 1.0

-
-
-
-

hb_buffer_serialize_list_formats ()

-
const char **
-hb_buffer_serialize_list_formats (void);
-
-

Returns

-

.

-

[transfer none]

-
-

Since 1.0

-
-
-
-

hb_buffer_set_content_type ()

-
void
-hb_buffer_set_content_type (hb_buffer_t *buffer,
-                            hb_buffer_content_type_t content_type);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-

Since 1.0

-
-
-
-

hb_buffer_set_direction ()

-
void
-hb_buffer_set_direction (hb_buffer_t *buffer,
-                         hb_direction_t direction);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-

Since 1.0

-
-
-
-

hb_buffer_set_flags ()

-
void
-hb_buffer_set_flags (hb_buffer_t *buffer,
-                     hb_buffer_flags_t flags);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-

Since 1.0

-
-
-
-

hb_buffer_set_language ()

-
void
-hb_buffer_set_language (hb_buffer_t *buffer,
-                        hb_language_t language);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-

Since 1.0

-
-
-
-

hb_buffer_set_length ()

-
hb_bool_t
-hb_buffer_set_length (hb_buffer_t *buffer,
-                      unsigned int length);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-
-

Returns

-

-
-

Since 1.0

-
-
-
-

hb_buffer_set_replacement_codepoint ()

-
void
-hb_buffer_set_replacement_codepoint (hb_buffer_t *buffer,
-                                     hb_codepoint_t replacement);
-

Since 1.0

-
-
-
-

hb_buffer_set_script ()

-
void
-hb_buffer_set_script (hb_buffer_t *buffer,
-                      hb_script_t script);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-

Since 1.0

-
-
-
-

hb_buffer_set_segment_properties ()

-
void
-hb_buffer_set_segment_properties (hb_buffer_t *buffer,
-                                  const hb_segment_properties_t *props);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-

Since 1.0

-
-
-
-

hb_buffer_set_unicode_funcs ()

-
void
-hb_buffer_set_unicode_funcs (hb_buffer_t *buffer,
-                             hb_unicode_funcs_t *unicode_funcs);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-

Since 1.0

-
-
-
-

hb_buffer_set_user_data ()

-
hb_bool_t
-hb_buffer_set_user_data (hb_buffer_t *buffer,
-                         hb_user_data_key_t *key,
-                         void *data,
-                         hb_destroy_func_t destroy,
-                         hb_bool_t replace);
-
-

Parameters

-
----- - - - - - -

buffer

a buffer.

 
-
-
-

Returns

-

-
-

Since 1.0

-
-
-
-

hb_segment_properties_equal ()

-
hb_bool_t
-hb_segment_properties_equal (const hb_segment_properties_t *a,
-                             const hb_segment_properties_t *b);
-

-

-
-

Returns

-

-
-
-
-
-

hb_segment_properties_hash ()

-
unsigned int
-hb_segment_properties_hash (const hb_segment_properties_t *p);
-

-

-
-

Returns

-

-
-
-
-
-

Types and Values

-
-

HB_SEGMENT_PROPERTIES_DEFAULT

-
#define             HB_SEGMENT_PROPERTIES_DEFAULT
-

-

-
-
-
-

enum hb_buffer_content_type_t

-

-

-
-

Members

-
----- - - - - - - - - - - - - - - - - - -

HB_BUFFER_CONTENT_TYPE_INVALID

  

HB_BUFFER_CONTENT_TYPE_UNICODE

  

HB_BUFFER_CONTENT_TYPE_GLYPHS

  
-
-
-
-
-

enum hb_buffer_flags_t

-

-

-
-

Members

-
----- - - - - - - - - - - - - - - - - - - - - - - -

HB_BUFFER_FLAG_DEFAULT

  

HB_BUFFER_FLAG_BOT

  

HB_BUFFER_FLAG_EOT

  

HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES

  
-
-
-
-
-

enum hb_buffer_serialize_flags_t

-

-

-
-

Members

-
----- - - - - - - - - - - - - - - - - - - - - - - -

HB_BUFFER_SERIALIZE_FLAG_DEFAULT

  

HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS

  

HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS

  

HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES

  
-
-
-
-
-

enum hb_buffer_serialize_format_t

-

-

-
-

Members

-
----- - - - - - - - - - - - - - - - - - -

HB_BUFFER_SERIALIZE_FORMAT_TEXT

  

HB_BUFFER_SERIALIZE_FORMAT_JSON

  

HB_BUFFER_SERIALIZE_FORMAT_INVALID

  
-
-
-
-
-

hb_buffer_t

-
typedef struct hb_buffer_t hb_buffer_t;
-
-

-

-
-
-
-

hb_glyph_info_t

-
typedef struct {
-  hb_codepoint_t codepoint;
-  hb_mask_t      mask;
-  uint32_t       cluster;
-} hb_glyph_info_t;
-
-

-

-
-
-
-

hb_glyph_position_t

-
typedef struct {
-  hb_position_t  x_advance;
-  hb_position_t  y_advance;
-  hb_position_t  x_offset;
-  hb_position_t  y_offset;
-} hb_glyph_position_t;
-
-

-

-
-
-
-

hb_segment_properties_t

-
typedef struct {
-  hb_direction_t  direction;
-  hb_script_t     script;
-  hb_language_t   language;
-} hb_segment_properties_t;
-
-

-

-
-
-
- - - \ No newline at end of file diff --git a/docs/reference/html/harfbuzz-hb-gobject.html b/docs/reference/html/harfbuzz-hb-gobject.html deleted file mode 100644 index 2d21692..0000000 --- a/docs/reference/html/harfbuzz-hb-gobject.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - -hb-gobject - - - - - - - - - - - - - - - - -
-
-
- - -
-

hb-gobject

-

hb-gobject

-
-
-

Description

-

-

-
-
-

Functions

-
-
-

Types and Values

-
-
- - - \ No newline at end of file diff --git a/docs/reference/html/harfbuzz-hb-shape.html b/docs/reference/html/harfbuzz-hb-shape.html deleted file mode 100644 index c055347..0000000 --- a/docs/reference/html/harfbuzz-hb-shape.html +++ /dev/null @@ -1,286 +0,0 @@ - - - - -hb-shape - - - - - - - - - - - - - - - - -
-
-
- - -
-

hb-shape

-

hb-shape

-
-
-

Functions

-
---- - - - - - - - - - - - - - - - - - - - - - - -
-hb_bool_t - -hb_feature_from_string () -
-void - -hb_feature_to_string () -
-void - -hb_shape () -
-hb_bool_t - -hb_shape_full () -
const char ** - -hb_shape_list_shapers () -
-
-
-

Types and Values

-
---- - - - - -
 hb_feature_t
-
-
-

Object Hierarchy

-
    GBoxed
-    ╰── hb_feature_t
-
-
-
-

Description

-

-

-
-
-

Functions

-
-

hb_feature_from_string ()

-
hb_bool_t
-hb_feature_from_string (const char *str,
-                        int len,
-                        hb_feature_t *feature);
-
-

Parameters

-
----- - - - - - - - - - - - - -

str

.

[array length=len]

feature

.

[out][optional]
-
-
-

Returns

-

-
-

Since 1.0

-
-
-
-

hb_feature_to_string ()

-
void
-hb_feature_to_string (hb_feature_t *feature,
-                      char *buf,
-                      unsigned int size);
-
-

Parameters

-
----- - - - - - -

buf

.

[array length=size]
-
-

Since 1.0

-
-
-
-

hb_shape ()

-
void
-hb_shape (hb_font_t *font,
-          hb_buffer_t *buffer,
-          const hb_feature_t *features,
-          unsigned int num_features);
-
-

Parameters

-
----- - - - - - - - - - - - - - - - - - -

font

a font.

 

buffer

a buffer.

 

features

.

[array length=num_features]
-
-

Since 1.0

-
-
-
-

hb_shape_full ()

-
hb_bool_t
-hb_shape_full (hb_font_t *font,
-               hb_buffer_t *buffer,
-               const hb_feature_t *features,
-               unsigned int num_features,
-               const char * const *shaper_list);
-
-

Parameters

-
----- - - - - - - - - - - - - - - - - - - - - - - -

font

a font.

 

buffer

a buffer.

 

features

.

[array length=num_features]

shaper_list

.

[array zero-terminated=1]
-
-
-

Returns

-

-
-

Since 1.0

-
-
-
-

hb_shape_list_shapers ()

-
const char **
-hb_shape_list_shapers (void);
-
-

Returns

-

.

-

[transfer none]

-
-

Since 1.0

-
-
-
-

Types and Values

-
-

hb_feature_t

-
typedef struct {
-  hb_tag_t      tag;
-  uint32_t      value;
-  unsigned int  start;
-  unsigned int  end;
-} hb_feature_t;
-
-

-

-
-
-
- - - \ No newline at end of file diff --git a/docs/reference/html/harfbuzz.devhelp2 b/docs/reference/html/harfbuzz.devhelp2 deleted file mode 100644 index 10bb40c..0000000 --- a/docs/reference/html/harfbuzz.devhelp2 +++ /dev/null @@ -1,378 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/reference/html/index.html b/docs/reference/html/index.html deleted file mode 100644 index 772db71..0000000 --- a/docs/reference/html/index.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - -HarfBuzz Reference Manual - - - - - - - -
-
-
-
-

- for HarfBuzz 0.9.40 -. - -

-
-
-
- -
- - - \ No newline at end of file diff --git a/docs/reference/html/index.sgml b/docs/reference/html/index.sgml deleted file mode 100644 index 7b469b5..0000000 --- a/docs/reference/html/index.sgml +++ /dev/null @@ -1,496 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/reference/version.xml b/docs/reference/version.xml deleted file mode 100644 index f81283f..0000000 --- a/docs/reference/version.xml +++ /dev/null @@ -1 +0,0 @@ -0.9.40 diff --git a/docs/usermanual-buffers-language-script-and-direction.xml b/docs/usermanual-buffers-language-script-and-direction.xml new file mode 100644 index 0000000..3a26c55 --- /dev/null +++ b/docs/usermanual-buffers-language-script-and-direction.xml @@ -0,0 +1,77 @@ + + Buffers, language, script and direction + + The input to Harfbuzz is a series of Unicode characters, stored in a + buffer. In this chapter, we'll look at how to set up a buffer with + the text that we want and then customize the properties of the + buffer. + +
+ Creating and destroying buffers + + As we saw in our initial example, a buffer is created and + initialized with hb_buffer_create(). This + produces a new, empty buffer object, instantiated with some + default values and ready to accept your Unicode strings. + + + Harfbuzz manages the memory of objects that it creates (such as + buffers), so you don't have to. When you have finished working on + a buffer, you can call hb_buffer_destroy(): + + + hb_buffer_t *buffer = hb_buffer_create(); + ... + hb_buffer_destroy(buffer); + + + This will destroy the object and free its associated memory - + unless some other part of the program holds a reference to this + buffer. If you acquire a Harfbuzz buffer from another subsystem + and want to ensure that it is not garbage collected by someone + else destroying it, you should increase its reference count: + + +void somefunc(hb_buffer_t *buffer) { + buffer = hb_buffer_reference(buffer); + ... + + + And then decrease it once you're done with it: + + + hb_buffer_destroy(buffer); +} + + + To throw away all the data in your buffer and start from scratch, + call hb_buffer_reset(buffer). If you want to + throw away the string in the buffer but keep the options, you can + instead call hb_buffer_clear_contents(buffer). + +
+
+ Adding text to the buffer + + Now we have a brand new Harfbuzz buffer. Let's start filling it + with text! From Harfbuzz's perspective, a buffer is just a stream + of Unicode codepoints, but your input string is probably in one of + the standard Unicode character encodings (UTF-8, UTF-16, UTF-32) + +
+
+ Setting buffer properties + + +
+
+ What about the other scripts? + + +
+
+ Customizing Unicode functions + + +
+
\ No newline at end of file diff --git a/docs/usermanual-clusters.xml b/docs/usermanual-clusters.xml new file mode 100644 index 0000000..8b64bde --- /dev/null +++ b/docs/usermanual-clusters.xml @@ -0,0 +1,304 @@ + + + Clusters + + In shaping text, a cluster is a sequence of + code points that needs to be treated as a single, indivisible unit. + + + When you add text to a HB buffer, each character is associated with + a cluster value. This is an arbitrary number as + far as HB is concerned. + + + Most clients will use UTF-8, UTF-16, or UTF-32 indices, but the + actual number does not matter. Moreover, it is not required for the + cluster values to be monotonically increasing, but pretty much all + of HB's tests are performed on monotonically increasing cluster + numbers. Nevertheless, there is no such assumption in the code + itself. With that in mind, let's examine what happens with cluster + values during shaping under each cluster-level. + + + HarfBuzz provides three levels of clustering + support. Level 0 is the default behavior and reproduces the behavior + of the old HarfBuzz library. Level 1 tweaks this behavior slightly + to produce better results, so level 1 clustering is recommended for + code that is not required to implement backward compatibility with + the old HarfBuzz. + + + Level 2 differs significantly in how it treats cluster values. + Levels 0 and 1 both process ligatures and glyph decomposition by + merging clusters; level 2 does not. + + + The conceptual model for what the cluster values mean, in levels 0 + and 1, is this: + + + + + the sequence of cluster values will always remain monotone + + + + + each value represents a single cluster + + + + + each cluster contains one or more glyphs and one or more + characters + + + + + Assuming that initial cluster numbers were monotonically increasing + and distinct, then all adjacent glyphs having the same cluster + number belong to the same cluster, and all characters belong to the + cluster that has the highest number not larger than their initial + cluster number. This will become clearer with an example. + + + + A clustering example for levels 0 and 1 + + Let's say we start with the following character sequence and cluster + values: + + + A,B,C,D,E + 0,1,2,3,4 + + + We then map the characters to glyphs. For simplicity, let's assume + that each character maps to the corresponding, identical-looking + glyph: + + + A,B,C,D,E + 0,1,2,3,4 + + + Now if, for example, B and C + ligate, then the clusters to which they belong "merge". + This merged cluster takes for its cluster number the minimum of all + the cluster numbers of the clusters that went in. In this case, we + get: + + + A,BC,D,E + 0,1 ,3,4 + + + Now let's assume that the BC glyph decomposes + into three components, and D also decomposes into + two. The components each inherit the cluster value of their parent: + + + A,BC0,BC1,BC2,D0,D1,E + 0,1 ,1 ,1 ,3 ,3 ,4 + + + Now if BC2 and D0 ligate, then + their clusters (numbers 1 and 3) merge into + min(1,3) = 1: + + + A,BC0,BC1,BC2D0,D1,E + 0,1 ,1 ,1 ,1 ,4 + + + At this point, cluster 1 means: the character sequence + BCD is represented by glyphs + BC0,BC1,BC2D0,D1 and cannot be broken down any + further. + + + + Reordering in levels 0 and 1 + + Another common operation in the more complex shapers is when things + reorder. In those cases, to maintain monotone clusters, HB merges + the clusters of everything in the reordering sequence. For example, + let's again start with the character sequence: + + + A,B,C,D,E + 0,1,2,3,4 + + + If D is reordered before B, + then the B, C, and + D clusters merge, and we get: + + + A,D,B,C,E + 0,1,1,1,4 + + + This is clearly not ideal, but it is the only sensible way to + maintain monotone indices and retain the true relationship between + glyphs and characters. + + + + The distinction between levels 0 and 1 + + So, the above is pretty much what cluster levels 0 and 1 do. The + only difference between the two is this: in level 0, at the very + beginning of the shaping process, we also merge clusters between + base characters and all Unicode marks (combining or not) following + them. E.g.: + + + A,acute,B + 0,1 ,2 + + + will become: + + + A,acute,B + 0,0 ,2 + + + This is the default behavior. We do it because Windows did it and + old HarfBuzz did it, so this remained the default. But this behavior + makes it impossible to color diacritic marks differently from their + base characters. That's why in level 1 we do not perform this + initial merging step. + + + For clients, level 0 is more convenient if they rely on HarfBuzz + clusters for cursor positioning. But that's wrong anyway: cursor + positions should be determined based on Unicode grapheme boundaries, + NOT shaping clusters. As such, level 1 clusters are preferred. + + + One last note about levels 0 and 1. We currently don't allow a + MultipleSubst lookup to replace a glyph with zero + glyphs (i.e., to delete a glyph). But in some other situations, + glyphs can be deleted. In those cases, if the glyph being deleted is + the last glyph of its cluster, we make sure to merge the cluster + with a neighboring cluster. + + + This is, primarily, to make sure that the starting cluster of the + text always has the cluster index pointing to the start of the text + for the run; more than one client currently relies on this + guarantee. + + + Incidentally, Apple's CoreText does something else to maintain the + same promise: it inserts a glyph with id 65535 at the beginning of + the glyph string if the glyph corresponding to the first character + in the run was deleted. HarfBuzz might do something similar in the + future. + + + + Level 2 + + Level 2 is a different beast from levels 0 and 1. It is simple to + describe, but hard to make sense of. It simply doesn't do any + cluster merging whatsoever. When things ligate or otherwise multiple + glyphs turn into one, the cluster value of the first glyph is + retained. + + + Here are a few examples of why processing cluster values produced at + this level might be tricky: + + + Ligatures with combining marks + + Imagine capital letters are bases and lower case letters are + combining marks. With an input sequence like this: + + + A,a,B,b,C,c + 0,1,2,3,4,5 + + + if A,B,C ligate, then here are the cluster + values one would get under the various levels: + + + level 0: + + + ABC,a,b,c + 0 ,0,0,0 + + + level 1: + + + ABC,a,b,c + 0 ,0,0,5 + + + level 2: + + + ABC,a,b,c + 0 ,1,3,5 + + + Making sense of the last example is the hardest for a client, + because there is nothing in the cluster values to suggest that + B and C ligated with + A. + + + + Reordering + + Another tricky case is when things reorder. Under level 2: + + + A,B,C,D,E + 0,1,2,3,4 + + + Now imagine D moves before + B: + + + A,D,B,C,E + 0,3,1,2,4 + + + Now, if D ligates with B, we + get: + + + A,DB,C,E + 0,3 ,2,4 + + + In a different scenario, A and + B could have ligated + before D reordered; that + would have resulted in: + + + AB,D,C,E + 0 ,3,2,4 + + + There's no way to differentitate between these two scenarios based + on the cluster numbers alone. + + + Another problem appens with ligatures under level 2 if the + direction of the text is forced to opposite of its natural + direction (e.g. left-to-right Arabic). But that's too much of a + corner case to worry about. + + + + diff --git a/docs/usermanual-fonts-and-faces.xml b/docs/usermanual-fonts-and-faces.xml new file mode 100644 index 0000000..01fcdc9 --- /dev/null +++ b/docs/usermanual-fonts-and-faces.xml @@ -0,0 +1,18 @@ + + Fonts and faces +
+ Using FreeType + + +
+
+ Using Harfbuzz's native OpenType implementation + + +
+
+ Using your own font functions + + +
+
\ No newline at end of file diff --git a/docs/usermanual-glyph-information.xml b/docs/usermanual-glyph-information.xml new file mode 100644 index 0000000..ca674c0 --- /dev/null +++ b/docs/usermanual-glyph-information.xml @@ -0,0 +1,8 @@ + + Glyph information + + Names and numbers + + + + \ No newline at end of file diff --git a/docs/usermanual-hello-harfbuzz.xml b/docs/usermanual-hello-harfbuzz.xml new file mode 100644 index 0000000..34db017 --- /dev/null +++ b/docs/usermanual-hello-harfbuzz.xml @@ -0,0 +1,183 @@ + + Hello, Harfbuzz + + Here's the simplest Harfbuzz that can possibly work. We will improve + it later. + + + + + Create a buffer and put your text in it. + + + + + #include <hb.h> + hb_buffer_t *buf; + buf = hb_buffer_create(); + hb_buffer_add_utf8(buf, text, strlen(text), 0, strlen(text)); + + + + + Guess the script, language and direction of the buffer. + + + + + hb_buffer_guess_segment_properties(buf); + + + + + Create a face and a font, using FreeType for now. + + + + + #include <hb-ft.h> + FT_New_Face(ft_library, font_path, index, &face) + hb_font_t *font = hb_ft_font_create(face); + + + + + Shape! + + + + + hb_shape(font, buf, NULL, 0); + + + + + Get the glyph and position information. + + + + + hb_glyph_info_t *glyph_info = hb_buffer_get_glyph_infos(buf, &glyph_count); + hb_glyph_position_t *glyph_pos = hb_buffer_get_glyph_positions(buf, &glyph_count); + + + + + Iterate over each glyph. + + + + + for (i = 0; i < glyph_count; ++i) { + glyphid = glyph_info[i].codepoint; + x_offset = glyph_pos[i].x_offset / 64.0; + y_offset = glyph_pos[i].y_offset / 64.0; + x_advance = glyph_pos[i].x_advance / 64.0; + y_advance = glyph_pos[i].y_advance / 64.0; + draw_glyph(glyphid, cursor_x + x_offset, cursor_y + y_offset); + cursor_x += x_advance; + cursor_y += y_advance; + } + + + + + Tidy up. + + + + + hb_buffer_destroy(buf); + hb_font_destroy(hb_ft_font); + +
+ What Harfbuzz doesn't do + + The code above will take a UTF8 string, shape it, and give you the + information required to lay it out correctly on a single + horizontal (or vertical) line using the font provided. That is the + extent of Harfbuzz's responsibility. + + + If you are implementing a text layout engine you may have other + responsibilities, that Harfbuzz will not help you with: + + + + + Harfbuzz won't help you with bidirectionality. If you want to + lay out text with mixed Hebrew and English, you will need to + ensure that the buffer provided to Harfbuzz has those + characters in the correct layout order. This will be different + from the logical order in which the Unicode text is stored. In + other words, the user will hit the keys in the following + sequence: + + +A B C [space] ג ב א [space] D E F + + + but will expect to see in the output: + + +ABC אבג DEF + + + This reordering is called bidi processing + ("bidi" is short for bidirectional), and there's an + algorithm as an annex to the Unicode Standard which tells you how + to reorder a string from logical order into presentation order. + Before sending your string to Harfbuzz, you may need to apply the + bidi algorithm to it. Libraries such as ICU and fribidi can do + this for you. + + + + + Harfbuzz won't help you with text that contains different font + properties. For instance, if you have the string "a + huge breakfast", and you expect + "huge" to be italic, you will need to send three + strings to Harfbuzz: a, in your Roman font; + huge using your italic font; and + breakfast using your Roman font again. + Similarly if you change font, font size, script, language or + direction within your string, you will need to shape each run + independently and then output them independently. Harfbuzz + expects to shape a run of characters sharing the same + properties. + + + + + Harfbuzz won't help you with line breaking, hyphenation or + justification. As mentioned above, it lays out the string + along a single line of, notionally, + infinite length. If you want to find out where the potential + word, sentence and line break points are in your text, you + could use the ICU library's break iterator functions. + + + Harfbuzz can tell you how wide a shaped piece of text is, which is + useful input to a justification algorithm, but it knows nothing + about paragraphs, lines or line lengths. Nor will it adjust the + space between words to fit them proportionally into a line. If you + want to layout text in paragraphs, you will probably want to send + each word of your text to Harfbuzz to determine its shaped width + after glyph substitutions, then work out how many words will fit + on a line, and then finally output each word of the line separated + by a space of the correct size to fully justify the paragraph. + + + + + As a layout engine implementor, Harfbuzz will help you with the + interface between your text and your font, and that's something + that you'll need - what you then do with the glyphs that your font + returns is up to you. The example we saw above enough to get us + started using Harfbuzz. Now we are going to use the remainder of + Harfbuzz's API to refine that example and improve our text shaping + capabilities. + +
+
\ No newline at end of file diff --git a/docs/usermanual-install-harfbuzz.xml b/docs/usermanual-install-harfbuzz.xml new file mode 100644 index 0000000..be8ac8d --- /dev/null +++ b/docs/usermanual-install-harfbuzz.xml @@ -0,0 +1,70 @@ + + Install Harfbuzz +
+ Download + + For tarball releases of HarfBuzz, look + here. + At the same place you will + also find Win32 binary bundles that include libharfbuzz DLL, hb-view.exe, + hb-shape.exe, and all dependencies. + + + The canonical source tree is available + here. + Also available on github. + + + The API that comes with hb.h will + not change incompatibly. Other, peripheral, headers are more likely to go + through minor modifications, but again, will do our best to never change + API in an incompatible way. We will never break the ABI. + + + If you are not sure whether Pango or HarfBuzz is right for you, read + this. + +
+
+ Building + + On Linux, install the development packages for FreeType, Cairo, and GLib. + For example, on Ubuntu / Debian, you would do: + +sudo apt-get install gcc g++ libfreetype6-dev libglib2.0-dev libcairo2-dev + + whereas on Fedora, RHEL, CentOS, and other Red Hat based systems you would do: + +sudo yum install gcc gcc-c++ freetype-devel glib2-devel cairo-devel + + or using MacPorts: + +sudo port install freetype glib2 cairo + + + + If you are using a tarball, you can now proceed to running + configure and make as with any + other standard package. That should leave you with a shared library in + src/, and a few utility programs including hb-view + and hb-shape under util/. + + + If you are bootstraping from git, you need a few more tools before you + can run autogen.sh for the first time. Namely, + pkg-config and ragel. + Again, on Ubuntu / Debian: + +sudo apt-get install autoconf automake libtool pkg-config ragel gtk-doc-tools + + and on Fedora, RHEL, CentOS: + +sudo yum install autoconf automake libtool pkgconfig ragel gtk-doc + + or using MacPorts: + +sudo port install autoconf automake libtool pkgconfig ragel gtk-doc + + +
+
diff --git a/docs/usermanual-opentype-features.xml b/docs/usermanual-opentype-features.xml new file mode 100644 index 0000000..470bab8 --- /dev/null +++ b/docs/usermanual-opentype-features.xml @@ -0,0 +1,13 @@ + + Shaping and shape plans +
+ OpenType features + + +
+
+ Plans and caching + + +
+
\ No newline at end of file diff --git a/docs/usermanual-what-is-harfbuzz.xml b/docs/usermanual-what-is-harfbuzz.xml new file mode 100644 index 0000000..3574d75 --- /dev/null +++ b/docs/usermanual-what-is-harfbuzz.xml @@ -0,0 +1,115 @@ + + What is Harfbuzz? + + Harfbuzz is a text shaping engine. It solves + the problem of selecting and positioning glyphs from a font given a + Unicode string. + +
+ Why do I need it? + + Text shaping is an integral part of preparing text for display. It + is a fairly low level operation; Harfbuzz is used directly by + graphic rendering libraries such as Pango, and the layout engines + in Firefox, LibreOffice and Chromium. Unless you are + writing one of these layout engines yourself, + you will probably not need to use Harfbuzz - normally higher level + libraries will turn text into glyphs for you. + + + However, if you are writing a layout engine + or graphics library yourself, you will need to perform text + shaping, and this is where Harfbuzz can help you. Here are some + reasons why you need it: + + + + + OpenType fonts contain a set of glyphs, indexed by glyph ID. + The glyph ID within the font does not necessarily relate to a + Unicode codepoint. For instance, some fonts have the letter + "a" as glyph ID 1. To pull the right glyph out of + the font in order to display it, you need to consult a table + within the font (the "cmap" table) which maps + Unicode codepoints to glyph IDs. Text shaping turns codepoints + into glyph IDs. + + + + + Many OpenType fonts contain ligatures: combinations of + characters which are rendered together. For instance, it's + common for the fi combination to appear in + print as the single ligature "fi". Whether you should + render text as fi or "fi" does not + depend on the input text, but on the capabilities of the font + and the level of ligature application you wish to perform. + Text shaping involves querying the font's ligature tables and + determining what substitutions should be made. + + + + + While ligatures like "fi" are typographic + refinements, some languages require such + substitutions to be made in order to display text correctly. + In Tamil, when the letter "TTA" (ட) letter is + followed by "U" (உ), the combination should appear + as the single glyph "டு". The sequence of Unicode + characters "டஉ" needs to be rendered as a single + glyph from the font - text shaping chooses the correct glyph + from the sequence of characters provided. + + + + + Similarly, each Arabic character has four different variants: + within a font, there will be glyphs for the initial, medial, + final, and isolated forms of each letter. Unicode only encodes + one codepoint per character, and so a Unicode string will not + tell you which glyph to use. Text shaping chooses the correct + form of the letter and returns the correct glyph from the font + that you need to render. + + + + + Other languages have marks and accents which need to be + rendered in certain positions around a base character. For + instance, the Moldovan language has the Cyrillic letter + "zhe" (ж) with a breve accent, like so: ӂ. Some + fonts will contain this character as an individual glyph, + whereas other fonts will not contain a zhe-with-breve glyph + but expect the rendering engine to form the character by + overlaying the two glyphs ж and ˘. Where you should draw the + combining breve depends on the height of the preceding glyph. + Again, for Arabic, the correct positioning of vowel marks + depends on the height of the character on which you are + placing the mark. Text shaping tells you whether you have a + precomposed glyph within your font or if you need to compose a + glyph yourself out of combining marks, and if so, where to + position those marks. + + + + + If this is something that you need to do, then you need a text + shaping engine: you could use Uniscribe if you are using Windows; + you could use CoreText on OS X; or you could use Harfbuzz. In the + rest of this manual, we are going to assume that you are the + implementor of a text layout engine. + +
+
+ Why is it called Harfbuzz? + + Harfbuzz began its life as text shaping code within the FreeType + project, (and you will see references to the FreeType authors + within the source code copyright declarations) but was then + abstracted out to its own project. This project is maintained by + Behdad Esfahbod, and named Harfbuzz. Originally, it was a shaping + engine for OpenType fonts - "Harfbuzz" is the Persian + for "open type". + +
+
\ No newline at end of file diff --git a/docs/version.xml b/docs/version.xml new file mode 100644 index 0000000..c04c650 --- /dev/null +++ b/docs/version.xml @@ -0,0 +1 @@ +1.2.7 diff --git a/docs/reference/version.xml.in b/docs/version.xml.in similarity index 100% rename from docs/reference/version.xml.in rename to docs/version.xml.in diff --git a/ltmain.sh b/ltmain.sh index a50a21a..a356aca 100644 --- a/ltmain.sh +++ b/ltmain.sh @@ -1,10 +1,9 @@ -#! /bin/sh -# libtool (GNU libtool) 2.4.2.418 -# Provide generalized library-building support services. +# libtool (GNU libtool) 2.4.2 # Written by Gordon Matzigkeit , 1996 -# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, +# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. @@ -24,2013 +23,881 @@ # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -PROGRAM=libtool -PACKAGE=libtool -VERSION=2.4.2.418 -package_revision=2.4.2.418 - - -## ------ ## -## Usage. ## -## ------ ## - -# Run './libtool --help' for help with using this script from the -# command line. - - -## ------------------------------- ## -## User overridable command paths. ## -## ------------------------------- ## - -# After configure completes, it has a better idea of some of the -# shell tools we need than the defaults used by the functions shared -# with bootstrap, so set those here where they can still be over- -# ridden by the user, but otherwise take precedence. - -: ${AUTOCONF="autoconf"} -: ${AUTOMAKE="automake"} - - -## -------------------------- ## -## Source external libraries. ## -## -------------------------- ## - -# Much of our low-level functionality needs to be sourced from external -# libraries, which are installed to $pkgauxdir. - -# Set a version string for this script. -scriptversion=2013-08-23.20; # UTC - -# General shell script boiler plate, and helper functions. -# Written by Gary V. Vaughan, 2004 - -# Copyright (C) 2004-2013 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. - -# As a special exception to the GNU General Public License, if you distribute -# this file as part of a program or library that is built using GNU Libtool, -# you may include this file under the same distribution terms that you use -# for the rest of that program. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, +# or obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# Please report bugs or propose patches to gary@gnu.org. - - -## ------ ## -## Usage. ## -## ------ ## - -# Evaluate this file near the top of your script to gain access to -# the functions and variables defined here: +# Usage: $progname [OPTION]... [MODE-ARG]... +# +# Provide generalized library-building support services. # -# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh +# --config show all configuration variables +# --debug enable verbose shell tracing +# -n, --dry-run display commands without modifying any files +# --features display basic configuration information and exit +# --mode=MODE use operation mode MODE +# --preserve-dup-deps don't remove duplicate dependency libraries +# --quiet, --silent don't print informational messages +# --no-quiet, --no-silent +# print informational messages (default) +# --no-warn don't display warning messages +# --tag=TAG use configuration variables from tag TAG +# -v, --verbose print more informational messages than default +# --no-verbose don't print the extra informational messages +# --version print version information +# -h, --help, --help-all print short, long, or detailed help message # -# If you need to override any of the default environment variable -# settings, do that before evaluating this file. - - -## -------------------- ## -## Shell normalisation. ## -## -------------------- ## +# MODE must be one of the following: +# +# clean remove files from the build directory +# compile compile a source file into a libtool object +# execute automatically set library path, then run a program +# finish complete the installation of libtool libraries +# install install libraries or executables +# link create a library or an executable +# uninstall remove libraries from an installed directory +# +# MODE-ARGS vary depending on the MODE. When passed as first option, +# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. +# Try `$progname --help --mode=MODE' for a more detailed description of MODE. +# +# When reporting a bug, please describe a test case to reproduce it and +# include the following information: +# +# host-triplet: $host +# shell: $SHELL +# compiler: $LTCC +# compiler flags: $LTCFLAGS +# linker: $LD (gnu? $with_gnu_ld) +# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1 +# automake: $automake_version +# autoconf: $autoconf_version +# +# Report bugs to . +# GNU libtool home page: . +# General help using GNU software: . -# Some shells need a little help to be as Bourne compatible as possible. -# Before doing anything else, make sure all that help has been provided! +PROGRAM=libtool +PACKAGE=libtool +VERSION="2.4.2 Debian-2.4.2-1.7ubuntu1" +TIMESTAMP="" +package_revision=1.3337 -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} -# NLS nuisances: We save the old values in case they are required later. -_G_user_locale= -_G_safe_locale= -for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +# NLS nuisances: We save the old values to restore during execute mode. +lt_user_locale= +lt_safe_locale= +for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do - eval "if test set = \"\${$_G_var+set}\"; then - save_$_G_var=\$$_G_var - $_G_var=C - export $_G_var - _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" - _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" + eval "if test \"\${$lt_var+set}\" = set; then + save_$lt_var=\$$lt_var + $lt_var=C + export $lt_var + lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" + lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done +LC_ALL=C +LANGUAGE=C +export LANGUAGE LC_ALL -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH +$lt_unset CDPATH -# Make sure IFS has a sensible default -sp=' ' -nl=' -' -IFS="$sp $nl" - -# There are still modern systems that have problems with 'echo' mis- -# handling backslashes, among others, so make sure $bs_echo is set to a -# command that correctly interprets backslashes. -# (this code from Autoconf 2.68) - -# Printing a long string crashes Solaris 7 /usr/bin/printf. -bs_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -bs_echo=$bs_echo$bs_echo$bs_echo$bs_echo$bs_echo -bs_echo=$bs_echo$bs_echo$bs_echo$bs_echo$bs_echo$bs_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $bs_echo`" = "X$bs_echo") 2>/dev/null; then - bs_echo='print -r --' - bs_echo_n='print -rn --' -elif (test "X`printf %s $bs_echo`" = "X$bs_echo") 2>/dev/null; then - bs_echo='printf %s\n' - bs_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $bs_echo) 2>/dev/null`" = "X-n $bs_echo"; then - bs_echo_body='eval /usr/ucb/echo -n "$1$nl"' - bs_echo_n='/usr/ucb/echo -n' - else - bs_echo_body='eval expr "X$1" : "X\\(.*\\)"' - bs_echo_n_body='eval - arg=$1; - case $arg in #( - *"$nl"*) - expr "X$arg" : "X\\(.*\\)$nl"; - arg=`expr "X$arg" : ".*$nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$nl" - ' - export bs_echo_n_body - bs_echo_n='sh -c $bs_echo_n_body bs_echo' - fi - export bs_echo_body - bs_echo='sh -c $bs_echo_body bs_echo' -fi +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" -## ------------------------------- ## -## User overridable command paths. ## -## ------------------------------- ## -# All uppercase variable names are used for environment variables. These -# variables can be overridden by the user before calling a script that -# uses them if a suitable command of that name is not already available -# in the command search PATH. : ${CP="cp -f"} -: ${ECHO="$bs_echo"} -: ${EGREP="grep -E"} -: ${FGREP="grep -F"} -: ${GREP="grep"} -: ${LN_S="ln -s"} +test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} -: ${SED="sed"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} +: ${Xsed="$SED -e 1s/^X//"} +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. -## -------------------- ## -## Useful sed snippets. ## -## -------------------- ## +exit_status=$EXIT_SUCCESS -sed_dirname='s|/[^/]*$||' -sed_basename='s|^.*/||' +# Make sure IFS has a sensible default +lt_nl=' +' +IFS=" $lt_nl" -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='s|\([`"$\\]\)|\\\1|g' +dirname="s,/[^/]*$,," +basename="s,^.*/,," -# Same as above, but do not quote variable references. -sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} # func_dirname may be replaced by extended shell implementation -# Sed substitution that turns a string into a regex matching for the -# string literally. -sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' -# Sed substitution that converts a w32 file name or path -# that contains forward slashes, into one that contains -# (escaped) backslashes. A very naive implementation. -sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - -# Re-'\' parameter expansions in output of sed_double_quote_subst that -# were '\'-ed in input to the same. If an odd number of '\' preceded a -# '$' in input to sed_double_quote_subst, that '$' was protected from -# expansion. Since each input '\' is now two '\'s, look for any number -# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. -_G_bs='\\' -_G_bs2='\\\\' -_G_bs4='\\\\\\\\' -_G_dollar='\$' -sed_double_backslash="\ - s/$_G_bs4/&\\ -/g - s/^$_G_bs2$_G_dollar/$_G_bs&/ - s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g - s/\n//g" +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "${1}" | $SED "$basename"` +} # func_basename may be replaced by extended shell implementation -## ----------------- ## -## Global variables. ## -## ----------------- ## +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi + func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` +} # func_dirname_and_basename may be replaced by extended shell implementation -# Except for the global variables explicitly listed below, the following -# functions in the '^func_' namespace, and the '^require_' namespace -# variables initialised in the 'Resource management' section, sourcing -# this file will not pollute your global namespace with anything -# else. There's no portable way to scope variables in Bourne shell -# though, so actually running these functions will sometimes place -# results into a variable named after the function, and often use -# temporary variables in the '^_G_' namespace. If you are careful to -# avoid using those namespaces casually in your sourcing script, things -# should continue to work as you expect. And, of course, you can freely -# overwrite any of the functions or variables defined here before -# calling anything to customize them. -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname may be replaced by extended shell implementation -# Allow overriding, eg assuming that you follow the convention of -# putting '$debug_cmd' at the start of all your functions, you can get -# bash to show function call trace with: -# -# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name -debug_cmd=${debug_cmd-":"} -exit_cmd=: -# By convention, finish your script with: -# -# exit $exit_status -# -# so that you can set exit_status to non-zero if you want to indicate -# something went wrong during execution without actually bailing out at -# the point of failure. -exit_status=$EXIT_SUCCESS +# These SED scripts presuppose an absolute path with a trailing slash. +pathcar='s,^/\([^/]*\).*$,\1,' +pathcdr='s,^/[^/]*,,' +removedotparts=':dotsl + s@/\./@/@g + t dotsl + s,/\.$,/,' +collapseslashes='s@/\{1,\}@/@g' +finalslash='s,/*$,/,' -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath=$0 +# func_normal_abspath PATH +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +# value returned in "$func_normal_abspath_result" +func_normal_abspath () +{ + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` + while :; do + # Processed it all yet? + if test "$func_normal_abspath_tpath" = / ; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result" ; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + +# func_relative_path SRCDIR DSTDIR +# generates a relative path from SRCDIR to DSTDIR, with a trailing +# slash if non-empty, suitable for immediately appending a filename +# without needing to append a separator. +# value returned in "$func_relative_path_result" +func_relative_path () +{ + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=${func_dirname_result} + if test "x$func_relative_path_tlibdir" = x ; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test "x$func_stripname_result" != x ; then + func_relative_path_result=${func_relative_path_result}/${func_stripname_result} + fi + + # Normalisation. If bindir is libdir, return empty string, + # else relative path ending with a slash; either way, target + # file name can be directly appended. + if test ! -z "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result/" + func_relative_path_result=$func_stripname_result + fi +} -# The name of this program. -progname=`$bs_echo "$progpath" |$SED "$sed_basename"` +# The name of this program: +func_dirname_and_basename "$progpath" +progname=$func_basename_result -# Make sure we have an absolute progpath for reexecution: +# Make sure we have an absolute path for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) - progdir=`$bs_echo "$progpath" |$SED "$sed_dirname"` + progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` - progpath=$progdir/$progname + progpath="$progdir/$progname" ;; *) - _G_IFS=$IFS + save_IFS="$IFS" IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do - IFS=$_G_IFS + IFS="$save_IFS" test -x "$progdir/$progname" && break done - IFS=$_G_IFS + IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` - progpath=$progdir/$progname + progpath="$progdir/$progname" ;; esac +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed="${SED}"' -e 1s/^X//' +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' -## ----------------- ## -## Standard options. ## -## ----------------- ## +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' -# The following options affect the operation of the functions defined -# below, and should be set appropriately depending on run-time para- -# meters passed on the command line. +# Sed substitution that converts a w32 file name or path +# which contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-`\' parameter expansions in output of double_quote_subst that were +# `\'-ed in input to the same. If an odd number of `\' preceded a '$' +# in input to double_quote_subst, that '$' was protected from expansion. +# Since each input `\' is now two `\'s, look for any number of runs of +# four `\'s followed by two `\'s and then a '$'. `\' that '$'. +bs='\\' +bs2='\\\\' +bs4='\\\\\\\\' +dollar='\$' +sed_double_backslash="\ + s/$bs4/&\\ +/g + s/^$bs2$dollar/$bs&/ + s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g + s/\n//g" +# Standard options: opt_dry_run=false +opt_help=false opt_quiet=false opt_verbose=false +opt_warning=: -# Categories 'all' and 'none' are always available. Append any others -# you will pass as the first argument to func_warning from your own -# code. -warning_categories= - -# By default, display warnings according to 'opt_warning_types'. Set -# 'warning_func' to ':' to elide all warnings, or func_fatal_error to -# treat the next displayed warning as a fatal error. -warning_func=func_warn_and_continue - -# Set to 'all' to display all warnings, 'none' to suppress all -# warnings, or a space delimited list of some subset of -# 'warning_categories' to display only the listed warnings. -opt_warning_types=all - - -## -------------------- ## -## Resource management. ## -## -------------------- ## - -# This section contains definitions for functions that each ensure a -# particular resource (a file, or a non-empty configuration variable for -# example) is available, and if appropriate to extract default values -# from pertinent package files. Call them using their associated -# 'require_*' variable to ensure that they are executed, at most, once. -# -# It's entirely deliberate that calling these functions can set -# variables that don't obey the namespace limitations obeyed by the rest -# of this file, in order that that they be as useful as possible to -# callers. - - -# require_term_colors -# ------------------- -# Allow display of bold text on terminals that support it. -require_term_colors=func_require_term_colors -func_require_term_colors () +# func_echo arg... +# Echo program name prefixed message, along with the current mode +# name if it has been set yet. +func_echo () { - $debug_cmd - - test -t 1 && { - # COLORTERM and USE_ANSI_COLORS environment variables take - # precedence, because most terminfo databases neglect to describe - # whether color sequences are supported. - test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} - - if test 1 = "$USE_ANSI_COLORS"; then - # Standard ANSI escape sequences - tc_reset='' - tc_bold=''; tc_standout='' - tc_red=''; tc_green='' - tc_blue=''; tc_cyan='' - else - # Otherwise trust the terminfo database after all. - test -n "`tput sgr0 2>/dev/null`" && { - tc_reset=`tput sgr0` - test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` - tc_standout=$tc_bold - test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` - test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` - test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` - test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` - test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` - } - fi - } - - require_term_colors=: + $ECHO "$progname: ${opt_mode+$opt_mode: }$*" } - -## ----------------- ## -## Function library. ## -## ----------------- ## - -# This section contains a variety of useful functions to call in your -# scripts. Take note of the portable wrappers for features provided by -# some modern shells, which will fall back to slower equivalents on -# less featureful shells. - - -# func_append VAR VALUE -# --------------------- -# Append VALUE onto the existing contents of VAR. - - # We should try to minimise forks, especially on Windows where they are - # unreasonably slow, so skip the feature probes when bash or zsh are - # being used: - if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then - : ${_G_HAVE_ARITH_OP="yes"} - : ${_G_HAVE_XSI_OPS="yes"} - # The += operator was introduced in bash 3.1 - case $BASH_VERSION in - [12].* | 3.0 | 3.0*) ;; - *) - : ${_G_HAVE_PLUSEQ_OP="yes"} - ;; - esac - fi - - # _G_HAVE_PLUSEQ_OP - # Can be empty, in which case the shell is probed, "yes" if += is - # useable or anything else if it does not work. - test -z "$_G_HAVE_PLUSEQ_OP" \ - && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ - && _G_HAVE_PLUSEQ_OP=yes - -if test yes = "$_G_HAVE_PLUSEQ_OP" -then - # This is an XSI compatible shell, allowing a faster implementation... - eval 'func_append () - { - $debug_cmd - - eval "$1+=\$2" - }' -else - # ...otherwise fall back to using expr, which is often a shell builtin. - func_append () - { - $debug_cmd - - eval "$1=\$$1\$2" - } -fi - - -# func_append_quoted VAR VALUE -# ---------------------------- -# Quote VALUE and append to the end of shell variable VAR, separated -# by a space. -if test yes = "$_G_HAVE_PLUSEQ_OP"; then - eval 'func_append_quoted () - { - $debug_cmd - - func_quote_for_eval "$2" - eval "$1+=\\ \$func_quote_for_eval_result" - }' -else - func_append_quoted () - { - $debug_cmd - - func_quote_for_eval "$2" - eval "$1=\$$1\\ \$func_quote_for_eval_result" - } -fi - - -# func_append_uniq VAR VALUE -# -------------------------- -# Append unique VALUE onto the existing contents of VAR, assuming -# entries are delimited by the first character of VALUE. For example: -# -# func_append_uniq options " --another-option option-argument" -# -# will only append to $options if " --another-option option-argument " -# is not already present somewhere in $options already (note spaces at -# each end implied by leading space in second argument). -func_append_uniq () +# func_verbose arg... +# Echo program name prefixed message in verbose mode only. +func_verbose () { - $debug_cmd + $opt_verbose && func_echo ${1+"$@"} - eval _G_current_value='`$bs_echo $'$1'`' - _G_delim=`expr "$2" : '\(.\)'` - - case $_G_delim$_G_current_value$_G_delim in - *"$2$_G_delim"*) ;; - *) func_append "$@" ;; - esac + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : } +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} -# func_arith TERM... -# ------------------ -# Set func_arith_result to the result of evaluating TERMs. - test -z "$_G_HAVE_ARITH_OP" \ - && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ - && _G_HAVE_ARITH_OP=yes - -if test yes = "$_G_HAVE_ARITH_OP"; then - eval 'func_arith () - { - $debug_cmd - - func_arith_result=$(( $* )) - }' -else - func_arith () - { - $debug_cmd - - func_arith_result=`expr "$@"` - } -fi - - -# func_basename FILE -# ------------------ -# Set func_basename_result to FILE with everything up to and including -# the last / stripped. -if test yes = "$_G_HAVE_XSI_OPS"; then - # If this shell supports suffix pattern removal, then use it to avoid - # forking. Hide the definitions single quotes in case the shell chokes - # on unsupported syntax... - _b='func_basename_result=${1##*/}' - _d='case $1 in - */*) func_dirname_result=${1%/*}$2 ;; - * ) func_dirname_result=$3 ;; - esac' - -else - # ...otherwise fall back to using sed. - _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' - _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` - if test "X$func_dirname_result" = "X$1"; then - func_dirname_result=$3 - else - func_append func_dirname_result "$2" - fi' -fi - -eval 'func_basename () +# func_error arg... +# Echo program name prefixed message to standard error. +func_error () { - $debug_cmd + $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 +} - '"$_b"' -}' +# func_warning arg... +# Echo program name prefixed warning message to standard error. +func_warning () +{ + $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 - -# func_dirname FILE APPEND NONDIR_REPLACEMENT -# ------------------------------------------- -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -eval 'func_dirname () -{ - $debug_cmd - - '"$_d"' -}' - - -# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT -# -------------------------------------------------------- -# Perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# For efficiency, we do not delegate to the functions above but instead -# duplicate the functionality here. -eval 'func_dirname_and_basename () -{ - $debug_cmd - - '"$_b"' - '"$_d"' -}' - - -# func_echo ARG... -# ---------------- -# Echo program name prefixed message. -func_echo () -{ - $debug_cmd - - _G_message=$* - - func_echo_IFS=$IFS - IFS=$nl - for _G_line in $_G_message; do - IFS=$func_echo_IFS - $bs_echo "$progname: $_G_line" - done - IFS=$func_echo_IFS -} - - -# func_echo_all ARG... -# -------------------- -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - - -# func_echo_infix_1 INFIX ARG... -# ------------------------------ -# Echo program name, followed by INFIX on the first line, with any -# additional lines not showing INFIX. -func_echo_infix_1 () -{ - $debug_cmd - - $require_term_colors - - _G_infix=$1; shift - _G_indent=$_G_infix - _G_prefix="$progname: $_G_infix: " - _G_message=$* - - # Strip color escape sequences before counting printable length - for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" - do - test -n "$_G_tc" && { - _G_esc_tc=`$bs_echo "$_G_tc" | sed "$sed_make_literal_regex"` - _G_indent=`$bs_echo "$_G_indent" | sed "s|$_G_esc_tc||g"` - } - done - _G_indent="$progname: "`echo "$_G_indent" | sed 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes - - func_echo_infix_1_IFS=$IFS - IFS=$nl - for _G_line in $_G_message; do - IFS=$func_echo_infix_1_IFS - $bs_echo "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 - _G_prefix=$_G_indent - done - IFS=$func_echo_infix_1_IFS -} - - -# func_error ARG... -# ----------------- -# Echo program name prefixed message to standard error. -func_error () -{ - $debug_cmd - - $require_term_colors - - func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 + # bash bug again: + : } - -# func_fatal_error ARG... -# ----------------------- +# func_fatal_error arg... # Echo program name prefixed message to standard error, and exit. func_fatal_error () { - $debug_cmd - - func_error "$*" + func_error ${1+"$@"} exit $EXIT_FAILURE } - -# func_grep EXPRESSION FILENAME -# ----------------------------- -# Check whether EXPRESSION matches any line of FILENAME, without output. -func_grep () -{ - $debug_cmd - - $GREP "$1" "$2" >/dev/null 2>&1 -} - - -# func_len STRING -# --------------- -# Set func_len_result to the length of STRING. STRING may not -# start with a hyphen. - test -z "$_G_HAVE_XSI_OPS" \ - && (eval 'x=a/b/c; - test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ - && _G_HAVE_XSI_OPS=yes - -if test yes = "$_G_HAVE_XSI_OPS"; then - eval 'func_len () - { - $debug_cmd - - func_len_result=${#1} - }' -else - func_len () - { - $debug_cmd - - func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` - } -fi - - -# func_mkdir_p DIRECTORY-PATH -# --------------------------- -# Make sure the entire path to DIRECTORY-PATH is available. -func_mkdir_p () -{ - $debug_cmd - - _G_directory_path=$1 - _G_dir_list= - - if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then - - # Protect directory names starting with '-' - case $_G_directory_path in - -*) _G_directory_path=./$_G_directory_path ;; - esac - - # While some portion of DIR does not yet exist... - while test ! -d "$_G_directory_path"; do - # ...make a list in topmost first order. Use a colon delimited - # list incase some portion of path contains whitespace. - _G_dir_list=$_G_directory_path:$_G_dir_list - - # If the last portion added has no slash in it, the list is done - case $_G_directory_path in */*) ;; *) break ;; esac - - # ...otherwise throw away the child directory and loop - _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` - done - _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` - - func_mkdir_p_IFS=$IFS; IFS=: - for _G_dir in $_G_dir_list; do - IFS=$func_mkdir_p_IFS - # mkdir can fail with a 'File exist' error if two processes - # try to create one of the directories concurrently. Don't - # stop in that case! - $MKDIR "$_G_dir" 2>/dev/null || : - done - IFS=$func_mkdir_p_IFS - - # Bail out if we (or some other process) failed to create a directory. - test -d "$_G_directory_path" || \ - func_fatal_error "Failed to create '$1'" - fi -} - - -# func_mktempdir [BASENAME] -# ------------------------- -# Make a temporary directory that won't clash with other running -# libtool processes, and avoids race conditions if possible. If -# given, BASENAME is the basename for that directory. -func_mktempdir () -{ - $debug_cmd - - _G_template=${TMPDIR-/tmp}/${1-$progname} - - if test : = "$opt_dry_run"; then - # Return a directory name, but don't create it in dry-run mode - _G_tmpdir=$_G_template-$$ - else - - # If mktemp works, use that first and foremost - _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` - - if test ! -d "$_G_tmpdir"; then - # Failing that, at least try and use $RANDOM to avoid a race - _G_tmpdir=$_G_template-${RANDOM-0}$$ - - func_mktempdir_umask=`umask` - umask 0077 - $MKDIR "$_G_tmpdir" - umask $func_mktempdir_umask - fi - - # If we're not in dry-run mode, bomb out on failure - test -d "$_G_tmpdir" || \ - func_fatal_error "cannot create temporary directory '$_G_tmpdir'" - fi - - $ECHO "$_G_tmpdir" -} - - -# func_normal_abspath PATH -# ------------------------ -# Remove doubled-up and trailing slashes, "." path components, -# and cancel out any ".." path components in PATH after making -# it an absolute path. -func_normal_abspath () -{ - $debug_cmd - - # These SED scripts presuppose an absolute path with a trailing slash. - _G_pathcar='s|^/\([^/]*\).*$|\1|' - _G_pathcdr='s|^/[^/]*||' - _G_removedotparts=':dotsl - s|/\./|/|g - t dotsl - s|/\.$|/|' - _G_collapseslashes='s|/\{1,\}|/|g' - _G_finalslash='s|/*$|/|' - - # Start from root dir and reassemble the path. - func_normal_abspath_result= - func_normal_abspath_tpath=$1 - func_normal_abspath_altnamespace= - case $func_normal_abspath_tpath in - "") - # Empty path, that just means $cwd. - func_stripname '' '/' "`pwd`" - func_normal_abspath_result=$func_stripname_result - return - ;; - # The next three entries are used to spot a run of precisely - # two leading slashes without using negated character classes; - # we take advantage of case's first-match behaviour. - ///*) - # Unusual form of absolute path, do nothing. - ;; - //*) - # Not necessarily an ordinary path; POSIX reserves leading '//' - # and for example Cygwin uses it to access remote file shares - # over CIFS/SMB, so we conserve a leading double slash if found. - func_normal_abspath_altnamespace=/ - ;; - /*) - # Absolute path, do nothing. - ;; - *) - # Relative path, prepend $cwd. - func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath - ;; - esac - - # Cancel out all the simple stuff to save iterations. We also want - # the path to end with a slash for ease of parsing, so make sure - # there is one (and only one) here. - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` - while :; do - # Processed it all yet? - if test / = "$func_normal_abspath_tpath"; then - # If we ascended to the root using ".." the result may be empty now. - if test -z "$func_normal_abspath_result"; then - func_normal_abspath_result=/ - fi - break - fi - func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$_G_pathcar"` - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$_G_pathcdr"` - # Figure out what to do with it - case $func_normal_abspath_tcomponent in - "") - # Trailing empty path component, ignore it. - ;; - ..) - # Parent dir; strip last assembled component from result. - func_dirname "$func_normal_abspath_result" - func_normal_abspath_result=$func_dirname_result - ;; - *) - # Actual path component, append it. - func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" - ;; - esac - done - # Restore leading double-slash if one was found on entry. - func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result -} - - -# func_notquiet ARG... -# -------------------- -# Echo program name prefixed message only when not in quiet mode. -func_notquiet () -{ - $debug_cmd - - $opt_quiet || func_echo ${1+"$@"} - - # A bug in bash halts the script if the last line of a function - # fails when set -e is in force, so we need another command to - # work around that: - : -} - - -# func_relative_path SRCDIR DSTDIR -# -------------------------------- -# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. -func_relative_path () -{ - $debug_cmd - - func_relative_path_result= - func_normal_abspath "$1" - func_relative_path_tlibdir=$func_normal_abspath_result - func_normal_abspath "$2" - func_relative_path_tbindir=$func_normal_abspath_result - - # Ascend the tree starting from libdir - while :; do - # check if we have found a prefix of bindir - case $func_relative_path_tbindir in - $func_relative_path_tlibdir) - # found an exact match - func_relative_path_tcancelled= - break - ;; - $func_relative_path_tlibdir*) - # found a matching prefix - func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" - func_relative_path_tcancelled=$func_stripname_result - if test -z "$func_relative_path_result"; then - func_relative_path_result=. - fi - break - ;; - *) - func_dirname $func_relative_path_tlibdir - func_relative_path_tlibdir=$func_dirname_result - if test -z "$func_relative_path_tlibdir"; then - # Have to descend all the way to the root! - func_relative_path_result=../$func_relative_path_result - func_relative_path_tcancelled=$func_relative_path_tbindir - break - fi - func_relative_path_result=../$func_relative_path_result - ;; - esac - done - - # Now calculate path; take care to avoid doubling-up slashes. - func_stripname '' '/' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - func_stripname '/' '/' "$func_relative_path_tcancelled" - if test -n "$func_stripname_result"; then - func_append func_relative_path_result "/$func_stripname_result" - fi - - # Normalisation. If bindir is libdir, return '.' else relative path. - if test -n "$func_relative_path_result"; then - func_stripname './' '' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - fi - - test -n "$func_relative_path_result" || func_relative_path_result=. - - : -} - - -# func_quote_for_eval ARG... -# -------------------------- -# Aesthetically quote ARGs to be evaled later. -# This function returns two values: -# i) func_quote_for_eval_result -# double-quoted, suitable for a subsequent eval -# ii) func_quote_for_eval_unquoted_result -# has all characters that are still active within double -# quotes backslashified. -func_quote_for_eval () -{ - $debug_cmd - - func_quote_for_eval_unquoted_result= - func_quote_for_eval_result= - while test 0 -lt $#; do - case $1 in - *[\\\`\"\$]*) - _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; - *) - _G_unquoted_arg=$1 ;; - esac - if test -n "$func_quote_for_eval_unquoted_result"; then - func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" - else - func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" - fi - - case $_G_unquoted_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and variable expansion - # for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - _G_quoted_arg=\"$_G_unquoted_arg\" - ;; - *) - _G_quoted_arg=$_G_unquoted_arg - ;; - esac - - if test -n "$func_quote_for_eval_result"; then - func_append func_quote_for_eval_result " $_G_quoted_arg" - else - func_append func_quote_for_eval_result "$_G_quoted_arg" - fi - shift - done -} - - -# func_quote_for_expand ARG -# ------------------------- -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () -{ - $debug_cmd - - case $1 in - *[\\\`\"]*) - _G_arg=`$ECHO "$1" | $SED \ - -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; - *) - _G_arg=$1 ;; - esac - - case $_G_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - _G_arg=\"$_G_arg\" - ;; - esac - - func_quote_for_expand_result=$_G_arg -} - - -# func_stripname PREFIX SUFFIX NAME -# --------------------------------- -# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -if test yes = "$_G_HAVE_XSI_OPS"; then - eval 'func_stripname () - { - $debug_cmd - - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary variable first. - func_stripname_result=$3 - func_stripname_result=${func_stripname_result#"$1"} - func_stripname_result=${func_stripname_result%"$2"} - }' -else - func_stripname () - { - $debug_cmd - - case $2 in - .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; - *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; - esac - } -fi - - -# func_show_eval CMD [FAIL_EXP] -# ----------------------------- -# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. -func_show_eval () -{ - $debug_cmd - - _G_cmd=$1 - _G_fail_exp=${2-':'} - - func_quote_for_expand "$_G_cmd" - eval "func_notquiet $func_quote_for_expand_result" - - $opt_dry_run || { - eval "$_G_cmd" - _G_status=$? - if test 0 -ne "$_G_status"; then - eval "(exit $_G_status); $_G_fail_exp" - fi - } -} - - -# func_show_eval_locale CMD [FAIL_EXP] -# ------------------------------------ -# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. Use the saved locale for evaluation. -func_show_eval_locale () -{ - $debug_cmd - - _G_cmd=$1 - _G_fail_exp=${2-':'} - - $opt_quiet || { - func_quote_for_expand "$_G_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - $opt_dry_run || { - eval "$_G_user_locale - $_G_cmd" - _G_status=$? - eval "$_G_safe_locale" - if test 0 -ne "$_G_status"; then - eval "(exit $_G_status); $_G_fail_exp" - fi - } -} - - -# func_tr_sh -# ---------- -# Turn $1 into a string suitable for a shell variable name. -# Result is stored in $func_tr_sh_result. All characters -# not in the set a-zA-Z0-9_ are replaced with '_'. Further, -# if $1 begins with a digit, a '_' is prepended as well. -func_tr_sh () -{ - $debug_cmd - - case $1 in - [0-9]* | *[!a-zA-Z0-9_]*) - func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` - ;; - * ) - func_tr_sh_result=$1 - ;; - esac -} - - -# func_verbose ARG... -# ------------------- -# Echo program name prefixed message in verbose mode only. -func_verbose () -{ - $debug_cmd - - $opt_verbose && func_echo "$*" - - : -} - - -# func_warn_and_continue ARG... -# ----------------------------- -# Echo program name prefixed warning message to standard error. -func_warn_and_continue () -{ - $debug_cmd - - $require_term_colors - - func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 -} - - -# func_warning CATEGORY ARG... -# ---------------------------- -# Echo program name prefixed warning message to standard error. Warning -# messages can be filtered according to CATEGORY, where this function -# elides messages where CATEGORY is not listed in the global variable -# 'opt_warning_types'. -func_warning () -{ - $debug_cmd - - # CATEGORY must be in the warning_categories list! - case " $warning_categories " in - *" $1 "*) ;; - *) func_internal_error "invalid warning category '$1'" ;; - esac - - _G_category=$1 - shift - - case " $opt_warning_types " in - *" $_G_category "*) $warning_func ${1+"$@"} ;; - esac -} - - -# func_sort_ver VER1 VER2 -# ----------------------- -# 'sort -V' is not generally available. -# Note this deviates from the version comparison in automake -# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a -# but this should suffice as we won't be specifying old -# version formats or redundant trailing .0 in bootstrap.conf. -# If we did want full compatibility then we should probably -# use m4_version_compare from autoconf. -func_sort_ver () -{ - $debug_cmd - - ver1=$1 - ver2=$2 - - # Split on '.' and compare each component. - i=1 - while :; do - p1=`echo "$ver1" |cut -d. -f$i` - p2=`echo "$ver2" |cut -d. -f$i` - if test ! "$p1"; then - echo "$1 $2" - break - elif test ! "$p2"; then - echo "$2 $1" - break - elif test ! "$p1" = "$p2"; then - if test "$p1" -gt "$p2" 2>/dev/null; then # numeric comparison - echo "$2 $1" - elif test "$p2" -gt "$p1" 2>/dev/null; then # numeric comparison - echo "$1 $2" - else # numeric, then lexicographic comparison - lp=`printf "$p1\n$p2\n" |sort -n |tail -n1` - if test "$lp" = "$p2"; then - echo "$1 $2" - else - echo "$2 $1" - fi - fi - break - fi - i=`expr $i + 1` - done -} - - -# Local variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" -# time-stamp-time-zone: "UTC" -# End: -#! /bin/sh - -# Set a version string for this script. -scriptversion=2012-10-21.11; # UTC - -# A portable, pluggable option parser for Bourne shell. -# Written by Gary V. Vaughan, 2010 - -# Copyright (C) 2010-2013 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# Please report bugs or propose patches to gary@gnu.org. - - -## ------ ## -## Usage. ## -## ------ ## - -# This file is a library for parsing options in your shell scripts along -# with assorted other useful supporting features that you can make use -# of too. -# -# For the simplest scripts you might need only: -# -# #!/bin/sh -# . relative/path/to/funclib.sh -# . relative/path/to/options-parser -# scriptversion=1.0 -# func_options ${1+"$@"} -# eval set dummy "$func_options_result"; shift -# ...rest of your script... -# -# In order for the '--version' option to work, you will need to have a -# suitably formatted comment like the one at the top of this file -# starting with '# Written by ' and ending with '# warranty; '. -# -# For '-h' and '--help' to work, you will also need a one line -# description of your script's purpose in a comment directly above the -# '# Written by ' line, like the one at the top of this file. -# -# The default options also support '--debug', which will turn on shell -# execution tracing (see the comment above debug_cmd below for another -# use), and '--verbose' and the func_verbose function to allow your script -# to display verbose messages only when your user has specified -# '--verbose'. -# -# After sourcing this file, you can plug processing for additional -# options by amending the variables from the 'Configuration' section -# below, and following the instructions in the 'Option parsing' -# section further down. - -## -------------- ## -## Configuration. ## -## -------------- ## - -# You should override these variables in your script after sourcing this -# file so that they reflect the customisations you have added to the -# option parser. - -# The usage line for option parsing errors and the start of '-h' and -# '--help' output messages. You can embed shell variables for delayed -# expansion at the time the message is displayed, but you will need to -# quote other shell meta-characters carefully to prevent them being -# expanded when the contents are evaled. -usage='$progpath [OPTION]...' - -# Short help message in response to '-h' and '--help'. Add to this or -# override it after sourcing this library to reflect the full set of -# options your script accepts. -usage_message="\ - --debug enable verbose shell tracing - -W, --warnings=CATEGORY - report the warnings falling in CATEGORY [all] - -v, --verbose verbosely report processing - --version print version information and exit - -h, --help print short or long help message and exit -" - -# Additional text appended to 'usage_message' in response to '--help'. -long_help_message=" -Warning categories include: - 'all' show all warnings - 'none' turn off all the warnings - 'error' warnings are treated as fatal errors" - -# Help message printed before fatal option parsing errors. -fatal_help="Try '\$progname --help' for more information." - - - -## ------------------------- ## -## Hook function management. ## -## ------------------------- ## - -# This section contains functions for adding, removing, and running hooks -# to the main code. A hook is just a named list of of function, that can -# be run in order later on. - -# func_hookable FUNC_NAME -# ----------------------- -# Declare that FUNC_NAME will run hooks added with -# 'func_add_hook FUNC_NAME ...'. -func_hookable () -{ - $debug_cmd - - func_append hookable_fns " $1" -} - - -# func_add_hook FUNC_NAME HOOK_FUNC -# --------------------------------- -# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must -# first have been declared "hookable" by a call to 'func_hookable'. -func_add_hook () -{ - $debug_cmd - - case " $hookable_fns " in - *" $1 "*) ;; - *) func_fatal_error "'$1' does not accept hook functions." ;; - esac - - eval func_append ${1}_hooks '" $2"' -} - - -# func_remove_hook FUNC_NAME HOOK_FUNC -# ------------------------------------ -# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. -func_remove_hook () -{ - $debug_cmd - - eval ${1}_hooks='`$bs_echo "\$'$1'_hooks" |$SED "s| '$2'||"`' -} - - -# func_run_hooks FUNC_NAME [ARG]... -# --------------------------------- -# Run all hook functions registered to FUNC_NAME. -# It is assumed that the list of hook functions contains nothing more -# than a whitespace-delimited list of legal shell function names, and -# no effort is wasted trying to catch shell meta-characters or preserve -# whitespace. -func_run_hooks () -{ - $debug_cmd - - case " $hookable_fns " in - *" $1 "*) ;; - *) func_fatal_error "'$1' does not support hook funcions.n" ;; - esac - - eval _G_hook_fns=\$$1_hooks; shift - - for _G_hook in $_G_hook_fns; do - eval $_G_hook '"$@"' - - # store returned options list back into positional - # parameters for next 'cmd' execution. - eval _G_hook_result=\$${_G_hook}_result - eval set dummy "$_G_hook_result"; shift - done - - func_quote_for_eval ${1+"$@"} - func_run_hooks_result=$func_quote_for_eval_result -} - - - -## --------------- ## -## Option parsing. ## -## --------------- ## - -# In order to add your own option parsing hooks, you must accept the -# full positional parameter list in your hook function, remove any -# options that you action, and then pass back the remaining unprocessed -# options in '_result', escaped suitably for -# 'eval'. Like this: -# -# my_options_prep () -# { -# $debug_cmd -# -# # Extend the existing usage message. -# usage_message=$usage_message' -# -s, --silent don'\''t print informational messages -# ' -# -# func_quote_for_eval ${1+"$@"} -# my_options_prep_result=$func_quote_for_eval_result -# } -# func_add_hook func_options_prep my_options_prep -# -# -# my_silent_option () -# { -# $debug_cmd -# -# # Note that for efficiency, we parse as many options as we can -# # recognise in a loop before passing the remainder back to the -# # caller on the first unrecognised argument we encounter. -# while test $# -gt 0; do -# opt=$1; shift -# case $opt in -# --silent|-s) opt_silent=: ;; -# # Separate non-argument short options: -# -s*) func_split_short_opt "$_G_opt" -# set dummy "$func_split_short_opt_name" \ -# "-$func_split_short_opt_arg" ${1+"$@"} -# shift -# ;; -# *) set dummy "$_G_opt" "$*"; shift; break ;; -# esac -# done -# -# func_quote_for_eval ${1+"$@"} -# my_silent_option_result=$func_quote_for_eval_result -# } -# func_add_hook func_parse_options my_silent_option -# -# -# my_option_validation () -# { -# $debug_cmd -# -# $opt_silent && $opt_verbose && func_fatal_help "\ -# '--silent' and '--verbose' options are mutually exclusive." -# -# func_quote_for_eval ${1+"$@"} -# my_option_validation_result=$func_quote_for_eval_result -# } -# func_add_hook func_validate_options my_option_validation -# -# You'll alse need to manually amend $usage_message to reflect the extra -# options you parse. It's preferable to append if you can, so that -# multiple option parsing hooks can be added safely. - - -# func_options [ARG]... -# --------------------- -# All the functions called inside func_options are hookable. See the -# individual implementations for details. -func_hookable func_options -func_options () -{ - $debug_cmd - - func_options_prep ${1+"$@"} - eval func_parse_options \ - ${func_options_prep_result+"$func_options_prep_result"} - eval func_validate_options \ - ${func_parse_options_result+"$func_parse_options_result"} - - eval func_run_hooks func_options \ - ${func_validate_options_result+"$func_validate_options_result"} - - # save modified positional parameters for caller - func_options_result=$func_run_hooks_result -} - - -# func_options_prep [ARG]... -# -------------------------- -# All initialisations required before starting the option parse loop. -# Note that when calling hook functions, we pass through the list of -# positional parameters. If a hook function modifies that list, and -# needs to propogate that back to rest of this script, then the complete -# modified list must be put in 'func_run_hooks_result' before -# returning. -func_hookable func_options_prep -func_options_prep () +# func_fatal_help arg... +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () { - $debug_cmd - - # Option defaults: - opt_verbose=false - opt_warning_types= + func_error ${1+"$@"} + func_fatal_error "$help" +} +help="Try \`$progname --help' for more information." ## default - func_run_hooks func_options_prep ${1+"$@"} - # save modified positional parameters for caller - func_options_prep_result=$func_run_hooks_result +# func_grep expression filename +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $GREP "$1" "$2" >/dev/null 2>&1 } -# func_parse_options [ARG]... -# --------------------------- -# The main option parsing loop. -func_hookable func_parse_options -func_parse_options () +# func_mkdir_p directory-path +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () { - $debug_cmd + my_directory_path="$1" + my_dir_list= - func_parse_options_result= + if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then - # this just eases exit handling - while test $# -gt 0; do - # Defer to hook functions for initial option parsing, so they - # get priority in the event of reusing an option name. - func_run_hooks func_parse_options ${1+"$@"} + # Protect directory names starting with `-' + case $my_directory_path in + -*) my_directory_path="./$my_directory_path" ;; + esac - # Adjust func_parse_options positional parameters to match - eval set dummy "$func_run_hooks_result"; shift + # While some portion of DIR does not yet exist... + while test ! -d "$my_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + my_dir_list="$my_directory_path:$my_dir_list" - # Break out of the loop if we already parsed every option. - test $# -gt 0 || break + # If the last portion added has no slash in it, the list is done + case $my_directory_path in */*) ;; *) break ;; esac - _G_opt=$1 - shift - case $_G_opt in - --debug|-x) debug_cmd='set -x' - func_echo "enabling shell trace mode" - $debug_cmd - ;; - - --no-warnings|--no-warning|--no-warn) - set dummy --warnings none ${1+"$@"} - shift - ;; + # ...otherwise throw away the child directory and loop + my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` + done + my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` - --warnings|--warning|-W) - test $# = 0 && func_missing_arg $_G_opt && break - case " $warning_categories $1" in - *" $1 "*) - # trailing space prevents matching last $1 above - func_append_uniq opt_warning_types " $1" - ;; - *all) - opt_warning_types=$warning_categories - ;; - *none) - opt_warning_types=none - warning_func=: - ;; - *error) - opt_warning_types=$warning_categories - warning_func=func_fatal_error - ;; - *) - func_fatal_error \ - "unsupported warning category: '$1'" - ;; - esac - shift - ;; - - --verbose|-v) opt_verbose=: ;; - --version) func_version ;; - -\?|-h) func_usage ;; - --help) func_help ;; - - # Separate optargs to long options (plugins may need this): - --*=*) func_split_equals "$_G_opt" - set dummy "$func_split_equals_lhs" \ - "$func_split_equals_rhs" ${1+"$@"} - shift - ;; - - # Separate optargs to short options: - -W*) - func_split_short_opt "$_G_opt" - set dummy "$func_split_short_opt_name" \ - "$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - # Separate non-argument short options: - -\?*|-h*|-v*|-x*) - func_split_short_opt "$_G_opt" - set dummy "$func_split_short_opt_name" \ - "-$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - --) break ;; - -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; - *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; - esac - done + save_mkdir_p_IFS="$IFS"; IFS=':' + for my_dir in $my_dir_list; do + IFS="$save_mkdir_p_IFS" + # mkdir can fail with a `File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$my_dir" 2>/dev/null || : + done + IFS="$save_mkdir_p_IFS" - # save modified positional parameters for caller - func_quote_for_eval ${1+"$@"} - func_parse_options_result=$func_quote_for_eval_result + # Bail out if we (or some other process) failed to create a directory. + test -d "$my_directory_path" || \ + func_fatal_error "Failed to create \`$1'" + fi } -# func_validate_options [ARG]... -# ------------------------------ -# Perform any sanity checks on option settings and/or unconsumed -# arguments. -func_hookable func_validate_options -func_validate_options () +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () { - $debug_cmd + my_template="${TMPDIR-/tmp}/${1-$progname}" - # Display all warnings if -W was not given. - test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" - - func_run_hooks func_validate_options ${1+"$@"} - - # Bail if the options were screwed! - $exit_cmd $EXIT_FAILURE + if test "$opt_dry_run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else - # save modified positional parameters for caller - func_validate_options_result=$func_run_hooks_result -} + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + save_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$my_tmpdir" + umask $save_mktempdir_umask + fi -## ------------------## -## Helper functions. ## -## ------------------## + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || \ + func_fatal_error "cannot create temporary directory \`$my_tmpdir'" + fi -# This section contains the helper functions used by the rest of the -# hookable option parser framework in ascii-betical order. + $ECHO "$my_tmpdir" +} -# func_fatal_help ARG... -# ---------------------- -# Echo program name prefixed message to standard error, followed by -# a help hint, and exit. -func_fatal_help () +# func_quote_for_eval arg +# Aesthetically quote ARG to be evaled later. +# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT +# is double-quoted, suitable for a subsequent eval, whereas +# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters +# which are still active within double quotes backslashified. +func_quote_for_eval () { - $debug_cmd + case $1 in + *[\\\`\"\$]*) + func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; + *) + func_quote_for_eval_unquoted_result="$1" ;; + esac - eval \$bs_echo \""Usage: $usage"\" - eval \$bs_echo \""$fatal_help"\" - func_error ${1+"$@"} - exit $EXIT_FAILURE + case $func_quote_for_eval_unquoted_result in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and and variable + # expansion for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" + ;; + *) + func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" + esac } -# func_help -# --------- -# Echo long help message to standard output and exit. -func_help () +# func_quote_for_expand arg +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () { - $debug_cmd + case $1 in + *[\\\`\"]*) + my_arg=`$ECHO "$1" | $SED \ + -e "$double_quote_subst" -e "$sed_double_backslash"` ;; + *) + my_arg="$1" ;; + esac + + case $my_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + my_arg="\"$my_arg\"" + ;; + esac - func_usage_message - $bs_echo "$long_help_message" - exit 0 + func_quote_for_expand_result="$my_arg" } -# func_missing_arg ARGNAME -# ------------------------ -# Echo program name prefixed message to standard error and set global -# exit_cmd. -func_missing_arg () +# func_show_eval cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () { - $debug_cmd - - func_error "Missing argument for '$1'." - exit_cmd=exit -} + my_cmd="$1" + my_fail_exp="${2-:}" + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } -# func_split_equals STRING -# ------------------------ -# Set func_split_equals_lhs and func_split_equals_rhs shell variables after -# splitting STRING at the '=' sign. -test -z "$_G_HAVE_XSI_OPS" \ - && (eval 'x=a/b/c; - test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ - && _G_HAVE_XSI_OPS=yes + if ${opt_dry_run-false}; then :; else + eval "$my_cmd" + my_status=$? + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} -if test yes = "$_G_HAVE_XSI_OPS" -then - # This is an XSI compatible shell, allowing a faster implementation... - eval 'func_split_equals () - { - $debug_cmd - func_split_equals_lhs=${1%%=*} - func_split_equals_rhs=${1#*=} - test "x$func_split_equals_lhs" = "x$1" \ - && func_split_equals_rhs= - }' -else - # ...otherwise fall back to using expr, which is often a shell builtin. - func_split_equals () - { - $debug_cmd +# func_show_eval_locale cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + my_cmd="$1" + my_fail_exp="${2-:}" - func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` - func_split_equals_rhs= - test "x$func_split_equals_lhs" = "x$1" \ - || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` - } -fi #func_split_equals + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + if ${opt_dry_run-false}; then :; else + eval "$lt_user_locale + $my_cmd" + my_status=$? + eval "$lt_safe_locale" + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} -# func_split_short_opt SHORTOPT -# ----------------------------- -# Set func_split_short_opt_name and func_split_short_opt_arg shell -# variables after splitting SHORTOPT after the 2nd character. -if test yes = "$_G_HAVE_XSI_OPS" -then - # This is an XSI compatible shell, allowing a faster implementation... - eval 'func_split_short_opt () - { - $debug_cmd +# func_tr_sh +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} - func_split_short_opt_arg=${1#??} - func_split_short_opt_name=${1%"$func_split_short_opt_arg"} - }' -else - # ...otherwise fall back to using expr, which is often a shell builtin. - func_split_short_opt () - { - $debug_cmd - func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` - func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` - } -fi #func_split_short_opt +# func_version +# Echo version message to standard output and exit. +func_version () +{ + $opt_debug + $SED -n '/(C)/!b go + :more + /\./!{ + N + s/\n# / / + b more + } + :go + /^# '$PROGRAM' (GNU /,/# warranty; / { + s/^# // + s/^# *$// + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ + p + }' < "$progpath" + exit $? +} # func_usage -# ---------- # Echo short help message to standard output and exit. func_usage () { - $debug_cmd + $opt_debug - func_usage_message - $bs_echo "Run '$progname --help |${PAGER-more}' for full usage" - exit 0 + $SED -n '/^# Usage:/,/^# *.*--help/ { + s/^# // + s/^# *$// + s/\$progname/'$progname'/ + p + }' < "$progpath" + echo + $ECHO "run \`$progname --help | more' for full usage" + exit $? } - -# func_usage_message -# ------------------ -# Echo short help message to standard output. -func_usage_message () +# func_help [NOEXIT] +# Echo long help message to standard output and exit, +# unless 'noexit' is passed as argument. +func_help () { - $debug_cmd - - eval \$bs_echo \""Usage: $usage"\" - echo - $SED -n 's|^# || - /^Written by/{ - x;p;x - } - h - /^Written by/q' < "$progpath" - echo - eval \$bs_echo \""$usage_message"\" + $opt_debug + + $SED -n '/^# Usage:/,/# Report bugs to/ { + :print + s/^# // + s/^# *$// + s*\$progname*'$progname'* + s*\$host*'"$host"'* + s*\$SHELL*'"$SHELL"'* + s*\$LTCC*'"$LTCC"'* + s*\$LTCFLAGS*'"$LTCFLAGS"'* + s*\$LD*'"$LD"'* + s/\$with_gnu_ld/'"$with_gnu_ld"'/ + s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ + s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ + p + d + } + /^# .* home page:/b print + /^# General help using/b print + ' < "$progpath" + ret=$? + if test -z "$1"; then + exit $ret + fi } - -# func_version -# ------------ -# Echo version message to standard output and exit. -func_version () +# func_missing_arg argname +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () { - $debug_cmd - - printf '%s\n' "$progname $scriptversion" - $SED -n '/^##/q - /(C)/!b go - :more - /\./!{ - N - s|\n# | | - b more - } - :go - /^# Written by /,/# warranty; / { - s|^# || - s|^# *$|| - s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| - p - } - /^# Written by / { - s|^# || - p - } - /^warranty; /q' < "$progpath" + $opt_debug - exit $? + func_error "missing argument for $1." + exit_cmd=exit } -# Local variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" -# time-stamp-time-zone: "UTC" -# End: +# func_split_short_opt shortopt +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +func_split_short_opt () +{ + my_sed_short_opt='1s/^\(..\).*$/\1/;q' + my_sed_short_rest='1s/^..\(.*\)$/\1/;q' -# Set a version string. -scriptversion='(GNU libtool) 2.4.2.418' + func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` + func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` +} # func_split_short_opt may be replaced by extended shell implementation -# func_echo ARG... -# ---------------- -# Libtool also displays the current mode in messages, so override -# funclib.sh func_echo with this custom definition. -func_echo () +# func_split_long_opt longopt +# Set func_split_long_opt_name and func_split_long_opt_arg shell +# variables after splitting LONGOPT at the `=' sign. +func_split_long_opt () { - $debug_cmd - - _G_message=$* + my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' + my_sed_long_arg='1s/^--[^=]*=//' - func_echo_IFS=$IFS - IFS=$nl - for _G_line in $_G_message; do - IFS=$func_echo_IFS - $bs_echo "$progname${opt_mode+: $opt_mode}: $_G_line" - done - IFS=$func_echo_IFS -} + func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` + func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` +} # func_split_long_opt may be replaced by extended shell implementation +exit_cmd=: -# func_warning ARG... -# ------------------- -# Libtool warnings are not categorized, so override funclib.sh -# func_warning with this simpler definition. -func_warning () -{ - $debug_cmd - $warning_func ${1+"$@"} -} -## ---------------- ## -## Options parsing. ## -## ---------------- ## - -# Hook in the functions to make sure our own options are parsed during -# the option parsing loop. - -usage='$progpath [OPTION]... [MODE-ARG]...' - -# Short help message in response to '-h'. -usage_message="Options: - --config show all configuration variables - --debug enable verbose shell tracing - -n, --dry-run display commands without modifying any files - --features display basic configuration information and exit - --mode=MODE use operation mode MODE - --no-warnings equivalent to '-Wnone' - --preserve-dup-deps don't remove duplicate dependency libraries - --quiet, --silent don't print informational messages - --tag=TAG use configuration variables from tag TAG - -v, --verbose print more informational messages than default - --version print version information - -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] - -h, --help, --help-all print short, long, or detailed help message -" -# Additional text appended to 'usage_message' in response to '--help'. -long_help_message=$long_help_message" +magic="%%%MAGIC variable%%%" +magic_exe="%%%MAGIC EXE variable%%%" -MODE must be one of the following: +# Global variables. +nonopt= +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" +extracted_archives= +extracted_serial=0 - clean remove files from the build directory - compile compile a source file into a libtool object - execute automatically set library path, then run a program - finish complete the installation of libtool libraries - install install libraries or executables - link create a library or an executable - uninstall remove libraries from an installed directory +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= -MODE-ARGS vary depending on the MODE. When passed as first option, -'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. -Try '$progname --help --mode=MODE' for a more detailed description of MODE. +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "${1}=\$${1}\${2}" +} # func_append may be replaced by extended shell implementation -When reporting a bug, please describe a test case to reproduce it and -include the following information: +# func_append_quoted var value +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +func_append_quoted () +{ + func_quote_for_eval "${2}" + eval "${1}=\$${1}\\ \$func_quote_for_eval_result" +} # func_append_quoted may be replaced by extended shell implementation - host-triplet: $host - shell: $SHELL - compiler: $LTCC - compiler flags: $LTCFLAGS - linker: $LD (gnu? $with_gnu_ld) - version: $progname (GNU libtool) 2.4.2.418 - automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` - autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` -Report bugs to . -GNU libtool home page: . -General help using GNU software: ." +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "${@}"` +} # func_arith may be replaced by extended shell implementation -# func_lo2o OBJECT-NAME -# --------------------- -# Transform OBJECT-NAME from a '.lo' suffix to the platform specific -# object suffix. +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` +} # func_len may be replaced by extended shell implementation -lo2o=s/\\.lo\$/.$objext/ -o2lo=s/\\.$objext\$/.lo/ -if test yes = "$_G_HAVE_XSI_OPS"; then - eval 'func_lo2o () - { - case $1 in - *.lo) func_lo2o_result=${1%.lo}.$objext ;; - * ) func_lo2o_result=$1 ;; - esac - }' +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` +} # func_lo2o may be replaced by extended shell implementation - # func_xform LIBOBJ-OR-SOURCE - # --------------------------- - # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) - # suffix to a '.lo' libtool-object suffix. - eval 'func_xform () - { - func_xform_result=${1%.*}.lo - }' -else - # ...otherwise fall back to using sed. - func_lo2o () - { - func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` - } - func_xform () - { - func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` - } -fi +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` +} # func_xform may be replaced by extended shell implementation -# func_fatal_configuration ARG... -# ------------------------------- +# func_fatal_configuration arg... # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { - func__fatal_error ${1+"$@"} \ - "See the $PACKAGE documentation for more information." \ - "Fatal configuration error." + func_error ${1+"$@"} + func_error "See the $PACKAGE documentation for more information." + func_fatal_error "Fatal configuration error." } # func_config -# ----------- # Display the configuration for all the tags in this script. func_config () { @@ -2048,19 +915,17 @@ func_config () exit $? } - # func_features -# ------------- # Display the features supported by this script. func_features () { echo "host: $host" - if test yes = "$build_libtool_libs"; then + if test "$build_libtool_libs" = yes; then echo "enable shared libraries" else echo "disable shared libraries" fi - if test yes = "$build_old_libs"; then + if test "$build_old_libs" = yes; then echo "enable static libraries" else echo "disable static libraries" @@ -2069,325 +934,298 @@ func_features () exit $? } - -# func_enable_tag TAGNAME -# ----------------------- +# func_enable_tag tagname # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { - # Global variable: - tagname=$1 + # Global variable: + tagname="$1" - re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" - re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" - sed_extractcf=/$re_begincf/,/$re_endcf/p + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf="/$re_begincf/,/$re_endcf/p" - # Validate tagname. - case $tagname in - *[!-_A-Za-z0-9,/]*) - func_fatal_error "invalid tag name: $tagname" - ;; - esac + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac - # Don't test for the "default" C tag, as we know it's - # there but not specially marked. - case $tagname in - CC) ;; + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; *) - if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then - taglist="$taglist $tagname" - - # Evaluate the configuration. Be careful to quote the path - # and the sed script, to avoid splitting on whitespace, but - # also don't use non-portable quotes within backquotes within - # quotes we have to do it in 2 steps: - extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` - eval "$extractedcf" - else - func_error "ignoring unknown tag $tagname" - fi - ;; - esac + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac } - # func_check_version_match -# ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { - if test "$package_revision" != "$macro_revision"; then - if test "$VERSION" != "$macro_version"; then - if test -z "$macro_version"; then - cat >&2 <<_LT_EOF + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF - else - cat >&2 <<_LT_EOF + else + cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF - fi - else - cat >&2 <<_LT_EOF + fi + else + cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF - fi - - exit $EXIT_MISMATCH fi -} + exit $EXIT_MISMATCH + fi +} -# libtool_options_prep [ARG]... -# ----------------------------- -# Preparation for options parsed by libtool. -libtool_options_prep () -{ - $debug_mode - # Option defaults: - opt_config=false - opt_dlopen= - opt_dry_run=false - opt_help=false - opt_mode= - opt_preserve_dup_deps=false - opt_quiet=false +# Shorthand for --mode=foo, only valid as the first argument +case $1 in +clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; +compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; +execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; +finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; +install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; +link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; +uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; +esac - nonopt= - preserve_args= - # Shorthand for --mode=foo, only valid as the first argument - case $1 in - clean|clea|cle|cl) - shift; set dummy --mode clean ${1+"$@"}; shift - ;; - compile|compil|compi|comp|com|co|c) - shift; set dummy --mode compile ${1+"$@"}; shift - ;; - execute|execut|execu|exec|exe|ex|e) - shift; set dummy --mode execute ${1+"$@"}; shift - ;; - finish|finis|fini|fin|fi|f) - shift; set dummy --mode finish ${1+"$@"}; shift - ;; - install|instal|insta|inst|ins|in|i) - shift; set dummy --mode install ${1+"$@"}; shift - ;; - link|lin|li|l) - shift; set dummy --mode link ${1+"$@"}; shift - ;; - uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) - shift; set dummy --mode uninstall ${1+"$@"}; shift - ;; - esac - # Pass back the list of options. - func_quote_for_eval ${1+"$@"} - libtool_options_prep_result=$func_quote_for_eval_result -} -func_add_hook func_options_prep libtool_options_prep +# Option defaults: +opt_debug=: +opt_dry_run=false +opt_config=false +opt_preserve_dup_deps=false +opt_features=false +opt_finish=false +opt_help=false +opt_help_all=false +opt_silent=: +opt_warning=: +opt_verbose=: +opt_silent=false +opt_verbose=false -# libtool_parse_options [ARG]... -# --------------------------------- -# Provide handling for libtool specific options. -libtool_parse_options () +# Parse options once, thoroughly. This comes as soon as possible in the +# script to make things like `--version' happen as quickly as we can. { - $debug_cmd + # this just eases exit handling + while test $# -gt 0; do + opt="$1" + shift + case $opt in + --debug|-x) opt_debug='set -x' + func_echo "enabling shell trace mode" + $opt_debug + ;; + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + --config) + opt_config=: +func_config + ;; + --dlopen|-dlopen) + optarg="$1" + opt_dlopen="${opt_dlopen+$opt_dlopen +}$optarg" + shift + ;; + --preserve-dup-deps) + opt_preserve_dup_deps=: + ;; + --features) + opt_features=: +func_features + ;; + --finish) + opt_finish=: +set dummy --mode finish ${1+"$@"}; shift + ;; + --help) + opt_help=: + ;; + --help-all) + opt_help_all=: +opt_help=': help-all' + ;; + --mode) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_mode="$optarg" +case $optarg in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $opt" + exit_cmd=exit + break + ;; +esac + shift + ;; + --no-silent|--no-quiet) + opt_silent=false +func_append preserve_args " $opt" + ;; + --no-warning|--no-warn) + opt_warning=false +func_append preserve_args " $opt" + ;; + --no-verbose) + opt_verbose=false +func_append preserve_args " $opt" + ;; + --silent|--quiet) + opt_silent=: +func_append preserve_args " $opt" + opt_verbose=false + ;; + --verbose|-v) + opt_verbose=: +func_append preserve_args " $opt" +opt_silent=false + ;; + --tag) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_tag="$optarg" +func_append preserve_args " $opt $optarg" +func_enable_tag "$optarg" + shift + ;; + + -\?|-h) func_usage ;; + --help) func_help ;; + --version) func_version ;; + + # Separate optargs to long options: + --*=*) + func_split_long_opt "$opt" + set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-n*|-v*) + func_split_short_opt "$opt" + set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognized option \`$opt'" ;; + *) set dummy "$opt" ${1+"$@"}; shift; break ;; + esac + done - # Perform our own loop to consume as many options as possible in - # each iteration. - while test $# -gt 0; do - _G_opt=$1 - shift - case $_G_opt in - --dry-run|--dryrun|-n) - opt_dry_run=: - ;; - - --config) func_config ;; - - --dlopen|-dlopen) - opt_dlopen="${opt_dlopen+$opt_dlopen -}$1" - shift - ;; - - --preserve-dup-deps) - opt_preserve_dup_deps=: ;; - - --features) func_features ;; - - --finish) set dummy --mode finish ${1+"$@"}; shift ;; - - --help) opt_help=: ;; - - --help-all) opt_help=': help-all' ;; - - --mode) test $# = 0 && func_missing_arg $_G_opt && break - opt_mode=$1 - case $1 in - # Valid mode arguments: - clean|compile|execute|finish|install|link|relink|uninstall) ;; - - # Catch anything else as an error - *) func_error "invalid argument for $_G_opt" - exit_cmd=exit - break - ;; - esac - shift - ;; - - --no-silent|--no-quiet) - opt_quiet=false - func_append preserve_args " $_G_opt" - ;; - - --no-warnings|--no-warning|--no-warn) - opt_warning=false - func_append preserve_args " $_G_opt" - ;; - - --no-verbose) - opt_verbose=false - func_append preserve_args " $_G_opt" - ;; - - --silent|--quiet) - opt_quiet=: - opt_verbose=false - func_append preserve_args " $_G_opt" - ;; - - --tag) test $# = 0 && func_missing_arg $_G_opt && break - opt_tag=$1 - func_append preserve_args " $_G_opt $1" - func_enable_tag "$1" - shift - ;; - - --verbose|-v) opt_quiet=false - opt_verbose=: - func_append preserve_args " $_G_opt" - ;; - - # An option not handled by this hook function: - *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; - esac - done + # Validate options: + # save first non-option argument + if test "$#" -gt 0; then + nonopt="$opt" + shift + fi - # save modified positional parameters for caller - func_quote_for_eval ${1+"$@"} - libtool_parse_options_result=$func_quote_for_eval_result -} -func_add_hook func_parse_options libtool_parse_options + # preserve --debug + test "$opt_debug" = : || func_append preserve_args " --debug" + case $host in + *cygwin* | *mingw* | *pw32* | *cegcc*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + $opt_help || { + # Sanity checks first: + func_check_version_match -# libtool_validate_options [ARG]... -# --------------------------------- -# Perform any sanity checks on option settings and/or unconsumed -# arguments. -libtool_validate_options () -{ - # save first non-option argument - if test 0 -lt $#; then - nonopt=$1 - shift + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + func_fatal_configuration "not configured to build any kind of library" fi - # preserve --debug - test : = "$debug_cmd" || func_append preserve_args " --debug" - - case $host in - *cygwin* | *mingw* | *pw32* | *cegcc*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps - ;; - esac - - $opt_help || { - # Sanity checks first: - func_check_version_match - - test yes != "$build_libtool_libs" \ - && test yes != "$build_old_libs" \ - && func_fatal_configuration "not configured to build any kind of library" + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test "$opt_mode" != execute; then + func_error "unrecognized option \`-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi - # Only execute mode is allowed to have -dlopen flags. - if test -n "$opt_dlopen" && test execute != "$opt_mode"; then - func_error "unrecognized option '-dlopen'" - $ECHO "$help" 1>&2 - exit $EXIT_FAILURE - fi + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$progname --help --mode=$opt_mode' for more information." + } - # Change the help message to a mode-specific one. - generic_help=$help - help="Try '$progname --help --mode=$opt_mode' for more information." - } - # Pass back the unparsed argument list - func_quote_for_eval ${1+"$@"} - libtool_validate_options_result=$func_quote_for_eval_result + # Bail if the options were screwed + $exit_cmd $EXIT_FAILURE } -func_add_hook func_validate_options libtool_validate_options -# Process options as early as possible so that --help and --version -# can return quickly. -func_options ${1+"$@"} -eval set dummy "$func_options_result"; shift - ## ----------- ## ## Main. ## ## ----------- ## -magic='%%%MAGIC variable%%%' -magic_exe='%%%MAGIC EXE variable%%%' - -# Global variables. -extracted_archives= -extracted_serial=0 - -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= - - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} - # func_lalib_p file -# True iff FILE is a libtool '.la' library or '.lo' object file. +# True iff FILE is a libtool `.la' library or `.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () @@ -2398,12 +1236,12 @@ func_lalib_p () } # func_lalib_unsafe_p file -# True iff FILE is a libtool '.la' library or '.lo' object file. +# True iff FILE is a libtool `.la' library or `.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be -# fatal anyway. Works if 'file' does not exist. +# fatal anyway. Works if `file' does not exist. func_lalib_unsafe_p () { lalib_p=no @@ -2411,13 +1249,13 @@ func_lalib_unsafe_p () for lalib_p_l in 1 2 3 4 do read lalib_p_line - case $lalib_p_line in + case "$lalib_p_line" in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi - test yes = "$lalib_p" + test "$lalib_p" = yes } # func_ltwrapper_script_p file @@ -2451,7 +1289,7 @@ func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" - func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper + func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" } # func_ltwrapper_p file @@ -2470,13 +1308,11 @@ func_ltwrapper_p () # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { - $debug_cmd - + $opt_debug save_ifs=$IFS; IFS='~' for cmd in $1; do - IFS=$sp$nl - eval cmd=\"$cmd\" IFS=$save_ifs + eval cmd=\"$cmd\" func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs @@ -2488,11 +1324,10 @@ func_execute_cmds () # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing -# 'FILE.' does not work on cygwin managed mounts. +# `FILE.' does not work on cygwin managed mounts. func_source () { - $debug_cmd - + $opt_debug case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; @@ -2519,10 +1354,10 @@ func_resolve_sysroot () # store the result into func_replace_sysroot_result. func_replace_sysroot () { - case $lt_sysroot:$1 in + case "$lt_sysroot:$1" in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" - func_replace_sysroot_result='='$func_stripname_result + func_replace_sysroot_result="=$func_stripname_result" ;; *) # Including no sysroot. @@ -2539,8 +1374,7 @@ func_replace_sysroot () # arg is usually of the form 'gcc ...' func_infer_tag () { - $debug_cmd - + $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do @@ -2559,7 +1393,7 @@ func_infer_tag () for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. - eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. @@ -2584,7 +1418,7 @@ func_infer_tag () # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" - func_fatal_error "specify a tag with '--tag'" + func_fatal_error "specify a tag with \`--tag'" # else # func_verbose "using $tagname tagged configuration" fi @@ -2600,15 +1434,15 @@ func_infer_tag () # but don't create it if we're doing a dry run. func_write_libtool_object () { - write_libobj=$1 - if test yes = "$build_libtool_libs"; then - write_lobj=\'$2\' + write_libobj=${1} + if test "$build_libtool_libs" = yes; then + write_lobj=\'${2}\' else write_lobj=none fi - if test yes = "$build_old_libs"; then - write_oldobj=\'$3\' + if test "$build_old_libs" = yes; then + write_oldobj=\'${3}\' else write_oldobj=none fi @@ -2616,7 +1450,7 @@ func_write_libtool_object () $opt_dry_run || { cat >${write_libobj}T </dev/null` - if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then + if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | - $SED -e "$sed_naive_backslashify"` + $SED -e "$lt_sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi @@ -2681,19 +1514,18 @@ func_convert_core_file_wine_to_w32 () # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { - $debug_cmd - + $opt_debug # unfortunately, winepath doesn't convert paths, only file names - func_convert_core_path_wine_to_w32_result= + func_convert_core_path_wine_to_w32_result="" if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" - if test -n "$func_convert_core_file_wine_to_w32_result"; then + if test -n "$func_convert_core_file_wine_to_w32_result" ; then if test -z "$func_convert_core_path_wine_to_w32_result"; then - func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result + func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi @@ -2722,8 +1554,7 @@ func_convert_core_path_wine_to_w32 () # environment variable; do not put it in $PATH. func_cygpath () { - $debug_cmd - + $opt_debug if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then @@ -2732,7 +1563,7 @@ func_cygpath () fi else func_cygpath_result= - func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" + func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" fi } #end: func_cygpath @@ -2743,11 +1574,10 @@ func_cygpath () # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { - $debug_cmd - + $opt_debug # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | - $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` + $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 @@ -2758,14 +1588,13 @@ func_convert_core_msys_to_w32 () # func_to_host_file_result to ARG1). func_convert_file_check () { - $debug_cmd - - if test -z "$2" && test -n "$1"; then + $opt_debug + if test -z "$2" && test -n "$1" ; then func_error "Could not determine host file name corresponding to" - func_error " '$1'" + func_error " \`$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: - func_to_host_file_result=$1 + func_to_host_file_result="$1" fi } # end func_convert_file_check @@ -2777,11 +1606,10 @@ func_convert_file_check () # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { - $debug_cmd - + $opt_debug if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" - func_error " '$3'" + func_error " \`$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. @@ -2790,7 +1618,7 @@ func_convert_path_check () func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else - func_to_host_path_result=$3 + func_to_host_path_result="$3" fi fi } @@ -2802,10 +1630,9 @@ func_convert_path_check () # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { - $debug_cmd - + $opt_debug case $4 in - $1 ) func_to_host_path_result=$3$func_to_host_path_result + $1 ) func_to_host_path_result="$3$func_to_host_path_result" ;; esac case $4 in @@ -2819,7 +1646,7 @@ func_convert_path_front_back_pathsep () ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## -# invoked via '$to_host_file_cmd ARG' +# invoked via `$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. @@ -2830,8 +1657,7 @@ func_convert_path_front_back_pathsep () # in func_to_host_file_result. func_to_host_file () { - $debug_cmd - + $opt_debug $to_host_file_cmd "$1" } # end func_to_host_file @@ -2843,8 +1669,7 @@ func_to_host_file () # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { - $debug_cmd - + $opt_debug case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 @@ -2862,7 +1687,7 @@ func_to_tool_file () # Copy ARG to func_to_host_file_result. func_convert_file_noop () { - func_to_host_file_result=$1 + func_to_host_file_result="$1" } # end func_convert_file_noop @@ -2873,12 +1698,11 @@ func_convert_file_noop () # func_to_host_file_result. func_convert_file_msys_to_w32 () { - $debug_cmd - - func_to_host_file_result=$1 + $opt_debug + func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" - func_to_host_file_result=$func_convert_core_msys_to_w32_result + func_to_host_file_result="$func_convert_core_msys_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } @@ -2890,9 +1714,8 @@ func_convert_file_msys_to_w32 () # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { - $debug_cmd - - func_to_host_file_result=$1 + $opt_debug + func_to_host_file_result="$1" if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. @@ -2908,12 +1731,11 @@ func_convert_file_cygwin_to_w32 () # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { - $debug_cmd - - func_to_host_file_result=$1 + $opt_debug + func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" - func_to_host_file_result=$func_convert_core_file_wine_to_w32_result + func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } @@ -2925,13 +1747,12 @@ func_convert_file_nix_to_w32 () # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { - $debug_cmd - - func_to_host_file_result=$1 + $opt_debug + func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" - func_to_host_file_result=$func_cygpath_result + func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } @@ -2944,14 +1765,13 @@ func_convert_file_msys_to_cygwin () # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { - $debug_cmd - - func_to_host_file_result=$1 + $opt_debug + func_to_host_file_result="$1" if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" - func_to_host_file_result=$func_cygpath_result + func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } @@ -2961,7 +1781,7 @@ func_convert_file_nix_to_cygwin () ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# -# invoked via '$to_host_path_cmd ARG' +# invoked via `$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. @@ -2985,11 +1805,10 @@ func_convert_file_nix_to_cygwin () to_host_path_cmd= func_init_to_host_path_cmd () { - $debug_cmd - + $opt_debug if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" - to_host_path_cmd=func_convert_path_$func_stripname_result + to_host_path_cmd="func_convert_path_${func_stripname_result}" fi } @@ -2999,8 +1818,7 @@ func_init_to_host_path_cmd () # in func_to_host_path_result. func_to_host_path () { - $debug_cmd - + $opt_debug func_init_to_host_path_cmd $to_host_path_cmd "$1" } @@ -3011,7 +1829,7 @@ func_to_host_path () # Copy ARG to func_to_host_path_result. func_convert_path_noop () { - func_to_host_path_result=$1 + func_to_host_path_result="$1" } # end func_convert_path_noop @@ -3022,9 +1840,8 @@ func_convert_path_noop () # func_to_host_path_result. func_convert_path_msys_to_w32 () { - $debug_cmd - - func_to_host_path_result=$1 + $opt_debug + func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; @@ -3032,7 +1849,7 @@ func_convert_path_msys_to_w32 () func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result=$func_convert_core_msys_to_w32_result + func_to_host_path_result="$func_convert_core_msys_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" @@ -3046,9 +1863,8 @@ func_convert_path_msys_to_w32 () # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { - $debug_cmd - - func_to_host_path_result=$1 + $opt_debug + func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" @@ -3067,15 +1883,14 @@ func_convert_path_cygwin_to_w32 () # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { - $debug_cmd - - func_to_host_path_result=$1 + $opt_debug + func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result=$func_convert_core_path_wine_to_w32_result + func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" @@ -3089,16 +1904,15 @@ func_convert_path_nix_to_w32 () # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { - $debug_cmd - - func_to_host_path_result=$1 + $opt_debug + func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" - func_to_host_path_result=$func_cygpath_result + func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" @@ -3113,9 +1927,8 @@ func_convert_path_msys_to_cygwin () # func_to_host_file_result. func_convert_path_nix_to_cygwin () { - $debug_cmd - - func_to_host_path_result=$1 + $opt_debug + func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them @@ -3124,7 +1937,7 @@ func_convert_path_nix_to_cygwin () func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" - func_to_host_path_result=$func_cygpath_result + func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" @@ -3133,31 +1946,13 @@ func_convert_path_nix_to_cygwin () # end func_convert_path_nix_to_cygwin -# func_dll_def_p FILE -# True iff FILE is a Windows DLL '.def' file. -# Keep in sync with _LT_DLL_DEF_P in libtool.m4 -func_dll_def_p () -{ - $debug_cmd - - func_dll_def_p_tmp=`$SED -n \ - -e 's/^[ ]*//' \ - -e '/^\(;.*\)*$/d' \ - -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ - -e q \ - "$1"` - test DEF = "$func_dll_def_p_tmp" -} - - # func_mode_compile arg... func_mode_compile () { - $debug_cmd - + $opt_debug # Get the compilation command and the source file. base_compile= - srcfile=$nonopt # always keep a non-empty value in "srcfile" + srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal @@ -3170,12 +1965,12 @@ func_mode_compile () case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile - lastarg=$arg + lastarg="$arg" arg_mode=normal ;; target ) - libobj=$arg + libobj="$arg" arg_mode=normal continue ;; @@ -3185,7 +1980,7 @@ func_mode_compile () case $arg in -o) test -n "$libobj" && \ - func_fatal_error "you cannot specify '-o' more than once" + func_fatal_error "you cannot specify \`-o' more than once" arg_mode=target continue ;; @@ -3214,12 +2009,12 @@ func_mode_compile () func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= - save_ifs=$IFS; IFS=, + save_ifs="$IFS"; IFS=',' for arg in $args; do - IFS=$save_ifs + IFS="$save_ifs" func_append_quoted lastarg "$arg" done - IFS=$save_ifs + IFS="$save_ifs" func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result @@ -3232,8 +2027,8 @@ func_mode_compile () # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # - lastarg=$srcfile - srcfile=$arg + lastarg="$srcfile" + srcfile="$arg" ;; esac # case $arg ;; @@ -3248,13 +2043,13 @@ func_mode_compile () func_fatal_error "you must specify an argument for -Xcompile" ;; target) - func_fatal_error "you must specify a target with '-o'" + func_fatal_error "you must specify a target with \`-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" - libobj=$func_basename_result + libobj="$func_basename_result" } ;; esac @@ -3274,7 +2069,7 @@ func_mode_compile () case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) - func_fatal_error "cannot determine name of library object from '$libobj'" + func_fatal_error "cannot determine name of library object from \`$libobj'" ;; esac @@ -3283,8 +2078,8 @@ func_mode_compile () for arg in $later; do case $arg in -shared) - test yes = "$build_libtool_libs" \ - || func_fatal_configuration "cannot build a shared library" + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" build_old_libs=no continue ;; @@ -3310,17 +2105,17 @@ func_mode_compile () func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ - && func_warning "libobj name '$libobj' may not contain shell special characters." + && func_warning "libobj name \`$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" - objname=$func_basename_result - xdir=$func_dirname_result - lobj=$xdir$objdir/$objname + objname="$func_basename_result" + xdir="$func_dirname_result" + lobj=${xdir}$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. - if test yes = "$build_old_libs"; then + if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" @@ -3332,16 +2127,16 @@ func_mode_compile () pic_mode=default ;; esac - if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c - if test no = "$compiler_c_o"; then - output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext - lockfile=$output_obj.lock + if test "$compiler_c_o" = no; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" else output_obj= need_locks=no @@ -3350,12 +2145,12 @@ func_mode_compile () # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file - if test yes = "$need_locks"; then + if test "$need_locks" = yes; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done - elif test warn = "$need_locks"; then + elif test "$need_locks" = warn; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: @@ -3363,7 +2158,7 @@ func_mode_compile () This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because -your compiler does not support '-c' and '-o' together. If you +your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." @@ -3385,11 +2180,11 @@ compiler." qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. - if test yes = "$build_libtool_libs"; then + if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile - if test no != "$pic_mode"; then + if test "$pic_mode" != no; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code @@ -3406,7 +2201,7 @@ compiler." func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' - if test warn = "$need_locks" && + if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: @@ -3417,7 +2212,7 @@ $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because -your compiler does not support '-c' and '-o' together. If you +your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." @@ -3433,20 +2228,20 @@ compiler." fi # Allow error messages only from the first compilation. - if test yes = "$suppress_opt"; then + if test "$suppress_opt" = yes; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. - if test yes = "$build_old_libs"; then - if test yes != "$pic_mode"; then + if test "$build_old_libs" = yes; then + if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi - if test yes = "$compiler_c_o"; then + if test "$compiler_c_o" = yes; then func_append command " -o $obj" fi @@ -3455,7 +2250,7 @@ compiler." func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' - if test warn = "$need_locks" && + if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: @@ -3466,7 +2261,7 @@ $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because -your compiler does not support '-c' and '-o' together. If you +your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." @@ -3486,7 +2281,7 @@ compiler." func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked - if test no != "$need_locks"; then + if test "$need_locks" != no; then removelist=$lockfile $RM "$lockfile" fi @@ -3496,7 +2291,7 @@ compiler." } $opt_help || { - test compile = "$opt_mode" && func_mode_compile ${1+"$@"} + test "$opt_mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () @@ -3516,7 +2311,7 @@ func_mode_help () Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE -(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated @@ -3535,16 +2330,16 @@ This mode accepts the following additional options: -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only - -shared do not build a '.o' file suitable for static linking - -static only build a '.o' file suitable for static linking + -shared do not build a \`.o' file suitable for static linking + -static only build a \`.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler -COMPILE-COMMAND is a command to be used in creating a 'standard' object file +COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix '.c' with the -library object suffix, '.lo'." +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." ;; execute) @@ -3557,7 +2352,7 @@ This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path -This mode sets the library path environment variable according to '-dlopen' +This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated @@ -3576,7 +2371,7 @@ Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use -the '--dry-run' option if you just want to see what would be executed." +the \`--dry-run' option if you just want to see what would be executed." ;; install) @@ -3586,7 +2381,7 @@ the '--dry-run' option if you just want to see what would be executed." Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be -either the 'install' or 'cp' program. +either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: @@ -3612,7 +2407,7 @@ The following components of LINK-COMMAND are treated specially: -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) - -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE @@ -3646,20 +2441,20 @@ The following components of LINK-COMMAND are treated specially: -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) -All other options (arguments beginning with '-') are ignored. +All other options (arguments beginning with \`-') are ignored. -Every other argument is treated as a filename. Files ending in '.la' are +Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. -If the OUTPUT-FILE ends in '.la', then a libtool library is created, -only library objects ('.lo' files) may be specified, and '-rpath' is +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. -If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created -using 'ar' and 'ranlib', or on Windows using 'lib'. +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. -If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; @@ -3670,7 +2465,7 @@ is created, otherwise an executable program is created." Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE -(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. @@ -3678,17 +2473,17 @@ Otherwise, only FILE itself is deleted using RM." ;; *) - func_fatal_help "invalid operation mode '$opt_mode'" + func_fatal_help "invalid operation mode \`$opt_mode'" ;; esac echo - $ECHO "Try '$progname --help' for more information about other modes." + $ECHO "Try \`$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then - if test : = "$opt_help"; then + if test "$opt_help" = :; then func_mode_help else { @@ -3721,17 +2516,16 @@ fi # func_mode_execute arg... func_mode_execute () { - $debug_cmd - + $opt_debug # The first argument is the command name. - cmd=$nonopt + cmd="$nonopt" test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ - || func_fatal_help "'$file' is not a file" + || func_fatal_help "\`$file' is not a file" dir= case $file in @@ -3741,7 +2535,7 @@ func_mode_execute () # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ - || func_fatal_help "'$lib' is not a valid libtool archive" + || func_fatal_help "\`$lib' is not a valid libtool archive" # Read the libtool library. dlname= @@ -3752,18 +2546,18 @@ func_mode_execute () if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ - func_warning "'$file' was not linked with '-export-dynamic'" + func_warning "\`$file' was not linked with \`-export-dynamic'" continue fi func_dirname "$file" "" "." - dir=$func_dirname_result + dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then - func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" + func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" fi fi ;; @@ -3771,18 +2565,18 @@ func_mode_execute () *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." - dir=$func_dirname_result + dir="$func_dirname_result" ;; *) - func_warning "'-dlopen' is ignored for non-libtool libraries and objects" + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir=$absdir + test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then @@ -3794,7 +2588,7 @@ func_mode_execute () # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. - libtool_execute_magic=$magic + libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= @@ -3807,12 +2601,12 @@ func_mode_execute () if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. - file=$progdir/$program + file="$progdir/$program" elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. - file=$progdir/$program + file="$progdir/$program" fi ;; esac @@ -3820,15 +2614,7 @@ func_mode_execute () func_append_quoted args "$file" done - if $opt_dry_run; then - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - echo "export $shlibpath_var" - fi - $ECHO "$cmd$args" - exit $EXIT_SUCCESS - else + if test "X$opt_dry_run" = Xfalse; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" @@ -3845,18 +2631,25 @@ func_mode_execute () done # Now prepare to actually exec the command. - exec_cmd=\$cmd$args + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS fi } -test execute = "$opt_mode" && func_mode_execute ${1+"$@"} +test "$opt_mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { - $debug_cmd - + $opt_debug libs= libdirs= admincmds= @@ -3870,11 +2663,11 @@ func_mode_finish () if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else - func_warning "'$opt' is not a valid libtool archive" + func_warning "\`$opt' is not a valid libtool archive" fi else - func_fatal_error "invalid argument '$opt'" + func_fatal_error "invalid argument \`$opt'" fi done @@ -3889,12 +2682,12 @@ func_mode_finish () # Remove sysroot references if $opt_dry_run; then for lib in $libs; do - echo "removing references to $lt_sysroot and '=' prefixes from $lib" + echo "removing references to $lt_sysroot and \`=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do - sed -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done @@ -3919,7 +2712,7 @@ func_mode_finish () fi # Exit here if they wanted silent mode. - $opt_quiet && exit $EXIT_SUCCESS + $opt_silent && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" @@ -3930,27 +2723,27 @@ func_mode_finish () echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" - echo "specify the full pathname of the library, or use the '-LLIBDIR'" + echo "specify the full pathname of the library, or use the \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then - echo " - add LIBDIR to the '$shlibpath_var' environment variable" + echo " - add LIBDIR to the \`$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then - echo " - add LIBDIR to the '$runpath_var' environment variable" + echo " - add LIBDIR to the \`$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" - $ECHO " - use the '$flag' linker flag" + $ECHO " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then - echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" + echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi echo @@ -3969,20 +2762,18 @@ func_mode_finish () exit $EXIT_SUCCESS } -test finish = "$opt_mode" && func_mode_finish ${1+"$@"} +test "$opt_mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { - $debug_cmd - + $opt_debug # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). - if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. - case $nonopt in *shtool*) :;; *) false;; esac - then + case $nonopt in *shtool*) :;; *) false;; esac; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " @@ -4009,7 +2800,7 @@ func_mode_install () opts= prev= install_type= - isdir=false + isdir=no stripme= no_mode=: for arg @@ -4022,7 +2813,7 @@ func_mode_install () fi case $arg in - -d) isdir=: ;; + -d) isdir=yes ;; -f) if $install_cp; then :; else prev=$arg @@ -4040,7 +2831,7 @@ func_mode_install () *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then - if test X-m = "X$prev" && test -n "$install_override_mode"; then + if test "x$prev" = x-m && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi @@ -4065,7 +2856,7 @@ func_mode_install () func_fatal_help "you must specify an install program" test -n "$prev" && \ - func_fatal_help "the '$prev' option requires an argument" + func_fatal_help "the \`$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else @@ -4087,19 +2878,19 @@ func_mode_install () dest=$func_stripname_result # Check to see that the destination is a directory. - test -d "$dest" && isdir=: - if $isdir; then - destdir=$dest + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" destname= else func_dirname_and_basename "$dest" "" "." - destdir=$func_dirname_result - destname=$func_basename_result + destdir="$func_dirname_result" + destname="$func_basename_result" # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ - func_fatal_help "'$dest' is not a directory" + func_fatal_help "\`$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; @@ -4108,7 +2899,7 @@ func_mode_install () case $file in *.lo) ;; *) - func_fatal_help "'$destdir' must be an absolute directory name" + func_fatal_help "\`$destdir' must be an absolute directory name" ;; esac done @@ -4117,7 +2908,7 @@ func_mode_install () # This variable tells wrapper scripts just to set variables rather # than running their programs. - libtool_install_magic=$magic + libtool_install_magic="$magic" staticlibs= future_libdirs= @@ -4137,7 +2928,7 @@ func_mode_install () # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ - || func_fatal_help "'$file' is not a valid libtool archive" + || func_fatal_help "\`$file' is not a valid libtool archive" library_names= old_library= @@ -4159,7 +2950,7 @@ func_mode_install () fi func_dirname "$file" "/" "" - dir=$func_dirname_result + dir="$func_dirname_result" func_append dir "$objdir" if test -n "$relink_command"; then @@ -4173,7 +2964,7 @@ func_mode_install () # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ - func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" + func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. @@ -4182,29 +2973,29 @@ func_mode_install () relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi - func_warning "relinking '$file'" + func_warning "relinking \`$file'" func_show_eval "$relink_command" \ - 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' + 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then - realname=$1 + realname="$1" shift - srcname=$realname - test -n "$relink_command" && srcname=${realname}T + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' - tstripme=$stripme + tstripme="$stripme" case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) - tstripme= + tstripme="" ;; esac ;; @@ -4215,7 +3006,7 @@ func_mode_install () if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. - # Try 'ln -sf' first, because the 'ln' binary might depend on + # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname @@ -4226,14 +3017,14 @@ func_mode_install () fi # Do each command in the postinstall commands. - lib=$destdir/$realname + lib="$destdir/$realname" func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" - name=$func_basename_result - instname=$dir/${name}i + name="$func_basename_result" + instname="$dir/$name"i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. @@ -4245,11 +3036,11 @@ func_mode_install () # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then - destfile=$destdir/$destname + destfile="$destdir/$destname" else func_basename "$file" - destfile=$func_basename_result - destfile=$destdir/$destfile + destfile="$func_basename_result" + destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. @@ -4259,11 +3050,11 @@ func_mode_install () staticdest=$func_lo2o_result ;; *.$objext) - staticdest=$destfile + staticdest="$destfile" destfile= ;; *) - func_fatal_help "cannot copy a libtool object to '$destfile'" + func_fatal_help "cannot copy a libtool object to \`$destfile'" ;; esac @@ -4272,7 +3063,7 @@ func_mode_install () func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. - if test yes = "$build_old_libs"; then + if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result @@ -4284,23 +3075,23 @@ func_mode_install () *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then - destfile=$destdir/$destname + destfile="$destdir/$destname" else func_basename "$file" - destfile=$func_basename_result - destfile=$destdir/$destfile + destfile="$func_basename_result" + destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install - stripped_ext= + stripped_ext="" case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result - stripped_ext=.exe + stripped_ext=".exe" fi ;; esac @@ -4328,19 +3119,19 @@ func_mode_install () # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ - func_fatal_error "invalid libtool wrapper script '$wrapper'" + func_fatal_error "invalid libtool wrapper script \`$wrapper'" - finalize=: + finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi - libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` + libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then - func_warning "'$lib' has not been installed in '$libdir'" - finalize=false + func_warning "\`$lib' has not been installed in \`$libdir'" + finalize=no fi done @@ -4348,29 +3139,29 @@ func_mode_install () func_source "$wrapper" outputname= - if test no = "$fast_install" && test -n "$relink_command"; then + if test "$fast_install" = no && test -n "$relink_command"; then $opt_dry_run || { - if $finalize; then + if test "$finalize" = yes; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" - file=$func_basename_result - outputname=$tmpdir/$file + file="$func_basename_result" + outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` - $opt_quiet || { + $opt_silent || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else - func_error "error: relink '$file' with the above command before installing it" + func_error "error: relink \`$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi - file=$outputname + file="$outputname" else - func_warning "cannot relink '$file'" + func_warning "cannot relink \`$file'" fi } else @@ -4407,10 +3198,10 @@ func_mode_install () for file in $staticlibs; do func_basename "$file" - name=$func_basename_result + name="$func_basename_result" # Set up the ranlib parameters. - oldlib=$destdir/$name + oldlib="$destdir/$name" func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result @@ -4425,18 +3216,18 @@ func_mode_install () done test -n "$future_libdirs" && \ - func_warning "remember to run '$progname --finish$future_libdirs'" + func_warning "remember to run \`$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } -test install = "$opt_mode" && func_mode_install ${1+"$@"} +test "$opt_mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p @@ -4444,17 +3235,16 @@ test install = "$opt_mode" && func_mode_install ${1+"$@"} # a dlpreopen symbol table. func_generate_dlsyms () { - $debug_cmd - - my_outputname=$1 - my_originator=$2 - my_pic_p=${3-false} + $opt_debug + my_outputname="$1" + my_originator="$2" + my_pic_p="${3-no}" my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= - if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then - my_dlsyms=${my_outputname}S.c + my_dlsyms="${my_outputname}S.c" else func_error "not configured to extract global symbols from dlpreopened files" fi @@ -4465,7 +3255,7 @@ func_generate_dlsyms () "") ;; *.c) # Discover the nlist of each of the dlfiles. - nlist=$output_objdir/$my_outputname.nm + nlist="$output_objdir/${my_outputname}.nm" func_show_eval "$RM $nlist ${nlist}S ${nlist}T" @@ -4473,36 +3263,34 @@ func_generate_dlsyms () func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ -/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ +/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif -#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE -/* DATA imports from DLLs on WIN32 can't be const, because runtime +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST -#elif defined __osf__ +#elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif -#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) - /* External symbol declarations for the compiler. */\ " - if test yes = "$dlself"; then - func_verbose "generating symbol list for '$output'" + if test "$dlself" = yes; then + func_verbose "generating symbol list for \`$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" @@ -4510,7 +3298,7 @@ extern \"C\" { progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 - func_verbose "extracting global C symbols from '$func_to_tool_file_result'" + func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done @@ -4530,10 +3318,10 @@ extern \"C\" { # Prepare the list of exported symbols if test -z "$export_symbols"; then - export_symbols=$output_objdir/$outputname.exp + export_symbols="$output_objdir/$outputname.exp" $opt_dry_run || { $RM $export_symbols - eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' @@ -4543,7 +3331,7 @@ extern \"C\" { } else $opt_dry_run || { - eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in @@ -4557,22 +3345,22 @@ extern \"C\" { fi for dlprefile in $dlprefiles; do - func_verbose "extracting global C symbols from '$dlprefile'" + func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" - name=$func_basename_result + name="$func_basename_result" case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" - dlprefile_dlbasename= + dlprefile_dlbasename="" if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` - if test -n "$dlprefile_dlname"; then + if test -n "$dlprefile_dlname" ; then func_basename "$dlprefile_dlname" - dlprefile_dlbasename=$func_basename_result + dlprefile_dlbasename="$func_basename_result" else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" @@ -4580,7 +3368,7 @@ extern \"C\" { fi fi $opt_dry_run || { - if test -n "$dlprefile_dlbasename"; then + if test -n "$dlprefile_dlbasename" ; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" @@ -4636,11 +3424,6 @@ extern \"C\" { echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi - func_show_eval '$RM "${nlist}I"' - if test -n "$global_symbol_to_import"; then - eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' - fi - echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ @@ -4649,30 +3432,11 @@ typedef struct { void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[];\ -" - - if test -s "$nlist"I; then - echo >> "$output_objdir/$my_dlsyms" "\ -static void lt_syminit(void) -{ - LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; - for (; symbol->name; ++symbol) - {" - $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" - echo >> "$output_objdir/$my_dlsyms" "\ - } -}" - fi - echo >> "$output_objdir/$my_dlsyms" "\ +lt_${my_prefix}_LTX_preloaded_symbols[]; LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = -{ {\"$my_originator\", (void *) 0}," - - if test -s "$nlist"I; then - echo >> "$output_objdir/$my_dlsyms" "\ - {\"@INIT@\", (void *) <_syminit}," - fi +{\ + { \"$my_originator\", (void *) 0 }," case $need_lib_prefix in no) @@ -4714,7 +3478,9 @@ static const void *lt_preloaded_setup() { *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) - $my_pic_p && pic_flag_for_symtable=" $pic_flag" + if test "X$my_pic_p" != Xno; then + pic_flag_for_symtable=" $pic_flag" + fi ;; esac ;; @@ -4731,10 +3497,10 @@ static const void *lt_preloaded_setup() { func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. - func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' # Transform the symbol file into the correct name. - symfileobj=$output_objdir/${my_outputname}S.$objext + symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then @@ -4752,7 +3518,7 @@ static const void *lt_preloaded_setup() { esac ;; *) - func_fatal_error "unknown suffix for '$my_dlsyms'" + func_fatal_error "unknown suffix for \`$my_dlsyms'" ;; esac else @@ -4766,32 +3532,6 @@ static const void *lt_preloaded_setup() { fi } -# func_cygming_gnu_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is a GNU/binutils-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_gnu_implib_p () -{ - $debug_cmd - - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` - test -n "$func_cygming_gnu_implib_tmp" -} - -# func_cygming_ms_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is an MS-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_ms_implib_p () -{ - $debug_cmd - - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` - test -n "$func_cygming_ms_implib_tmp" -} - # func_win32_libid arg # return the library type of file 'arg' # @@ -4801,9 +3541,8 @@ func_cygming_ms_implib_p () # Despite the name, also deal with 64 bit binaries. func_win32_libid () { - $debug_cmd - - win32_libid_type=unknown + $opt_debug + win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import @@ -4813,29 +3552,16 @@ func_win32_libid () # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then - case $nm_interface in - "MS dumpbin") - if func_cygming_ms_implib_p "$1" || - func_cygming_gnu_implib_p "$1" - then - win32_nmres=import - else - win32_nmres= - fi - ;; - *) - func_to_tool_file "$1" func_convert_file_msys_to_w32 - win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | - $SED -n -e ' + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' 1,100{ / I /{ - s|.*|import| + s,.*,import, p q } }'` - ;; - esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; @@ -4867,8 +3593,7 @@ func_win32_libid () # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { - $debug_cmd - + $opt_debug sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } @@ -4885,8 +3610,7 @@ func_cygming_dll_for_implib () # specified import library. func_cygming_dll_for_implib_fallback_core () { - $debug_cmd - + $opt_debug match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ @@ -4922,8 +3646,8 @@ func_cygming_dll_for_implib_fallback_core () /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the - # archive that possess that section. Heuristic: eliminate - # all those that have a first or second character that is + # archive which possess that section. Heuristic: eliminate + # all those which have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually @@ -4934,6 +3658,30 @@ func_cygming_dll_for_implib_fallback_core () $SED -e '/^\./d;/^.\./d;q' } +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified @@ -4947,17 +3695,16 @@ func_cygming_dll_for_implib_fallback_core () # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { - $debug_cmd - - if func_cygming_gnu_implib_p "$1"; then + $opt_debug + if func_cygming_gnu_implib_p "$1" ; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` - elif func_cygming_ms_implib_p "$1"; then + elif func_cygming_ms_implib_p "$1" ; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown - sharedlib_from_linklib_result= + sharedlib_from_linklib_result="" fi } @@ -4965,11 +3712,10 @@ func_cygming_dll_for_implib_fallback () # func_extract_an_archive dir oldlib func_extract_an_archive () { - $debug_cmd - - f_ex_an_ar_dir=$1; shift - f_ex_an_ar_oldlib=$1 - if test yes = "$lock_old_archive_extraction"; then + $opt_debug + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + if test "$lock_old_archive_extraction" = yes; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" @@ -4978,7 +3724,7 @@ func_extract_an_archive () fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' - if test yes = "$lock_old_archive_extraction"; then + if test "$lock_old_archive_extraction" = yes; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then @@ -4992,23 +3738,22 @@ func_extract_an_archive () # func_extract_archives gentop oldlib ... func_extract_archives () { - $debug_cmd - - my_gentop=$1; shift + $opt_debug + my_gentop="$1"; shift my_oldlibs=${1+"$@"} - my_oldobjs= - my_xlib= - my_xabs= - my_xdir= + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" - my_xlib=$func_basename_result + my_xlib="$func_basename_result" my_xlib_u=$my_xlib while :; do case " $extracted_archives " in @@ -5020,7 +3765,7 @@ func_extract_archives () esac done extracted_archives="$extracted_archives $my_xlib_u" - my_xdir=$my_gentop/$my_xlib_u + my_xdir="$my_gentop/$my_xlib_u" func_mkdir_p "$my_xdir" @@ -5033,20 +3778,19 @@ func_extract_archives () cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` - func_basename "$darwin_archive" - darwin_base_archive=$func_basename_result + darwin_base_archive=`basename "$darwin_archive"` darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches; do - func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" - $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" - cd "unfat-$$/$darwin_base_archive-$darwin_arch" - func_extract_an_archive "`pwd`" "$darwin_base_archive" + for darwin_arch in $darwin_arches ; do + func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" - $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" + $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` @@ -5071,7 +3815,7 @@ func_extract_archives () my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done - func_extract_archives_result=$my_oldobjs + func_extract_archives_result="$my_oldobjs" } @@ -5086,7 +3830,7 @@ func_extract_archives () # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script -# will assume that the directory where it is stored is +# will assume that the directory in which it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () @@ -5097,7 +3841,7 @@ func_emit_wrapper () #! $SHELL # $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. @@ -5154,9 +3898,9 @@ _LTECHO_EOF' # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper -# /script/ and the wrapper /executable/ that is used only on +# /script/ and the wrapper /executable/ which is used only on # windows platforms, and (c) all begin with the string "--lt-" -# (application programs are unlikely to have options that match +# (application programs are unlikely to have options which match # this pattern). # # There are only two supported options: --lt-debug and @@ -5189,7 +3933,7 @@ func_parse_lt_options () # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then - echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 + echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 fi } @@ -5200,7 +3944,7 @@ func_lt_dump_args () lt_dump_args_N=1; for lt_arg do - \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } @@ -5214,7 +3958,7 @@ func_exec_program_core () *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then - \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} @@ -5224,7 +3968,7 @@ func_exec_program_core () *) $ECHO "\ if test -n \"\$lt_option_debug\"; then - \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} @@ -5299,13 +4043,13 @@ func_exec_program () test -n \"\$absdir\" && thisdir=\"\$absdir\" " - if test yes = "$fast_install"; then + if test "$fast_install" = yes; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" @@ -5357,7 +4101,7 @@ func_exec_program () fi # Export our shlibpath_var if we have one. - if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" @@ -5377,7 +4121,7 @@ func_exec_program () fi else # The program doesn't exist. - \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 @@ -5396,7 +4140,7 @@ func_emit_cwrapperexe_src () cat < #include -#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) - /* declarations of non-ANSI functions */ -#if defined __MINGW32__ +#if defined(__MINGW32__) # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif -#elif defined __CYGWIN__ +#elif defined(__CYGWIN__) # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif -/* #elif defined other_platform || defined ... */ +/* #elif defined (other platforms) ... */ #endif /* portability defines, excluding path handling macros */ -#if defined _MSC_VER +#if defined(_MSC_VER) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC -#elif defined __MINGW32__ +# ifndef _INTPTR_T_DEFINED +# define _INTPTR_T_DEFINED +# define intptr_t int +# endif +#elif defined(__MINGW32__) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv -#elif defined __CYGWIN__ +#elif defined(__CYGWIN__) # define HAVE_SETENV # define FOPEN_WB "wb" -/* #elif defined other platforms ... */ +/* #elif defined (other platforms) ... */ #endif -#if defined PATH_MAX +#if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX -#elif defined MAXPATHLEN +#elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 @@ -5488,8 +4234,8 @@ int setenv (const char *, const char *, int); # define PATH_SEPARATOR ':' #endif -#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ - defined __OS2__ +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 @@ -5522,10 +4268,10 @@ int setenv (const char *, const char *, int); #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ - if (stale) { free (stale); stale = 0; } \ + if (stale) { free ((void *) stale); stale = 0; } \ } while (0) -#if defined LT_DEBUGWRAPPER +#if defined(LT_DEBUGWRAPPER) static int lt_debug = 1; #else static int lt_debug = 0; @@ -5558,7 +4304,7 @@ volatile const char * MAGIC_EXE = "$magic_exe"; const char * LIB_PATH_VARNAME = "$shlibpath_var"; EOF - if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then func_to_host_path "$temp_rpath" cat < 0) && IS_PATH_SEPARATOR (new_value[len-1])) + int len = strlen (new_value); + while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { - new_value[--len] = '\0'; + new_value[len-1] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); @@ -6336,8 +5082,7 @@ EOF # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { - $debug_cmd - + $opt_debug case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; @@ -6347,18 +5092,17 @@ func_win32_import_lib_p () # func_mode_link arg... func_mode_link () { - $debug_cmd - + $opt_debug case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out - # what system we are compiling for in order to pass an extra + # which system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll that has undefined symbols, in which case not + # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. @@ -6405,7 +5149,7 @@ func_mode_link () non_pic_objects= precious_files_regex= prefer_static_libs=no - preload=false + preload=no prev= prevarg= release= @@ -6417,7 +5161,7 @@ func_mode_link () vinfo= vinfo_number=no weak_libs= - single_module=$wl-single_module + single_module="${wl}-single_module" func_infer_tag $base_compile # We need to know -static, to get the right output filenames. @@ -6425,15 +5169,15 @@ func_mode_link () do case $arg in -shared) - test yes != "$build_libtool_libs" \ - && func_fatal_configuration "cannot build a shared library" + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) - if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then @@ -6466,7 +5210,7 @@ func_mode_link () # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do - arg=$1 + arg="$1" shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result @@ -6483,21 +5227,21 @@ func_mode_link () case $prev in bindir) - bindir=$arg + bindir="$arg" prev= continue ;; dlfiles|dlprefiles) - $preload || { + if test "$preload" = no; then # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" - preload=: - } + preload=yes + fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) - if test no = "$dlself"; then + if test "$dlself" = no; then dlself=needless export_dynamic=yes fi @@ -6505,9 +5249,9 @@ func_mode_link () continue ;; self) - if test dlprefiles = "$prev"; then + if test "$prev" = dlprefiles; then dlself=yes - elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless @@ -6517,7 +5261,7 @@ func_mode_link () continue ;; *) - if test dlfiles = "$prev"; then + if test "$prev" = dlfiles; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" @@ -6528,14 +5272,14 @@ func_mode_link () esac ;; expsyms) - export_symbols=$arg + export_symbols="$arg" test -f "$arg" \ - || func_fatal_error "symbol file '$arg' does not exist" + || func_fatal_error "symbol file \`$arg' does not exist" prev= continue ;; expsyms_regex) - export_symbols_regex=$arg + export_symbols_regex="$arg" prev= continue ;; @@ -6553,13 +5297,7 @@ func_mode_link () continue ;; inst_prefix) - inst_prefix_dir=$arg - prev= - continue - ;; - mllvm) - # Clang does not use LLVM to link, so we can simply discard any - # '-mllvm $arg' options when doing the link step. + inst_prefix_dir="$arg" prev= continue ;; @@ -6583,21 +5321,21 @@ func_mode_link () if test -z "$pic_object" || test -z "$non_pic_object" || - test none = "$pic_object" && - test none = "$non_pic_object"; then - func_fatal_error "cannot find name of object for '$arg'" + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" - xdir=$func_dirname_result + xdir="$func_dirname_result" - if test none != "$pic_object"; then + if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. - pic_object=$xdir$pic_object + pic_object="$xdir$pic_object" - if test dlfiles = "$prev"; then - if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue @@ -6608,7 +5346,7 @@ func_mode_link () fi # CHECK ME: I think I busted this. -Ossama - if test dlprefiles = "$prev"; then + if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= @@ -6616,23 +5354,23 @@ func_mode_link () # A PIC object. func_append libobjs " $pic_object" - arg=$pic_object + arg="$pic_object" fi # Non-PIC object. - if test none != "$non_pic_object"; then + if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. - non_pic_object=$xdir$non_pic_object + non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test none = "$pic_object"; then - arg=$non_pic_object + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. - non_pic_object=$pic_object + non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else @@ -6640,7 +5378,7 @@ func_mode_link () if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" - xdir=$func_dirname_result + xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result @@ -6648,24 +5386,24 @@ func_mode_link () func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else - func_fatal_error "'$arg' is not a valid libtool object" + func_fatal_error "\`$arg' is not a valid libtool object" fi fi done else - func_fatal_error "link input file '$arg' does not exist" + func_fatal_error "link input file \`$arg' does not exist" fi arg=$save_arg prev= continue ;; precious_regex) - precious_files_regex=$arg + precious_files_regex="$arg" prev= continue ;; release) - release=-$arg + release="-$arg" prev= continue ;; @@ -6677,7 +5415,7 @@ func_mode_link () func_fatal_error "only absolute run-paths are allowed" ;; esac - if test rpath = "$prev"; then + if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; @@ -6692,7 +5430,7 @@ func_mode_link () continue ;; shrext) - shrext_cmds=$arg + shrext_cmds="$arg" prev= continue ;; @@ -6732,7 +5470,7 @@ func_mode_link () esac fi # test -n "$prev" - prevarg=$arg + prevarg="$arg" case $arg in -all-static) @@ -6746,7 +5484,7 @@ func_mode_link () -allow-undefined) # FIXME: remove this flag sometime in the future. - func_fatal_error "'-allow-undefined' must not be used because it is the default" + func_fatal_error "\`-allow-undefined' must not be used because it is the default" ;; -avoid-version) @@ -6778,7 +5516,7 @@ func_mode_link () if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi - if test X-export-symbols = "X$arg"; then + if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex @@ -6812,9 +5550,9 @@ func_mode_link () func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then - func_fatal_error "require no space between '-L' and '$1'" + func_fatal_error "require no space between \`-L' and \`$1'" else - func_fatal_error "need path for '-L' option" + func_fatal_error "need path for \`-L' option" fi fi func_resolve_sysroot "$func_stripname_result" @@ -6825,8 +5563,8 @@ func_mode_link () *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ - func_fatal_error "cannot determine absolute directory name of '$dir'" - dir=$absdir + func_fatal_error "cannot determine absolute directory name of \`$dir'" + dir="$absdir" ;; esac case "$deplibs " in @@ -6861,7 +5599,7 @@ func_mode_link () ;; -l*) - if test X-lc = "X$arg" || test X-lm = "X$arg"; then + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) @@ -6869,11 +5607,11 @@ func_mode_link () ;; *-*-os2*) # These systems don't actually have a C library (as such) - test X-lc = "X$arg" && continue + test "X$arg" = "X-lc" && continue ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. - test X-lc = "X$arg" && continue + test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework @@ -6882,16 +5620,16 @@ func_mode_link () ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype - test X-lc = "X$arg" && continue + test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work - test X-lc = "X$arg" && continue + test "X$arg" = "X-lc" && continue ;; esac - elif test X-lc_r = "X$arg"; then + elif test "X$arg" = "X-lc_r"; then case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; @@ -6901,11 +5639,6 @@ func_mode_link () continue ;; - -mllvm) - prev=mllvm - continue - ;; - -module) module=yes continue @@ -6935,7 +5668,7 @@ func_mode_link () ;; -multi_module) - single_module=$wl-multi_module + single_module="${wl}-multi_module" continue ;; @@ -6949,8 +5682,8 @@ func_mode_link () *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. - func_warning "'-no-install' is ignored for $host" - func_warning "assuming '-no-fast-install' instead" + func_warning "\`-no-install' is ignored for $host" + func_warning "assuming \`-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; @@ -7055,14 +5788,14 @@ func_mode_link () func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= - save_ifs=$IFS; IFS=, + save_ifs="$IFS"; IFS=',' for flag in $args; do - IFS=$save_ifs + IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done - IFS=$save_ifs + IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; @@ -7071,15 +5804,15 @@ func_mode_link () func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= - save_ifs=$IFS; IFS=, + save_ifs="$IFS"; IFS=',' for flag in $args; do - IFS=$save_ifs + IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done - IFS=$save_ifs + IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; @@ -7102,7 +5835,7 @@ func_mode_link () # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result + arg="$func_quote_for_eval_result" ;; # Flags to be passed through unchanged, with rationale: @@ -7117,13 +5850,12 @@ func_mode_link () # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support - # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization - # -stdlib=* select c++ std lib with clang + # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ - -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-stdlib=*) + -O*|-flto*|-fwhopr*|-fuse-linker-plugin) func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result + arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" @@ -7133,7 +5865,7 @@ func_mode_link () # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result + arg="$func_quote_for_eval_result" ;; *.$objext) @@ -7154,21 +5886,21 @@ func_mode_link () if test -z "$pic_object" || test -z "$non_pic_object" || - test none = "$pic_object" && - test none = "$non_pic_object"; then - func_fatal_error "cannot find name of object for '$arg'" + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" - xdir=$func_dirname_result + xdir="$func_dirname_result" - test none = "$pic_object" || { + if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. - pic_object=$xdir$pic_object + pic_object="$xdir$pic_object" - if test dlfiles = "$prev"; then - if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue @@ -7179,7 +5911,7 @@ func_mode_link () fi # CHECK ME: I think I busted this. -Ossama - if test dlprefiles = "$prev"; then + if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= @@ -7187,23 +5919,23 @@ func_mode_link () # A PIC object. func_append libobjs " $pic_object" - arg=$pic_object - } + arg="$pic_object" + fi # Non-PIC object. - if test none != "$non_pic_object"; then + if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. - non_pic_object=$xdir$non_pic_object + non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test none = "$pic_object"; then - arg=$non_pic_object + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. - non_pic_object=$pic_object + non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else @@ -7211,7 +5943,7 @@ func_mode_link () if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" - xdir=$func_dirname_result + xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result @@ -7219,7 +5951,7 @@ func_mode_link () func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else - func_fatal_error "'$arg' is not a valid libtool object" + func_fatal_error "\`$arg' is not a valid libtool object" fi fi ;; @@ -7235,11 +5967,11 @@ func_mode_link () # A libtool-controlled library. func_resolve_sysroot "$arg" - if test dlfiles = "$prev"; then + if test "$prev" = dlfiles; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= - elif test dlprefiles = "$prev"; then + elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= @@ -7254,7 +5986,7 @@ func_mode_link () # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result + arg="$func_quote_for_eval_result" ;; esac # arg @@ -7266,9 +5998,9 @@ func_mode_link () done # argument parsing loop test -n "$prev" && \ - func_fatal_help "the '$prevarg' option requires an argument" + func_fatal_help "the \`$prevarg' option requires an argument" - if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" @@ -7277,12 +6009,12 @@ func_mode_link () oldlibs= # calculate the name of the file, without its directory func_basename "$output" - outputname=$func_basename_result - libobjs_save=$libobjs + outputname="$func_basename_result" + libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` + eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi @@ -7290,7 +6022,7 @@ func_mode_link () eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" func_dirname "$output" "/" "" - output_objdir=$func_dirname_result$objdir + output_objdir="$func_dirname_result$objdir" func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. @@ -7313,7 +6045,7 @@ func_mode_link () # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do - if $opt_preserve_dup_deps; then + if $opt_preserve_dup_deps ; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac @@ -7321,7 +6053,7 @@ func_mode_link () func_append libs " $deplib" done - if test lib = "$linkmode"; then + if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps @@ -7353,7 +6085,7 @@ func_mode_link () case $file in *.la) ;; *) - func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" + func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac done @@ -7361,7 +6093,7 @@ func_mode_link () prog) compile_deplibs= finalize_deplibs= - alldeplibs=false + alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" @@ -7373,29 +6105,32 @@ func_mode_link () for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... - if test lib,link = "$linkmode,$pass"; then + if test "$linkmode,$pass" = "lib,link"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done - deplibs=$tmp_deplibs + deplibs="$tmp_deplibs" fi - if test lib,link = "$linkmode,$pass" || - test prog,scan = "$linkmode,$pass"; then - libs=$deplibs + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" deplibs= fi - if test prog = "$linkmode"; then + if test "$linkmode" = prog; then case $pass in - dlopen) libs=$dlfiles ;; - dlpreopen) libs=$dlprefiles ;; - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) + libs="$deplibs %DEPLIBS%" + test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" + ;; esac fi - if test lib,dlpreopen = "$linkmode,$pass"; then + if test "$linkmode,$pass" = "lib,dlpreopen"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs @@ -7416,26 +6151,26 @@ func_mode_link () esac done done - libs=$dlprefiles + libs="$dlprefiles" fi - if test dlopen = "$pass"; then + if test "$pass" = dlopen; then # Collect dlpreopened libraries - save_deplibs=$deplibs + save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= - found=false + found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) - if test prog,link = "$linkmode,$pass"; then + if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" - if test lib = "$linkmode"; then + if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; @@ -7445,13 +6180,13 @@ func_mode_link () continue ;; -l*) - if test lib != "$linkmode" && test prog != "$linkmode"; then - func_warning "'-l' is ignored for archives/objects" + if test "$linkmode" != lib && test "$linkmode" != prog; then + func_warning "\`-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result - if test lib = "$linkmode"; then + if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" @@ -7459,22 +6194,31 @@ func_mode_link () for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library - lib=$searchdir/lib$name$search_ext + lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then - if test .la = "$search_ext"; then - found=: + if test "$search_ext" = ".la"; then + found=yes else - found=false + found=no fi break 2 fi done done - if $found; then - # deplib is a libtool library + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. - if test yes = "$allow_libtool_libs_with_static_runtimes"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then @@ -7482,19 +6226,19 @@ func_mode_link () old_library= func_source "$lib" for l in $old_library $library_names; do - ll=$l + ll="$l" done - if test "X$ll" = "X$old_library"; then # only static version available - found=false + if test "X$ll" = "X$old_library" ; then # only static version available + found=no func_dirname "$lib" "" "." - ladir=$func_dirname_result + ladir="$func_dirname_result" lib=$ladir/$old_library - if test prog,link = "$linkmode,$pass"; then + if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" - test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi @@ -7503,25 +6247,15 @@ func_mode_link () *) ;; esac fi - else - # deplib doesn't seem to be a libtool library - if test prog,link = "$linkmode,$pass"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" - fi - continue fi ;; # -l *.ltframework) - if test prog,link = "$linkmode,$pass"; then + if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" - if test lib = "$linkmode"; then + if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; @@ -7534,18 +6268,18 @@ func_mode_link () case $linkmode in lib) deplibs="$deplib $deplibs" - test conv = "$pass" && continue + test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) - if test conv = "$pass"; then + if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi - if test scan = "$pass"; then + if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" @@ -7556,13 +6290,13 @@ func_mode_link () func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) - func_warning "'-L' is ignored for archives/objects" + func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) - if test link = "$pass"; then + if test "$pass" = link; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result @@ -7580,7 +6314,7 @@ func_mode_link () lib=$func_resolve_sysroot_result ;; *.$libext) - if test conv = "$pass"; then + if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi @@ -7591,26 +6325,21 @@ func_mode_link () case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) - valid_a_lib=false + valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=: + valid_a_lib=yes fi ;; pass_all) - valid_a_lib=: + valid_a_lib=yes ;; esac - if $valid_a_lib; then - echo - $ECHO "*** Warning: Linking the shared library $output against the" - $ECHO "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - else + if test "$valid_a_lib" != yes; then echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" @@ -7618,13 +6347,18 @@ func_mode_link () echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." + else + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) - if test link != "$pass"; then + if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" @@ -7635,10 +6369,10 @@ func_mode_link () esac # linkmode ;; # *.$libext *.lo | *.$objext) - if test conv = "$pass"; then + if test "$pass" = conv; then deplibs="$deplib $deplibs" - elif test prog = "$linkmode"; then - if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" @@ -7651,20 +6385,22 @@ func_mode_link () continue ;; %DEPLIBS%) - alldeplibs=: + alldeplibs=yes continue ;; esac # case $deplib - $found || test -f "$lib" \ - || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" + if test "$found" = yes || test -f "$lib"; then : + else + func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" + fi # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ - || func_fatal_error "'$lib' is not a valid libtool archive" + || func_fatal_error "\`$lib' is not a valid libtool archive" func_dirname "$lib" "" "." - ladir=$func_dirname_result + ladir="$func_dirname_result" dlname= dlopen= @@ -7694,36 +6430,36 @@ func_mode_link () done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - if test lib,link = "$linkmode,$pass" || - test prog,scan = "$linkmode,$pass" || - { test prog != "$linkmode" && test lib != "$linkmode"; }; then + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi - if test conv = "$pass"; then + if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then - func_fatal_error "cannot find name of link library for '$lib'" + func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" - elif test prog != "$linkmode" && test lib != "$linkmode"; then - func_fatal_error "'$lib' is not a convenience library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + func_fatal_error "\`$lib' is not a convenience library" fi - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_preserve_dup_deps; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done continue fi # $pass = conv @@ -7731,26 +6467,26 @@ func_mode_link () # Get the name of the library we link against. linklib= if test -n "$old_library" && - { test yes = "$prefer_static_libs" || - test built,no = "$prefer_static_libs,$installed"; }; then + { test "$prefer_static_libs" = yes || + test "$prefer_static_libs,$installed" = "built,no"; }; then linklib=$old_library else for l in $old_library $library_names; do - linklib=$l + linklib="$l" done fi if test -z "$linklib"; then - func_fatal_error "cannot find name of link library for '$lib'" + func_fatal_error "cannot find name of link library for \`$lib'" fi # This library was specified with -dlopen. - if test dlopen = "$pass"; then - test -z "$libdir" \ - && func_fatal_error "cannot -dlopen a convenience library: '$lib'" + if test "$pass" = dlopen; then + if test -z "$libdir"; then + func_fatal_error "cannot -dlopen a convenience library: \`$lib'" + fi if test -z "$dlname" || - test yes != "$dlopen_support" || - test no = "$build_libtool_libs" - then + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't @@ -7764,40 +6500,40 @@ func_mode_link () # We need an absolute path. case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then - func_warning "cannot determine absolute directory name of '$ladir'" + func_warning "cannot determine absolute directory name of \`$ladir'" func_warning "passing it literally to the linker, although it might fail" - abs_ladir=$ladir + abs_ladir="$ladir" fi ;; esac func_basename "$lib" - laname=$func_basename_result + laname="$func_basename_result" # Find the relevant object directory and library name. - if test yes = "$installed"; then + if test "X$installed" = Xyes; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - func_warning "library '$lib' was moved." - dir=$ladir - absdir=$abs_ladir - libdir=$abs_ladir + func_warning "library \`$lib' was moved." + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" else - dir=$lt_sysroot$libdir - absdir=$lt_sysroot$libdir + dir="$lt_sysroot$libdir" + absdir="$lt_sysroot$libdir" fi - test yes = "$hardcode_automatic" && avoidtemprpath=yes + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir=$ladir - absdir=$abs_ladir + dir="$ladir" + absdir="$abs_ladir" # Remove this search path later func_append notinst_path " $abs_ladir" else - dir=$ladir/$objdir - absdir=$abs_ladir/$objdir + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" # Remove this search path later func_append notinst_path " $abs_ladir" fi @@ -7806,11 +6542,11 @@ func_mode_link () name=$func_stripname_result # This library was specified with -dlpreopen. - if test dlpreopen = "$pass"; then - if test -z "$libdir" && test prog = "$linkmode"; then - func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" + if test "$pass" = dlpreopen; then + if test -z "$libdir" && test "$linkmode" = prog; then + func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi - case $host in + case "$host" in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both @@ -7854,9 +6590,9 @@ func_mode_link () if test -z "$libdir"; then # Link the convenience library - if test lib = "$linkmode"; then + if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" - elif test prog,link = "$linkmode,$pass"; then + elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else @@ -7866,14 +6602,14 @@ func_mode_link () fi - if test prog = "$linkmode" && test link != "$pass"; then + if test "$linkmode" = prog && test "$pass" != link; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" - linkalldeplibs=false - if test no != "$link_all_deplibs" || test -z "$library_names" || - test no = "$build_libtool_libs"; then - linkalldeplibs=: + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes fi tmp_libs= @@ -7885,14 +6621,14 @@ func_mode_link () ;; esac # Need to link against all dependency_libs? - if $linkalldeplibs; then + if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi - if $opt_preserve_dup_deps; then + if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac @@ -7902,15 +6638,15 @@ func_mode_link () continue fi # $linkmode = prog... - if test prog,link = "$linkmode,$pass"; then + if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && - { { test no = "$prefer_static_libs" || - test built,yes = "$prefer_static_libs,$installed"; } || + { { test "$prefer_static_libs" = no || + test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. - case $temp_rpath: in + case "$temp_rpath:" in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac @@ -7939,9 +6675,9 @@ func_mode_link () esac fi # $linkmode,$pass = prog,link... - if $alldeplibs && - { test pass_all = "$deplibs_check_method" || - { test yes = "$build_libtool_libs" && + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue @@ -7950,11 +6686,11 @@ func_mode_link () link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs - if test built = "$use_static_libs" && test yes = "$installed"; then + if test "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && - { test no = "$use_static_libs" || test -z "$old_library"; }; then + { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded @@ -7962,7 +6698,7 @@ func_mode_link () need_relink=no ;; *) - if test no = "$installed"; then + if test "$installed" = no; then func_append notinst_deplibs " $lib" need_relink=yes fi @@ -7972,24 +6708,24 @@ func_mode_link () # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! - dlopenmodule= + dlopenmodule="" for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then - dlopenmodule=$dlpremoduletest + dlopenmodule="$dlpremoduletest" break fi done - if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then echo - if test prog = "$linkmode"; then + if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi - if test lib = "$linkmode" && - test yes = "$hardcode_into_libs"; then + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. @@ -8017,43 +6753,43 @@ func_mode_link () # figure out the soname set dummy $library_names shift - realname=$1 + realname="$1" shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then - soname=$dlname + soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result - versuffix=-$major + versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else - soname=$realname + soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use - soroot=$soname + soroot="$soname" func_basename "$soroot" - soname=$func_basename_result + soname="$func_basename_result" func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else - func_verbose "extracting exported symbol list from '$soname'" + func_verbose "extracting exported symbol list from \`$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else - func_verbose "generating import library for '$soname'" + func_verbose "generating import library for \`$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library @@ -8061,58 +6797,58 @@ func_mode_link () linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" - if test prog = "$linkmode" || test relink != "$opt_mode"; then + if test "$linkmode" = prog || test "$opt_mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) - if test no = "$hardcode_direct"; then - add=$dir/$linklib + if test "$hardcode_direct" = no; then + add="$dir/$linklib" case $host in - *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; - *-*-sysv4*uw2*) add_dir=-L$dir ;; + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ - *-*-unixware7*) add_dir=-L$dir ;; + *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) - # if the lib is a (non-dlopened) module then we cannot + # if the lib is a (non-dlopened) module then we can not # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | - $GREP ": [^:]* bundle" >/dev/null; then + $GREP ": [^:]* bundle" >/dev/null ; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" - if test -z "$old_library"; then + if test -z "$old_library" ; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else - add=$dir/$old_library + add="$dir/$old_library" fi elif test -n "$old_library"; then - add=$dir/$old_library + add="$dir/$old_library" fi fi esac - elif test no = "$hardcode_minus_L"; then + elif test "$hardcode_minus_L" = no; then case $host in - *-*-sunos*) add_shlibpath=$dir ;; + *-*-sunos*) add_shlibpath="$dir" ;; esac - add_dir=-L$dir - add=-l$name - elif test no = "$hardcode_shlibpath_var"; then - add_shlibpath=$dir - add=-l$name + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" else lib_linked=no fi ;; relink) - if test yes = "$hardcode_direct" && - test no = "$hardcode_direct_absolute"; then - add=$dir/$linklib - elif test yes = "$hardcode_minus_L"; then - add_dir=-L$absdir + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$absdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in @@ -8121,10 +6857,10 @@ func_mode_link () ;; esac fi - add=-l$name - elif test yes = "$hardcode_shlibpath_var"; then - add_shlibpath=$dir - add=-l$name + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" else lib_linked=no fi @@ -8132,7 +6868,7 @@ func_mode_link () *) lib_linked=no ;; esac - if test yes != "$lib_linked"; then + if test "$lib_linked" != yes; then func_fatal_configuration "unsupported hardcode properties" fi @@ -8142,15 +6878,15 @@ func_mode_link () *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi - if test prog = "$linkmode"; then + if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" - if test yes != "$hardcode_direct" && - test yes != "$hardcode_minus_L" && - test yes = "$hardcode_shlibpath_var"; then + if test "$hardcode_direct" != yes && + test "$hardcode_minus_L" != yes && + test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; @@ -8159,33 +6895,33 @@ func_mode_link () fi fi - if test prog = "$linkmode" || test relink = "$opt_mode"; then + if test "$linkmode" = prog || test "$opt_mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. - if test yes = "$hardcode_direct" && - test no = "$hardcode_direct_absolute"; then - add=$libdir/$linklib - elif test yes = "$hardcode_minus_L"; then - add_dir=-L$libdir - add=-l$name - elif test yes = "$hardcode_shlibpath_var"; then + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac - add=-l$name - elif test yes = "$hardcode_automatic"; then + add="-l$name" + elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib"; then - add=$inst_prefix_dir$libdir/$linklib + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" else - add=$libdir/$linklib + add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. - add_dir=-L$libdir + add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in @@ -8194,10 +6930,10 @@ func_mode_link () ;; esac fi - add=-l$name + add="-l$name" fi - if test prog = "$linkmode"; then + if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else @@ -8205,43 +6941,43 @@ func_mode_link () test -n "$add" && deplibs="$add $deplibs" fi fi - elif test prog = "$linkmode"; then + elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. - if test unsupported != "$hardcode_direct"; then - test -n "$old_library" && linklib=$old_library + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi - elif test yes = "$build_libtool_libs"; then + elif test "$build_libtool_libs" = yes; then # Not a shared library - if test pass_all != "$deplibs_check_method"; then + if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo - $ECHO "*** Warning: This system cannot link to static lib archive $lib." + $ECHO "*** Warning: This system can not link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." - if test yes = "$module"; then + if test "$module" = yes; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." - echo "*** 'nm' from GNU binutils and a full rebuild may help." + echo "*** \`nm' from GNU binutils and a full rebuild may help." fi - if test no = "$build_old_libs"; then + if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else @@ -8254,11 +6990,11 @@ func_mode_link () fi fi # link shared/static library? - if test lib = "$linkmode"; then + if test "$linkmode" = lib; then if test -n "$dependency_libs" && - { test yes != "$hardcode_into_libs" || - test yes = "$build_old_libs" || - test yes = "$link_static"; }; then + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do @@ -8272,12 +7008,12 @@ func_mode_link () *) func_append temp_deplibs " $libdir";; esac done - dependency_libs=$temp_deplibs + dependency_libs="$temp_deplibs" fi func_append newlib_search_path " $absdir" # Link against this library - test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do @@ -8287,7 +7023,7 @@ func_mode_link () func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac - if $opt_preserve_dup_deps; then + if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; @@ -8296,12 +7032,12 @@ func_mode_link () func_append tmp_libs " $func_resolve_sysroot_result" done - if test no != "$link_all_deplibs"; then + if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in - -L*) path=$deplib ;; + -L*) path="$deplib" ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result @@ -8309,12 +7045,12 @@ func_mode_link () dir=$func_dirname_result # We need an absolute path. case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then - func_warning "cannot determine absolute directory name of '$dir'" - absdir=$dir + func_warning "cannot determine absolute directory name of \`$dir'" + absdir="$dir" fi ;; esac @@ -8322,35 +7058,35 @@ func_mode_link () case $host in *-*-darwin*) depdepl= - eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names"; then - for tmp in $deplibrary_names; do + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do depdepl=$tmp done - if test -f "$absdir/$objdir/$depdepl"; then - depdepl=$absdir/$objdir/$depdepl - darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -f "$absdir/$objdir/$depdepl" ; then + depdepl="$absdir/$objdir/$depdepl" + darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then - darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi - func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" - func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" + func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" + func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi ;; *) - path=-L$absdir/$objdir + path="-L$absdir/$objdir" ;; esac else - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ - func_fatal_error "'$deplib' is not a valid libtool archive" + func_fatal_error "\`$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ - func_warning "'$deplib' seems to be moved" + func_warning "\`$deplib' seems to be moved" - path=-L$absdir + path="-L$absdir" fi ;; esac @@ -8362,23 +7098,23 @@ func_mode_link () fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs - if test link = "$pass"; then - if test prog = "$linkmode"; then + if test "$pass" = link; then + if test "$linkmode" = "prog"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi - dependency_libs=$newdependency_libs - if test dlpreopen = "$pass"; then + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi - if test dlopen != "$pass"; then - test conv = "$pass" || { + if test "$pass" != dlopen; then + if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do @@ -8388,12 +7124,12 @@ func_mode_link () esac done newlib_search_path= - } + fi - if test prog,link = "$linkmode,$pass"; then - vars="compile_deplibs finalize_deplibs" + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" else - vars=deplibs + vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order @@ -8454,59 +7190,59 @@ func_mode_link () # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= - for i in $dependency_libs; do + for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) - i= + i="" ;; esac - if test -n "$i"; then + if test -n "$i" ; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass - if test prog = "$linkmode"; then - dlfiles=$newdlfiles + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" fi - if test prog = "$linkmode" || test lib = "$linkmode"; then - dlprefiles=$newdlprefiles + if test "$linkmode" = prog || test "$linkmode" = lib; then + dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) - if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then - func_warning "'-dlopen' is ignored for archives" + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) - func_warning "'-l' and '-L' are ignored for archives" ;; + func_warning "\`-l' and \`-L' are ignored for archives" ;; esac test -n "$rpath" && \ - func_warning "'-rpath' is ignored for archives" + func_warning "\`-rpath' is ignored for archives" test -n "$xrpath" && \ - func_warning "'-R' is ignored for archives" + func_warning "\`-R' is ignored for archives" test -n "$vinfo" && \ - func_warning "'-version-info/-version-number' is ignored for archives" + func_warning "\`-version-info/-version-number' is ignored for archives" test -n "$release" && \ - func_warning "'-release' is ignored for archives" + func_warning "\`-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ - func_warning "'-export-symbols' is ignored for archives" + func_warning "\`-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no - oldlibs=$output + oldlibs="$output" func_append objs "$old_deplibs" ;; lib) - # Make sure we only generate libraries of the form 'libNAME.la'. + # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" @@ -8515,10 +7251,10 @@ func_mode_link () eval libname=\"$libname_spec\" ;; *) - test no = "$module" \ - && func_fatal_help "libtool library '$output' must begin with 'lib'" + test "$module" = no && \ + func_fatal_help "libtool library \`$output' must begin with \`lib'" - if test no != "$need_lib_prefix"; then + if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result @@ -8532,8 +7268,8 @@ func_mode_link () esac if test -n "$objs"; then - if test pass_all != "$deplibs_check_method"; then - func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" + if test "$deplibs_check_method" != pass_all; then + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" @@ -8542,21 +7278,21 @@ func_mode_link () fi fi - test no = "$dlself" \ - || func_warning "'-dlopen self' is ignored for libtool libraries" + test "$dlself" != no && \ + func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath shift - test 1 -lt "$#" \ - && func_warning "ignoring multiple '-rpath's for a libtool library" + test "$#" -gt 1 && \ + func_warning "ignoring multiple \`-rpath's for a libtool library" - install_libdir=$1 + install_libdir="$1" oldlibs= if test -z "$rpath"; then - if test yes = "$build_libtool_libs"; then + if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. - # Some compilers have problems with a '.al' extension so + # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" @@ -8565,20 +7301,20 @@ func_mode_link () fi test -n "$vinfo" && \ - func_warning "'-version-info/-version-number' is ignored for convenience libraries" + func_warning "\`-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ - func_warning "'-release' is ignored for convenience libraries" + func_warning "\`-release' is ignored for convenience libraries" else # Parse the version information argument. - save_ifs=$IFS; IFS=: + save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 shift - IFS=$save_ifs + IFS="$save_ifs" test -n "$7" && \ - func_fatal_help "too many parameters to '-version-info'" + func_fatal_help "too many parameters to \`-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts @@ -8586,42 +7322,45 @@ func_mode_link () case $vinfo_number in yes) - number_major=$1 - number_minor=$2 - number_revision=$3 + number_major="$1" + number_minor="$2" + number_revision="$3" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix - # that has an extra 1 added just for fun + # which has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result - age=$number_minor - revision=$number_revision + age="$number_minor" + revision="$number_revision" ;; freebsd-aout|freebsd-elf|qnx|sunos) - current=$number_major - revision=$number_minor - age=0 + current="$number_major" + revision="$number_minor" + age="0" ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result - age=$number_minor - revision=$number_minor + age="$number_minor" + revision="$number_minor" lt_irix_increment=no ;; + *) + func_fatal_configuration "$modename: unknown library version type \`$version_type'" + ;; esac ;; no) - current=$1 - revision=$2 - age=$3 + current="$1" + revision="$2" + age="$3" ;; esac @@ -8629,30 +7368,30 @@ func_mode_link () case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) - func_error "CURRENT '$current' must be a nonnegative integer" - func_fatal_error "'$vinfo' is not valid version information" + func_error "CURRENT \`$current' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) - func_error "REVISION '$revision' must be a nonnegative integer" - func_fatal_error "'$vinfo' is not valid version information" + func_error "REVISION \`$revision' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) - func_error "AGE '$age' must be a nonnegative integer" - func_fatal_error "'$vinfo' is not valid version information" + func_error "AGE \`$age' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then - func_error "AGE '$age' is greater than the current interface number '$current'" - func_fatal_error "'$vinfo' is not valid version information" + func_error "AGE \`$age' is greater than the current interface number \`$current'" + func_fatal_error "\`$vinfo' is not valid version information" fi # Calculate the version variables. @@ -8667,35 +7406,26 @@ func_mode_link () # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result - versuffix=$major.$age.$revision + versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result - xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - # On Darwin other compilers - case $CC in - nagfor*) - verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" - ;; - *) - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - ;; - esac ;; freebsd-aout) - major=.$current - versuffix=.$current.$revision + major=".$current" + versuffix=".$current.$revision"; ;; freebsd-elf) - major=.$current - versuffix=.$current + major=".$current" + versuffix=".$current" ;; irix | nonstopux) - if test no = "$lt_irix_increment"; then + if test "X$lt_irix_increment" = "Xno"; then func_arith $current - $age else func_arith $current - $age + 1 @@ -8706,69 +7436,69 @@ func_mode_link () nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac - verstring=$verstring_prefix$major.$revision + verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision - while test 0 -ne "$loop"; do + while test "$loop" -ne 0; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result - verstring=$verstring_prefix$major.$iface:$verstring + verstring="$verstring_prefix$major.$iface:$verstring" done - # Before this point, $major must not contain '.'. + # Before this point, $major must not contain `.'. major=.$major - versuffix=$major.$revision + versuffix="$major.$revision" ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result - versuffix=$major.$age.$revision + versuffix="$major.$age.$revision" ;; osf) func_arith $current - $age major=.$func_arith_result - versuffix=.$current.$age.$revision - verstring=$current.$age.$revision + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age - while test 0 -ne "$loop"; do + while test "$loop" -ne 0; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result - verstring=$verstring:$iface.0 + verstring="$verstring:${iface}.0" done # Make executables depend on our current version. - func_append verstring ":$current.0" + func_append verstring ":${current}.0" ;; qnx) - major=.$current - versuffix=.$current + major=".$current" + versuffix=".$current" ;; sunos) - major=.$current - versuffix=.$current.$revision + major=".$current" + versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 file systems. + # extension on DOS 8.3 filesystems. func_arith $current - $age major=$func_arith_result - versuffix=-$major + versuffix="-$major" ;; *) - func_fatal_configuration "unknown library version type '$version_type'" + func_fatal_configuration "unknown library version type \`$version_type'" ;; esac @@ -8782,45 +7512,42 @@ func_mode_link () verstring= ;; *) - verstring=0.0 + verstring="0.0" ;; esac - if test no = "$need_version"; then + if test "$need_version" = no; then versuffix= else - versuffix=.0.0 + versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided - if test yes,no = "$avoid_version,$need_version"; then + if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= - verstring= + verstring="" fi # Check to see if the archive will have undefined symbols. - if test yes = "$allow_undefined"; then - if test unsupported = "$allow_undefined_flag"; then - if test yes = "$build_old_libs"; then - func_warning "undefined symbols not allowed in $host shared libraries; building static only" - build_libtool_libs=no - else - func_fatal_error "can't build $host shared library unless -no-undefined is specified" - fi + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + func_warning "undefined symbols not allowed in $host shared libraries" + build_libtool_libs=no + build_old_libs=yes fi else # Don't allow undefined symbols. - allow_undefined_flag=$no_undefined_flag + allow_undefined_flag="$no_undefined_flag" fi fi - func_generate_dlsyms "$libname" "$libname" : + func_generate_dlsyms "$libname" "$libname" "yes" func_append libobjs " $symfileobj" - test " " = "$libobjs" && libobjs= + test "X$libobjs" = "X " && libobjs= - if test relink != "$opt_mode"; then + if test "$opt_mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= @@ -8829,8 +7556,8 @@ func_mode_link () case $p in *.$objext | *.gcno) ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) - if test -n "$precious_files_regex"; then + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue @@ -8846,11 +7573,11 @@ func_mode_link () fi # Now set the variables for building old libraries. - if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. @@ -8871,13 +7598,13 @@ func_mode_link () *) func_append finalize_rpath " $libdir" ;; esac done - if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles=$dlfiles + old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in @@ -8887,7 +7614,7 @@ func_mode_link () done # Make sure dlprefiles contains only unique files - old_dlprefiles=$dlprefiles + old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in @@ -8896,7 +7623,7 @@ func_mode_link () esac done - if test yes = "$build_libtool_libs"; then + if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) @@ -8920,7 +7647,7 @@ func_mode_link () ;; *) # Add libc to deplibs on all other systems if necessary. - if test yes = "$build_libtool_need_lc"; then + if test "$build_libtool_need_lc" = "yes"; then func_append deplibs " -lc" fi ;; @@ -8936,9 +7663,9 @@ func_mode_link () # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? - release= - versuffix= - major= + release="" + versuffix="" + major="" newdeplibs= droppeddeps=no case $deplibs_check_method in @@ -8967,20 +7694,20 @@ EOF -l*) func_stripname -l '' "$i" name=$func_stripname_result - if test yes = "$allow_libtool_libs_with_static_runtimes"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $i "*) func_append newdeplibs " $i" - i= + i="" ;; esac fi - if test -n "$i"; then + if test -n "$i" ; then libname=`eval "\\$ECHO \"$libname_spec\""` deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` set dummy $deplib_matches; shift deplib_match=$1 - if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then func_append newdeplibs " $i" else droppeddeps=yes @@ -9010,20 +7737,20 @@ EOF $opt_dry_run || $RM conftest if $LTCC $LTCFLAGS -o conftest conftest.c $i; then ldd_output=`ldd conftest` - if test yes = "$allow_libtool_libs_with_static_runtimes"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $i "*) func_append newdeplibs " $i" - i= + i="" ;; esac fi - if test -n "$i"; then + if test -n "$i" ; then libname=`eval "\\$ECHO \"$libname_spec\""` deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` set dummy $deplib_matches; shift deplib_match=$1 - if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then func_append newdeplibs " $i" else droppeddeps=yes @@ -9060,24 +7787,24 @@ EOF -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result - if test yes = "$allow_libtool_libs_with_static_runtimes"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" - a_deplib= + a_deplib="" ;; esac fi - if test -n "$a_deplib"; then + if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` if test -n "$file_magic_glob"; then libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` else libnameglob=$libname fi - test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob` + test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - if test yes = "$want_nocaseglob"; then + if test "$want_nocaseglob" = yes; then shopt -s nocaseglob potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` $nocaseglob @@ -9095,25 +7822,25 @@ EOF # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? - potlib=$potent_lib + potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | $SED 's/.* -> //'` + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; - *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" - a_deplib= + a_deplib="" break 2 fi done done fi - if test -n "$a_deplib"; then + if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." @@ -9121,7 +7848,7 @@ EOF echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib"; then + if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" @@ -9144,30 +7871,30 @@ EOF -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result - if test yes = "$allow_libtool_libs_with_static_runtimes"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" - a_deplib= + a_deplib="" ;; esac fi - if test -n "$a_deplib"; then + if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do - potlib=$potent_lib # see symlink-check above in file_magic test + potlib="$potent_lib" # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" - a_deplib= + a_deplib="" break 2 fi done done fi - if test -n "$a_deplib"; then + if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." @@ -9175,7 +7902,7 @@ EOF echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib"; then + if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" @@ -9191,18 +7918,18 @@ EOF done # Gone through all deplibs. ;; none | unknown | *) - newdeplibs= + newdeplibs="" tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` - if test yes = "$allow_libtool_libs_with_static_runtimes"; then - for i in $predeps $postdeps; do + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` done fi case $tmp_deplibs in *[!\ \ ]*) echo - if test none = "$deplibs_check_method"; then + if test "X$deplibs_check_method" = "Xnone"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." @@ -9226,8 +7953,8 @@ EOF ;; esac - if test yes = "$droppeddeps"; then - if test yes = "$module"; then + if test "$droppeddeps" = yes; then + if test "$module" = yes; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" @@ -9236,12 +7963,12 @@ EOF if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." - echo "*** 'nm' from GNU binutils and a full rebuild may help." + echo "*** \`nm' from GNU binutils and a full rebuild may help." fi - if test no = "$build_old_libs"; then - oldlibs=$output_objdir/$libname.$libext + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else @@ -9252,14 +7979,14 @@ EOF echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." - if test no = "$allow_undefined"; then + if test "$allow_undefined" = no; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." - if test no = "$build_old_libs"; then - oldlibs=$output_objdir/$libname.$libext + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else @@ -9305,7 +8032,7 @@ EOF *) func_append new_libs " $deplib" ;; esac done - deplibs=$new_libs + deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= @@ -9313,25 +8040,25 @@ EOF dlname= # Test again, we may have decided not to build it any more - if test yes = "$build_libtool_libs"; then - # Remove $wl instances when linking with ld. + if test "$build_libtool_libs" = yes; then + # Remove ${wl} instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac - if test yes = "$hardcode_into_libs"; then + if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= - rpath=$finalize_rpath - test relink = "$opt_mode" || rpath=$compile_rpath$rpath + rpath="$finalize_rpath" + test "$opt_mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then - hardcode_libdirs=$libdir + hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in @@ -9356,7 +8083,7 @@ EOF # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then - libdir=$hardcode_libdirs + libdir="$hardcode_libdirs" eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then @@ -9370,8 +8097,8 @@ EOF test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi - shlibpath=$finalize_shlibpath - test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath + shlibpath="$finalize_shlibpath" + test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi @@ -9381,19 +8108,19 @@ EOF eval library_names=\"$library_names_spec\" set dummy $library_names shift - realname=$1 + realname="$1" shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else - soname=$realname + soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi - lib=$output_objdir/$realname + lib="$output_objdir/$realname" linknames= for link do @@ -9407,7 +8134,7 @@ EOF delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" - export_symbols=$output_objdir/$libname.uexp + export_symbols="$output_objdir/$libname.uexp" func_append delfiles " $export_symbols" fi @@ -9416,31 +8143,31 @@ EOF cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile - func_dll_def_p "$export_symbols" || { + if test "x`$SED 1q $export_symbols`" != xEXPORTS; then # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. - orig_export_symbols=$export_symbols + orig_export_symbols="$export_symbols" export_symbols= always_export_symbols=yes - } + fi fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then - if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then - func_verbose "generating symbol list for '$libname.la'" - export_symbols=$output_objdir/$libname.exp + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds - save_ifs=$IFS; IFS='~' + save_ifs="$IFS"; IFS='~' for cmd1 in $cmds; do - IFS=$save_ifs + IFS="$save_ifs" # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in @@ -9454,7 +8181,7 @@ EOF try_normal_branch=no ;; esac - if test yes = "$try_normal_branch" \ + if test "$try_normal_branch" = yes \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then @@ -9465,7 +8192,7 @@ EOF output_la=$func_basename_result save_libobjs=$libobjs save_output=$output - output=$output_objdir/$output_la.nm + output=${output_objdir}/${output_la}.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" @@ -9488,8 +8215,8 @@ EOF break fi done - IFS=$save_ifs - if test -n "$export_symbols_regex" && test : != "$skipped_export"; then + IFS="$save_ifs" + if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi @@ -9497,16 +8224,16 @@ EOF fi if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols=$export_symbols - test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi - if test : != "$skipped_export" && test -n "$orig_export_symbols"; then + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands, which not all seds can handle. GNU sed should be fine + # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. @@ -9525,11 +8252,11 @@ EOF ;; esac done - deplibs=$tmp_deplibs + deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && - test yes = "$compiler_needs_object" && + test "$compiler_needs_object" = yes && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. @@ -9540,7 +8267,7 @@ EOF eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else - gentop=$output_objdir/${outputname}x + gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $convenience @@ -9549,18 +8276,18 @@ EOF fi fi - if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking - if test relink = "$opt_mode"; then + if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. - if test yes = "$module" && test -n "$module_cmds"; then + if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds @@ -9578,7 +8305,7 @@ EOF fi fi - if test : != "$skipped_export" && + if test "X$skipped_export" != "X:" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then @@ -9611,8 +8338,8 @@ EOF last_robj= k=1 - if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then - output=$output_objdir/$output_la.lnkscript + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then + output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs @@ -9624,14 +8351,14 @@ EOF func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result - elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then - output=$output_objdir/$output_la.lnk + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then + output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= - if test yes = "$compiler_needs_object"; then + if test "$compiler_needs_object" = yes; then firstobj="$1 " shift fi @@ -9646,7 +8373,7 @@ EOF else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." - output=$output_objdir/$output_la-$k.$objext + output=$output_objdir/$output_la-${k}.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result @@ -9658,13 +8385,13 @@ EOF func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result - if test -z "$objlist" || + if test "X$objlist" = X || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. - if test 1 -eq "$k"; then + if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" @@ -9674,10 +8401,10 @@ EOF reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi - last_robj=$output_objdir/$output_la-$k.$objext + last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result - output=$output_objdir/$output_la-$k.$objext + output=$output_objdir/$output_la-${k}.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result @@ -9689,9 +8416,9 @@ EOF # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" - eval concat_cmds=\"\$concat_cmds$reload_cmds\" + eval concat_cmds=\"\${concat_cmds}$reload_cmds\" if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi func_append delfiles " $output" @@ -9699,9 +8426,9 @@ EOF output= fi - ${skipped_export-false} && { - func_verbose "generating symbol list for '$libname.la'" - export_symbols=$output_objdir/$libname.exp + if ${skipped_export-false}; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. @@ -9710,16 +8437,16 @@ EOF if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi - } + fi test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. - save_ifs=$IFS; IFS='~' + save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do - IFS=$save_ifs - $opt_quiet || { + IFS="$save_ifs" + $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } @@ -9727,7 +8454,7 @@ EOF lt_exit=$? # Restore the uninstalled library and exit - if test relink = "$opt_mode"; then + if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) @@ -9736,7 +8463,7 @@ EOF exit $lt_exit } done - IFS=$save_ifs + IFS="$save_ifs" if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' @@ -9744,18 +8471,18 @@ EOF fi fi - ${skipped_export-false} && { + if ${skipped_export-false}; then if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols=$export_symbols - test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands, which not all seds can handle. GNU sed should be fine + # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. @@ -9764,7 +8491,7 @@ EOF export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi - } + fi libobjs=$output # Restore the value of output. @@ -9778,7 +8505,7 @@ EOF # value of $libobjs for piecewise linking. # Do each of the archive commands. - if test yes = "$module" && test -n "$module_cmds"; then + if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else @@ -9800,7 +8527,7 @@ EOF # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then - gentop=$output_objdir/${outputname}x + gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles @@ -9808,12 +8535,11 @@ EOF test "X$libobjs" = "X " && libobjs= fi - save_ifs=$IFS; IFS='~' + save_ifs="$IFS"; IFS='~' for cmd in $cmds; do - IFS=$sp$nl + IFS="$save_ifs" eval cmd=\"$cmd\" - IFS=$save_ifs - $opt_quiet || { + $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } @@ -9821,7 +8547,7 @@ EOF lt_exit=$? # Restore the uninstalled library and exit - if test relink = "$opt_mode"; then + if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) @@ -9830,10 +8556,10 @@ EOF exit $lt_exit } done - IFS=$save_ifs + IFS="$save_ifs" # Restore the uninstalled library and exit - if test relink = "$opt_mode"; then + if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then @@ -9853,39 +8579,39 @@ EOF done # If -module or -export-dynamic was specified, set the dlname. - if test yes = "$module" || test yes = "$export_dynamic"; then + if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. - dlname=$soname + dlname="$soname" fi fi ;; obj) - if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then - func_warning "'-dlopen' is ignored for objects" + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) - func_warning "'-l' and '-L' are ignored for objects" ;; + func_warning "\`-l' and \`-L' are ignored for objects" ;; esac test -n "$rpath" && \ - func_warning "'-rpath' is ignored for objects" + func_warning "\`-rpath' is ignored for objects" test -n "$xrpath" && \ - func_warning "'-R' is ignored for objects" + func_warning "\`-R' is ignored for objects" test -n "$vinfo" && \ - func_warning "'-version-info' is ignored for objects" + func_warning "\`-version-info' is ignored for objects" test -n "$release" && \ - func_warning "'-release' is ignored for objects" + func_warning "\`-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ - func_fatal_error "cannot build library object '$output' from non-libtool objects" + func_fatal_error "cannot build library object \`$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" @@ -9893,7 +8619,7 @@ EOF ;; *) libobj= - obj=$output + obj="$output" ;; esac @@ -9916,7 +8642,7 @@ EOF eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` else - gentop=$output_objdir/${obj}x + gentop="$output_objdir/${obj}x" func_append generated " $gentop" func_extract_archives $gentop $convenience @@ -9925,12 +8651,12 @@ EOF fi # If we're not building shared, we need to use non_pic_objs - test yes = "$build_libtool_libs" || libobjs=$non_pic_objects + test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" # Create the old-style object. - reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs + reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test - output=$obj + output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. @@ -9942,7 +8668,7 @@ EOF exit $EXIT_SUCCESS fi - test yes = "$build_libtool_libs" || { + if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi @@ -9952,12 +8678,12 @@ EOF # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS - } + fi - if test -n "$pic_flag" || test default != "$pic_mode"; then + if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" - output=$libobj + output="$libobj" func_execute_cmds "$reload_cmds" 'exit $?' fi @@ -9974,14 +8700,16 @@ EOF output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ - func_warning "'-version-info' is ignored for programs" + func_warning "\`-version-info' is ignored for programs" test -n "$release" && \ - func_warning "'-release' is ignored for programs" + func_warning "\`-release' is ignored for programs" - $preload \ - && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ - && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." + test "$preload" = yes \ + && test "$dlopen_support" = unknown \ + && test "$dlopen_self" = unknown \ + && test "$dlopen_self_static" = unknown && \ + func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) @@ -9995,11 +8723,11 @@ EOF *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). - if test CXX = "$tagname"; then + if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) - func_append compile_command " $wl-bind_at_load" - func_append finalize_command " $wl-bind_at_load" + func_append compile_command " ${wl}-bind_at_load" + func_append finalize_command " ${wl}-bind_at_load" ;; esac fi @@ -10035,7 +8763,7 @@ EOF *) func_append new_libs " $deplib" ;; esac done - compile_deplibs=$new_libs + compile_deplibs="$new_libs" func_append compile_command " $compile_deplibs" @@ -10059,7 +8787,7 @@ EOF if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then - hardcode_libdirs=$libdir + hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in @@ -10082,7 +8810,7 @@ EOF fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` + testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; @@ -10099,10 +8827,10 @@ EOF # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then - libdir=$hardcode_libdirs + libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi - compile_rpath=$rpath + compile_rpath="$rpath" rpath= hardcode_libdirs= @@ -10110,7 +8838,7 @@ EOF if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then - hardcode_libdirs=$libdir + hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in @@ -10135,43 +8863,45 @@ EOF # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then - libdir=$hardcode_libdirs + libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi - finalize_rpath=$rpath + finalize_rpath="$rpath" - if test -n "$libobjs" && test yes = "$build_old_libs"; then + if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi - func_generate_dlsyms "$outputname" "@PROGRAM@" false + func_generate_dlsyms "$outputname" "@PROGRAM@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi - wrappers_required=: + wrappers_required=yes case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. - wrappers_required=false + wrappers_required=no ;; *cygwin* | *mingw* ) - test yes = "$build_libtool_libs" || wrappers_required=false + if test "$build_libtool_libs" != yes; then + wrappers_required=no + fi ;; *) - if test no = "$need_relink" || test yes != "$build_libtool_libs"; then - wrappers_required=false + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + wrappers_required=no fi ;; esac - $wrappers_required || { + if test "$wrappers_required" = no; then # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - link_command=$compile_command$compile_rpath + link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 @@ -10184,12 +8914,12 @@ EOF fi # Delete the generated files. - if test -f "$output_objdir/${outputname}S.$objext"; then - func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' + if test -f "$output_objdir/${outputname}S.${objext}"; then + func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi exit $exit_status - } + fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" @@ -10219,9 +8949,9 @@ EOF fi fi - if test yes = "$no_install"; then + if test "$no_install" = yes; then # We don't need to create a wrapper script. - link_command=$compile_var$compile_command$compile_rpath + link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. @@ -10238,28 +8968,27 @@ EOF exit $EXIT_SUCCESS fi - case $hardcode_action,$fast_install in - relink,*) - # Fast installation is not supported - link_command=$compile_var$compile_command$compile_rpath - relink_command=$finalize_var$finalize_command$finalize_rpath + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" - func_warning "this platform does not like uninstalled shared libraries" - func_warning "'$output' will be relinked during installation" - ;; - *,yes) - link_command=$finalize_var$compile_command$finalize_rpath - relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` - ;; - *,no) - link_command=$compile_var$compile_command$compile_rpath - relink_command=$finalize_var$finalize_command$finalize_rpath - ;; - *,needless) - link_command=$finalize_var$compile_command$finalize_rpath - relink_command= - ;; - esac + func_warning "this platform does not like uninstalled shared libraries" + func_warning "\`$output' will be relinked during installation" + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` @@ -10316,8 +9045,8 @@ EOF func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result - cwrappersource=$output_path/$objdir/lt-$output_name.c - cwrapper=$output_path/$output_name.exe + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 @@ -10338,7 +9067,7 @@ EOF trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. - if test "x$build" = "x$host"; then + if test "x$build" = "x$host" ; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result @@ -10361,27 +9090,25 @@ EOF # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do - case $build_libtool_libs in - convenience) - oldobjs="$libobjs_save $symfileobj" - addlibs=$convenience - build_libtool_libs=no - ;; - module) - oldobjs=$libobjs_save - addlibs=$old_convenience + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save $symfileobj" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" build_libtool_libs=no - ;; - *) + else oldobjs="$old_deplibs $non_pic_objects" - $preload && test -f "$symfileobj" \ - && func_append oldobjs " $symfileobj" - addlibs=$old_convenience - ;; - esac + if test "$preload" = yes && test -f "$symfileobj"; then + func_append oldobjs " $symfileobj" + fi + fi + addlibs="$old_convenience" + fi if test -n "$addlibs"; then - gentop=$output_objdir/${outputname}x + gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $addlibs @@ -10389,13 +9116,13 @@ EOF fi # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then - gentop=$output_objdir/${outputname}x + gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles @@ -10416,7 +9143,7 @@ EOF : else echo "copying selected object files to avoid basename conflicts..." - gentop=$output_objdir/${outputname}x + gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs @@ -10425,7 +9152,7 @@ EOF for obj in $save_oldobjs do func_basename "$obj" - objbase=$func_basename_result + objbase="$func_basename_result" case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) @@ -10494,18 +9221,18 @@ EOF else # the above command should be used before it gets too long oldobjs=$objlist - if test "$obj" = "$last_oldobj"; then + if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist - if test -z "$oldobjs"; then + if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" @@ -10522,7 +9249,7 @@ EOF case $output in *.la) old_library= - test yes = "$build_old_libs" && old_library=$libname.$libext + test "$build_old_libs" = yes && old_library="$libname.$libext" func_verbose "creating $output" # Preserve any variables that may affect compiler behavior @@ -10537,31 +9264,31 @@ EOF fi done # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - if test yes = "$hardcode_automatic"; then + if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do - if test yes = "$installed"; then + if test "$installed" = yes; then if test -z "$install_libdir"; then break fi - output=$output_objdir/${outputname}i + output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" - name=$func_basename_result + name="$func_basename_result" func_resolve_sysroot "$deplib" - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ - func_fatal_error "'$deplib' is not a valid libtool archive" + func_fatal_error "\`$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) @@ -10577,23 +9304,23 @@ EOF *) func_append newdependency_libs " $deplib" ;; esac done - dependency_libs=$newdependency_libs + dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" - name=$func_basename_result - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ - func_fatal_error "'$lib' is not a valid libtool archive" + func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done - dlfiles=$newdlfiles + dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in @@ -10603,34 +9330,34 @@ EOF # didn't already link the preopened objects directly into # the library: func_basename "$lib" - name=$func_basename_result - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ - func_fatal_error "'$lib' is not a valid libtool archive" + func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done - dlprefiles=$newdlprefiles + dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done - dlfiles=$newdlfiles + dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done - dlprefiles=$newdlprefiles + dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin @@ -10646,9 +9373,10 @@ EOF case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. - if test -n "$bindir"; then + if test "x$bindir" != x ; + then func_relative_path "$install_libdir" "$bindir" - tdlname=$func_relative_path_result/$dlname + tdlname=$func_relative_path_result$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname @@ -10657,7 +9385,7 @@ EOF esac $ECHO > $output "\ # $outputname - a libtool library file -# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. @@ -10671,7 +9399,7 @@ library_names='$library_names' # The name of the static archive. old_library='$old_library' -# Linker flags that cannot go in dependency_libs. +# Linker flags that can not go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. @@ -10697,7 +9425,7 @@ dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" - if test no,yes = "$installed,$need_relink"; then + if test "$installed" = no && test "$need_relink" = yes; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi @@ -10712,29 +9440,27 @@ relink_command=\"$relink_command\"" exit $EXIT_SUCCESS } -if test link = "$opt_mode" || test relink = "$opt_mode"; then - func_mode_link ${1+"$@"} -fi +{ test "$opt_mode" = link || test "$opt_mode" = relink; } && + func_mode_link ${1+"$@"} # func_mode_uninstall arg... func_mode_uninstall () { - $debug_cmd - - RM=$nonopt + $opt_debug + RM="$nonopt" files= - rmforce=false + rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. - libtool_install_magic=$magic + libtool_install_magic="$magic" for arg do case $arg in - -f) func_append RM " $arg"; rmforce=: ;; + -f) func_append RM " $arg"; rmforce=yes ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac @@ -10747,18 +9473,18 @@ func_mode_uninstall () for file in $files; do func_dirname "$file" "" "." - dir=$func_dirname_result - if test . = "$dir"; then - odir=$objdir + dir="$func_dirname_result" + if test "X$dir" = X.; then + odir="$objdir" else - odir=$dir/$objdir + odir="$dir/$objdir" fi func_basename "$file" - name=$func_basename_result - test uninstall = "$opt_mode" && odir=$dir + name="$func_basename_result" + test "$opt_mode" = uninstall && odir="$dir" # Remember odir for removal later, being careful to avoid duplicates - if test clean = "$opt_mode"; then + if test "$opt_mode" = clean; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; @@ -10773,11 +9499,11 @@ func_mode_uninstall () elif test -d "$file"; then exit_status=1 continue - elif $rmforce; then + elif test "$rmforce" = yes; then continue fi - rmfiles=$file + rmfiles="$file" case $name in *.la) @@ -10791,7 +9517,7 @@ func_mode_uninstall () done test -n "$old_library" && func_append rmfiles " $odir/$old_library" - case $opt_mode in + case "$opt_mode" in clean) case " $library_names " in *" $dlname "*) ;; @@ -10802,12 +9528,12 @@ func_mode_uninstall () uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. - func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' + func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. - func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' + func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; @@ -10823,19 +9549,21 @@ func_mode_uninstall () func_source $dir/$name # Add PIC object to the list of files to remove. - if test -n "$pic_object" && test none != "$pic_object"; then + if test -n "$pic_object" && + test "$pic_object" != none; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" && test none != "$non_pic_object"; then + if test -n "$non_pic_object" && + test "$non_pic_object" != none; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) - if test clean = "$opt_mode"; then + if test "$opt_mode" = clean ; then noexename=$name case $file in *.exe) @@ -10862,12 +9590,12 @@ func_mode_uninstall () # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles - func_append rmfiles " $odir/$name $odir/${name}S.$objext" - if test yes = "$fast_install" && test -n "$relink_command"; then + func_append rmfiles " $odir/$name $odir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi - if test "X$noexename" != "X$name"; then - func_append rmfiles " $odir/lt-$noexename.c" + if test "X$noexename" != "X$name" ; then + func_append rmfiles " $odir/lt-${noexename}.c" fi fi fi @@ -10876,7 +9604,7 @@ func_mode_uninstall () func_show_eval "$RM $rmfiles" 'exit_status=1' done - # Try to remove the $objdir's in the directories where we deleted files + # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" @@ -10886,17 +9614,16 @@ func_mode_uninstall () exit $exit_status } -if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then - func_mode_uninstall ${1+"$@"} -fi +{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && + func_mode_uninstall ${1+"$@"} test -z "$opt_mode" && { - help=$generic_help + help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ - func_fatal_help "invalid operation mode '$opt_mode'" + func_fatal_help "invalid operation mode \`$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" @@ -10907,7 +9634,7 @@ exit $exit_status # The TAGs below are defined such that we never get into a situation -# where we disable both kinds of libraries. Given conflicting +# in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support @@ -10930,3 +9657,5 @@ build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # mode:shell-script # sh-indentation:2 # End: +# vi:sw=2 + diff --git a/m4/libtool.m4 b/m4/libtool.m4 index 4bc6b22..d7c043f 100644 --- a/m4/libtool.m4 +++ b/m4/libtool.m4 @@ -1,6 +1,8 @@ # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # -# Copyright (C) 1996-2001, 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives @@ -37,7 +39,7 @@ m4_define([_LT_COPYING], [dnl # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) -# serial 58 LT_INIT +# serial 57 LT_INIT # LT_PREREQ(VERSION) @@ -89,7 +91,7 @@ dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed -LIBTOOL_DEPS=$ltmain +LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' @@ -128,7 +130,7 @@ cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set -# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. +# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} @@ -177,13 +179,13 @@ m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl _LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options that allow our +# See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}"; then +if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi ]) -if test -n "${ZSH_VERSION+set}"; then +if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi @@ -196,7 +198,7 @@ aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. - if test set != "${COLLECT_NAMES+set}"; then + if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi @@ -207,14 +209,14 @@ esac ofile=libtool can_build_shared=yes -# All known linkers require a '.a' archive for static linking (except MSVC, +# All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a -with_gnu_ld=$lt_cv_prog_gnu_ld +with_gnu_ld="$lt_cv_prog_gnu_ld" -old_CC=$CC -old_CFLAGS=$CFLAGS +old_CC="$CC" +old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc @@ -267,14 +269,14 @@ no_glob_subst='s/\*/\\\*/g' # _LT_PROG_LTMAIN # --------------- -# Note that this code is called both from 'configure', and 'config.status' +# Note that this code is called both from `configure', and `config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# 'config.status' has no value for ac_aux_dir unless we are using Automake, +# `config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain=$ac_aux_dir/ltmain.sh +ltmain="$ac_aux_dir/ltmain.sh" ])# _LT_PROG_LTMAIN @@ -284,7 +286,7 @@ ltmain=$ac_aux_dir/ltmain.sh # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the 'libtool' +# in macros and then make a single call at the end using the `libtool' # label. @@ -419,8 +421,8 @@ m4_define([_lt_decl_all_varnames], # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ -# Quote a variable value, and forward it to 'config.status' so that its -# declaration there will have the same value as in 'configure'. VARNAME +# Quote a variable value, and forward it to `config.status' so that its +# declaration there will have the same value as in `configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) @@ -444,7 +446,7 @@ m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags='_LT_TAGS'dnl +available_tags="_LT_TAGS"dnl ]) @@ -472,7 +474,7 @@ m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' +# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], @@ -498,8 +500,8 @@ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations -# into 'config.status', and then the shell code to quote escape them in -# for loops in 'config.status'. Finally, any additional code accumulated +# into `config.status', and then the shell code to quote escape them in +# for loops in `config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], @@ -545,7 +547,7 @@ for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -558,7 +560,7 @@ for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -574,7 +576,7 @@ _LT_OUTPUT_LIBTOOL_INIT # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the -# '#!' sequence but before initialization text begins. After this +# `#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). @@ -596,7 +598,7 @@ AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF -test 0 = "$lt_write_fail" && chmod +x $1[]dnl +test $lt_write_fail = 0 && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT @@ -619,7 +621,7 @@ exec AS_MESSAGE_LOG_FD>>config.log } >&AS_MESSAGE_LOG_FD lt_cl_help="\ -'$as_me' creates a local libtool stub from the current configuration, +\`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. @@ -641,7 +643,7 @@ Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." -while test 0 != $[#] +while test $[#] != 0 do case $[1] in --version | --v* | -V ) @@ -654,10 +656,10 @@ do lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] -Try '$[0] --help' for more information.]) ;; +Try \`$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] -Try '$[0] --help' for more information.]) ;; +Try \`$[0] --help' for more information.]) ;; esac shift done @@ -683,7 +685,7 @@ chmod +x "$CONFIG_LT" # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: -test yes = "$silent" && +test "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false @@ -703,13 +705,13 @@ m4_defun([_LT_CONFIG], _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options that allow our + # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}"; then + if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi - cfgfile=${ofile}T + cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" @@ -717,7 +719,7 @@ _LT_CONFIG_SAVE_COMMANDS([ #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE) $VERSION +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # @@ -737,7 +739,7 @@ _LT_EOF # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. -if test set != "${COLLECT_NAMES+set}"; then +if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi @@ -754,6 +756,8 @@ _LT_EOF sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) + _LT_PROG_REPLACE_SHELLFNS + mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" @@ -771,6 +775,7 @@ _LT_EOF [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS @@ -969,7 +974,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no - if test -z "$LT_MULTI_MODULE"; then + if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the @@ -987,7 +992,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. - elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD @@ -1005,7 +1010,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS=$save_LDFLAGS + LDFLAGS="$save_LDFLAGS" ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], @@ -1027,7 +1032,7 @@ _LT_EOF _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD - elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD @@ -1037,32 +1042,32 @@ _LT_EOF ]) case $host_os in rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac - if test yes = "$lt_cv_apple_cc_single_mod"; then + if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi - if test yes = "$lt_cv_ld_exported_symbols_list"; then - _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi - if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= @@ -1082,29 +1087,29 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES], _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test yes = "$lt_cv_ld_force_load"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + if test "$lt_cv_ld_force_load" = "yes"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined + _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; + ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac - if test yes = "$_lt_dar_can_shared"; then + if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all - _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" m4_if([$1], [CXX], -[ if test yes != "$lt_cv_apple_cc_single_mod"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" +[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else @@ -1124,7 +1129,7 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES], # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl -if test set = "${lt_cv_aix_libpath+set}"; then +if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], @@ -1142,7 +1147,7 @@ else _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) @@ -1162,8 +1167,8 @@ m4_define([_LT_SHELL_INIT], # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script that will find a shell with a builtin -# printf (that we can use as an echo command). +# of the generated configure script which will find a shell with a builtin +# printf (which we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO @@ -1191,10 +1196,10 @@ fi # Invoke $ECHO with all args, space-separated. func_echo_all () { - $ECHO "$*" + $ECHO "$*" } -case $ECHO in +case "$ECHO" in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; @@ -1220,17 +1225,16 @@ _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], -[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], - [Search for dependent libraries within DIR (or the compiler's sysroot - if not specified).])], +[ --with-sysroot[=DIR] Search for dependent libraries within DIR + (or the compiler's sysroot if not specified).], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= -case $with_sysroot in #( +case ${with_sysroot} in #( yes) - if test yes = "$GCC"; then + if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( @@ -1240,14 +1244,14 @@ case $with_sysroot in #( no|'') ;; #( *) - AC_MSG_RESULT([$with_sysroot]) + AC_MSG_RESULT([${with_sysroot}]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -[dependent libraries, and where our libraries should be installed.])]) +[dependent libraries, and in which our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- @@ -1255,33 +1259,31 @@ m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) -test no = "$enable_libtool_lock" || enable_libtool_lock=yes +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) - # Find out what ABI is being produced by ac_compile, and set mode - # options accordingly. + # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) - HPUX_IA64_MODE=32 + HPUX_IA64_MODE="32" ;; *ELF-64*) - HPUX_IA64_MODE=64 + HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. + # Find out which ABI we are using. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then - if test yes = "$lt_cv_prog_gnu_ld"; then + if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" @@ -1310,46 +1312,9 @@ ia64-*-hpux*) rm -rf conftest* ;; -mips64*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - emul=elf - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - emul="${emul}32" - ;; - *64-bit*) - emul="${emul}64" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *MSB*) - emul="${emul}btsmip" - ;; - *LSB*) - emul="${emul}ltsmip" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *N32*) - emul="${emul}n32" - ;; - esac - LD="${LD-ld} -m $emul" - fi - rm -rf conftest* - ;; - x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. Note that the listed cases only cover the - # situations where additional linker options are needed (such as when - # doing 32-bit compilation for a host where ld defaults to 64-bit, or - # vice versa); the common cases where no linker options are needed do - # not appear in the list. + # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in @@ -1368,10 +1333,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) ;; esac ;; - powerpc64le-*linux*) + powerpc64le-*) LD="${LD-ld} -m elf32lppclinux" ;; - powerpc64-*linux*) + powerpc64-*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) @@ -1390,10 +1355,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; - powerpcle-*linux*) + powerpcle-*) LD="${LD-ld} -m elf64lppc" ;; - powerpc-*linux*) + powerpc-*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) @@ -1411,20 +1376,19 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS=$CFLAGS + SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) - if test yes != "$lt_cv_cc_needs_belf"; then + if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS=$SAVE_CFLAGS + CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. + # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in @@ -1432,7 +1396,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) case $lt_cv_prog_gnu_ld in yes*) case $host in - i?86-*-solaris*|x86_64-*-solaris*) + i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) @@ -1441,7 +1405,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD=${LD-ld}_sol2 + LD="${LD-ld}_sol2" fi ;; *) @@ -1457,7 +1421,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) ;; esac -need_locks=$enable_libtool_lock +need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK @@ -1476,11 +1440,11 @@ AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) - if test 0 -eq "$ac_status"; then + if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) - if test 0 -ne "$ac_status"; then + if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi @@ -1488,7 +1452,7 @@ AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], ]) ]) -if test no = "$lt_cv_ar_at_file"; then +if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file @@ -1519,7 +1483,7 @@ old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in - bitrig* | openbsd*) + openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) @@ -1555,7 +1519,7 @@ AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment + lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins @@ -1582,7 +1546,7 @@ AC_CACHE_CHECK([$1], [$2], $RM conftest* ]) -if test yes = "[$]$2"; then +if test x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) @@ -1604,7 +1568,7 @@ AC_DEFUN([_LT_LINKER_OPTION], m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no - save_LDFLAGS=$LDFLAGS + save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then @@ -1623,10 +1587,10 @@ AC_CACHE_CHECK([$1], [$2], fi fi $RM -r conftest* - LDFLAGS=$save_LDFLAGS + LDFLAGS="$save_LDFLAGS" ]) -if test yes = "[$]$2"; then +if test x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) @@ -1647,7 +1611,7 @@ AC_DEFUN([LT_CMD_MAX_LEN], AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 - teststring=ABCD + teststring="ABCD" case $build_os in msdosdjgpp*) @@ -1687,7 +1651,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl lt_cv_sys_max_cmd_len=8192; ;; - bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` @@ -1738,22 +1702,22 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then + test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8; do + for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. - while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && - test 17 != "$i" # 1/2 MB should be enough + test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring @@ -1769,7 +1733,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl ;; esac ]) -if test -n "$lt_cv_sys_max_cmd_len"; then +if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) @@ -1797,7 +1761,7 @@ m4_defun([_LT_HEADER_DLFCN], # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl -if test yes = "$cross_compiling"; then : +if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 @@ -1846,7 +1810,7 @@ else /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif @@ -1872,7 +1836,7 @@ int main () return status; }] _LT_EOF - if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in @@ -1893,7 +1857,7 @@ rm -fr conftest* # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl -if test yes != "$enable_dlopen"; then +if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown @@ -1903,52 +1867,44 @@ else case $host_os in beos*) - lt_cv_dlopen=load_add_on + lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) - lt_cv_dlopen=LoadLibrary + lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) - lt_cv_dlopen=dlopen + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) - # if libdl is installed we need to link against it + # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ - lt_cv_dlopen=dyld + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; - tpf*) - # Don't try to run any link tests for TPF. We know it's impossible - # because TPF is a cross-compiler, and we know how we open DSOs. - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - lt_cv_dlopen_self=no - ;; - *) AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen=shl_load], + [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen=dlopen], + [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) @@ -1957,21 +1913,21 @@ else ;; esac - if test no = "$lt_cv_dlopen"; then - enable_dlopen=no - else + if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes + else + enable_dlopen=no fi case $lt_cv_dlopen in dlopen) - save_CPPFLAGS=$CPPFLAGS - test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - save_LDFLAGS=$LDFLAGS + save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - save_LIBS=$LIBS + save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], @@ -1981,7 +1937,7 @@ else lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) - if test yes = "$lt_cv_dlopen_self"; then + if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl @@ -1991,9 +1947,9 @@ else ]) fi - CPPFLAGS=$save_CPPFLAGS - LDFLAGS=$save_LDFLAGS - LIBS=$save_LIBS + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" ;; esac @@ -2085,8 +2041,8 @@ m4_defun([_LT_COMPILER_FILE_LOCKS], m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) -hard_links=nottested -if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then +hard_links="nottested" +if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes @@ -2096,8 +2052,8 @@ if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_loc ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) - if test no = "$hard_links"; then - AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else @@ -2124,8 +2080,8 @@ objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", - [Define to the sub-directory where libtool stores uninstalled libraries.]) +AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", + [Define to the sub-directory in which libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR @@ -2137,15 +2093,15 @@ m4_defun([_LT_LINKER_HARDCODE_LIBPATH], _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || - test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then + test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. - if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && + if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one - ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && - test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else @@ -2159,12 +2115,12 @@ else fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) -if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || - test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then +if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || + test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then # Fast installation is not supported enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi @@ -2188,7 +2144,7 @@ else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) - if test -n "$STRIP"; then + if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) @@ -2219,14 +2175,14 @@ m4_require([_LT_CHECK_SHELL_FEATURES])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ -if test yes = "$GCC"; then +if test "$GCC" = yes; then case $host_os in - darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; - *) lt_awk_arg='/^libraries:/' ;; + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in - mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; - *) lt_sed_strip_eq='s|=/|/|g' ;; + mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in @@ -2242,35 +2198,28 @@ if test yes = "$GCC"; then ;; esac # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary... + # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= - lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - # ...but if some path component already ends with the multilib dir we assume - # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). - case "$lt_multi_os_dir; $lt_search_path_spec " in - "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) - lt_multi_os_dir= - ;; - esac + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" - elif test -n "$lt_multi_os_dir"; then + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS = " "; FS = "/|\n";} { - lt_foo = ""; - lt_count = 0; +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { - lt_foo = "/" $lt_i lt_foo; + lt_foo="/" $lt_i lt_foo; } else { lt_count--; } @@ -2284,7 +2233,7 @@ BEGIN {RS = " "; FS = "/|\n";} { # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; + $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else @@ -2293,7 +2242,7 @@ fi]) library_names_spec= libname_spec='lib$name' soname_spec= -shrext_cmds=.so +shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= @@ -2313,11 +2262,11 @@ need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='$libname$release$shared_ext$major' + soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) @@ -2325,40 +2274,40 @@ aix[[4-9]]*) need_lib_prefix=no need_version=no hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # AIX 5 supports IA64 - library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with - # the line '#! .'. This would cause the generated library to - # depend on '.', always an invalid library. This was fixed in + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' - echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. - if test yes = "$aix_use_runtimelinking"; then + if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi @@ -2369,18 +2318,18 @@ amigaos*) powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) - library_names_spec='$libname$shared_ext' + library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; @@ -2388,8 +2337,8 @@ beos*) bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" @@ -2401,7 +2350,7 @@ bsdi[[45]]*) cygwin* | mingw* | pw32* | cegcc*) version_type=windows - shrext_cmds=.dll + shrext_cmds=".dll" need_version=no need_lib_prefix=no @@ -2410,8 +2359,8 @@ cygwin* | mingw* | pw32* | cegcc*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ @@ -2427,17 +2376,17 @@ cygwin* | mingw* | pw32* | cegcc*) case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix - soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' @@ -2446,8 +2395,8 @@ m4_if([$1], [],[ *,cl*) # Native MSVC libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' case $build_os in mingw*) @@ -2474,7 +2423,7 @@ m4_if([$1], [],[ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) - sys_lib_search_path_spec=$LIB + sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` @@ -2487,8 +2436,8 @@ m4_if([$1], [],[ esac # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' @@ -2501,7 +2450,7 @@ m4_if([$1], [],[ *) # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac @@ -2514,8 +2463,8 @@ darwin* | rhapsody*) version_type=darwin need_lib_prefix=no need_version=no - library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' - soname_spec='$libname$release$major$shared_ext' + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' @@ -2528,8 +2477,8 @@ dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; @@ -2547,12 +2496,12 @@ freebsd* | dragonfly*) version_type=freebsd-$objformat case $version_type in freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac @@ -2582,10 +2531,10 @@ haiku*) need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=no + shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; @@ -2603,9 +2552,9 @@ hpux9* | hpux10* | hpux11*) dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - if test 32 = "$HPUX_IA64_MODE"; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" @@ -2618,8 +2567,8 @@ hpux9* | hpux10* | hpux11*) dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; @@ -2628,8 +2577,8 @@ hpux9* | hpux10* | hpux11*) dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... @@ -2642,8 +2591,8 @@ interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no @@ -2654,7 +2603,7 @@ irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) - if test yes = "$lt_cv_prog_gnu_ld"; then + if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix @@ -2662,8 +2611,8 @@ irix5* | irix6* | nonstopux*) esac need_lib_prefix=no need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= @@ -2682,8 +2631,8 @@ irix5* | irix6* | nonstopux*) esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" - sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; @@ -2692,33 +2641,13 @@ linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - ;; - # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no @@ -2758,17 +2687,29 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) dynamic_linker='GNU/Linux ld.so' ;; +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH @@ -2778,7 +2719,7 @@ netbsd*) newsos6) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; @@ -2787,34 +2728,45 @@ newsos6) version_type=qnx need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; -openbsd* | bitrig*) +openbsd*) version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib + sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi ;; os2*) libname_spec='$name' - shrext_cmds=.dll + shrext_cmds=".dll" need_lib_prefix=no - library_names_spec='$libname$shared_ext $libname.a' + library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; @@ -2823,11 +2775,11 @@ osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) @@ -2838,8 +2790,8 @@ solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes @@ -2849,11 +2801,11 @@ solaris*) sunos4*) version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes - if test yes = "$with_gnu_ld"; then + if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes @@ -2861,8 +2813,8 @@ sunos4*) sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) @@ -2883,10 +2835,10 @@ sysv4 | sysv4.3*) ;; sysv4*MP*) - if test -d /usr/nec; then + if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; @@ -2895,12 +2847,12 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes - if test yes = "$with_gnu_ld"; then + if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' @@ -2918,7 +2870,7 @@ tpf*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes @@ -2926,8 +2878,8 @@ tpf*) uts4*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; @@ -2936,18 +2888,18 @@ uts4*) ;; esac AC_MSG_RESULT([$dynamic_linker]) -test no = "$dynamic_linker" && can_build_shared=no +test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then +if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi -if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi _LT_DECL([], [variables_saved_for_relink], [1], @@ -2989,32 +2941,32 @@ _LT_DECL([], [sys_lib_dlsearch_path_spec], [2], # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- -# find a file program that can recognize shared library +# find a file program which can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$1"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"$1" + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : @@ -3037,11 +2989,11 @@ _LT_EOF break fi done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) -MAGIC_CMD=$lt_cv_path_MAGIC_CMD +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else @@ -3059,7 +3011,7 @@ dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- -# find a file program that can recognize a shared library +# find a file program which can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then @@ -3086,16 +3038,16 @@ m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test no = "$withval" || with_gnu_ld=yes], + [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld -if test yes = "$GCC"; then +if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) - # gcc leaves a trailing carriage return, which upsets mingw + # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; @@ -3109,7 +3061,7 @@ if test yes = "$GCC"; then while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done - test -z "$LD" && LD=$ac_prog + test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. @@ -3120,37 +3072,37 @@ if test yes = "$GCC"; then with_gnu_ld=unknown ;; esac -elif test yes = "$with_gnu_ld"; then +elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD=$ac_dir/$ac_prog + lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 /dev/null 2>&1; then + # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. + if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else @@ -3347,7 +3300,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; -netbsd*) +netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else @@ -3365,8 +3318,8 @@ newos6*) lt_cv_deplibs_check_method=pass_all ;; -openbsd* | bitrig*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' @@ -3459,33 +3412,33 @@ AC_DEFUN([LT_PATH_NM], AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. - lt_cv_path_NM=$NM + lt_cv_path_NM="$NM" else - lt_nm_to_check=${ac_tool_prefix}nm + lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. - tmp_nm=$ac_dir/$lt_tmp_nm - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. - # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" - break 2 + break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" - break 2 + break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but @@ -3496,21 +3449,21 @@ else esac fi done - IFS=$lt_save_ifs + IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi]) -if test no != "$lt_cv_path_NM"; then - NM=$lt_cv_path_NM +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) - DUMPBIN="$DUMPBIN -symbols -headers" + DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: @@ -3518,8 +3471,8 @@ else esac fi AC_SUBST([DUMPBIN]) - if test : != "$DUMPBIN"; then - NM=$DUMPBIN + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm @@ -3565,8 +3518,8 @@ lt_cv_sharedlib_from_linklib_cmd, case $host_os in cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh; - # decide which one to use based on capabilities of $DLLTOOL + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib @@ -3578,7 +3531,7 @@ cygwin* | mingw* | pw32* | cegcc*) ;; *) # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd=$ECHO + lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac ]) @@ -3605,28 +3558,13 @@ AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) -if test yes != "$lt_cv_path_mainfest_tool"; then +if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL -# _LT_DLL_DEF_P([FILE]) -# --------------------- -# True iff FILE is a Windows DLL '.def' file. -# Keep in sync with func_dll_def_p in the libtool script -AC_DEFUN([_LT_DLL_DEF_P], -[dnl - test DEF = "`$SED -n dnl - -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace - -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments - -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl - -e q dnl Only consider the first "real" line - $1`" dnl -])# _LT_DLL_DEF_P - - # LT_LIB_M # -------- # check for math library @@ -3638,11 +3576,11 @@ case $host in # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) - AC_CHECK_LIB(m, cos, LIBM=-lm) + AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac AC_SUBST([LIBM]) @@ -3661,7 +3599,7 @@ m4_defun([_LT_COMPILER_NO_RTTI], _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= -if test yes = "$GCC"; then +if test "$GCC" = yes; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; @@ -3713,7 +3651,7 @@ cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi ;; @@ -3746,44 +3684,14 @@ case `$NM -V 2>&1` in symcode='[[ABCDGIRSTW]]' ;; esac -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" - # Adjust the below global symbol transforms to fixup imported variables. - lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" - lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" - lt_c_name_lib_hook="\ - -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ - -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" -else - # Disable hooks by default. - lt_cv_sys_global_symbol_to_import= - lt_cdecl_hook= - lt_c_name_hook= - lt_c_name_lib_hook= -fi - # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n"\ -$lt_cdecl_hook\ -" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ -$lt_c_name_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" - -# Transform an extracted symbol line into symbol name with lib prefix and -# symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ -$lt_c_name_lib_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= @@ -3801,24 +3709,21 @@ for ac_symprfx in "" "_"; do # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function, - # D for any global variable and I for any imported variable. + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ -" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ -" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ -" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ -" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ -" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" @@ -3858,11 +3763,11 @@ _LT_EOF if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE -/* DATA imports from DLLs on WIN32 can't be const, because runtime +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST -#elif defined __osf__ +#elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else @@ -3888,7 +3793,7 @@ lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF - $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; @@ -3908,9 +3813,9 @@ _LT_EOF mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS - LIBS=conftstm.$ac_objext + LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS @@ -3931,7 +3836,7 @@ _LT_EOF rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. - if test yes = "$pipe_works"; then + if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= @@ -3958,16 +3863,12 @@ _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], - [Transform the output of nm into a list of symbols to manually relocate]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) -_LT_DECL([nm_interface], [lt_cv_nm_interface], [1], - [The name lister interface]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS @@ -3983,18 +3884,17 @@ _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. - if test yes = "$GXX"; then + if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) @@ -4005,8 +3905,8 @@ m4_if([$1], [CXX], [ ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac @@ -4071,7 +3971,7 @@ m4_if([$1], [CXX], [ case $host_os in aix[[4-9]]*) # All AIX code is PIC. - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else @@ -4112,14 +4012,14 @@ m4_if([$1], [CXX], [ case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' - if test ia64 != "$host_cpu"; then + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default @@ -4156,7 +4056,7 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) - # old Intel C++ for x86_64, which still supported -KPIC. + # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' @@ -4212,7 +4112,7 @@ m4_if([$1], [CXX], [ ;; esac ;; - netbsd*) + netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise @@ -4301,18 +4201,17 @@ m4_if([$1], [CXX], [ fi ], [ - if test yes = "$GCC"; then + if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) @@ -4323,8 +4222,8 @@ m4_if([$1], [CXX], [ ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac @@ -4411,7 +4310,7 @@ m4_if([$1], [CXX], [ case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else @@ -4419,20 +4318,6 @@ m4_if([$1], [CXX], [ fi ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - case $cc_basename in - nagfor*) - # NAG Fortran compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). @@ -4453,7 +4338,7 @@ m4_if([$1], [CXX], [ ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) @@ -4464,7 +4349,7 @@ m4_if([$1], [CXX], [ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in - # old Intel for x86_64, which still supported -KPIC. + # old Intel for x86_64 which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' @@ -4489,12 +4374,6 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) @@ -4592,7 +4471,7 @@ m4_if([$1], [CXX], [ ;; sysv4*MP*) - if test -d /usr/nec; then + if test -d /usr/nec ;then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi @@ -4621,7 +4500,7 @@ m4_if([$1], [CXX], [ fi ]) case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: + # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; @@ -4697,7 +4576,7 @@ m4_if([$1], [CXX], [ fi ;; pw32*) - _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds + _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in @@ -4710,6 +4589,9 @@ m4_if([$1], [CXX], [ ;; esac ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; @@ -4743,9 +4625,9 @@ m4_if([$1], [CXX], [ # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ' (' and ')$', so one must not match beginning or - # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', - # as well as any symbol that contains 'd'. + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if @@ -4761,7 +4643,7 @@ dnl Note also adjust exclude_expsyms for C++ above. # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. - if test yes != "$GCC"; then + if test "$GCC" != yes; then with_gnu_ld=no fi ;; @@ -4769,9 +4651,12 @@ dnl Note also adjust exclude_expsyms for C++ above. # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; - openbsd* | bitrig*) + openbsd*) with_gnu_ld=no ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes @@ -4779,7 +4664,7 @@ dnl Note also adjust exclude_expsyms for C++ above. # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no - if test yes = "$with_gnu_ld"; then + if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility @@ -4801,24 +4686,24 @@ dnl Note also adjust exclude_expsyms for C++ above. esac fi - if test yes = "$lt_use_gnu_ld_interface"; then + if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='$wl' + wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no - case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in + case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... @@ -4831,7 +4716,7 @@ dnl Note also adjust exclude_expsyms for C++ above. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken - if test ia64 != "$host_cpu"; then + if test "$host_cpu" != ia64; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 @@ -4850,7 +4735,7 @@ _LT_EOF case $host_cpu in powerpc) # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) @@ -4866,7 +4751,7 @@ _LT_EOF _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -4876,7 +4761,7 @@ _LT_EOF # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes @@ -4884,61 +4769,61 @@ _LT_EOF _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no - if test linux-dietlibc = "$host_os"; then + if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test no = "$tmp_diet" + && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; @@ -4949,44 +4834,42 @@ _LT_EOF lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; - nagfor*) # NAGFOR 5.3 - tmp_sharedflag='-Wl,-shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test yes = "$supports_anon_versioning"; then + if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test yes = "$supports_anon_versioning"; then + if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac @@ -4995,13 +4878,13 @@ _LT_EOF fi ;; - netbsd*) + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; @@ -5019,8 +4902,8 @@ _LT_EOF _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -5032,7 +4915,7 @@ _LT_EOF _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify @@ -5047,9 +4930,9 @@ _LT_EOF # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -5066,15 +4949,15 @@ _LT_EOF *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac - if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then + if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= @@ -5090,7 +4973,7 @@ _LT_EOF # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes - if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported @@ -5098,12 +4981,12 @@ _LT_EOF ;; aix[[4-9]]*) - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' - no_entry_flag= + no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm @@ -5121,7 +5004,7 @@ _LT_EOF # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do - if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi @@ -5144,13 +5027,13 @@ _LT_EOF _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - if test yes = "$GCC"; then + if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` + collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then @@ -5169,61 +5052,62 @@ _LT_EOF ;; esac shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag="$shared_flag "'$wl-G' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' fi + _LT_TAGVAR(link_all_deplibs, $1)=no else # not using gcc - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' else - shared_flag='$wl-bM:SRE' + shared_flag='${wl}-bM:SRE' fi fi fi - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes - if test yes = "$aix_use_runtimelinking"; then + if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else - if test ia64 = "$host_cpu"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' - if test yes = "$with_gnu_ld"; then + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $wl-bnoentry $compiler_flags $wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; @@ -5232,7 +5116,7 @@ _LT_EOF case $host_cpu in powerpc) # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) @@ -5262,17 +5146,16 @@ _LT_EOF # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll + shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes @@ -5281,18 +5164,18 @@ _LT_EOF # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' ;; *) # Assume MSVC wrapper @@ -5301,7 +5184,7 @@ _LT_EOF # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll + shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. @@ -5351,33 +5234,33 @@ _LT_EOF ;; hpux9*) - if test yes = "$GCC"; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) - if test yes,no = "$GCC,$with_gnu_ld"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes @@ -5385,25 +5268,25 @@ _LT_EOF ;; hpux11*) - if test yes,no = "$GCC,$with_gnu_ld"; then + if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ @@ -5411,14 +5294,14 @@ _LT_EOF # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in @@ -5429,7 +5312,7 @@ _LT_EOF *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. @@ -5440,16 +5323,16 @@ _LT_EOF ;; irix5* | irix6* | nonstopux*) - if test yes = "$GCC"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], - [save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + [save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], @@ -5462,22 +5345,22 @@ _LT_EOF end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) - LDFLAGS=$save_LDFLAGS]) - if test yes = "$lt_cv_irix_exported_symbol"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + LDFLAGS="$save_LDFLAGS"]) + if test "$lt_cv_irix_exported_symbol" = yes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; - netbsd*) + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else @@ -5491,7 +5374,7 @@ _LT_EOF newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; @@ -5499,19 +5382,27 @@ _LT_EOF *nto* | *qnx*) ;; - openbsd* | bitrig*) + openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac fi else _LT_TAGVAR(ld_shlibs, $1)=no @@ -5527,28 +5418,28 @@ _LT_EOF ;; osf3*) - if test yes = "$GCC"; then - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag - if test yes = "$GCC"; then - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' @@ -5559,24 +5450,24 @@ _LT_EOF solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test yes = "$GCC"; then - wlarc='$wl' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) - wlarc='$wl' - _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi @@ -5586,11 +5477,11 @@ _LT_EOF solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. GCC discards it without '$wl', + # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) - if test yes = "$GCC"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + if test "$GCC" = yes; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi @@ -5600,10 +5491,10 @@ _LT_EOF ;; sunos4*) - if test sequent = "$host_vendor"; then + if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi @@ -5652,43 +5543,43 @@ _LT_EOF ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' - if test yes = "$GCC"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not + # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' - if test yes = "$GCC"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; @@ -5703,17 +5594,17 @@ _LT_EOF ;; esac - if test sni = "$host_vendor"; then + if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no +test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld @@ -5730,7 +5621,7 @@ x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - if test yes,yes = "$GCC,$enable_shared"; then + if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. @@ -5810,12 +5701,12 @@ _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting $shlibpath_var if the + "absolute", i.e impossible to change by setting ${shlibpath_var} if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR @@ -5856,10 +5747,10 @@ dnl [Compiler flag to generate thread safe objects]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to 'libtool'. +# the compiler configuration to `libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl -lt_save_CC=$CC +lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. @@ -5899,18 +5790,18 @@ if test -n "$compiler"; then LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB - # Report what library types will actually be built + # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) - test no = "$can_build_shared" && enable_shared=no + test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) - test yes = "$enable_shared" && enable_static=no + test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' @@ -5918,8 +5809,8 @@ if test -n "$compiler"; then ;; aix[[4-9]]*) - if test ia64 != "$host_cpu" && test no = "$aix_use_runtimelinking"; then - test yes = "$enable_shared" && enable_static=no + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no fi ;; esac @@ -5927,13 +5818,13 @@ if test -n "$compiler"; then AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes + test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP -CC=$lt_save_CC +CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG @@ -5941,14 +5832,14 @@ CC=$lt_save_CC # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to 'libtool'. +# the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl -if test -n "$CXX" && ( test no != "$CXX" && - ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || - (test g++ != "$CXX"))); then +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes @@ -5990,7 +5881,7 @@ _LT_TAGVAR(objext, $1)=$objext # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_caught_CXX_error"; then +if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" @@ -6032,35 +5923,35 @@ if test yes != "$_lt_caught_CXX_error"; then if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately - if test yes = "$GXX"; then + if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi - if test yes = "$GXX"; then + if test "$GXX" = yes; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. - if test yes = "$with_gnu_ld"; then - _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) - wlarc='$wl' + wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi @@ -6096,12 +5987,12 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' - no_entry_flag= + no_entry_flag="" else aix_use_runtimelinking=no @@ -6135,13 +6026,13 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - if test yes = "$GXX"; then + if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` + collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then @@ -6159,56 +6050,56 @@ if test yes != "$_lt_caught_CXX_error"; then fi esac shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag=$shared_flag' $wl-G' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' else - shared_flag='$wl-bM:SRE' + shared_flag='${wl}-bM:SRE' fi fi fi - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes - if test yes = "$aix_use_runtimelinking"; then + if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else - if test ia64 = "$host_cpu"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' - if test yes = "$with_gnu_ld"; then + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' @@ -6216,7 +6107,7 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $wl-bnoentry $compiler_flags $wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; @@ -6226,7 +6117,7 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -6254,58 +6145,57 @@ if test yes != "$_lt_caught_CXX_error"; then # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll + shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -6351,14 +6241,14 @@ if test yes != "$_lt_caught_CXX_error"; then ;; haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default @@ -6370,7 +6260,7 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. @@ -6379,11 +6269,11 @@ if test yes != "$_lt_caught_CXX_error"; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) - if test yes = "$GXX"; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + if test "$GXX" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no @@ -6393,15 +6283,15 @@ if test yes != "$_lt_caught_CXX_error"; then ;; hpux10*|hpux11*) - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + if test $with_gnu_ld = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi @@ -6427,13 +6317,13 @@ if test yes != "$_lt_caught_CXX_error"; then aCC*) case $host_cpu in hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists @@ -6444,20 +6334,20 @@ if test yes != "$_lt_caught_CXX_error"; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; then + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi @@ -6472,22 +6362,22 @@ if test yes != "$_lt_caught_CXX_error"; then interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is @@ -6496,17 +6386,17 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; @@ -6519,8 +6409,8 @@ if test yes != "$_lt_caught_CXX_error"; then # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. @@ -6529,10 +6419,10 @@ if test yes != "$_lt_caught_CXX_error"; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. @@ -6546,59 +6436,59 @@ if test yes != "$_lt_caught_CXX_error"; then # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' @@ -6612,18 +6502,18 @@ if test yes != "$_lt_caught_CXX_error"; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) @@ -6631,10 +6521,10 @@ if test yes != "$_lt_caught_CXX_error"; then *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on @@ -6692,17 +6582,22 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(ld_shlibs, $1)=yes ;; - openbsd* | bitrig*) + openbsd2*) + # C++ shared libraries are fairly broken + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else @@ -6718,9 +6613,9 @@ if test yes != "$_lt_caught_CXX_error"; then # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using @@ -6738,17 +6633,17 @@ if test yes != "$_lt_caught_CXX_error"; then cxx*) case $host in osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ - $RM $lib.exp' + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac @@ -6763,21 +6658,21 @@ if test yes != "$_lt_caught_CXX_error"; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) - if test yes,no = "$GXX,$with_gnu_ld"; then - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists @@ -6823,9 +6718,9 @@ if test yes != "$_lt_caught_CXX_error"; then # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no @@ -6833,7 +6728,7 @@ if test yes != "$_lt_caught_CXX_error"; then solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. + # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; @@ -6850,30 +6745,30 @@ if test yes != "$_lt_caught_CXX_error"; then ;; gcx*) # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker - if test yes,no = "$GXX,$with_gnu_ld"; then - _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else - # g++ 2.7 appears to require '-G' NOT '-shared' on this + # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when @@ -6881,11 +6776,11 @@ if test yes != "$_lt_caught_CXX_error"; then output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi @@ -6894,52 +6789,52 @@ if test yes != "$_lt_caught_CXX_error"; then ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not + # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ - '"$_LT_TAGVAR(old_archive_cmds, $1)" + '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" + '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; @@ -6970,10 +6865,10 @@ if test yes != "$_lt_caught_CXX_error"; then esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - _LT_TAGVAR(GCC, $1)=$GXX - _LT_TAGVAR(LD, $1)=$LD + _LT_TAGVAR(GCC, $1)="$GXX" + _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change @@ -7000,7 +6895,7 @@ if test yes != "$_lt_caught_CXX_error"; then lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test yes != "$_lt_caught_CXX_error" +fi # test "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG @@ -7022,9 +6917,9 @@ AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { - case @S|@2 in - .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; - *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF @@ -7112,13 +7007,13 @@ if AC_TRY_EVAL(ac_compile); then pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do - case $prev$p in + case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. - if test x-L = "$p" || - test x-R = "$p"; then + if test $p = "-L" || + test $p = "-R"; then prev=$p continue fi @@ -7134,16 +7029,16 @@ if AC_TRY_EVAL(ac_compile); then case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac - if test no = "$pre_test_object_deps_done"; then - case $prev in + if test "$pre_test_object_deps_done" = no; then + case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p + _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" fi ;; # The "-l" case would never come before the object being @@ -7151,9 +7046,9 @@ if AC_TRY_EVAL(ac_compile); then esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)=$prev$p + _LT_TAGVAR(postdeps, $1)="${prev}${p}" else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi prev= @@ -7168,15 +7063,15 @@ if AC_TRY_EVAL(ac_compile); then continue fi - if test no = "$pre_test_object_deps_done"; then + if test "$pre_test_object_deps_done" = no; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)=$p + _LT_TAGVAR(predep_objects, $1)="$p" else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)=$p + _LT_TAGVAR(postdep_objects, $1)="$p" else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi @@ -7223,7 +7118,7 @@ linux*) ;; esac - if test yes != "$solaris_use_stlport4"; then + if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; @@ -7246,7 +7141,7 @@ solaris*) # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. - if test yes != "$solaris_use_stlport4"; then + if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; @@ -7260,7 +7155,7 @@ case " $_LT_TAGVAR(postdeps, $1) " in esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) @@ -7280,10 +7175,10 @@ _LT_TAGDECL([], [compiler_lib_search_path], [1], # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. +# to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test no = "$F77"; then +if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi @@ -7320,7 +7215,7 @@ _LT_TAGVAR(objext, $1)=$objext # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_disable_F77"; then +if test "$_lt_disable_F77" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t @@ -7342,7 +7237,7 @@ if test yes != "$_lt_disable_F77"; then _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. - lt_save_CC=$CC + lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} @@ -7356,21 +7251,21 @@ if test yes != "$_lt_disable_F77"; then AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) - test no = "$can_build_shared" && enable_shared=no + test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) - test yes = "$enable_shared" && enable_static=no + test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) - if test ia64 != "$host_cpu" && test no = "$aix_use_runtimelinking"; then - test yes = "$enable_shared" && enable_static=no + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no fi ;; esac @@ -7378,11 +7273,11 @@ if test yes != "$_lt_disable_F77"; then AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes + test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) - _LT_TAGVAR(GCC, $1)=$G77 - _LT_TAGVAR(LD, $1)=$LD + _LT_TAGVAR(GCC, $1)="$G77" + _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change @@ -7399,9 +7294,9 @@ if test yes != "$_lt_disable_F77"; then fi # test -n "$compiler" GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test yes != "$_lt_disable_F77" + CC="$lt_save_CC" + CFLAGS="$lt_save_CFLAGS" +fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG @@ -7411,11 +7306,11 @@ AC_LANG_POP # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. +# to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) -if test -z "$FC" || test no = "$FC"; then +if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi @@ -7452,7 +7347,7 @@ _LT_TAGVAR(objext, $1)=$objext # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_disable_FC"; then +if test "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t @@ -7474,7 +7369,7 @@ if test yes != "$_lt_disable_FC"; then _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. - lt_save_CC=$CC + lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} @@ -7490,21 +7385,21 @@ if test yes != "$_lt_disable_FC"; then AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) - test no = "$can_build_shared" && enable_shared=no + test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) - test yes = "$enable_shared" && enable_static=no + test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) - if test ia64 != "$host_cpu" && test no = "$aix_use_runtimelinking"; then - test yes = "$enable_shared" && enable_static=no + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no fi ;; esac @@ -7512,11 +7407,11 @@ if test yes != "$_lt_disable_FC"; then AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes + test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) - _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu - _LT_TAGVAR(LD, $1)=$LD + _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" + _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change @@ -7536,7 +7431,7 @@ if test yes != "$_lt_disable_FC"; then GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS -fi # test yes != "$_lt_disable_FC" +fi # test "$_lt_disable_FC" != yes AC_LANG_POP ])# _LT_LANG_FC_CONFIG @@ -7546,7 +7441,7 @@ AC_LANG_POP # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. +# to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE @@ -7580,7 +7475,7 @@ CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)=$LD +_LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. @@ -7617,7 +7512,7 @@ CFLAGS=$lt_save_CFLAGS # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. +# to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE @@ -7651,7 +7546,7 @@ CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)=$LD +_LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. @@ -7688,7 +7583,7 @@ CFLAGS=$lt_save_CFLAGS # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. +# to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE @@ -7704,7 +7599,7 @@ _LT_TAGVAR(objext, $1)=$objext lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests -lt_simple_link_test_code=$lt_simple_compile_test_code +lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER @@ -7714,7 +7609,7 @@ _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. -lt_save_CC=$CC +lt_save_CC="$CC" lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= @@ -7743,7 +7638,7 @@ AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) - test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) @@ -7854,7 +7749,7 @@ lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f "$lt_ac_sed" && continue + test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in @@ -7871,9 +7766,9 @@ for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough - test 10 -lt "$lt_ac_count" && break + test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` - if test "$lt_ac_count" -gt "$lt_ac_max"; then + if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi @@ -7897,7 +7792,27 @@ dnl AC_DEFUN([LT_AC_PROG_SED], []) # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], -[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +AC_MSG_RESULT([$xsi_shell]) +_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) + +AC_MSG_CHECKING([whether the shell understands "+="]) +lt_shell_append=no +( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +AC_MSG_RESULT([$lt_shell_append]) +_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false @@ -7921,9 +7836,102 @@ _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES +# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) +# ------------------------------------------------------ +# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and +# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. +m4_defun([_LT_PROG_FUNCTION_REPLACE], +[dnl { +sed -e '/^$1 ()$/,/^} # $1 /c\ +$1 ()\ +{\ +m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) +} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: +]) + + +# _LT_PROG_REPLACE_SHELLFNS +# ------------------------- +# Replace existing portable implementations of several shell functions with +# equivalent extended shell implementations where those features are available.. +m4_defun([_LT_PROG_REPLACE_SHELLFNS], +[if test x"$xsi_shell" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl + func_split_long_opt_name=${1%%=*} + func_split_long_opt_arg=${1#*=}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) + + _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) + + _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) + + _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) +fi + +if test x"$lt_shell_append" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) + + _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl + func_quote_for_eval "${2}" +dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ + eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) +fi +]) + # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- -# Determine what file name conversion functions should be used by +# Determine which file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4 index 50c7723..5d9acd8 100644 --- a/m4/ltoptions.m4 +++ b/m4/ltoptions.m4 @@ -1,14 +1,14 @@ # Helper functions for option handling. -*- Autoconf -*- # -# Copyright (C) 2004-2005, 2007-2009, 2011-2013 Free Software -# Foundation, Inc. +# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, +# Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. -# serial 8 ltoptions.m4 +# serial 7 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) @@ -29,7 +29,7 @@ m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option '$2'])])[]dnl + [m4_warning([Unknown $1 option `$2'])])[]dnl ]) @@ -75,13 +75,13 @@ m4_if([$1],[LT_INIT],[ dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither - dnl 'shared' nor 'disable-shared' was passed, we enable building of shared + dnl `shared' nor `disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) + [_LT_ENABLE_FAST_INSTALL]) ]) ])# _LT_SET_OPTIONS @@ -112,7 +112,7 @@ AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'dlopen' option into LT_INIT's first parameter.]) +put the `dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: @@ -148,7 +148,7 @@ AU_DEFUN([AC_LIBTOOL_WIN32_DLL], _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'win32-dll' option into LT_INIT's first parameter.]) +put the `win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: @@ -157,9 +157,9 @@ dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- -# implement the --enable-shared flag, and supports the 'shared' and -# 'disable-shared' LT_INIT options. -# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +# implement the --enable-shared flag, and supports the `shared' and +# `disable-shared' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], @@ -172,14 +172,14 @@ AC_ARG_ENABLE([shared], *) enable_shared=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done - IFS=$lt_save_ifs + IFS="$lt_save_ifs" ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) @@ -211,9 +211,9 @@ dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- -# implement the --enable-static flag, and support the 'static' and -# 'disable-static' LT_INIT options. -# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +# implement the --enable-static flag, and support the `static' and +# `disable-static' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], @@ -226,14 +226,14 @@ AC_ARG_ENABLE([static], *) enable_static=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done - IFS=$lt_save_ifs + IFS="$lt_save_ifs" ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) @@ -265,9 +265,9 @@ dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- -# implement the --enable-fast-install flag, and support the 'fast-install' -# and 'disable-fast-install' LT_INIT options. -# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +# implement the --enable-fast-install flag, and support the `fast-install' +# and `disable-fast-install' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], @@ -280,14 +280,14 @@ AC_ARG_ENABLE([fast-install], *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done - IFS=$lt_save_ifs + IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) @@ -304,14 +304,14 @@ AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put -the 'fast-install' option into LT_INIT's first parameter.]) +the `fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put -the 'disable-fast-install' option into LT_INIT's first parameter.]) +the `disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: @@ -321,9 +321,9 @@ dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_PIC([MODE]) # -------------------- -# implement the --with-pic flag, and support the 'pic-only' and 'no-pic' +# implement the --with-pic flag, and support the `pic-only' and `no-pic' # LT_INIT options. -# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], @@ -334,17 +334,19 @@ m4_define([_LT_WITH_PIC], *) pic_mode=default # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done - IFS=$lt_save_ifs + IFS="$lt_save_ifs" ;; esac], - [pic_mode=m4_default([$1], [default])]) + [pic_mode=default]) + +test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC @@ -357,7 +359,7 @@ AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'pic-only' option into LT_INIT's first parameter.]) +put the `pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4 index 7cbc638..9000a05 100644 --- a/m4/ltsugar.m4 +++ b/m4/ltsugar.m4 @@ -1,7 +1,6 @@ # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # -# Copyright (C) 2004-2005, 2007-2008, 2011-2013 Free Software -# Foundation, Inc. +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives @@ -34,7 +33,7 @@ m4_define([_lt_join], # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support -# Autoconf-2.59, which quotes differently. +# Autoconf-2.59 which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], @@ -45,7 +44,7 @@ m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. +# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different diff --git a/m4/ltversion.m4 b/m4/ltversion.m4 index daeb0af..07a8602 100644 --- a/m4/ltversion.m4 +++ b/m4/ltversion.m4 @@ -1,6 +1,6 @@ # ltversion.m4 -- version numbers -*- Autoconf -*- # -# Copyright (C) 2004, 2011-2013 Free Software Foundation, Inc. +# Copyright (C) 2004 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives @@ -9,15 +9,15 @@ # @configure_input@ -# serial 4038 ltversion.m4 +# serial 3337 ltversion.m4 # This file is part of GNU Libtool -m4_define([LT_PACKAGE_VERSION], [2.4.2.418]) -m4_define([LT_PACKAGE_REVISION], [2.4.2.418]) +m4_define([LT_PACKAGE_VERSION], [2.4.2]) +m4_define([LT_PACKAGE_REVISION], [1.3337]) AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4.2.418' -macro_revision='2.4.2.418' +[macro_version='2.4.2' +macro_revision='1.3337' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4 index 59461e4..c573da9 100644 --- a/m4/lt~obsolete.m4 +++ b/m4/lt~obsolete.m4 @@ -1,7 +1,6 @@ # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # -# Copyright (C) 2004-2005, 2007, 2009, 2011-2013 Free Software -# Foundation, Inc. +# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives @@ -12,7 +11,7 @@ # These exist entirely to fool aclocal when bootstrapping libtool. # -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # @@ -26,7 +25,7 @@ # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until diff --git a/missing b/missing index cdea514..db98974 100755 --- a/missing +++ b/missing @@ -1,7 +1,7 @@ #! /bin/sh # Common wrapper for a few potentially missing GNU programs. -scriptversion=2012-06-26.16; # UTC +scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2013 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. @@ -160,7 +160,7 @@ give_advice () ;; autom4te*) echo "You might have modified some maintainer files that require" - echo "the 'automa4te' program to be rebuilt." + echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) diff --git a/src/Makefile.am b/src/Makefile.am index c99967f..8cfe4ac 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,6 +1,5 @@ # Process this file with automake to produce Makefile.in -NULL = SUBDIRS = DIST_SUBDIRS = BUILT_SOURCES = @@ -14,171 +13,98 @@ DISTCHECK_CONFIGURE_FLAGS = --enable-introspection #AM_CXXFLAGS = # Convenience targets: -lib: libharfbuzz.la +lib: $(BUILT_SOURCES) libharfbuzz.la +fuzzing: $(BUILT_SOURCES) libharfbuzz-fuzzing.la lib_LTLIBRARIES = libharfbuzz.la +include Makefile.sources + HBCFLAGS = HBLIBS = -HBSOURCES = \ - hb-atomic-private.hh \ - hb-blob.cc \ - hb-buffer-deserialize-json.hh \ - hb-buffer-deserialize-text.hh \ - hb-buffer-private.hh \ - hb-buffer-serialize.cc \ - hb-buffer.cc \ - hb-cache-private.hh \ - hb-common.cc \ - hb-face-private.hh \ - hb-face.cc \ - hb-font-private.hh \ - hb-font.cc \ - hb-mutex-private.hh \ - hb-object-private.hh \ - hb-open-file-private.hh \ - hb-open-type-private.hh \ - hb-ot-cmap-table.hh \ - hb-ot-head-table.hh \ - hb-ot-hhea-table.hh \ - hb-ot-hmtx-table.hh \ - hb-ot-maxp-table.hh \ - hb-ot-name-table.hh \ - hb-ot-tag.cc \ - hb-private.hh \ - hb-set-private.hh \ - hb-set.cc \ - hb-shape.cc \ - hb-shape-plan-private.hh \ - hb-shape-plan.cc \ - hb-shaper-list.hh \ - hb-shaper-impl-private.hh \ - hb-shaper-private.hh \ - hb-shaper.cc \ - hb-unicode-private.hh \ - hb-unicode.cc \ - hb-utf-private.hh \ - hb-warning.cc \ - $(NULL) -HBHEADERS = \ - hb.h \ - hb-blob.h \ - hb-buffer.h \ - hb-common.h \ - hb-deprecated.h \ - hb-face.h \ - hb-font.h \ - hb-set.h \ - hb-shape.h \ - hb-shape-plan.h \ - hb-unicode.h \ - $(NULL) -HBNODISTHEADERS = \ - hb-version.h \ - $(NULL) +HBNONPCLIBS = +HBDEPS = +HBSOURCES = $(HB_BASE_sources) +HBHEADERS = $(HB_BASE_headers) +HBNODISTHEADERS = $(HB_NODIST_headers) if HAVE_OT -HBSOURCES += \ - hb-ot-font.cc \ - hb-ot-layout.cc \ - hb-ot-layout-common-private.hh \ - hb-ot-layout-gdef-table.hh \ - hb-ot-layout-gpos-table.hh \ - hb-ot-layout-gsubgpos-private.hh \ - hb-ot-layout-gsub-table.hh \ - hb-ot-layout-jstf-table.hh \ - hb-ot-layout-private.hh \ - hb-ot-map.cc \ - hb-ot-map-private.hh \ - hb-ot-shape.cc \ - hb-ot-shape-complex-arabic.cc \ - hb-ot-shape-complex-arabic-fallback.hh \ - hb-ot-shape-complex-arabic-table.hh \ - hb-ot-shape-complex-arabic-win1256.hh \ - hb-ot-shape-complex-default.cc \ - hb-ot-shape-complex-hangul.cc \ - hb-ot-shape-complex-hebrew.cc \ - hb-ot-shape-complex-indic.cc \ - hb-ot-shape-complex-indic-machine.hh \ - hb-ot-shape-complex-indic-private.hh \ - hb-ot-shape-complex-indic-table.cc \ - hb-ot-shape-complex-myanmar.cc \ - hb-ot-shape-complex-myanmar-machine.hh \ - hb-ot-shape-complex-sea.cc \ - hb-ot-shape-complex-sea-machine.hh \ - hb-ot-shape-complex-thai.cc \ - hb-ot-shape-complex-tibetan.cc \ - hb-ot-shape-complex-private.hh \ - hb-ot-shape-normalize-private.hh \ - hb-ot-shape-normalize.cc \ - hb-ot-shape-fallback-private.hh \ - hb-ot-shape-fallback.cc \ - hb-ot-shape-private.hh \ - $(NULL) -HBHEADERS += \ - hb-ot.h \ - hb-ot-font.h \ - hb-ot-layout.h \ - hb-ot-shape.h \ - hb-ot-tag.h \ - $(NULL) +HBSOURCES += $(HB_OT_sources) +HBHEADERS += $(HB_OT_headers) endif if HAVE_FALLBACK -HBSOURCES += hb-fallback-shape.cc +HBSOURCES += $(HB_FALLBACK_sources) endif if HAVE_PTHREAD HBCFLAGS += $(PTHREAD_CFLAGS) -HBLIBS += $(PTHREAD_LIBS) +HBNONPCLIBS += $(PTHREAD_LIBS) endif if HAVE_GLIB HBCFLAGS += $(GLIB_CFLAGS) HBLIBS += $(GLIB_LIBS) -HBSOURCES += hb-glib.cc -HBHEADERS += hb-glib.h +HBDEPS += $(GLIB_DEPS) +HBSOURCES += $(HB_GLIB_sources) +HBHEADERS += $(HB_GLIB_headers) endif if HAVE_FREETYPE HBCFLAGS += $(FREETYPE_CFLAGS) HBLIBS += $(FREETYPE_LIBS) -HBSOURCES += hb-ft.cc -HBHEADERS += hb-ft.h +# XXX +# The following creates a recursive dependency on FreeType if FreeType is +# built with HarfBuzz support enabled. Newer pkg-config handles that just +# fine but pkg-config 0.26 as shipped in Ubuntu 14.04 crashes. Remove +# in a year or two, or otherwise work around it... +#HBDEPS += $(FREETYPE_DEPS) +HBSOURCES += $(HB_FT_sources) +HBHEADERS += $(HB_FT_headers) endif if HAVE_GRAPHITE2 HBCFLAGS += $(GRAPHITE2_CFLAGS) HBLIBS += $(GRAPHITE2_LIBS) -HBSOURCES += hb-graphite2.cc -HBHEADERS += hb-graphite2.h +HBDEPS += $(GRAPHITE2_DEPS) +HBSOURCES += $(HB_GRAPHITE2_sources) +HBHEADERS += $(HB_GRAPHITE2_headers) endif if HAVE_UNISCRIBE HBCFLAGS += $(UNISCRIBE_CFLAGS) -HBLIBS += $(UNISCRIBE_LIBS) -HBSOURCES += hb-uniscribe.cc -HBHEADERS += hb-uniscribe.h +HBNONPCLIBS += $(UNISCRIBE_LIBS) +HBSOURCES += $(HB_UNISCRIBE_sources) +HBHEADERS += $(HB_UNISCRIBE_headers) +endif + +if HAVE_DIRECTWRITE +HBCFLAGS += $(DIRECTWRITE_CXXFLAGS) +HBNONPCLIBS += $(DIRECTWRITE_LIBS) +HBSOURCES += $(HB_DIRECTWRITE_sources) +HBHEADERS += $(HB_DIRECTWRITE_headers) endif if HAVE_CORETEXT HBCFLAGS += $(CORETEXT_CFLAGS) -HBLIBS += $(CORETEXT_LIBS) -HBSOURCES += hb-coretext.cc -HBHEADERS += hb-coretext.h +HBNONPCLIBS += $(CORETEXT_LIBS) +HBSOURCES += $(HB_CORETEXT_sources) +HBHEADERS += $(HB_CORETEXT_headers) endif if HAVE_UCDN SUBDIRS += hb-ucdn HBCFLAGS += -I$(srcdir)/hb-ucdn HBLIBS += hb-ucdn/libhb-ucdn.la -HBSOURCES += hb-ucdn.cc +HBSOURCES += $(HB_UCDN_sources) endif DIST_SUBDIRS += hb-ucdn # Put the library together +HBLIBS += $(HBNONPCLIBS) + if OS_WIN32 export_symbols = -export-symbols harfbuzz.def harfbuzz_def_dependency = harfbuzz.def @@ -203,35 +129,59 @@ pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = harfbuzz.pc EXTRA_DIST += harfbuzz.pc.in +FUZZING_CPPFLAGS= \ + -DHB_NDEBUG \ + -DHB_MAX_NESTING_LEVEL=3 \ + -DHB_SANITIZE_MAX_EDITS=3 \ + -DHB_BUFFER_MAX_EXPANSION_FACTOR=3 \ + -DHB_BUFFER_MAX_LEN_MIN=8 \ + -DHB_BUFFER_MAX_LEN_DEFAULT=128 \ + $(NULL) +EXTRA_LTLIBRARIES = libharfbuzz-fuzzing.la +libharfbuzz_fuzzing_la_LINK = $(libharfbuzz_la_LINK) +libharfbuzz_fuzzing_la_SOURCES = $(libharfbuzz_la_SOURCES) +libharfbuzz_fuzzing_la_CPPFLAGS = $(libharfbuzz_la_CPPFLAGS) $(FUZZING_CPPFLAGS) +libharfbuzz_fuzzing_la_LDFLAGS = $(libharfbuzz_la_LDFLAGS) +libharfbuzz_fuzzing_la_LIBADD = $(libharfbuzz_la_LIBADD) +EXTRA_libharfbuzz_fuzzing_la_DEPENDENCIES = $(EXTRA_libharfbuzz_la_DEPENDENCIES) +CLEANFILES += libharfbuzz-fuzzing.la + if HAVE_ICU +if HAVE_ICU_BUILTIN +HBCFLAGS += $(ICU_CFLAGS) +HBLIBS += $(ICU_LIBS) +HBSOURCES += $(HB_ICU_sources) +HBHEADERS += $(HB_ICU_headers) +else lib_LTLIBRARIES += libharfbuzz-icu.la -libharfbuzz_icu_la_SOURCES = hb-icu.cc +libharfbuzz_icu_la_SOURCES = $(HB_ICU_sources) libharfbuzz_icu_la_CPPFLAGS = $(ICU_CFLAGS) libharfbuzz_icu_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) -no-undefined libharfbuzz_icu_la_LIBADD = $(ICU_LIBS) libharfbuzz.la -pkginclude_HEADERS += hb-icu.h +pkginclude_HEADERS += $(HB_ICU_headers) pkgconfig_DATA += harfbuzz-icu.pc endif +endif EXTRA_DIST += harfbuzz-icu.pc.in if HAVE_GOBJECT lib_LTLIBRARIES += libharfbuzz-gobject.la -libharfbuzz_gobject_la_SOURCES = hb-gobject-structs.cc -nodist_libharfbuzz_gobject_la_SOURCES = hb-gobject-enums.cc +libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_sources) +nodist_libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_ENUM_sources) libharfbuzz_gobject_la_CPPFLAGS = $(GOBJECT_CFLAGS) libharfbuzz_gobject_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) -no-undefined libharfbuzz_gobject_la_LIBADD = $(GOBJECT_LIBS) libharfbuzz.la -pkginclude_HEADERS += hb-gobject.h hb-gobject-structs.h -nodist_pkginclude_HEADERS += hb-gobject-enums.h +pkginclude_HEADERS += $(HB_GOBJECT_headers) +nodist_pkginclude_HEADERS += $(HB_GOBJECT_ENUM_headers) pkgconfig_DATA += harfbuzz-gobject.pc BUILT_SOURCES += \ - hb-gobject-enums.cc \ - hb-gobject-enums.h \ + $(HB_GOBJECT_ENUM_sources) \ + $(HB_GOBJECT_ENUM_headers) \ $(NULL) DISTCLEANFILES += \ - hb-gobject-enums.cc \ - hb-gobject-enums.h \ + $(HB_GOBJECT_ENUM_sources) \ + $(HB_GOBJECT_ENUM_headers) \ $(NULL) hb-gobject-enums.%: hb-gobject-enums.%.tmpl $(HBHEADERS) $(AM_V_GEN) $(GLIB_MKENUMS) \ @@ -253,6 +203,8 @@ EXTRA_DIST += \ -e 's@%exec_prefix%@$(exec_prefix)@g' \ -e 's@%libdir%@$(libdir)@g' \ -e 's@%includedir%@$(includedir)@g' \ + -e 's@%libs_private%@$(HBNONPCLIBS)@g' \ + -e 's@%requires_private%@$(HBDEPS)@g' \ -e 's@%VERSION%@$(VERSION)@g' \ "$<" > "$@" \ || ($(RM) "$@"; false) @@ -267,7 +219,7 @@ harfbuzz.def: $(HBHEADERS) $(HBNODISTHEADERS) $(EGREP) '^hb_.* \(' | \ sed -e 's/ (.*//' | \ LANG=C sort; \ - echo LIBRARY libharfbuzz-$(HB_VERSION_MAJOR).dll; \ + echo LIBRARY libharfbuzz-0.dll; \ ) >"$@" @ ! grep -q hb_ERROR "$@" \ || ($(RM) "$@"; false) @@ -276,29 +228,34 @@ harfbuzz.def: $(HBHEADERS) $(HBNODISTHEADERS) GENERATORS = \ gen-arabic-table.py \ gen-indic-table.py \ + gen-use-table.py \ $(NULL) EXTRA_DIST += $(GENERATORS) -unicode-tables: arabic-table indic-table - -indic-table: gen-indic-table.py IndicSyllabicCategory.txt IndicMatraCategory.txt Blocks.txt - $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-indic-table.cc \ - || ($(RM) hb-ot-shape-complex-indic-table.cc; false) +unicode-tables: arabic-table indic-table use-table arabic-table: gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-arabic-table.hh \ || ($(RM) hb-ot-shape-complex-arabic-table.hh; false) +indic-table: gen-indic-table.py IndicSyllabicCategory-7.0.0.txt IndicMatraCategory-7.0.0.txt Blocks.txt + $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-indic-table.cc \ + || ($(RM) hb-ot-shape-complex-indic-table.cc; false) + +use-table: gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt + $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-use-table.cc \ + || ($(RM) hb-ot-shape-complex-use-table.cc; false) + built-sources: $(BUILT_SOURCES) -.PHONY: unicode-tables arabic-table indic-table built-sources +.PHONY: unicode-tables arabic-table indic-table use-table built-sources RAGEL_GENERATED = \ $(srcdir)/hb-buffer-deserialize-json.hh \ $(srcdir)/hb-buffer-deserialize-text.hh \ $(srcdir)/hb-ot-shape-complex-indic-machine.hh \ $(srcdir)/hb-ot-shape-complex-myanmar-machine.hh \ - $(srcdir)/hb-ot-shape-complex-sea-machine.hh \ + $(srcdir)/hb-ot-shape-complex-use-machine.hh \ $(NULL) BUILT_SOURCES += $(RAGEL_GENERATED) EXTRA_DIST += \ @@ -306,7 +263,7 @@ EXTRA_DIST += \ hb-buffer-deserialize-text.rl \ hb-ot-shape-complex-indic-machine.rl \ hb-ot-shape-complex-myanmar-machine.rl \ - hb-ot-shape-complex-sea-machine.rl \ + hb-ot-shape-complex-use-machine.rl \ $(NULL) MAINTAINERCLEANFILES += $(RAGEL_GENERATED) $(srcdir)/%.hh: $(srcdir)/%.rl @@ -352,7 +309,14 @@ dist_check_SCRIPTS = \ check-symbols.sh \ $(NULL) -TESTS = $(dist_check_SCRIPTS) +check_PROGRAMS = \ + test-ot-tag \ + $(NULL) +test_ot_tag_SOURCES = hb-ot-tag.cc +test_ot_tag_CPPFLAGS = $(HBCFLAGS) -DMAIN +test_ot_tag_LDADD = libharfbuzz.la $(HBLIBS) + +TESTS = $(dist_check_SCRIPTS) $(check_PROGRAMS) TESTS_ENVIRONMENT = \ srcdir="$(srcdir)" \ MAKE="$(MAKE) $(AM_MAKEFLAGS)" \ @@ -363,7 +327,7 @@ TESTS_ENVIRONMENT = \ if HAVE_INTROSPECTION -include $(INTROSPECTION_MAKEFILE) -INTROSPECTION_GIRS = HarfBuzz-$(HB_VERSION_MAJOR).0.gir # What does the 0 mean anyway?! +INTROSPECTION_GIRS = HarfBuzz-0.0.gir # What does the 0 mean anyway?! INTROSPECTION_SCANNER_ARGS = -I$(srcdir) -n hb --identifier-prefix=hb_ --warn-all INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir) INTROSPECTION_SCANNER_ENV = CC="$(CC)" @@ -379,6 +343,7 @@ HarfBuzz_0_0_gir_CFLAGS = \ -DHB_OT_H_IN \ -DHB_GOBJECT_H \ -DHB_GOBJECT_H_IN \ + -DHB_EXTERN= \ $(NULL) HarfBuzz_0_0_gir_LIBS = \ libharfbuzz.la \ @@ -388,10 +353,10 @@ HarfBuzz_0_0_gir_FILES = \ $(HBHEADERS) \ $(HBNODISTHEADERS) \ $(HBSOURCES) \ - hb-gobject-enums.cc \ - hb-gobject-enums.h \ - hb-gobject-structs.cc \ - hb-gobject-structs.h \ + $(HB_GOBJECT_ENUM_sources) \ + $(HB_GOBJECT_ENUM_headers) \ + $(HB_GOBJECT_sources) \ + $(HB_GOBJECT_STRUCTS_headers) \ $(NULL) girdir = $(datadir)/gir-1.0 diff --git a/src/Makefile.in b/src/Makefile.in index bd923e6..7094614 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.14 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. @@ -83,107 +83,80 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -@HAVE_OT_TRUE@am__append_1 = \ -@HAVE_OT_TRUE@ hb-ot-font.cc \ -@HAVE_OT_TRUE@ hb-ot-layout.cc \ -@HAVE_OT_TRUE@ hb-ot-layout-common-private.hh \ -@HAVE_OT_TRUE@ hb-ot-layout-gdef-table.hh \ -@HAVE_OT_TRUE@ hb-ot-layout-gpos-table.hh \ -@HAVE_OT_TRUE@ hb-ot-layout-gsubgpos-private.hh \ -@HAVE_OT_TRUE@ hb-ot-layout-gsub-table.hh \ -@HAVE_OT_TRUE@ hb-ot-layout-jstf-table.hh \ -@HAVE_OT_TRUE@ hb-ot-layout-private.hh \ -@HAVE_OT_TRUE@ hb-ot-map.cc \ -@HAVE_OT_TRUE@ hb-ot-map-private.hh \ -@HAVE_OT_TRUE@ hb-ot-shape.cc \ -@HAVE_OT_TRUE@ hb-ot-shape-complex-arabic.cc \ -@HAVE_OT_TRUE@ hb-ot-shape-complex-arabic-fallback.hh \ -@HAVE_OT_TRUE@ hb-ot-shape-complex-arabic-table.hh \ -@HAVE_OT_TRUE@ hb-ot-shape-complex-arabic-win1256.hh \ -@HAVE_OT_TRUE@ hb-ot-shape-complex-default.cc \ -@HAVE_OT_TRUE@ hb-ot-shape-complex-hangul.cc \ -@HAVE_OT_TRUE@ hb-ot-shape-complex-hebrew.cc \ -@HAVE_OT_TRUE@ hb-ot-shape-complex-indic.cc \ -@HAVE_OT_TRUE@ hb-ot-shape-complex-indic-machine.hh \ -@HAVE_OT_TRUE@ hb-ot-shape-complex-indic-private.hh \ -@HAVE_OT_TRUE@ hb-ot-shape-complex-indic-table.cc \ -@HAVE_OT_TRUE@ hb-ot-shape-complex-myanmar.cc \ -@HAVE_OT_TRUE@ hb-ot-shape-complex-myanmar-machine.hh \ -@HAVE_OT_TRUE@ hb-ot-shape-complex-sea.cc \ -@HAVE_OT_TRUE@ hb-ot-shape-complex-sea-machine.hh \ -@HAVE_OT_TRUE@ hb-ot-shape-complex-thai.cc \ -@HAVE_OT_TRUE@ hb-ot-shape-complex-tibetan.cc \ -@HAVE_OT_TRUE@ hb-ot-shape-complex-private.hh \ -@HAVE_OT_TRUE@ hb-ot-shape-normalize-private.hh \ -@HAVE_OT_TRUE@ hb-ot-shape-normalize.cc \ -@HAVE_OT_TRUE@ hb-ot-shape-fallback-private.hh \ -@HAVE_OT_TRUE@ hb-ot-shape-fallback.cc \ -@HAVE_OT_TRUE@ hb-ot-shape-private.hh \ -@HAVE_OT_TRUE@ $(NULL) - -@HAVE_OT_TRUE@am__append_2 = \ -@HAVE_OT_TRUE@ hb-ot.h \ -@HAVE_OT_TRUE@ hb-ot-font.h \ -@HAVE_OT_TRUE@ hb-ot-layout.h \ -@HAVE_OT_TRUE@ hb-ot-shape.h \ -@HAVE_OT_TRUE@ hb-ot-tag.h \ -@HAVE_OT_TRUE@ $(NULL) - -@HAVE_FALLBACK_TRUE@am__append_3 = hb-fallback-shape.cc +DIST_COMMON = $(srcdir)/Makefile.sources $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(srcdir)/hb-version.h.in \ + $(dist_check_SCRIPTS) $(top_srcdir)/depcomp \ + $(am__pkginclude_HEADERS_DIST) $(top_srcdir)/test-driver +@HAVE_OT_TRUE@am__append_1 = $(HB_OT_sources) +@HAVE_OT_TRUE@am__append_2 = $(HB_OT_headers) +@HAVE_FALLBACK_TRUE@am__append_3 = $(HB_FALLBACK_sources) @HAVE_PTHREAD_TRUE@am__append_4 = $(PTHREAD_CFLAGS) @HAVE_PTHREAD_TRUE@am__append_5 = $(PTHREAD_LIBS) @HAVE_GLIB_TRUE@am__append_6 = $(GLIB_CFLAGS) @HAVE_GLIB_TRUE@am__append_7 = $(GLIB_LIBS) -@HAVE_GLIB_TRUE@am__append_8 = hb-glib.cc -@HAVE_GLIB_TRUE@am__append_9 = hb-glib.h -@HAVE_FREETYPE_TRUE@am__append_10 = $(FREETYPE_CFLAGS) -@HAVE_FREETYPE_TRUE@am__append_11 = $(FREETYPE_LIBS) -@HAVE_FREETYPE_TRUE@am__append_12 = hb-ft.cc -@HAVE_FREETYPE_TRUE@am__append_13 = hb-ft.h -@HAVE_GRAPHITE2_TRUE@am__append_14 = $(GRAPHITE2_CFLAGS) -@HAVE_GRAPHITE2_TRUE@am__append_15 = $(GRAPHITE2_LIBS) -@HAVE_GRAPHITE2_TRUE@am__append_16 = hb-graphite2.cc -@HAVE_GRAPHITE2_TRUE@am__append_17 = hb-graphite2.h -@HAVE_UNISCRIBE_TRUE@am__append_18 = $(UNISCRIBE_CFLAGS) -@HAVE_UNISCRIBE_TRUE@am__append_19 = $(UNISCRIBE_LIBS) -@HAVE_UNISCRIBE_TRUE@am__append_20 = hb-uniscribe.cc -@HAVE_UNISCRIBE_TRUE@am__append_21 = hb-uniscribe.h -@HAVE_CORETEXT_TRUE@am__append_22 = $(CORETEXT_CFLAGS) -@HAVE_CORETEXT_TRUE@am__append_23 = $(CORETEXT_LIBS) -@HAVE_CORETEXT_TRUE@am__append_24 = hb-coretext.cc -@HAVE_CORETEXT_TRUE@am__append_25 = hb-coretext.h -@HAVE_UCDN_TRUE@am__append_26 = hb-ucdn -@HAVE_UCDN_TRUE@am__append_27 = -I$(srcdir)/hb-ucdn -@HAVE_UCDN_TRUE@am__append_28 = hb-ucdn/libhb-ucdn.la -@HAVE_UCDN_TRUE@am__append_29 = hb-ucdn.cc -@HAVE_ICU_TRUE@am__append_30 = libharfbuzz-icu.la -@HAVE_ICU_TRUE@am__append_31 = hb-icu.h -@HAVE_ICU_TRUE@am__append_32 = harfbuzz-icu.pc -@HAVE_GOBJECT_TRUE@am__append_33 = libharfbuzz-gobject.la -@HAVE_GOBJECT_TRUE@am__append_34 = hb-gobject.h hb-gobject-structs.h -@HAVE_GOBJECT_TRUE@am__append_35 = hb-gobject-enums.h -@HAVE_GOBJECT_TRUE@am__append_36 = harfbuzz-gobject.pc -@HAVE_GOBJECT_TRUE@am__append_37 = \ -@HAVE_GOBJECT_TRUE@ hb-gobject-enums.cc \ -@HAVE_GOBJECT_TRUE@ hb-gobject-enums.h \ +@HAVE_GLIB_TRUE@am__append_8 = $(GLIB_DEPS) +@HAVE_GLIB_TRUE@am__append_9 = $(HB_GLIB_sources) +@HAVE_GLIB_TRUE@am__append_10 = $(HB_GLIB_headers) +@HAVE_FREETYPE_TRUE@am__append_11 = $(FREETYPE_CFLAGS) +@HAVE_FREETYPE_TRUE@am__append_12 = $(FREETYPE_LIBS) +# XXX +# The following creates a recursive dependency on FreeType if FreeType is +# built with HarfBuzz support enabled. Newer pkg-config handles that just +# fine but pkg-config 0.26 as shipped in Ubuntu 14.04 crashes. Remove +# in a year or two, or otherwise work around it... +#HBDEPS += $(FREETYPE_DEPS) +@HAVE_FREETYPE_TRUE@am__append_13 = $(HB_FT_sources) +@HAVE_FREETYPE_TRUE@am__append_14 = $(HB_FT_headers) +@HAVE_GRAPHITE2_TRUE@am__append_15 = $(GRAPHITE2_CFLAGS) +@HAVE_GRAPHITE2_TRUE@am__append_16 = $(GRAPHITE2_LIBS) +@HAVE_GRAPHITE2_TRUE@am__append_17 = $(GRAPHITE2_DEPS) +@HAVE_GRAPHITE2_TRUE@am__append_18 = $(HB_GRAPHITE2_sources) +@HAVE_GRAPHITE2_TRUE@am__append_19 = $(HB_GRAPHITE2_headers) +@HAVE_UNISCRIBE_TRUE@am__append_20 = $(UNISCRIBE_CFLAGS) +@HAVE_UNISCRIBE_TRUE@am__append_21 = $(UNISCRIBE_LIBS) +@HAVE_UNISCRIBE_TRUE@am__append_22 = $(HB_UNISCRIBE_sources) +@HAVE_UNISCRIBE_TRUE@am__append_23 = $(HB_UNISCRIBE_headers) +@HAVE_DIRECTWRITE_TRUE@am__append_24 = $(DIRECTWRITE_CXXFLAGS) +@HAVE_DIRECTWRITE_TRUE@am__append_25 = $(DIRECTWRITE_LIBS) +@HAVE_DIRECTWRITE_TRUE@am__append_26 = $(HB_DIRECTWRITE_sources) +@HAVE_DIRECTWRITE_TRUE@am__append_27 = $(HB_DIRECTWRITE_headers) +@HAVE_CORETEXT_TRUE@am__append_28 = $(CORETEXT_CFLAGS) +@HAVE_CORETEXT_TRUE@am__append_29 = $(CORETEXT_LIBS) +@HAVE_CORETEXT_TRUE@am__append_30 = $(HB_CORETEXT_sources) +@HAVE_CORETEXT_TRUE@am__append_31 = $(HB_CORETEXT_headers) +@HAVE_UCDN_TRUE@am__append_32 = hb-ucdn +@HAVE_UCDN_TRUE@am__append_33 = -I$(srcdir)/hb-ucdn +@HAVE_UCDN_TRUE@am__append_34 = hb-ucdn/libhb-ucdn.la +@HAVE_UCDN_TRUE@am__append_35 = $(HB_UCDN_sources) +@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@am__append_36 = $(ICU_CFLAGS) +@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@am__append_37 = $(ICU_LIBS) +@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@am__append_38 = $(HB_ICU_sources) +@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@am__append_39 = $(HB_ICU_headers) +@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@am__append_40 = libharfbuzz-icu.la +@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@am__append_41 = $(HB_ICU_headers) +@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@am__append_42 = harfbuzz-icu.pc +@HAVE_GOBJECT_TRUE@am__append_43 = libharfbuzz-gobject.la +@HAVE_GOBJECT_TRUE@am__append_44 = $(HB_GOBJECT_headers) +@HAVE_GOBJECT_TRUE@am__append_45 = $(HB_GOBJECT_ENUM_headers) +@HAVE_GOBJECT_TRUE@am__append_46 = harfbuzz-gobject.pc +@HAVE_GOBJECT_TRUE@am__append_47 = \ +@HAVE_GOBJECT_TRUE@ $(HB_GOBJECT_ENUM_sources) \ +@HAVE_GOBJECT_TRUE@ $(HB_GOBJECT_ENUM_headers) \ @HAVE_GOBJECT_TRUE@ $(NULL) -@HAVE_GOBJECT_TRUE@am__append_38 = \ -@HAVE_GOBJECT_TRUE@ hb-gobject-enums.cc \ -@HAVE_GOBJECT_TRUE@ hb-gobject-enums.h \ +@HAVE_GOBJECT_TRUE@am__append_48 = \ +@HAVE_GOBJECT_TRUE@ $(HB_GOBJECT_ENUM_sources) \ +@HAVE_GOBJECT_TRUE@ $(HB_GOBJECT_ENUM_headers) \ @HAVE_GOBJECT_TRUE@ $(NULL) noinst_PROGRAMS = main$(EXEEXT) test$(EXEEXT) \ test-buffer-serialize$(EXEEXT) test-size-params$(EXEEXT) \ test-would-substitute$(EXEEXT) $(am__EXEEXT_1) bin_PROGRAMS = -TESTS = $(am__EXEEXT_2) -@HAVE_INTROSPECTION_TRUE@am__append_39 = $(gir_DATA) $(typelib_DATA) +check_PROGRAMS = test-ot-tag$(EXEEXT) $(am__EXEEXT_1) +TESTS = $(am__EXEEXT_2) $(check_PROGRAMS) +@HAVE_INTROSPECTION_TRUE@am__append_49 = $(gir_DATA) $(typelib_DATA) subdir = src -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(srcdir)/hb-version.h.in $(dist_check_SCRIPTS) \ - $(top_srcdir)/depcomp $(am__pkginclude_HEADERS_DIST) \ - $(top_srcdir)/test-driver ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ @@ -229,12 +202,151 @@ am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ "$(DESTDIR)$(pkgincludedir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = +@HAVE_GLIB_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) +@HAVE_FREETYPE_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) +@HAVE_GRAPHITE2_TRUE@am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1) +@HAVE_PTHREAD_TRUE@am__DEPENDENCIES_5 = $(am__DEPENDENCIES_1) +@HAVE_UNISCRIBE_TRUE@am__DEPENDENCIES_6 = $(am__DEPENDENCIES_1) +@HAVE_DIRECTWRITE_TRUE@am__DEPENDENCIES_7 = $(am__DEPENDENCIES_1) +@HAVE_CORETEXT_TRUE@am__DEPENDENCIES_8 = $(am__DEPENDENCIES_1) +am__DEPENDENCIES_9 = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_6) \ + $(am__DEPENDENCIES_7) $(am__DEPENDENCIES_8) +@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@am__DEPENDENCIES_10 = \ +@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@ $(am__DEPENDENCIES_1) +am__DEPENDENCIES_11 = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \ + $(am__DEPENDENCIES_4) $(am__append_34) $(am__DEPENDENCIES_9) \ + $(am__DEPENDENCIES_10) +am__DEPENDENCIES_12 = $(am__DEPENDENCIES_11) +libharfbuzz_fuzzing_la_DEPENDENCIES = $(am__DEPENDENCIES_12) +am__libharfbuzz_fuzzing_la_SOURCES_DIST = hb-atomic-private.hh \ + hb-blob.cc hb-buffer-deserialize-json.hh \ + hb-buffer-deserialize-text.hh hb-buffer-private.hh \ + hb-buffer-serialize.cc hb-buffer.cc hb-cache-private.hh \ + hb-common.cc hb-face-private.hh hb-face.cc hb-font-private.hh \ + hb-font.cc hb-mutex-private.hh hb-object-private.hh \ + hb-open-file-private.hh hb-open-type-private.hh \ + hb-ot-cmap-table.hh hb-ot-glyf-table.hh hb-ot-head-table.hh \ + hb-ot-hhea-table.hh hb-ot-hmtx-table.hh hb-ot-maxp-table.hh \ + hb-ot-name-table.hh hb-ot-os2-table.hh hb-ot-post-table.hh \ + hb-ot-tag.cc hb-private.hh hb-set-private.hh hb-set.cc \ + hb-shape.cc hb-shape-plan-private.hh hb-shape-plan.cc \ + hb-shaper-list.hh hb-shaper-impl-private.hh \ + hb-shaper-private.hh hb-shaper.cc hb-unicode-private.hh \ + hb-unicode.cc hb-utf-private.hh hb-warning.cc hb-ot-font.cc \ + hb-ot-layout.cc hb-ot-layout-common-private.hh \ + hb-ot-layout-gdef-table.hh hb-ot-layout-gpos-table.hh \ + hb-ot-layout-gsubgpos-private.hh hb-ot-layout-gsub-table.hh \ + hb-ot-layout-jstf-table.hh hb-ot-layout-private.hh \ + hb-ot-map.cc hb-ot-map-private.hh hb-ot-shape.cc \ + hb-ot-shape-complex-arabic.cc \ + hb-ot-shape-complex-arabic-fallback.hh \ + hb-ot-shape-complex-arabic-private.hh \ + hb-ot-shape-complex-arabic-table.hh \ + hb-ot-shape-complex-arabic-win1256.hh \ + hb-ot-shape-complex-default.cc hb-ot-shape-complex-hangul.cc \ + hb-ot-shape-complex-hebrew.cc hb-ot-shape-complex-indic.cc \ + hb-ot-shape-complex-indic-machine.hh \ + hb-ot-shape-complex-indic-private.hh \ + hb-ot-shape-complex-indic-table.cc \ + hb-ot-shape-complex-myanmar.cc \ + hb-ot-shape-complex-myanmar-machine.hh \ + hb-ot-shape-complex-thai.cc hb-ot-shape-complex-tibetan.cc \ + hb-ot-shape-complex-use.cc hb-ot-shape-complex-use-machine.hh \ + hb-ot-shape-complex-use-private.hh \ + hb-ot-shape-complex-use-table.cc \ + hb-ot-shape-complex-private.hh \ + hb-ot-shape-normalize-private.hh hb-ot-shape-normalize.cc \ + hb-ot-shape-fallback-private.hh hb-ot-shape-fallback.cc \ + hb-ot-shape-private.hh hb-fallback-shape.cc hb-glib.cc \ + hb-ft.cc hb-graphite2.cc hb-uniscribe.cc hb-directwrite.cc \ + hb-coretext.cc hb-ucdn.cc hb-icu.cc hb.h hb-blob.h hb-buffer.h \ + hb-common.h hb-deprecated.h hb-face.h hb-font.h hb-set.h \ + hb-shape.h hb-shape-plan.h hb-unicode.h hb-ot.h hb-ot-font.h \ + hb-ot-layout.h hb-ot-shape.h hb-ot-tag.h hb-glib.h hb-ft.h \ + hb-graphite2.h hb-uniscribe.h hb-directwrite.h hb-coretext.h \ + hb-icu.h hb-version.h +am__objects_1 = +am__objects_2 = libharfbuzz_fuzzing_la-hb-blob.lo \ + libharfbuzz_fuzzing_la-hb-buffer-serialize.lo \ + libharfbuzz_fuzzing_la-hb-buffer.lo \ + libharfbuzz_fuzzing_la-hb-common.lo \ + libharfbuzz_fuzzing_la-hb-face.lo \ + libharfbuzz_fuzzing_la-hb-font.lo \ + libharfbuzz_fuzzing_la-hb-ot-tag.lo \ + libharfbuzz_fuzzing_la-hb-set.lo \ + libharfbuzz_fuzzing_la-hb-shape.lo \ + libharfbuzz_fuzzing_la-hb-shape-plan.lo \ + libharfbuzz_fuzzing_la-hb-shaper.lo \ + libharfbuzz_fuzzing_la-hb-unicode.lo \ + libharfbuzz_fuzzing_la-hb-warning.lo $(am__objects_1) +am__objects_3 = libharfbuzz_fuzzing_la-hb-ot-font.lo \ + libharfbuzz_fuzzing_la-hb-ot-layout.lo \ + libharfbuzz_fuzzing_la-hb-ot-map.lo \ + libharfbuzz_fuzzing_la-hb-ot-shape.lo \ + libharfbuzz_fuzzing_la-hb-ot-shape-complex-arabic.lo \ + libharfbuzz_fuzzing_la-hb-ot-shape-complex-default.lo \ + libharfbuzz_fuzzing_la-hb-ot-shape-complex-hangul.lo \ + libharfbuzz_fuzzing_la-hb-ot-shape-complex-hebrew.lo \ + libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic.lo \ + libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic-table.lo \ + libharfbuzz_fuzzing_la-hb-ot-shape-complex-myanmar.lo \ + libharfbuzz_fuzzing_la-hb-ot-shape-complex-thai.lo \ + libharfbuzz_fuzzing_la-hb-ot-shape-complex-tibetan.lo \ + libharfbuzz_fuzzing_la-hb-ot-shape-complex-use.lo \ + libharfbuzz_fuzzing_la-hb-ot-shape-complex-use-table.lo \ + libharfbuzz_fuzzing_la-hb-ot-shape-normalize.lo \ + libharfbuzz_fuzzing_la-hb-ot-shape-fallback.lo \ + $(am__objects_1) +@HAVE_OT_TRUE@am__objects_4 = $(am__objects_3) +am__objects_5 = libharfbuzz_fuzzing_la-hb-fallback-shape.lo +@HAVE_FALLBACK_TRUE@am__objects_6 = $(am__objects_5) +am__objects_7 = libharfbuzz_fuzzing_la-hb-glib.lo +@HAVE_GLIB_TRUE@am__objects_8 = $(am__objects_7) +am__objects_9 = libharfbuzz_fuzzing_la-hb-ft.lo +@HAVE_FREETYPE_TRUE@am__objects_10 = $(am__objects_9) +am__objects_11 = libharfbuzz_fuzzing_la-hb-graphite2.lo +@HAVE_GRAPHITE2_TRUE@am__objects_12 = $(am__objects_11) +am__objects_13 = libharfbuzz_fuzzing_la-hb-uniscribe.lo +@HAVE_UNISCRIBE_TRUE@am__objects_14 = $(am__objects_13) +am__objects_15 = libharfbuzz_fuzzing_la-hb-directwrite.lo +@HAVE_DIRECTWRITE_TRUE@am__objects_16 = $(am__objects_15) +am__objects_17 = libharfbuzz_fuzzing_la-hb-coretext.lo +@HAVE_CORETEXT_TRUE@am__objects_18 = $(am__objects_17) +am__objects_19 = libharfbuzz_fuzzing_la-hb-ucdn.lo +@HAVE_UCDN_TRUE@am__objects_20 = $(am__objects_19) +am__objects_21 = libharfbuzz_fuzzing_la-hb-icu.lo +@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@am__objects_22 = \ +@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@ $(am__objects_21) +am__objects_23 = $(am__objects_2) $(am__objects_4) $(am__objects_6) \ + $(am__objects_8) $(am__objects_10) $(am__objects_12) \ + $(am__objects_14) $(am__objects_16) $(am__objects_18) \ + $(am__objects_20) $(am__objects_22) +am__objects_24 = $(am__objects_1) +@HAVE_OT_TRUE@am__objects_25 = $(am__objects_24) +@HAVE_GLIB_TRUE@am__objects_26 = $(am__objects_1) +@HAVE_FREETYPE_TRUE@am__objects_27 = $(am__objects_1) +@HAVE_GRAPHITE2_TRUE@am__objects_28 = $(am__objects_1) +@HAVE_UNISCRIBE_TRUE@am__objects_29 = $(am__objects_1) +@HAVE_DIRECTWRITE_TRUE@am__objects_30 = $(am__objects_1) +@HAVE_CORETEXT_TRUE@am__objects_31 = $(am__objects_1) +@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@am__objects_32 = \ +@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@ $(am__objects_1) +am__objects_33 = $(am__objects_24) $(am__objects_25) $(am__objects_26) \ + $(am__objects_27) $(am__objects_28) $(am__objects_29) \ + $(am__objects_30) $(am__objects_31) $(am__objects_32) +am__objects_34 = $(am__objects_24) +am__objects_35 = $(am__objects_23) $(am__objects_33) $(am__objects_34) +am_libharfbuzz_fuzzing_la_OBJECTS = $(am__objects_35) +libharfbuzz_fuzzing_la_OBJECTS = $(am_libharfbuzz_fuzzing_la_OBJECTS) @HAVE_GOBJECT_TRUE@libharfbuzz_gobject_la_DEPENDENCIES = \ @HAVE_GOBJECT_TRUE@ $(am__DEPENDENCIES_1) libharfbuzz.la am__libharfbuzz_gobject_la_SOURCES_DIST = hb-gobject-structs.cc -@HAVE_GOBJECT_TRUE@am_libharfbuzz_gobject_la_OBJECTS = libharfbuzz_gobject_la-hb-gobject-structs.lo +am__objects_36 = libharfbuzz_gobject_la-hb-gobject-structs.lo +@HAVE_GOBJECT_TRUE@am_libharfbuzz_gobject_la_OBJECTS = \ +@HAVE_GOBJECT_TRUE@ $(am__objects_36) +am__objects_37 = libharfbuzz_gobject_la-hb-gobject-enums.lo @HAVE_GOBJECT_TRUE@nodist_libharfbuzz_gobject_la_OBJECTS = \ -@HAVE_GOBJECT_TRUE@ libharfbuzz_gobject_la-hb-gobject-enums.lo +@HAVE_GOBJECT_TRUE@ $(am__objects_37) libharfbuzz_gobject_la_OBJECTS = $(am_libharfbuzz_gobject_la_OBJECTS) \ $(nodist_libharfbuzz_gobject_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) @@ -246,27 +358,21 @@ libharfbuzz_gobject_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_CXXFLAGS) $(CXXFLAGS) $(libharfbuzz_gobject_la_LDFLAGS) \ $(LDFLAGS) -o $@ @HAVE_GOBJECT_TRUE@am_libharfbuzz_gobject_la_rpath = -rpath $(libdir) -@HAVE_ICU_TRUE@libharfbuzz_icu_la_DEPENDENCIES = \ -@HAVE_ICU_TRUE@ $(am__DEPENDENCIES_1) libharfbuzz.la +@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@libharfbuzz_icu_la_DEPENDENCIES = \ +@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@ $(am__DEPENDENCIES_1) \ +@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@ libharfbuzz.la am__libharfbuzz_icu_la_SOURCES_DIST = hb-icu.cc -@HAVE_ICU_TRUE@am_libharfbuzz_icu_la_OBJECTS = \ -@HAVE_ICU_TRUE@ libharfbuzz_icu_la-hb-icu.lo +am__objects_38 = libharfbuzz_icu_la-hb-icu.lo +@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@am_libharfbuzz_icu_la_OBJECTS = \ +@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@ $(am__objects_38) libharfbuzz_icu_la_OBJECTS = $(am_libharfbuzz_icu_la_OBJECTS) libharfbuzz_icu_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(libharfbuzz_icu_la_LDFLAGS) \ $(LDFLAGS) -o $@ -@HAVE_ICU_TRUE@am_libharfbuzz_icu_la_rpath = -rpath $(libdir) -@HAVE_PTHREAD_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) -@HAVE_GLIB_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) -@HAVE_FREETYPE_TRUE@am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1) -@HAVE_GRAPHITE2_TRUE@am__DEPENDENCIES_5 = $(am__DEPENDENCIES_1) -@HAVE_UNISCRIBE_TRUE@am__DEPENDENCIES_6 = $(am__DEPENDENCIES_1) -@HAVE_CORETEXT_TRUE@am__DEPENDENCIES_7 = $(am__DEPENDENCIES_1) -am__DEPENDENCIES_8 = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \ - $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_5) \ - $(am__DEPENDENCIES_6) $(am__DEPENDENCIES_7) $(am__append_28) -libharfbuzz_la_DEPENDENCIES = $(am__DEPENDENCIES_8) +@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@am_libharfbuzz_icu_la_rpath = \ +@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@ -rpath $(libdir) +libharfbuzz_la_DEPENDENCIES = $(am__DEPENDENCIES_11) am__libharfbuzz_la_SOURCES_DIST = hb-atomic-private.hh hb-blob.cc \ hb-buffer-deserialize-json.hh hb-buffer-deserialize-text.hh \ hb-buffer-private.hh hb-buffer-serialize.cc hb-buffer.cc \ @@ -274,8 +380,9 @@ am__libharfbuzz_la_SOURCES_DIST = hb-atomic-private.hh hb-blob.cc \ hb-font-private.hh hb-font.cc hb-mutex-private.hh \ hb-object-private.hh hb-open-file-private.hh \ hb-open-type-private.hh hb-ot-cmap-table.hh \ - hb-ot-head-table.hh hb-ot-hhea-table.hh hb-ot-hmtx-table.hh \ - hb-ot-maxp-table.hh hb-ot-name-table.hh hb-ot-tag.cc \ + hb-ot-glyf-table.hh hb-ot-head-table.hh hb-ot-hhea-table.hh \ + hb-ot-hmtx-table.hh hb-ot-maxp-table.hh hb-ot-name-table.hh \ + hb-ot-os2-table.hh hb-ot-post-table.hh hb-ot-tag.cc \ hb-private.hh hb-set-private.hh hb-set.cc hb-shape.cc \ hb-shape-plan-private.hh hb-shape-plan.cc hb-shaper-list.hh \ hb-shaper-impl-private.hh hb-shaper-private.hh hb-shaper.cc \ @@ -287,6 +394,7 @@ am__libharfbuzz_la_SOURCES_DIST = hb-atomic-private.hh hb-blob.cc \ hb-ot-layout-private.hh hb-ot-map.cc hb-ot-map-private.hh \ hb-ot-shape.cc hb-ot-shape-complex-arabic.cc \ hb-ot-shape-complex-arabic-fallback.hh \ + hb-ot-shape-complex-arabic-private.hh \ hb-ot-shape-complex-arabic-table.hh \ hb-ot-shape-complex-arabic-win1256.hh \ hb-ot-shape-complex-default.cc hb-ot-shape-complex-hangul.cc \ @@ -296,86 +404,98 @@ am__libharfbuzz_la_SOURCES_DIST = hb-atomic-private.hh hb-blob.cc \ hb-ot-shape-complex-indic-table.cc \ hb-ot-shape-complex-myanmar.cc \ hb-ot-shape-complex-myanmar-machine.hh \ - hb-ot-shape-complex-sea.cc hb-ot-shape-complex-sea-machine.hh \ hb-ot-shape-complex-thai.cc hb-ot-shape-complex-tibetan.cc \ + hb-ot-shape-complex-use.cc hb-ot-shape-complex-use-machine.hh \ + hb-ot-shape-complex-use-private.hh \ + hb-ot-shape-complex-use-table.cc \ hb-ot-shape-complex-private.hh \ hb-ot-shape-normalize-private.hh hb-ot-shape-normalize.cc \ hb-ot-shape-fallback-private.hh hb-ot-shape-fallback.cc \ hb-ot-shape-private.hh hb-fallback-shape.cc hb-glib.cc \ - hb-ft.cc hb-graphite2.cc hb-uniscribe.cc hb-coretext.cc \ - hb-ucdn.cc hb.h hb-blob.h hb-buffer.h hb-common.h \ - hb-deprecated.h hb-face.h hb-font.h hb-set.h hb-shape.h \ - hb-shape-plan.h hb-unicode.h hb-ot.h hb-ot-font.h \ + hb-ft.cc hb-graphite2.cc hb-uniscribe.cc hb-directwrite.cc \ + hb-coretext.cc hb-ucdn.cc hb-icu.cc hb.h hb-blob.h hb-buffer.h \ + hb-common.h hb-deprecated.h hb-face.h hb-font.h hb-set.h \ + hb-shape.h hb-shape-plan.h hb-unicode.h hb-ot.h hb-ot-font.h \ hb-ot-layout.h hb-ot-shape.h hb-ot-tag.h hb-glib.h hb-ft.h \ - hb-graphite2.h hb-uniscribe.h hb-coretext.h hb-version.h -am__objects_1 = -@HAVE_OT_TRUE@am__objects_2 = libharfbuzz_la-hb-ot-font.lo \ -@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-layout.lo \ -@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-map.lo \ -@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape.lo \ -@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-complex-arabic.lo \ -@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-complex-default.lo \ -@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-complex-hangul.lo \ -@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-complex-hebrew.lo \ -@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-complex-indic.lo \ -@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-complex-indic-table.lo \ -@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-complex-myanmar.lo \ -@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-complex-sea.lo \ -@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-complex-thai.lo \ -@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-complex-tibetan.lo \ -@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-normalize.lo \ -@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-fallback.lo \ -@HAVE_OT_TRUE@ $(am__objects_1) -@HAVE_FALLBACK_TRUE@am__objects_3 = \ -@HAVE_FALLBACK_TRUE@ libharfbuzz_la-hb-fallback-shape.lo -@HAVE_GLIB_TRUE@am__objects_4 = libharfbuzz_la-hb-glib.lo -@HAVE_FREETYPE_TRUE@am__objects_5 = libharfbuzz_la-hb-ft.lo -@HAVE_GRAPHITE2_TRUE@am__objects_6 = libharfbuzz_la-hb-graphite2.lo -@HAVE_UNISCRIBE_TRUE@am__objects_7 = libharfbuzz_la-hb-uniscribe.lo -@HAVE_CORETEXT_TRUE@am__objects_8 = libharfbuzz_la-hb-coretext.lo -@HAVE_UCDN_TRUE@am__objects_9 = libharfbuzz_la-hb-ucdn.lo -am__objects_10 = libharfbuzz_la-hb-blob.lo \ + hb-graphite2.h hb-uniscribe.h hb-directwrite.h hb-coretext.h \ + hb-icu.h hb-version.h +am__objects_39 = libharfbuzz_la-hb-blob.lo \ libharfbuzz_la-hb-buffer-serialize.lo \ libharfbuzz_la-hb-buffer.lo libharfbuzz_la-hb-common.lo \ libharfbuzz_la-hb-face.lo libharfbuzz_la-hb-font.lo \ libharfbuzz_la-hb-ot-tag.lo libharfbuzz_la-hb-set.lo \ libharfbuzz_la-hb-shape.lo libharfbuzz_la-hb-shape-plan.lo \ libharfbuzz_la-hb-shaper.lo libharfbuzz_la-hb-unicode.lo \ - libharfbuzz_la-hb-warning.lo $(am__objects_1) $(am__objects_2) \ - $(am__objects_3) $(am__objects_4) $(am__objects_5) \ - $(am__objects_6) $(am__objects_7) $(am__objects_8) \ - $(am__objects_9) -@HAVE_OT_TRUE@am__objects_11 = $(am__objects_1) -am__objects_12 = $(am__objects_1) $(am__objects_11) $(am__objects_1) \ - $(am__objects_1) $(am__objects_1) $(am__objects_1) \ - $(am__objects_1) -am__objects_13 = $(am__objects_1) -am_libharfbuzz_la_OBJECTS = $(am__objects_10) $(am__objects_12) \ - $(am__objects_13) + libharfbuzz_la-hb-warning.lo $(am__objects_1) +am__objects_40 = libharfbuzz_la-hb-ot-font.lo \ + libharfbuzz_la-hb-ot-layout.lo libharfbuzz_la-hb-ot-map.lo \ + libharfbuzz_la-hb-ot-shape.lo \ + libharfbuzz_la-hb-ot-shape-complex-arabic.lo \ + libharfbuzz_la-hb-ot-shape-complex-default.lo \ + libharfbuzz_la-hb-ot-shape-complex-hangul.lo \ + libharfbuzz_la-hb-ot-shape-complex-hebrew.lo \ + libharfbuzz_la-hb-ot-shape-complex-indic.lo \ + libharfbuzz_la-hb-ot-shape-complex-indic-table.lo \ + libharfbuzz_la-hb-ot-shape-complex-myanmar.lo \ + libharfbuzz_la-hb-ot-shape-complex-thai.lo \ + libharfbuzz_la-hb-ot-shape-complex-tibetan.lo \ + libharfbuzz_la-hb-ot-shape-complex-use.lo \ + libharfbuzz_la-hb-ot-shape-complex-use-table.lo \ + libharfbuzz_la-hb-ot-shape-normalize.lo \ + libharfbuzz_la-hb-ot-shape-fallback.lo $(am__objects_1) +@HAVE_OT_TRUE@am__objects_41 = $(am__objects_40) +am__objects_42 = libharfbuzz_la-hb-fallback-shape.lo +@HAVE_FALLBACK_TRUE@am__objects_43 = $(am__objects_42) +am__objects_44 = libharfbuzz_la-hb-glib.lo +@HAVE_GLIB_TRUE@am__objects_45 = $(am__objects_44) +am__objects_46 = libharfbuzz_la-hb-ft.lo +@HAVE_FREETYPE_TRUE@am__objects_47 = $(am__objects_46) +am__objects_48 = libharfbuzz_la-hb-graphite2.lo +@HAVE_GRAPHITE2_TRUE@am__objects_49 = $(am__objects_48) +am__objects_50 = libharfbuzz_la-hb-uniscribe.lo +@HAVE_UNISCRIBE_TRUE@am__objects_51 = $(am__objects_50) +am__objects_52 = libharfbuzz_la-hb-directwrite.lo +@HAVE_DIRECTWRITE_TRUE@am__objects_53 = $(am__objects_52) +am__objects_54 = libharfbuzz_la-hb-coretext.lo +@HAVE_CORETEXT_TRUE@am__objects_55 = $(am__objects_54) +am__objects_56 = libharfbuzz_la-hb-ucdn.lo +@HAVE_UCDN_TRUE@am__objects_57 = $(am__objects_56) +am__objects_58 = libharfbuzz_la-hb-icu.lo +@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@am__objects_59 = \ +@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@ $(am__objects_58) +am__objects_60 = $(am__objects_39) $(am__objects_41) $(am__objects_43) \ + $(am__objects_45) $(am__objects_47) $(am__objects_49) \ + $(am__objects_51) $(am__objects_53) $(am__objects_55) \ + $(am__objects_57) $(am__objects_59) +am_libharfbuzz_la_OBJECTS = $(am__objects_60) $(am__objects_33) \ + $(am__objects_34) libharfbuzz_la_OBJECTS = $(am_libharfbuzz_la_OBJECTS) am__EXEEXT_1 = PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) am_main_OBJECTS = main-main.$(OBJEXT) main_OBJECTS = $(am_main_OBJECTS) -main_DEPENDENCIES = libharfbuzz.la $(am__DEPENDENCIES_8) +main_DEPENDENCIES = libharfbuzz.la $(am__DEPENDENCIES_11) am_test_OBJECTS = test-test.$(OBJEXT) test_OBJECTS = $(am_test_OBJECTS) -test_DEPENDENCIES = libharfbuzz.la $(am__DEPENDENCIES_8) \ +test_DEPENDENCIES = libharfbuzz.la $(am__DEPENDENCIES_11) \ $(am__DEPENDENCIES_1) am_test_buffer_serialize_OBJECTS = \ test_buffer_serialize-test-buffer-serialize.$(OBJEXT) test_buffer_serialize_OBJECTS = $(am_test_buffer_serialize_OBJECTS) test_buffer_serialize_DEPENDENCIES = libharfbuzz.la \ - $(am__DEPENDENCIES_8) + $(am__DEPENDENCIES_11) +am_test_ot_tag_OBJECTS = test_ot_tag-hb-ot-tag.$(OBJEXT) +test_ot_tag_OBJECTS = $(am_test_ot_tag_OBJECTS) +test_ot_tag_DEPENDENCIES = libharfbuzz.la $(am__DEPENDENCIES_11) am_test_size_params_OBJECTS = \ test_size_params-test-size-params.$(OBJEXT) test_size_params_OBJECTS = $(am_test_size_params_OBJECTS) -test_size_params_DEPENDENCIES = libharfbuzz.la $(am__DEPENDENCIES_8) +test_size_params_DEPENDENCIES = libharfbuzz.la $(am__DEPENDENCIES_11) am_test_would_substitute_OBJECTS = \ test_would_substitute-test-would-substitute.$(OBJEXT) test_would_substitute_OBJECTS = $(am_test_would_substitute_OBJECTS) test_would_substitute_DEPENDENCIES = libharfbuzz.la \ - $(am__DEPENDENCIES_8) $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_11) $(am__DEPENDENCIES_1) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false @@ -428,17 +548,20 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = -SOURCES = $(libharfbuzz_gobject_la_SOURCES) \ +SOURCES = $(libharfbuzz_fuzzing_la_SOURCES) \ + $(libharfbuzz_gobject_la_SOURCES) \ $(nodist_libharfbuzz_gobject_la_SOURCES) \ $(libharfbuzz_icu_la_SOURCES) $(libharfbuzz_la_SOURCES) \ $(main_SOURCES) $(test_SOURCES) \ - $(test_buffer_serialize_SOURCES) $(test_size_params_SOURCES) \ - $(test_would_substitute_SOURCES) -DIST_SOURCES = $(am__libharfbuzz_gobject_la_SOURCES_DIST) \ + $(test_buffer_serialize_SOURCES) $(test_ot_tag_SOURCES) \ + $(test_size_params_SOURCES) $(test_would_substitute_SOURCES) +DIST_SOURCES = $(am__libharfbuzz_fuzzing_la_SOURCES_DIST) \ + $(am__libharfbuzz_gobject_la_SOURCES_DIST) \ $(am__libharfbuzz_icu_la_SOURCES_DIST) \ $(am__libharfbuzz_la_SOURCES_DIST) $(main_SOURCES) \ $(test_SOURCES) $(test_buffer_serialize_SOURCES) \ - $(test_size_params_SOURCES) $(test_would_substitute_SOURCES) + $(test_ot_tag_SOURCES) $(test_size_params_SOURCES) \ + $(test_would_substitute_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ @@ -457,8 +580,8 @@ am__pkginclude_HEADERS_DIST = hb.h hb-blob.h hb-buffer.h hb-common.h \ hb-deprecated.h hb-face.h hb-font.h hb-set.h hb-shape.h \ hb-shape-plan.h hb-unicode.h hb-ot.h hb-ot-font.h \ hb-ot-layout.h hb-ot-shape.h hb-ot-tag.h hb-glib.h hb-ft.h \ - hb-graphite2.h hb-uniscribe.h hb-coretext.h hb-icu.h \ - hb-gobject.h hb-gobject-structs.h + hb-graphite2.h hb-uniscribe.h hb-directwrite.h hb-coretext.h \ + hb-icu.h hb-gobject.h hb-gobject-structs.h HEADERS = $(nodist_pkginclude_HEADERS) $(pkginclude_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive @@ -718,6 +841,8 @@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ +DIRECTWRITE_CXXFLAGS = @DIRECTWRITE_CXXFLAGS@ +DIRECTWRITE_LIBS = @DIRECTWRITE_LIBS@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ @@ -727,15 +852,20 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ +FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_DEPS = @FREETYPE_DEPS@ FREETYPE_LIBS = @FREETYPE_LIBS@ GIT = @GIT@ GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_DEPS = @GLIB_DEPS@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ GOBJECT_LIBS = @GOBJECT_LIBS@ GRAPHITE2_CFLAGS = @GRAPHITE2_CFLAGS@ +GRAPHITE2_DEPS = @GRAPHITE2_DEPS@ GRAPHITE2_LIBS = @GRAPHITE2_LIBS@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ @@ -858,55 +988,183 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -NULL = -SUBDIRS = $(am__append_26) +SUBDIRS = $(am__append_32) DIST_SUBDIRS = hb-ucdn -BUILT_SOURCES = $(am__append_37) $(RAGEL_GENERATED) +BUILT_SOURCES = $(am__append_47) $(RAGEL_GENERATED) EXTRA_DIST = harfbuzz.pc.in harfbuzz-icu.pc.in harfbuzz-gobject.pc.in \ hb-gobject-enums.cc.tmpl hb-gobject-enums.h.tmpl $(NULL) \ $(GENERATORS) hb-buffer-deserialize-json.rl \ hb-buffer-deserialize-text.rl \ hb-ot-shape-complex-indic-machine.rl \ hb-ot-shape-complex-myanmar-machine.rl \ - hb-ot-shape-complex-sea-machine.rl $(NULL) -CLEANFILES = $(pkgconfig_DATA) harfbuzz.def $(am__append_39) -DISTCLEANFILES = $(am__append_38) + hb-ot-shape-complex-use-machine.rl $(NULL) +CLEANFILES = libharfbuzz-fuzzing.la $(pkgconfig_DATA) harfbuzz.def \ + $(am__append_49) +DISTCLEANFILES = $(am__append_48) MAINTAINERCLEANFILES = $(RAGEL_GENERATED) DISTCHECK_CONFIGURE_FLAGS = --enable-introspection -lib_LTLIBRARIES = libharfbuzz.la $(am__append_30) $(am__append_33) -HBCFLAGS = $(am__append_4) $(am__append_6) $(am__append_10) \ - $(am__append_14) $(am__append_18) $(am__append_22) \ - $(am__append_27) -HBLIBS = $(am__append_5) $(am__append_7) $(am__append_11) \ - $(am__append_15) $(am__append_19) $(am__append_23) \ - $(am__append_28) -HBSOURCES = hb-atomic-private.hh hb-blob.cc \ - hb-buffer-deserialize-json.hh hb-buffer-deserialize-text.hh \ - hb-buffer-private.hh hb-buffer-serialize.cc hb-buffer.cc \ - hb-cache-private.hh hb-common.cc hb-face-private.hh hb-face.cc \ - hb-font-private.hh hb-font.cc hb-mutex-private.hh \ - hb-object-private.hh hb-open-file-private.hh \ - hb-open-type-private.hh hb-ot-cmap-table.hh \ - hb-ot-head-table.hh hb-ot-hhea-table.hh hb-ot-hmtx-table.hh \ - hb-ot-maxp-table.hh hb-ot-name-table.hh hb-ot-tag.cc \ - hb-private.hh hb-set-private.hh hb-set.cc hb-shape.cc \ - hb-shape-plan-private.hh hb-shape-plan.cc hb-shaper-list.hh \ - hb-shaper-impl-private.hh hb-shaper-private.hh hb-shaper.cc \ - hb-unicode-private.hh hb-unicode.cc hb-utf-private.hh \ - hb-warning.cc $(NULL) $(am__append_1) $(am__append_3) \ - $(am__append_8) $(am__append_12) $(am__append_16) \ - $(am__append_20) $(am__append_24) $(am__append_29) -HBHEADERS = hb.h hb-blob.h hb-buffer.h hb-common.h hb-deprecated.h \ - hb-face.h hb-font.h hb-set.h hb-shape.h hb-shape-plan.h \ - hb-unicode.h $(NULL) $(am__append_2) $(am__append_9) \ - $(am__append_13) $(am__append_17) $(am__append_21) \ - $(am__append_25) -HBNODISTHEADERS = \ +lib_LTLIBRARIES = libharfbuzz.la $(am__append_40) $(am__append_43) +NULL = + +# Base and default-included sources and headers +HB_BASE_sources = \ + hb-atomic-private.hh \ + hb-blob.cc \ + hb-buffer-deserialize-json.hh \ + hb-buffer-deserialize-text.hh \ + hb-buffer-private.hh \ + hb-buffer-serialize.cc \ + hb-buffer.cc \ + hb-cache-private.hh \ + hb-common.cc \ + hb-face-private.hh \ + hb-face.cc \ + hb-font-private.hh \ + hb-font.cc \ + hb-mutex-private.hh \ + hb-object-private.hh \ + hb-open-file-private.hh \ + hb-open-type-private.hh \ + hb-ot-cmap-table.hh \ + hb-ot-glyf-table.hh \ + hb-ot-head-table.hh \ + hb-ot-hhea-table.hh \ + hb-ot-hmtx-table.hh \ + hb-ot-maxp-table.hh \ + hb-ot-name-table.hh \ + hb-ot-os2-table.hh \ + hb-ot-post-table.hh \ + hb-ot-tag.cc \ + hb-private.hh \ + hb-set-private.hh \ + hb-set.cc \ + hb-shape.cc \ + hb-shape-plan-private.hh \ + hb-shape-plan.cc \ + hb-shaper-list.hh \ + hb-shaper-impl-private.hh \ + hb-shaper-private.hh \ + hb-shaper.cc \ + hb-unicode-private.hh \ + hb-unicode.cc \ + hb-utf-private.hh \ + hb-warning.cc \ + $(NULL) + +HB_BASE_headers = \ + hb.h \ + hb-blob.h \ + hb-buffer.h \ + hb-common.h \ + hb-deprecated.h \ + hb-face.h \ + hb-font.h \ + hb-set.h \ + hb-shape.h \ + hb-shape-plan.h \ + hb-unicode.h \ + $(NULL) + +HB_NODIST_headers = \ hb-version.h \ $(NULL) +HB_FALLBACK_sources = hb-fallback-shape.cc +HB_OT_sources = \ + hb-ot-font.cc \ + hb-ot-layout.cc \ + hb-ot-layout-common-private.hh \ + hb-ot-layout-gdef-table.hh \ + hb-ot-layout-gpos-table.hh \ + hb-ot-layout-gsubgpos-private.hh \ + hb-ot-layout-gsub-table.hh \ + hb-ot-layout-jstf-table.hh \ + hb-ot-layout-private.hh \ + hb-ot-map.cc \ + hb-ot-map-private.hh \ + hb-ot-shape.cc \ + hb-ot-shape-complex-arabic.cc \ + hb-ot-shape-complex-arabic-fallback.hh \ + hb-ot-shape-complex-arabic-private.hh \ + hb-ot-shape-complex-arabic-table.hh \ + hb-ot-shape-complex-arabic-win1256.hh \ + hb-ot-shape-complex-default.cc \ + hb-ot-shape-complex-hangul.cc \ + hb-ot-shape-complex-hebrew.cc \ + hb-ot-shape-complex-indic.cc \ + hb-ot-shape-complex-indic-machine.hh \ + hb-ot-shape-complex-indic-private.hh \ + hb-ot-shape-complex-indic-table.cc \ + hb-ot-shape-complex-myanmar.cc \ + hb-ot-shape-complex-myanmar-machine.hh \ + hb-ot-shape-complex-thai.cc \ + hb-ot-shape-complex-tibetan.cc \ + hb-ot-shape-complex-use.cc \ + hb-ot-shape-complex-use-machine.hh \ + hb-ot-shape-complex-use-private.hh \ + hb-ot-shape-complex-use-table.cc \ + hb-ot-shape-complex-private.hh \ + hb-ot-shape-normalize-private.hh \ + hb-ot-shape-normalize.cc \ + hb-ot-shape-fallback-private.hh \ + hb-ot-shape-fallback.cc \ + hb-ot-shape-private.hh \ + $(NULL) + +HB_OT_headers = \ + hb-ot.h \ + hb-ot-font.h \ + hb-ot-layout.h \ + hb-ot-shape.h \ + hb-ot-tag.h \ + $(NULL) + + +# Optional Sources and Headers with external deps +HB_FT_sources = hb-ft.cc +HB_FT_headers = hb-ft.h +HB_GLIB_sources = hb-glib.cc +HB_GLIB_headers = hb-glib.h +HB_GRAPHITE2_sources = hb-graphite2.cc +HB_GRAPHITE2_headers = hb-graphite2.h + +# System-dependent sources and headers +HB_CORETEXT_sources = hb-coretext.cc +HB_CORETEXT_headers = hb-coretext.h +HB_DIRECTWRITE_sources = hb-directwrite.cc +HB_DIRECTWRITE_headers = hb-directwrite.h +HB_UNISCRIBE_sources = hb-uniscribe.cc +HB_UNISCRIBE_headers = hb-uniscribe.h + +# Additional supplemental sources +HB_UCDN_sources = hb-ucdn.cc + +# Sources for libharfbuzz-gobject and libharfbuzz-icu +HB_ICU_sources = hb-icu.cc +HB_ICU_headers = hb-icu.h +HB_GOBJECT_sources = hb-gobject-structs.cc +HB_GOBJECT_STRUCTS_headers = hb-gobject-structs.h +HB_GOBJECT_headers = hb-gobject.h $(HB_GOBJECT_STRUCTS_headers) +HB_GOBJECT_ENUM_sources = hb-gobject-enums.cc +HB_GOBJECT_ENUM_headers = hb-gobject-enums.h +HBCFLAGS = $(am__append_4) $(am__append_6) $(am__append_11) \ + $(am__append_15) $(am__append_20) $(am__append_24) \ + $(am__append_28) $(am__append_33) $(am__append_36) # Put the library together +HBLIBS = $(am__append_7) $(am__append_12) $(am__append_16) \ + $(am__append_34) $(HBNONPCLIBS) $(am__append_37) +HBNONPCLIBS = $(am__append_5) $(am__append_21) $(am__append_25) \ + $(am__append_29) +HBDEPS = $(am__append_8) $(am__append_17) +HBSOURCES = $(HB_BASE_sources) $(am__append_1) $(am__append_3) \ + $(am__append_9) $(am__append_13) $(am__append_18) \ + $(am__append_22) $(am__append_26) $(am__append_30) \ + $(am__append_35) $(am__append_38) +HBHEADERS = $(HB_BASE_headers) $(am__append_2) $(am__append_10) \ + $(am__append_14) $(am__append_19) $(am__append_23) \ + $(am__append_27) $(am__append_31) $(am__append_39) +HBNODISTHEADERS = $(HB_NODIST_headers) @OS_WIN32_TRUE@export_symbols = -export-symbols harfbuzz.def @OS_WIN32_TRUE@harfbuzz_def_dependency = harfbuzz.def @HAVE_GCC_FALSE@@OS_WIN32_FALSE@libharfbuzz_la_LINK = $(CXXLINK) $(libharfbuzz_la_LDFLAGS) @@ -918,22 +1176,39 @@ libharfbuzz_la_CPPFLAGS = $(HBCFLAGS) libharfbuzz_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) $(export_symbols) -no-undefined libharfbuzz_la_LIBADD = $(HBLIBS) EXTRA_libharfbuzz_la_DEPENDENCIES = $(harfbuzz_def_dependency) -pkginclude_HEADERS = $(HBHEADERS) $(am__append_31) $(am__append_34) -nodist_pkginclude_HEADERS = $(HBNODISTHEADERS) $(am__append_35) +pkginclude_HEADERS = $(HBHEADERS) $(am__append_41) $(am__append_44) +nodist_pkginclude_HEADERS = $(HBNODISTHEADERS) $(am__append_45) pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = harfbuzz.pc $(am__append_32) $(am__append_36) -@HAVE_ICU_TRUE@libharfbuzz_icu_la_SOURCES = hb-icu.cc -@HAVE_ICU_TRUE@libharfbuzz_icu_la_CPPFLAGS = $(ICU_CFLAGS) -@HAVE_ICU_TRUE@libharfbuzz_icu_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) -no-undefined -@HAVE_ICU_TRUE@libharfbuzz_icu_la_LIBADD = $(ICU_LIBS) libharfbuzz.la -@HAVE_GOBJECT_TRUE@libharfbuzz_gobject_la_SOURCES = hb-gobject-structs.cc -@HAVE_GOBJECT_TRUE@nodist_libharfbuzz_gobject_la_SOURCES = hb-gobject-enums.cc +pkgconfig_DATA = harfbuzz.pc $(am__append_42) $(am__append_46) +FUZZING_CPPFLAGS = \ + -DHB_NDEBUG \ + -DHB_MAX_NESTING_LEVEL=3 \ + -DHB_SANITIZE_MAX_EDITS=3 \ + -DHB_BUFFER_MAX_EXPANSION_FACTOR=3 \ + -DHB_BUFFER_MAX_LEN_MIN=8 \ + -DHB_BUFFER_MAX_LEN_DEFAULT=128 \ + $(NULL) + +EXTRA_LTLIBRARIES = libharfbuzz-fuzzing.la +libharfbuzz_fuzzing_la_LINK = $(libharfbuzz_la_LINK) +libharfbuzz_fuzzing_la_SOURCES = $(libharfbuzz_la_SOURCES) +libharfbuzz_fuzzing_la_CPPFLAGS = $(libharfbuzz_la_CPPFLAGS) $(FUZZING_CPPFLAGS) +libharfbuzz_fuzzing_la_LDFLAGS = $(libharfbuzz_la_LDFLAGS) +libharfbuzz_fuzzing_la_LIBADD = $(libharfbuzz_la_LIBADD) +EXTRA_libharfbuzz_fuzzing_la_DEPENDENCIES = $(EXTRA_libharfbuzz_la_DEPENDENCIES) +@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@libharfbuzz_icu_la_SOURCES = $(HB_ICU_sources) +@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@libharfbuzz_icu_la_CPPFLAGS = $(ICU_CFLAGS) +@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@libharfbuzz_icu_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) -no-undefined +@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@libharfbuzz_icu_la_LIBADD = $(ICU_LIBS) libharfbuzz.la +@HAVE_GOBJECT_TRUE@libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_sources) +@HAVE_GOBJECT_TRUE@nodist_libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_ENUM_sources) @HAVE_GOBJECT_TRUE@libharfbuzz_gobject_la_CPPFLAGS = $(GOBJECT_CFLAGS) @HAVE_GOBJECT_TRUE@libharfbuzz_gobject_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) -no-undefined @HAVE_GOBJECT_TRUE@libharfbuzz_gobject_la_LIBADD = $(GOBJECT_LIBS) libharfbuzz.la GENERATORS = \ gen-arabic-table.py \ gen-indic-table.py \ + gen-use-table.py \ $(NULL) RAGEL_GENERATED = \ @@ -941,7 +1216,7 @@ RAGEL_GENERATED = \ $(srcdir)/hb-buffer-deserialize-text.hh \ $(srcdir)/hb-ot-shape-complex-indic-machine.hh \ $(srcdir)/hb-ot-shape-complex-myanmar-machine.hh \ - $(srcdir)/hb-ot-shape-complex-sea-machine.hh \ + $(srcdir)/hb-ot-shape-complex-use-machine.hh \ $(NULL) main_SOURCES = main.cc @@ -969,6 +1244,9 @@ dist_check_SCRIPTS = \ check-symbols.sh \ $(NULL) +test_ot_tag_SOURCES = hb-ot-tag.cc +test_ot_tag_CPPFLAGS = $(HBCFLAGS) -DMAIN +test_ot_tag_LDADD = libharfbuzz.la $(HBLIBS) TESTS_ENVIRONMENT = \ srcdir="$(srcdir)" \ MAKE="$(MAKE) $(AM_MAKEFLAGS)" \ @@ -976,7 +1254,7 @@ TESTS_ENVIRONMENT = \ HBHEADERS="$(HBHEADERS) $(HBNODISTHEADERS)" \ $(NULL) -@HAVE_INTROSPECTION_TRUE@INTROSPECTION_GIRS = HarfBuzz-$(HB_VERSION_MAJOR).0.gir # What does the 0 mean anyway?! +@HAVE_INTROSPECTION_TRUE@INTROSPECTION_GIRS = HarfBuzz-0.0.gir # What does the 0 mean anyway?! @HAVE_INTROSPECTION_TRUE@INTROSPECTION_SCANNER_ARGS = -I$(srcdir) -n hb --identifier-prefix=hb_ --warn-all @HAVE_INTROSPECTION_TRUE@INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir) @HAVE_INTROSPECTION_TRUE@INTROSPECTION_SCANNER_ENV = CC="$(CC)" @@ -990,6 +1268,7 @@ TESTS_ENVIRONMENT = \ @HAVE_INTROSPECTION_TRUE@ -DHB_OT_H_IN \ @HAVE_INTROSPECTION_TRUE@ -DHB_GOBJECT_H \ @HAVE_INTROSPECTION_TRUE@ -DHB_GOBJECT_H_IN \ +@HAVE_INTROSPECTION_TRUE@ -DHB_EXTERN= \ @HAVE_INTROSPECTION_TRUE@ $(NULL) @HAVE_INTROSPECTION_TRUE@HarfBuzz_0_0_gir_LIBS = \ @@ -1001,10 +1280,10 @@ TESTS_ENVIRONMENT = \ @HAVE_INTROSPECTION_TRUE@ $(HBHEADERS) \ @HAVE_INTROSPECTION_TRUE@ $(HBNODISTHEADERS) \ @HAVE_INTROSPECTION_TRUE@ $(HBSOURCES) \ -@HAVE_INTROSPECTION_TRUE@ hb-gobject-enums.cc \ -@HAVE_INTROSPECTION_TRUE@ hb-gobject-enums.h \ -@HAVE_INTROSPECTION_TRUE@ hb-gobject-structs.cc \ -@HAVE_INTROSPECTION_TRUE@ hb-gobject-structs.h \ +@HAVE_INTROSPECTION_TRUE@ $(HB_GOBJECT_ENUM_sources) \ +@HAVE_INTROSPECTION_TRUE@ $(HB_GOBJECT_ENUM_headers) \ +@HAVE_INTROSPECTION_TRUE@ $(HB_GOBJECT_sources) \ +@HAVE_INTROSPECTION_TRUE@ $(HB_GOBJECT_STRUCTS_headers) \ @HAVE_INTROSPECTION_TRUE@ $(NULL) @HAVE_INTROSPECTION_TRUE@girdir = $(datadir)/gir-1.0 @@ -1016,7 +1295,7 @@ all: $(BUILT_SOURCES) .SUFFIXES: .SUFFIXES: .cc .lo .log .o .obj .test .test$(EXEEXT) .trs -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/Makefile.sources $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -1037,6 +1316,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(srcdir)/Makefile.sources: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -1084,6 +1364,9 @@ clean-libLTLIBRARIES: rm -f $${locs}; \ } +libharfbuzz-fuzzing.la: $(libharfbuzz_fuzzing_la_OBJECTS) $(libharfbuzz_fuzzing_la_DEPENDENCIES) $(EXTRA_libharfbuzz_fuzzing_la_DEPENDENCIES) + $(AM_V_GEN)$(libharfbuzz_fuzzing_la_LINK) $(libharfbuzz_fuzzing_la_OBJECTS) $(libharfbuzz_fuzzing_la_LIBADD) $(LIBS) + libharfbuzz-gobject.la: $(libharfbuzz_gobject_la_OBJECTS) $(libharfbuzz_gobject_la_DEPENDENCIES) $(EXTRA_libharfbuzz_gobject_la_DEPENDENCIES) $(AM_V_CXXLD)$(libharfbuzz_gobject_la_LINK) $(am_libharfbuzz_gobject_la_rpath) $(libharfbuzz_gobject_la_OBJECTS) $(libharfbuzz_gobject_la_LIBADD) $(LIBS) @@ -1158,6 +1441,15 @@ installcheck-binPROGRAMS: $(bin_PROGRAMS) done; \ done; rm -f c$${pid}_.???; exit $$bad +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ @@ -1179,6 +1471,10 @@ test-buffer-serialize$(EXEEXT): $(test_buffer_serialize_OBJECTS) $(test_buffer_s @rm -f test-buffer-serialize$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_buffer_serialize_OBJECTS) $(test_buffer_serialize_LDADD) $(LIBS) +test-ot-tag$(EXEEXT): $(test_ot_tag_OBJECTS) $(test_ot_tag_DEPENDENCIES) $(EXTRA_test_ot_tag_DEPENDENCIES) + @rm -f test-ot-tag$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_ot_tag_OBJECTS) $(test_ot_tag_LDADD) $(LIBS) + test-size-params$(EXEEXT): $(test_size_params_OBJECTS) $(test_size_params_DEPENDENCIES) $(EXTRA_test_size_params_DEPENDENCIES) @rm -f test-size-params$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_size_params_OBJECTS) $(test_size_params_LDADD) $(LIBS) @@ -1193,6 +1489,45 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-blob.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-buffer-serialize.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-buffer.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-common.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-coretext.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-directwrite.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-face.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-fallback-shape.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-font.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ft.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-glib.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-graphite2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-icu.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-font.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-layout.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-map.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-arabic.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-default.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-hangul.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-hebrew.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic-table.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-myanmar.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-thai.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-tibetan.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-use-table.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-use.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-fallback.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-normalize.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-tag.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-set.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-shape-plan.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-shape.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-shaper.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ucdn.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-unicode.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-uniscribe.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-warning.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_gobject_la-hb-gobject-enums.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_gobject_la-hb-gobject-structs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_icu_la-hb-icu.Plo@am__quote@ @@ -1201,12 +1536,14 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-buffer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-common.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-coretext.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-directwrite.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-face.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-fallback-shape.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-font.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ft.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-glib.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-graphite2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-icu.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-font.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-layout.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-map.Plo@am__quote@ @@ -1217,9 +1554,10 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-indic-table.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-indic.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-myanmar.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-sea.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-thai.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-tibetan.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-use-table.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-use.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-shape-fallback.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-shape-normalize.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-shape.Plo@am__quote@ @@ -1235,6 +1573,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main-main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_buffer_serialize-test-buffer-serialize.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_ot_tag-hb-ot-tag.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_size_params-test-size-params.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_would_substitute-test-would-substitute.Po@am__quote@ @@ -1259,6 +1598,279 @@ distclean-compile: @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< +libharfbuzz_fuzzing_la-hb-blob.lo: hb-blob.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-blob.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-blob.Tpo -c -o libharfbuzz_fuzzing_la-hb-blob.lo `test -f 'hb-blob.cc' || echo '$(srcdir)/'`hb-blob.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-blob.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-blob.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-blob.cc' object='libharfbuzz_fuzzing_la-hb-blob.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-blob.lo `test -f 'hb-blob.cc' || echo '$(srcdir)/'`hb-blob.cc + +libharfbuzz_fuzzing_la-hb-buffer-serialize.lo: hb-buffer-serialize.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-buffer-serialize.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-buffer-serialize.Tpo -c -o libharfbuzz_fuzzing_la-hb-buffer-serialize.lo `test -f 'hb-buffer-serialize.cc' || echo '$(srcdir)/'`hb-buffer-serialize.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-buffer-serialize.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-buffer-serialize.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-buffer-serialize.cc' object='libharfbuzz_fuzzing_la-hb-buffer-serialize.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-buffer-serialize.lo `test -f 'hb-buffer-serialize.cc' || echo '$(srcdir)/'`hb-buffer-serialize.cc + +libharfbuzz_fuzzing_la-hb-buffer.lo: hb-buffer.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-buffer.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-buffer.Tpo -c -o libharfbuzz_fuzzing_la-hb-buffer.lo `test -f 'hb-buffer.cc' || echo '$(srcdir)/'`hb-buffer.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-buffer.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-buffer.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-buffer.cc' object='libharfbuzz_fuzzing_la-hb-buffer.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-buffer.lo `test -f 'hb-buffer.cc' || echo '$(srcdir)/'`hb-buffer.cc + +libharfbuzz_fuzzing_la-hb-common.lo: hb-common.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-common.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-common.Tpo -c -o libharfbuzz_fuzzing_la-hb-common.lo `test -f 'hb-common.cc' || echo '$(srcdir)/'`hb-common.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-common.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-common.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-common.cc' object='libharfbuzz_fuzzing_la-hb-common.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-common.lo `test -f 'hb-common.cc' || echo '$(srcdir)/'`hb-common.cc + +libharfbuzz_fuzzing_la-hb-face.lo: hb-face.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-face.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-face.Tpo -c -o libharfbuzz_fuzzing_la-hb-face.lo `test -f 'hb-face.cc' || echo '$(srcdir)/'`hb-face.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-face.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-face.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-face.cc' object='libharfbuzz_fuzzing_la-hb-face.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-face.lo `test -f 'hb-face.cc' || echo '$(srcdir)/'`hb-face.cc + +libharfbuzz_fuzzing_la-hb-font.lo: hb-font.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-font.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-font.Tpo -c -o libharfbuzz_fuzzing_la-hb-font.lo `test -f 'hb-font.cc' || echo '$(srcdir)/'`hb-font.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-font.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-font.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-font.cc' object='libharfbuzz_fuzzing_la-hb-font.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-font.lo `test -f 'hb-font.cc' || echo '$(srcdir)/'`hb-font.cc + +libharfbuzz_fuzzing_la-hb-ot-tag.lo: hb-ot-tag.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-tag.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-tag.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-tag.lo `test -f 'hb-ot-tag.cc' || echo '$(srcdir)/'`hb-ot-tag.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-tag.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-tag.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-tag.cc' object='libharfbuzz_fuzzing_la-hb-ot-tag.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-tag.lo `test -f 'hb-ot-tag.cc' || echo '$(srcdir)/'`hb-ot-tag.cc + +libharfbuzz_fuzzing_la-hb-set.lo: hb-set.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-set.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-set.Tpo -c -o libharfbuzz_fuzzing_la-hb-set.lo `test -f 'hb-set.cc' || echo '$(srcdir)/'`hb-set.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-set.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-set.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-set.cc' object='libharfbuzz_fuzzing_la-hb-set.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-set.lo `test -f 'hb-set.cc' || echo '$(srcdir)/'`hb-set.cc + +libharfbuzz_fuzzing_la-hb-shape.lo: hb-shape.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-shape.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-shape.Tpo -c -o libharfbuzz_fuzzing_la-hb-shape.lo `test -f 'hb-shape.cc' || echo '$(srcdir)/'`hb-shape.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-shape.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-shape.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-shape.cc' object='libharfbuzz_fuzzing_la-hb-shape.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-shape.lo `test -f 'hb-shape.cc' || echo '$(srcdir)/'`hb-shape.cc + +libharfbuzz_fuzzing_la-hb-shape-plan.lo: hb-shape-plan.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-shape-plan.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-shape-plan.Tpo -c -o libharfbuzz_fuzzing_la-hb-shape-plan.lo `test -f 'hb-shape-plan.cc' || echo '$(srcdir)/'`hb-shape-plan.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-shape-plan.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-shape-plan.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-shape-plan.cc' object='libharfbuzz_fuzzing_la-hb-shape-plan.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-shape-plan.lo `test -f 'hb-shape-plan.cc' || echo '$(srcdir)/'`hb-shape-plan.cc + +libharfbuzz_fuzzing_la-hb-shaper.lo: hb-shaper.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-shaper.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-shaper.Tpo -c -o libharfbuzz_fuzzing_la-hb-shaper.lo `test -f 'hb-shaper.cc' || echo '$(srcdir)/'`hb-shaper.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-shaper.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-shaper.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-shaper.cc' object='libharfbuzz_fuzzing_la-hb-shaper.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-shaper.lo `test -f 'hb-shaper.cc' || echo '$(srcdir)/'`hb-shaper.cc + +libharfbuzz_fuzzing_la-hb-unicode.lo: hb-unicode.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-unicode.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-unicode.Tpo -c -o libharfbuzz_fuzzing_la-hb-unicode.lo `test -f 'hb-unicode.cc' || echo '$(srcdir)/'`hb-unicode.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-unicode.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-unicode.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-unicode.cc' object='libharfbuzz_fuzzing_la-hb-unicode.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-unicode.lo `test -f 'hb-unicode.cc' || echo '$(srcdir)/'`hb-unicode.cc + +libharfbuzz_fuzzing_la-hb-warning.lo: hb-warning.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-warning.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-warning.Tpo -c -o libharfbuzz_fuzzing_la-hb-warning.lo `test -f 'hb-warning.cc' || echo '$(srcdir)/'`hb-warning.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-warning.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-warning.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-warning.cc' object='libharfbuzz_fuzzing_la-hb-warning.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-warning.lo `test -f 'hb-warning.cc' || echo '$(srcdir)/'`hb-warning.cc + +libharfbuzz_fuzzing_la-hb-ot-font.lo: hb-ot-font.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-font.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-font.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-font.lo `test -f 'hb-ot-font.cc' || echo '$(srcdir)/'`hb-ot-font.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-font.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-font.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-font.cc' object='libharfbuzz_fuzzing_la-hb-ot-font.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-font.lo `test -f 'hb-ot-font.cc' || echo '$(srcdir)/'`hb-ot-font.cc + +libharfbuzz_fuzzing_la-hb-ot-layout.lo: hb-ot-layout.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-layout.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-layout.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-layout.lo `test -f 'hb-ot-layout.cc' || echo '$(srcdir)/'`hb-ot-layout.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-layout.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-layout.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-layout.cc' object='libharfbuzz_fuzzing_la-hb-ot-layout.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-layout.lo `test -f 'hb-ot-layout.cc' || echo '$(srcdir)/'`hb-ot-layout.cc + +libharfbuzz_fuzzing_la-hb-ot-map.lo: hb-ot-map.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-map.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-map.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-map.lo `test -f 'hb-ot-map.cc' || echo '$(srcdir)/'`hb-ot-map.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-map.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-map.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-map.cc' object='libharfbuzz_fuzzing_la-hb-ot-map.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-map.lo `test -f 'hb-ot-map.cc' || echo '$(srcdir)/'`hb-ot-map.cc + +libharfbuzz_fuzzing_la-hb-ot-shape.lo: hb-ot-shape.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape.lo `test -f 'hb-ot-shape.cc' || echo '$(srcdir)/'`hb-ot-shape.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape.lo `test -f 'hb-ot-shape.cc' || echo '$(srcdir)/'`hb-ot-shape.cc + +libharfbuzz_fuzzing_la-hb-ot-shape-complex-arabic.lo: hb-ot-shape-complex-arabic.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-complex-arabic.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-arabic.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-arabic.lo `test -f 'hb-ot-shape-complex-arabic.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-arabic.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-arabic.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-arabic.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-arabic.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-complex-arabic.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-arabic.lo `test -f 'hb-ot-shape-complex-arabic.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-arabic.cc + +libharfbuzz_fuzzing_la-hb-ot-shape-complex-default.lo: hb-ot-shape-complex-default.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-complex-default.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-default.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-default.lo `test -f 'hb-ot-shape-complex-default.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-default.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-default.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-default.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-default.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-complex-default.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-default.lo `test -f 'hb-ot-shape-complex-default.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-default.cc + +libharfbuzz_fuzzing_la-hb-ot-shape-complex-hangul.lo: hb-ot-shape-complex-hangul.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-complex-hangul.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-hangul.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-hangul.lo `test -f 'hb-ot-shape-complex-hangul.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-hangul.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-hangul.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-hangul.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-hangul.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-complex-hangul.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-hangul.lo `test -f 'hb-ot-shape-complex-hangul.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-hangul.cc + +libharfbuzz_fuzzing_la-hb-ot-shape-complex-hebrew.lo: hb-ot-shape-complex-hebrew.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-complex-hebrew.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-hebrew.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-hebrew.lo `test -f 'hb-ot-shape-complex-hebrew.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-hebrew.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-hebrew.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-hebrew.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-hebrew.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-complex-hebrew.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-hebrew.lo `test -f 'hb-ot-shape-complex-hebrew.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-hebrew.cc + +libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic.lo: hb-ot-shape-complex-indic.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic.lo `test -f 'hb-ot-shape-complex-indic.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-indic.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-indic.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic.lo `test -f 'hb-ot-shape-complex-indic.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-indic.cc + +libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic-table.lo: hb-ot-shape-complex-indic-table.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic-table.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic-table.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic-table.lo `test -f 'hb-ot-shape-complex-indic-table.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-indic-table.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic-table.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic-table.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-indic-table.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic-table.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic-table.lo `test -f 'hb-ot-shape-complex-indic-table.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-indic-table.cc + +libharfbuzz_fuzzing_la-hb-ot-shape-complex-myanmar.lo: hb-ot-shape-complex-myanmar.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-complex-myanmar.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-myanmar.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-myanmar.lo `test -f 'hb-ot-shape-complex-myanmar.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-myanmar.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-myanmar.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-myanmar.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-myanmar.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-complex-myanmar.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-myanmar.lo `test -f 'hb-ot-shape-complex-myanmar.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-myanmar.cc + +libharfbuzz_fuzzing_la-hb-ot-shape-complex-thai.lo: hb-ot-shape-complex-thai.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-complex-thai.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-thai.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-thai.lo `test -f 'hb-ot-shape-complex-thai.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-thai.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-thai.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-thai.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-thai.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-complex-thai.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-thai.lo `test -f 'hb-ot-shape-complex-thai.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-thai.cc + +libharfbuzz_fuzzing_la-hb-ot-shape-complex-tibetan.lo: hb-ot-shape-complex-tibetan.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-complex-tibetan.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-tibetan.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-tibetan.lo `test -f 'hb-ot-shape-complex-tibetan.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-tibetan.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-tibetan.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-tibetan.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-tibetan.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-complex-tibetan.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-tibetan.lo `test -f 'hb-ot-shape-complex-tibetan.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-tibetan.cc + +libharfbuzz_fuzzing_la-hb-ot-shape-complex-use.lo: hb-ot-shape-complex-use.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-complex-use.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-use.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-use.lo `test -f 'hb-ot-shape-complex-use.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-use.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-use.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-use.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-use.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-complex-use.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-use.lo `test -f 'hb-ot-shape-complex-use.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-use.cc + +libharfbuzz_fuzzing_la-hb-ot-shape-complex-use-table.lo: hb-ot-shape-complex-use-table.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-complex-use-table.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-use-table.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-use-table.lo `test -f 'hb-ot-shape-complex-use-table.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-use-table.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-use-table.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-use-table.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-use-table.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-complex-use-table.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-use-table.lo `test -f 'hb-ot-shape-complex-use-table.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-use-table.cc + +libharfbuzz_fuzzing_la-hb-ot-shape-normalize.lo: hb-ot-shape-normalize.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-normalize.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-normalize.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-normalize.lo `test -f 'hb-ot-shape-normalize.cc' || echo '$(srcdir)/'`hb-ot-shape-normalize.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-normalize.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-normalize.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-normalize.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-normalize.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-normalize.lo `test -f 'hb-ot-shape-normalize.cc' || echo '$(srcdir)/'`hb-ot-shape-normalize.cc + +libharfbuzz_fuzzing_la-hb-ot-shape-fallback.lo: hb-ot-shape-fallback.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-fallback.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-fallback.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-fallback.lo `test -f 'hb-ot-shape-fallback.cc' || echo '$(srcdir)/'`hb-ot-shape-fallback.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-fallback.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-fallback.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-fallback.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-fallback.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-fallback.lo `test -f 'hb-ot-shape-fallback.cc' || echo '$(srcdir)/'`hb-ot-shape-fallback.cc + +libharfbuzz_fuzzing_la-hb-fallback-shape.lo: hb-fallback-shape.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-fallback-shape.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-fallback-shape.Tpo -c -o libharfbuzz_fuzzing_la-hb-fallback-shape.lo `test -f 'hb-fallback-shape.cc' || echo '$(srcdir)/'`hb-fallback-shape.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-fallback-shape.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-fallback-shape.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-fallback-shape.cc' object='libharfbuzz_fuzzing_la-hb-fallback-shape.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-fallback-shape.lo `test -f 'hb-fallback-shape.cc' || echo '$(srcdir)/'`hb-fallback-shape.cc + +libharfbuzz_fuzzing_la-hb-glib.lo: hb-glib.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-glib.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-glib.Tpo -c -o libharfbuzz_fuzzing_la-hb-glib.lo `test -f 'hb-glib.cc' || echo '$(srcdir)/'`hb-glib.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-glib.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-glib.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-glib.cc' object='libharfbuzz_fuzzing_la-hb-glib.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-glib.lo `test -f 'hb-glib.cc' || echo '$(srcdir)/'`hb-glib.cc + +libharfbuzz_fuzzing_la-hb-ft.lo: hb-ft.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ft.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ft.Tpo -c -o libharfbuzz_fuzzing_la-hb-ft.lo `test -f 'hb-ft.cc' || echo '$(srcdir)/'`hb-ft.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ft.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ft.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ft.cc' object='libharfbuzz_fuzzing_la-hb-ft.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ft.lo `test -f 'hb-ft.cc' || echo '$(srcdir)/'`hb-ft.cc + +libharfbuzz_fuzzing_la-hb-graphite2.lo: hb-graphite2.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-graphite2.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-graphite2.Tpo -c -o libharfbuzz_fuzzing_la-hb-graphite2.lo `test -f 'hb-graphite2.cc' || echo '$(srcdir)/'`hb-graphite2.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-graphite2.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-graphite2.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-graphite2.cc' object='libharfbuzz_fuzzing_la-hb-graphite2.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-graphite2.lo `test -f 'hb-graphite2.cc' || echo '$(srcdir)/'`hb-graphite2.cc + +libharfbuzz_fuzzing_la-hb-uniscribe.lo: hb-uniscribe.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-uniscribe.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-uniscribe.Tpo -c -o libharfbuzz_fuzzing_la-hb-uniscribe.lo `test -f 'hb-uniscribe.cc' || echo '$(srcdir)/'`hb-uniscribe.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-uniscribe.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-uniscribe.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-uniscribe.cc' object='libharfbuzz_fuzzing_la-hb-uniscribe.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-uniscribe.lo `test -f 'hb-uniscribe.cc' || echo '$(srcdir)/'`hb-uniscribe.cc + +libharfbuzz_fuzzing_la-hb-directwrite.lo: hb-directwrite.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-directwrite.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-directwrite.Tpo -c -o libharfbuzz_fuzzing_la-hb-directwrite.lo `test -f 'hb-directwrite.cc' || echo '$(srcdir)/'`hb-directwrite.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-directwrite.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-directwrite.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-directwrite.cc' object='libharfbuzz_fuzzing_la-hb-directwrite.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-directwrite.lo `test -f 'hb-directwrite.cc' || echo '$(srcdir)/'`hb-directwrite.cc + +libharfbuzz_fuzzing_la-hb-coretext.lo: hb-coretext.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-coretext.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-coretext.Tpo -c -o libharfbuzz_fuzzing_la-hb-coretext.lo `test -f 'hb-coretext.cc' || echo '$(srcdir)/'`hb-coretext.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-coretext.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-coretext.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-coretext.cc' object='libharfbuzz_fuzzing_la-hb-coretext.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-coretext.lo `test -f 'hb-coretext.cc' || echo '$(srcdir)/'`hb-coretext.cc + +libharfbuzz_fuzzing_la-hb-ucdn.lo: hb-ucdn.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ucdn.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ucdn.Tpo -c -o libharfbuzz_fuzzing_la-hb-ucdn.lo `test -f 'hb-ucdn.cc' || echo '$(srcdir)/'`hb-ucdn.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ucdn.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ucdn.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ucdn.cc' object='libharfbuzz_fuzzing_la-hb-ucdn.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ucdn.lo `test -f 'hb-ucdn.cc' || echo '$(srcdir)/'`hb-ucdn.cc + +libharfbuzz_fuzzing_la-hb-icu.lo: hb-icu.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-icu.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-icu.Tpo -c -o libharfbuzz_fuzzing_la-hb-icu.lo `test -f 'hb-icu.cc' || echo '$(srcdir)/'`hb-icu.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-icu.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-icu.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-icu.cc' object='libharfbuzz_fuzzing_la-hb-icu.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-icu.lo `test -f 'hb-icu.cc' || echo '$(srcdir)/'`hb-icu.cc + libharfbuzz_gobject_la-hb-gobject-structs.lo: hb-gobject-structs.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_gobject_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_gobject_la-hb-gobject-structs.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_gobject_la-hb-gobject-structs.Tpo -c -o libharfbuzz_gobject_la-hb-gobject-structs.lo `test -f 'hb-gobject-structs.cc' || echo '$(srcdir)/'`hb-gobject-structs.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_gobject_la-hb-gobject-structs.Tpo $(DEPDIR)/libharfbuzz_gobject_la-hb-gobject-structs.Plo @@ -1448,13 +2060,6 @@ libharfbuzz_la-hb-ot-shape-complex-myanmar.lo: hb-ot-shape-complex-myanmar.cc @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_la-hb-ot-shape-complex-myanmar.lo `test -f 'hb-ot-shape-complex-myanmar.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-myanmar.cc -libharfbuzz_la-hb-ot-shape-complex-sea.lo: hb-ot-shape-complex-sea.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_la-hb-ot-shape-complex-sea.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-sea.Tpo -c -o libharfbuzz_la-hb-ot-shape-complex-sea.lo `test -f 'hb-ot-shape-complex-sea.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-sea.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-sea.Tpo $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-sea.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-sea.cc' object='libharfbuzz_la-hb-ot-shape-complex-sea.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_la-hb-ot-shape-complex-sea.lo `test -f 'hb-ot-shape-complex-sea.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-sea.cc - libharfbuzz_la-hb-ot-shape-complex-thai.lo: hb-ot-shape-complex-thai.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_la-hb-ot-shape-complex-thai.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-thai.Tpo -c -o libharfbuzz_la-hb-ot-shape-complex-thai.lo `test -f 'hb-ot-shape-complex-thai.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-thai.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-thai.Tpo $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-thai.Plo @@ -1469,6 +2074,20 @@ libharfbuzz_la-hb-ot-shape-complex-tibetan.lo: hb-ot-shape-complex-tibetan.cc @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_la-hb-ot-shape-complex-tibetan.lo `test -f 'hb-ot-shape-complex-tibetan.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-tibetan.cc +libharfbuzz_la-hb-ot-shape-complex-use.lo: hb-ot-shape-complex-use.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_la-hb-ot-shape-complex-use.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-use.Tpo -c -o libharfbuzz_la-hb-ot-shape-complex-use.lo `test -f 'hb-ot-shape-complex-use.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-use.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-use.Tpo $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-use.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-use.cc' object='libharfbuzz_la-hb-ot-shape-complex-use.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_la-hb-ot-shape-complex-use.lo `test -f 'hb-ot-shape-complex-use.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-use.cc + +libharfbuzz_la-hb-ot-shape-complex-use-table.lo: hb-ot-shape-complex-use-table.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_la-hb-ot-shape-complex-use-table.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-use-table.Tpo -c -o libharfbuzz_la-hb-ot-shape-complex-use-table.lo `test -f 'hb-ot-shape-complex-use-table.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-use-table.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-use-table.Tpo $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-use-table.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-use-table.cc' object='libharfbuzz_la-hb-ot-shape-complex-use-table.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_la-hb-ot-shape-complex-use-table.lo `test -f 'hb-ot-shape-complex-use-table.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-use-table.cc + libharfbuzz_la-hb-ot-shape-normalize.lo: hb-ot-shape-normalize.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_la-hb-ot-shape-normalize.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_la-hb-ot-shape-normalize.Tpo -c -o libharfbuzz_la-hb-ot-shape-normalize.lo `test -f 'hb-ot-shape-normalize.cc' || echo '$(srcdir)/'`hb-ot-shape-normalize.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_la-hb-ot-shape-normalize.Tpo $(DEPDIR)/libharfbuzz_la-hb-ot-shape-normalize.Plo @@ -1518,6 +2137,13 @@ libharfbuzz_la-hb-uniscribe.lo: hb-uniscribe.cc @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_la-hb-uniscribe.lo `test -f 'hb-uniscribe.cc' || echo '$(srcdir)/'`hb-uniscribe.cc +libharfbuzz_la-hb-directwrite.lo: hb-directwrite.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_la-hb-directwrite.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_la-hb-directwrite.Tpo -c -o libharfbuzz_la-hb-directwrite.lo `test -f 'hb-directwrite.cc' || echo '$(srcdir)/'`hb-directwrite.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_la-hb-directwrite.Tpo $(DEPDIR)/libharfbuzz_la-hb-directwrite.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-directwrite.cc' object='libharfbuzz_la-hb-directwrite.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_la-hb-directwrite.lo `test -f 'hb-directwrite.cc' || echo '$(srcdir)/'`hb-directwrite.cc + libharfbuzz_la-hb-coretext.lo: hb-coretext.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_la-hb-coretext.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_la-hb-coretext.Tpo -c -o libharfbuzz_la-hb-coretext.lo `test -f 'hb-coretext.cc' || echo '$(srcdir)/'`hb-coretext.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_la-hb-coretext.Tpo $(DEPDIR)/libharfbuzz_la-hb-coretext.Plo @@ -1532,6 +2158,13 @@ libharfbuzz_la-hb-ucdn.lo: hb-ucdn.cc @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_la-hb-ucdn.lo `test -f 'hb-ucdn.cc' || echo '$(srcdir)/'`hb-ucdn.cc +libharfbuzz_la-hb-icu.lo: hb-icu.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_la-hb-icu.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_la-hb-icu.Tpo -c -o libharfbuzz_la-hb-icu.lo `test -f 'hb-icu.cc' || echo '$(srcdir)/'`hb-icu.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_la-hb-icu.Tpo $(DEPDIR)/libharfbuzz_la-hb-icu.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-icu.cc' object='libharfbuzz_la-hb-icu.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_la-hb-icu.lo `test -f 'hb-icu.cc' || echo '$(srcdir)/'`hb-icu.cc + main-main.o: main.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(main_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT main-main.o -MD -MP -MF $(DEPDIR)/main-main.Tpo -c -o main-main.o `test -f 'main.cc' || echo '$(srcdir)/'`main.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/main-main.Tpo $(DEPDIR)/main-main.Po @@ -1574,6 +2207,20 @@ test_buffer_serialize-test-buffer-serialize.obj: test-buffer-serialize.cc @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_buffer_serialize_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o test_buffer_serialize-test-buffer-serialize.obj `if test -f 'test-buffer-serialize.cc'; then $(CYGPATH_W) 'test-buffer-serialize.cc'; else $(CYGPATH_W) '$(srcdir)/test-buffer-serialize.cc'; fi` +test_ot_tag-hb-ot-tag.o: hb-ot-tag.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_ot_tag_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT test_ot_tag-hb-ot-tag.o -MD -MP -MF $(DEPDIR)/test_ot_tag-hb-ot-tag.Tpo -c -o test_ot_tag-hb-ot-tag.o `test -f 'hb-ot-tag.cc' || echo '$(srcdir)/'`hb-ot-tag.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_ot_tag-hb-ot-tag.Tpo $(DEPDIR)/test_ot_tag-hb-ot-tag.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-tag.cc' object='test_ot_tag-hb-ot-tag.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_ot_tag_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o test_ot_tag-hb-ot-tag.o `test -f 'hb-ot-tag.cc' || echo '$(srcdir)/'`hb-ot-tag.cc + +test_ot_tag-hb-ot-tag.obj: hb-ot-tag.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_ot_tag_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT test_ot_tag-hb-ot-tag.obj -MD -MP -MF $(DEPDIR)/test_ot_tag-hb-ot-tag.Tpo -c -o test_ot_tag-hb-ot-tag.obj `if test -f 'hb-ot-tag.cc'; then $(CYGPATH_W) 'hb-ot-tag.cc'; else $(CYGPATH_W) '$(srcdir)/hb-ot-tag.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_ot_tag-hb-ot-tag.Tpo $(DEPDIR)/test_ot_tag-hb-ot-tag.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-tag.cc' object='test_ot_tag-hb-ot-tag.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_ot_tag_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o test_ot_tag-hb-ot-tag.obj `if test -f 'hb-ot-tag.cc'; then $(CYGPATH_W) 'hb-ot-tag.cc'; else $(CYGPATH_W) '$(srcdir)/hb-ot-tag.cc'; fi` + test_size_params-test-size-params.o: test-size-params.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_size_params_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT test_size_params-test-size-params.o -MD -MP -MF $(DEPDIR)/test_size_params-test-size-params.Tpo -c -o test_size_params-test-size-params.o `test -f 'test-size-params.cc' || echo '$(srcdir)/'`test-size-params.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_size_params-test-size-params.Tpo $(DEPDIR)/test_size_params-test-size-params.Po @@ -1942,7 +2589,7 @@ check-TESTS: log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; -recheck: all $(dist_check_SCRIPTS) +recheck: all $(check_PROGRAMS) $(dist_check_SCRIPTS) @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ @@ -2002,6 +2649,13 @@ check-symbols.sh.log: check-symbols.sh --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +test-ot-tag.log: test-ot-tag$(EXEEXT) + @p='test-ot-tag$(EXEEXT)'; \ + b='test-ot-tag'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ @@ -2073,7 +2727,8 @@ distdir: $(DISTFILES) fi; \ done check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) $(dist_check_SCRIPTS) + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) \ + $(dist_check_SCRIPTS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-recursive @@ -2125,8 +2780,9 @@ maintainer-clean-generic: -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-recursive -clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ - clean-libtool clean-noinstPROGRAMS mostlyclean-am +clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \ + clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS \ + mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) @@ -2203,14 +2859,15 @@ uninstall-am: uninstall-binPROGRAMS uninstall-girDATA \ install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ - check-TESTS check-am clean clean-binPROGRAMS clean-generic \ - clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS \ - cscopelist-am ctags ctags-am distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-binPROGRAMS install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-girDATA \ - install-html install-html-am install-info install-info-am \ + check-TESTS check-am clean clean-binPROGRAMS \ + clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-girDATA install-html \ + install-html-am install-info install-info-am \ install-libLTLIBRARIES install-man \ install-nodist_pkgincludeHEADERS install-pdf install-pdf-am \ install-pkgconfigDATA install-pkgincludeHEADERS install-ps \ @@ -2229,7 +2886,8 @@ uninstall-am: uninstall-binPROGRAMS uninstall-girDATA \ #AM_CXXFLAGS = # Convenience targets: -lib: libharfbuzz.la +lib: $(BUILT_SOURCES) libharfbuzz.la +fuzzing: $(BUILT_SOURCES) libharfbuzz-fuzzing.la @HAVE_GOBJECT_TRUE@hb-gobject-enums.%: hb-gobject-enums.%.tmpl $(HBHEADERS) @HAVE_GOBJECT_TRUE@ $(AM_V_GEN) $(GLIB_MKENUMS) \ @HAVE_GOBJECT_TRUE@ --identifier-prefix hb_ --symbol-prefix hb_gobject \ @@ -2243,6 +2901,8 @@ lib: libharfbuzz.la -e 's@%exec_prefix%@$(exec_prefix)@g' \ -e 's@%libdir%@$(libdir)@g' \ -e 's@%includedir%@$(includedir)@g' \ + -e 's@%libs_private%@$(HBNONPCLIBS)@g' \ + -e 's@%requires_private%@$(HBDEPS)@g' \ -e 's@%VERSION%@$(VERSION)@g' \ "$<" > "$@" \ || ($(RM) "$@"; false) @@ -2252,24 +2912,28 @@ harfbuzz.def: $(HBHEADERS) $(HBNODISTHEADERS) $(EGREP) '^hb_.* \(' | \ sed -e 's/ (.*//' | \ LANG=C sort; \ - echo LIBRARY libharfbuzz-$(HB_VERSION_MAJOR).dll; \ + echo LIBRARY libharfbuzz-0.dll; \ ) >"$@" @ ! grep -q hb_ERROR "$@" \ || ($(RM) "$@"; false) -unicode-tables: arabic-table indic-table - -indic-table: gen-indic-table.py IndicSyllabicCategory.txt IndicMatraCategory.txt Blocks.txt - $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-indic-table.cc \ - || ($(RM) hb-ot-shape-complex-indic-table.cc; false) +unicode-tables: arabic-table indic-table use-table arabic-table: gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-arabic-table.hh \ || ($(RM) hb-ot-shape-complex-arabic-table.hh; false) +indic-table: gen-indic-table.py IndicSyllabicCategory-7.0.0.txt IndicMatraCategory-7.0.0.txt Blocks.txt + $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-indic-table.cc \ + || ($(RM) hb-ot-shape-complex-indic-table.cc; false) + +use-table: gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt + $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-use-table.cc \ + || ($(RM) hb-ot-shape-complex-use-table.cc; false) + built-sources: $(BUILT_SOURCES) -.PHONY: unicode-tables arabic-table indic-table built-sources +.PHONY: unicode-tables arabic-table indic-table use-table built-sources $(srcdir)/%.hh: $(srcdir)/%.rl $(AM_V_GEN)(cd $(srcdir) && $(RAGEL) -e -F1 -o "$*.hh" "$*.rl") \ || ($(RM) "$@"; false) diff --git a/src/Makefile.sources b/src/Makefile.sources new file mode 100644 index 0000000..ac80683 --- /dev/null +++ b/src/Makefile.sources @@ -0,0 +1,151 @@ +NULL = + +# Base and default-included sources and headers + +HB_BASE_sources = \ + hb-atomic-private.hh \ + hb-blob.cc \ + hb-buffer-deserialize-json.hh \ + hb-buffer-deserialize-text.hh \ + hb-buffer-private.hh \ + hb-buffer-serialize.cc \ + hb-buffer.cc \ + hb-cache-private.hh \ + hb-common.cc \ + hb-face-private.hh \ + hb-face.cc \ + hb-font-private.hh \ + hb-font.cc \ + hb-mutex-private.hh \ + hb-object-private.hh \ + hb-open-file-private.hh \ + hb-open-type-private.hh \ + hb-ot-cmap-table.hh \ + hb-ot-glyf-table.hh \ + hb-ot-head-table.hh \ + hb-ot-hhea-table.hh \ + hb-ot-hmtx-table.hh \ + hb-ot-maxp-table.hh \ + hb-ot-name-table.hh \ + hb-ot-os2-table.hh \ + hb-ot-post-table.hh \ + hb-ot-tag.cc \ + hb-private.hh \ + hb-set-private.hh \ + hb-set.cc \ + hb-shape.cc \ + hb-shape-plan-private.hh \ + hb-shape-plan.cc \ + hb-shaper-list.hh \ + hb-shaper-impl-private.hh \ + hb-shaper-private.hh \ + hb-shaper.cc \ + hb-unicode-private.hh \ + hb-unicode.cc \ + hb-utf-private.hh \ + hb-warning.cc \ + $(NULL) + +HB_BASE_headers = \ + hb.h \ + hb-blob.h \ + hb-buffer.h \ + hb-common.h \ + hb-deprecated.h \ + hb-face.h \ + hb-font.h \ + hb-set.h \ + hb-shape.h \ + hb-shape-plan.h \ + hb-unicode.h \ + $(NULL) + +HB_NODIST_headers = \ + hb-version.h \ + $(NULL) + +HB_FALLBACK_sources = hb-fallback-shape.cc + +HB_OT_sources = \ + hb-ot-font.cc \ + hb-ot-layout.cc \ + hb-ot-layout-common-private.hh \ + hb-ot-layout-gdef-table.hh \ + hb-ot-layout-gpos-table.hh \ + hb-ot-layout-gsubgpos-private.hh \ + hb-ot-layout-gsub-table.hh \ + hb-ot-layout-jstf-table.hh \ + hb-ot-layout-private.hh \ + hb-ot-map.cc \ + hb-ot-map-private.hh \ + hb-ot-shape.cc \ + hb-ot-shape-complex-arabic.cc \ + hb-ot-shape-complex-arabic-fallback.hh \ + hb-ot-shape-complex-arabic-private.hh \ + hb-ot-shape-complex-arabic-table.hh \ + hb-ot-shape-complex-arabic-win1256.hh \ + hb-ot-shape-complex-default.cc \ + hb-ot-shape-complex-hangul.cc \ + hb-ot-shape-complex-hebrew.cc \ + hb-ot-shape-complex-indic.cc \ + hb-ot-shape-complex-indic-machine.hh \ + hb-ot-shape-complex-indic-private.hh \ + hb-ot-shape-complex-indic-table.cc \ + hb-ot-shape-complex-myanmar.cc \ + hb-ot-shape-complex-myanmar-machine.hh \ + hb-ot-shape-complex-thai.cc \ + hb-ot-shape-complex-tibetan.cc \ + hb-ot-shape-complex-use.cc \ + hb-ot-shape-complex-use-machine.hh \ + hb-ot-shape-complex-use-private.hh \ + hb-ot-shape-complex-use-table.cc \ + hb-ot-shape-complex-private.hh \ + hb-ot-shape-normalize-private.hh \ + hb-ot-shape-normalize.cc \ + hb-ot-shape-fallback-private.hh \ + hb-ot-shape-fallback.cc \ + hb-ot-shape-private.hh \ + $(NULL) + +HB_OT_headers = \ + hb-ot.h \ + hb-ot-font.h \ + hb-ot-layout.h \ + hb-ot-shape.h \ + hb-ot-tag.h \ + $(NULL) + +# Optional Sources and Headers with external deps + +HB_FT_sources = hb-ft.cc +HB_FT_headers = hb-ft.h + +HB_GLIB_sources = hb-glib.cc +HB_GLIB_headers = hb-glib.h + +HB_GRAPHITE2_sources = hb-graphite2.cc +HB_GRAPHITE2_headers = hb-graphite2.h + +# System-dependent sources and headers + +HB_CORETEXT_sources = hb-coretext.cc +HB_CORETEXT_headers = hb-coretext.h + +HB_DIRECTWRITE_sources = hb-directwrite.cc +HB_DIRECTWRITE_headers = hb-directwrite.h + +HB_UNISCRIBE_sources = hb-uniscribe.cc +HB_UNISCRIBE_headers = hb-uniscribe.h + +# Additional supplemental sources +HB_UCDN_sources = hb-ucdn.cc + +# Sources for libharfbuzz-gobject and libharfbuzz-icu +HB_ICU_sources = hb-icu.cc +HB_ICU_headers = hb-icu.h + +HB_GOBJECT_sources = hb-gobject-structs.cc +HB_GOBJECT_STRUCTS_headers = hb-gobject-structs.h +HB_GOBJECT_headers = hb-gobject.h $(HB_GOBJECT_STRUCTS_headers) +HB_GOBJECT_ENUM_sources = hb-gobject-enums.cc +HB_GOBJECT_ENUM_headers = hb-gobject-enums.h diff --git a/src/check-header-guards.sh b/src/check-header-guards.sh index 9a3302c..09c5ea8 100755 --- a/src/check-header-guards.sh +++ b/src/check-header-guards.sh @@ -9,13 +9,12 @@ stat=0 test "x$HBHEADERS" = x && HBHEADERS=`cd "$srcdir"; find . -maxdepth 1 -name 'hb*.h'` test "x$HBSOURCES" = x && HBSOURCES=`cd "$srcdir"; find . -maxdepth 1 -name 'hb-*.cc' -or -name 'hb-*.hh'` - for x in $HBHEADERS $HBSOURCES; do test -f "$srcdir/$x" && x="$srcdir/$x" - echo "$x" | grep '[^h]$' -q && continue; + echo "$x" | grep -q '[^h]$' && continue; xx=`echo "$x" | sed 's@.*/@@'` tag=`echo "$xx" | tr 'a-z.-' 'A-Z_'` - lines=`grep "\<$tag\>" "$x" | wc -l | sed 's/[ ]*//g'` + lines=`grep -w "$tag" "$x" | wc -l | sed 's/[ ]*//g'` if test "x$lines" != x3; then echo "Ouch, header file $x does not have correct preprocessor guards" stat=1 diff --git a/src/check-libstdc++.sh b/src/check-libstdc++.sh index 27deb42..b541828 100755 --- a/src/check-libstdc++.sh +++ b/src/check-libstdc++.sh @@ -19,9 +19,9 @@ for suffix in so dylib; do so=.libs/libharfbuzz.$suffix if ! test -f "$so"; then continue; fi - echo "Checking that we are not linking to libstdc++" - if ldd $so | grep 'libstdc[+][+]'; then - echo "Ouch, linked to libstdc++" + echo "Checking that we are not linking to libstdc++ or libc++" + if ldd $so | grep 'libstdc[+][+]\|libc[+][+]'; then + echo "Ouch, linked to libstdc++ or libc++" stat=1 fi tested=true diff --git a/src/gen-indic-table.py b/src/gen-indic-table.py index f5716bd..c055163 100755 --- a/src/gen-indic-table.py +++ b/src/gen-indic-table.py @@ -91,6 +91,7 @@ short = [{ "Visarga": 'Vs', "Vowel": 'Vo', "Vowel_Dependent": 'M', + "Consonant_Prefixed": 'CPrf', "Other": 'x', },{ "Not_Applicable": 'x', diff --git a/src/gen-use-table.py b/src/gen-use-table.py new file mode 100755 index 0000000..be04e4b --- /dev/null +++ b/src/gen-use-table.py @@ -0,0 +1,476 @@ +#!/usr/bin/python + +import sys + +if len (sys.argv) != 5: + print >>sys.stderr, "usage: ./gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt" + sys.exit (1) + +BLACKLISTED_BLOCKS = ["Thai", "Lao", "Tibetan"] + +files = [file (x) for x in sys.argv[1:]] + +headers = [[f.readline () for i in range (2)] for j,f in enumerate(files) if j != 2] +headers.append (["UnicodeData.txt does not have a header."]) + +data = [{} for f in files] +values = [{} for f in files] +for i, f in enumerate (files): + for line in f: + + j = line.find ('#') + if j >= 0: + line = line[:j] + + fields = [x.strip () for x in line.split (';')] + if len (fields) == 1: + continue + + uu = fields[0].split ('..') + start = int (uu[0], 16) + if len (uu) == 1: + end = start + else: + end = int (uu[1], 16) + + t = fields[1 if i != 2 else 2] + + for u in range (start, end + 1): + data[i][u] = t + values[i][t] = values[i].get (t, 0) + end - start + 1 + +defaults = ('Other', 'Not_Applicable', 'Cn', 'No_Block') + +# TODO Characters that are not in Unicode Indic files, but used in USE +data[0][0x034F] = defaults[0] +data[0][0x2060] = defaults[0] +for u in range (0xFE00, 0xFE0F + 1): + data[0][u] = defaults[0] + +# Merge data into one dict: +for i,v in enumerate (defaults): + values[i][v] = values[i].get (v, 0) + 1 +combined = {} +for i,d in enumerate (data): + for u,v in d.items (): + if i >= 2 and not u in combined: + continue + if not u in combined: + combined[u] = list (defaults) + combined[u][i] = v +combined = {k:v for k,v in combined.items() if v[3] not in BLACKLISTED_BLOCKS} +data = combined +del combined +num = len (data) + + +property_names = [ + # General_Category + 'Cc', 'Cf', 'Cn', 'Co', 'Cs', 'Ll', 'Lm', 'Lo', 'Lt', 'Lu', 'Mc', + 'Me', 'Mn', 'Nd', 'Nl', 'No', 'Pc', 'Pd', 'Pe', 'Pf', 'Pi', 'Po', + 'Ps', 'Sc', 'Sk', 'Sm', 'So', 'Zl', 'Zp', 'Zs', + # Indic_Syllabic_Category + 'Other', + 'Bindu', + 'Visarga', + 'Avagraha', + 'Nukta', + 'Virama', + 'Pure_Killer', + 'Invisible_Stacker', + 'Vowel_Independent', + 'Vowel_Dependent', + 'Vowel', + 'Consonant_Placeholder', + 'Consonant', + 'Consonant_Dead', + 'Consonant_With_Stacker', + 'Consonant_Prefixed', + 'Consonant_Preceding_Repha', + 'Consonant_Succeeding_Repha', + 'Consonant_Subjoined', + 'Consonant_Medial', + 'Consonant_Final', + 'Consonant_Head_Letter', + 'Modifying_Letter', + 'Tone_Letter', + 'Tone_Mark', + 'Gemination_Mark', + 'Cantillation_Mark', + 'Register_Shifter', + 'Syllable_Modifier', + 'Consonant_Killer', + 'Non_Joiner', + 'Joiner', + 'Number_Joiner', + 'Number', + 'Brahmi_Joining_Number', + # Indic_Positional_Category + 'Not_Applicable', + 'Right', + 'Left', + 'Visual_Order_Left', + 'Left_And_Right', + 'Top', + 'Bottom', + 'Top_And_Bottom', + 'Top_And_Right', + 'Top_And_Left', + 'Top_And_Left_And_Right', + 'Bottom_And_Right', + 'Top_And_Bottom_And_Right', + 'Overstruck', +] + +class PropertyValue(object): + def __init__(self, name_): + self.name = name_ + def __str__(self): + return self.name + def __eq__(self, other): + return self.name == (other if isinstance(other, basestring) else other.name) + def __ne__(self, other): + return not (self == other) + +property_values = {} + +for name in property_names: + value = PropertyValue(name) + assert value not in property_values + assert value not in globals() + property_values[name] = value +globals().update(property_values) + + +def is_BASE(U, UISC, UGC): + return (UISC in [Number, Consonant, Consonant_Head_Letter, + #SPEC-OUTDATED Consonant_Placeholder, + Tone_Letter] or + (UGC == Lo and UISC in [Avagraha, Bindu, Consonant_Final, Consonant_Medial, + Consonant_Subjoined, Vowel, Vowel_Dependent])) +def is_BASE_VOWEL(U, UISC, UGC): + return UISC == Vowel_Independent +def is_BASE_IND(U, UISC, UGC): + #SPEC-BROKEN return (UISC in [Consonant_Dead, Modifying_Letter] or UGC == Po) + return (UISC in [Consonant_Dead, Modifying_Letter] or + (UGC == Po and not is_BASE_OTHER(U, UISC, UGC))) # for 104E +def is_BASE_NUM(U, UISC, UGC): + return UISC == Brahmi_Joining_Number +def is_BASE_OTHER(U, UISC, UGC): + if UISC == Consonant_Placeholder: return True #SPEC-OUTDATED + return U in [0x00A0, 0x00D7, 0x2015, 0x2022, 0x25CC, + 0x25FB, 0x25FC, 0x25FD, 0x25FE] +def is_CGJ(U, UISC, UGC): + return U == 0x034F +def is_CONS_FINAL(U, UISC, UGC): + return ((UISC == Consonant_Final and UGC != Lo) or + UISC == Consonant_Succeeding_Repha) +def is_CONS_FINAL_MOD(U, UISC, UGC): + #SPEC-OUTDATED return UISC in [Consonant_Final_Modifier, Syllable_Modifier] + return UISC == Syllable_Modifier +def is_CONS_MED(U, UISC, UGC): + return UISC == Consonant_Medial and UGC != Lo +def is_CONS_MOD(U, UISC, UGC): + return UISC in [Nukta, Gemination_Mark, Consonant_Killer] +def is_CONS_SUB(U, UISC, UGC): + #SPEC-OUTDATED return UISC == Consonant_Subjoined + return UISC == Consonant_Subjoined and UGC != Lo +def is_HALANT(U, UISC, UGC): + return UISC in [Virama, Invisible_Stacker] +def is_HALANT_NUM(U, UISC, UGC): + return UISC == Number_Joiner +def is_ZWNJ(U, UISC, UGC): + return UISC == Non_Joiner +def is_ZWJ(U, UISC, UGC): + return UISC == Joiner +def is_Word_Joiner(U, UISC, UGC): + return U == 0x2060 +def is_OTHER(U, UISC, UGC): + #SPEC-OUTDATED return UGC == Zs # or any other SCRIPT_COMMON characters + return (UISC == Other + and not is_SYM_MOD(U, UISC, UGC) + and not is_CGJ(U, UISC, UGC) + and not is_Word_Joiner(U, UISC, UGC) + and not is_VARIATION_SELECTOR(U, UISC, UGC) + ) +def is_Reserved(U, UISC, UGC): + return UGC == 'Cn' +def is_REPHA(U, UISC, UGC): + #return UISC == Consonant_Preceding_Repha + #SPEC-OUTDATED hack to categorize Consonant_With_Stacker and Consonant_Prefixed + return UISC in [Consonant_Preceding_Repha, Consonant_With_Stacker, Consonant_Prefixed] +def is_SYM(U, UISC, UGC): + if U == 0x25CC: return False #SPEC-OUTDATED + #SPEC-OUTDATED return UGC in [So, Sc] or UISC == Symbol_Letter + return UGC in [So, Sc] +def is_SYM_MOD(U, UISC, UGC): + return U in [0x1B6B, 0x1B6C, 0x1B6D, 0x1B6E, 0x1B6F, 0x1B70, 0x1B71, 0x1B72, 0x1B73] +def is_VARIATION_SELECTOR(U, UISC, UGC): + return 0xFE00 <= U <= 0xFE0F +def is_VOWEL(U, UISC, UGC): + return (UISC == Pure_Killer or + (UGC != Lo and UISC in [Vowel, Vowel_Dependent])) +def is_VOWEL_MOD(U, UISC, UGC): + return (UISC in [Tone_Mark, Cantillation_Mark, Register_Shifter, Visarga] or + (UGC != Lo and UISC == Bindu)) + +use_mapping = { + 'B': is_BASE, + 'IV': is_BASE_VOWEL, + 'IND': is_BASE_IND, + 'N': is_BASE_NUM, + 'GB': is_BASE_OTHER, + 'CGJ': is_CGJ, + 'F': is_CONS_FINAL, + 'FM': is_CONS_FINAL_MOD, + 'M': is_CONS_MED, + 'CM': is_CONS_MOD, + 'SUB': is_CONS_SUB, + 'H': is_HALANT, + 'HN': is_HALANT_NUM, + 'ZWNJ': is_ZWNJ, + 'ZWJ': is_ZWJ, + 'WJ': is_Word_Joiner, + 'O': is_OTHER, + 'Rsv': is_Reserved, + 'R': is_REPHA, + 'S': is_SYM, + 'SM': is_SYM_MOD, + 'VS': is_VARIATION_SELECTOR, + 'V': is_VOWEL, + 'VM': is_VOWEL_MOD, +} + +use_positions = { + 'F': { + 'Abv': [Top], + 'Blw': [Bottom], + 'Pst': [Right], + }, + 'M': { + 'Abv': [Top], + 'Blw': [Bottom], + 'Pst': [Right], + 'Pre': [Left], + }, + 'CM': { + 'Abv': [Top], + 'Blw': [Bottom], + }, + 'V': { + 'Abv': [Top, Top_And_Bottom, Top_And_Bottom_And_Right, Top_And_Right], + 'Blw': [Bottom, Overstruck, Bottom_And_Right], + 'Pst': [Right], + 'Pre': [Left, Top_And_Left, Top_And_Left_And_Right, Left_And_Right], + }, + 'VM': { + 'Abv': [Top], + 'Blw': [Bottom, Overstruck], + 'Pst': [Right], + 'Pre': [Left], + }, + 'SM': { + 'Abv': [Top], + 'Blw': [Bottom], + }, + 'H': None, + 'B': None, + 'FM': None, + 'SUB': None, +} + +def map_to_use(data): + out = {} + items = use_mapping.items() + for U,(UISC,UIPC,UGC,UBlock) in data.items(): + + # Resolve Indic_Syllabic_Category + + # TODO: These don't have UISC assigned in Unicode 8.0, but + # have UIPC + if U == 0x17DD: UISC = Vowel_Dependent + if 0x1CE2 <= U <= 0x1CE8: UISC = Cantillation_Mark + + # TODO: U+1CED should only be allowed after some of + # the nasalization marks, maybe only for U+1CE9..U+1CF1. + if U == 0x1CED: UISC = Tone_Mark + + evals = [(k, v(U,UISC,UGC)) for k,v in items] + values = [k for k,v in evals if v] + assert len(values) == 1, "%s %s %s %s" % (hex(U), UISC, UGC, values) + USE = values[0] + + # Resolve Indic_Positional_Category + + # TODO: Not in Unicode 8.0 yet, but in spec. + if U == 0x1B6C: UIPC = Bottom + + # TODO: These should die, but have UIPC in Unicode 8.0 + if U in [0x953, 0x954]: UIPC = Not_Applicable + + # TODO: In USE's override list but not in Unicode 8.0 + if U == 0x103C: UIPC = Left + + # TODO: These are not in USE's override list that we have, nor are they in Unicode 8.0 + if 0xA926 <= U <= 0xA92A: UIPC = Top + if U == 0x111CA: UIPC = Bottom + if U == 0x11300: UIPC = Top + if U == 0x1133C: UIPC = Bottom + if U == 0x1171E: UIPC = Left # Correct?! + if 0x1CF2 <= U <= 0x1CF3: UIPC = Right + if 0x1CF8 <= U <= 0x1CF9: UIPC = Top + + assert (UIPC in [Not_Applicable, Visual_Order_Left] or + USE in use_positions), "%s %s %s %s %s" % (hex(U), UIPC, USE, UISC, UGC) + + pos_mapping = use_positions.get(USE, None) + if pos_mapping: + values = [k for k,v in pos_mapping.items() if v and UIPC in v] + assert len(values) == 1, "%s %s %s %s %s %s" % (hex(U), UIPC, USE, UISC, UGC, values) + USE = USE + values[0] + + out[U] = (USE, UBlock) + return out + +defaults = ('O', 'No_Block') +data = map_to_use(data) + +# Remove the outliers +singles = {} +for u in [0x034F, 0x25CC, 0x1107F]: + singles[u] = data[u] + del data[u] + +print "/* == Start of generated table == */" +print "/*" +print " * The following table is generated by running:" +print " *" +print " * ./gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt" +print " *" +print " * on files with these headers:" +print " *" +for h in headers: + for l in h: + print " * %s" % (l.strip()) +print " */" +print +print '#include "hb-ot-shape-complex-use-private.hh"' +print + +total = 0 +used = 0 +last_block = None +def print_block (block, start, end, data): + global total, used, last_block + if block and block != last_block: + print + print + print " /* %s */" % block + if start % 16: + print ' ' * (20 + (start % 16 * 6)), + num = 0 + assert start % 8 == 0 + assert (end+1) % 8 == 0 + for u in range (start, end+1): + if u % 16 == 0: + print + print " /* %04X */" % u, + if u in data: + num += 1 + d = data.get (u, defaults) + sys.stdout.write ("%6s," % d[0]) + + total += end - start + 1 + used += num + if block: + last_block = block + +uu = data.keys () +uu.sort () + +last = -100000 +num = 0 +offset = 0 +starts = [] +ends = [] +for k,v in sorted(use_mapping.items()): + if k in use_positions and use_positions[k]: continue + print "#define %s USE_%s /* %s */" % (k, k, v.__name__[3:]) +for k,v in sorted(use_positions.items()): + if not v: continue + for suf in v.keys(): + tag = k + suf + print "#define %s USE_%s" % (tag, tag) +print "" +print "static const USE_TABLE_ELEMENT_TYPE use_table[] = {" +for u in uu: + if u <= last: + continue + block = data[u][1] + + start = u//8*8 + end = start+1 + while end in uu and block == data[end][1]: + end += 1 + end = (end-1)//8*8 + 7 + + if start != last + 1: + if start - last <= 1+16*3: + print_block (None, last+1, start-1, data) + last = start-1 + else: + if last >= 0: + ends.append (last + 1) + offset += ends[-1] - starts[-1] + print + print + print "#define use_offset_0x%04xu %d" % (start, offset) + starts.append (start) + + print_block (block, start, end, data) + last = end +ends.append (last + 1) +offset += ends[-1] - starts[-1] +print +print +occupancy = used * 100. / total +page_bits = 12 +print "}; /* Table items: %d; occupancy: %d%% */" % (offset, occupancy) +print +print "USE_TABLE_ELEMENT_TYPE" +print "hb_use_get_categories (hb_codepoint_t u)" +print "{" +print " switch (u >> %d)" % page_bits +print " {" +pages = set([u>>page_bits for u in starts+ends+singles.keys()]) +for p in sorted(pages): + print " case 0x%0Xu:" % p + for (start,end) in zip (starts, ends): + if p not in [start>>page_bits, end>>page_bits]: continue + offset = "use_offset_0x%04xu" % start + print " if (hb_in_range (u, 0x%04Xu, 0x%04Xu)) return use_table[u - 0x%04Xu + %s];" % (start, end-1, start, offset) + for u,d in singles.items (): + if p != u>>page_bits: continue + print " if (unlikely (u == 0x%04Xu)) return %s;" % (u, d[0]) + print " break;" + print "" +print " default:" +print " break;" +print " }" +print " return USE_O;" +print "}" +print +for k in sorted(use_mapping.keys()): + if k in use_positions and use_positions[k]: continue + print "#undef %s" % k +for k,v in sorted(use_positions.items()): + if not v: continue + for suf in v.keys(): + tag = k + suf + print "#undef %s" % tag +print +print "/* == End of generated table == */" + +# Maintain at least 50% occupancy in the table */ +if occupancy < 50: + raise Exception ("Table too sparse, please investigate: ", occupancy) diff --git a/src/harfbuzz.pc.in b/src/harfbuzz.pc.in index 7f27bbb..b3e124a 100644 --- a/src/harfbuzz.pc.in +++ b/src/harfbuzz.pc.in @@ -8,4 +8,6 @@ Description: HarfBuzz text shaping library Version: %VERSION% Libs: -L${libdir} -lharfbuzz +Libs.private: %libs_private% +Requires.private: %requires_private% Cflags: -I${includedir}/harfbuzz diff --git a/src/hb-atomic-private.hh b/src/hb-atomic-private.hh index e6738b7..100ba53 100644 --- a/src/hb-atomic-private.hh +++ b/src/hb-atomic-private.hh @@ -39,7 +39,11 @@ /* We need external help for these */ -#if 0 +#if defined(hb_atomic_int_impl_add) \ + && defined(hb_atomic_ptr_impl_get) \ + && defined(hb_atomic_ptr_impl_cmpexch) + +/* Defined externally, i.e. in config.h; must have typedef'ed hb_atomic_int_impl_t as well. */ #elif !defined(HB_NO_MT) && (defined(_WIN32) || defined(__CYGWIN__)) @@ -58,11 +62,12 @@ static inline void _HBMemoryBarrier (void) { #endif } -typedef LONG hb_atomic_int_t; -#define hb_atomic_int_add(AI, V) InterlockedExchangeAdd (&(AI), (V)) +typedef LONG hb_atomic_int_impl_t; +#define HB_ATOMIC_INT_IMPL_INIT(V) (V) +#define hb_atomic_int_impl_add(AI, V) InterlockedExchangeAdd (&(AI), (V)) -#define hb_atomic_ptr_get(P) (_HBMemoryBarrier (), (void *) *(P)) -#define hb_atomic_ptr_cmpexch(P,O,N) (InterlockedCompareExchangePointer ((void **) (P), (void *) (N), (void *) (O)) == (void *) (O)) +#define hb_atomic_ptr_impl_get(P) (_HBMemoryBarrier (), (void *) *(P)) +#define hb_atomic_ptr_impl_cmpexch(P,O,N) (InterlockedCompareExchangePointer ((void **) (P), (void *) (N), (void *) (O)) == (void *) (O)) #elif !defined(HB_NO_MT) && defined(__APPLE__) @@ -74,28 +79,31 @@ typedef LONG hb_atomic_int_t; #include #endif -typedef int32_t hb_atomic_int_t; -#define hb_atomic_int_add(AI, V) (OSAtomicAdd32Barrier ((V), &(AI)) - (V)) -#define hb_atomic_ptr_get(P) (OSMemoryBarrier (), (void *) *(P)) +typedef int32_t hb_atomic_int_impl_t; +#define HB_ATOMIC_INT_IMPL_INIT(V) (V) +#define hb_atomic_int_impl_add(AI, V) (OSAtomicAdd32Barrier ((V), &(AI)) - (V)) + +#define hb_atomic_ptr_impl_get(P) (OSMemoryBarrier (), (void *) *(P)) #if (MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_4 || __IPHONE_VERSION_MIN_REQUIRED >= 20100) -#define hb_atomic_ptr_cmpexch(P,O,N) OSAtomicCompareAndSwapPtrBarrier ((void *) (O), (void *) (N), (void **) (P)) +#define hb_atomic_ptr_impl_cmpexch(P,O,N) OSAtomicCompareAndSwapPtrBarrier ((void *) (O), (void *) (N), (void **) (P)) #else #if __ppc64__ || __x86_64__ || __aarch64__ -#define hb_atomic_ptr_cmpexch(P,O,N) OSAtomicCompareAndSwap64Barrier ((int64_t) (O), (int64_t) (N), (int64_t*) (P)) +#define hb_atomic_ptr_impl_cmpexch(P,O,N) OSAtomicCompareAndSwap64Barrier ((int64_t) (O), (int64_t) (N), (int64_t*) (P)) #else -#define hb_atomic_ptr_cmpexch(P,O,N) OSAtomicCompareAndSwap32Barrier ((int32_t) (O), (int32_t) (N), (int32_t*) (P)) +#define hb_atomic_ptr_impl_cmpexch(P,O,N) OSAtomicCompareAndSwap32Barrier ((int32_t) (O), (int32_t) (N), (int32_t*) (P)) #endif #endif #elif !defined(HB_NO_MT) && defined(HAVE_INTEL_ATOMIC_PRIMITIVES) -typedef int hb_atomic_int_t; -#define hb_atomic_int_add(AI, V) __sync_fetch_and_add (&(AI), (V)) +typedef int hb_atomic_int_impl_t; +#define HB_ATOMIC_INT_IMPL_INIT(V) (V) +#define hb_atomic_int_impl_add(AI, V) __sync_fetch_and_add (&(AI), (V)) -#define hb_atomic_ptr_get(P) (void *) (__sync_synchronize (), *(P)) -#define hb_atomic_ptr_cmpexch(P,O,N) __sync_bool_compare_and_swap ((P), (O), (N)) +#define hb_atomic_ptr_impl_get(P) (void *) (__sync_synchronize (), *(P)) +#define hb_atomic_ptr_impl_cmpexch(P,O,N) __sync_bool_compare_and_swap ((P), (O), (N)) #elif !defined(HB_NO_MT) && defined(HAVE_SOLARIS_ATOMIC_OPS) @@ -103,33 +111,79 @@ typedef int hb_atomic_int_t; #include #include -typedef unsigned int hb_atomic_int_t; -#define hb_atomic_int_add(AI, V) ( ({__machine_rw_barrier ();}), atomic_add_int_nv (&(AI), (V)) - (V)) +typedef unsigned int hb_atomic_int_impl_t; +#define HB_ATOMIC_INT_IMPL_INIT(V) (V) +#define hb_atomic_int_impl_add(AI, V) ( ({__machine_rw_barrier ();}), atomic_add_int_nv (&(AI), (V)) - (V)) + +#define hb_atomic_ptr_impl_get(P) ( ({__machine_rw_barrier ();}), (void *) *(P)) +#define hb_atomic_ptr_impl_cmpexch(P,O,N) ( ({__machine_rw_barrier ();}), atomic_cas_ptr ((void **) (P), (void *) (O), (void *) (N)) == (void *) (O) ? true : false) + + +#elif !defined(HB_NO_MT) && defined(_AIX) && defined(__IBMCPP__) + +#include + + +static inline int hb_fetch_and_add(volatile int* AI, unsigned int V) { + __lwsync(); + int result = __fetch_and_add(AI, V); + __isync(); + return result; +} +static inline int hb_compare_and_swaplp(volatile long* P, long O, long N) { + __sync(); + int result = __compare_and_swaplp (P, &O, N); + __sync(); + return result; +} -#define hb_atomic_ptr_get(P) ( ({__machine_rw_barrier ();}), (void *) *(P)) -#define hb_atomic_ptr_cmpexch(P,O,N) ( ({__machine_rw_barrier ();}), atomic_cas_ptr ((void **) (P), (void *) (O), (void *) (N)) == (void *) (O) ? true : false) +typedef int hb_atomic_int_impl_t; +#define HB_ATOMIC_INT_IMPL_INIT(V) (V) +#define hb_atomic_int_impl_add(AI, V) hb_fetch_and_add (&(AI), (V)) +#define hb_atomic_ptr_impl_get(P) (__sync(), (void *) *(P)) +#define hb_atomic_ptr_impl_cmpexch(P,O,N) hb_compare_and_swaplp ((long*)(P), (long)(O), (long)(N)) #elif !defined(HB_NO_MT) #define HB_ATOMIC_INT_NIL 1 /* Warn that fallback implementation is in use. */ -typedef volatile int hb_atomic_int_t; -#define hb_atomic_int_add(AI, V) (((AI) += (V)) - (V)) -#define hb_atomic_ptr_get(P) ((void *) *(P)) -#define hb_atomic_ptr_cmpexch(P,O,N) (* (void * volatile *) (P) == (void *) (O) ? (* (void * volatile *) (P) = (void *) (N), true) : false) +typedef volatile int hb_atomic_int_impl_t; +#define HB_ATOMIC_INT_IMPL_INIT(V) (V) +#define hb_atomic_int_impl_add(AI, V) (((AI) += (V)) - (V)) + +#define hb_atomic_ptr_impl_get(P) ((void *) *(P)) +#define hb_atomic_ptr_impl_cmpexch(P,O,N) (* (void * volatile *) (P) == (void *) (O) ? (* (void * volatile *) (P) = (void *) (N), true) : false) #else /* HB_NO_MT */ -typedef int hb_atomic_int_t; -#define hb_atomic_int_add(AI, V) (((AI) += (V)) - (V)) +typedef int hb_atomic_int_impl_t; +#define HB_ATOMIC_INT_IMPL_INIT(V) (V) +#define hb_atomic_int_impl_add(AI, V) (((AI) += (V)) - (V)) + +#define hb_atomic_ptr_impl_get(P) ((void *) *(P)) +#define hb_atomic_ptr_impl_cmpexch(P,O,N) (* (void **) (P) == (void *) (O) ? (* (void **) (P) = (void *) (N), true) : false) -#define hb_atomic_ptr_get(P) ((void *) *(P)) -#define hb_atomic_ptr_cmpexch(P,O,N) (* (void **) (P) == (void *) (O) ? (* (void **) (P) = (void *) (N), true) : false) #endif -/* TODO Add tracing. */ + +#define HB_ATOMIC_INT_INIT(V) {HB_ATOMIC_INT_IMPL_INIT(V)} + +struct hb_atomic_int_t +{ + hb_atomic_int_impl_t v; + + inline void set_unsafe (int v_) { v = v_; } + inline int get_unsafe (void) const { return v; } + inline int inc (void) { return hb_atomic_int_impl_add (const_cast (v), 1); } + inline int dec (void) { return hb_atomic_int_impl_add (const_cast (v), -1); } +}; + + +#define hb_atomic_ptr_get(P) hb_atomic_ptr_impl_get(P) +#define hb_atomic_ptr_cmpexch(P,O,N) hb_atomic_ptr_impl_cmpexch((P),(O),(N)) + #endif /* HB_ATOMIC_PRIVATE_HH */ diff --git a/src/hb-blob.cc b/src/hb-blob.cc index 8759a25..fb48f03 100644 --- a/src/hb-blob.cc +++ b/src/hb-blob.cc @@ -91,7 +91,7 @@ _hb_blob_destroy_user_data (hb_blob_t *blob) * Return value: New blob, or the empty blob if something failed or if @length is * zero. Destroy with hb_blob_destroy(). * - * Since: 1.0 + * Since: 0.9.2 **/ hb_blob_t * hb_blob_create (const char *data, @@ -104,7 +104,6 @@ hb_blob_create (const char *data, if (!length || length >= 1u << 31 || - data + length < data /* overflows */ || !(blob = hb_object_create ())) { if (destroy) destroy (user_data); @@ -147,7 +146,7 @@ hb_blob_create (const char *data, * @length is zero or @offset is beyond the end of @parent's data. Destroy * with hb_blob_destroy(). * - * Since: 1.0 + * Since: 0.9.2 **/ hb_blob_t * hb_blob_create_sub_blob (hb_blob_t *parent, @@ -179,7 +178,7 @@ hb_blob_create_sub_blob (hb_blob_t *parent, * * Return value: (transfer full): the empty blob. * - * Since: 1.0 + * Since: 0.9.2 **/ hb_blob_t * hb_blob_get_empty (void) @@ -210,7 +209,7 @@ hb_blob_get_empty (void) * * Return value: @blob. * - * Since: 1.0 + * Since: 0.9.2 **/ hb_blob_t * hb_blob_reference (hb_blob_t *blob) @@ -228,7 +227,7 @@ hb_blob_reference (hb_blob_t *blob) * * See TODO:link object types for more information. * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_blob_destroy (hb_blob_t *blob) @@ -250,7 +249,7 @@ hb_blob_destroy (hb_blob_t *blob) * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_bool_t hb_blob_set_user_data (hb_blob_t *blob, @@ -271,7 +270,7 @@ hb_blob_set_user_data (hb_blob_t *blob, * * Return value: (transfer none): * - * Since: 1.0 + * Since: 0.9.2 **/ void * hb_blob_get_user_data (hb_blob_t *blob, @@ -287,7 +286,7 @@ hb_blob_get_user_data (hb_blob_t *blob, * * * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_blob_make_immutable (hb_blob_t *blob) @@ -306,7 +305,7 @@ hb_blob_make_immutable (hb_blob_t *blob) * * Return value: TODO * - * Since: 1.0 + * Since: 0.9.2 **/ hb_bool_t hb_blob_is_immutable (hb_blob_t *blob) @@ -323,7 +322,7 @@ hb_blob_is_immutable (hb_blob_t *blob) * * Return value: the length of blob data in bytes. * - * Since: 1.0 + * Since: 0.9.2 **/ unsigned int hb_blob_get_length (hb_blob_t *blob) @@ -340,7 +339,7 @@ hb_blob_get_length (hb_blob_t *blob) * * Returns: (transfer none) (array length=length): * - * Since: 1.0 + * Since: 0.9.2 **/ const char * hb_blob_get_data (hb_blob_t *blob, unsigned int *length) @@ -365,7 +364,7 @@ hb_blob_get_data (hb_blob_t *blob, unsigned int *length) * Returns: (transfer none) (array length=length): Writable blob data, * or %NULL if failed. * - * Since: 1.0 + * Since: 0.9.2 **/ char * hb_blob_get_data_writable (hb_blob_t *blob, unsigned int *length) diff --git a/src/hb-blob.h b/src/hb-blob.h index b2419ab..ef3fc98 100644 --- a/src/hb-blob.h +++ b/src/hb-blob.h @@ -64,7 +64,7 @@ typedef enum { typedef struct hb_blob_t hb_blob_t; -hb_blob_t * +HB_EXTERN hb_blob_t * hb_blob_create (const char *data, unsigned int length, hb_memory_mode_t mode, @@ -77,21 +77,21 @@ hb_blob_create (const char *data, * modify the parent data as that data may be * shared among multiple sub-blobs. */ -hb_blob_t * +HB_EXTERN hb_blob_t * hb_blob_create_sub_blob (hb_blob_t *parent, unsigned int offset, unsigned int length); -hb_blob_t * +HB_EXTERN hb_blob_t * hb_blob_get_empty (void); -hb_blob_t * +HB_EXTERN hb_blob_t * hb_blob_reference (hb_blob_t *blob); -void +HB_EXTERN void hb_blob_destroy (hb_blob_t *blob); -hb_bool_t +HB_EXTERN hb_bool_t hb_blob_set_user_data (hb_blob_t *blob, hb_user_data_key_t *key, void * data, @@ -99,25 +99,25 @@ hb_blob_set_user_data (hb_blob_t *blob, hb_bool_t replace); -void * +HB_EXTERN void * hb_blob_get_user_data (hb_blob_t *blob, hb_user_data_key_t *key); -void +HB_EXTERN void hb_blob_make_immutable (hb_blob_t *blob); -hb_bool_t +HB_EXTERN hb_bool_t hb_blob_is_immutable (hb_blob_t *blob); -unsigned int +HB_EXTERN unsigned int hb_blob_get_length (hb_blob_t *blob); -const char * +HB_EXTERN const char * hb_blob_get_data (hb_blob_t *blob, unsigned int *length); -char * +HB_EXTERN char * hb_blob_get_data_writable (hb_blob_t *blob, unsigned int *length); diff --git a/src/hb-buffer-deserialize-text.hh b/src/hb-buffer-deserialize-text.hh index 7a46ab2..d2d8daa 100644 --- a/src/hb-buffer-deserialize-text.hh +++ b/src/hb-buffer-deserialize-text.hh @@ -336,8 +336,8 @@ _hb_buffer_deserialize_glyphs_text (hb_buffer_t *buffer, const char *eof = pe, *tok = NULL; int cs; - hb_glyph_info_t info; - hb_glyph_position_t pos; + hb_glyph_info_t info = {0}; + hb_glyph_position_t pos = {0}; #line 343 "hb-buffer-deserialize-text.hh" { diff --git a/src/hb-buffer-deserialize-text.rl b/src/hb-buffer-deserialize-text.rl index 8856580..8a682f7 100644 --- a/src/hb-buffer-deserialize-text.rl +++ b/src/hb-buffer-deserialize-text.rl @@ -111,8 +111,8 @@ _hb_buffer_deserialize_glyphs_text (hb_buffer_t *buffer, const char *eof = pe, *tok = NULL; int cs; - hb_glyph_info_t info; - hb_glyph_position_t pos; + hb_glyph_info_t info = {0}; + hb_glyph_position_t pos = {0}; %%{ write init; write exec; diff --git a/src/hb-buffer-private.hh b/src/hb-buffer-private.hh index 069f925..ed592f4 100644 --- a/src/hb-buffer-private.hh +++ b/src/hb-buffer-private.hh @@ -35,9 +35,36 @@ #include "hb-unicode-private.hh" +#ifndef HB_BUFFER_MAX_EXPANSION_FACTOR +#define HB_BUFFER_MAX_EXPANSION_FACTOR 32 +#endif +#ifndef HB_BUFFER_MAX_LEN_MIN +#define HB_BUFFER_MAX_LEN_MIN 8192 +#endif +#ifndef HB_BUFFER_MAX_LEN_DEFAULT +#define HB_BUFFER_MAX_LEN_DEFAULT 0x3FFFFFFF /* Shaping more than a billion chars? Let us know! */ +#endif + ASSERT_STATIC (sizeof (hb_glyph_info_t) == 20); ASSERT_STATIC (sizeof (hb_glyph_info_t) == sizeof (hb_glyph_position_t)); +HB_MARK_AS_FLAG_T (hb_buffer_flags_t); +HB_MARK_AS_FLAG_T (hb_buffer_serialize_flags_t); + +enum hb_buffer_scratch_flags_t { + HB_BUFFER_SCRATCH_FLAG_DEFAULT = 0x00000000u, + HB_BUFFER_SCRATCH_FLAG_HAS_NON_ASCII = 0x00000001u, + HB_BUFFER_SCRATCH_FLAG_HAS_DEFAULT_IGNORABLES = 0x00000002u, + HB_BUFFER_SCRATCH_FLAG_HAS_SPACE_FALLBACK = 0x00000004u, + HB_BUFFER_SCRATCH_FLAG_HAS_GPOS_ATTACHMENT = 0x00000008u, + /* Reserved for complex shapers' internal use. */ + HB_BUFFER_SCRATCH_FLAG_COMPLEX0 = 0x01000000u, + HB_BUFFER_SCRATCH_FLAG_COMPLEX1 = 0x02000000u, + HB_BUFFER_SCRATCH_FLAG_COMPLEX2 = 0x04000000u, + HB_BUFFER_SCRATCH_FLAG_COMPLEX3 = 0x08000000u, +}; +HB_MARK_AS_FLAG_T (hb_buffer_scratch_flags_t); + /* * hb_buffer_t @@ -50,7 +77,10 @@ struct hb_buffer_t { /* Information about how the text in the buffer should be treated */ hb_unicode_funcs_t *unicode; /* Unicode functions */ hb_buffer_flags_t flags; /* BOT / EOT / etc. */ + hb_buffer_cluster_level_t cluster_level; hb_codepoint_t replacement; /* U+FFFD or something else. */ + hb_buffer_scratch_flags_t scratch_flags; /* Have space-flallback, etc. */ + unsigned int max_len; /* Maximum allowed len. */ /* Buffer contents */ hb_buffer_content_type_t content_type; @@ -75,17 +105,13 @@ struct hb_buffer_t { inline hb_glyph_position_t &cur_pos (unsigned int i = 0) { return pos[idx + i]; } inline hb_glyph_position_t cur_pos (unsigned int i = 0) const { return pos[idx + i]; } - inline hb_glyph_info_t &prev (void) { return out_info[out_len - 1]; } - inline hb_glyph_info_t prev (void) const { return info[out_len - 1]; } + inline hb_glyph_info_t &prev (void) { return out_info[out_len ? out_len - 1 : 0]; } + inline hb_glyph_info_t prev (void) const { return out_info[out_len ? out_len - 1 : 0]; } inline bool has_separate_output (void) const { return info != out_info; } unsigned int serial; - /* These reflect current allocations of the bytes in glyph_info_t's var1 and var2. */ - uint8_t allocated_var_bytes[8]; - const char *allocated_var_owner[8]; - /* Text before / after the main buffer contents. * Always in Unicode, and ordered outward. * Index 0 is for "pre-context", 1 for "post-context". */ @@ -93,6 +119,52 @@ struct hb_buffer_t { hb_codepoint_t context[2][CONTEXT_LENGTH]; unsigned int context_len[2]; + /* Debugging API */ + hb_buffer_message_func_t message_func; + void *message_data; + hb_destroy_func_t message_destroy; + + /* Internal debugging. */ + /* The bits here reflect current allocations of the bytes in glyph_info_t's var1 and var2. */ +#ifndef HB_NDEBUG + uint8_t allocated_var_bits; +#endif + inline void allocate_var (unsigned int start, unsigned int count) + { +#ifndef HB_NDEBUG + unsigned int end = start + count; + assert (end <= 8); + unsigned int bits = (1<func (offsetof (hb_glyph_info_t, var) - offsetof(hb_glyph_info_t, var1), \ - sizeof (b->info[0].var), owner) -#define HB_BUFFER_ALLOCATE_VAR(b, var) \ - HB_BUFFER_XALLOCATE_VAR (b, allocate_var, var (), #var) -#define HB_BUFFER_DEALLOCATE_VAR(b, var) \ - HB_BUFFER_XALLOCATE_VAR (b, deallocate_var, var (), #var) -#define HB_BUFFER_ASSERT_VAR(b, var) \ - HB_BUFFER_XALLOCATE_VAR (b, assert_var, var (), #var) + sizeof (b->info[0].var)) +#define HB_BUFFER_ALLOCATE_VAR(b, var) HB_BUFFER_XALLOCATE_VAR (b, allocate_var, var ()) +#define HB_BUFFER_DEALLOCATE_VAR(b, var) HB_BUFFER_XALLOCATE_VAR (b, deallocate_var, var ()) +#define HB_BUFFER_ASSERT_VAR(b, var) HB_BUFFER_XALLOCATE_VAR (b, assert_var, var ()) #endif /* HB_BUFFER_PRIVATE_HH */ diff --git a/src/hb-buffer-serialize.cc b/src/hb-buffer-serialize.cc index 406d69d..63a0f34 100644 --- a/src/hb-buffer-serialize.cc +++ b/src/hb-buffer-serialize.cc @@ -36,11 +36,12 @@ static const char *serialize_formats[] = { /** * hb_buffer_serialize_list_formats: * - * + * Returns a list of supported buffer serialization formats. * * Return value: (transfer none): + * A string array of buffer serialization formats. Should not be freed. * - * Since: 1.0 + * Since: 0.9.7 **/ const char ** hb_buffer_serialize_list_formats (void) @@ -50,14 +51,17 @@ hb_buffer_serialize_list_formats (void) /** * hb_buffer_serialize_format_from_string: - * @str: - * @len: + * @str: (array length=len) (element-type uint8_t): a string to parse + * @len: length of @str, or -1 if string is %NULL terminated * - * + * Parses a string into an #hb_buffer_serialize_format_t. Does not check if + * @str is a valid buffer serialization format, use + * hb_buffer_serialize_list_formats() to get the list of supported formats. * * Return value: + * The parsed #hb_buffer_serialize_format_t. * - * Since: 1.0 + * Since: 0.9.7 **/ hb_buffer_serialize_format_t hb_buffer_serialize_format_from_string (const char *str, int len) @@ -68,13 +72,15 @@ hb_buffer_serialize_format_from_string (const char *str, int len) /** * hb_buffer_serialize_format_to_string: - * @format: + * @format: an #hb_buffer_serialize_format_t to convert. * - * + * Converts @format to the string corresponding it, or %NULL if it is not a valid + * #hb_buffer_serialize_format_t. * - * Return value: + * Return value: (transfer none): + * A %NULL terminated string corresponding to @format. Should not be freed. * - * Since: 1.0 + * Since: 0.9.7 **/ const char * hb_buffer_serialize_format_to_string (hb_buffer_serialize_format_t format) @@ -99,7 +105,8 @@ _hb_buffer_serialize_glyphs_json (hb_buffer_t *buffer, hb_buffer_serialize_flags_t flags) { hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, NULL); - hb_glyph_position_t *pos = hb_buffer_get_glyph_positions (buffer, NULL); + hb_glyph_position_t *pos = (flags & HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS) ? + NULL : hb_buffer_get_glyph_positions (buffer, NULL); *buf_consumed = 0; for (unsigned int i = start; i < end; i++) @@ -144,6 +151,16 @@ _hb_buffer_serialize_glyphs_json (hb_buffer_t *buffer, pos[i].x_advance, pos[i].y_advance); } + if (flags & HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS) + { + hb_glyph_extents_t extents; + hb_font_get_glyph_extents(font, info[i].codepoint, &extents); + p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"xb\":%d,\"yb\":%d", + extents.x_bearing, extents.y_bearing)); + p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"w\":%d,\"h\":%d", + extents.width, extents.height)); + } + *p++ = '}'; unsigned int l = p - b; @@ -172,7 +189,8 @@ _hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer, hb_buffer_serialize_flags_t flags) { hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, NULL); - hb_glyph_position_t *pos = hb_buffer_get_glyph_positions (buffer, NULL); + hb_glyph_position_t *pos = (flags & HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS) ? + NULL : hb_buffer_get_glyph_positions (buffer, NULL); *buf_consumed = 0; for (unsigned int i = start; i < end; i++) @@ -208,6 +226,13 @@ _hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer, p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",%d", pos[i].y_advance)); } + if (flags & HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS) + { + hb_glyph_extents_t extents; + hb_font_get_glyph_extents(font, info[i].codepoint, &extents); + p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "<%d,%d,%d,%d>", extents.x_bearing, extents.y_bearing, extents.width, extents.height)); + } + unsigned int l = p - b; if (buf_size > l) { @@ -223,24 +248,51 @@ _hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer, return end - start; } -/* Returns number of items, starting at start, that were serialized. */ /** * hb_buffer_serialize_glyphs: - * @buffer: a buffer. - * @start: - * @end: - * @buf: (array length=buf_size): - * @buf_size: - * @buf_consumed: (out): - * @font: - * @format: - * @flags: + * @buffer: an #hb_buffer_t buffer. + * @start: the first item in @buffer to serialize. + * @end: the last item in @buffer to serialize. + * @buf: (out) (array length=buf_size) (element-type uint8_t): output string to + * write serialized buffer into. + * @buf_size: the size of @buf. + * @buf_consumed: (out) (allow-none): if not %NULL, will be set to the number of byes written into @buf. + * @font: (allow-none): the #hb_font_t used to shape this buffer, needed to + * read glyph names and extents. If %NULL, and empty font will be used. + * @format: the #hb_buffer_serialize_format_t to use for formatting the output. + * @flags: the #hb_buffer_serialize_flags_t that control what glyph properties + * to serialize. * - * + * Serializes @buffer into a textual representation of its glyph content, + * useful for showing the contents of the buffer, for example during debugging. + * There are currently two supported serialization formats: + * + * ## text + * A human-readable, plain text format. + * The serialized glyphs will look something like: + * + * ``` + * [uni0651=0@518,0+0|uni0628=0+1897] + * ``` + * - The serialized glyphs are delimited with `[` and `]`. + * - Glyphs are separated with `|` + * - Each glyph starts with glyph name, or glyph index if + * #HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES flag is set. Then, + * - If #HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS is not set, `=` then #hb_glyph_info_t.cluster. + * - If #HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS is not set, the #hb_glyph_position_t in the format: + * - If both #hb_glyph_position_t.x_offset and #hb_glyph_position_t.y_offset are not 0, `@x_offset,y_offset`. Then, + * - `+x_advance`, then `,y_advance` if #hb_glyph_position_t.y_advance is not 0. Then, + * - If #HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS is set, the + * #hb_glyph_extents_t in the format + * `<x_bearing,y_bearing,width,height>` + * + * ## json + * TODO. * * Return value: + * The number of serialized items. * - * Since: 1.0 + * Since: 0.9.7 **/ unsigned int hb_buffer_serialize_glyphs (hb_buffer_t *buffer, @@ -248,8 +300,8 @@ hb_buffer_serialize_glyphs (hb_buffer_t *buffer, unsigned int end, char *buf, unsigned int buf_size, - unsigned int *buf_consumed, /* May be NULL */ - hb_font_t *font, /* May be NULL */ + unsigned int *buf_consumed, + hb_font_t *font, hb_buffer_serialize_format_t format, hb_buffer_serialize_flags_t flags) { @@ -263,6 +315,9 @@ hb_buffer_serialize_glyphs (hb_buffer_t *buffer, assert ((!buffer->len && buffer->content_type == HB_BUFFER_CONTENT_TYPE_INVALID) || buffer->content_type == HB_BUFFER_CONTENT_TYPE_GLYPHS); + if (!buffer->have_positions) + flags |= HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS; + if (unlikely (start == end)) return 0; @@ -336,7 +391,7 @@ parse_int (const char *pp, const char *end, int32_t *pv) /** * hb_buffer_deserialize_glyphs: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t buffer. * @buf: (array length=buf_len): * @buf_len: * @end_ptr: (out): @@ -347,7 +402,7 @@ parse_int (const char *pp, const char *end, int32_t *pv) * * Return value: * - * Since: 1.0 + * Since: 0.9.7 **/ hb_bool_t hb_buffer_deserialize_glyphs (hb_buffer_t *buffer, diff --git a/src/hb-buffer.cc b/src/hb-buffer.cc index b9fe263..406db9c 100644 --- a/src/hb-buffer.cc +++ b/src/hb-buffer.cc @@ -35,7 +35,28 @@ #define HB_DEBUG_BUFFER (HB_DEBUG+0) #endif +/** + * SECTION: hb-buffer + * @title: Buffers + * @short_description: Input and output buffers + * @include: hb.h + * + * Buffers serve dual role in HarfBuzz; they hold the input characters that are + * passed hb_shape(), and after shaping they hold the output glyphs. + **/ +/** + * hb_segment_properties_equal: + * @a: first #hb_segment_properties_t to compare. + * @b: second #hb_segment_properties_t to compare. + * + * Checks the equality of two #hb_segment_properties_t's. + * + * Return value: (transfer full): + * %true if all properties of @a equal those of @b, false otherwise. + * + * Since: 0.9.7 + **/ hb_bool_t hb_segment_properties_equal (const hb_segment_properties_t *a, const hb_segment_properties_t *b) @@ -48,6 +69,17 @@ hb_segment_properties_equal (const hb_segment_properties_t *a, } +/** + * hb_segment_properties_hash: + * @p: #hb_segment_properties_t to hash. + * + * Creates a hash representing @p. + * + * Return value: + * A hash of @p. + * + * Since: 0.9.7 + **/ unsigned int hb_segment_properties_hash (const hb_segment_properties_t *p) { @@ -85,6 +117,11 @@ hb_buffer_t::enlarge (unsigned int size) { if (unlikely (in_error)) return false; + if (unlikely (size > max_len)) + { + in_error = true; + return false; + } unsigned int new_allocated = allocated; hb_glyph_position_t *new_pos = NULL; @@ -192,6 +229,7 @@ hb_buffer_t::clear (void) hb_segment_properties_t default_props = HB_SEGMENT_PROPERTIES_DEFAULT; props = default_props; + scratch_flags = HB_BUFFER_SCRATCH_FLAG_DEFAULT; content_type = HB_BUFFER_CONTENT_TYPE_INVALID; in_error = false; @@ -204,11 +242,11 @@ hb_buffer_t::clear (void) out_info = info; serial = 0; - memset (allocated_var_bytes, 0, sizeof allocated_var_bytes); - memset (allocated_var_owner, 0, sizeof allocated_var_owner); memset (context, 0, sizeof context); memset (context_len, 0, sizeof context_len); + + deallocate_var_all (); } void @@ -369,6 +407,8 @@ hb_buffer_t::move_to (unsigned int i) idx = i; return true; } + if (unlikely (in_error)) + return false; assert (i <= out_len + (len - idx)); @@ -498,14 +538,10 @@ hb_buffer_t::reverse_clusters (void) } void -hb_buffer_t::merge_clusters (unsigned int start, - unsigned int end) +hb_buffer_t::merge_clusters_impl (unsigned int start, + unsigned int end) { -#ifdef HB_NO_MERGE_CLUSTERS - return; -#endif - - if (unlikely (end - start < 2)) + if (cluster_level == HB_BUFFER_CLUSTER_LEVEL_CHARACTERS) return; unsigned int cluster = info[start].cluster; @@ -523,7 +559,7 @@ hb_buffer_t::merge_clusters (unsigned int start, /* If we hit the start of buffer, continue in out-buffer. */ if (idx == start) - for (unsigned i = out_len; i && out_info[i - 1].cluster == info[start].cluster; i--) + for (unsigned int i = out_len; i && out_info[i - 1].cluster == info[start].cluster; i--) out_info[i - 1].cluster = cluster; for (unsigned int i = start; i < end; i++) @@ -533,9 +569,8 @@ void hb_buffer_t::merge_out_clusters (unsigned int start, unsigned int end) { -#ifdef HB_NO_MERGE_CLUSTERS - return; -#endif + if (cluster_level == HB_BUFFER_CLUSTER_LEVEL_CHARACTERS) + return; if (unlikely (end - start < 2)) return; @@ -555,12 +590,44 @@ hb_buffer_t::merge_out_clusters (unsigned int start, /* If we hit the end of out-buffer, continue in buffer. */ if (end == out_len) - for (unsigned i = idx; i < len && info[i].cluster == out_info[end - 1].cluster; i++) + for (unsigned int i = idx; i < len && info[i].cluster == out_info[end - 1].cluster; i++) info[i].cluster = cluster; for (unsigned int i = start; i < end; i++) out_info[i].cluster = cluster; } +void +hb_buffer_t::delete_glyph () +{ + unsigned int cluster = info[idx].cluster; + if (idx + 1 < len && cluster == info[idx + 1].cluster) + { + /* Cluster survives; do nothing. */ + goto done; + } + + if (out_len) + { + /* Merge cluster backward. */ + if (cluster < out_info[out_len - 1].cluster) + { + unsigned int old_cluster = out_info[out_len - 1].cluster; + for (unsigned i = out_len; i && out_info[i - 1].cluster == old_cluster; i--) + out_info[i - 1].cluster = cluster; + } + goto done; + } + + if (idx + 1 < len) + { + /* Merge cluster forward. */ + merge_clusters (idx, idx + 2); + goto done; + } + +done: + skip_glyph (); +} void hb_buffer_t::guess_segment_properties (void) @@ -594,84 +661,21 @@ hb_buffer_t::guess_segment_properties (void) } -static inline void -dump_var_allocation (const hb_buffer_t *buffer) -{ - char buf[80]; - for (unsigned int i = 0; i < 8; i++) - buf[i] = '0' + buffer->allocated_var_bytes[7 - i]; - buf[8] = '\0'; - DEBUG_MSG (BUFFER, buffer, - "Current var allocation: %s", - buf); -} - -void hb_buffer_t::allocate_var (unsigned int byte_i, unsigned int count, const char *owner) -{ - assert (byte_i < 8 && byte_i + count <= 8); - - if (DEBUG_ENABLED (BUFFER)) - dump_var_allocation (this); - DEBUG_MSG (BUFFER, this, - "Allocating var bytes %d..%d for %s", - byte_i, byte_i + count - 1, owner); - - for (unsigned int i = byte_i; i < byte_i + count; i++) { - assert (!allocated_var_bytes[i]); - allocated_var_bytes[i]++; - allocated_var_owner[i] = owner; - } -} - -void hb_buffer_t::deallocate_var (unsigned int byte_i, unsigned int count, const char *owner) -{ - if (DEBUG_ENABLED (BUFFER)) - dump_var_allocation (this); - - DEBUG_MSG (BUFFER, this, - "Deallocating var bytes %d..%d for %s", - byte_i, byte_i + count - 1, owner); - - assert (byte_i < 8 && byte_i + count <= 8); - for (unsigned int i = byte_i; i < byte_i + count; i++) { - assert (allocated_var_bytes[i]); - assert (0 == strcmp (allocated_var_owner[i], owner)); - allocated_var_bytes[i]--; - } -} - -void hb_buffer_t::assert_var (unsigned int byte_i, unsigned int count, const char *owner) -{ - if (DEBUG_ENABLED (BUFFER)) - dump_var_allocation (this); - - DEBUG_MSG (BUFFER, this, - "Asserting var bytes %d..%d for %s", - byte_i, byte_i + count - 1, owner); - - assert (byte_i < 8 && byte_i + count <= 8); - for (unsigned int i = byte_i; i < byte_i + count; i++) { - assert (allocated_var_bytes[i]); - assert (0 == strcmp (allocated_var_owner[i], owner)); - } -} - -void hb_buffer_t::deallocate_var_all (void) -{ - memset (allocated_var_bytes, 0, sizeof (allocated_var_bytes)); - memset (allocated_var_owner, 0, sizeof (allocated_var_owner)); -} - /* Public API */ /** * hb_buffer_create: (Xconstructor) * - * + * Creates a new #hb_buffer_t with all properties to defaults. * - * Return value: (transfer full) + * Return value: (transfer full): + * A newly allocated #hb_buffer_t with a reference count of 1. The initial + * reference count should be released with hb_buffer_destroy() when you are done + * using the #hb_buffer_t. This function never returns %NULL. If memory cannot + * be allocated, a special #hb_buffer_t object will be returned on which + * hb_buffer_allocation_successful() returns %false. * - * Since: 1.0 + * Since: 0.9.2 **/ hb_buffer_t * hb_buffer_create (void) @@ -681,6 +685,8 @@ hb_buffer_create (void) if (!(buffer = hb_object_create ())) return hb_buffer_get_empty (); + buffer->max_len = HB_BUFFER_MAX_LEN_DEFAULT; + buffer->reset (); return buffer; @@ -693,7 +699,7 @@ hb_buffer_create (void) * * Return value: (transfer full): * - * Since: 1.0 + * Since: 0.9.2 **/ hb_buffer_t * hb_buffer_get_empty (void) @@ -703,7 +709,10 @@ hb_buffer_get_empty (void) const_cast (&_hb_unicode_funcs_nil), HB_BUFFER_FLAG_DEFAULT, + HB_BUFFER_CLUSTER_LEVEL_DEFAULT, HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT, + HB_BUFFER_SCRATCH_FLAG_DEFAULT, + HB_BUFFER_MAX_LEN_DEFAULT, HB_BUFFER_CONTENT_TYPE_INVALID, HB_SEGMENT_PROPERTIES_DEFAULT, @@ -719,13 +728,15 @@ hb_buffer_get_empty (void) /** * hb_buffer_reference: (skip) - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * Increases the reference count on @buffer by one. This prevents @buffer from + * being destroyed until a matching call to hb_buffer_destroy() is made. * * Return value: (transfer full): + * The referenced #hb_buffer_t. * - * Since: 1.0 + * Since: 0.9.2 **/ hb_buffer_t * hb_buffer_reference (hb_buffer_t *buffer) @@ -735,11 +746,13 @@ hb_buffer_reference (hb_buffer_t *buffer) /** * hb_buffer_destroy: (skip) - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * Deallocate the @buffer. + * Decreases the reference count on @buffer by one. If the result is zero, then + * @buffer and all associated resources are freed. See hb_buffer_reference(). * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_buffer_destroy (hb_buffer_t *buffer) @@ -750,13 +763,15 @@ hb_buffer_destroy (hb_buffer_t *buffer) free (buffer->info); free (buffer->pos); + if (buffer->message_destroy) + buffer->message_destroy (buffer->message_data); free (buffer); } /** * hb_buffer_set_user_data: (skip) - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * @key: * @data: * @destroy: @@ -766,7 +781,7 @@ hb_buffer_destroy (hb_buffer_t *buffer) * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_bool_t hb_buffer_set_user_data (hb_buffer_t *buffer, @@ -780,14 +795,14 @@ hb_buffer_set_user_data (hb_buffer_t *buffer, /** * hb_buffer_get_user_data: (skip) - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * @key: * * * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ void * hb_buffer_get_user_data (hb_buffer_t *buffer, @@ -799,12 +814,13 @@ hb_buffer_get_user_data (hb_buffer_t *buffer, /** * hb_buffer_set_content_type: - * @buffer: a buffer. - * @content_type: + * @buffer: an #hb_buffer_t. + * @content_type: the type of buffer contents to set * - * + * Sets the type of @buffer contents, buffers are either empty, contain + * characters (before shaping) or glyphs (the result of shaping). * - * Since: 1.0 + * Since: 0.9.5 **/ void hb_buffer_set_content_type (hb_buffer_t *buffer, @@ -815,13 +831,14 @@ hb_buffer_set_content_type (hb_buffer_t *buffer, /** * hb_buffer_get_content_type: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * see hb_buffer_set_content_type(). * - * Return value: + * Return value: + * The type of @buffer contents. * - * Since: 1.0 + * Since: 0.9.5 **/ hb_buffer_content_type_t hb_buffer_get_content_type (hb_buffer_t *buffer) @@ -832,12 +849,12 @@ hb_buffer_get_content_type (hb_buffer_t *buffer) /** * hb_buffer_set_unicode_funcs: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * @unicode_funcs: * * * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_buffer_set_unicode_funcs (hb_buffer_t *buffer, @@ -857,13 +874,13 @@ hb_buffer_set_unicode_funcs (hb_buffer_t *buffer, /** * hb_buffer_get_unicode_funcs: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * * * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_unicode_funcs_t * hb_buffer_get_unicode_funcs (hb_buffer_t *buffer) @@ -873,12 +890,18 @@ hb_buffer_get_unicode_funcs (hb_buffer_t *buffer) /** * hb_buffer_set_direction: - * @buffer: a buffer. - * @direction: - * - * - * - * Since: 1.0 + * @buffer: an #hb_buffer_t. + * @direction: the #hb_direction_t of the @buffer + * + * Set the text flow direction of the buffer. No shaping can happen without + * setting @buffer direction, and it controls the visual direction for the + * output glyphs; for RTL direction the glyphs will be reversed. Many layout + * features depend on the proper setting of the direction, for example, + * reversing RTL text before shaping, then shaping with LTR direction is not + * the same as keeping the text in logical order and shaping with RTL + * direction. + * + * Since: 0.9.2 **/ void hb_buffer_set_direction (hb_buffer_t *buffer, @@ -893,13 +916,14 @@ hb_buffer_set_direction (hb_buffer_t *buffer, /** * hb_buffer_get_direction: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * See hb_buffer_set_direction() * - * Return value: + * Return value: + * The direction of the @buffer. * - * Since: 1.0 + * Since: 0.9.2 **/ hb_direction_t hb_buffer_get_direction (hb_buffer_t *buffer) @@ -909,12 +933,20 @@ hb_buffer_get_direction (hb_buffer_t *buffer) /** * hb_buffer_set_script: - * @buffer: a buffer. - * @script: + * @buffer: an #hb_buffer_t. + * @script: an #hb_script_t to set. * - * + * Sets the script of @buffer to @script. + * + * Script is crucial for choosing the proper shaping behaviour for scripts that + * require it (e.g. Arabic) and the which OpenType features defined in the font + * to be applied. + * + * You can pass one of the predefined #hb_script_t values, or use + * hb_script_from_string() or hb_script_from_iso15924_tag() to get the + * corresponding script from an ISO 15924 script tag. * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_buffer_set_script (hb_buffer_t *buffer, @@ -928,13 +960,14 @@ hb_buffer_set_script (hb_buffer_t *buffer, /** * hb_buffer_get_script: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * See hb_buffer_set_script(). * - * Return value: + * Return value: + * The #hb_script_t of the @buffer. * - * Since: 1.0 + * Since: 0.9.2 **/ hb_script_t hb_buffer_get_script (hb_buffer_t *buffer) @@ -944,12 +977,20 @@ hb_buffer_get_script (hb_buffer_t *buffer) /** * hb_buffer_set_language: - * @buffer: a buffer. - * @language: + * @buffer: an #hb_buffer_t. + * @language: an hb_language_t to set. * - * + * Sets the language of @buffer to @language. + * + * Languages are crucial for selecting which OpenType feature to apply to the + * buffer which can result in applying language-specific behaviour. Languages + * are orthogonal to the scripts, and though they are related, they are + * different concepts and should not be confused with each other. + * + * Use hb_language_from_string() to convert from ISO 639 language codes to + * #hb_language_t. * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_buffer_set_language (hb_buffer_t *buffer, @@ -963,13 +1004,14 @@ hb_buffer_set_language (hb_buffer_t *buffer, /** * hb_buffer_get_language: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * See hb_buffer_set_language(). * - * Return value: + * Return value: (transfer none): + * The #hb_language_t of the buffer. Must not be freed by the caller. * - * Since: 1.0 + * Since: 0.9.2 **/ hb_language_t hb_buffer_get_language (hb_buffer_t *buffer) @@ -979,12 +1021,14 @@ hb_buffer_get_language (hb_buffer_t *buffer) /** * hb_buffer_set_segment_properties: - * @buffer: a buffer. - * @props: + * @buffer: an #hb_buffer_t. + * @props: an #hb_segment_properties_t to use. * - * + * Sets the segment properties of the buffer, a shortcut for calling + * hb_buffer_set_direction(), hb_buffer_set_script() and + * hb_buffer_set_language() individually. * - * Since: 1.0 + * Since: 0.9.7 **/ void hb_buffer_set_segment_properties (hb_buffer_t *buffer, @@ -998,12 +1042,12 @@ hb_buffer_set_segment_properties (hb_buffer_t *buffer, /** * hb_buffer_get_segment_properties: - * @buffer: a buffer. - * @props: + * @buffer: an #hb_buffer_t. + * @props: (out): the output #hb_segment_properties_t. * - * + * Sets @props to the #hb_segment_properties_t of @buffer. * - * Since: 1.0 + * Since: 0.9.7 **/ void hb_buffer_get_segment_properties (hb_buffer_t *buffer, @@ -1015,12 +1059,12 @@ hb_buffer_get_segment_properties (hb_buffer_t *buffer, /** * hb_buffer_set_flags: - * @buffer: a buffer. - * @flags: + * @buffer: an #hb_buffer_t. + * @flags: the buffer flags to set. * - * + * Sets @buffer flags to @flags. See #hb_buffer_flags_t. * - * Since: 1.0 + * Since: 0.9.7 **/ void hb_buffer_set_flags (hb_buffer_t *buffer, @@ -1034,13 +1078,14 @@ hb_buffer_set_flags (hb_buffer_t *buffer, /** * hb_buffer_get_flags: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * See hb_buffer_set_flags(). * * Return value: + * The @buffer flags. * - * Since: 1.0 + * Since: 0.9.7 **/ hb_buffer_flags_t hb_buffer_get_flags (hb_buffer_t *buffer) @@ -1048,15 +1093,53 @@ hb_buffer_get_flags (hb_buffer_t *buffer) return buffer->flags; } +/** + * hb_buffer_set_cluster_level: + * @buffer: an #hb_buffer_t. + * @cluster_level: + * + * + * + * Since: 0.9.42 + **/ +void +hb_buffer_set_cluster_level (hb_buffer_t *buffer, + hb_buffer_cluster_level_t cluster_level) +{ + if (unlikely (hb_object_is_inert (buffer))) + return; + + buffer->cluster_level = cluster_level; +} /** - * hb_buffer_set_replacement_codepoint: - * @buffer: a buffer. - * @replacement: + * hb_buffer_get_cluster_level: + * @buffer: an #hb_buffer_t. * * * - * Since: 1.0 + * Return value: + * + * Since: 0.9.42 + **/ +hb_buffer_cluster_level_t +hb_buffer_get_cluster_level (hb_buffer_t *buffer) +{ + return buffer->cluster_level; +} + + +/** + * hb_buffer_set_replacement_codepoint: + * @buffer: an #hb_buffer_t. + * @replacement: the replacement #hb_codepoint_t + * + * Sets the #hb_codepoint_t that replaces invalid entries for a given encoding + * when adding text to @buffer. + * + * Default is %HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT. + * + * Since: 0.9.31 **/ void hb_buffer_set_replacement_codepoint (hb_buffer_t *buffer, @@ -1070,13 +1153,14 @@ hb_buffer_set_replacement_codepoint (hb_buffer_t *buffer, /** * hb_buffer_get_replacement_codepoint: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * See hb_buffer_set_replacement_codepoint(). * * Return value: + * The @buffer replacement #hb_codepoint_t. * - * Since: 1.0 + * Since: 0.9.31 **/ hb_codepoint_t hb_buffer_get_replacement_codepoint (hb_buffer_t *buffer) @@ -1087,11 +1171,12 @@ hb_buffer_get_replacement_codepoint (hb_buffer_t *buffer) /** * hb_buffer_reset: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * Resets the buffer to its initial status, as if it was just newly created + * with hb_buffer_create(). * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_buffer_reset (hb_buffer_t *buffer) @@ -1101,11 +1186,12 @@ hb_buffer_reset (hb_buffer_t *buffer) /** * hb_buffer_clear_contents: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * Similar to hb_buffer_reset(), but does not clear the Unicode functions and + * the replacement code point. * - * Since: 1.0 + * Since: 0.9.11 **/ void hb_buffer_clear_contents (hb_buffer_t *buffer) @@ -1115,14 +1201,15 @@ hb_buffer_clear_contents (hb_buffer_t *buffer) /** * hb_buffer_pre_allocate: - * @buffer: a buffer. - * @size: + * @buffer: an #hb_buffer_t. + * @size: number of items to pre allocate. * - * + * Pre allocates memory for @buffer to fit at least @size number of items. * - * Return value: + * Return value: + * %true if @buffer memory allocation succeeded, %false otherwise. * - * Since: 1.0 + * Since: 0.9.2 **/ hb_bool_t hb_buffer_pre_allocate (hb_buffer_t *buffer, unsigned int size) @@ -1132,13 +1219,14 @@ hb_buffer_pre_allocate (hb_buffer_t *buffer, unsigned int size) /** * hb_buffer_allocation_successful: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * Check if allocating memory for the buffer succeeded. * - * Return value: + * Return value: + * %true if @buffer memory allocation succeeded, %false otherwise. * - * Since: 1.0 + * Since: 0.9.2 **/ hb_bool_t hb_buffer_allocation_successful (hb_buffer_t *buffer) @@ -1148,13 +1236,20 @@ hb_buffer_allocation_successful (hb_buffer_t *buffer) /** * hb_buffer_add: - * @buffer: a buffer. - * @codepoint: - * @cluster: + * @buffer: an #hb_buffer_t. + * @codepoint: a Unicode code point. + * @cluster: the cluster value of @codepoint. * - * + * Appends a character with the Unicode value of @codepoint to @buffer, and + * gives it the initial cluster value of @cluster. Clusters can be any thing + * the client wants, they are usually used to refer to the index of the + * character in the input text stream and are output in + * #hb_glyph_info_t.cluster field. + * + * This function does not check the validity of @codepoint, it is up to the + * caller to ensure it is a valid Unicode code point. * - * Since: 1.0 + * Since: 0.9.7 **/ void hb_buffer_add (hb_buffer_t *buffer, @@ -1167,14 +1262,16 @@ hb_buffer_add (hb_buffer_t *buffer, /** * hb_buffer_set_length: - * @buffer: a buffer. - * @length: + * @buffer: an #hb_buffer_t. + * @length: the new length of @buffer. * - * + * Similar to hb_buffer_pre_allocate(), but clears any new items added at the + * end. * * Return value: + * %true if @buffer memory allocation succeeded, %false otherwise. * - * Since: 1.0 + * Since: 0.9.2 **/ hb_bool_t hb_buffer_set_length (hb_buffer_t *buffer, @@ -1207,13 +1304,15 @@ hb_buffer_set_length (hb_buffer_t *buffer, /** * hb_buffer_get_length: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * * Returns the number of items in the buffer. * - * Return value: buffer length. + * Return value: + * The @buffer length. + * The value valid as long as buffer has not been modified. * - * Since: 1.0 + * Since: 0.9.2 **/ unsigned int hb_buffer_get_length (hb_buffer_t *buffer) @@ -1223,15 +1322,17 @@ hb_buffer_get_length (hb_buffer_t *buffer) /** * hb_buffer_get_glyph_infos: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * @length: (out): output array length. * - * Returns buffer glyph information array. Returned pointer - * is valid as long as buffer contents are not modified. + * Returns @buffer glyph information array. Returned pointer + * is valid as long as @buffer contents are not modified. * - * Return value: (transfer none) (array length=length): buffer glyph information array. + * Return value: (transfer none) (array length=length): + * The @buffer glyph information array. + * The value valid as long as buffer has not been modified. * - * Since: 1.0 + * Since: 0.9.2 **/ hb_glyph_info_t * hb_buffer_get_glyph_infos (hb_buffer_t *buffer, @@ -1245,15 +1346,17 @@ hb_buffer_get_glyph_infos (hb_buffer_t *buffer, /** * hb_buffer_get_glyph_positions: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * @length: (out): output length. * - * Returns buffer glyph position array. Returned pointer - * is valid as long as buffer contents are not modified. + * Returns @buffer glyph position array. Returned pointer + * is valid as long as @buffer contents are not modified. * - * Return value: (transfer none) (array length=length): buffer glyph position array. + * Return value: (transfer none) (array length=length): + * The @buffer glyph position array. + * The value valid as long as buffer has not been modified. * - * Since: 1.0 + * Since: 0.9.2 **/ hb_glyph_position_t * hb_buffer_get_glyph_positions (hb_buffer_t *buffer, @@ -1270,11 +1373,11 @@ hb_buffer_get_glyph_positions (hb_buffer_t *buffer, /** * hb_buffer_reverse: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * * Reverses buffer contents. * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_buffer_reverse (hb_buffer_t *buffer) @@ -1283,14 +1386,31 @@ hb_buffer_reverse (hb_buffer_t *buffer) } /** + * hb_buffer_reverse_range: + * @buffer: an #hb_buffer_t. + * @start: start index. + * @end: end index. + * + * Reverses buffer contents between start to end. + * + * Since: 0.9.41 + **/ +void +hb_buffer_reverse_range (hb_buffer_t *buffer, + unsigned int start, unsigned int end) +{ + buffer->reverse_range (start, end); +} + +/** * hb_buffer_reverse_clusters: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * * Reverses buffer clusters. That is, the buffer contents are * reversed, then each cluster (consecutive items having the * same cluster number) are reversed again. * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_buffer_reverse_clusters (hb_buffer_t *buffer) @@ -1300,7 +1420,7 @@ hb_buffer_reverse_clusters (hb_buffer_t *buffer) /** * hb_buffer_guess_segment_properties: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * * Sets unset buffer segment properties based on buffer Unicode * contents. If buffer is not empty, it must have content type @@ -1320,7 +1440,7 @@ hb_buffer_reverse_clusters (hb_buffer_t *buffer) * hb_language_get_default(). This may change in the future by * taking buffer script into consideration when choosing a language. * - * Since: 1.0 + * Since: 0.9.7 **/ void hb_buffer_guess_segment_properties (hb_buffer_t *buffer) @@ -1399,15 +1519,20 @@ hb_buffer_add_utf (hb_buffer_t *buffer, /** * hb_buffer_add_utf8: - * @buffer: a buffer. - * @text: (array length=text_length) (element-type uint8_t): - * @text_length: - * @item_offset: - * @item_length: + * @buffer: an #hb_buffer_t. + * @text: (array length=text_length) (element-type uint8_t): an array of UTF-8 + * characters to append. + * @text_length: the length of the @text, or -1 if it is %NULL terminated. + * @item_offset: the offset of the first character to add to the @buffer. + * @item_length: the number of characters to add to the @buffer, or -1 for the + * end of @text (assuming it is %NULL terminated). * - * + * See hb_buffer_add_codepoints(). + * + * Replaces invalid UTF-8 characters with the @buffer replacement code point, + * see hb_buffer_set_replacement_codepoint(). * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_buffer_add_utf8 (hb_buffer_t *buffer, @@ -1421,15 +1546,19 @@ hb_buffer_add_utf8 (hb_buffer_t *buffer, /** * hb_buffer_add_utf16: - * @buffer: a buffer. - * @text: (array length=text_length): - * @text_length: - * @item_offset: - * @item_length: + * @buffer: an #hb_buffer_t. + * @text: (array length=text_length): an array of UTF-16 characters to append. + * @text_length: the length of the @text, or -1 if it is %NULL terminated. + * @item_offset: the offset of the first character to add to the @buffer. + * @item_length: the number of characters to add to the @buffer, or -1 for the + * end of @text (assuming it is %NULL terminated). * - * + * See hb_buffer_add_codepoints(). * - * Since: 1.0 + * Replaces invalid UTF-16 characters with the @buffer replacement code point, + * see hb_buffer_set_replacement_codepoint(). + * + * Since: 0.9.2 **/ void hb_buffer_add_utf16 (hb_buffer_t *buffer, @@ -1443,15 +1572,19 @@ hb_buffer_add_utf16 (hb_buffer_t *buffer, /** * hb_buffer_add_utf32: - * @buffer: a buffer. - * @text: (array length=text_length): - * @text_length: - * @item_offset: - * @item_length: + * @buffer: an #hb_buffer_t. + * @text: (array length=text_length): an array of UTF-32 characters to append. + * @text_length: the length of the @text, or -1 if it is %NULL terminated. + * @item_offset: the offset of the first character to add to the @buffer. + * @item_length: the number of characters to add to the @buffer, or -1 for the + * end of @text (assuming it is %NULL terminated). * - * + * See hb_buffer_add_codepoints(). + * + * Replaces invalid UTF-32 characters with the @buffer replacement code point, + * see hb_buffer_set_replacement_codepoint(). * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_buffer_add_utf32 (hb_buffer_t *buffer, @@ -1465,15 +1598,20 @@ hb_buffer_add_utf32 (hb_buffer_t *buffer, /** * hb_buffer_add_latin1: - * @buffer: a buffer. - * @text: (array length=text_length) (element-type uint8_t): - * @text_length: - * @item_offset: - * @item_length: + * @buffer: an #hb_buffer_t. + * @text: (array length=text_length) (element-type uint8_t): an array of UTF-8 + * characters to append. + * @text_length: the length of the @text, or -1 if it is %NULL terminated. + * @item_offset: the offset of the first character to add to the @buffer. + * @item_length: the number of characters to add to the @buffer, or -1 for the + * end of @text (assuming it is %NULL terminated). * - * + * Similar to hb_buffer_add_codepoints(), but allows only access to first 256 + * Unicode code points that can fit in 8-bit strings. + * + * Has nothing to do with non-Unicode Latin-1 encoding. * - * Since: 1.0 + * Since: 0.9.39 **/ void hb_buffer_add_latin1 (hb_buffer_t *buffer, @@ -1487,15 +1625,27 @@ hb_buffer_add_latin1 (hb_buffer_t *buffer, /** * hb_buffer_add_codepoints: - * @buffer: a buffer. - * @text: (array length=text_length): - * @text_length: - * @item_offset: - * @item_length: - * - * - * - * Since: 1.0 + * @buffer: a #hb_buffer_t to append characters to. + * @text: (array length=text_length): an array of Unicode code points to append. + * @text_length: the length of the @text, or -1 if it is %NULL terminated. + * @item_offset: the offset of the first code point to add to the @buffer. + * @item_length: the number of code points to add to the @buffer, or -1 for the + * end of @text (assuming it is %NULL terminated). + * + * Appends characters from @text array to @buffer. The @item_offset is the + * position of the first character from @text that will be appended, and + * @item_length is the number of character. When shaping part of a larger text + * (e.g. a run of text from a paragraph), instead of passing just the substring + * corresponding to the run, it is preferable to pass the whole + * paragraph and specify the run start and length as @item_offset and + * @item_length, respectively, to give HarfBuzz the full context to be able, + * for example, to do cross-run Arabic shaping or properly handle combining + * marks at stat of run. + * + * This function does not check the validity of @text, it is up to the caller + * to ensure it contains a valid Unicode code points. + * + * Since: 0.9.31 **/ void hb_buffer_add_codepoints (hb_buffer_t *buffer, @@ -1550,7 +1700,7 @@ normalize_glyphs_cluster (hb_buffer_t *buffer, pos[end - 1].x_advance = total_x_advance; pos[end - 1].y_advance = total_y_advance; - hb_bubble_sort (buffer->info + start, end - start - 1, compare_info_codepoint, buffer->pos + start); + hb_stable_sort (buffer->info + start, end - start - 1, compare_info_codepoint, buffer->pos + start); } else { /* Transfer all cluster advance to the first glyph. */ pos[start].x_advance += total_x_advance; @@ -1559,17 +1709,20 @@ normalize_glyphs_cluster (hb_buffer_t *buffer, pos[i].x_offset -= total_x_advance; pos[i].y_offset -= total_y_advance; } - hb_bubble_sort (buffer->info + start + 1, end - start - 1, compare_info_codepoint, buffer->pos + start + 1); + hb_stable_sort (buffer->info + start + 1, end - start - 1, compare_info_codepoint, buffer->pos + start + 1); } } /** * hb_buffer_normalize_glyphs: - * @buffer: a buffer. + * @buffer: an #hb_buffer_t. * - * + * Reorders a glyph buffer to have canonical in-cluster glyph order / position. + * The resulting clusters should behave identical to pre-reordering clusters. + * + * This has nothing to do with Unicode normalization. * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_buffer_normalize_glyphs (hb_buffer_t *buffer) @@ -1592,3 +1745,66 @@ hb_buffer_normalize_glyphs (hb_buffer_t *buffer) } normalize_glyphs_cluster (buffer, start, end, backward); } + +void +hb_buffer_t::sort (unsigned int start, unsigned int end, int(*compar)(const hb_glyph_info_t *, const hb_glyph_info_t *)) +{ + assert (!have_positions); + for (unsigned int i = start + 1; i < end; i++) + { + unsigned int j = i; + while (j > start && compar (&info[j - 1], &info[i]) > 0) + j--; + if (i == j) + continue; + /* Move item i to occupy place for item j, shift what's in between. */ + merge_clusters (j, i + 1); + { + hb_glyph_info_t t = info[i]; + memmove (&info[j + 1], &info[j], (i - j) * sizeof (hb_glyph_info_t)); + info[j] = t; + } + } +} + +/* + * Debugging. + */ + +/** + * hb_buffer_set_message_func: + * @buffer: an #hb_buffer_t. + * @func: (closure user_data) (destroy destroy) (scope notified): + * @user_data: + * @destroy: + * + * + * + * Since: 1.1.3 + **/ +void +hb_buffer_set_message_func (hb_buffer_t *buffer, + hb_buffer_message_func_t func, + void *user_data, hb_destroy_func_t destroy) +{ + if (buffer->message_destroy) + buffer->message_destroy (buffer->message_data); + + if (func) { + buffer->message_func = func; + buffer->message_data = user_data; + buffer->message_destroy = destroy; + } else { + buffer->message_func = NULL; + buffer->message_data = NULL; + buffer->message_destroy = NULL; + } +} + +bool +hb_buffer_t::message_impl (hb_font_t *font, const char *fmt, va_list ap) +{ + char buf[100]; + vsnprintf (buf, sizeof (buf), fmt, ap); + return (bool) this->message_func (this, font, buf, this->message_data); +} diff --git a/src/hb-buffer.h b/src/hb-buffer.h index e5b46d8..bf289c1 100644 --- a/src/hb-buffer.h +++ b/src/hb-buffer.h @@ -40,7 +40,27 @@ HB_BEGIN_DECLS - +/** + * hb_glyph_info_t: + * @codepoint: either a Unicode code point (before shaping) or a glyph index + * (after shaping). + * @mask: + * @cluster: the index of the character in the original text that corresponds + * to this #hb_glyph_info_t, or whatever the client passes to + * hb_buffer_add(). More than one #hb_glyph_info_t can have the same + * @cluster value, if they resulted from the same character (e.g. one + * to many glyph substitution), and when more than one character gets + * merged in the same glyph (e.g. many to one glyph substitution) the + * #hb_glyph_info_t will have the smallest cluster value of them. + * By default some characters are merged into the same cluster + * (e.g. combining marks have the same cluster as their bases) + * even if they are separate glyphs, hb_buffer_set_cluster_level() + * allow selecting more fine-grained cluster handling. + * + * The #hb_glyph_info_t is the structure that holds information about the + * glyphs and their relation to input text. + * + */ typedef struct hb_glyph_info_t { hb_codepoint_t codepoint; hb_mask_t mask; @@ -51,6 +71,22 @@ typedef struct hb_glyph_info_t { hb_var_int_t var2; } hb_glyph_info_t; +/** + * hb_glyph_position_t: + * @x_advance: how much the line advances after drawing this glyph when setting + * text in horizontal direction. + * @y_advance: how much the line advances after drawing this glyph when setting + * text in vertical direction. + * @x_offset: how much the glyph moves on the X-axis before drawing it, this + * should not affect how much the line advances. + * @y_offset: how much the glyph moves on the Y-axis before drawing it, this + * should not affect how much the line advances. + * + * The #hb_glyph_position_t is the structure that holds the positions of the + * glyph in both horizontal and vertical directions. All positions in + * #hb_glyph_position_t are relative to the current point. + * + */ typedef struct hb_glyph_position_t { hb_position_t x_advance; hb_position_t y_advance; @@ -61,7 +97,16 @@ typedef struct hb_glyph_position_t { hb_var_int_t var; } hb_glyph_position_t; - +/** + * hb_segment_properties_t: + * @direction: the #hb_direction_t of the buffer, see hb_buffer_set_direction(). + * @script: the #hb_script_t of the buffer, see hb_buffer_set_script(). + * @language: the #hb_language_t of the buffer, see hb_buffer_set_language(). + * + * The structure that holds various text properties of an #hb_buffer_t. Can be + * set and retrieved using hb_buffer_set_segment_properties() and + * hb_buffer_get_segment_properties(), respectively. + */ typedef struct hb_segment_properties_t { hb_direction_t direction; hb_script_t script; @@ -77,100 +122,127 @@ typedef struct hb_segment_properties_t { NULL, \ NULL} -hb_bool_t +HB_EXTERN hb_bool_t hb_segment_properties_equal (const hb_segment_properties_t *a, const hb_segment_properties_t *b); -unsigned int +HB_EXTERN unsigned int hb_segment_properties_hash (const hb_segment_properties_t *p); -/* - * hb_buffer_t +/** + * hb_buffer_t: + * + * The main structure holding the input text and its properties before shaping, + * and output glyphs and their information after shaping. */ typedef struct hb_buffer_t hb_buffer_t; -hb_buffer_t * +HB_EXTERN hb_buffer_t * hb_buffer_create (void); -hb_buffer_t * +HB_EXTERN hb_buffer_t * hb_buffer_get_empty (void); -hb_buffer_t * +HB_EXTERN hb_buffer_t * hb_buffer_reference (hb_buffer_t *buffer); -void +HB_EXTERN void hb_buffer_destroy (hb_buffer_t *buffer); -hb_bool_t +HB_EXTERN hb_bool_t hb_buffer_set_user_data (hb_buffer_t *buffer, hb_user_data_key_t *key, void * data, hb_destroy_func_t destroy, hb_bool_t replace); -void * +HB_EXTERN void * hb_buffer_get_user_data (hb_buffer_t *buffer, hb_user_data_key_t *key); - +/** + * hb_buffer_content_type_t: + * @HB_BUFFER_CONTENT_TYPE_INVALID: Initial value for new buffer. + * @HB_BUFFER_CONTENT_TYPE_UNICODE: The buffer contains input characters (before shaping). + * @HB_BUFFER_CONTENT_TYPE_GLYPHS: The buffer contains output glyphs (after shaping). + */ typedef enum { HB_BUFFER_CONTENT_TYPE_INVALID = 0, HB_BUFFER_CONTENT_TYPE_UNICODE, HB_BUFFER_CONTENT_TYPE_GLYPHS } hb_buffer_content_type_t; -void +HB_EXTERN void hb_buffer_set_content_type (hb_buffer_t *buffer, hb_buffer_content_type_t content_type); -hb_buffer_content_type_t +HB_EXTERN hb_buffer_content_type_t hb_buffer_get_content_type (hb_buffer_t *buffer); -void +HB_EXTERN void hb_buffer_set_unicode_funcs (hb_buffer_t *buffer, hb_unicode_funcs_t *unicode_funcs); -hb_unicode_funcs_t * +HB_EXTERN hb_unicode_funcs_t * hb_buffer_get_unicode_funcs (hb_buffer_t *buffer); -void +HB_EXTERN void hb_buffer_set_direction (hb_buffer_t *buffer, hb_direction_t direction); -hb_direction_t +HB_EXTERN hb_direction_t hb_buffer_get_direction (hb_buffer_t *buffer); -void +HB_EXTERN void hb_buffer_set_script (hb_buffer_t *buffer, hb_script_t script); -hb_script_t +HB_EXTERN hb_script_t hb_buffer_get_script (hb_buffer_t *buffer); -void +HB_EXTERN void hb_buffer_set_language (hb_buffer_t *buffer, hb_language_t language); -hb_language_t +HB_EXTERN hb_language_t hb_buffer_get_language (hb_buffer_t *buffer); -void +HB_EXTERN void hb_buffer_set_segment_properties (hb_buffer_t *buffer, const hb_segment_properties_t *props); -void +HB_EXTERN void hb_buffer_get_segment_properties (hb_buffer_t *buffer, hb_segment_properties_t *props); -void +HB_EXTERN void hb_buffer_guess_segment_properties (hb_buffer_t *buffer); +/** + * hb_buffer_flags_t: + * @HB_BUFFER_FLAG_DEFAULT: the default buffer flag. + * @HB_BUFFER_FLAG_BOT: flag indicating that special handling of the beginning + * of text paragraph can be applied to this buffer. Should usually + * be set, unless you are passing to the buffer only part + * of the text without the full context. + * @HB_BUFFER_FLAG_EOT: flag indicating that special handling of the end of text + * paragraph can be applied to this buffer, similar to + * @HB_BUFFER_FLAG_EOT. + * @HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES: + * flag indication that character with Default_Ignorable + * Unicode property should use the corresponding glyph + * from the font, instead of hiding them (currently done + * by replacing them with the space glyph and zeroing the + * advance width.) + * + * Since: 0.9.20 + */ typedef enum { /*< flags >*/ HB_BUFFER_FLAG_DEFAULT = 0x00000000u, HB_BUFFER_FLAG_BOT = 0x00000001u, /* Beginning-of-text */ @@ -178,91 +250,109 @@ typedef enum { /*< flags >*/ HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES = 0x00000004u } hb_buffer_flags_t; -void +HB_EXTERN void hb_buffer_set_flags (hb_buffer_t *buffer, hb_buffer_flags_t flags); -hb_buffer_flags_t +HB_EXTERN hb_buffer_flags_t hb_buffer_get_flags (hb_buffer_t *buffer); +/* + * Since: 0.9.42 + */ +typedef enum { + HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES = 0, + HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS = 1, + HB_BUFFER_CLUSTER_LEVEL_CHARACTERS = 2, + HB_BUFFER_CLUSTER_LEVEL_DEFAULT = HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES +} hb_buffer_cluster_level_t; + +HB_EXTERN void +hb_buffer_set_cluster_level (hb_buffer_t *buffer, + hb_buffer_cluster_level_t cluster_level); +HB_EXTERN hb_buffer_cluster_level_t +hb_buffer_get_cluster_level (hb_buffer_t *buffer); +/** + * HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT: + * + * The default code point for replacing invalid characters in a given encoding. + * Set to U+FFFD REPLACEMENT CHARACTER. + * + * Since: 0.9.31 + */ #define HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT 0xFFFDu -/* Sets codepoint used to replace invalid UTF-8/16/32 entries. - * Default is 0xFFFDu. */ -void +HB_EXTERN void hb_buffer_set_replacement_codepoint (hb_buffer_t *buffer, hb_codepoint_t replacement); -hb_codepoint_t +HB_EXTERN hb_codepoint_t hb_buffer_get_replacement_codepoint (hb_buffer_t *buffer); -/* Resets the buffer. Afterwards it's as if it was just created, - * except that it has a larger buffer allocated perhaps... */ -void +HB_EXTERN void hb_buffer_reset (hb_buffer_t *buffer); -/* Like reset, but does NOT clear unicode_funcs and replacement_codepoint. */ -void +HB_EXTERN void hb_buffer_clear_contents (hb_buffer_t *buffer); -/* Returns false if allocation failed */ -hb_bool_t +HB_EXTERN hb_bool_t hb_buffer_pre_allocate (hb_buffer_t *buffer, unsigned int size); -/* Returns false if allocation has failed before */ -hb_bool_t +HB_EXTERN hb_bool_t hb_buffer_allocation_successful (hb_buffer_t *buffer); -void +HB_EXTERN void hb_buffer_reverse (hb_buffer_t *buffer); -void +HB_EXTERN void +hb_buffer_reverse_range (hb_buffer_t *buffer, + unsigned int start, unsigned int end); + +HB_EXTERN void hb_buffer_reverse_clusters (hb_buffer_t *buffer); /* Filling the buffer in */ -void +HB_EXTERN void hb_buffer_add (hb_buffer_t *buffer, hb_codepoint_t codepoint, unsigned int cluster); -void +HB_EXTERN void hb_buffer_add_utf8 (hb_buffer_t *buffer, const char *text, int text_length, unsigned int item_offset, int item_length); -void +HB_EXTERN void hb_buffer_add_utf16 (hb_buffer_t *buffer, const uint16_t *text, int text_length, unsigned int item_offset, int item_length); -void +HB_EXTERN void hb_buffer_add_utf32 (hb_buffer_t *buffer, const uint32_t *text, int text_length, unsigned int item_offset, int item_length); -/* Allows only access to first 256 Unicode codepoints. */ -void +HB_EXTERN void hb_buffer_add_latin1 (hb_buffer_t *buffer, const uint8_t *text, int text_length, unsigned int item_offset, int item_length); -/* Like add_utf32 but does NOT check for invalid Unicode codepoints. */ -void +HB_EXTERN void hb_buffer_add_codepoints (hb_buffer_t *buffer, const hb_codepoint_t *text, int text_length, @@ -270,32 +360,25 @@ hb_buffer_add_codepoints (hb_buffer_t *buffer, int item_length); -/* Clears any new items added at the end */ -hb_bool_t +HB_EXTERN hb_bool_t hb_buffer_set_length (hb_buffer_t *buffer, unsigned int length); -/* Return value valid as long as buffer not modified */ -unsigned int +HB_EXTERN unsigned int hb_buffer_get_length (hb_buffer_t *buffer); /* Getting glyphs out of the buffer */ -/* Return value valid as long as buffer not modified */ -hb_glyph_info_t * +HB_EXTERN hb_glyph_info_t * hb_buffer_get_glyph_infos (hb_buffer_t *buffer, unsigned int *length); -/* Return value valid as long as buffer not modified */ -hb_glyph_position_t * +HB_EXTERN hb_glyph_position_t * hb_buffer_get_glyph_positions (hb_buffer_t *buffer, unsigned int *length); -/* Reorders a glyph buffer to have canonical in-cluster glyph order / position. - * The resulting clusters should behave identical to pre-reordering clusters. - * NOTE: This has nothing to do with Unicode normalization. */ -void +HB_EXTERN void hb_buffer_normalize_glyphs (hb_buffer_t *buffer); @@ -303,50 +386,87 @@ hb_buffer_normalize_glyphs (hb_buffer_t *buffer); * Serialize */ +/** + * hb_buffer_serialize_flags_t: + * @HB_BUFFER_SERIALIZE_FLAG_DEFAULT: serialize glyph names, clusters and positions. + * @HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS: do not serialize glyph cluster. + * @HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS: do not serialize glyph position information. + * @HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES: do no serialize glyph name. + * @HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS: serialize glyph extents. + * + * Flags that control what glyph information are serialized in hb_buffer_serialize_glyphs(). + * + * Since: 0.9.20 + */ typedef enum { /*< flags >*/ HB_BUFFER_SERIALIZE_FLAG_DEFAULT = 0x00000000u, HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS = 0x00000001u, HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS = 0x00000002u, - HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES = 0x00000004u + HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES = 0x00000004u, + HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS = 0x00000008u } hb_buffer_serialize_flags_t; +/** + * hb_buffer_serialize_format_t: + * @HB_BUFFER_SERIALIZE_FORMAT_TEXT: a human-readable, plain text format. + * @HB_BUFFER_SERIALIZE_FORMAT_JSON: a machine-readable JSON format. + * @HB_BUFFER_SERIALIZE_FORMAT_INVALID: invalid format. + * + * The buffer serialization and de-serialization format used in + * hb_buffer_serialize_glyphs() and hb_buffer_deserialize_glyphs(). + * + * Since: 0.9.2 + */ typedef enum { HB_BUFFER_SERIALIZE_FORMAT_TEXT = HB_TAG('T','E','X','T'), HB_BUFFER_SERIALIZE_FORMAT_JSON = HB_TAG('J','S','O','N'), HB_BUFFER_SERIALIZE_FORMAT_INVALID = HB_TAG_NONE } hb_buffer_serialize_format_t; -/* len=-1 means str is NUL-terminated. */ -hb_buffer_serialize_format_t +HB_EXTERN hb_buffer_serialize_format_t hb_buffer_serialize_format_from_string (const char *str, int len); -const char * +HB_EXTERN const char * hb_buffer_serialize_format_to_string (hb_buffer_serialize_format_t format); -const char ** +HB_EXTERN const char ** hb_buffer_serialize_list_formats (void); -/* Returns number of items, starting at start, that were serialized. */ -unsigned int +HB_EXTERN unsigned int hb_buffer_serialize_glyphs (hb_buffer_t *buffer, unsigned int start, unsigned int end, char *buf, unsigned int buf_size, - unsigned int *buf_consumed, /* May be NULL */ - hb_font_t *font, /* May be NULL */ + unsigned int *buf_consumed, + hb_font_t *font, hb_buffer_serialize_format_t format, hb_buffer_serialize_flags_t flags); -hb_bool_t +HB_EXTERN hb_bool_t hb_buffer_deserialize_glyphs (hb_buffer_t *buffer, const char *buf, - int buf_len, /* -1 means nul-terminated */ - const char **end_ptr, /* May be NULL */ - hb_font_t *font, /* May be NULL */ + int buf_len, + const char **end_ptr, + hb_font_t *font, hb_buffer_serialize_format_t format); +/* + * Debugging. + */ + +typedef hb_bool_t (*hb_buffer_message_func_t) (hb_buffer_t *buffer, + hb_font_t *font, + const char *message, + void *user_data); + +HB_EXTERN void +hb_buffer_set_message_func (hb_buffer_t *buffer, + hb_buffer_message_func_t func, + void *user_data, hb_destroy_func_t destroy); + + HB_END_DECLS #endif /* HB_BUFFER_H */ diff --git a/src/hb-common.cc b/src/hb-common.cc index 05a1f9c..140ee0a 100644 --- a/src/hb-common.cc +++ b/src/hb-common.cc @@ -57,14 +57,14 @@ _hb_options_init (void) /** * hb_tag_from_string: - * @str: (array length=len): + * @str: (array length=len) (element-type uint8_t): * @len: * * * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_tag_t hb_tag_from_string (const char *str, int len) @@ -92,7 +92,7 @@ hb_tag_from_string (const char *str, int len) * * * - * Since: 1.0 + * Since: 0.9.5 **/ void hb_tag_to_string (hb_tag_t tag, char *buf) @@ -115,14 +115,14 @@ const char direction_strings[][4] = { /** * hb_direction_from_string: - * @str: (array length=len): + * @str: (array length=len) (element-type uint8_t): * @len: * * * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_direction_t hb_direction_from_string (const char *str, int len) @@ -149,7 +149,7 @@ hb_direction_from_string (const char *str, int len) * * Return value: (transfer none): * - * Since: 1.0 + * Since: 0.9.2 **/ const char * hb_direction_to_string (hb_direction_t direction) @@ -179,7 +179,7 @@ static const char canon_map[256] = { 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 0, 0, 0, 0, 0 }; -static hb_bool_t +static bool lang_equal (hb_language_t v1, const void *v2) { @@ -281,46 +281,51 @@ retry: /** * hb_language_from_string: - * @str: (array length=len): - * @len: + * @str: (array length=len) (element-type uint8_t): a string representing + * ISO 639 language code + * @len: length of the @str, or -1 if it is %NULL-terminated. * - * + * Converts @str representing an ISO 639 language code to the corresponding + * #hb_language_t. * - * Return value: + * Return value: (transfer none): + * The #hb_language_t corresponding to the ISO 639 language code. * - * Since: 1.0 + * Since: 0.9.2 **/ hb_language_t hb_language_from_string (const char *str, int len) { - char strbuf[64]; - if (!str || !len || !*str) return HB_LANGUAGE_INVALID; + hb_language_item_t *item = NULL; if (len >= 0) { /* NUL-terminate it. */ + char strbuf[64]; len = MIN (len, (int) sizeof (strbuf) - 1); memcpy (strbuf, str, len); strbuf[len] = '\0'; - str = strbuf; + item = lang_find_or_insert (strbuf); } - - hb_language_item_t *item = lang_find_or_insert (str); + else + item = lang_find_or_insert (str); return likely (item) ? item->lang : HB_LANGUAGE_INVALID; } /** * hb_language_to_string: - * @language: + * @language: an #hb_language_t to convert. * - * + * See hb_language_from_string(). * - * Return value: (transfer none): + * Return value: (transfer none): + * A %NULL-terminated string representing the @language. Must not be freed by + * the caller. * - * Since: 1.0 + * Since: 0.9.2 **/ const char * hb_language_to_string (hb_language_t language) @@ -334,9 +339,9 @@ hb_language_to_string (hb_language_t language) * * * - * Return value: + * Return value: (transfer none): * - * Since: 1.0 + * Since: 0.9.2 **/ hb_language_t hb_language_get_default (void) @@ -357,13 +362,14 @@ hb_language_get_default (void) /** * hb_script_from_iso15924_tag: - * @tag: + * @tag: an #hb_tag_t representing an ISO 15924 tag. * - * + * Converts an ISO 15924 script tag to a corresponding #hb_script_t. * * Return value: + * An #hb_script_t corresponding to the ISO 15924 tag. * - * Since: 1.0 + * Since: 0.9.2 **/ hb_script_t hb_script_from_iso15924_tag (hb_tag_t tag) @@ -401,30 +407,35 @@ hb_script_from_iso15924_tag (hb_tag_t tag) /** * hb_script_from_string: - * @s: (array length=len): - * @len: + * @str: (array length=len) (element-type uint8_t): a string representing an + * ISO 15924 tag. + * @len: length of the @str, or -1 if it is %NULL-terminated. * - * + * Converts a string @str representing an ISO 15924 script tag to a + * corresponding #hb_script_t. Shorthand for hb_tag_from_string() then + * hb_script_from_iso15924_tag(). * * Return value: + * An #hb_script_t corresponding to the ISO 15924 tag. * - * Since: 1.0 + * Since: 0.9.2 **/ hb_script_t -hb_script_from_string (const char *s, int len) +hb_script_from_string (const char *str, int len) { - return hb_script_from_iso15924_tag (hb_tag_from_string (s, len)); + return hb_script_from_iso15924_tag (hb_tag_from_string (str, len)); } /** * hb_script_to_iso15924_tag: - * @script: + * @script: an #hb_script_ to convert. * - * + * See hb_script_from_iso15924_tag(). * - * Return value: + * Return value: + * An #hb_tag_t representing an ISO 15924 script tag. * - * Since: 1.0 + * Since: 0.9.2 **/ hb_tag_t hb_script_to_iso15924_tag (hb_script_t script) @@ -440,7 +451,7 @@ hb_script_to_iso15924_tag (hb_script_t script) * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_direction_t hb_script_get_horizontal_direction (hb_script_t script) @@ -493,6 +504,9 @@ hb_script_get_horizontal_direction (hb_script_t script) case HB_SCRIPT_PALMYRENE: case HB_SCRIPT_PSALTER_PAHLAVI: + /* Unicode-8.0 additions */ + case HB_SCRIPT_OLD_HUNGARIAN: + return HB_DIRECTION_RTL; } @@ -518,7 +532,7 @@ hb_user_data_array_t::set (hb_user_data_key_t *key, } } hb_user_data_item_t item = {key, data, destroy}; - bool ret = !!items.replace_or_insert (item, lock, replace); + bool ret = !!items.replace_or_insert (item, lock, (bool) replace); return ret; } @@ -526,7 +540,7 @@ hb_user_data_array_t::set (hb_user_data_key_t *key, void * hb_user_data_array_t::get (hb_user_data_key_t *key) { - hb_user_data_item_t item = {NULL }; + hb_user_data_item_t item = {NULL, NULL, NULL}; return items.find (key, &item, lock) ? item.data : NULL; } @@ -542,7 +556,7 @@ hb_user_data_array_t::get (hb_user_data_key_t *key) * * Returns library version as three integer components. * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_version (unsigned int *major, @@ -561,7 +575,7 @@ hb_version (unsigned int *major, * * Return value: library version string. * - * Since: 1.0 + * Since: 0.9.2 **/ const char * hb_version_string (void) @@ -579,7 +593,7 @@ hb_version_string (void) * * Return value: * - * Since: 1.0 + * Since: 0.9.30 **/ hb_bool_t hb_version_atleast (unsigned int major, diff --git a/src/hb-common.h b/src/hb-common.h index b6ce3f7..5b0a0b6 100644 --- a/src/hb-common.h +++ b/src/hb-common.h @@ -98,16 +98,22 @@ typedef uint32_t hb_tag_t; #define HB_TAG_MAX_SIGNED HB_TAG(0x7f,0xff,0xff,0xff) /* len=-1 means str is NUL-terminated. */ -hb_tag_t +HB_EXTERN hb_tag_t hb_tag_from_string (const char *str, int len); /* buf should have 4 bytes. */ -void +HB_EXTERN void hb_tag_to_string (hb_tag_t tag, char *buf); -/* hb_direction_t */ - +/** + * hb_direction_t: + * @HB_DIRECTION_INVALID: Initial, unset direction. + * @HB_DIRECTION_LTR: Text is set horizontally from left to right. + * @HB_DIRECTION_RTL: Text is set horizontally from right to left. + * @HB_DIRECTION_TTB: Text is set vertically from top to bottom. + * @HB_DIRECTION_BTT: Text is set vertically from bottom to top. + */ typedef enum { HB_DIRECTION_INVALID = 0, HB_DIRECTION_LTR = 4, @@ -117,10 +123,10 @@ typedef enum { } hb_direction_t; /* len=-1 means str is NUL-terminated */ -hb_direction_t +HB_EXTERN hb_direction_t hb_direction_from_string (const char *str, int len); -const char * +HB_EXTERN const char * hb_direction_to_string (hb_direction_t direction); #define HB_DIRECTION_IS_VALID(dir) ((((unsigned int) (dir)) & ~3U) == 4) @@ -136,16 +142,15 @@ hb_direction_to_string (hb_direction_t direction); typedef const struct hb_language_impl_t *hb_language_t; -/* len=-1 means str is NUL-terminated */ -hb_language_t +HB_EXTERN hb_language_t hb_language_from_string (const char *str, int len); -const char * +HB_EXTERN const char * hb_language_to_string (hb_language_t language); #define HB_LANGUAGE_INVALID ((hb_language_t) NULL) -hb_language_t +HB_EXTERN hb_language_t hb_language_get_default (void); @@ -272,6 +277,9 @@ typedef enum /*6.1*/ HB_SCRIPT_SORA_SOMPENG = HB_TAG ('S','o','r','a'), /*6.1*/ HB_SCRIPT_TAKRI = HB_TAG ('T','a','k','r'), + /* + * Since: 0.9.30 + */ /*7.0*/ HB_SCRIPT_BASSA_VAH = HB_TAG ('B','a','s','s'), /*7.0*/ HB_SCRIPT_CAUCASIAN_ALBANIAN = HB_TAG ('A','g','h','b'), /*7.0*/ HB_SCRIPT_DUPLOYAN = HB_TAG ('D','u','p','l'), @@ -296,6 +304,13 @@ typedef enum /*7.0*/ HB_SCRIPT_TIRHUTA = HB_TAG ('T','i','r','h'), /*7.0*/ HB_SCRIPT_WARANG_CITI = HB_TAG ('W','a','r','a'), + /*8.0*/ HB_SCRIPT_AHOM = HB_TAG ('A','h','o','m'), + /*8.0*/ HB_SCRIPT_ANATOLIAN_HIEROGLYPHS = HB_TAG ('H','l','u','w'), + /*8.0*/ HB_SCRIPT_HATRAN = HB_TAG ('H','a','t','r'), + /*8.0*/ HB_SCRIPT_MULTANI = HB_TAG ('M','u','l','t'), + /*8.0*/ HB_SCRIPT_OLD_HUNGARIAN = HB_TAG ('H','u','n','g'), + /*8.0*/ HB_SCRIPT_SIGNWRITING = HB_TAG ('S','g','n','w'), + /* No script set. */ HB_SCRIPT_INVALID = HB_TAG_NONE, @@ -314,18 +329,16 @@ typedef enum /* Script functions */ -hb_script_t +HB_EXTERN hb_script_t hb_script_from_iso15924_tag (hb_tag_t tag); -/* sugar for tag_from_string() then script_from_iso15924_tag */ -/* len=-1 means s is NUL-terminated */ -hb_script_t -hb_script_from_string (const char *s, int len); +HB_EXTERN hb_script_t +hb_script_from_string (const char *str, int len); -hb_tag_t +HB_EXTERN hb_tag_t hb_script_to_iso15924_tag (hb_script_t script); -hb_direction_t +HB_EXTERN hb_direction_t hb_script_get_horizontal_direction (hb_script_t script); diff --git a/src/hb-coretext.cc b/src/hb-coretext.cc index 4a45175..e64d265 100644 --- a/src/hb-coretext.cc +++ b/src/hb-coretext.cc @@ -27,7 +27,6 @@ */ #define HB_SHAPER coretext -#define hb_coretext_shaper_face_data_t CGFont #include "hb-shaper-impl-private.hh" #include "hb-coretext.h" @@ -78,6 +77,29 @@ HB_SHAPER_DATA_ENSURE_DECLARE(coretext, font) * shaper face data */ +static CTFontDescriptorRef +get_last_resort_font_desc (void) +{ + // TODO Handle allocation failures? + CTFontDescriptorRef last_resort = CTFontDescriptorCreateWithNameAndSize (CFSTR("LastResort"), 0); + CFArrayRef cascade_list = CFArrayCreate (kCFAllocatorDefault, + (const void **) &last_resort, + 1, + &kCFTypeArrayCallBacks); + CFRelease (last_resort); + CFDictionaryRef attributes = CFDictionaryCreate (kCFAllocatorDefault, + (const void **) &kCTFontCascadeListAttribute, + (const void **) &cascade_list, + 1, + &kCFTypeDictionaryKeyCallBacks, + &kCFTypeDictionaryValueCallBacks); + CFRelease (cascade_list); + + CTFontDescriptorRef font_desc = CTFontDescriptorCreateWithAttributes (attributes); + CFRelease (attributes); + return font_desc; +} + static void release_data (void *info, const void *data, size_t size) { @@ -87,14 +109,13 @@ release_data (void *info, const void *data, size_t size) hb_blob_destroy ((hb_blob_t *) info); } -hb_coretext_shaper_face_data_t * -_hb_coretext_shaper_face_data_create (hb_face_t *face) +static CGFontRef +create_cg_font (hb_face_t *face) { - hb_coretext_shaper_face_data_t *data = NULL; - + CGFontRef cg_font = NULL; if (face->destroy == (hb_destroy_func_t) CGFontRelease) { - data = CGFontRetain ((CGFontRef) face->user_data); + cg_font = CGFontRetain ((CGFontRef) face->user_data); } else { @@ -107,13 +128,76 @@ _hb_coretext_shaper_face_data_create (hb_face_t *face) CGDataProviderRef provider = CGDataProviderCreateWithData (blob, blob_data, blob_length, &release_data); if (likely (provider)) { - data = CGFontCreateWithDataProvider (provider); + cg_font = CGFontCreateWithDataProvider (provider); + if (unlikely (!cg_font)) + DEBUG_MSG (CORETEXT, face, "Face CGFontCreateWithDataProvider() failed"); CGDataProviderRelease (provider); } } + return cg_font; +} + +static CTFontRef +create_ct_font (CGFontRef cg_font, CGFloat font_size) +{ + CTFontRef ct_font = CTFontCreateWithGraphicsFont (cg_font, font_size, NULL, NULL); + if (unlikely (!ct_font)) { + DEBUG_MSG (CORETEXT, cg_font, "Font CTFontCreateWithGraphicsFont() failed"); + return NULL; + } + + /* Create font copy with cascade list that has LastResort first; this speeds up CoreText + * font fallback which we don't need anyway. */ + { + CTFontDescriptorRef last_resort_font_desc = get_last_resort_font_desc (); + CTFontRef new_ct_font = CTFontCreateCopyWithAttributes (ct_font, 0.0, NULL, last_resort_font_desc); + CFRelease (last_resort_font_desc); + if (new_ct_font) + { + CFRelease (ct_font); + ct_font = new_ct_font; + } + else + DEBUG_MSG (CORETEXT, ct_font, "Font copy with empty cascade list failed"); + } - if (unlikely (!data)) { - DEBUG_MSG (CORETEXT, face, "Face CGFontCreateWithDataProvider() failed"); + return ct_font; +} + +struct hb_coretext_shaper_face_data_t { + CGFontRef cg_font; + CTFontRef ct_font; +}; + +hb_coretext_shaper_face_data_t * +_hb_coretext_shaper_face_data_create (hb_face_t *face) +{ + hb_coretext_shaper_face_data_t *data = (hb_coretext_shaper_face_data_t *) calloc (1, sizeof (hb_coretext_shaper_face_data_t)); + if (unlikely (!data)) + return NULL; + + data->cg_font = create_cg_font (face); + if (unlikely (!data->cg_font)) + { + DEBUG_MSG (CORETEXT, face, "CGFont creation failed.."); + free (data); + return NULL; + } + + /* We use 36pt size instead of UPEM, because CoreText implements the 'trak' table, + * which can make the font too tight at large sizes. 36pt should be a good semi-neutral + * size. + * + * Since we always create CTFont at a fixed size, our CTFont lives in face_data + * instead of font_data. Which is good, because when people change scale on + * hb_font_t, we won't need to update our CTFont. */ + data->ct_font = create_ct_font (data->cg_font, 36.); + if (unlikely (!data->ct_font)) + { + DEBUG_MSG (CORETEXT, face, "CTFont creation failed."); + CFRelease (data->cg_font); + free (data); + return NULL; } return data; @@ -122,15 +206,20 @@ _hb_coretext_shaper_face_data_create (hb_face_t *face) void _hb_coretext_shaper_face_data_destroy (hb_coretext_shaper_face_data_t *data) { - CFRelease (data); + CFRelease (data->ct_font); + CFRelease (data->cg_font); + free (data); } +/* + * Since: 0.9.10 + */ CGFontRef hb_coretext_face_get_cg_font (hb_face_t *face) { if (unlikely (!hb_coretext_shaper_face_data_ensure (face))) return NULL; hb_coretext_shaper_face_data_t *face_data = HB_SHAPER_DATA_GET (face); - return face_data; + return face_data->cg_font; } @@ -138,48 +227,17 @@ hb_coretext_face_get_cg_font (hb_face_t *face) * shaper font data */ -struct hb_coretext_shaper_font_data_t { - CTFontRef ct_font; - CGFloat x_mult, y_mult; /* From CT space to HB space. */ -}; +struct hb_coretext_shaper_font_data_t {}; hb_coretext_shaper_font_data_t * -_hb_coretext_shaper_font_data_create (hb_font_t *font) +_hb_coretext_shaper_font_data_create (hb_font_t *font HB_UNUSED) { - if (unlikely (!hb_coretext_shaper_face_data_ensure (font->face))) return NULL; - - hb_coretext_shaper_font_data_t *data = (hb_coretext_shaper_font_data_t *) calloc (1, sizeof (hb_coretext_shaper_font_data_t)); - if (unlikely (!data)) - return NULL; - - hb_face_t *face = font->face; - hb_coretext_shaper_face_data_t *face_data = HB_SHAPER_DATA_GET (face); - - /* Choose a CoreText font size and calculate multipliers to convert to HarfBuzz space. */ - CGFloat font_size = 36.; /* Default... */ - /* No idea if the following is even a good idea. */ - if (font->y_ppem) - font_size = font->y_ppem; - - if (font_size < 0) - font_size = -font_size; - data->x_mult = (CGFloat) font->x_scale / font_size; - data->y_mult = (CGFloat) font->y_scale / font_size; - data->ct_font = CTFontCreateWithGraphicsFont (face_data, font_size, NULL, NULL); - if (unlikely (!data->ct_font)) { - DEBUG_MSG (CORETEXT, font, "Font CTFontCreateWithGraphicsFont() failed"); - free (data); - return NULL; - } - - return data; + return (hb_coretext_shaper_font_data_t *) HB_SHAPER_DATA_SUCCEEDED; } void _hb_coretext_shaper_font_data_destroy (hb_coretext_shaper_font_data_t *data) { - CFRelease (data->ct_font); - free (data); } @@ -205,9 +263,10 @@ _hb_coretext_shaper_shape_plan_data_destroy (hb_coretext_shaper_shape_plan_data_ CTFontRef hb_coretext_font_get_ct_font (hb_font_t *font) { - if (unlikely (!hb_coretext_shaper_font_data_ensure (font))) return NULL; - hb_coretext_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font); - return font_data->ct_font; + hb_face_t *face = font->face; + if (unlikely (!hb_coretext_shaper_face_data_ensure (face))) return NULL; + hb_coretext_shaper_face_data_t *face_data = HB_SHAPER_DATA_GET (face); + return face_data->ct_font; } @@ -440,7 +499,10 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan, { hb_face_t *face = font->face; hb_coretext_shaper_face_data_t *face_data = HB_SHAPER_DATA_GET (face); - hb_coretext_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font); + + CGFloat ct_font_size = CTFontGetSize (face_data->ct_font); + CGFloat x_mult = (CGFloat) font->x_scale / ct_font_size; + CGFloat y_mult = (CGFloat) font->y_scale / ct_font_size; /* Attach marks to their bases, to match the 'ot' shaper. * Adapted from hb-ot-shape:hb_form_clusters(). @@ -449,6 +511,7 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan, * B1 M1 B2 M2, and B1-B2 form a ligature, M2's cluster will * continue pointing to B2 even though B2 was merged into B1's * cluster... */ + if (buffer->cluster_level == HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES) { hb_unicode_funcs_t *unicode = buffer->unicode; unsigned int count = buffer->len; @@ -571,7 +634,7 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan, CTFontDescriptorRef font_desc = CTFontDescriptorCreateWithAttributes (attributes); CFRelease (attributes); - range->font = CTFontCreateCopyWithAttributes (font_data->ct_font, 0.0, NULL, font_desc); + range->font = CTFontCreateCopyWithAttributes (face_data->ct_font, 0.0, NULL, font_desc); CFRelease (font_desc); } else @@ -689,7 +752,6 @@ resize_and_retry: scratch += old_scratch_used; scratch_size -= old_scratch_used; } -retry: { string_ref = CFStringCreateWithCharactersNoCopy (NULL, pchars, chars_len, @@ -729,7 +791,7 @@ retry: CFRelease (lang); } CFAttributedStringSetAttribute (attr_string, CFRangeMake (0, chars_len), - kCTFontAttributeName, font_data->ct_font); + kCTFontAttributeName, face_data->ct_font); if (num_features) { @@ -788,6 +850,17 @@ retry: buffer->len = 0; uint32_t status_and = ~0, status_or = 0; double advances_so_far = 0; + /* For right-to-left runs, CoreText returns the glyphs positioned such that + * any trailing whitespace is to the left of (0,0). Adjust coordinate system + * to fix for that. Test with any RTL string with trailing spaces. + * https://code.google.com/p/chromium/issues/detail?id=469028 + */ + if (HB_DIRECTION_IS_BACKWARD (buffer->props.direction)) + { + advances_so_far -= CTLineGetTrailingWhitespaceWidth (line); + if (HB_DIRECTION_IS_VERTICAL (buffer->props.direction)) + advances_so_far = -advances_so_far; + } const CFRange range_all = CFRangeMake (0, 0); @@ -811,7 +884,7 @@ retry: */ CFDictionaryRef attributes = CTRunGetAttributes (run); CTFontRef run_ct_font = static_cast(CFDictionaryGetValue (attributes, kCTFontAttributeName)); - if (!CFEqual (run_ct_font, font_data->ct_font)) + if (!CFEqual (run_ct_font, face_data->ct_font)) { /* The run doesn't use our main font instance. We have to figure out * whether font fallback happened, or this is just CoreText giving us @@ -831,15 +904,11 @@ retry: * backend. * * However, even that wouldn't work if we were passed in the CGFont to - * begin with. - * - * Webkit uses a slightly different approach: it installs LastResort - * as fallback chain, and then checks PS name of used font against - * LastResort. That one is safe for any font except for LastResort, - * as opposed to ours, which can fail if we are using any uninstalled - * font that has the same name as an installed font. + * construct a hb_face to begin with. * * See: http://github.com/behdad/harfbuzz/pull/36 + * + * Also see: https://bugs.chromium.org/p/chromium/issues/detail?id=597098 */ bool matched = false; for (unsigned int i = 0; i < range_records.len; i++) @@ -853,13 +922,13 @@ retry: CGFontRef run_cg_font = CTFontCopyGraphicsFont (run_ct_font, 0); if (run_cg_font) { - matched = CFEqual (run_cg_font, face_data); + matched = CFEqual (run_cg_font, face_data->cg_font); CFRelease (run_cg_font); } } if (!matched) { - CFStringRef font_ps_name = CTFontCopyName (font_data->ct_font, kCTFontPostScriptNameKey); + CFStringRef font_ps_name = CTFontCopyName (face_data->ct_font, kCTFontPostScriptNameKey); CFStringRef run_ps_name = CTFontCopyName (run_ct_font, kCTFontPostScriptNameKey); CFComparisonResult result = CFStringCompare (run_ps_name, font_ps_name, 0); CFRelease (run_ps_name); @@ -904,8 +973,8 @@ retry: info->cluster = log_clusters[j]; info->mask = advance; - info->var1.u32 = x_offset; - info->var2.u32 = y_offset; + info->var1.i32 = x_offset; + info->var2.i32 = y_offset; info++; buffer->len++; @@ -979,7 +1048,6 @@ retry: positions = position_buf; } hb_glyph_info_t *info = run_info; - CGFloat x_mult = font_data->x_mult, y_mult = font_data->y_mult; if (HB_DIRECTION_IS_HORIZONTAL (buffer->props.direction)) { hb_position_t x_offset = (positions[0].x - advances_so_far) * x_mult; @@ -991,8 +1059,8 @@ retry: else /* last glyph */ advance = run_advance - (positions[j].x - positions[0].x); info->mask = advance * x_mult; - info->var1.u32 = x_offset; - info->var2.u32 = positions[j].y * y_mult; + info->var1.i32 = x_offset; + info->var2.i32 = positions[j].y * y_mult; info++; } } @@ -1007,8 +1075,8 @@ retry: else /* last glyph */ advance = run_advance - (positions[j].y - positions[0].y); info->mask = advance * y_mult; - info->var1.u32 = positions[j].x * x_mult; - info->var2.u32 = y_offset; + info->var1.i32 = positions[j].x * x_mult; + info->var2.i32 = y_offset; info++; } } @@ -1023,10 +1091,20 @@ retry: buffer->len += num_glyphs; } - /* Make sure all runs had the expected direction. */ - bool backward = HB_DIRECTION_IS_BACKWARD (buffer->props.direction); - assert (bool (status_and & kCTRunStatusRightToLeft) == backward); - assert (bool (status_or & kCTRunStatusRightToLeft) == backward); + /* Mac OS 10.6 doesn't have kCTTypesetterOptionForcedEmbeddingLevel, + * or if it does, it doesn't resepct it. So we get runs with wrong + * directions. As such, disable the assert... It wouldn't crash, but + * cursoring will be off... + * + * http://crbug.com/419769 + */ + if (0) + { + /* Make sure all runs had the expected direction. */ + bool backward = HB_DIRECTION_IS_BACKWARD (buffer->props.direction); + assert (bool (status_and & kCTRunStatusRightToLeft) == backward); + assert (bool (status_or & kCTRunStatusRightToLeft) == backward); + } buffer->clear_positions (); @@ -1037,16 +1115,16 @@ retry: for (unsigned int i = 0; i < count; i++) { pos->x_advance = info->mask; - pos->x_offset = info->var1.u32; - pos->y_offset = info->var2.u32; + pos->x_offset = info->var1.i32; + pos->y_offset = info->var2.i32; info++, pos++; } else for (unsigned int i = 0; i < count; i++) { pos->y_advance = info->mask; - pos->x_offset = info->var1.u32; - pos->y_offset = info->var2.u32; + pos->x_offset = info->var1.i32; + pos->y_offset = info->var2.i32; info++, pos++; } @@ -1104,10 +1182,6 @@ fail: * AAT shaper */ -HB_SHAPER_DATA_ENSURE_DECLARE(coretext_aat, face) -HB_SHAPER_DATA_ENSURE_DECLARE(coretext_aat, font) - - /* * shaper face data */ diff --git a/src/hb-coretext.h b/src/hb-coretext.h index 25267bc..82066e4 100644 --- a/src/hb-coretext.h +++ b/src/hb-coretext.h @@ -44,14 +44,14 @@ HB_BEGIN_DECLS #define HB_CORETEXT_TAG_MORX HB_TAG('m','o','r','x') -hb_face_t * +HB_EXTERN hb_face_t * hb_coretext_face_create (CGFontRef cg_font); -CGFontRef +HB_EXTERN CGFontRef hb_coretext_face_get_cg_font (hb_face_t *face); -CTFontRef +HB_EXTERN CTFontRef hb_coretext_font_get_ct_font (hb_font_t *font); diff --git a/src/hb-deprecated.h b/src/hb-deprecated.h index 30ae4b1..0398dfa 100644 --- a/src/hb-deprecated.h +++ b/src/hb-deprecated.h @@ -44,6 +44,16 @@ HB_BEGIN_DECLS #define HB_BUFFER_FLAGS_DEFAULT HB_BUFFER_FLAG_DEFAULT #define HB_BUFFER_SERIALIZE_FLAGS_DEFAULT HB_BUFFER_SERIALIZE_FLAG_DEFAULT +typedef hb_bool_t (*hb_font_get_glyph_func_t) (hb_font_t *font, void *font_data, + hb_codepoint_t unicode, hb_codepoint_t variation_selector, + hb_codepoint_t *glyph, + void *user_data); + +HB_EXTERN void +hb_font_funcs_set_glyph_func (hb_font_funcs_t *ffuncs, + hb_font_get_glyph_func_t func, + void *user_data, hb_destroy_func_t destroy); + #endif HB_END_DECLS diff --git a/src/hb-directwrite.cc b/src/hb-directwrite.cc new file mode 100644 index 0000000..96d1870 --- /dev/null +++ b/src/hb-directwrite.cc @@ -0,0 +1,970 @@ +/* + * Copyright © 2015-2016 Ebrahim Byagowi + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + */ + +#define HB_SHAPER directwrite +#include "hb-shaper-impl-private.hh" + +#ifndef HB_DIRECTWRITE_EXPERIMENTAL_JUSTIFICATION + #include +#else + #include +#endif + +#include "hb-directwrite.h" + +#include "hb-open-file-private.hh" +#include "hb-ot-name-table.hh" +#include "hb-ot-tag.h" + + +#ifndef HB_DEBUG_DIRECTWRITE +#define HB_DEBUG_DIRECTWRITE (HB_DEBUG+0) +#endif + +HB_SHAPER_DATA_ENSURE_DECLARE(directwrite, face) +HB_SHAPER_DATA_ENSURE_DECLARE(directwrite, font) + +/* +* shaper face data +*/ + +struct hb_directwrite_shaper_face_data_t { + HANDLE fh; + wchar_t face_name[LF_FACESIZE]; +}; + +/* face_name should point to a wchar_t[LF_FACESIZE] object. */ +static void +_hb_generate_unique_face_name(wchar_t *face_name, unsigned int *plen) +{ + /* We'll create a private name for the font from a UUID using a simple, + * somewhat base64-like encoding scheme */ + const char *enc = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-"; + UUID id; + UuidCreate ((UUID*)&id); + ASSERT_STATIC (2 + 3 * (16 / 2) < LF_FACESIZE); + unsigned int name_str_len = 0; + face_name[name_str_len++] = 'F'; + face_name[name_str_len++] = '_'; + unsigned char *p = (unsigned char *)&id; + for (unsigned int i = 0; i < 16; i += 2) + { + /* Spread the 16 bits from two bytes of the UUID across three chars of face_name, + * using the bits in groups of 5,5,6 to select chars from enc. + * This will generate 24 characters; with the 'F_' prefix we already provided, + * the name will be 26 chars (plus the NUL terminator), so will always fit within + * face_name (LF_FACESIZE = 32). */ + face_name[name_str_len++] = enc[p[i] >> 3]; + face_name[name_str_len++] = enc[((p[i] << 2) | (p[i + 1] >> 6)) & 0x1f]; + face_name[name_str_len++] = enc[p[i + 1] & 0x3f]; + } + face_name[name_str_len] = 0; + if (plen) + *plen = name_str_len; +} + +/* Destroys blob. */ +static hb_blob_t * +_hb_rename_font(hb_blob_t *blob, wchar_t *new_name) +{ + /* Create a copy of the font data, with the 'name' table replaced by a + * table that names the font with our private F_* name created above. + * For simplicity, we just append a new 'name' table and update the + * sfnt directory; the original table is left in place, but unused. + * + * The new table will contain just 5 name IDs: family, style, unique, + * full, PS. All of them point to the same name data with our unique name. + */ + + blob = OT::Sanitizer::sanitize (blob); + + unsigned int length, new_length, name_str_len; + const char *orig_sfnt_data = hb_blob_get_data (blob, &length); + + _hb_generate_unique_face_name (new_name, &name_str_len); + + static const uint16_t name_IDs[] = { 1, 2, 3, 4, 6 }; + + unsigned int name_table_length = OT::name::min_size + + ARRAY_LENGTH(name_IDs) * OT::NameRecord::static_size + + name_str_len * 2; /* for name data in UTF16BE form */ + unsigned int name_table_offset = (length + 3) & ~3; + + new_length = name_table_offset + ((name_table_length + 3) & ~3); + void *new_sfnt_data = calloc(1, new_length); + if (!new_sfnt_data) + { + hb_blob_destroy (blob); + return NULL; + } + + memcpy(new_sfnt_data, orig_sfnt_data, length); + + OT::name &name = OT::StructAtOffset (new_sfnt_data, name_table_offset); + name.format.set (0); + name.count.set (ARRAY_LENGTH (name_IDs)); + name.stringOffset.set (name.get_size()); + for (unsigned int i = 0; i < ARRAY_LENGTH (name_IDs); i++) + { + OT::NameRecord &record = name.nameRecord[i]; + record.platformID.set(3); + record.encodingID.set(1); + record.languageID.set(0x0409u); /* English */ + record.nameID.set(name_IDs[i]); + record.length.set(name_str_len * 2); + record.offset.set(0); + } + + /* Copy string data from new_name, converting wchar_t to UTF16BE. */ + unsigned char *p = &OT::StructAfter(name); + for (unsigned int i = 0; i < name_str_len; i++) + { + *p++ = new_name[i] >> 8; + *p++ = new_name[i] & 0xff; + } + + /* Adjust name table entry to point to new name table */ + const OT::OpenTypeFontFile &file = *(OT::OpenTypeFontFile *) (new_sfnt_data); + unsigned int face_count = file.get_face_count (); + for (unsigned int face_index = 0; face_index < face_count; face_index++) + { + /* Note: doing multiple edits (ie. TTC) can be unsafe. There may be + * toe-stepping. But we don't really care. */ + const OT::OpenTypeFontFace &face = file.get_face (face_index); + unsigned int index; + if (face.find_table_index (HB_OT_TAG_name, &index)) + { + OT::TableRecord &record = const_cast (face.get_table (index)); + record.checkSum.set_for_data (&name, name_table_length); + record.offset.set (name_table_offset); + record.length.set (name_table_length); + } + else if (face_index == 0) /* Fail if first face doesn't have 'name' table. */ + { + free (new_sfnt_data); + hb_blob_destroy (blob); + return NULL; + } + } + + /* The checkSumAdjustment field in the 'head' table is now wrong, + * but that doesn't actually seem to cause any problems so we don't + * bother. */ + + hb_blob_destroy (blob); + return hb_blob_create ((const char *)new_sfnt_data, new_length, + HB_MEMORY_MODE_WRITABLE, NULL, free); +} + +hb_directwrite_shaper_face_data_t * +_hb_directwrite_shaper_face_data_create(hb_face_t *face) +{ + hb_directwrite_shaper_face_data_t *data = + (hb_directwrite_shaper_face_data_t *) calloc (1, sizeof (hb_directwrite_shaper_face_data_t)); + if (unlikely (!data)) + return NULL; + + hb_blob_t *blob = hb_face_reference_blob (face); + if (unlikely (!hb_blob_get_length (blob))) + DEBUG_MSG(DIRECTWRITE, face, "Face has empty blob"); + + blob = _hb_rename_font (blob, data->face_name); + if (unlikely (!blob)) + { + free(data); + return NULL; + } + + DWORD num_fonts_installed; + data->fh = AddFontMemResourceEx ((void *)hb_blob_get_data(blob, NULL), + hb_blob_get_length (blob), + 0, &num_fonts_installed); + if (unlikely (!data->fh)) + { + DEBUG_MSG (DIRECTWRITE, face, "Face AddFontMemResourceEx() failed"); + free (data); + return NULL; + } + + return data; +} + +void +_hb_directwrite_shaper_face_data_destroy(hb_directwrite_shaper_face_data_t *data) +{ + RemoveFontMemResourceEx(data->fh); + free(data); +} + + +/* + * shaper font data + */ + +struct hb_directwrite_shaper_font_data_t { + HDC hdc; + LOGFONTW log_font; + HFONT hfont; +}; + +static bool +populate_log_font (LOGFONTW *lf, + hb_font_t *font) +{ + memset (lf, 0, sizeof (*lf)); + lf->lfHeight = -font->y_scale; + lf->lfCharSet = DEFAULT_CHARSET; + + hb_face_t *face = font->face; + hb_directwrite_shaper_face_data_t *face_data = HB_SHAPER_DATA_GET (face); + + memcpy (lf->lfFaceName, face_data->face_name, sizeof (lf->lfFaceName)); + + return true; +} + +hb_directwrite_shaper_font_data_t * +_hb_directwrite_shaper_font_data_create (hb_font_t *font) +{ + if (unlikely (!hb_directwrite_shaper_face_data_ensure (font->face))) return NULL; + + hb_directwrite_shaper_font_data_t *data = + (hb_directwrite_shaper_font_data_t *) calloc (1, sizeof (hb_directwrite_shaper_font_data_t)); + if (unlikely (!data)) + return NULL; + + data->hdc = GetDC (NULL); + + if (unlikely (!populate_log_font (&data->log_font, font))) + { + DEBUG_MSG (DIRECTWRITE, font, "Font populate_log_font() failed"); + _hb_directwrite_shaper_font_data_destroy (data); + return NULL; + } + + data->hfont = CreateFontIndirectW (&data->log_font); + if (unlikely (!data->hfont)) + { + DEBUG_MSG (DIRECTWRITE, font, "Font CreateFontIndirectW() failed"); + _hb_directwrite_shaper_font_data_destroy (data); + return NULL; + } + + if (!SelectObject (data->hdc, data->hfont)) + { + DEBUG_MSG (DIRECTWRITE, font, "Font SelectObject() failed"); + _hb_directwrite_shaper_font_data_destroy (data); + return NULL; + } + + return data; +} + +void +_hb_directwrite_shaper_font_data_destroy (hb_directwrite_shaper_font_data_t *data) +{ + if (data->hdc) + ReleaseDC (NULL, data->hdc); + if (data->hfont) + DeleteObject (data->hfont); + free (data); +} + +LOGFONTW * +hb_directwrite_font_get_logfontw (hb_font_t *font) +{ + if (unlikely (!hb_directwrite_shaper_font_data_ensure (font))) return NULL; + hb_directwrite_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font); + return &font_data->log_font; +} + +HFONT +hb_directwrite_font_get_hfont (hb_font_t *font) +{ + if (unlikely (!hb_directwrite_shaper_font_data_ensure (font))) return NULL; + hb_directwrite_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font); + return font_data->hfont; +} + + +/* + * shaper shape_plan data + */ + +struct hb_directwrite_shaper_shape_plan_data_t {}; + +hb_directwrite_shaper_shape_plan_data_t * +_hb_directwrite_shaper_shape_plan_data_create (hb_shape_plan_t *shape_plan HB_UNUSED, + const hb_feature_t *user_features HB_UNUSED, + unsigned int num_user_features HB_UNUSED) +{ + return (hb_directwrite_shaper_shape_plan_data_t *) HB_SHAPER_DATA_SUCCEEDED; +} + +void +_hb_directwrite_shaper_shape_plan_data_destroy (hb_directwrite_shaper_shape_plan_data_t *data HB_UNUSED) +{ +} + +// Most of here TextAnalysis is originally written by Bas Schouten for Mozilla project +// but now is relicensed to MIT for HarfBuzz use +class TextAnalysis + : public IDWriteTextAnalysisSource, public IDWriteTextAnalysisSink +{ +public: + + IFACEMETHOD(QueryInterface)(IID const& iid, OUT void** ppObject) { return S_OK; } + IFACEMETHOD_(ULONG, AddRef)() { return 1; } + IFACEMETHOD_(ULONG, Release)() { return 1; } + + // A single contiguous run of characters containing the same analysis + // results. + struct Run + { + uint32_t mTextStart; // starting text position of this run + uint32_t mTextLength; // number of contiguous code units covered + uint32_t mGlyphStart; // starting glyph in the glyphs array + uint32_t mGlyphCount; // number of glyphs associated with this run of + // text + DWRITE_SCRIPT_ANALYSIS mScript; + uint8_t mBidiLevel; + bool mIsSideways; + + inline bool ContainsTextPosition(uint32_t aTextPosition) const + { + return aTextPosition >= mTextStart + && aTextPosition < mTextStart + mTextLength; + } + + Run *nextRun; + }; + +public: + TextAnalysis(const wchar_t* text, + uint32_t textLength, + const wchar_t* localeName, + DWRITE_READING_DIRECTION readingDirection) + : mText(text) + , mTextLength(textLength) + , mLocaleName(localeName) + , mReadingDirection(readingDirection) + , mCurrentRun(NULL) { }; + + ~TextAnalysis() { + // delete runs, except mRunHead which is part of the TextAnalysis object + for (Run *run = mRunHead.nextRun; run;) { + Run *origRun = run; + run = run->nextRun; + free (origRun); + } + } + + STDMETHODIMP GenerateResults(IDWriteTextAnalyzer* textAnalyzer, + Run **runHead) { + // Analyzes the text using the script analyzer and returns + // the result as a series of runs. + + HRESULT hr = S_OK; + + // Initially start out with one result that covers the entire range. + // This result will be subdivided by the analysis processes. + mRunHead.mTextStart = 0; + mRunHead.mTextLength = mTextLength; + mRunHead.mBidiLevel = + (mReadingDirection == DWRITE_READING_DIRECTION_RIGHT_TO_LEFT); + mRunHead.nextRun = NULL; + mCurrentRun = &mRunHead; + + // Call each of the analyzers in sequence, recording their results. + if (SUCCEEDED (hr = textAnalyzer->AnalyzeScript (this, 0, mTextLength, this))) { + *runHead = &mRunHead; + } + + return hr; + } + + // IDWriteTextAnalysisSource implementation + + IFACEMETHODIMP GetTextAtPosition(uint32_t textPosition, + OUT wchar_t const** textString, + OUT uint32_t* textLength) + { + if (textPosition >= mTextLength) { + // No text at this position, valid query though. + *textString = NULL; + *textLength = 0; + } + else { + *textString = mText + textPosition; + *textLength = mTextLength - textPosition; + } + return S_OK; + } + + IFACEMETHODIMP GetTextBeforePosition(uint32_t textPosition, + OUT wchar_t const** textString, + OUT uint32_t* textLength) + { + if (textPosition == 0 || textPosition > mTextLength) { + // Either there is no text before here (== 0), or this + // is an invalid position. The query is considered valid thouh. + *textString = NULL; + *textLength = 0; + } + else { + *textString = mText; + *textLength = textPosition; + } + return S_OK; + } + + IFACEMETHODIMP_(DWRITE_READING_DIRECTION) + GetParagraphReadingDirection() { return mReadingDirection; } + + IFACEMETHODIMP GetLocaleName(uint32_t textPosition, + uint32_t* textLength, + wchar_t const** localeName) { + return S_OK; + } + + IFACEMETHODIMP + GetNumberSubstitution(uint32_t textPosition, + OUT uint32_t* textLength, + OUT IDWriteNumberSubstitution** numberSubstitution) + { + // We do not support number substitution. + *numberSubstitution = NULL; + *textLength = mTextLength - textPosition; + + return S_OK; + } + + // IDWriteTextAnalysisSink implementation + + IFACEMETHODIMP + SetScriptAnalysis(uint32_t textPosition, + uint32_t textLength, + DWRITE_SCRIPT_ANALYSIS const* scriptAnalysis) + { + SetCurrentRun(textPosition); + SplitCurrentRun(textPosition); + while (textLength > 0) { + Run *run = FetchNextRun(&textLength); + run->mScript = *scriptAnalysis; + } + + return S_OK; + } + + IFACEMETHODIMP + SetLineBreakpoints(uint32_t textPosition, + uint32_t textLength, + const DWRITE_LINE_BREAKPOINT* lineBreakpoints) { return S_OK; } + + IFACEMETHODIMP SetBidiLevel(uint32_t textPosition, + uint32_t textLength, + uint8_t explicitLevel, + uint8_t resolvedLevel) { return S_OK; } + + IFACEMETHODIMP + SetNumberSubstitution(uint32_t textPosition, + uint32_t textLength, + IDWriteNumberSubstitution* numberSubstitution) { return S_OK; } + +protected: + Run *FetchNextRun(IN OUT uint32_t* textLength) + { + // Used by the sink setters, this returns a reference to the next run. + // Position and length are adjusted to now point after the current run + // being returned. + + Run *origRun = mCurrentRun; + // Split the tail if needed (the length remaining is less than the + // current run's size). + if (*textLength < mCurrentRun->mTextLength) { + SplitCurrentRun(mCurrentRun->mTextStart + *textLength); + } + else { + // Just advance the current run. + mCurrentRun = mCurrentRun->nextRun; + } + *textLength -= origRun->mTextLength; + + // Return a reference to the run that was just current. + return origRun; + } + + void SetCurrentRun(uint32_t textPosition) + { + // Move the current run to the given position. + // Since the analyzers generally return results in a forward manner, + // this will usually just return early. If not, find the + // corresponding run for the text position. + + if (mCurrentRun && mCurrentRun->ContainsTextPosition(textPosition)) { + return; + } + + for (Run *run = &mRunHead; run; run = run->nextRun) { + if (run->ContainsTextPosition(textPosition)) { + mCurrentRun = run; + return; + } + } + //NS_NOTREACHED("We should always be able to find the text position in one \ + // of our runs"); + } + + void SplitCurrentRun(uint32_t splitPosition) + { + if (!mCurrentRun) { + //NS_ASSERTION(false, "SplitCurrentRun called without current run."); + // Shouldn't be calling this when no current run is set! + return; + } + // Split the current run. + if (splitPosition <= mCurrentRun->mTextStart) { + // No need to split, already the start of a run + // or before it. Usually the first. + return; + } + Run *newRun = (Run*) malloc (sizeof (Run)); + + *newRun = *mCurrentRun; + + // Insert the new run in our linked list. + newRun->nextRun = mCurrentRun->nextRun; + mCurrentRun->nextRun = newRun; + + // Adjust runs' text positions and lengths. + uint32_t splitPoint = splitPosition - mCurrentRun->mTextStart; + newRun->mTextStart += splitPoint; + newRun->mTextLength -= splitPoint; + mCurrentRun->mTextLength = splitPoint; + mCurrentRun = newRun; + } + +protected: + // Input + // (weak references are fine here, since this class is a transient + // stack-based helper that doesn't need to copy data) + uint32_t mTextLength; + const wchar_t* mText; + const wchar_t* mLocaleName; + DWRITE_READING_DIRECTION mReadingDirection; + + // Current processing state. + Run *mCurrentRun; + + // Output is a list of runs starting here + Run mRunHead; +}; + +static inline uint16_t hb_uint16_swap (const uint16_t v) +{ return (v >> 8) | (v << 8); } +static inline uint32_t hb_uint32_swap (const uint32_t v) +{ return (hb_uint16_swap(v) << 16) | hb_uint16_swap(v >> 16); } + +/* + * shaper + */ + +hb_bool_t +_hb_directwrite_shape(hb_shape_plan_t *shape_plan, + hb_font_t *font, + hb_buffer_t *buffer, + const hb_feature_t *features, + unsigned int num_features) +{ + hb_face_t *face = font->face; + hb_directwrite_shaper_face_data_t *face_data = HB_SHAPER_DATA_GET (face); + hb_directwrite_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font); + + // factory probably should be cached +#ifndef HB_DIRECTWRITE_EXPERIMENTAL_JUSTIFICATION + IDWriteFactory* dwriteFactory; +#else + IDWriteFactory1* dwriteFactory; +#endif + DWriteCreateFactory ( + DWRITE_FACTORY_TYPE_SHARED, + __uuidof (IDWriteFactory), + (IUnknown**) &dwriteFactory + ); + + IDWriteGdiInterop *gdiInterop; + dwriteFactory->GetGdiInterop (&gdiInterop); + IDWriteFontFace* fontFace; + gdiInterop->CreateFontFaceFromHdc (font_data->hdc, &fontFace); + +#ifndef HB_DIRECTWRITE_EXPERIMENTAL_JUSTIFICATION + IDWriteTextAnalyzer* analyzer; + dwriteFactory->CreateTextAnalyzer(&analyzer); +#else + IDWriteTextAnalyzer* analyzer0; + dwriteFactory->CreateTextAnalyzer (&analyzer0); + IDWriteTextAnalyzer1* analyzer = (IDWriteTextAnalyzer1*) analyzer0; +#endif + + unsigned int scratch_size; + hb_buffer_t::scratch_buffer_t *scratch = buffer->get_scratch_buffer (&scratch_size); +#define ALLOCATE_ARRAY(Type, name, len) \ + Type *name = (Type *) scratch; \ + { \ + unsigned int _consumed = DIV_CEIL ((len) * sizeof (Type), sizeof (*scratch)); \ + assert (_consumed <= scratch_size); \ + scratch += _consumed; \ + scratch_size -= _consumed; \ + } + +#define utf16_index() var1.u32 + + ALLOCATE_ARRAY(wchar_t, textString, buffer->len * 2); + + unsigned int chars_len = 0; + for (unsigned int i = 0; i < buffer->len; i++) + { + hb_codepoint_t c = buffer->info[i].codepoint; + buffer->info[i].utf16_index() = chars_len; + if (likely(c <= 0xFFFFu)) + textString[chars_len++] = c; + else if (unlikely(c > 0x10FFFFu)) + textString[chars_len++] = 0xFFFDu; + else { + textString[chars_len++] = 0xD800u + ((c - 0x10000u) >> 10); + textString[chars_len++] = 0xDC00u + ((c - 0x10000u) & ((1 << 10) - 1)); + } + } + + ALLOCATE_ARRAY(WORD, log_clusters, chars_len); + // if (num_features) + { + /* Need log_clusters to assign features. */ + chars_len = 0; + for (unsigned int i = 0; i < buffer->len; i++) + { + hb_codepoint_t c = buffer->info[i].codepoint; + unsigned int cluster = buffer->info[i].cluster; + log_clusters[chars_len++] = cluster; + if (hb_in_range(c, 0x10000u, 0x10FFFFu)) + log_clusters[chars_len++] = cluster; /* Surrogates. */ + } + } + + HRESULT hr; + // TODO: Handle TEST_DISABLE_OPTIONAL_LIGATURES + + DWRITE_READING_DIRECTION readingDirection = buffer->props.direction ? + DWRITE_READING_DIRECTION_RIGHT_TO_LEFT : + DWRITE_READING_DIRECTION_LEFT_TO_RIGHT; + + /* + * There's an internal 16-bit limit on some things inside the analyzer, + * but we never attempt to shape a word longer than 64K characters + * in a single gfxShapedWord, so we cannot exceed that limit. + */ + uint32_t textLength = buffer->len; + + TextAnalysis analysis(textString, textLength, NULL, readingDirection); + TextAnalysis::Run *runHead; + hr = analysis.GenerateResults(analyzer, &runHead); + +#define FAIL(...) \ + HB_STMT_START { \ + DEBUG_MSG (DIRECTWRITE, NULL, __VA_ARGS__); \ + return false; \ + } HB_STMT_END; + + if (FAILED (hr)) + { + FAIL ("Analyzer failed to generate results."); + return false; + } + + uint32_t maxGlyphCount = 3 * textLength / 2 + 16; + uint32_t glyphCount; + bool isRightToLeft = HB_DIRECTION_IS_BACKWARD (buffer->props.direction); + + const wchar_t localeName[20] = {0}; + if (buffer->props.language != NULL) + { + mbstowcs ((wchar_t*) localeName, + hb_language_to_string (buffer->props.language), 20); + } + + DWRITE_TYPOGRAPHIC_FEATURES singleFeatures; + singleFeatures.featureCount = num_features; + if (num_features) + { + DWRITE_FONT_FEATURE* dwfeatureArray = (DWRITE_FONT_FEATURE*) + malloc (sizeof (DWRITE_FONT_FEATURE) * num_features); + for (unsigned int i = 0; i < num_features; ++i) + { + dwfeatureArray[i].nameTag = (DWRITE_FONT_FEATURE_TAG) + hb_uint32_swap (features[i].tag); + dwfeatureArray[i].parameter = features[i].value; + } + singleFeatures.features = dwfeatureArray; + } + const DWRITE_TYPOGRAPHIC_FEATURES* dwFeatures = + (const DWRITE_TYPOGRAPHIC_FEATURES*) &singleFeatures; + const uint32_t featureRangeLengths[] = { textLength }; + +retry_getglyphs: + uint16_t* clusterMap = (uint16_t*) malloc (maxGlyphCount * sizeof (uint16_t)); + uint16_t* glyphIndices = (uint16_t*) malloc (maxGlyphCount * sizeof (uint16_t)); + DWRITE_SHAPING_TEXT_PROPERTIES* textProperties = (DWRITE_SHAPING_TEXT_PROPERTIES*) + malloc (maxGlyphCount * sizeof (DWRITE_SHAPING_TEXT_PROPERTIES)); + DWRITE_SHAPING_GLYPH_PROPERTIES* glyphProperties = (DWRITE_SHAPING_GLYPH_PROPERTIES*) + malloc (maxGlyphCount * sizeof (DWRITE_SHAPING_GLYPH_PROPERTIES)); + + hr = analyzer->GetGlyphs (textString, textLength, fontFace, FALSE, + isRightToLeft, &runHead->mScript, localeName, NULL, &dwFeatures, + featureRangeLengths, 1, maxGlyphCount, clusterMap, textProperties, glyphIndices, + glyphProperties, &glyphCount); + + if (unlikely (hr == HRESULT_FROM_WIN32 (ERROR_INSUFFICIENT_BUFFER))) + { + free (clusterMap); + free (glyphIndices); + free (textProperties); + free (glyphProperties); + + maxGlyphCount *= 2; + + goto retry_getglyphs; + } + if (FAILED (hr)) + { + FAIL ("Analyzer failed to get glyphs."); + return false; + } + + float* glyphAdvances = (float*) malloc (maxGlyphCount * sizeof (float)); + DWRITE_GLYPH_OFFSET* glyphOffsets = (DWRITE_GLYPH_OFFSET*) + malloc(maxGlyphCount * sizeof (DWRITE_GLYPH_OFFSET)); + + /* The -2 in the following is to compensate for possible + * alignment needed after the WORD array. sizeof(WORD) == 2. */ + unsigned int glyphs_size = (scratch_size * sizeof(int) - 2) + / (sizeof(WORD) + + sizeof(DWRITE_SHAPING_GLYPH_PROPERTIES) + + sizeof(int) + + sizeof(DWRITE_GLYPH_OFFSET) + + sizeof(uint32_t)); + ALLOCATE_ARRAY (uint32_t, vis_clusters, glyphs_size); + +#undef ALLOCATE_ARRAY + + int fontEmSize = font->face->get_upem(); + if (fontEmSize < 0) + fontEmSize = -fontEmSize; + + if (fontEmSize < 0) + fontEmSize = -fontEmSize; + double x_mult = (double) font->x_scale / fontEmSize; + double y_mult = (double) font->y_scale / fontEmSize; + + hr = analyzer->GetGlyphPlacements (textString, + clusterMap, textProperties, textLength, glyphIndices, + glyphProperties, glyphCount, fontFace, fontEmSize, + FALSE, isRightToLeft, &runHead->mScript, localeName, + &dwFeatures, featureRangeLengths, 1, + glyphAdvances, glyphOffsets); + + if (FAILED (hr)) + { + FAIL ("Analyzer failed to get glyph placements."); + return false; + } + +#ifdef HB_DIRECTWRITE_EXPERIMENTAL_JUSTIFICATION + + DWRITE_JUSTIFICATION_OPPORTUNITY* justificationOpportunities = + (DWRITE_JUSTIFICATION_OPPORTUNITY*) + malloc (maxGlyphCount * sizeof (DWRITE_JUSTIFICATION_OPPORTUNITY)); + hr = analyzer->GetJustificationOpportunities (fontFace, fontEmSize, + runHead->mScript, textLength, glyphCount, textString, clusterMap, + glyphProperties, justificationOpportunities); + + if (FAILED (hr)) + { + FAIL ("Analyzer failed to get justification opportunities."); + return false; + } + + // TODO: get lineWith from somewhere + float lineWidth = 60000; + + float* justifiedGlyphAdvances = + (float*) malloc (maxGlyphCount * sizeof (float)); + DWRITE_GLYPH_OFFSET* justifiedGlyphOffsets = (DWRITE_GLYPH_OFFSET*) + malloc (glyphCount * sizeof (DWRITE_GLYPH_OFFSET)); + hr = analyzer->JustifyGlyphAdvances (lineWidth, glyphCount, justificationOpportunities, + glyphAdvances, glyphOffsets, justifiedGlyphAdvances, justifiedGlyphOffsets); + + if (FAILED (hr)) + { + FAIL ("Analyzer failed to get justified glyph advances."); + return false; + } + + DWRITE_SCRIPT_PROPERTIES scriptProperties; + hr = analyzer->GetScriptProperties (runHead->mScript, &scriptProperties); + if (FAILED (hr)) + { + FAIL ("Analyzer failed to get script properties."); + return false; + } + uint32_t justificationCharacter = scriptProperties.justificationCharacter; + + // if a script justificationCharacter is not space, it can have GetJustifiedGlyphs + if (justificationCharacter != 32) + { +retry_getjustifiedglyphs: + uint16_t* modifiedClusterMap = (uint16_t*) malloc (maxGlyphCount * sizeof (uint16_t)); + uint16_t* modifiedGlyphIndices = (uint16_t*) malloc (maxGlyphCount * sizeof (uint16_t)); + float* modifiedGlyphAdvances = (float*) malloc (maxGlyphCount * sizeof (float)); + DWRITE_GLYPH_OFFSET* modifiedGlyphOffsets = (DWRITE_GLYPH_OFFSET*) + malloc (maxGlyphCount * sizeof (DWRITE_GLYPH_OFFSET)); + uint32_t actualGlyphsCount; + hr = analyzer->GetJustifiedGlyphs (fontFace, fontEmSize, runHead->mScript, + textLength, glyphCount, maxGlyphCount, clusterMap, glyphIndices, + glyphAdvances, justifiedGlyphAdvances, justifiedGlyphOffsets, + glyphProperties, &actualGlyphsCount, modifiedClusterMap, modifiedGlyphIndices, + modifiedGlyphAdvances, modifiedGlyphOffsets); + + if (hr == HRESULT_FROM_WIN32 (ERROR_INSUFFICIENT_BUFFER)) + { + maxGlyphCount = actualGlyphsCount; + free (modifiedClusterMap); + free (modifiedGlyphIndices); + free (modifiedGlyphAdvances); + free (modifiedGlyphOffsets); + + maxGlyphCount = actualGlyphsCount; + + goto retry_getjustifiedglyphs; + } + if (FAILED (hr)) + { + FAIL ("Analyzer failed to get justified glyphs."); + return false; + } + + free (clusterMap); + free (glyphIndices); + free (glyphAdvances); + free (glyphOffsets); + + glyphCount = actualGlyphsCount; + clusterMap = modifiedClusterMap; + glyphIndices = modifiedGlyphIndices; + glyphAdvances = modifiedGlyphAdvances; + glyphOffsets = modifiedGlyphOffsets; + + free(justifiedGlyphAdvances); + free(justifiedGlyphOffsets); + } + else + { + free(glyphAdvances); + free(glyphOffsets); + + glyphAdvances = justifiedGlyphAdvances; + glyphOffsets = justifiedGlyphOffsets; + } + + free(justificationOpportunities); + +#endif + + /* Ok, we've got everything we need, now compose output buffer, + * very, *very*, carefully! */ + + /* Calculate visual-clusters. That's what we ship. */ + for (unsigned int i = 0; i < glyphCount; i++) + vis_clusters[i] = -1; + for (unsigned int i = 0; i < buffer->len; i++) + { + uint32_t *p = + &vis_clusters[log_clusters[buffer->info[i].utf16_index()]]; + *p = MIN (*p, buffer->info[i].cluster); + } + for (unsigned int i = 1; i < glyphCount; i++) + if (vis_clusters[i] == -1) + vis_clusters[i] = vis_clusters[i - 1]; + +#undef utf16_index + + if (unlikely (!buffer->ensure (glyphCount))) + FAIL ("Buffer in error"); + +#undef FAIL + + /* Set glyph infos */ + buffer->len = 0; + for (unsigned int i = 0; i < glyphCount; i++) + { + hb_glyph_info_t *info = &buffer->info[buffer->len++]; + + info->codepoint = glyphIndices[i]; + info->cluster = vis_clusters[i]; + + /* The rest is crap. Let's store position info there for now. */ + info->mask = glyphAdvances[i]; + info->var1.i32 = glyphOffsets[i].advanceOffset; + info->var2.i32 = glyphOffsets[i].ascenderOffset; + } + + /* Set glyph positions */ + buffer->clear_positions (); + for (unsigned int i = 0; i < glyphCount; i++) + { + hb_glyph_info_t *info = &buffer->info[i]; + hb_glyph_position_t *pos = &buffer->pos[i]; + + /* TODO vertical */ + pos->x_advance = x_mult * (int32_t) info->mask; + pos->x_offset = + x_mult * (isRightToLeft ? -info->var1.i32 : info->var1.i32); + pos->y_offset = y_mult * info->var2.i32; + } + + if (isRightToLeft) + hb_buffer_reverse (buffer); + + free (clusterMap); + free (glyphIndices); + free (textProperties); + free (glyphProperties); + free (glyphAdvances); + free (glyphOffsets); + + if (num_features) + free (singleFeatures.features); + + /* Wow, done! */ + return true; +} diff --git a/src/hb-directwrite.h b/src/hb-directwrite.h new file mode 100644 index 0000000..adf33df --- /dev/null +++ b/src/hb-directwrite.h @@ -0,0 +1,34 @@ +/* + * Copyright © 2015 Ebrahim Byagowi + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + */ + +#ifndef HB_DIRECTWRITE_H +#define HB_DIRECTWRITE_H + +#include "hb.h" + +HB_BEGIN_DECLS + +HB_END_DECLS + +#endif /* HB_UNISCRIBE_H */ diff --git a/src/hb-face.cc b/src/hb-face.cc index 9348af7..9effc41 100644 --- a/src/hb-face.cc +++ b/src/hb-face.cc @@ -77,7 +77,7 @@ const hb_face_t _hb_face_nil = { * * Return value: (transfer full) * - * Since: 1.0 + * Since: 0.9.2 **/ hb_face_t * hb_face_create_for_tables (hb_reference_table_func_t reference_table_func, @@ -113,7 +113,7 @@ _hb_face_for_data_closure_create (hb_blob_t *blob, unsigned int index) { hb_face_for_data_closure_t *closure; - closure = (hb_face_for_data_closure_t *) malloc (sizeof (hb_face_for_data_closure_t)); + closure = (hb_face_for_data_closure_t *) calloc (1, sizeof (hb_face_for_data_closure_t)); if (unlikely (!closure)) return NULL; @@ -157,7 +157,7 @@ _hb_face_for_data_reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void * * Return value: (transfer full): * - * Since: 1.0 + * Since: 0.9.2 **/ hb_face_t * hb_face_create (hb_blob_t *blob, @@ -165,8 +165,8 @@ hb_face_create (hb_blob_t *blob, { hb_face_t *face; - if (unlikely (!blob || !hb_blob_get_length (blob))) - return hb_face_get_empty (); + if (unlikely (!blob)) + blob = hb_blob_get_empty (); hb_face_for_data_closure_t *closure = _hb_face_for_data_closure_create (OT::Sanitizer::sanitize (hb_blob_reference (blob)), index); @@ -189,7 +189,7 @@ hb_face_create (hb_blob_t *blob, * * Return value: (transfer full) * - * Since: 1.0 + * Since: 0.9.2 **/ hb_face_t * hb_face_get_empty (void) @@ -206,7 +206,7 @@ hb_face_get_empty (void) * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_face_t * hb_face_reference (hb_face_t *face) @@ -220,7 +220,7 @@ hb_face_reference (hb_face_t *face) * * * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_face_destroy (hb_face_t *face) @@ -257,7 +257,7 @@ hb_face_destroy (hb_face_t *face) * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_bool_t hb_face_set_user_data (hb_face_t *face, @@ -278,7 +278,7 @@ hb_face_set_user_data (hb_face_t *face, * * Return value: (transfer none): * - * Since: 1.0 + * Since: 0.9.2 **/ void * hb_face_get_user_data (hb_face_t *face, @@ -293,7 +293,7 @@ hb_face_get_user_data (hb_face_t *face, * * * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_face_make_immutable (hb_face_t *face) @@ -312,7 +312,7 @@ hb_face_make_immutable (hb_face_t *face) * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_bool_t hb_face_is_immutable (hb_face_t *face) @@ -330,7 +330,7 @@ hb_face_is_immutable (hb_face_t *face) * * Return value: (transfer full): * - * Since: 1.0 + * Since: 0.9.2 **/ hb_blob_t * hb_face_reference_table (hb_face_t *face, @@ -347,7 +347,7 @@ hb_face_reference_table (hb_face_t *face, * * Return value: (transfer full): * - * Since: 1.0 + * Since: 0.9.2 **/ hb_blob_t * hb_face_reference_blob (hb_face_t *face) @@ -362,7 +362,7 @@ hb_face_reference_blob (hb_face_t *face) * * * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_face_set_index (hb_face_t *face, @@ -382,7 +382,7 @@ hb_face_set_index (hb_face_t *face, * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ unsigned int hb_face_get_index (hb_face_t *face) @@ -397,7 +397,7 @@ hb_face_get_index (hb_face_t *face) * * * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_face_set_upem (hb_face_t *face, @@ -417,7 +417,7 @@ hb_face_set_upem (hb_face_t *face, * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ unsigned int hb_face_get_upem (hb_face_t *face) @@ -441,7 +441,7 @@ hb_face_t::load_upem (void) const * * * - * Since: 1.0 + * Since: 0.9.7 **/ void hb_face_set_glyph_count (hb_face_t *face, @@ -461,7 +461,7 @@ hb_face_set_glyph_count (hb_face_t *face, * * Return value: * - * Since: 1.0 + * Since: 0.9.7 **/ unsigned int hb_face_get_glyph_count (hb_face_t *face) diff --git a/src/hb-face.h b/src/hb-face.h index f682c46..91237b7 100644 --- a/src/hb-face.h +++ b/src/hb-face.h @@ -43,28 +43,28 @@ HB_BEGIN_DECLS typedef struct hb_face_t hb_face_t; -hb_face_t * +HB_EXTERN hb_face_t * hb_face_create (hb_blob_t *blob, unsigned int index); typedef hb_blob_t * (*hb_reference_table_func_t) (hb_face_t *face, hb_tag_t tag, void *user_data); /* calls destroy() when not needing user_data anymore */ -hb_face_t * +HB_EXTERN hb_face_t * hb_face_create_for_tables (hb_reference_table_func_t reference_table_func, void *user_data, hb_destroy_func_t destroy); -hb_face_t * +HB_EXTERN hb_face_t * hb_face_get_empty (void); -hb_face_t * +HB_EXTERN hb_face_t * hb_face_reference (hb_face_t *face); -void +HB_EXTERN void hb_face_destroy (hb_face_t *face); -hb_bool_t +HB_EXTERN hb_bool_t hb_face_set_user_data (hb_face_t *face, hb_user_data_key_t *key, void * data, @@ -72,43 +72,43 @@ hb_face_set_user_data (hb_face_t *face, hb_bool_t replace); -void * +HB_EXTERN void * hb_face_get_user_data (hb_face_t *face, hb_user_data_key_t *key); -void +HB_EXTERN void hb_face_make_immutable (hb_face_t *face); -hb_bool_t +HB_EXTERN hb_bool_t hb_face_is_immutable (hb_face_t *face); -hb_blob_t * +HB_EXTERN hb_blob_t * hb_face_reference_table (hb_face_t *face, hb_tag_t tag); -hb_blob_t * +HB_EXTERN hb_blob_t * hb_face_reference_blob (hb_face_t *face); -void +HB_EXTERN void hb_face_set_index (hb_face_t *face, unsigned int index); -unsigned int +HB_EXTERN unsigned int hb_face_get_index (hb_face_t *face); -void +HB_EXTERN void hb_face_set_upem (hb_face_t *face, unsigned int upem); -unsigned int +HB_EXTERN unsigned int hb_face_get_upem (hb_face_t *face); -void +HB_EXTERN void hb_face_set_glyph_count (hb_face_t *face, unsigned int glyph_count); -unsigned int +HB_EXTERN unsigned int hb_face_get_glyph_count (hb_face_t *face); diff --git a/src/hb-fallback-shape.cc b/src/hb-fallback-shape.cc index 9d061a9..e2ad240 100644 --- a/src/hb-fallback-shape.cc +++ b/src/hb-fallback-shape.cc @@ -106,7 +106,7 @@ _hb_fallback_shape (hb_shape_plan_t *shape_plan HB_UNUSED, */ hb_codepoint_t space; - bool has_space = font->get_glyph (' ', 0, &space); + bool has_space = (bool) font->get_nominal_glyph (' ', &space); buffer->clear_positions (); @@ -123,7 +123,7 @@ _hb_fallback_shape (hb_shape_plan_t *shape_plan HB_UNUSED, pos[i].y_advance = 0; continue; } - font->get_glyph (info[i].codepoint, 0, &info[i].codepoint); + font->get_nominal_glyph (info[i].codepoint, &info[i].codepoint); font->get_glyph_advance_for_direction (info[i].codepoint, direction, &pos[i].x_advance, diff --git a/src/hb-font-private.hh b/src/hb-font-private.hh index 33bbf71..8da40a9 100644 --- a/src/hb-font-private.hh +++ b/src/hb-font-private.hh @@ -42,7 +42,10 @@ */ #define HB_FONT_FUNCS_IMPLEMENT_CALLBACKS \ - HB_FONT_FUNC_IMPLEMENT (glyph) \ + HB_FONT_FUNC_IMPLEMENT (font_h_extents) \ + HB_FONT_FUNC_IMPLEMENT (font_v_extents) \ + HB_FONT_FUNC_IMPLEMENT (nominal_glyph) \ + HB_FONT_FUNC_IMPLEMENT (variation_glyph) \ HB_FONT_FUNC_IMPLEMENT (glyph_h_advance) \ HB_FONT_FUNC_IMPLEMENT (glyph_v_advance) \ HB_FONT_FUNC_IMPLEMENT (glyph_h_origin) \ @@ -61,14 +64,6 @@ struct hb_font_funcs_t { hb_bool_t immutable; - /* Don't access these directly. Call hb_font_get_*() instead. */ - - struct { -#define HB_FONT_FUNC_IMPLEMENT(name) hb_font_get_##name##_func_t name; - HB_FONT_FUNCS_IMPLEMENT_CALLBACKS -#undef HB_FONT_FUNC_IMPLEMENT - } get; - struct { #define HB_FONT_FUNC_IMPLEMENT(name) void *name; HB_FONT_FUNCS_IMPLEMENT_CALLBACKS @@ -80,6 +75,16 @@ struct hb_font_funcs_t { HB_FONT_FUNCS_IMPLEMENT_CALLBACKS #undef HB_FONT_FUNC_IMPLEMENT } destroy; + + /* Don't access these directly. Call font->get_*() instead. */ + union get_t { + struct get_funcs_t { +#define HB_FONT_FUNC_IMPLEMENT(name) hb_font_get_##name##_func_t name; + HB_FONT_FUNCS_IMPLEMENT_CALLBACKS +#undef HB_FONT_FUNC_IMPLEMENT + } f; + void (*array[VAR]) (void); + } get; }; @@ -144,95 +149,133 @@ struct hb_font_t { /* Public getters */ - inline hb_bool_t has_glyph (hb_codepoint_t unicode) + HB_INTERNAL bool has_func (unsigned int i); + + /* has_* ... */ +#define HB_FONT_FUNC_IMPLEMENT(name) \ + bool \ + has_##name##_func (void) \ + { \ + hb_font_funcs_t *funcs = this->klass; \ + unsigned int i = offsetof (hb_font_funcs_t::get_t::get_funcs_t, name) / sizeof (funcs->get.array[0]); \ + return has_func (i); \ + } + HB_FONT_FUNCS_IMPLEMENT_CALLBACKS +#undef HB_FONT_FUNC_IMPLEMENT + + inline hb_bool_t get_font_h_extents (hb_font_extents_t *extents) + { + memset (extents, 0, sizeof (*extents)); + return klass->get.f.font_h_extents (this, user_data, + extents, + klass->user_data.font_h_extents); + } + inline hb_bool_t get_font_v_extents (hb_font_extents_t *extents) + { + memset (extents, 0, sizeof (*extents)); + return klass->get.f.font_v_extents (this, user_data, + extents, + klass->user_data.font_v_extents); + } + + inline bool has_glyph (hb_codepoint_t unicode) { hb_codepoint_t glyph; - return get_glyph (unicode, 0, &glyph); + return get_nominal_glyph (unicode, &glyph); } - inline hb_bool_t get_glyph (hb_codepoint_t unicode, hb_codepoint_t variation_selector, - hb_codepoint_t *glyph) + inline hb_bool_t get_nominal_glyph (hb_codepoint_t unicode, + hb_codepoint_t *glyph) + { + *glyph = 0; + return klass->get.f.nominal_glyph (this, user_data, + unicode, glyph, + klass->user_data.nominal_glyph); + } + + inline hb_bool_t get_variation_glyph (hb_codepoint_t unicode, hb_codepoint_t variation_selector, + hb_codepoint_t *glyph) { *glyph = 0; - return klass->get.glyph (this, user_data, - unicode, variation_selector, glyph, - klass->user_data.glyph); + return klass->get.f.variation_glyph (this, user_data, + unicode, variation_selector, glyph, + klass->user_data.variation_glyph); } inline hb_position_t get_glyph_h_advance (hb_codepoint_t glyph) { - return klass->get.glyph_h_advance (this, user_data, - glyph, - klass->user_data.glyph_h_advance); + return klass->get.f.glyph_h_advance (this, user_data, + glyph, + klass->user_data.glyph_h_advance); } inline hb_position_t get_glyph_v_advance (hb_codepoint_t glyph) { - return klass->get.glyph_v_advance (this, user_data, - glyph, - klass->user_data.glyph_v_advance); + return klass->get.f.glyph_v_advance (this, user_data, + glyph, + klass->user_data.glyph_v_advance); } inline hb_bool_t get_glyph_h_origin (hb_codepoint_t glyph, hb_position_t *x, hb_position_t *y) { *x = *y = 0; - return klass->get.glyph_h_origin (this, user_data, - glyph, x, y, - klass->user_data.glyph_h_origin); + return klass->get.f.glyph_h_origin (this, user_data, + glyph, x, y, + klass->user_data.glyph_h_origin); } inline hb_bool_t get_glyph_v_origin (hb_codepoint_t glyph, hb_position_t *x, hb_position_t *y) { *x = *y = 0; - return klass->get.glyph_v_origin (this, user_data, - glyph, x, y, - klass->user_data.glyph_v_origin); + return klass->get.f.glyph_v_origin (this, user_data, + glyph, x, y, + klass->user_data.glyph_v_origin); } inline hb_position_t get_glyph_h_kerning (hb_codepoint_t left_glyph, hb_codepoint_t right_glyph) { - return klass->get.glyph_h_kerning (this, user_data, - left_glyph, right_glyph, - klass->user_data.glyph_h_kerning); + return klass->get.f.glyph_h_kerning (this, user_data, + left_glyph, right_glyph, + klass->user_data.glyph_h_kerning); } inline hb_position_t get_glyph_v_kerning (hb_codepoint_t top_glyph, hb_codepoint_t bottom_glyph) { - return klass->get.glyph_v_kerning (this, user_data, - top_glyph, bottom_glyph, - klass->user_data.glyph_v_kerning); + return klass->get.f.glyph_v_kerning (this, user_data, + top_glyph, bottom_glyph, + klass->user_data.glyph_v_kerning); } inline hb_bool_t get_glyph_extents (hb_codepoint_t glyph, hb_glyph_extents_t *extents) { memset (extents, 0, sizeof (*extents)); - return klass->get.glyph_extents (this, user_data, - glyph, - extents, - klass->user_data.glyph_extents); + return klass->get.f.glyph_extents (this, user_data, + glyph, + extents, + klass->user_data.glyph_extents); } inline hb_bool_t get_glyph_contour_point (hb_codepoint_t glyph, unsigned int point_index, hb_position_t *x, hb_position_t *y) { *x = *y = 0; - return klass->get.glyph_contour_point (this, user_data, - glyph, point_index, - x, y, - klass->user_data.glyph_contour_point); + return klass->get.f.glyph_contour_point (this, user_data, + glyph, point_index, + x, y, + klass->user_data.glyph_contour_point); } inline hb_bool_t get_glyph_name (hb_codepoint_t glyph, char *name, unsigned int size) { if (size) *name = '\0'; - return klass->get.glyph_name (this, user_data, - glyph, - name, size, - klass->user_data.glyph_name); + return klass->get.f.glyph_name (this, user_data, + glyph, + name, size, + klass->user_data.glyph_name); } inline hb_bool_t get_glyph_from_name (const char *name, int len, /* -1 means nul-terminated */ @@ -240,15 +283,35 @@ struct hb_font_t { { *glyph = 0; if (len == -1) len = strlen (name); - return klass->get.glyph_from_name (this, user_data, - name, len, - glyph, - klass->user_data.glyph_from_name); + return klass->get.f.glyph_from_name (this, user_data, + name, len, + glyph, + klass->user_data.glyph_from_name); } /* A bit higher-level, and with fallback */ + inline void get_extents_for_direction (hb_direction_t direction, + hb_font_extents_t *extents) + { + if (likely (HB_DIRECTION_IS_HORIZONTAL (direction))) { + if (!get_font_h_extents (extents)) + { + extents->ascender = y_scale * .8; + extents->descender = y_scale - extents->ascender; + extents->line_gap = 0; + } + } else { + if (!get_font_v_extents (extents)) + { + extents->ascender = x_scale / 2; + extents->descender = x_scale - extents->ascender; + extents->line_gap = 0; + } + } + } + inline void get_glyph_advance_for_direction (hb_codepoint_t glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y) @@ -268,7 +331,7 @@ struct hb_font_t { { *x = get_glyph_h_advance (glyph) / 2; - /* TODO use font_metics.ascent */ + /* TODO use font_extents.ascender */ *y = y_scale; } @@ -298,6 +361,26 @@ struct hb_font_t { } } + inline void add_glyph_h_origin (hb_codepoint_t glyph, + hb_position_t *x, hb_position_t *y) + { + hb_position_t origin_x, origin_y; + + get_glyph_h_origin (glyph, &origin_x, &origin_y); + + *x += origin_x; + *y += origin_y; + } + inline void add_glyph_v_origin (hb_codepoint_t glyph, + hb_position_t *x, hb_position_t *y) + { + hb_position_t origin_x, origin_y; + + get_glyph_v_origin (glyph, &origin_x, &origin_y); + + *x += origin_x; + *y += origin_y; + } inline void add_glyph_origin_for_direction (hb_codepoint_t glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y) @@ -310,6 +393,26 @@ struct hb_font_t { *y += origin_y; } + inline void subtract_glyph_h_origin (hb_codepoint_t glyph, + hb_position_t *x, hb_position_t *y) + { + hb_position_t origin_x, origin_y; + + get_glyph_h_origin (glyph, &origin_x, &origin_y); + + *x -= origin_x; + *y -= origin_y; + } + inline void subtract_glyph_v_origin (hb_codepoint_t glyph, + hb_position_t *x, hb_position_t *y) + { + hb_position_t origin_x, origin_y; + + get_glyph_v_origin (glyph, &origin_x, &origin_y); + + *x -= origin_x; + *y -= origin_y; + } inline void subtract_glyph_origin_for_direction (hb_codepoint_t glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y) @@ -394,7 +497,7 @@ struct hb_font_t { hb_codepoint_t unichar; if (0 == strncmp (s, "uni", 3) && hb_codepoint_parse (s + 3, len - 3, 16, &unichar) && - get_glyph (unichar, 0, glyph)) + get_nominal_glyph (unichar, glyph)) return true; } diff --git a/src/hb-font.cc b/src/hb-font.cc index 4364ca7..6a4823a 100644 --- a/src/hb-font.cc +++ b/src/hb-font.cc @@ -45,130 +45,245 @@ */ static hb_bool_t -hb_font_get_glyph_nil (hb_font_t *font, - void *font_data HB_UNUSED, - hb_codepoint_t unicode, - hb_codepoint_t variation_selector, - hb_codepoint_t *glyph, - void *user_data HB_UNUSED) +hb_font_get_font_h_extents_nil (hb_font_t *font, + void *font_data HB_UNUSED, + hb_font_extents_t *metrics, + void *user_data HB_UNUSED) { - if (font->parent) - return font->parent->get_glyph (unicode, variation_selector, glyph); + memset (metrics, 0, sizeof (*metrics)); + return false; +} +static hb_bool_t +hb_font_get_font_h_extents_parent (hb_font_t *font, + void *font_data HB_UNUSED, + hb_font_extents_t *metrics, + void *user_data HB_UNUSED) +{ + hb_bool_t ret = font->parent->get_font_h_extents (metrics); + if (ret) { + metrics->ascender = font->parent_scale_y_distance (metrics->ascender); + metrics->descender = font->parent_scale_y_distance (metrics->descender); + metrics->line_gap = font->parent_scale_y_distance (metrics->line_gap); + } + return ret; +} +static hb_bool_t +hb_font_get_font_v_extents_nil (hb_font_t *font, + void *font_data HB_UNUSED, + hb_font_extents_t *metrics, + void *user_data HB_UNUSED) +{ + memset (metrics, 0, sizeof (*metrics)); + return false; +} +static hb_bool_t +hb_font_get_font_v_extents_parent (hb_font_t *font, + void *font_data HB_UNUSED, + hb_font_extents_t *metrics, + void *user_data HB_UNUSED) +{ + hb_bool_t ret = font->parent->get_font_v_extents (metrics); + if (ret) { + metrics->ascender = font->parent_scale_x_distance (metrics->ascender); + metrics->descender = font->parent_scale_x_distance (metrics->descender); + metrics->line_gap = font->parent_scale_x_distance (metrics->line_gap); + } + return ret; +} + +static hb_bool_t +hb_font_get_nominal_glyph_nil (hb_font_t *font HB_UNUSED, + void *font_data HB_UNUSED, + hb_codepoint_t unicode, + hb_codepoint_t *glyph, + void *user_data HB_UNUSED) +{ *glyph = 0; return false; } +static hb_bool_t +hb_font_get_nominal_glyph_parent (hb_font_t *font, + void *font_data HB_UNUSED, + hb_codepoint_t unicode, + hb_codepoint_t *glyph, + void *user_data HB_UNUSED) +{ + return font->parent->get_nominal_glyph (unicode, glyph); +} + +static hb_bool_t +hb_font_get_variation_glyph_nil (hb_font_t *font HB_UNUSED, + void *font_data HB_UNUSED, + hb_codepoint_t unicode, + hb_codepoint_t variation_selector, + hb_codepoint_t *glyph, + void *user_data HB_UNUSED) +{ + *glyph = 0; + return false; +} +static hb_bool_t +hb_font_get_variation_glyph_parent (hb_font_t *font, + void *font_data HB_UNUSED, + hb_codepoint_t unicode, + hb_codepoint_t variation_selector, + hb_codepoint_t *glyph, + void *user_data HB_UNUSED) +{ + return font->parent->get_variation_glyph (unicode, variation_selector, glyph); +} + static hb_position_t -hb_font_get_glyph_h_advance_nil (hb_font_t *font, +hb_font_get_glyph_h_advance_nil (hb_font_t *font HB_UNUSED, void *font_data HB_UNUSED, hb_codepoint_t glyph, void *user_data HB_UNUSED) { - if (font->parent) - return font->parent_scale_x_distance (font->parent->get_glyph_h_advance (glyph)); - return font->x_scale; } +static hb_position_t +hb_font_get_glyph_h_advance_parent (hb_font_t *font, + void *font_data HB_UNUSED, + hb_codepoint_t glyph, + void *user_data HB_UNUSED) +{ + return font->parent_scale_x_distance (font->parent->get_glyph_h_advance (glyph)); +} static hb_position_t -hb_font_get_glyph_v_advance_nil (hb_font_t *font, +hb_font_get_glyph_v_advance_nil (hb_font_t *font HB_UNUSED, void *font_data HB_UNUSED, hb_codepoint_t glyph, void *user_data HB_UNUSED) { - if (font->parent) - return font->parent_scale_y_distance (font->parent->get_glyph_v_advance (glyph)); - return font->y_scale; } +static hb_position_t +hb_font_get_glyph_v_advance_parent (hb_font_t *font, + void *font_data HB_UNUSED, + hb_codepoint_t glyph, + void *user_data HB_UNUSED) +{ + return font->parent_scale_y_distance (font->parent->get_glyph_v_advance (glyph)); +} static hb_bool_t -hb_font_get_glyph_h_origin_nil (hb_font_t *font, +hb_font_get_glyph_h_origin_nil (hb_font_t *font HB_UNUSED, void *font_data HB_UNUSED, hb_codepoint_t glyph, hb_position_t *x, hb_position_t *y, void *user_data HB_UNUSED) { - if (font->parent) { - hb_bool_t ret = font->parent->get_glyph_h_origin (glyph, x, y); - if (ret) - font->parent_scale_position (x, y); - return ret; - } - *x = *y = 0; - return false; + return true; +} +static hb_bool_t +hb_font_get_glyph_h_origin_parent (hb_font_t *font, + void *font_data HB_UNUSED, + hb_codepoint_t glyph, + hb_position_t *x, + hb_position_t *y, + void *user_data HB_UNUSED) +{ + hb_bool_t ret = font->parent->get_glyph_h_origin (glyph, x, y); + if (ret) + font->parent_scale_position (x, y); + return ret; } static hb_bool_t -hb_font_get_glyph_v_origin_nil (hb_font_t *font, +hb_font_get_glyph_v_origin_nil (hb_font_t *font HB_UNUSED, void *font_data HB_UNUSED, hb_codepoint_t glyph, hb_position_t *x, hb_position_t *y, void *user_data HB_UNUSED) { - if (font->parent) { - hb_bool_t ret = font->parent->get_glyph_v_origin (glyph, x, y); - if (ret) - font->parent_scale_position (x, y); - return ret; - } - *x = *y = 0; return false; } +static hb_bool_t +hb_font_get_glyph_v_origin_parent (hb_font_t *font, + void *font_data HB_UNUSED, + hb_codepoint_t glyph, + hb_position_t *x, + hb_position_t *y, + void *user_data HB_UNUSED) +{ + hb_bool_t ret = font->parent->get_glyph_v_origin (glyph, x, y); + if (ret) + font->parent_scale_position (x, y); + return ret; +} static hb_position_t -hb_font_get_glyph_h_kerning_nil (hb_font_t *font, +hb_font_get_glyph_h_kerning_nil (hb_font_t *font HB_UNUSED, void *font_data HB_UNUSED, hb_codepoint_t left_glyph, hb_codepoint_t right_glyph, void *user_data HB_UNUSED) { - if (font->parent) - return font->parent_scale_x_distance (font->parent->get_glyph_h_kerning (left_glyph, right_glyph)); - return 0; } +static hb_position_t +hb_font_get_glyph_h_kerning_parent (hb_font_t *font, + void *font_data HB_UNUSED, + hb_codepoint_t left_glyph, + hb_codepoint_t right_glyph, + void *user_data HB_UNUSED) +{ + return font->parent_scale_x_distance (font->parent->get_glyph_h_kerning (left_glyph, right_glyph)); +} static hb_position_t -hb_font_get_glyph_v_kerning_nil (hb_font_t *font, +hb_font_get_glyph_v_kerning_nil (hb_font_t *font HB_UNUSED, void *font_data HB_UNUSED, hb_codepoint_t top_glyph, hb_codepoint_t bottom_glyph, void *user_data HB_UNUSED) { - if (font->parent) - return font->parent_scale_y_distance (font->parent->get_glyph_v_kerning (top_glyph, bottom_glyph)); - return 0; } +static hb_position_t +hb_font_get_glyph_v_kerning_parent (hb_font_t *font, + void *font_data HB_UNUSED, + hb_codepoint_t top_glyph, + hb_codepoint_t bottom_glyph, + void *user_data HB_UNUSED) +{ + return font->parent_scale_y_distance (font->parent->get_glyph_v_kerning (top_glyph, bottom_glyph)); +} static hb_bool_t -hb_font_get_glyph_extents_nil (hb_font_t *font, +hb_font_get_glyph_extents_nil (hb_font_t *font HB_UNUSED, void *font_data HB_UNUSED, hb_codepoint_t glyph, hb_glyph_extents_t *extents, void *user_data HB_UNUSED) { - if (font->parent) { - hb_bool_t ret = font->parent->get_glyph_extents (glyph, extents); - if (ret) { - font->parent_scale_position (&extents->x_bearing, &extents->y_bearing); - font->parent_scale_distance (&extents->width, &extents->height); - } - return ret; - } - memset (extents, 0, sizeof (*extents)); return false; } +static hb_bool_t +hb_font_get_glyph_extents_parent (hb_font_t *font, + void *font_data HB_UNUSED, + hb_codepoint_t glyph, + hb_glyph_extents_t *extents, + void *user_data HB_UNUSED) +{ + hb_bool_t ret = font->parent->get_glyph_extents (glyph, extents); + if (ret) { + font->parent_scale_position (&extents->x_bearing, &extents->y_bearing); + font->parent_scale_distance (&extents->width, &extents->height); + } + return ret; +} static hb_bool_t -hb_font_get_glyph_contour_point_nil (hb_font_t *font, +hb_font_get_glyph_contour_point_nil (hb_font_t *font HB_UNUSED, void *font_data HB_UNUSED, hb_codepoint_t glyph, unsigned int point_index, @@ -176,45 +291,63 @@ hb_font_get_glyph_contour_point_nil (hb_font_t *font, hb_position_t *y, void *user_data HB_UNUSED) { - if (font->parent) { - hb_bool_t ret = font->parent->get_glyph_contour_point (glyph, point_index, x, y); - if (ret) - font->parent_scale_position (x, y); - return ret; - } - *x = *y = 0; return false; } +static hb_bool_t +hb_font_get_glyph_contour_point_parent (hb_font_t *font, + void *font_data HB_UNUSED, + hb_codepoint_t glyph, + unsigned int point_index, + hb_position_t *x, + hb_position_t *y, + void *user_data HB_UNUSED) +{ + hb_bool_t ret = font->parent->get_glyph_contour_point (glyph, point_index, x, y); + if (ret) + font->parent_scale_position (x, y); + return ret; +} static hb_bool_t -hb_font_get_glyph_name_nil (hb_font_t *font, +hb_font_get_glyph_name_nil (hb_font_t *font HB_UNUSED, void *font_data HB_UNUSED, hb_codepoint_t glyph, char *name, unsigned int size, void *user_data HB_UNUSED) { - if (font->parent) - return font->parent->get_glyph_name (glyph, name, size); - if (size) *name = '\0'; return false; } +static hb_bool_t +hb_font_get_glyph_name_parent (hb_font_t *font, + void *font_data HB_UNUSED, + hb_codepoint_t glyph, + char *name, unsigned int size, + void *user_data HB_UNUSED) +{ + return font->parent->get_glyph_name (glyph, name, size); +} static hb_bool_t -hb_font_get_glyph_from_name_nil (hb_font_t *font, +hb_font_get_glyph_from_name_nil (hb_font_t *font HB_UNUSED, void *font_data HB_UNUSED, const char *name, int len, /* -1 means nul-terminated */ hb_codepoint_t *glyph, void *user_data HB_UNUSED) { - if (font->parent) - return font->parent->get_glyph_from_name (name, len, glyph); - *glyph = 0; return false; } - +static hb_bool_t +hb_font_get_glyph_from_name_parent (hb_font_t *font, + void *font_data HB_UNUSED, + const char *name, int len, /* -1 means nul-terminated */ + hb_codepoint_t *glyph, + void *user_data HB_UNUSED) +{ + return font->parent->get_glyph_from_name (name, len, glyph); +} static const hb_font_funcs_t _hb_font_funcs_nil = { HB_OBJECT_HEADER_STATIC, @@ -222,9 +355,44 @@ static const hb_font_funcs_t _hb_font_funcs_nil = { true, /* immutable */ { +#define HB_FONT_FUNC_IMPLEMENT(name) NULL, + HB_FONT_FUNCS_IMPLEMENT_CALLBACKS +#undef HB_FONT_FUNC_IMPLEMENT + }, + { +#define HB_FONT_FUNC_IMPLEMENT(name) NULL, + HB_FONT_FUNCS_IMPLEMENT_CALLBACKS +#undef HB_FONT_FUNC_IMPLEMENT + }, + { + { #define HB_FONT_FUNC_IMPLEMENT(name) hb_font_get_##name##_nil, + HB_FONT_FUNCS_IMPLEMENT_CALLBACKS +#undef HB_FONT_FUNC_IMPLEMENT + } + } +}; +static const hb_font_funcs_t _hb_font_funcs_parent = { + HB_OBJECT_HEADER_STATIC, + + true, /* immutable */ + + { +#define HB_FONT_FUNC_IMPLEMENT(name) NULL, HB_FONT_FUNCS_IMPLEMENT_CALLBACKS #undef HB_FONT_FUNC_IMPLEMENT + }, + { +#define HB_FONT_FUNC_IMPLEMENT(name) NULL, + HB_FONT_FUNCS_IMPLEMENT_CALLBACKS +#undef HB_FONT_FUNC_IMPLEMENT + }, + { + { +#define HB_FONT_FUNC_IMPLEMENT(name) hb_font_get_##name##_parent, + HB_FONT_FUNCS_IMPLEMENT_CALLBACKS +#undef HB_FONT_FUNC_IMPLEMENT + } } }; @@ -236,7 +404,7 @@ static const hb_font_funcs_t _hb_font_funcs_nil = { * * Return value: (transfer full): * - * Since: 1.0 + * Since: 0.9.2 **/ hb_font_funcs_t * hb_font_funcs_create (void) @@ -246,7 +414,7 @@ hb_font_funcs_create (void) if (!(ffuncs = hb_object_create ())) return hb_font_funcs_get_empty (); - ffuncs->get = _hb_font_funcs_nil.get; + ffuncs->get = _hb_font_funcs_parent.get; return ffuncs; } @@ -258,12 +426,12 @@ hb_font_funcs_create (void) * * Return value: (transfer full): * - * Since: 1.0 + * Since: 0.9.2 **/ hb_font_funcs_t * hb_font_funcs_get_empty (void) { - return const_cast (&_hb_font_funcs_nil); + return const_cast (&_hb_font_funcs_parent); } /** @@ -274,7 +442,7 @@ hb_font_funcs_get_empty (void) * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_font_funcs_t * hb_font_funcs_reference (hb_font_funcs_t *ffuncs) @@ -288,7 +456,7 @@ hb_font_funcs_reference (hb_font_funcs_t *ffuncs) * * * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_font_funcs_destroy (hb_font_funcs_t *ffuncs) @@ -315,7 +483,7 @@ hb_font_funcs_destroy (hb_font_funcs_t *ffuncs) * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_bool_t hb_font_funcs_set_user_data (hb_font_funcs_t *ffuncs, @@ -336,7 +504,7 @@ hb_font_funcs_set_user_data (hb_font_funcs_t *ffuncs, * * Return value: (transfer none): * - * Since: 1.0 + * Since: 0.9.2 **/ void * hb_font_funcs_get_user_data (hb_font_funcs_t *ffuncs, @@ -352,7 +520,7 @@ hb_font_funcs_get_user_data (hb_font_funcs_t *ffuncs, * * * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_font_funcs_make_immutable (hb_font_funcs_t *ffuncs) @@ -371,7 +539,7 @@ hb_font_funcs_make_immutable (hb_font_funcs_t *ffuncs) * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_bool_t hb_font_funcs_is_immutable (hb_font_funcs_t *ffuncs) @@ -398,11 +566,11 @@ hb_font_funcs_set_##name##_func (hb_font_funcs_t *ffuncs, \ ffuncs->destroy.name (ffuncs->user_data.name); \ \ if (func) { \ - ffuncs->get.name = func; \ + ffuncs->get.f.name = func; \ ffuncs->user_data.name = user_data; \ ffuncs->destroy.name = destroy; \ } else { \ - ffuncs->get.name = hb_font_get_##name##_nil; \ + ffuncs->get.f.name = hb_font_get_##name##_parent; \ ffuncs->user_data.name = NULL; \ ffuncs->destroy.name = NULL; \ } \ @@ -411,10 +579,53 @@ hb_font_funcs_set_##name##_func (hb_font_funcs_t *ffuncs, \ HB_FONT_FUNCS_IMPLEMENT_CALLBACKS #undef HB_FONT_FUNC_IMPLEMENT +bool +hb_font_t::has_func (unsigned int i) +{ + if (parent && parent != hb_font_get_empty () && parent->has_func (i)) + return true; + return this->klass->get.array[i] != _hb_font_funcs_parent.get.array[i]; +} /* Public getters */ /** + * hb_font_get_h_extents: + * @font: a font. + * @extents: (out): + * + * + * + * Return value: + * + * Since: 1.1.3 + **/ +hb_bool_t +hb_font_get_h_extents (hb_font_t *font, + hb_font_extents_t *extents) +{ + return font->get_font_h_extents (extents); +} + +/** + * hb_font_get_v_extents: + * @font: a font. + * @extents: (out): + * + * + * + * Return value: + * + * Since: 1.1.3 + **/ +hb_bool_t +hb_font_get_v_extents (hb_font_t *font, + hb_font_extents_t *extents) +{ + return font->get_font_v_extents (extents); +} + +/** * hb_font_get_glyph: * @font: a font. * @unicode: @@ -425,14 +636,57 @@ HB_FONT_FUNCS_IMPLEMENT_CALLBACKS * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_bool_t hb_font_get_glyph (hb_font_t *font, hb_codepoint_t unicode, hb_codepoint_t variation_selector, hb_codepoint_t *glyph) { - return font->get_glyph (unicode, variation_selector, glyph); + if (unlikely (variation_selector)) + return font->get_variation_glyph (unicode, variation_selector, glyph); + return font->get_nominal_glyph (unicode, glyph); +} + +/** + * hb_font_get_nominal_glyph: + * @font: a font. + * @unicode: + * @glyph: (out): + * + * + * + * Return value: + * + * Since: 1.2.3 + **/ +hb_bool_t +hb_font_get_nominal_glyph (hb_font_t *font, + hb_codepoint_t unicode, + hb_codepoint_t *glyph) +{ + return font->get_nominal_glyph (unicode, glyph); +} + +/** + * hb_font_get_variation_glyph: + * @font: a font. + * @unicode: + * @variation_selector: + * @glyph: (out): + * + * + * + * Return value: + * + * Since: 1.2.3 + **/ +hb_bool_t +hb_font_get_variation_glyph (hb_font_t *font, + hb_codepoint_t unicode, hb_codepoint_t variation_selector, + hb_codepoint_t *glyph) +{ + return font->get_variation_glyph (unicode, variation_selector, glyph); } /** @@ -444,7 +698,7 @@ hb_font_get_glyph (hb_font_t *font, * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_position_t hb_font_get_glyph_h_advance (hb_font_t *font, @@ -462,7 +716,7 @@ hb_font_get_glyph_h_advance (hb_font_t *font, * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_position_t hb_font_get_glyph_v_advance (hb_font_t *font, @@ -482,7 +736,7 @@ hb_font_get_glyph_v_advance (hb_font_t *font, * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_bool_t hb_font_get_glyph_h_origin (hb_font_t *font, @@ -503,7 +757,7 @@ hb_font_get_glyph_h_origin (hb_font_t *font, * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_bool_t hb_font_get_glyph_v_origin (hb_font_t *font, @@ -523,7 +777,7 @@ hb_font_get_glyph_v_origin (hb_font_t *font, * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_position_t hb_font_get_glyph_h_kerning (hb_font_t *font, @@ -542,7 +796,7 @@ hb_font_get_glyph_h_kerning (hb_font_t *font, * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_position_t hb_font_get_glyph_v_kerning (hb_font_t *font, @@ -561,7 +815,7 @@ hb_font_get_glyph_v_kerning (hb_font_t *font, * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_bool_t hb_font_get_glyph_extents (hb_font_t *font, @@ -583,7 +837,7 @@ hb_font_get_glyph_extents (hb_font_t *font, * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_bool_t hb_font_get_glyph_contour_point (hb_font_t *font, @@ -604,7 +858,7 @@ hb_font_get_glyph_contour_point (hb_font_t *font, * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_bool_t hb_font_get_glyph_name (hb_font_t *font, @@ -625,7 +879,7 @@ hb_font_get_glyph_name (hb_font_t *font, * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_bool_t hb_font_get_glyph_from_name (hb_font_t *font, @@ -639,6 +893,23 @@ hb_font_get_glyph_from_name (hb_font_t *font, /* A bit higher-level, and with fallback */ /** + * hb_font_get_extents_for_direction: + * @font: a font. + * @direction: + * @extents: + * + * + * + * Since: 1.1.3 + **/ +void +hb_font_get_extents_for_direction (hb_font_t *font, + hb_direction_t direction, + hb_font_extents_t *extents) +{ + return font->get_extents_for_direction (direction, extents); +} +/** * hb_font_get_glyph_advance_for_direction: * @font: a font. * @glyph: @@ -648,7 +919,7 @@ hb_font_get_glyph_from_name (hb_font_t *font, * * * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_font_get_glyph_advance_for_direction (hb_font_t *font, @@ -669,7 +940,7 @@ hb_font_get_glyph_advance_for_direction (hb_font_t *font, * * * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_font_get_glyph_origin_for_direction (hb_font_t *font, @@ -690,7 +961,7 @@ hb_font_get_glyph_origin_for_direction (hb_font_t *font, * * * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_font_add_glyph_origin_for_direction (hb_font_t *font, @@ -711,7 +982,7 @@ hb_font_add_glyph_origin_for_direction (hb_font_t *font, * * * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_font_subtract_glyph_origin_for_direction (hb_font_t *font, @@ -733,7 +1004,7 @@ hb_font_subtract_glyph_origin_for_direction (hb_font_t *font, * * * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_font_get_glyph_kerning_for_direction (hb_font_t *font, @@ -755,7 +1026,7 @@ hb_font_get_glyph_kerning_for_direction (hb_font_t *font, * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_bool_t hb_font_get_glyph_extents_for_origin (hb_font_t *font, @@ -779,7 +1050,7 @@ hb_font_get_glyph_extents_for_origin (hb_font_t *font, * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_bool_t hb_font_get_glyph_contour_point_for_origin (hb_font_t *font, @@ -800,7 +1071,7 @@ hb_font_get_glyph_contour_point_for_origin (hb_font_t *font, * * * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_font_glyph_to_string (hb_font_t *font, @@ -814,7 +1085,7 @@ hb_font_glyph_to_string (hb_font_t *font, /** * hb_font_glyph_from_string: * @font: a font. - * @s: (array length=len): + * @s: (array length=len) (element-type uint8_t): * @len: * @glyph: (out): * @@ -822,7 +1093,7 @@ hb_font_glyph_to_string (hb_font_t *font, * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_bool_t hb_font_glyph_from_string (hb_font_t *font, @@ -845,7 +1116,7 @@ hb_font_glyph_from_string (hb_font_t *font, * * Return value: (transfer full): * - * Since: 1.0 + * Since: 0.9.2 **/ hb_font_t * hb_font_create (hb_face_t *face) @@ -854,15 +1125,16 @@ hb_font_create (hb_face_t *face) if (unlikely (!face)) face = hb_face_get_empty (); - if (unlikely (hb_object_is_inert (face))) - return hb_font_get_empty (); if (!(font = hb_object_create ())) return hb_font_get_empty (); hb_face_make_immutable (face); + font->parent = hb_font_get_empty (); font->face = hb_face_reference (face); font->klass = hb_font_funcs_get_empty (); + font->x_scale = font->y_scale = hb_face_get_upem (face); + return font; } @@ -874,20 +1146,19 @@ hb_font_create (hb_face_t *face) * * Return value: (transfer full): * - * Since: 1.0 + * Since: 0.9.2 **/ hb_font_t * hb_font_create_sub_font (hb_font_t *parent) { if (unlikely (!parent)) - return hb_font_get_empty (); + parent = hb_font_get_empty (); hb_font_t *font = hb_font_create (parent->face); if (unlikely (hb_object_is_inert (font))) return font; - hb_font_make_immutable (parent); font->parent = hb_font_reference (parent); font->x_scale = parent->x_scale; @@ -905,7 +1176,7 @@ hb_font_create_sub_font (hb_font_t *parent) * * Return value: (transfer full) * - * Since: 1.0 + * Since: 0.9.2 **/ hb_font_t * hb_font_get_empty (void) @@ -918,8 +1189,8 @@ hb_font_get_empty (void) NULL, /* parent */ const_cast (&_hb_face_nil), - 0, /* x_scale */ - 0, /* y_scale */ + 1000, /* x_scale */ + 1000, /* y_scale */ 0, /* x_ppem */ 0, /* y_ppem */ @@ -946,7 +1217,7 @@ hb_font_get_empty (void) * * Return value: (transfer full): * - * Since: 1.0 + * Since: 0.9.2 **/ hb_font_t * hb_font_reference (hb_font_t *font) @@ -960,7 +1231,7 @@ hb_font_reference (hb_font_t *font) * * * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_font_destroy (hb_font_t *font) @@ -993,7 +1264,7 @@ hb_font_destroy (hb_font_t *font) * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_bool_t hb_font_set_user_data (hb_font_t *font, @@ -1014,7 +1285,7 @@ hb_font_set_user_data (hb_font_t *font, * * Return value: (transfer none): * - * Since: 1.0 + * Since: 0.9.2 **/ void * hb_font_get_user_data (hb_font_t *font, @@ -1029,7 +1300,7 @@ hb_font_get_user_data (hb_font_t *font, * * * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_font_make_immutable (hb_font_t *font) @@ -1037,6 +1308,9 @@ hb_font_make_immutable (hb_font_t *font) if (unlikely (hb_object_is_inert (font))) return; + if (font->parent) + hb_font_make_immutable (font->parent); + font->immutable = true; } @@ -1048,7 +1322,7 @@ hb_font_make_immutable (hb_font_t *font) * * Return value: * - * Since: 1.0 + * Since: 0.9.2 **/ hb_bool_t hb_font_is_immutable (hb_font_t *font) @@ -1057,6 +1331,32 @@ hb_font_is_immutable (hb_font_t *font) } /** + * hb_font_set_parent: + * @font: a font. + * @parent: new parent. + * + * Sets parent font of @font. + * + * Since: 1.0.5 + **/ +void +hb_font_set_parent (hb_font_t *font, + hb_font_t *parent) +{ + if (font->immutable) + return; + + if (!parent) + parent = hb_font_get_empty (); + + hb_font_t *old = font->parent; + + font->parent = hb_font_reference (parent); + + hb_font_destroy (old); +} + +/** * hb_font_get_parent: * @font: a font. * @@ -1064,7 +1364,7 @@ hb_font_is_immutable (hb_font_t *font) * * Return value: (transfer none): * - * Since: 1.0 + * Since: 0.9.2 **/ hb_font_t * hb_font_get_parent (hb_font_t *font) @@ -1080,7 +1380,7 @@ hb_font_get_parent (hb_font_t *font) * * Return value: (transfer none): * - * Since: 1.0 + * Since: 0.9.2 **/ hb_face_t * hb_font_get_face (hb_font_t *font) @@ -1098,7 +1398,7 @@ hb_font_get_face (hb_font_t *font) * * * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_font_set_funcs (hb_font_t *font, @@ -1133,7 +1433,7 @@ hb_font_set_funcs (hb_font_t *font, * * * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_font_set_funcs_data (hb_font_t *font, @@ -1163,7 +1463,7 @@ hb_font_set_funcs_data (hb_font_t *font, * * * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_font_set_scale (hb_font_t *font, @@ -1185,7 +1485,7 @@ hb_font_set_scale (hb_font_t *font, * * * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_font_get_scale (hb_font_t *font, @@ -1204,7 +1504,7 @@ hb_font_get_scale (hb_font_t *font, * * * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_font_set_ppem (hb_font_t *font, @@ -1226,7 +1526,7 @@ hb_font_set_ppem (hb_font_t *font, * * * - * Since: 1.0 + * Since: 0.9.2 **/ void hb_font_get_ppem (hb_font_t *font, @@ -1236,3 +1536,131 @@ hb_font_get_ppem (hb_font_t *font, if (x_ppem) *x_ppem = font->x_ppem; if (y_ppem) *y_ppem = font->y_ppem; } + + +#ifndef HB_DISABLE_DEPRECATED + +/* + * Deprecated get_glyph_func(): + */ + +struct hb_trampoline_closure_t +{ + void *user_data; + hb_destroy_func_t destroy; + unsigned int ref_count; +}; + +template +struct hb_trampoline_t +{ + hb_trampoline_closure_t closure; /* Must be first. */ + FuncType func; +}; + +template +static hb_trampoline_t * +trampoline_create (FuncType func, + void *user_data, + hb_destroy_func_t destroy) +{ + typedef hb_trampoline_t trampoline_t; + + trampoline_t *trampoline = (trampoline_t *) calloc (1, sizeof (trampoline_t)); + + if (unlikely (!trampoline)) + return NULL; + + trampoline->closure.user_data = user_data; + trampoline->closure.destroy = destroy; + trampoline->closure.ref_count = 1; + trampoline->func = func; + + return trampoline; +} + +static void +trampoline_reference (hb_trampoline_closure_t *closure) +{ + closure->ref_count++; +} + +static void +trampoline_destroy (void *user_data) +{ + hb_trampoline_closure_t *closure = (hb_trampoline_closure_t *) user_data; + + if (--closure->ref_count) + return; + + if (closure->destroy) + closure->destroy (closure->user_data); + free (closure); +} + +typedef hb_trampoline_t hb_font_get_glyph_trampoline_t; + +static hb_bool_t +hb_font_get_nominal_glyph_trampoline (hb_font_t *font, + void *font_data, + hb_codepoint_t unicode, + hb_codepoint_t *glyph, + void *user_data) +{ + hb_font_get_glyph_trampoline_t *trampoline = (hb_font_get_glyph_trampoline_t *) user_data; + return trampoline->func (font, font_data, unicode, 0, glyph, trampoline->closure.user_data); +} + +static hb_bool_t +hb_font_get_variation_glyph_trampoline (hb_font_t *font, + void *font_data, + hb_codepoint_t unicode, + hb_codepoint_t variation_selector, + hb_codepoint_t *glyph, + void *user_data) +{ + hb_font_get_glyph_trampoline_t *trampoline = (hb_font_get_glyph_trampoline_t *) user_data; + return trampoline->func (font, font_data, unicode, variation_selector, glyph, trampoline->closure.user_data); +} + +/** + * hb_font_funcs_set_glyph_func: + * @ffuncs: font functions. + * @func: (closure user_data) (destroy destroy) (scope notified): + * @user_data: + * @destroy: + * + * Deprecated. Use hb_font_funcs_set_nominal_glyph_func() and + * hb_font_funcs_set_variation_glyph_func() instead. + * + * Since: 0.9.2 + * Deprecated: 1.2.3 + **/ +void +hb_font_funcs_set_glyph_func (hb_font_funcs_t *ffuncs, + hb_font_get_glyph_func_t func, + void *user_data, hb_destroy_func_t destroy) +{ + hb_font_get_glyph_trampoline_t *trampoline; + + trampoline = trampoline_create (func, user_data, destroy); + if (unlikely (!trampoline)) + { + if (destroy) + destroy (user_data); + return; + } + + hb_font_funcs_set_nominal_glyph_func (ffuncs, + hb_font_get_nominal_glyph_trampoline, + trampoline, + trampoline_destroy); + + trampoline_reference (&trampoline->closure); + hb_font_funcs_set_variation_glyph_func (ffuncs, + hb_font_get_variation_glyph_trampoline, + trampoline, + trampoline_destroy); +} + +#endif /* HB_DISABLE_DEPRECATED */ diff --git a/src/hb-font.h b/src/hb-font.h index 7273db4..2b6ab50 100644 --- a/src/hb-font.h +++ b/src/hb-font.h @@ -46,19 +46,19 @@ typedef struct hb_font_t hb_font_t; typedef struct hb_font_funcs_t hb_font_funcs_t; -hb_font_funcs_t * +HB_EXTERN hb_font_funcs_t * hb_font_funcs_create (void); -hb_font_funcs_t * +HB_EXTERN hb_font_funcs_t * hb_font_funcs_get_empty (void); -hb_font_funcs_t * +HB_EXTERN hb_font_funcs_t * hb_font_funcs_reference (hb_font_funcs_t *ffuncs); -void +HB_EXTERN void hb_font_funcs_destroy (hb_font_funcs_t *ffuncs); -hb_bool_t +HB_EXTERN hb_bool_t hb_font_funcs_set_user_data (hb_font_funcs_t *ffuncs, hb_user_data_key_t *key, void * data, @@ -66,35 +66,64 @@ hb_font_funcs_set_user_data (hb_font_funcs_t *ffuncs, hb_bool_t replace); -void * +HB_EXTERN void * hb_font_funcs_get_user_data (hb_font_funcs_t *ffuncs, hb_user_data_key_t *key); -void +HB_EXTERN void hb_font_funcs_make_immutable (hb_font_funcs_t *ffuncs); -hb_bool_t +HB_EXTERN hb_bool_t hb_font_funcs_is_immutable (hb_font_funcs_t *ffuncs); -/* glyph extents */ +/* font and glyph extents */ +/* Note that typically ascender is positive and descender negative in coordinate systems that grow up. */ +typedef struct hb_font_extents_t +{ + hb_position_t ascender; /* typographic ascender. */ + hb_position_t descender; /* typographic descender. */ + hb_position_t line_gap; /* suggested line spacing gap. */ + /*< private >*/ + hb_position_t reserved9; + hb_position_t reserved8; + hb_position_t reserved7; + hb_position_t reserved6; + hb_position_t reserved5; + hb_position_t reserved4; + hb_position_t reserved3; + hb_position_t reserved2; + hb_position_t reserved1; +} hb_font_extents_t; + +/* Note that height is negative in coordinate systems that grow up. */ typedef struct hb_glyph_extents_t { - hb_position_t x_bearing; - hb_position_t y_bearing; - hb_position_t width; - hb_position_t height; + hb_position_t x_bearing; /* left side of glyph from origin. */ + hb_position_t y_bearing; /* top side of glyph from origin. */ + hb_position_t width; /* distance from left to right side. */ + hb_position_t height; /* distance from top to bottom side. */ } hb_glyph_extents_t; - /* func types */ -typedef hb_bool_t (*hb_font_get_glyph_func_t) (hb_font_t *font, void *font_data, - hb_codepoint_t unicode, hb_codepoint_t variation_selector, - hb_codepoint_t *glyph, - void *user_data); +typedef hb_bool_t (*hb_font_get_font_extents_func_t) (hb_font_t *font, void *font_data, + hb_font_extents_t *metrics, + void *user_data); +typedef hb_font_get_font_extents_func_t hb_font_get_font_h_extents_func_t; +typedef hb_font_get_font_extents_func_t hb_font_get_font_v_extents_func_t; + + +typedef hb_bool_t (*hb_font_get_nominal_glyph_func_t) (hb_font_t *font, void *font_data, + hb_codepoint_t unicode, + hb_codepoint_t *glyph, + void *user_data); +typedef hb_bool_t (*hb_font_get_variation_glyph_func_t) (hb_font_t *font, void *font_data, + hb_codepoint_t unicode, hb_codepoint_t variation_selector, + hb_codepoint_t *glyph, + void *user_data); typedef hb_position_t (*hb_font_get_glyph_advance_func_t) (hb_font_t *font, void *font_data, @@ -140,7 +169,39 @@ typedef hb_bool_t (*hb_font_get_glyph_from_name_func_t) (hb_font_t *font, void * /* func setters */ /** - * hb_font_funcs_set_glyph_func: + * hb_font_funcs_set_font_h_extents_func: + * @ffuncs: font functions. + * @func: (closure user_data) (destroy destroy) (scope notified): + * @user_data: + * @destroy: + * + * + * + * Since: 1.1.2 + **/ +HB_EXTERN void +hb_font_funcs_set_font_h_extents_func (hb_font_funcs_t *ffuncs, + hb_font_get_font_h_extents_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_font_funcs_set_font_v_extents_func: + * @ffuncs: font functions. + * @func: (closure user_data) (destroy destroy) (scope notified): + * @user_data: + * @destroy: + * + * + * + * Since: 1.1.2 + **/ +HB_EXTERN void +hb_font_funcs_set_font_v_extents_func (hb_font_funcs_t *ffuncs, + hb_font_get_font_v_extents_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_font_funcs_set_nominal_glyph_func: * @ffuncs: font functions. * @func: (closure user_data) (destroy destroy) (scope notified): * @user_data: @@ -148,12 +209,28 @@ typedef hb_bool_t (*hb_font_get_glyph_from_name_func_t) (hb_font_t *font, void * * * * - * Since: 1.0 + * Since: 1.2.3 **/ -void -hb_font_funcs_set_glyph_func (hb_font_funcs_t *ffuncs, - hb_font_get_glyph_func_t func, - void *user_data, hb_destroy_func_t destroy); +HB_EXTERN void +hb_font_funcs_set_nominal_glyph_func (hb_font_funcs_t *ffuncs, + hb_font_get_nominal_glyph_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_font_funcs_set_variation_glyph_func: + * @ffuncs: font functions. + * @func: (closure user_data) (destroy destroy) (scope notified): + * @user_data: + * @destroy: + * + * + * + * Since: 1.2.3 + **/ +HB_EXTERN void +hb_font_funcs_set_variation_glyph_func (hb_font_funcs_t *ffuncs, + hb_font_get_variation_glyph_func_t func, + void *user_data, hb_destroy_func_t destroy); /** * hb_font_funcs_set_glyph_h_advance_func: @@ -164,9 +241,9 @@ hb_font_funcs_set_glyph_func (hb_font_funcs_t *ffuncs, * * * - * Since: 1.0 + * Since: 0.9.2 **/ -void +HB_EXTERN void hb_font_funcs_set_glyph_h_advance_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_h_advance_func_t func, void *user_data, hb_destroy_func_t destroy); @@ -180,9 +257,9 @@ hb_font_funcs_set_glyph_h_advance_func (hb_font_funcs_t *ffuncs, * * * - * Since: 1.0 + * Since: 0.9.2 **/ -void +HB_EXTERN void hb_font_funcs_set_glyph_v_advance_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_v_advance_func_t func, void *user_data, hb_destroy_func_t destroy); @@ -196,9 +273,9 @@ hb_font_funcs_set_glyph_v_advance_func (hb_font_funcs_t *ffuncs, * * * - * Since: 1.0 + * Since: 0.9.2 **/ -void +HB_EXTERN void hb_font_funcs_set_glyph_h_origin_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_h_origin_func_t func, void *user_data, hb_destroy_func_t destroy); @@ -212,9 +289,9 @@ hb_font_funcs_set_glyph_h_origin_func (hb_font_funcs_t *ffuncs, * * * - * Since: 1.0 + * Since: 0.9.2 **/ -void +HB_EXTERN void hb_font_funcs_set_glyph_v_origin_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_v_origin_func_t func, void *user_data, hb_destroy_func_t destroy); @@ -228,9 +305,9 @@ hb_font_funcs_set_glyph_v_origin_func (hb_font_funcs_t *ffuncs, * * * - * Since: 1.0 + * Since: 0.9.2 **/ -void +HB_EXTERN void hb_font_funcs_set_glyph_h_kerning_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_h_kerning_func_t func, void *user_data, hb_destroy_func_t destroy); @@ -244,9 +321,9 @@ hb_font_funcs_set_glyph_h_kerning_func (hb_font_funcs_t *ffuncs, * * * - * Since: 1.0 + * Since: 0.9.2 **/ -void +HB_EXTERN void hb_font_funcs_set_glyph_v_kerning_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_v_kerning_func_t func, void *user_data, hb_destroy_func_t destroy); @@ -260,9 +337,9 @@ hb_font_funcs_set_glyph_v_kerning_func (hb_font_funcs_t *ffuncs, * * * - * Since: 1.0 + * Since: 0.9.2 **/ -void +HB_EXTERN void hb_font_funcs_set_glyph_extents_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_extents_func_t func, void *user_data, hb_destroy_func_t destroy); @@ -276,9 +353,9 @@ hb_font_funcs_set_glyph_extents_func (hb_font_funcs_t *ffuncs, * * * - * Since: 1.0 + * Since: 0.9.2 **/ -void +HB_EXTERN void hb_font_funcs_set_glyph_contour_point_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_contour_point_func_t func, void *user_data, hb_destroy_func_t destroy); @@ -292,9 +369,9 @@ hb_font_funcs_set_glyph_contour_point_func (hb_font_funcs_t *ffuncs, * * * - * Since: 1.0 + * Since: 0.9.2 **/ -void +HB_EXTERN void hb_font_funcs_set_glyph_name_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_name_func_t func, void *user_data, hb_destroy_func_t destroy); @@ -308,59 +385,69 @@ hb_font_funcs_set_glyph_name_func (hb_font_funcs_t *ffuncs, * * * - * Since: 1.0 + * Since: 0.9.2 **/ -void +HB_EXTERN void hb_font_funcs_set_glyph_from_name_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_from_name_func_t func, void *user_data, hb_destroy_func_t destroy); - /* func dispatch */ -hb_bool_t -hb_font_get_glyph (hb_font_t *font, - hb_codepoint_t unicode, hb_codepoint_t variation_selector, - hb_codepoint_t *glyph); +HB_EXTERN hb_bool_t +hb_font_get_h_extents (hb_font_t *font, + hb_font_extents_t *extents); +HB_EXTERN hb_bool_t +hb_font_get_v_extents (hb_font_t *font, + hb_font_extents_t *extents); -hb_position_t +HB_EXTERN hb_bool_t +hb_font_get_nominal_glyph (hb_font_t *font, + hb_codepoint_t unicode, + hb_codepoint_t *glyph); +HB_EXTERN hb_bool_t +hb_font_get_variation_glyph (hb_font_t *font, + hb_codepoint_t unicode, hb_codepoint_t variation_selector, + hb_codepoint_t *glyph); + +HB_EXTERN hb_position_t hb_font_get_glyph_h_advance (hb_font_t *font, hb_codepoint_t glyph); -hb_position_t +HB_EXTERN hb_position_t hb_font_get_glyph_v_advance (hb_font_t *font, hb_codepoint_t glyph); -hb_bool_t +HB_EXTERN hb_bool_t hb_font_get_glyph_h_origin (hb_font_t *font, hb_codepoint_t glyph, hb_position_t *x, hb_position_t *y); -hb_bool_t +HB_EXTERN hb_bool_t hb_font_get_glyph_v_origin (hb_font_t *font, hb_codepoint_t glyph, hb_position_t *x, hb_position_t *y); -hb_position_t +HB_EXTERN hb_position_t hb_font_get_glyph_h_kerning (hb_font_t *font, hb_codepoint_t left_glyph, hb_codepoint_t right_glyph); -hb_position_t +HB_EXTERN hb_position_t hb_font_get_glyph_v_kerning (hb_font_t *font, hb_codepoint_t top_glyph, hb_codepoint_t bottom_glyph); -hb_bool_t +HB_EXTERN hb_bool_t hb_font_get_glyph_extents (hb_font_t *font, hb_codepoint_t glyph, hb_glyph_extents_t *extents); -hb_bool_t +HB_EXTERN hb_bool_t hb_font_get_glyph_contour_point (hb_font_t *font, hb_codepoint_t glyph, unsigned int point_index, hb_position_t *x, hb_position_t *y); -hb_bool_t +HB_EXTERN hb_bool_t hb_font_get_glyph_name (hb_font_t *font, hb_codepoint_t glyph, char *name, unsigned int size); -hb_bool_t +HB_EXTERN hb_bool_t hb_font_get_glyph_from_name (hb_font_t *font, const char *name, int len, /* -1 means nul-terminated */ hb_codepoint_t *glyph); @@ -368,52 +455,63 @@ hb_font_get_glyph_from_name (hb_font_t *font, /* high-level funcs, with fallback */ -void +/* Calls either hb_font_get_nominal_glyph() if variation_selector is 0, + * otherwise callse hb_font_get_variation_glyph(). */ +HB_EXTERN hb_bool_t +hb_font_get_glyph (hb_font_t *font, + hb_codepoint_t unicode, hb_codepoint_t variation_selector, + hb_codepoint_t *glyph); + +HB_EXTERN void +hb_font_get_extents_for_direction (hb_font_t *font, + hb_direction_t direction, + hb_font_extents_t *extents); +HB_EXTERN void hb_font_get_glyph_advance_for_direction (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y); -void +HB_EXTERN void hb_font_get_glyph_origin_for_direction (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y); -void +HB_EXTERN void hb_font_add_glyph_origin_for_direction (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y); -void +HB_EXTERN void hb_font_subtract_glyph_origin_for_direction (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y); -void +HB_EXTERN void hb_font_get_glyph_kerning_for_direction (hb_font_t *font, hb_codepoint_t first_glyph, hb_codepoint_t second_glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y); -hb_bool_t +HB_EXTERN hb_bool_t hb_font_get_glyph_extents_for_origin (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, hb_glyph_extents_t *extents); -hb_bool_t +HB_EXTERN hb_bool_t hb_font_get_glyph_contour_point_for_origin (hb_font_t *font, hb_codepoint_t glyph, unsigned int point_index, hb_direction_t direction, hb_position_t *x, hb_position_t *y); /* Generates gidDDD if glyph has no name. */ -void +HB_EXTERN void hb_font_glyph_to_string (hb_font_t *font, hb_codepoint_t glyph, char *s, unsigned int size); /* Parses gidDDD and uniUUUU strings automatically. */ -hb_bool_t +HB_EXTERN hb_bool_t hb_font_glyph_from_string (hb_font_t *font, const char *s, int len, /* -1 means nul-terminated */ hb_codepoint_t *glyph); @@ -425,22 +523,22 @@ hb_font_glyph_from_string (hb_font_t *font, /* Fonts are very light-weight objects */ -hb_font_t * +HB_EXTERN hb_font_t * hb_font_create (hb_face_t *face); -hb_font_t * +HB_EXTERN hb_font_t * hb_font_create_sub_font (hb_font_t *parent); -hb_font_t * +HB_EXTERN hb_font_t * hb_font_get_empty (void); -hb_font_t * +HB_EXTERN hb_font_t * hb_font_reference (hb_font_t *font); -void +HB_EXTERN void hb_font_destroy (hb_font_t *font); -hb_bool_t +HB_EXTERN hb_bool_t hb_font_set_user_data (hb_font_t *font, hb_user_data_key_t *key, void * data, @@ -448,42 +546,46 @@ hb_font_set_user_data (hb_font_t *font, hb_bool_t replace); -void * +HB_EXTERN void * hb_font_get_user_data (hb_font_t *font, hb_user_data_key_t *key); -void +HB_EXTERN void hb_font_make_immutable (hb_font_t *font); -hb_bool_t +HB_EXTERN hb_bool_t hb_font_is_immutable (hb_font_t *font); -hb_font_t * +HB_EXTERN void +hb_font_set_parent (hb_font_t *font, + hb_font_t *parent); + +HB_EXTERN hb_font_t * hb_font_get_parent (hb_font_t *font); -hb_face_t * +HB_EXTERN hb_face_t * hb_font_get_face (hb_font_t *font); -void +HB_EXTERN void hb_font_set_funcs (hb_font_t *font, hb_font_funcs_t *klass, void *font_data, hb_destroy_func_t destroy); /* Be *very* careful with this function! */ -void +HB_EXTERN void hb_font_set_funcs_data (hb_font_t *font, void *font_data, hb_destroy_func_t destroy); -void +HB_EXTERN void hb_font_set_scale (hb_font_t *font, int x_scale, int y_scale); -void +HB_EXTERN void hb_font_get_scale (hb_font_t *font, int *x_scale, int *y_scale); @@ -491,12 +593,12 @@ hb_font_get_scale (hb_font_t *font, /* * A zero value means "no hinting in that direction" */ -void +HB_EXTERN void hb_font_set_ppem (hb_font_t *font, unsigned int x_ppem, unsigned int y_ppem); -void +HB_EXTERN void hb_font_get_ppem (hb_font_t *font, unsigned int *x_ppem, unsigned int *y_ppem); diff --git a/src/hb-ft.cc b/src/hb-ft.cc index 322f93a..2cad8c2 100644 --- a/src/hb-ft.cc +++ b/src/hb-ft.cc @@ -1,6 +1,7 @@ /* * Copyright © 2009 Red Hat, Inc. * Copyright © 2009 Keith Stribley + * Copyright © 2015 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * @@ -23,6 +24,7 @@ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Red Hat Author(s): Behdad Esfahbod + * Google Author(s): Behdad Esfahbod */ #include "hb-private.hh" @@ -46,17 +48,15 @@ * In general, this file does a fine job of what it's supposed to do. * There are, however, things that need more work: * - * - We don't handle any load_flags. That definitely has API implications. :( - * I believe hb_ft_font_create() should take load_flags input. - * In particular, FT_Get_Advance() without the NO_HINTING flag seems to be - * buggy. + * - I remember seeing FT_Get_Advance() without the NO_HINTING flag to be buggy. + * Have not investigated. * - * FreeType works in 26.6 mode. Clients can decide to use that mode, and everything + * - FreeType works in 26.6 mode. Clients can decide to use that mode, and everything * would work fine. However, we also abuse this API for performing in font-space, * but don't pass the correct flags to FreeType. We just abuse the no-hinting mode * for that, such that no rounding etc happens. As such, we don't set ppem, and - * pass NO_HINTING around. This seems to work best, until we go ahead and add a full - * load_flags API. + * pass NO_HINTING as load_flags. Would be much better to use NO_SCALE, and scale + * ourselves, like we do in uniscribe, etc. * * - We don't handle / allow for emboldening / obliqueing. * @@ -66,24 +66,127 @@ */ +struct hb_ft_font_t +{ + FT_Face ft_face; + int load_flags; + bool unref; /* Whether to destroy ft_face when done. */ +}; + +static hb_ft_font_t * +_hb_ft_font_create (FT_Face ft_face, bool unref) +{ + hb_ft_font_t *ft_font = (hb_ft_font_t *) calloc (1, sizeof (hb_ft_font_t)); + + if (unlikely (!ft_font)) + return NULL; + + ft_font->ft_face = ft_face; + ft_font->unref = unref; + + ft_font->load_flags = FT_LOAD_DEFAULT | FT_LOAD_NO_HINTING; + + return ft_font; +} + +static void +_hb_ft_font_destroy (hb_ft_font_t *ft_font) +{ + if (ft_font->unref) + FT_Done_Face (ft_font->ft_face); + + free (ft_font); +} + +/** + * hb_ft_font_set_load_flags: + * @font: + * @load_flags: + * + * + * + * Since: 1.0.5 + **/ +void +hb_ft_font_set_load_flags (hb_font_t *font, int load_flags) +{ + if (font->immutable) + return; + + if (font->destroy != (hb_destroy_func_t) _hb_ft_font_destroy) + return; + + hb_ft_font_t *ft_font = (hb_ft_font_t *) font->user_data; + + ft_font->load_flags = load_flags; +} + +/** + * hb_ft_font_get_load_flags: + * @font: + * + * + * + * Return value: + * Since: 1.0.5 + **/ +int +hb_ft_font_get_load_flags (hb_font_t *font) +{ + if (font->destroy != (hb_destroy_func_t) _hb_ft_font_destroy) + return 0; + + const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font->user_data; + + return ft_font->load_flags; +} + +FT_Face +hb_ft_font_get_face (hb_font_t *font) +{ + if (font->destroy != (hb_destroy_func_t) _hb_ft_font_destroy) + return NULL; + + const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font->user_data; + + return ft_font->ft_face; +} + + + static hb_bool_t -hb_ft_get_glyph (hb_font_t *font HB_UNUSED, - void *font_data, - hb_codepoint_t unicode, - hb_codepoint_t variation_selector, - hb_codepoint_t *glyph, - void *user_data HB_UNUSED) +hb_ft_get_nominal_glyph (hb_font_t *font HB_UNUSED, + void *font_data, + hb_codepoint_t unicode, + hb_codepoint_t *glyph, + void *user_data HB_UNUSED) +{ + const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font_data; + unsigned int g = FT_Get_Char_Index (ft_font->ft_face, unicode); + + if (unlikely (!g)) + return false; + *glyph = g; + return true; +} + +static hb_bool_t +hb_ft_get_variation_glyph (hb_font_t *font HB_UNUSED, + void *font_data, + hb_codepoint_t unicode, + hb_codepoint_t variation_selector, + hb_codepoint_t *glyph, + void *user_data HB_UNUSED) { - FT_Face ft_face = (FT_Face) font_data; + const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font_data; + unsigned int g = FT_Face_GetCharVariantIndex (ft_font->ft_face, unicode, variation_selector); - if (unlikely (variation_selector)) { - *glyph = FT_Face_GetCharVariantIndex (ft_face, unicode, variation_selector); - return *glyph != 0; - } + if (unlikely (!g)) + return false; - *glyph = FT_Get_Char_Index (ft_face, unicode); - return *glyph != 0; + *glyph = g; + return true; } static hb_position_t @@ -92,11 +195,10 @@ hb_ft_get_glyph_h_advance (hb_font_t *font HB_UNUSED, hb_codepoint_t glyph, void *user_data HB_UNUSED) { - FT_Face ft_face = (FT_Face) font_data; - int load_flags = FT_LOAD_DEFAULT | FT_LOAD_NO_HINTING; + const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font_data; FT_Fixed v; - if (unlikely (FT_Get_Advance (ft_face, glyph, load_flags, &v))) + if (unlikely (FT_Get_Advance (ft_font->ft_face, glyph, ft_font->load_flags, &v))) return 0; if (font->x_scale < 0) @@ -111,11 +213,10 @@ hb_ft_get_glyph_v_advance (hb_font_t *font HB_UNUSED, hb_codepoint_t glyph, void *user_data HB_UNUSED) { - FT_Face ft_face = (FT_Face) font_data; - int load_flags = FT_LOAD_DEFAULT | FT_LOAD_NO_HINTING | FT_LOAD_VERTICAL_LAYOUT; + const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font_data; FT_Fixed v; - if (unlikely (FT_Get_Advance (ft_face, glyph, load_flags, &v))) + if (unlikely (FT_Get_Advance (ft_font->ft_face, glyph, ft_font->load_flags | FT_LOAD_VERTICAL_LAYOUT, &v))) return 0; if (font->y_scale < 0) @@ -127,18 +228,6 @@ hb_ft_get_glyph_v_advance (hb_font_t *font HB_UNUSED, } static hb_bool_t -hb_ft_get_glyph_h_origin (hb_font_t *font HB_UNUSED, - void *font_data HB_UNUSED, - hb_codepoint_t glyph HB_UNUSED, - hb_position_t *x HB_UNUSED, - hb_position_t *y HB_UNUSED, - void *user_data HB_UNUSED) -{ - /* We always work in the horizontal coordinates. */ - return true; -} - -static hb_bool_t hb_ft_get_glyph_v_origin (hb_font_t *font HB_UNUSED, void *font_data, hb_codepoint_t glyph, @@ -146,10 +235,10 @@ hb_ft_get_glyph_v_origin (hb_font_t *font HB_UNUSED, hb_position_t *y, void *user_data HB_UNUSED) { - FT_Face ft_face = (FT_Face) font_data; - int load_flags = FT_LOAD_DEFAULT | FT_LOAD_NO_HINTING; + const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font_data; + FT_Face ft_face = ft_font->ft_face; - if (unlikely (FT_Load_Glyph (ft_face, glyph, load_flags))) + if (unlikely (FT_Load_Glyph (ft_face, glyph, ft_font->load_flags))) return false; /* Note: FreeType's vertical metrics grows downward while other FreeType coordinates @@ -172,27 +261,16 @@ hb_ft_get_glyph_h_kerning (hb_font_t *font, hb_codepoint_t right_glyph, void *user_data HB_UNUSED) { - FT_Face ft_face = (FT_Face) font_data; + const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font_data; FT_Vector kerningv; FT_Kerning_Mode mode = font->x_ppem ? FT_KERNING_DEFAULT : FT_KERNING_UNFITTED; - if (FT_Get_Kerning (ft_face, left_glyph, right_glyph, mode, &kerningv)) + if (FT_Get_Kerning (ft_font->ft_face, left_glyph, right_glyph, mode, &kerningv)) return 0; return kerningv.x; } -static hb_position_t -hb_ft_get_glyph_v_kerning (hb_font_t *font HB_UNUSED, - void *font_data HB_UNUSED, - hb_codepoint_t top_glyph HB_UNUSED, - hb_codepoint_t bottom_glyph HB_UNUSED, - void *user_data HB_UNUSED) -{ - /* FreeType API doesn't support vertical kerning */ - return 0; -} - static hb_bool_t hb_ft_get_glyph_extents (hb_font_t *font HB_UNUSED, void *font_data, @@ -200,16 +278,26 @@ hb_ft_get_glyph_extents (hb_font_t *font HB_UNUSED, hb_glyph_extents_t *extents, void *user_data HB_UNUSED) { - FT_Face ft_face = (FT_Face) font_data; - int load_flags = FT_LOAD_DEFAULT | FT_LOAD_NO_HINTING; + const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font_data; + FT_Face ft_face = ft_font->ft_face; - if (unlikely (FT_Load_Glyph (ft_face, glyph, load_flags))) + if (unlikely (FT_Load_Glyph (ft_face, glyph, ft_font->load_flags))) return false; extents->x_bearing = ft_face->glyph->metrics.horiBearingX; extents->y_bearing = ft_face->glyph->metrics.horiBearingY; extents->width = ft_face->glyph->metrics.width; extents->height = -ft_face->glyph->metrics.height; + if (font->x_scale < 0) + { + extents->x_bearing = -extents->x_bearing; + extents->width = -extents->width; + } + if (font->y_scale < 0) + { + extents->y_bearing = -extents->y_bearing; + extents->height = -extents->height; + } return true; } @@ -222,10 +310,10 @@ hb_ft_get_glyph_contour_point (hb_font_t *font HB_UNUSED, hb_position_t *y, void *user_data HB_UNUSED) { - FT_Face ft_face = (FT_Face) font_data; - int load_flags = FT_LOAD_DEFAULT; + const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font_data; + FT_Face ft_face = ft_font->ft_face; - if (unlikely (FT_Load_Glyph (ft_face, glyph, load_flags))) + if (unlikely (FT_Load_Glyph (ft_face, glyph, ft_font->load_flags))) return false; if (unlikely (ft_face->glyph->format != FT_GLYPH_FORMAT_OUTLINE)) @@ -247,9 +335,9 @@ hb_ft_get_glyph_name (hb_font_t *font HB_UNUSED, char *name, unsigned int size, void *user_data HB_UNUSED) { - FT_Face ft_face = (FT_Face) font_data; + const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font_data; - hb_bool_t ret = !FT_Get_Glyph_Name (ft_face, glyph, name, size); + hb_bool_t ret = !FT_Get_Glyph_Name (ft_font->ft_face, glyph, name, size); if (ret && (size && !*name)) ret = false; @@ -263,7 +351,8 @@ hb_ft_get_glyph_from_name (hb_font_t *font HB_UNUSED, hb_codepoint_t *glyph, void *user_data HB_UNUSED) { - FT_Face ft_face = (FT_Face) font_data; + const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font_data; + FT_Face ft_face = ft_font->ft_face; if (len < 0) *glyph = FT_Get_Name_Index (ft_face, (FT_String *) name); @@ -288,23 +377,77 @@ hb_ft_get_glyph_from_name (hb_font_t *font HB_UNUSED, return *glyph != 0; } +static hb_bool_t +hb_ft_get_font_h_extents (hb_font_t *font HB_UNUSED, + void *font_data, + hb_font_extents_t *metrics, + void *user_data HB_UNUSED) +{ + const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font_data; + FT_Face ft_face = ft_font->ft_face; + metrics->ascender = ft_face->size->metrics.ascender; + metrics->descender = ft_face->size->metrics.descender; + metrics->line_gap = ft_face->size->metrics.height - (ft_face->size->metrics.ascender - ft_face->size->metrics.descender); + if (font->y_scale < 0) + { + metrics->ascender = -metrics->ascender; + metrics->descender = -metrics->descender; + metrics->line_gap = -metrics->line_gap; + } + return true; +} + +static hb_font_funcs_t *static_ft_funcs = NULL; -static hb_font_funcs_t * -_hb_ft_get_font_funcs (void) +#ifdef HB_USE_ATEXIT +static +void free_static_ft_funcs (void) { - static const hb_font_funcs_t ft_ffuncs = { - HB_OBJECT_HEADER_STATIC, + hb_font_funcs_destroy (static_ft_funcs); +} +#endif - true, /* immutable */ +static void +_hb_ft_font_set_funcs (hb_font_t *font, FT_Face ft_face, bool unref) +{ +retry: + hb_font_funcs_t *funcs = (hb_font_funcs_t *) hb_atomic_ptr_get (&static_ft_funcs); - { -#define HB_FONT_FUNC_IMPLEMENT(name) hb_ft_get_##name, - HB_FONT_FUNCS_IMPLEMENT_CALLBACKS -#undef HB_FONT_FUNC_IMPLEMENT + if (unlikely (!funcs)) + { + funcs = hb_font_funcs_create (); + + hb_font_funcs_set_font_h_extents_func (funcs, hb_ft_get_font_h_extents, NULL, NULL); + //hb_font_funcs_set_font_v_extents_func (funcs, hb_ft_get_font_v_extents, NULL, NULL); + hb_font_funcs_set_nominal_glyph_func (funcs, hb_ft_get_nominal_glyph, NULL, NULL); + hb_font_funcs_set_variation_glyph_func (funcs, hb_ft_get_variation_glyph, NULL, NULL); + hb_font_funcs_set_glyph_h_advance_func (funcs, hb_ft_get_glyph_h_advance, NULL, NULL); + hb_font_funcs_set_glyph_v_advance_func (funcs, hb_ft_get_glyph_v_advance, NULL, NULL); + //hb_font_funcs_set_glyph_h_origin_func (funcs, hb_ft_get_glyph_h_origin, NULL, NULL); + hb_font_funcs_set_glyph_v_origin_func (funcs, hb_ft_get_glyph_v_origin, NULL, NULL); + hb_font_funcs_set_glyph_h_kerning_func (funcs, hb_ft_get_glyph_h_kerning, NULL, NULL); + //hb_font_funcs_set_glyph_v_kerning_func (funcs, hb_ft_get_glyph_v_kerning, NULL, NULL); + hb_font_funcs_set_glyph_extents_func (funcs, hb_ft_get_glyph_extents, NULL, NULL); + hb_font_funcs_set_glyph_contour_point_func (funcs, hb_ft_get_glyph_contour_point, NULL, NULL); + hb_font_funcs_set_glyph_name_func (funcs, hb_ft_get_glyph_name, NULL, NULL); + hb_font_funcs_set_glyph_from_name_func (funcs, hb_ft_get_glyph_from_name, NULL, NULL); + + hb_font_funcs_make_immutable (funcs); + + if (!hb_atomic_ptr_cmpexch (&static_ft_funcs, NULL, funcs)) { + hb_font_funcs_destroy (funcs); + goto retry; } + +#ifdef HB_USE_ATEXIT + atexit (free_static_ft_funcs); /* First person registers atexit() callback. */ +#endif }; - return const_cast (&ft_ffuncs); + hb_font_set_funcs (font, + funcs, + _hb_ft_font_create (ft_face, unref), + (hb_destroy_func_t) _hb_ft_font_destroy); } @@ -343,7 +486,7 @@ reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void *user_data) * * * Return value: (transfer full): - * Since: 1.0 + * Since: 0.9.2 **/ hb_face_t * hb_ft_face_create (FT_Face ft_face, @@ -377,7 +520,7 @@ hb_ft_face_create (FT_Face ft_face, * * * Return value: (transfer full): - * Since: 1.0 + * Since: 0.9.38 **/ hb_face_t * hb_ft_face_create_referenced (FT_Face ft_face) @@ -399,7 +542,7 @@ hb_ft_face_finalize (FT_Face ft_face) * * * Return value: (transfer full): - * Since: 1.0 + * Since: 0.9.2 **/ hb_face_t * hb_ft_face_create_cached (FT_Face ft_face) @@ -416,11 +559,6 @@ hb_ft_face_create_cached (FT_Face ft_face) return hb_face_reference ((hb_face_t *) ft_face->generic.data); } -static void -_do_nothing (void) -{ -} - /** * hb_ft_font_create: @@ -430,7 +568,7 @@ _do_nothing (void) * * * Return value: (transfer full): - * Since: 1.0 + * Since: 0.9.2 **/ hb_font_t * hb_ft_font_create (FT_Face ft_face, @@ -442,9 +580,7 @@ hb_ft_font_create (FT_Face ft_face, face = hb_ft_face_create (ft_face, destroy); font = hb_font_create (face); hb_face_destroy (face); - hb_font_set_funcs (font, - _hb_ft_get_font_funcs (), - ft_face, (hb_destroy_func_t) _do_nothing); + _hb_ft_font_set_funcs (font, ft_face, false); hb_font_set_scale (font, (int) (((uint64_t) ft_face->size->metrics.x_scale * (uint64_t) ft_face->units_per_EM + (1<<15)) >> 16), (int) (((uint64_t) ft_face->size->metrics.y_scale * (uint64_t) ft_face->units_per_EM + (1<<15)) >> 16)); @@ -464,7 +600,7 @@ hb_ft_font_create (FT_Face ft_face, * * * Return value: (transfer full): - * Since: 1.0 + * Since: 0.9.38 **/ hb_font_t * hb_ft_font_create_referenced (FT_Face ft_face) @@ -558,18 +694,6 @@ hb_ft_font_set_funcs (hb_font_t *font) ft_face->generic.data = blob; ft_face->generic.finalizer = (FT_Generic_Finalizer) _release_blob; - hb_font_set_funcs (font, - _hb_ft_get_font_funcs (), - ft_face, - (hb_destroy_func_t) FT_Done_Face); -} - -FT_Face -hb_ft_font_get_face (hb_font_t *font) -{ - if (font->destroy == (hb_destroy_func_t) FT_Done_Face || - font->destroy == (hb_destroy_func_t) _do_nothing) - return (FT_Face) font->user_data; - - return NULL; + _hb_ft_font_set_funcs (font, ft_face, true); + hb_ft_font_set_load_flags (font, FT_LOAD_DEFAULT | FT_LOAD_NO_HINTING); } diff --git a/src/hb-ft.h b/src/hb-ft.h index 92f4b36..dc8ef85 100644 --- a/src/hb-ft.h +++ b/src/hb-ft.h @@ -1,5 +1,6 @@ /* * Copyright © 2009 Red Hat, Inc. + * Copyright © 2015 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * @@ -22,6 +23,7 @@ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Red Hat Author(s): Behdad Esfahbod + * Google Author(s): Behdad Esfahbod */ #ifndef HB_FT_H @@ -57,7 +59,7 @@ HB_BEGIN_DECLS * probably should use (the more recent) hb_ft_face_create_referenced() * instead. */ -hb_face_t * +HB_EXTERN hb_face_t * hb_ft_face_create (FT_Face ft_face, hb_destroy_func_t destroy); @@ -69,7 +71,7 @@ hb_ft_face_create (FT_Face ft_face, * Client is still responsible for making sure that ft-face is destroyed * after hb-face is. */ -hb_face_t * +HB_EXTERN hb_face_t * hb_ft_face_create_cached (FT_Face ft_face); /* This version is like hb_ft_face_create(), except that it calls @@ -79,7 +81,7 @@ hb_ft_face_create_cached (FT_Face ft_face); * This is the most convenient version to use. Use it unless you have * very good reasons not to. */ -hb_face_t * +HB_EXTERN hb_face_t * hb_ft_face_create_referenced (FT_Face ft_face); @@ -96,23 +98,28 @@ hb_ft_face_create_referenced (FT_Face ft_face); /* See notes on hb_ft_face_create(). Same issues re lifecycle-management * apply here. Use hb_ft_font_create_referenced() if you can. */ -hb_font_t * +HB_EXTERN hb_font_t * hb_ft_font_create (FT_Face ft_face, hb_destroy_func_t destroy); /* See notes on hb_ft_face_create_referenced() re lifecycle-management * issues. */ -hb_font_t * +HB_EXTERN hb_font_t * hb_ft_font_create_referenced (FT_Face ft_face); +HB_EXTERN FT_Face +hb_ft_font_get_face (hb_font_t *font); + +HB_EXTERN void +hb_ft_font_set_load_flags (hb_font_t *font, int load_flags); + +HB_EXTERN int +hb_ft_font_get_load_flags (hb_font_t *font); /* Makes an hb_font_t use FreeType internally to implement font functions. */ -void +HB_EXTERN void hb_ft_font_set_funcs (hb_font_t *font); -FT_Face -hb_ft_font_get_face (hb_font_t *font); - HB_END_DECLS diff --git a/src/hb-glib.cc b/src/hb-glib.cc index 61dff5e..e203524 100644 --- a/src/hb-glib.cc +++ b/src/hb-glib.cc @@ -382,6 +382,11 @@ hb_glib_get_unicode_funcs (void) return const_cast (&_hb_glib_unicode_funcs); } +/** + * hb_glib_blob_create: + * + * Since: 0.9.38 + **/ hb_blob_t * hb_glib_blob_create (GBytes *gbytes) { diff --git a/src/hb-glib.h b/src/hb-glib.h index 1a8f42e..12c3e3b 100644 --- a/src/hb-glib.h +++ b/src/hb-glib.h @@ -36,17 +36,17 @@ HB_BEGIN_DECLS -hb_script_t +HB_EXTERN hb_script_t hb_glib_script_to_script (GUnicodeScript script); -GUnicodeScript +HB_EXTERN GUnicodeScript hb_glib_script_from_script (hb_script_t script); -hb_unicode_funcs_t * +HB_EXTERN hb_unicode_funcs_t * hb_glib_get_unicode_funcs (void); -hb_blob_t * +HB_EXTERN hb_blob_t * hb_glib_blob_create (GBytes *gbytes); diff --git a/src/hb-gobject-enums.h.tmpl b/src/hb-gobject-enums.h.tmpl index 6ecda06..e28510c 100644 --- a/src/hb-gobject-enums.h.tmpl +++ b/src/hb-gobject-enums.h.tmpl @@ -42,7 +42,7 @@ HB_BEGIN_DECLS /*** END file-header ***/ /*** BEGIN value-header ***/ -GType @enum_name@_get_type (void) G_GNUC_CONST; +HB_EXTERN GType @enum_name@_get_type (void) G_GNUC_CONST; #define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type ()) /*** END value-header ***/ diff --git a/src/hb-gobject-structs.cc b/src/hb-gobject-structs.cc index 2451b66..6bd6336 100644 --- a/src/hb-gobject-structs.cc +++ b/src/hb-gobject-structs.cc @@ -54,6 +54,17 @@ hb_gobject_##name##_get_type (void) \ #define HB_DEFINE_OBJECT_TYPE(name) \ HB_DEFINE_BOXED_TYPE (name, hb_##name##_reference, hb_##name##_destroy); +#define HB_DEFINE_VALUE_TYPE(name) \ + static hb_##name##_t *_hb_##name##_reference (const hb_##name##_t *l) \ + { \ + hb_##name##_t *c = (hb_##name##_t *) calloc (1, sizeof (hb_##name##_t)); \ + if (unlikely (!c)) return NULL; \ + *c = *l; \ + return c; \ + } \ + static void _hb_##name##_destroy (hb_##name##_t *l) { free (l); } \ + HB_DEFINE_BOXED_TYPE (name, _hb_##name##_reference, _hb_##name##_destroy); + HB_DEFINE_OBJECT_TYPE (buffer) HB_DEFINE_OBJECT_TYPE (blob) HB_DEFINE_OBJECT_TYPE (face) @@ -62,59 +73,8 @@ HB_DEFINE_OBJECT_TYPE (font_funcs) HB_DEFINE_OBJECT_TYPE (set) HB_DEFINE_OBJECT_TYPE (shape_plan) HB_DEFINE_OBJECT_TYPE (unicode_funcs) - - -static hb_feature_t *feature_reference (hb_feature_t *g) -{ - hb_feature_t *c = (hb_feature_t *) calloc (1, sizeof (hb_feature_t)); - if (unlikely (!c)) return NULL; - *c = *g; - return c; -} -static void feature_destroy (hb_feature_t *g) { free (g); } -HB_DEFINE_BOXED_TYPE (feature, feature_reference, feature_destroy) - -static hb_glyph_info_t *glyph_info_reference (hb_glyph_info_t *g) -{ - hb_glyph_info_t *c = (hb_glyph_info_t *) calloc (1, sizeof (hb_glyph_info_t)); - if (unlikely (!c)) return NULL; - *c = *g; - return c; -} -static void glyph_info_destroy (hb_glyph_info_t *g) { free (g); } -HB_DEFINE_BOXED_TYPE (glyph_info, glyph_info_reference, glyph_info_destroy) - -static hb_glyph_position_t *glyph_position_reference (hb_glyph_position_t *g) -{ - hb_glyph_position_t *c = (hb_glyph_position_t *) calloc (1, sizeof (hb_glyph_position_t)); - if (unlikely (!c)) return NULL; - *c = *g; - return c; -} -static void glyph_position_destroy (hb_glyph_position_t *g) { free (g); } -HB_DEFINE_BOXED_TYPE (glyph_position, glyph_position_reference, glyph_position_destroy) - -static hb_segment_properties_t *segment_properties_reference (hb_segment_properties_t *g) -{ - hb_segment_properties_t *c = (hb_segment_properties_t *) calloc (1, sizeof (hb_segment_properties_t)); - if (unlikely (!c)) return NULL; - *c = *g; - return c; -} -static void segment_properties_destroy (hb_segment_properties_t *g) { free (g); } -HB_DEFINE_BOXED_TYPE (segment_properties, segment_properties_reference, segment_properties_destroy) - -static hb_user_data_key_t user_data_key_reference (hb_user_data_key_t l) { return l; } -static void user_data_key_destroy (hb_user_data_key_t l) { } -HB_DEFINE_BOXED_TYPE (user_data_key, user_data_key_reference, user_data_key_destroy) - - -static hb_language_t *language_reference (hb_language_t *l) -{ - hb_language_t *c = (hb_language_t *) calloc (1, sizeof (hb_language_t)); - if (unlikely (!c)) return NULL; - *c = *l; - return c; -} -static void language_destroy (hb_language_t *l) { free (l); } -HB_DEFINE_BOXED_TYPE (language, language_reference, language_destroy) +HB_DEFINE_VALUE_TYPE (feature) +HB_DEFINE_VALUE_TYPE (glyph_info) +HB_DEFINE_VALUE_TYPE (glyph_position) +HB_DEFINE_VALUE_TYPE (segment_properties) +HB_DEFINE_VALUE_TYPE (user_data_key) diff --git a/src/hb-gobject-structs.h b/src/hb-gobject-structs.h index 4a88d56..0ea3b12 100644 --- a/src/hb-gobject-structs.h +++ b/src/hb-gobject-structs.h @@ -40,55 +40,65 @@ HB_BEGIN_DECLS /* Object types */ -GType hb_gobject_blob_get_type (void); +/** + * Since: 0.9.2 + **/ +HB_EXTERN GType hb_gobject_blob_get_type (void); #define HB_GOBJECT_TYPE_BLOB (hb_gobject_blob_get_type ()) -GType hb_gobject_buffer_get_type (void); +/** + * Since: 0.9.2 + **/ +HB_EXTERN GType hb_gobject_buffer_get_type (void); #define HB_GOBJECT_TYPE_BUFFER (hb_gobject_buffer_get_type ()) -GType hb_gobject_face_get_type (void); +/** + * Since: 0.9.2 + **/ +HB_EXTERN GType hb_gobject_face_get_type (void); #define HB_GOBJECT_TYPE_FACE (hb_gobject_face_get_type ()) -GType hb_gobject_font_get_type (void); +/** + * Since: 0.9.2 + **/ +HB_EXTERN GType hb_gobject_font_get_type (void); #define HB_GOBJECT_TYPE_FONT (hb_gobject_font_get_type ()) -GType hb_gobject_font_funcs_get_type (void); +/** + * Since: 0.9.2 + **/ +HB_EXTERN GType hb_gobject_font_funcs_get_type (void); #define HB_GOBJECT_TYPE_FONT_FUNCS (hb_gobject_font_funcs_get_type ()) -GType hb_gobject_set_get_type (void); +HB_EXTERN GType hb_gobject_set_get_type (void); #define HB_GOBJECT_TYPE_SET (hb_gobject_set_get_type ()) -GType hb_gobject_shape_plan_get_type (void); +HB_EXTERN GType hb_gobject_shape_plan_get_type (void); #define HB_GOBJECT_TYPE_SHAPE_PLAN (hb_gobject_shape_plan_get_type ()) -GType hb_gobject_unicode_funcs_get_type (void); +/** + * Since: 0.9.2 + **/ +HB_EXTERN GType hb_gobject_unicode_funcs_get_type (void); #define HB_GOBJECT_TYPE_UNICODE_FUNCS (hb_gobject_unicode_funcs_get_type ()) /* Value types */ -GType hb_gobject_feature_get_type (void); +HB_EXTERN GType hb_gobject_feature_get_type (void); #define HB_GOBJECT_TYPE_FEATURE (hb_gobject_feature_get_type ()) -GType hb_gobject_glyph_info_get_type (void); +HB_EXTERN GType hb_gobject_glyph_info_get_type (void); #define HB_GOBJECT_TYPE_GLYPH_INFO (hb_gobject_glyph_info_get_type ()) -GType hb_gobject_glyph_position_get_type (void); +HB_EXTERN GType hb_gobject_glyph_position_get_type (void); #define HB_GOBJECT_TYPE_GLYPH_POSITION (hb_gobject_glyph_position_get_type ()) -GType hb_gobject_segment_properties_get_type (void); +HB_EXTERN GType hb_gobject_segment_properties_get_type (void); #define HB_GOBJECT_TYPE_SEGMENT_PROPERTIES (hb_gobject_segment_properties_get_type ()) -GType hb_gobject_user_data_key_get_type (void); +HB_EXTERN GType hb_gobject_user_data_key_get_type (void); #define HB_GOBJECT_TYPE_USER_DATA_KEY (hb_gobject_user_data_key_get_type ()) -/* Currently gobject-introspection doesn't understand that hb_language_t - * can be passed by-value. As such we box it up. May remove in the - * future. - * - * https://bugzilla.gnome.org/show_bug.cgi?id=707656 - */ -GType hb_gobject_language_get_type (void); -#define HB_GOBJECT_TYPE_LANGUAGE (hb_gobject_language_get_type ()) HB_END_DECLS diff --git a/src/hb-graphite2.cc b/src/hb-graphite2.cc index 807c330..c32318d 100644 --- a/src/hb-graphite2.cc +++ b/src/hb-graphite2.cc @@ -138,6 +138,9 @@ _hb_graphite2_shaper_face_data_destroy (hb_graphite2_shaper_face_data_t *data) free (data); } +/* + * Since: 0.9.10 + */ gr_face * hb_graphite2_face_get_gr_face (hb_face_t *face) { @@ -172,6 +175,9 @@ _hb_graphite2_shaper_font_data_destroy (hb_graphite2_shaper_font_data_t *data) gr_font_destroy (data); } +/* + * Since: 0.9.10 + */ gr_font * hb_graphite2_font_get_gr_font (hb_font_t *font) { @@ -210,6 +216,7 @@ struct hb_graphite2_cluster_t { unsigned int base_glyph; unsigned int num_glyphs; unsigned int cluster; + float advance; }; hb_bool_t @@ -228,12 +235,11 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan, int lang_len = lang_end ? lang_end - lang : -1; gr_feature_val *feats = gr_face_featureval_for_lang (grface, lang ? hb_tag_from_string (lang, lang_len) : 0); - while (num_features--) + for (unsigned int i = 0; i < num_features; i++) { - const gr_feature_ref *fref = gr_face_find_fref (grface, features->tag); + const gr_feature_ref *fref = gr_face_find_fref (grface, features[i].tag); if (fref) - gr_fref_set_feature_value (fref, features->value, feats); - features++; + gr_fref_set_feature_value (fref, features[i].value, feats); } gr_segment *seg = NULL; @@ -249,6 +255,8 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan, for (unsigned int i = 0; i < buffer->len; ++i) chars[i] = buffer->info[i].codepoint; + /* TODO ensure_native_direction. */ + hb_tag_t script_tag[2]; hb_ot_tags_from_script (hb_buffer_get_script (buffer), &script_tag[0], &script_tag[1]); @@ -267,9 +275,11 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan, if (unlikely (!glyph_count)) { if (feats) gr_featureval_destroy (feats); gr_seg_destroy (seg); - return false; + buffer->len = 0; + return true; } + buffer->ensure (glyph_count); scratch = buffer->get_scratch_buffer (&scratch_size); while ((DIV_CEIL (sizeof (hb_graphite2_cluster_t) * buffer->len, sizeof (*scratch)) + DIV_CEIL (sizeof (hb_codepoint_t) * glyph_count, sizeof (*scratch))) > scratch_size) @@ -301,6 +311,12 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan, hb_codepoint_t *pg = gids; clusters[0].cluster = buffer->info[0].cluster; + float curradv = HB_DIRECTION_IS_BACKWARD(buffer->props.direction) ? gr_slot_origin_X(gr_seg_first_slot(seg)) : 0.; + if (HB_DIRECTION_IS_BACKWARD(buffer->props.direction)) + { + curradv = gr_slot_origin_X(gr_seg_first_slot(seg)); + clusters[0].advance = gr_seg_advance_X(seg) - curradv; + } for (is = gr_seg_first_slot (seg), ic = 0; is; is = gr_slot_next_in_segment (is), ic++) { unsigned int before = gr_slot_before (is); @@ -311,6 +327,7 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan, { clusters[ci-1].num_chars += clusters[ci].num_chars; clusters[ci-1].num_glyphs += clusters[ci].num_glyphs; + clusters[ci-1].advance += clusters[ci].advance; ci--; } @@ -322,16 +339,26 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan, c->num_chars = before - c->base_char; c->base_glyph = ic; c->num_glyphs = 0; - ci++; + if (HB_DIRECTION_IS_BACKWARD(buffer->props.direction)) + { + ci++; + clusters[ci].advance = curradv - gr_slot_origin_X(is); + } else { + clusters[ci].advance = gr_slot_origin_X(is) - curradv; + ci++; + } + curradv = gr_slot_origin_X(is); } clusters[ci].num_glyphs++; if (clusters[ci].base_char + clusters[ci].num_chars < after + 1) clusters[ci].num_chars = after + 1 - clusters[ci].base_char; } + + if (!HB_DIRECTION_IS_BACKWARD(buffer->props.direction)) + clusters[ci].advance = gr_seg_advance_X(seg) - curradv; ci++; - //buffer->clear_output (); for (unsigned int i = 0; i < ci; ++i) { for (unsigned int j = 0; j < clusters[i].num_glyphs; ++j) @@ -339,35 +366,57 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan, hb_glyph_info_t *info = &buffer->info[clusters[i].base_glyph + j]; info->codepoint = gids[clusters[i].base_glyph + j]; info->cluster = clusters[i].cluster; + info->var1.i32 = clusters[i].advance; // all glyphs in the cluster get the same advance } } buffer->len = glyph_count; - //buffer->swap_buffers (); - if (HB_DIRECTION_IS_BACKWARD(buffer->props.direction)) - curradvx = gr_seg_advance_X(seg); - - hb_glyph_position_t *pPos; - for (pPos = hb_buffer_get_glyph_positions (buffer, NULL), is = gr_seg_first_slot (seg); - is; pPos++, is = gr_slot_next_in_segment (is)) + float yscale = font->y_scale / font->x_scale; + /* Positioning. */ + if (!HB_DIRECTION_IS_BACKWARD(buffer->props.direction)) { - pPos->x_offset = gr_slot_origin_X (is) - curradvx; - pPos->y_offset = gr_slot_origin_Y (is) - curradvy; - pPos->x_advance = gr_slot_advance_X (is, grface, grfont); - pPos->y_advance = gr_slot_advance_Y (is, grface, grfont); - if (HB_DIRECTION_IS_BACKWARD (buffer->props.direction)) - curradvx -= pPos->x_advance; - pPos->x_offset = gr_slot_origin_X (is) - curradvx; - if (!HB_DIRECTION_IS_BACKWARD (buffer->props.direction)) - curradvx += pPos->x_advance; - pPos->y_offset = gr_slot_origin_Y (is) - curradvy; - curradvy += pPos->y_advance; + int currclus = -1; + const hb_glyph_info_t *info = buffer->info; + hb_glyph_position_t *pPos = hb_buffer_get_glyph_positions (buffer, NULL); + curradvx = 0; + for (is = gr_seg_first_slot (seg); is; pPos++, ++info, is = gr_slot_next_in_segment (is)) + { + pPos->x_offset = gr_slot_origin_X (is) - curradvx; + pPos->y_offset = gr_slot_origin_Y (is) * yscale - curradvy; + if (info->cluster != currclus) { + pPos->x_advance = info->var1.i32; + curradvx += pPos->x_advance; + currclus = info->cluster; + } else + pPos->x_advance = 0.; + + pPos->y_advance = gr_slot_advance_Y (is, grface, grfont) * yscale; + curradvy += pPos->y_advance; + } } - if (!HB_DIRECTION_IS_BACKWARD (buffer->props.direction)) - pPos[-1].x_advance += gr_seg_advance_X(seg) - curradvx; - - if (HB_DIRECTION_IS_BACKWARD (buffer->props.direction)) + else + { + int currclus = -1; + const hb_glyph_info_t *info = buffer->info; + hb_glyph_position_t *pPos = hb_buffer_get_glyph_positions (buffer, NULL); + curradvx = gr_seg_advance_X(seg); + for (is = gr_seg_first_slot (seg); is; pPos++, info++, is = gr_slot_next_in_segment (is)) + { + if (info->cluster != currclus) + { + pPos->x_advance = info->var1.i32; + if (currclus != -1) curradvx -= info[-1].var1.i32; + currclus = info->cluster; + } else + pPos->x_advance = 0.; + + pPos->y_advance = gr_slot_advance_Y (is, grface, grfont) * yscale; + curradvy -= pPos->y_advance; + pPos->x_offset = gr_slot_origin_X (is) - curradvx + pPos->x_advance; + pPos->y_offset = gr_slot_origin_Y (is) * yscale - curradvy; + } hb_buffer_reverse_clusters (buffer); + } if (feats) gr_featureval_destroy (feats); gr_seg_destroy (seg); diff --git a/src/hb-graphite2.h b/src/hb-graphite2.h index 3eae54a..122c3e4 100644 --- a/src/hb-graphite2.h +++ b/src/hb-graphite2.h @@ -36,10 +36,10 @@ HB_BEGIN_DECLS #define HB_GRAPHITE2_TAG_SILF HB_TAG('S','i','l','f') -gr_face * +HB_EXTERN gr_face * hb_graphite2_face_get_gr_face (hb_face_t *face); -gr_font * +HB_EXTERN gr_font * hb_graphite2_font_get_gr_font (hb_font_t *font); diff --git a/src/hb-icu.cc b/src/hb-icu.cc index 24cec9d..ee54721 100644 --- a/src/hb-icu.cc +++ b/src/hb-icu.cc @@ -36,6 +36,7 @@ #include #include #include +#include #include diff --git a/src/hb-icu.h b/src/hb-icu.h index f2f35f0..2db6a7b 100644 --- a/src/hb-icu.h +++ b/src/hb-icu.h @@ -36,14 +36,14 @@ HB_BEGIN_DECLS -hb_script_t +HB_EXTERN hb_script_t hb_icu_script_to_script (UScriptCode script); -UScriptCode +HB_EXTERN UScriptCode hb_icu_script_from_script (hb_script_t script); -hb_unicode_funcs_t * +HB_EXTERN hb_unicode_funcs_t * hb_icu_get_unicode_funcs (void); diff --git a/src/hb-mutex-private.hh b/src/hb-mutex-private.hh index a8ea39c..ed27035 100644 --- a/src/hb-mutex-private.hh +++ b/src/hb-mutex-private.hh @@ -39,7 +39,13 @@ /* We need external help for these */ -#if 0 +#if defined(HB_MUTEX_IMPL_INIT) \ + && defined(hb_mutex_impl_init) \ + && defined(hb_mutex_impl_lock) \ + && defined(hb_mutex_impl_unlock) \ + && defined(hb_mutex_impl_finish) + +/* Defined externally, i.e. in config.h; must have typedef'ed hb_mutex_impl_t as well. */ #elif !defined(HB_NO_MT) && (defined(_WIN32) || defined(__CYGWIN__)) @@ -113,10 +119,12 @@ typedef int hb_mutex_impl_t; #define hb_mutex_impl_unlock(M) HB_STMT_START {} HB_STMT_END #define hb_mutex_impl_finish(M) HB_STMT_START {} HB_STMT_END + #endif #define HB_MUTEX_INIT {HB_MUTEX_IMPL_INIT} + struct hb_mutex_t { /* TODO Add tracing. */ diff --git a/src/hb-object-private.hh b/src/hb-object-private.hh index 7bd0f16..6b73ff9 100644 --- a/src/hb-object-private.hh +++ b/src/hb-object-private.hh @@ -47,19 +47,22 @@ /* reference_count */ -#define HB_REFERENCE_COUNT_INVALID_VALUE ((hb_atomic_int_t) -1) -#define HB_REFERENCE_COUNT_INVALID {HB_REFERENCE_COUNT_INVALID_VALUE} +#define HB_REFERENCE_COUNT_INERT_VALUE -1 +#define HB_REFERENCE_COUNT_POISON_VALUE -0x0000DEAD +#define HB_REFERENCE_COUNT_INIT {HB_ATOMIC_INT_INIT(HB_REFERENCE_COUNT_INERT_VALUE)} + struct hb_reference_count_t { hb_atomic_int_t ref_count; - inline void init (int v) { ref_count = v; } - inline int inc (void) { return hb_atomic_int_add (const_cast (ref_count), 1); } - inline int dec (void) { return hb_atomic_int_add (const_cast (ref_count), -1); } - inline void finish (void) { ref_count = HB_REFERENCE_COUNT_INVALID_VALUE; } - - inline bool is_invalid (void) const { return ref_count == HB_REFERENCE_COUNT_INVALID_VALUE; } + inline void init (int v) { ref_count.set_unsafe (v); } + inline int get_unsafe (void) const { return ref_count.get_unsafe (); } + inline int inc (void) { return ref_count.inc (); } + inline int dec (void) { return ref_count.dec (); } + inline void finish (void) { ref_count.set_unsafe (HB_REFERENCE_COUNT_POISON_VALUE); } + inline bool is_inert (void) const { return ref_count.get_unsafe () == HB_REFERENCE_COUNT_INERT_VALUE; } + inline bool is_valid (void) const { return ref_count.get_unsafe () > 0; } }; @@ -102,7 +105,7 @@ struct hb_object_header_t hb_reference_count_t ref_count; hb_user_data_array_t user_data; -#define HB_OBJECT_HEADER_STATIC {HB_REFERENCE_COUNT_INVALID, HB_USER_DATA_ARRAY_INIT} +#define HB_OBJECT_HEADER_STATIC {HB_REFERENCE_COUNT_INIT, HB_USER_DATA_ARRAY_INIT} private: ASSERT_POD (); @@ -117,7 +120,7 @@ static inline void hb_object_trace (const Type *obj, const char *function) DEBUG_MSG (OBJECT, (void *) obj, "%s refcount=%d", function, - obj ? obj->header.ref_count.ref_count : 0); + obj ? obj->header.ref_count.get_unsafe () : 0); } template @@ -141,7 +144,12 @@ static inline void hb_object_init (Type *obj) template static inline bool hb_object_is_inert (const Type *obj) { - return unlikely (obj->header.ref_count.is_invalid ()); + return unlikely (obj->header.ref_count.is_inert ()); +} +template +static inline bool hb_object_is_valid (const Type *obj) +{ + return likely (obj->header.ref_count.is_valid ()); } template static inline Type *hb_object_reference (Type *obj) @@ -149,6 +157,7 @@ static inline Type *hb_object_reference (Type *obj) hb_object_trace (obj, HB_FUNC); if (unlikely (!obj || hb_object_is_inert (obj))) return obj; + assert (hb_object_is_valid (obj)); obj->header.ref_count.inc (); return obj; } @@ -158,6 +167,7 @@ static inline bool hb_object_destroy (Type *obj) hb_object_trace (obj, HB_FUNC); if (unlikely (!obj || hb_object_is_inert (obj))) return false; + assert (hb_object_is_valid (obj)); if (obj->header.ref_count.dec () != 1) return false; @@ -174,6 +184,7 @@ static inline bool hb_object_set_user_data (Type *obj, { if (unlikely (!obj || hb_object_is_inert (obj))) return false; + assert (hb_object_is_valid (obj)); return obj->header.user_data.set (key, data, destroy, replace); } @@ -183,6 +194,7 @@ static inline void *hb_object_get_user_data (Type *obj, { if (unlikely (!obj || hb_object_is_inert (obj))) return NULL; + assert (hb_object_is_valid (obj)); return obj->header.user_data.get (key); } diff --git a/src/hb-open-file-private.hh b/src/hb-open-file-private.hh index 178bc7c..5357ddc 100644 --- a/src/hb-open-file-private.hh +++ b/src/hb-open-file-private.hh @@ -56,7 +56,7 @@ typedef struct TableRecord inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this)); + return_trace (c->check_struct (this)); } Tag tag; /* 4-byte identifier. */ @@ -106,7 +106,7 @@ typedef struct OffsetTable inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this) && c->check_array (tables, TableRecord::static_size, numTables)); + return_trace (c->check_struct (this) && c->check_array (tables, TableRecord::static_size, numTables)); } protected: @@ -135,12 +135,12 @@ struct TTCHeaderVersion1 inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - return TRACE_RETURN (table.sanitize (c, this)); + return_trace (table.sanitize (c, this)); } protected: Tag ttcTag; /* TrueType Collection ID string: 'ttcf' */ - FixedVersion version; /* Version of the TTC Header (1.0), + FixedVersion<>version; /* Version of the TTC Header (1.0), * 0x00010000u */ ArrayOf, ULONG> table; /* Array of offsets to the OffsetTable for each font @@ -175,11 +175,11 @@ struct TTCHeader inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - if (unlikely (!u.header.version.sanitize (c))) return TRACE_RETURN (false); + if (unlikely (!u.header.version.sanitize (c))) return_trace (false); switch (u.header.version.major) { case 2: /* version 2 is compatible with version 1 */ - case 1: return TRACE_RETURN (u.version1.sanitize (c)); - default:return TRACE_RETURN (true); + case 1: return_trace (u.version1.sanitize (c)); + default:return_trace (true); } } @@ -187,7 +187,7 @@ struct TTCHeader union { struct { Tag ttcTag; /* TrueType Collection ID string: 'ttcf' */ - FixedVersion version; /* Version of the TTC Header (1.0 or 2.0), + FixedVersion<>version; /* Version of the TTC Header (1.0 or 2.0), * 0x00010000u or 0x00020000u */ } header; TTCHeaderVersion1 version1; @@ -240,14 +240,14 @@ struct OpenTypeFontFile inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - if (unlikely (!u.tag.sanitize (c))) return TRACE_RETURN (false); + if (unlikely (!u.tag.sanitize (c))) return_trace (false); switch (u.tag) { case CFFTag: /* All the non-collection tags */ case TrueTag: case Typ1Tag: - case TrueTypeTag: return TRACE_RETURN (u.fontFace.sanitize (c)); - case TTCTag: return TRACE_RETURN (u.ttcHeader.sanitize (c)); - default: return TRACE_RETURN (true); + case TrueTypeTag: return_trace (u.fontFace.sanitize (c)); + case TTCTag: return_trace (u.ttcHeader.sanitize (c)); + default: return_trace (true); } } diff --git a/src/hb-open-type-private.hh b/src/hb-open-type-private.hh index 75a0f56..df683ca 100644 --- a/src/hb-open-type-private.hh +++ b/src/hb-open-type-private.hh @@ -101,10 +101,8 @@ static inline Type& StructAfter(TObject &X) #define DEFINE_SIZE_STATIC(size) \ DEFINE_INSTANCE_ASSERTION (sizeof (*this) == (size)); \ static const unsigned int static_size = (size); \ - static const unsigned int min_size = (size) - -/* Size signifying variable-sized array */ -#define VAR 1 + static const unsigned int min_size = (size); \ + inline unsigned int get_size (void) const { return (size); } #define DEFINE_SIZE_UNION(size, _member) \ DEFINE_INSTANCE_ASSERTION (this->u._member.static_size == (size)); \ @@ -154,6 +152,20 @@ ASSERT_STATIC (Type::min_size + 1 <= sizeof (_Null##Type)) #define Null(Type) Null() +/* + * Dispatch + */ + +template +struct hb_dispatch_context_t +{ + static const unsigned int max_debug_depth = MaxDebugDepth; + typedef Return return_t; + template + inline bool may_dispatch (const T *obj, const F *format) { return true; } + static return_t no_dispatch_return_value (void) { return Context::default_return_value (); } +}; + /* * Sanitize @@ -171,20 +183,26 @@ ASSERT_STATIC (Type::min_size + 1 <= sizeof (_Null##Type)) /* This limits sanitizing time on really broken fonts. */ #ifndef HB_SANITIZE_MAX_EDITS -#define HB_SANITIZE_MAX_EDITS 100 +#define HB_SANITIZE_MAX_EDITS 32 #endif -struct hb_sanitize_context_t +struct hb_sanitize_context_t : + hb_dispatch_context_t { + inline hb_sanitize_context_t (void) : + debug_depth (0), + start (NULL), end (NULL), + writable (false), edit_count (0), + blob (NULL) {} + inline const char *get_name (void) { return "SANITIZE"; } - static const unsigned int max_debug_depth = HB_DEBUG_SANITIZE; - typedef bool return_t; template inline bool may_dispatch (const T *obj, const F *format) { return format->sanitize (this); } template inline return_t dispatch (const T &obj) { return obj.sanitize (this); } static return_t default_return_value (void) { return true; } + static return_t no_dispatch_return_value (void) { return false; } bool stop_sublookup_iteration (const return_t r) const { return !r; } inline void init (hb_blob_t *b) @@ -295,7 +313,7 @@ template struct Sanitizer { static hb_blob_t *sanitize (hb_blob_t *blob) { - hb_sanitize_context_t c[1] = {{0, NULL, NULL, false, 0, NULL}}; + hb_sanitize_context_t c[1]; bool sane; /* TODO is_sane() stuff */ @@ -379,9 +397,9 @@ struct Sanitizer struct hb_serialize_context_t { - inline hb_serialize_context_t (void *start, unsigned int size) + inline hb_serialize_context_t (void *start_, unsigned int size) { - this->start = (char *) start; + this->start = (char *) start_; this->end = this->start + size; this->ran_out_of_room = false; @@ -475,10 +493,10 @@ struct hb_serialize_context_t return reinterpret_cast (&obj); } - inline void truncate (void *head) + inline void truncate (void *new_head) { - assert (this->start < head && head <= this->head); - this->head = (char *) head; + assert (this->start < new_head && new_head <= this->head); + this->head = (char *) new_head; } unsigned int debug_depth; @@ -536,6 +554,20 @@ struct Supplier template struct BEInt; template +struct BEInt +{ + public: + inline void set (Type V) + { + v = V; + } + inline operator Type (void) const + { + return v; + } + private: uint8_t v; +}; +template struct BEInt { public: @@ -610,7 +642,7 @@ struct IntType inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - return TRACE_RETURN (likely (c->check_struct (this))); + return_trace (likely (c->check_struct (this))); } protected: BEInt v; @@ -618,7 +650,7 @@ struct IntType DEFINE_SIZE_STATIC (Size); }; -typedef uint8_t BYTE; /* 8-bit unsigned integer. */ +typedef IntType BYTE; /* 8-bit unsigned integer. */ typedef IntType USHORT; /* 16-bit unsigned integer. */ typedef IntType SHORT; /* 16-bit signed integer. */ typedef IntType ULONG; /* 32-bit unsigned integer. */ @@ -631,6 +663,24 @@ typedef SHORT FWORD; /* 16-bit unsigned integer (USHORT) that describes a quantity in FUnits. */ typedef USHORT UFWORD; +/* 16-bit signed fixed number with the low 14 bits of fraction (2.14). */ +struct F2DOT14 : SHORT +{ + //inline float to_float (void) const { return ???; } + //inline void set_float (float f) { v.set (f * ???); } + public: + DEFINE_SIZE_STATIC (2); +}; + +/* 32-bit signed fixed-point number (16.16). */ +struct Fixed: LONG +{ + //inline float to_float (void) const { return ???; } + //inline void set_float (float f) { v.set (f * ???); } + public: + DEFINE_SIZE_STATIC (4); +}; + /* Date represented in number of seconds since 12:00 midnight, January 1, * 1904. The value is represented as a signed 64-bit integer. */ struct LONGDATETIME @@ -638,7 +688,7 @@ struct LONGDATETIME inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - return TRACE_RETURN (likely (c->check_struct (this))); + return_trace (likely (c->check_struct (this))); } protected: LONG major; @@ -708,20 +758,21 @@ struct CheckSum : ULONG * Version Numbers */ +template struct FixedVersion { - inline uint32_t to_int (void) const { return (major << 16) + minor; } + inline uint32_t to_int (void) const { return (major << (sizeof(FixedType) * 8)) + minor; } inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this)); + return_trace (c->check_struct (this)); } - USHORT major; - USHORT minor; + FixedType major; + FixedType minor; public: - DEFINE_SIZE_STATIC (4); + DEFINE_SIZE_STATIC (2 * sizeof(FixedType)); }; @@ -751,21 +802,21 @@ struct OffsetTo : Offset inline bool sanitize (hb_sanitize_context_t *c, const void *base) const { TRACE_SANITIZE (this); - if (unlikely (!c->check_struct (this))) return TRACE_RETURN (false); + if (unlikely (!c->check_struct (this))) return_trace (false); unsigned int offset = *this; - if (unlikely (!offset)) return TRACE_RETURN (true); + if (unlikely (!offset)) return_trace (true); const Type &obj = StructAtOffset (base, offset); - return TRACE_RETURN (likely (obj.sanitize (c)) || neuter (c)); + return_trace (likely (obj.sanitize (c)) || neuter (c)); } template inline bool sanitize (hb_sanitize_context_t *c, const void *base, T user_data) const { TRACE_SANITIZE (this); - if (unlikely (!c->check_struct (this))) return TRACE_RETURN (false); + if (unlikely (!c->check_struct (this))) return_trace (false); unsigned int offset = *this; - if (unlikely (!offset)) return TRACE_RETURN (true); + if (unlikely (!offset)) return_trace (true); const Type &obj = StructAtOffset (base, offset); - return TRACE_RETURN (likely (obj.sanitize (c, user_data)) || neuter (c)); + return_trace (likely (obj.sanitize (c, user_data)) || neuter (c)); } /* Set the offset to Null */ @@ -816,10 +867,10 @@ struct ArrayOf unsigned int items_len) { TRACE_SERIALIZE (this); - if (unlikely (!c->extend_min (*this))) return TRACE_RETURN (false); + if (unlikely (!c->extend_min (*this))) return_trace (false); len.set (items_len); /* TODO(serialize) Overflow? */ - if (unlikely (!c->extend (*this))) return TRACE_RETURN (false); - return TRACE_RETURN (true); + if (unlikely (!c->extend (*this))) return_trace (false); + return_trace (true); } inline bool serialize (hb_serialize_context_t *c, @@ -827,17 +878,17 @@ struct ArrayOf unsigned int items_len) { TRACE_SERIALIZE (this); - if (unlikely (!serialize (c, items_len))) return TRACE_RETURN (false); + if (unlikely (!serialize (c, items_len))) return_trace (false); for (unsigned int i = 0; i < items_len; i++) array[i] = items[i]; items.advance (items_len); - return TRACE_RETURN (true); + return_trace (true); } inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - if (unlikely (!sanitize_shallow (c))) return TRACE_RETURN (false); + if (unlikely (!sanitize_shallow (c))) return_trace (false); /* Note: for structs that do not reference other structs, * we do not need to call their sanitize() as we already did @@ -848,28 +899,28 @@ struct ArrayOf */ (void) (false && array[0].sanitize (c)); - return TRACE_RETURN (true); + return_trace (true); } inline bool sanitize (hb_sanitize_context_t *c, const void *base) const { TRACE_SANITIZE (this); - if (unlikely (!sanitize_shallow (c))) return TRACE_RETURN (false); + if (unlikely (!sanitize_shallow (c))) return_trace (false); unsigned int count = len; for (unsigned int i = 0; i < count; i++) if (unlikely (!array[i].sanitize (c, base))) - return TRACE_RETURN (false); - return TRACE_RETURN (true); + return_trace (false); + return_trace (true); } template inline bool sanitize (hb_sanitize_context_t *c, const void *base, T user_data) const { TRACE_SANITIZE (this); - if (unlikely (!sanitize_shallow (c))) return TRACE_RETURN (false); + if (unlikely (!sanitize_shallow (c))) return_trace (false); unsigned int count = len; for (unsigned int i = 0; i < count; i++) if (unlikely (!array[i].sanitize (c, base, user_data))) - return TRACE_RETURN (false); - return TRACE_RETURN (true); + return_trace (false); + return_trace (true); } template @@ -886,7 +937,7 @@ struct ArrayOf inline bool sanitize_shallow (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this) && c->check_array (this, Type::static_size, len)); + return_trace (c->check_struct (this) && c->check_array (array, Type::static_size, len)); } public: @@ -913,13 +964,13 @@ struct OffsetListOf : OffsetArrayOf inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - return TRACE_RETURN (OffsetArrayOf::sanitize (c, this)); + return_trace (OffsetArrayOf::sanitize (c, this)); } template inline bool sanitize (hb_sanitize_context_t *c, T user_data) const { TRACE_SANITIZE (this); - return TRACE_RETURN (OffsetArrayOf::sanitize (c, this, user_data)); + return_trace (OffsetArrayOf::sanitize (c, this, user_data)); } }; @@ -941,14 +992,14 @@ struct HeadlessArrayOf unsigned int items_len) { TRACE_SERIALIZE (this); - if (unlikely (!c->extend_min (*this))) return TRACE_RETURN (false); + if (unlikely (!c->extend_min (*this))) return_trace (false); len.set (items_len); /* TODO(serialize) Overflow? */ - if (unlikely (!items_len)) return TRACE_RETURN (true); - if (unlikely (!c->extend (*this))) return TRACE_RETURN (false); + if (unlikely (!items_len)) return_trace (true); + if (unlikely (!c->extend (*this))) return_trace (false); for (unsigned int i = 0; i < items_len - 1; i++) array[i] = items[i]; items.advance (items_len - 1); - return TRACE_RETURN (true); + return_trace (true); } inline bool sanitize_shallow (hb_sanitize_context_t *c) const @@ -960,7 +1011,7 @@ struct HeadlessArrayOf inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - if (unlikely (!sanitize_shallow (c))) return TRACE_RETURN (false); + if (unlikely (!sanitize_shallow (c))) return_trace (false); /* Note: for structs that do not reference other structs, * we do not need to call their sanitize() as we already did @@ -971,7 +1022,7 @@ struct HeadlessArrayOf */ (void) (false && array[0].sanitize (c)); - return TRACE_RETURN (true); + return_trace (true); } LenType len; diff --git a/src/hb-ot-cmap-table.hh b/src/hb-ot-cmap-table.hh index 0482312..d7a94a1 100644 --- a/src/hb-ot-cmap-table.hh +++ b/src/hb-ot-cmap-table.hh @@ -54,7 +54,7 @@ struct CmapSubtableFormat0 inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this)); + return_trace (c->check_struct (this)); } protected: @@ -69,68 +69,85 @@ struct CmapSubtableFormat0 struct CmapSubtableFormat4 { - inline bool get_glyph (hb_codepoint_t codepoint, hb_codepoint_t *glyph) const + struct accelerator_t { - unsigned int segCount; - const USHORT *endCount; - const USHORT *startCount; - const USHORT *idDelta; - const USHORT *idRangeOffset; - const USHORT *glyphIdArray; - unsigned int glyphIdArrayLength; + inline void init (const CmapSubtableFormat4 *subtable) + { + segCount = subtable->segCountX2 / 2; + endCount = subtable->values; + startCount = endCount + segCount + 1; + idDelta = startCount + segCount; + idRangeOffset = idDelta + segCount; + glyphIdArray = idRangeOffset + segCount; + glyphIdArrayLength = (subtable->length - 16 - 8 * segCount) / 2; + } - segCount = this->segCountX2 / 2; - endCount = this->values; - startCount = endCount + segCount + 1; - idDelta = startCount + segCount; - idRangeOffset = idDelta + segCount; - glyphIdArray = idRangeOffset + segCount; - glyphIdArrayLength = (this->length - 16 - 8 * segCount) / 2; - - /* Custom two-array bsearch. */ - int min = 0, max = (int) segCount - 1; - unsigned int i; - while (min <= max) + static inline bool get_glyph_func (const void *obj, hb_codepoint_t codepoint, hb_codepoint_t *glyph) { - int mid = (min + max) / 2; - if (codepoint < startCount[mid]) - max = mid - 1; - else if (codepoint > endCount[mid]) - min = mid + 1; + const accelerator_t *thiz = (const accelerator_t *) obj; + + /* Custom two-array bsearch. */ + int min = 0, max = (int) thiz->segCount - 1; + const USHORT *startCount = thiz->startCount; + const USHORT *endCount = thiz->endCount; + unsigned int i; + while (min <= max) + { + int mid = (min + max) / 2; + if (codepoint < startCount[mid]) + max = mid - 1; + else if (codepoint > endCount[mid]) + min = mid + 1; + else + { + i = mid; + goto found; + } + } + return false; + + found: + hb_codepoint_t gid; + unsigned int rangeOffset = thiz->idRangeOffset[i]; + if (rangeOffset == 0) + gid = codepoint + thiz->idDelta[i]; else { - i = mid; - goto found; + /* Somebody has been smoking... */ + unsigned int index = rangeOffset / 2 + (codepoint - thiz->startCount[i]) + i - thiz->segCount; + if (unlikely (index >= thiz->glyphIdArrayLength)) + return false; + gid = thiz->glyphIdArray[index]; + if (unlikely (!gid)) + return false; + gid += thiz->idDelta[i]; } - } - return false; - - found: - hb_codepoint_t gid; - unsigned int rangeOffset = idRangeOffset[i]; - if (rangeOffset == 0) - gid = codepoint + idDelta[i]; - else - { - /* Somebody has been smoking... */ - unsigned int index = rangeOffset / 2 + (codepoint - startCount[i]) + i - segCount; - if (unlikely (index >= glyphIdArrayLength)) - return false; - gid = glyphIdArray[index]; - if (unlikely (!gid)) - return false; - gid += idDelta[i]; + + *glyph = gid & 0xFFFFu; + return true; } - *glyph = gid & 0xFFFFu; - return true; + const USHORT *endCount; + const USHORT *startCount; + const USHORT *idDelta; + const USHORT *idRangeOffset; + const USHORT *glyphIdArray; + unsigned int segCount; + unsigned int glyphIdArrayLength; + }; + + inline bool get_glyph (hb_codepoint_t codepoint, hb_codepoint_t *glyph) const + { + accelerator_t accel; + accel.init (this); + return accel.get_glyph_func (&accel, codepoint, glyph); } inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); if (unlikely (!c->check_struct (this))) - return TRACE_RETURN (false); + return_trace (false); if (unlikely (!c->check_range (this, length))) { @@ -141,10 +158,10 @@ struct CmapSubtableFormat4 (uintptr_t) (c->end - (char *) this)); if (!c->try_set (&length, new_length)) - return TRACE_RETURN (false); + return_trace (false); } - return TRACE_RETURN (16 + 4 * (unsigned int) segCountX2 <= length); + return_trace (16 + 4 * (unsigned int) segCountX2 <= length); } protected: @@ -187,7 +204,7 @@ struct CmapSubtableLongGroup inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this)); + return_trace (c->check_struct (this)); } private: @@ -215,7 +232,7 @@ struct CmapSubtableTrimmed inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this) && glyphIdArray.sanitize (c)); + return_trace (c->check_struct (this) && glyphIdArray.sanitize (c)); } protected: @@ -248,7 +265,7 @@ struct CmapSubtableLongSegmented inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this) && groups.sanitize (c)); + return_trace (c->check_struct (this) && groups.sanitize (c)); } protected: @@ -295,7 +312,7 @@ struct UnicodeValueRange inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this)); + return_trace (c->check_struct (this)); } UINT24 startUnicodeValue; /* First value in this range. */ @@ -317,7 +334,7 @@ struct UVSMapping inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this)); + return_trace (c->check_struct (this)); } UINT24 unicodeValue; /* Base Unicode value of the UVS */ @@ -357,9 +374,9 @@ struct VariationSelectorRecord inline bool sanitize (hb_sanitize_context_t *c, const void *base) const { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this) && - defaultUVS.sanitize (c, base) && - nonDefaultUVS.sanitize (c, base)); + return_trace (c->check_struct (this) && + defaultUVS.sanitize (c, base) && + nonDefaultUVS.sanitize (c, base)); } UINT24 varSelector; /* Variation selector. */ @@ -383,12 +400,12 @@ struct CmapSubtableFormat14 inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this) && - record.sanitize (c, this)); + return_trace (c->check_struct (this) && + record.sanitize (c, this)); } protected: - USHORT format; /* Format number is set to 0. */ + USHORT format; /* Format number is set to 14. */ ULONG lengthZ; /* Byte length of this subtable. */ SortedArrayOf record; /* Variation selector records; sorted @@ -416,33 +433,23 @@ struct CmapSubtable } } - inline glyph_variant_t get_glyph_variant (hb_codepoint_t codepoint, - hb_codepoint_t variation_selector, - hb_codepoint_t *glyph) const - { - switch (u.format) { - case 14: return u.format14.get_glyph_variant(codepoint, variation_selector, glyph); - default: return GLYPH_VARIANT_NOT_FOUND; - } - } - inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - if (!u.format.sanitize (c)) return TRACE_RETURN (false); + if (!u.format.sanitize (c)) return_trace (false); switch (u.format) { - case 0: return TRACE_RETURN (u.format0 .sanitize (c)); - case 4: return TRACE_RETURN (u.format4 .sanitize (c)); - case 6: return TRACE_RETURN (u.format6 .sanitize (c)); - case 10: return TRACE_RETURN (u.format10.sanitize (c)); - case 12: return TRACE_RETURN (u.format12.sanitize (c)); - case 13: return TRACE_RETURN (u.format13.sanitize (c)); - case 14: return TRACE_RETURN (u.format14.sanitize (c)); - default:return TRACE_RETURN (true); + case 0: return_trace (u.format0 .sanitize (c)); + case 4: return_trace (u.format4 .sanitize (c)); + case 6: return_trace (u.format6 .sanitize (c)); + case 10: return_trace (u.format10.sanitize (c)); + case 12: return_trace (u.format12.sanitize (c)); + case 13: return_trace (u.format13.sanitize (c)); + case 14: return_trace (u.format14.sanitize (c)); + default:return_trace (true); } } - protected: + public: union { USHORT format; /* Format identifier */ CmapSubtableFormat0 format0; @@ -473,8 +480,8 @@ struct EncodingRecord inline bool sanitize (hb_sanitize_context_t *c, const void *base) const { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this) && - subtable.sanitize (c, base)); + return_trace (c->check_struct (this) && + subtable.sanitize (c, base)); } USHORT platformID; /* Platform ID. */ @@ -509,9 +516,9 @@ struct cmap inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this) && - likely (version == 0) && - encodingRecord.sanitize (c, this)); + return_trace (c->check_struct (this) && + likely (version == 0) && + encodingRecord.sanitize (c, this)); } USHORT version; /* Table version number (0). */ diff --git a/src/hb-ot-font.cc b/src/hb-ot-font.cc index 2af2f54..39fc849 100644 --- a/src/hb-ot-font.cc +++ b/src/hb-ot-font.cc @@ -31,8 +31,12 @@ #include "hb-font-private.hh" #include "hb-ot-cmap-table.hh" +#include "hb-ot-glyf-table.hh" +#include "hb-ot-head-table.hh" #include "hb-ot-hhea-table.hh" #include "hb-ot-hmtx-table.hh" +#include "hb-ot-os2-table.hh" +//#include "hb-ot-post-table.hh" struct hb_ot_face_metrics_accelerator_t @@ -40,24 +44,58 @@ struct hb_ot_face_metrics_accelerator_t unsigned int num_metrics; unsigned int num_advances; unsigned int default_advance; + unsigned short ascender; + unsigned short descender; + unsigned short line_gap; + const OT::_mtx *table; hb_blob_t *blob; inline void init (hb_face_t *face, - hb_tag_t _hea_tag, hb_tag_t _mtx_tag, - unsigned int default_advance) + hb_tag_t _hea_tag, + hb_tag_t _mtx_tag, + hb_tag_t os2_tag) { - this->default_advance = default_advance; - this->num_metrics = face->get_num_glyphs (); + this->default_advance = face->get_upem (); + + bool got_font_extents = false; + if (os2_tag) + { + hb_blob_t *os2_blob = OT::Sanitizer::sanitize (face->reference_table (os2_tag)); + const OT::os2 *os2 = OT::Sanitizer::lock_instance (os2_blob); +#define USE_TYPO_METRICS (1u<<7) + if (0 != (os2->fsSelection & USE_TYPO_METRICS)) + { + this->ascender = os2->sTypoAscender; + this->descender = os2->sTypoDescender; + this->line_gap = os2->sTypoLineGap; + got_font_extents = (this->ascender | this->descender) != 0; + } + hb_blob_destroy (os2_blob); + } hb_blob_t *_hea_blob = OT::Sanitizer::sanitize (face->reference_table (_hea_tag)); const OT::_hea *_hea = OT::Sanitizer::lock_instance (_hea_blob); this->num_advances = _hea->numberOfLongMetrics; + if (!got_font_extents) + { + this->ascender = _hea->ascender; + this->descender = _hea->descender; + this->line_gap = _hea->lineGap; + } hb_blob_destroy (_hea_blob); this->blob = OT::Sanitizer::sanitize (face->reference_table (_mtx_tag)); - if (unlikely (!this->num_advances || - 2 * (this->num_advances + this->num_metrics) < hb_blob_get_length (this->blob))) + + /* Cap num_metrics() and num_advances() based on table length. */ + unsigned int len = hb_blob_get_length (this->blob); + if (unlikely (this->num_advances * 4 > len)) + this->num_advances = len / 4; + this->num_metrics = this->num_advances + (len - 4 * this->num_advances) / 2; + + /* We MUST set num_metrics to zero if num_advances is zero. + * Our get_advance() depends on that. */ + if (unlikely (!this->num_advances)) { this->num_metrics = this->num_advances = 0; hb_blob_destroy (this->blob); @@ -76,8 +114,8 @@ struct hb_ot_face_metrics_accelerator_t if (unlikely (glyph >= this->num_metrics)) { /* If this->num_metrics is zero, it means we don't have the metrics table - * for this direction: return one EM. Otherwise, it means that the glyph - * index is out of bound: return zero. */ + * for this direction: return default advance. Otherwise, it means that the + * glyph index is out of bound: return zero. */ if (this->num_metrics) return 0; else @@ -91,10 +129,99 @@ struct hb_ot_face_metrics_accelerator_t } }; +struct hb_ot_face_glyf_accelerator_t +{ + bool short_offset; + unsigned int num_glyphs; + const OT::loca *loca; + const OT::glyf *glyf; + hb_blob_t *loca_blob; + hb_blob_t *glyf_blob; + unsigned int glyf_len; + + inline void init (hb_face_t *face) + { + hb_blob_t *head_blob = OT::Sanitizer::sanitize (face->reference_table (HB_OT_TAG_head)); + const OT::head *head = OT::Sanitizer::lock_instance (head_blob); + if ((unsigned int) head->indexToLocFormat > 1 || head->glyphDataFormat != 0) + { + /* Unknown format. Leave num_glyphs=0, that takes care of disabling us. */ + hb_blob_destroy (head_blob); + return; + } + this->short_offset = 0 == head->indexToLocFormat; + hb_blob_destroy (head_blob); + + this->loca_blob = OT::Sanitizer::sanitize (face->reference_table (HB_OT_TAG_loca)); + this->loca = OT::Sanitizer::lock_instance (this->loca_blob); + this->glyf_blob = OT::Sanitizer::sanitize (face->reference_table (HB_OT_TAG_glyf)); + this->glyf = OT::Sanitizer::lock_instance (this->glyf_blob); + + this->num_glyphs = MAX (1u, hb_blob_get_length (this->loca_blob) / (this->short_offset ? 2 : 4)) - 1; + this->glyf_len = hb_blob_get_length (this->glyf_blob); + } + + inline void fini (void) + { + hb_blob_destroy (this->loca_blob); + hb_blob_destroy (this->glyf_blob); + } + + inline bool get_extents (hb_codepoint_t glyph, + hb_glyph_extents_t *extents) const + { + if (unlikely (glyph >= this->num_glyphs)) + return false; + + unsigned int start_offset, end_offset; + if (this->short_offset) + { + start_offset = 2 * this->loca->u.shortsZ[glyph]; + end_offset = 2 * this->loca->u.shortsZ[glyph + 1]; + } + else + { + start_offset = this->loca->u.longsZ[glyph]; + end_offset = this->loca->u.longsZ[glyph + 1]; + } + + if (start_offset > end_offset || end_offset > this->glyf_len) + return false; + + if (end_offset - start_offset < OT::glyfGlyphHeader::static_size) + return true; /* Empty glyph; zero extents. */ + + const OT::glyfGlyphHeader &glyph_header = OT::StructAtOffset (this->glyf, start_offset); + + extents->x_bearing = MIN (glyph_header.xMin, glyph_header.xMax); + extents->y_bearing = MAX (glyph_header.yMin, glyph_header.yMax); + extents->width = MAX (glyph_header.xMin, glyph_header.xMax) - extents->x_bearing; + extents->height = MIN (glyph_header.yMin, glyph_header.yMax) - extents->y_bearing; + + return true; + } +}; + +typedef bool (*hb_cmap_get_glyph_func_t) (const void *obj, + hb_codepoint_t codepoint, + hb_codepoint_t *glyph); + +template +static inline bool get_glyph_from (const void *obj, + hb_codepoint_t codepoint, + hb_codepoint_t *glyph) +{ + const Type *typed_obj = (const Type *) obj; + return typed_obj->get_glyph (codepoint, glyph); +} + struct hb_ot_face_cmap_accelerator_t { - const OT::CmapSubtable *table; - const OT::CmapSubtable *uvs_table; + hb_cmap_get_glyph_func_t get_glyph_func; + const void *get_glyph_data; + OT::CmapSubtableFormat4::accelerator_t format4_accel; + + const OT::CmapSubtableFormat14 *uvs_table; hb_blob_t *blob; inline void init (hb_face_t *face) @@ -102,7 +229,7 @@ struct hb_ot_face_cmap_accelerator_t this->blob = OT::Sanitizer::sanitize (face->reference_table (HB_OT_TAG_cmap)); const OT::cmap *cmap = OT::Sanitizer::lock_instance (this->blob); const OT::CmapSubtable *subtable = NULL; - const OT::CmapSubtable *subtable_uvs = NULL; + const OT::CmapSubtableFormat14 *subtable_uvs = NULL; /* 32-bit subtables. */ if (!subtable) subtable = cmap->find_subtable (3, 10); @@ -114,16 +241,35 @@ struct hb_ot_face_cmap_accelerator_t if (!subtable) subtable = cmap->find_subtable (0, 2); if (!subtable) subtable = cmap->find_subtable (0, 1); if (!subtable) subtable = cmap->find_subtable (0, 0); + if (!subtable) subtable = cmap->find_subtable (3, 0); /* Meh. */ if (!subtable) subtable = &OT::Null(OT::CmapSubtable); /* UVS subtable. */ - if (!subtable_uvs) subtable_uvs = cmap->find_subtable (0, 5); + if (!subtable_uvs) + { + const OT::CmapSubtable *st = cmap->find_subtable (0, 5); + if (st && st->u.format == 14) + subtable_uvs = &st->u.format14; + } /* Meh. */ - if (!subtable_uvs) subtable_uvs = &OT::Null(OT::CmapSubtable); + if (!subtable_uvs) subtable_uvs = &OT::Null(OT::CmapSubtableFormat14); - this->table = subtable; this->uvs_table = subtable_uvs; + + this->get_glyph_data = subtable; + switch (subtable->u.format) { + /* Accelerate format 4 and format 12. */ + default: this->get_glyph_func = get_glyph_from; break; + case 12: this->get_glyph_func = get_glyph_from; break; + case 4: + { + this->format4_accel.init (&subtable->u.format4); + this->get_glyph_data = &this->format4_accel; + this->get_glyph_func = this->format4_accel.get_glyph_func; + } + break; + } } inline void fini (void) @@ -131,49 +277,92 @@ struct hb_ot_face_cmap_accelerator_t hb_blob_destroy (this->blob); } - inline bool get_glyph (hb_codepoint_t unicode, - hb_codepoint_t variation_selector, - hb_codepoint_t *glyph) const + inline bool get_nominal_glyph (hb_codepoint_t unicode, + hb_codepoint_t *glyph) const + { + return this->get_glyph_func (this->get_glyph_data, unicode, glyph); + } + + inline bool get_variation_glyph (hb_codepoint_t unicode, + hb_codepoint_t variation_selector, + hb_codepoint_t *glyph) const { - if (unlikely (variation_selector)) + switch (this->uvs_table->get_glyph_variant (unicode, + variation_selector, + glyph)) { - switch (this->uvs_table->get_glyph_variant (unicode, - variation_selector, - glyph)) - { - case OT::GLYPH_VARIANT_NOT_FOUND: return false; - case OT::GLYPH_VARIANT_FOUND: return true; - case OT::GLYPH_VARIANT_USE_DEFAULT: break; - } + case OT::GLYPH_VARIANT_NOT_FOUND: return false; + case OT::GLYPH_VARIANT_FOUND: return true; + case OT::GLYPH_VARIANT_USE_DEFAULT: break; } - return this->table->get_glyph (unicode, glyph); + return get_nominal_glyph (unicode, glyph); } }; +template +struct hb_lazy_loader_t +{ + inline void init (hb_face_t *face_) + { + face = face_; + instance = NULL; + } + + inline void fini (void) + { + if (instance && instance != &OT::Null(T)) + { + instance->fini(); + free (instance); + } + } + + inline const T* operator-> (void) const + { + retry: + T *p = (T *) hb_atomic_ptr_get (&instance); + if (unlikely (!p)) + { + p = (T *) calloc (1, sizeof (T)); + if (unlikely (!p)) + return &OT::Null(T); + p->init (face); + if (unlikely (!hb_atomic_ptr_cmpexch (const_cast(&instance), NULL, p))) + { + p->fini (); + goto retry; + } + } + return p; + } + + private: + hb_face_t *face; + T *instance; +}; struct hb_ot_font_t { hb_ot_face_cmap_accelerator_t cmap; hb_ot_face_metrics_accelerator_t h_metrics; hb_ot_face_metrics_accelerator_t v_metrics; + hb_lazy_loader_t glyf; }; static hb_ot_font_t * -_hb_ot_font_create (hb_font_t *font) +_hb_ot_font_create (hb_face_t *face) { hb_ot_font_t *ot_font = (hb_ot_font_t *) calloc (1, sizeof (hb_ot_font_t)); - hb_face_t *face = font->face; if (unlikely (!ot_font)) return NULL; - unsigned int upem = face->get_upem (); - ot_font->cmap.init (face); - ot_font->h_metrics.init (face, HB_OT_TAG_hhea, HB_OT_TAG_hmtx, upem>>1); - ot_font->v_metrics.init (face, HB_OT_TAG_vhea, HB_OT_TAG_vmtx, upem); /* TODO Can we do this lazily? */ + ot_font->h_metrics.init (face, HB_OT_TAG_hhea, HB_OT_TAG_hmtx, HB_OT_TAG_os2); + ot_font->v_metrics.init (face, HB_OT_TAG_vhea, HB_OT_TAG_vmtx, HB_TAG_NONE); /* TODO Can we do this lazily? */ + ot_font->glyf.init (face); return ot_font; } @@ -184,88 +373,54 @@ _hb_ot_font_destroy (hb_ot_font_t *ot_font) ot_font->cmap.fini (); ot_font->h_metrics.fini (); ot_font->v_metrics.fini (); + ot_font->glyf.fini (); free (ot_font); } static hb_bool_t -hb_ot_get_glyph (hb_font_t *font HB_UNUSED, - void *font_data, - hb_codepoint_t unicode, - hb_codepoint_t variation_selector, - hb_codepoint_t *glyph, - void *user_data HB_UNUSED) +hb_ot_get_nominal_glyph (hb_font_t *font HB_UNUSED, + void *font_data, + hb_codepoint_t unicode, + hb_codepoint_t *glyph, + void *user_data HB_UNUSED) { const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data; - return ot_font->cmap.get_glyph (unicode, variation_selector, glyph); + return ot_font->cmap.get_nominal_glyph (unicode, glyph); } -static hb_position_t -hb_ot_get_glyph_h_advance (hb_font_t *font HB_UNUSED, +static hb_bool_t +hb_ot_get_variation_glyph (hb_font_t *font HB_UNUSED, void *font_data, - hb_codepoint_t glyph, + hb_codepoint_t unicode, + hb_codepoint_t variation_selector, + hb_codepoint_t *glyph, void *user_data HB_UNUSED) { const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data; - return font->em_scale_x (ot_font->h_metrics.get_advance (glyph)); + return ot_font->cmap.get_variation_glyph (unicode, variation_selector, glyph); } static hb_position_t -hb_ot_get_glyph_v_advance (hb_font_t *font HB_UNUSED, +hb_ot_get_glyph_h_advance (hb_font_t *font HB_UNUSED, void *font_data, hb_codepoint_t glyph, void *user_data HB_UNUSED) { const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data; - return font->em_scale_y (-ot_font->v_metrics.get_advance (glyph)); -} - -static hb_bool_t -hb_ot_get_glyph_h_origin (hb_font_t *font HB_UNUSED, - void *font_data HB_UNUSED, - hb_codepoint_t glyph HB_UNUSED, - hb_position_t *x HB_UNUSED, - hb_position_t *y HB_UNUSED, - void *user_data HB_UNUSED) -{ - /* We always work in the horizontal coordinates. */ - return true; -} - -static hb_bool_t -hb_ot_get_glyph_v_origin (hb_font_t *font HB_UNUSED, - void *font_data, - hb_codepoint_t glyph, - hb_position_t *x, - hb_position_t *y, - void *user_data HB_UNUSED) -{ - /* TODO */ - return false; + return font->em_scale_x (ot_font->h_metrics.get_advance (glyph)); } static hb_position_t -hb_ot_get_glyph_h_kerning (hb_font_t *font, +hb_ot_get_glyph_v_advance (hb_font_t *font HB_UNUSED, void *font_data, - hb_codepoint_t left_glyph, - hb_codepoint_t right_glyph, - void *user_data HB_UNUSED) -{ - /* TODO */ - return 0; -} - -static hb_position_t -hb_ot_get_glyph_v_kerning (hb_font_t *font HB_UNUSED, - void *font_data HB_UNUSED, - hb_codepoint_t top_glyph HB_UNUSED, - hb_codepoint_t bottom_glyph HB_UNUSED, + hb_codepoint_t glyph, void *user_data HB_UNUSED) { - /* OpenType doesn't have vertical-kerning other than GPOS. */ - return 0; + const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data; + return font->em_scale_y (-(int) ot_font->v_metrics.get_advance (glyph)); } static hb_bool_t @@ -275,69 +430,101 @@ hb_ot_get_glyph_extents (hb_font_t *font HB_UNUSED, hb_glyph_extents_t *extents, void *user_data HB_UNUSED) { - /* TODO */ - return false; + const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data; + bool ret = ot_font->glyf->get_extents (glyph, extents); + extents->x_bearing = font->em_scale_x (extents->x_bearing); + extents->y_bearing = font->em_scale_y (extents->y_bearing); + extents->width = font->em_scale_x (extents->width); + extents->height = font->em_scale_y (extents->height); + return ret; } static hb_bool_t -hb_ot_get_glyph_contour_point (hb_font_t *font HB_UNUSED, - void *font_data, - hb_codepoint_t glyph, - unsigned int point_index, - hb_position_t *x, - hb_position_t *y, - void *user_data HB_UNUSED) +hb_ot_get_font_h_extents (hb_font_t *font HB_UNUSED, + void *font_data, + hb_font_extents_t *metrics, + void *user_data HB_UNUSED) { - /* TODO */ - return false; + const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data; + metrics->ascender = font->em_scale_y (ot_font->h_metrics.ascender); + metrics->descender = font->em_scale_y (ot_font->h_metrics.descender); + metrics->line_gap = font->em_scale_y (ot_font->h_metrics.line_gap); + return true; } static hb_bool_t -hb_ot_get_glyph_name (hb_font_t *font HB_UNUSED, - void *font_data, - hb_codepoint_t glyph, - char *name, unsigned int size, - void *user_data HB_UNUSED) +hb_ot_get_font_v_extents (hb_font_t *font HB_UNUSED, + void *font_data, + hb_font_extents_t *metrics, + void *user_data HB_UNUSED) { - /* TODO */ - return false; + const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data; + metrics->ascender = font->em_scale_x (ot_font->v_metrics.ascender); + metrics->descender = font->em_scale_x (ot_font->v_metrics.descender); + metrics->line_gap = font->em_scale_x (ot_font->v_metrics.line_gap); + return true; } -static hb_bool_t -hb_ot_get_glyph_from_name (hb_font_t *font HB_UNUSED, - void *font_data, - const char *name, int len, /* -1 means nul-terminated */ - hb_codepoint_t *glyph, - void *user_data HB_UNUSED) +static hb_font_funcs_t *static_ot_funcs = NULL; + +#ifdef HB_USE_ATEXIT +static +void free_static_ot_funcs (void) { - /* TODO */ - return false; + hb_font_funcs_destroy (static_ot_funcs); } - +#endif static hb_font_funcs_t * _hb_ot_get_font_funcs (void) { - static const hb_font_funcs_t ot_ffuncs = { - HB_OBJECT_HEADER_STATIC, +retry: + hb_font_funcs_t *funcs = (hb_font_funcs_t *) hb_atomic_ptr_get (&static_ot_funcs); - true, /* immutable */ - - { -#define HB_FONT_FUNC_IMPLEMENT(name) hb_ot_get_##name, - HB_FONT_FUNCS_IMPLEMENT_CALLBACKS -#undef HB_FONT_FUNC_IMPLEMENT + if (unlikely (!funcs)) + { + funcs = hb_font_funcs_create (); + + hb_font_funcs_set_font_h_extents_func (funcs, hb_ot_get_font_h_extents, NULL, NULL); + hb_font_funcs_set_font_v_extents_func (funcs, hb_ot_get_font_v_extents, NULL, NULL); + hb_font_funcs_set_nominal_glyph_func (funcs, hb_ot_get_nominal_glyph, NULL, NULL); + hb_font_funcs_set_variation_glyph_func (funcs, hb_ot_get_variation_glyph, NULL, NULL); + hb_font_funcs_set_glyph_h_advance_func (funcs, hb_ot_get_glyph_h_advance, NULL, NULL); + hb_font_funcs_set_glyph_v_advance_func (funcs, hb_ot_get_glyph_v_advance, NULL, NULL); + //hb_font_funcs_set_glyph_h_origin_func (funcs, hb_ot_get_glyph_h_origin, NULL, NULL); + //hb_font_funcs_set_glyph_v_origin_func (funcs, hb_ot_get_glyph_v_origin, NULL, NULL); + //hb_font_funcs_set_glyph_h_kerning_func (funcs, hb_ot_get_glyph_h_kerning, NULL, NULL); TODO + //hb_font_funcs_set_glyph_v_kerning_func (funcs, hb_ot_get_glyph_v_kerning, NULL, NULL); + hb_font_funcs_set_glyph_extents_func (funcs, hb_ot_get_glyph_extents, NULL, NULL); + //hb_font_funcs_set_glyph_contour_point_func (funcs, hb_ot_get_glyph_contour_point, NULL, NULL); TODO + //hb_font_funcs_set_glyph_name_func (funcs, hb_ot_get_glyph_name, NULL, NULL); TODO + //hb_font_funcs_set_glyph_from_name_func (funcs, hb_ot_get_glyph_from_name, NULL, NULL); TODO + + hb_font_funcs_make_immutable (funcs); + + if (!hb_atomic_ptr_cmpexch (&static_ot_funcs, NULL, funcs)) { + hb_font_funcs_destroy (funcs); + goto retry; } + +#ifdef HB_USE_ATEXIT + atexit (free_static_ot_funcs); /* First person registers atexit() callback. */ +#endif }; - return const_cast (&ot_ffuncs); + return funcs; } +/** + * hb_ot_font_set_funcs: + * + * Since: 0.9.28 + **/ void hb_ot_font_set_funcs (hb_font_t *font) { - hb_ot_font_t *ot_font = _hb_ot_font_create (font); + hb_ot_font_t *ot_font = _hb_ot_font_create (font->face); if (unlikely (!ot_font)) return; diff --git a/src/hb-ot-font.h b/src/hb-ot-font.h index 7a8c04a..80eaa54 100644 --- a/src/hb-ot-font.h +++ b/src/hb-ot-font.h @@ -24,6 +24,10 @@ * Google Author(s): Behdad Esfahbod, Roozbeh Pournader */ +#ifndef HB_OT_H_IN +#error "Include instead." +#endif + #ifndef HB_OT_FONT_H #define HB_OT_FONT_H @@ -32,7 +36,7 @@ HB_BEGIN_DECLS -void +HB_EXTERN void hb_ot_font_set_funcs (hb_font_t *font); diff --git a/src/hb-ot-glyf-table.hh b/src/hb-ot-glyf-table.hh new file mode 100644 index 0000000..dc7aa84 --- /dev/null +++ b/src/hb-ot-glyf-table.hh @@ -0,0 +1,104 @@ +/* + * Copyright © 2015 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ + +#ifndef HB_OT_GLYF_TABLE_HH +#define HB_OT_GLYF_TABLE_HH + +#include "hb-open-type-private.hh" + + +namespace OT { + + +/* + * loca -- Index to Location + */ + +#define HB_OT_TAG_loca HB_TAG('l','o','c','a') + + +struct loca +{ + static const hb_tag_t tableTag = HB_OT_TAG_loca; + + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + return_trace (true); + } + + public: + union { + USHORT shortsZ[VAR]; /* Location offset divided by 2. */ + ULONG longsZ[VAR]; /* Location offset. */ + } u; + DEFINE_SIZE_ARRAY (0, u.longsZ); +}; + + +/* + * glyf -- TrueType Glyph Data + */ + +#define HB_OT_TAG_glyf HB_TAG('g','l','y','f') + + +struct glyf +{ + static const hb_tag_t tableTag = HB_OT_TAG_glyf; + + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + /* We don't check for anything specific here. The users of the + * struct do all the hard work... */ + return_trace (true); + } + + public: + BYTE dataX[VAR]; /* Glyphs data. */ + + DEFINE_SIZE_ARRAY (0, dataX); +}; + +struct glyfGlyphHeader +{ + SHORT numberOfContours; /* If the number of contours is + * greater than or equal to zero, + * this is a simple glyph; if negative, + * this is a composite glyph. */ + FWORD xMin; /* Minimum x for coordinate data. */ + FWORD yMin; /* Minimum y for coordinate data. */ + FWORD xMax; /* Maximum x for coordinate data. */ + FWORD yMax; /* Maximum y for coordinate data. */ + + DEFINE_SIZE_STATIC (10); +}; + +} /* namespace OT */ + + +#endif /* HB_OT_GLYF_TABLE_HH */ diff --git a/src/hb-ot-head-table.hh b/src/hb-ot-head-table.hh index 268f133..9c3e51e 100644 --- a/src/hb-ot-head-table.hh +++ b/src/hb-ot-head-table.hh @@ -55,13 +55,15 @@ struct head inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this) && likely (version.major == 1)); + return_trace (c->check_struct (this) && + version.major == 1 && + magicNumber == 0x5F0F3CF5u); } protected: - FixedVersion version; /* Version of the head table--currently + FixedVersion<>version; /* Version of the head table--currently * 0x00010000u for version 1.0. */ - FixedVersion fontRevision; /* Set by font manufacturer. */ + FixedVersion<>fontRevision; /* Set by font manufacturer. */ ULONG checkSumAdjustment; /* To compute: set it to 0, sum the * entire font as ULONG, then store * 0xB1B0AFBAu - sum. */ @@ -138,9 +140,10 @@ struct head * 2: Like 1 but also contains neutrals; * -1: Only strongly right to left; * -2: Like -1 but also contains neutrals. */ + public: SHORT indexToLocFormat; /* 0 for short offsets, 1 for long. */ SHORT glyphDataFormat; /* 0 for current format. */ - public: + DEFINE_SIZE_STATIC (54); }; diff --git a/src/hb-ot-hhea-table.hh b/src/hb-ot-hhea-table.hh index 992fe55..c8e9536 100644 --- a/src/hb-ot-hhea-table.hh +++ b/src/hb-ot-hhea-table.hh @@ -52,11 +52,11 @@ struct _hea inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this) && likely (version.major == 1)); + return_trace (c->check_struct (this) && likely (version.major == 1)); } public: - FixedVersion version; /* 0x00010000u for version 1.0. */ + FixedVersion<>version; /* 0x00010000u for version 1.0. */ FWORD ascender; /* Typographic ascent. */ FWORD descender; /* Typographic descent. */ FWORD lineGap; /* Typographic line gap. */ diff --git a/src/hb-ot-hmtx-table.hh b/src/hb-ot-hmtx-table.hh index a0e3855..a9606b3 100644 --- a/src/hb-ot-hmtx-table.hh +++ b/src/hb-ot-hmtx-table.hh @@ -44,8 +44,8 @@ namespace OT { struct LongMetric { - USHORT advance; /* Advance width/height. */ - SHORT lsb; /* Leading (left/top) side bearing. */ + UFWORD advance; /* Advance width/height. */ + FWORD lsb; /* Leading (left/top) side bearing. */ public: DEFINE_SIZE_STATIC (4); }; @@ -62,7 +62,7 @@ struct _mtx TRACE_SANITIZE (this); /* We don't check for anything specific here. The users of the * struct do all the hard work... */ - return TRACE_RETURN (true); + return_trace (true); } public: @@ -74,7 +74,7 @@ struct _mtx * be in the array, but that entry is * required. The last entry applies to * all subsequent glyphs. */ - SHORT leadingBearingX[VAR]; /* Here the advance is assumed + FWORD leadingBearingX[VAR]; /* Here the advance is assumed * to be the same as the advance * for the last entry above. The * number of entries in this array is diff --git a/src/hb-ot-layout-common-private.hh b/src/hb-ot-layout-common-private.hh index 3db7f57..34fa1b7 100644 --- a/src/hb-ot-layout-common-private.hh +++ b/src/hb-ot-layout-common-private.hh @@ -34,6 +34,14 @@ #include "hb-set-private.hh" +#ifndef HB_MAX_NESTING_LEVEL +#define HB_MAX_NESTING_LEVEL 6 +#endif +#ifndef HB_MAX_CONTEXT_LENGTH +#define HB_MAX_CONTEXT_LENGTH 64 +#endif + + namespace OT { @@ -44,8 +52,6 @@ namespace OT { #define NOT_COVERED ((unsigned int) -1) -#define MAX_NESTING_LEVEL 8 -#define MAX_CONTEXT_LENGTH 64 @@ -75,7 +81,7 @@ struct Record { TRACE_SANITIZE (this); const sanitize_closure_t closure = {tag, base}; - return TRACE_RETURN (c->check_struct (this) && offset.sanitize (c, base, &closure)); + return_trace (c->check_struct (this) && offset.sanitize (c, base, &closure)); } Tag tag; /* 4-byte Tag identifier */ @@ -131,7 +137,7 @@ struct RecordListOf : RecordArrayOf inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - return TRACE_RETURN (RecordArrayOf::sanitize (c, this)); + return_trace (RecordArrayOf::sanitize (c, this)); } }; @@ -145,7 +151,7 @@ struct RangeRecord inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this)); + return_trace (c->check_struct (this)); } inline bool intersects (const hb_set_t *glyphs) const { @@ -211,7 +217,7 @@ struct LangSys const Record::sanitize_closure_t * = NULL) const { TRACE_SANITIZE (this); - return TRACE_RETURN (c->check_struct (this) && featureIndex.sanitize (c)); + return_trace (c->check_struct (this) && featureIndex.sanitize (c)); } Offset<> lookupOrderZ; /* = Null (reserved for an offset to a @@ -251,7 +257,7 @@ struct Script const Record