Fix llvm-gcc-4.2 compile issue and add a macOS bot to test it (#899)
This commit is contained in:
parent
7919033ce8
commit
2a23606339
|
@ -2,6 +2,19 @@ version: 2
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|
||||||
|
macos-llvm-gcc-4.2:
|
||||||
|
macos:
|
||||||
|
xcode: "8.3.3"
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- run: brew update-reset
|
||||||
|
- run: brew install wget pkg-config libtool ragel freetype glib cairo
|
||||||
|
- run: wget https://packages.macports.org/llvm-gcc42/llvm-gcc42-2336.11_3+universal.darwin_15.i386-x86_64.tbz2 && tar zxvf llvm-gcc42-2336.11_3+universal.darwin_15.i386-x86_64.tbz2
|
||||||
|
- run: CC=$PWD/opt/local/bin/llvm-gcc-4.2 CXX=$PWD/opt/local/bin/llvm-g++-4.2 ./autogen.sh --with-freetype --with-glib --with-gobject --with-cairo
|
||||||
|
# Ignoring assembler complains, https://stackoverflow.com/a/39867021
|
||||||
|
- run: make 2>&1 | grep -v -e '^/var/folders/*' -e '^[[:space:]]*\.section' -e '^[[:space:]]*\^[[:space:]]*~*'
|
||||||
|
- run: make check || .ci/fail.sh
|
||||||
|
|
||||||
distcheck:
|
distcheck:
|
||||||
docker:
|
docker:
|
||||||
- image: ubuntu:17.10
|
- image: ubuntu:17.10
|
||||||
|
@ -163,6 +176,9 @@ workflows:
|
||||||
version: 2
|
version: 2
|
||||||
build:
|
build:
|
||||||
jobs:
|
jobs:
|
||||||
|
# macOS
|
||||||
|
- macos-llvm-gcc-4.2
|
||||||
|
|
||||||
# both autotools and cmake
|
# both autotools and cmake
|
||||||
- distcheck
|
- distcheck
|
||||||
|
|
||||||
|
|
|
@ -295,11 +295,13 @@ struct OpenTypeFontFile
|
||||||
{
|
{
|
||||||
static const hb_tag_t tableTag = HB_TAG ('_','_','_','_'); /* Sanitizer needs this. */
|
static const hb_tag_t tableTag = HB_TAG ('_','_','_','_'); /* Sanitizer needs this. */
|
||||||
|
|
||||||
static const hb_tag_t CFFTag = HB_TAG ('O','T','T','O'); /* OpenType with Postscript outlines */
|
enum {
|
||||||
static const hb_tag_t TrueTypeTag = HB_TAG ( 0 , 1 , 0 , 0 ); /* OpenType with TrueType outlines */
|
CFFTag = HB_TAG ('O','T','T','O'), /* OpenType with Postscript outlines */
|
||||||
static const hb_tag_t TTCTag = HB_TAG ('t','t','c','f'); /* TrueType Collection */
|
TrueTypeTag = HB_TAG ( 0 , 1 , 0 , 0 ), /* OpenType with TrueType outlines */
|
||||||
static const hb_tag_t TrueTag = HB_TAG ('t','r','u','e'); /* Obsolete Apple TrueType */
|
TTCTag = HB_TAG ('t','t','c','f'), /* TrueType Collection */
|
||||||
static const hb_tag_t Typ1Tag = HB_TAG ('t','y','p','1'); /* Obsolete Apple Type1 font in SFNT container */
|
TrueTag = HB_TAG ('t','r','u','e'), /* Obsolete Apple TrueType */
|
||||||
|
Typ1Tag = HB_TAG ('t','y','p','1') /* Obsolete Apple Type1 font in SFNT container */
|
||||||
|
};
|
||||||
|
|
||||||
inline hb_tag_t get_tag (void) const { return u.tag; }
|
inline hb_tag_t get_tag (void) const { return u.tag; }
|
||||||
|
|
||||||
|
|
|
@ -134,18 +134,20 @@ struct glyf
|
||||||
|
|
||||||
struct CompositeGlyphHeader
|
struct CompositeGlyphHeader
|
||||||
{
|
{
|
||||||
static const uint16_t ARG_1_AND_2_ARE_WORDS = 0x0001;
|
enum composite_glyph_flag_t {
|
||||||
static const uint16_t ARGS_ARE_XY_VALUES = 0x0002;
|
ARG_1_AND_2_ARE_WORDS = 0x0001,
|
||||||
static const uint16_t ROUND_XY_TO_GRID = 0x0004;
|
ARGS_ARE_XY_VALUES = 0x0002,
|
||||||
static const uint16_t WE_HAVE_A_SCALE = 0x0008;
|
ROUND_XY_TO_GRID = 0x0004,
|
||||||
static const uint16_t MORE_COMPONENTS = 0x0020;
|
WE_HAVE_A_SCALE = 0x0008,
|
||||||
static const uint16_t WE_HAVE_AN_X_AND_Y_SCALE = 0x0040;
|
MORE_COMPONENTS = 0x0020,
|
||||||
static const uint16_t WE_HAVE_A_TWO_BY_TWO = 0x0080;
|
WE_HAVE_AN_X_AND_Y_SCALE = 0x0040,
|
||||||
static const uint16_t WE_HAVE_INSTRUCTIONS = 0x0100;
|
WE_HAVE_A_TWO_BY_TWO = 0x0080,
|
||||||
static const uint16_t USE_MY_METRICS = 0x0200;
|
WE_HAVE_INSTRUCTIONS = 0x0100,
|
||||||
static const uint16_t OVERLAP_COMPOUND = 0x0400;
|
USE_MY_METRICS = 0x0200,
|
||||||
static const uint16_t SCALED_COMPONENT_OFFSET = 0x0800;
|
OVERLAP_COMPOUND = 0x0400,
|
||||||
static const uint16_t UNSCALED_COMPONENT_OFFSET = 0x1000;
|
SCALED_COMPONENT_OFFSET = 0x0800,
|
||||||
|
UNSCALED_COMPONENT_OFFSET = 0x1000
|
||||||
|
};
|
||||||
|
|
||||||
HBUINT16 flags;
|
HBUINT16 flags;
|
||||||
HBUINT16 glyphIndex;
|
HBUINT16 glyphIndex;
|
||||||
|
@ -280,16 +282,18 @@ struct glyf
|
||||||
composite);
|
composite);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum simple_glyph_flag_t {
|
||||||
|
FLAG_X_SHORT = 0x02,
|
||||||
|
FLAG_Y_SHORT = 0x04,
|
||||||
|
FLAG_REPEAT = 0x08,
|
||||||
|
FLAG_X_SAME = 0x10,
|
||||||
|
FLAG_Y_SAME = 0x20
|
||||||
|
};
|
||||||
|
|
||||||
/* based on FontTools _g_l_y_f.py::trim */
|
/* based on FontTools _g_l_y_f.py::trim */
|
||||||
inline bool remove_padding(unsigned int start_offset,
|
inline bool remove_padding(unsigned int start_offset,
|
||||||
unsigned int *end_offset) const
|
unsigned int *end_offset) const
|
||||||
{
|
{
|
||||||
static const int FLAG_X_SHORT = 0x02;
|
|
||||||
static const int FLAG_Y_SHORT = 0x04;
|
|
||||||
static const int FLAG_REPEAT = 0x08;
|
|
||||||
static const int FLAG_X_SAME = 0x10;
|
|
||||||
static const int FLAG_Y_SAME = 0x20;
|
|
||||||
|
|
||||||
if (*end_offset - start_offset < GlyphHeader::static_size)
|
if (*end_offset - start_offset < GlyphHeader::static_size)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|
|
@ -205,7 +205,7 @@ struct KernSubTableWrapper
|
||||||
{
|
{
|
||||||
TRACE_SANITIZE (this);
|
TRACE_SANITIZE (this);
|
||||||
return_trace (c->check_struct (thiz()) &&
|
return_trace (c->check_struct (thiz()) &&
|
||||||
thiz()->length >= thiz()->min_size &&
|
thiz()->length >= T::min_size &&
|
||||||
c->check_array (thiz(), 1, thiz()->length) &&
|
c->check_array (thiz(), 1, thiz()->length) &&
|
||||||
thiz()->subtable.sanitize (c, thiz()->format));
|
thiz()->subtable.sanitize (c, thiz()->format));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue