If the text is invalid, then readNextChar returns -1 and does not
progress to the next character. This previously meant that we got stuck
and looped indefinitely.
Previously, the first for loop would reach the end of the characters, so
no further characters were read in the second loop. This meant that the
array remained filled with 0 values.
This function wants the utf8 length, but text->length does not give
this. We can instead use -1 to tell harfbuzz to treat it as null-
terminating, which is the case with all hashlink strings anyway.
A HxString is not guaranteed to be utf8 on hxcpp, so we need to use
hxs_utf8 to convert it otherwise it incorrectly displays any utf16
encoded string.
Unfortunately, hxs_utf8 doesn't give us the length of the utf8 string.
The best thing we can do is to tell harfbuzz it is null terminated. This
isn't perfect because technically hxcpp strings are allowed to contain
NULL, but it's better than all utf16 strings being broken.
The targets do not create a file with the target name, so they should be
marked as .PHONY
We are not using implicit rules either, so we can disable them by
making .SUFFIXES empty
Group targets together
Also remove LIB_BASE variable, it has been unused since:
f7ab6ab36b
Hxcpp's mbedtls has MBEDTLS_NET_C disabled, which meant that older
versions of curl which use this feature cannot be linked against it.
This version of curl no longer requires this feature, which avoids the
issue.
Hxcpp 4.3.0 has an mbedtls_config.h file in ${HXCPP}/src/hx/libs/ssl,
which we have to ensure is included, but older versions do not.
To support both 4.3.0 and older versions, we can add an empty
mbedtls_config.h and add the include path at the end. This way it will
only be used if it does not exist in the previous include paths.
Like OpenFL, we should eventually modify the docs build to use include("lime") to automatically include everything instead of manually adding each thing to ImportAll. However, we'll need to use conditional compilation to hide certain classes from targets where they aren't supported.
MAC_USE_CURRENT_SDK is an incredibly old relic from a very old version
of hxcpp (haxe 2 days). It was removed in:
9a7f7f931f
This is now instead controlled by the flag `MACOSX_DEPLOYMENT_TARGET`.
The setup command now only does two things:
- Sets up haxelibs
- Adds cli alias