main()1 fn main() {
2     let mut build = cc::Build::new();
3     build.cpp(true);
4 
5     if build.get_compiler().is_like_msvc() {
6         // From harfbuzz/meson.build
7         build.flag("/wd4018"); // implicit signed/unsigned conversion
8         build.flag("/wd4146"); // unary minus on unsigned (beware INT_MIN)
9         build.flag("/wd4244"); // lossy type conversion (e.g. double -> int)
10         build.flag("/wd4305"); // truncating type conversion (e.g. double -> float)
11 
12         // Required by hb-algs.hh
13         build.flag("/std:c++14");
14     } else {
15         build.flag("-std=c++11");
16         build.flag_if_supported("-fno-rtti");
17         build.flag_if_supported("-fno-exceptions");
18         build.flag_if_supported("-fno-threadsafe-statics");
19         build.flag_if_supported("-fvisibility-inlines-hidden");
20     }
21 
22     build.file("harfbuzz/src/hb-aat-layout.cc");
23     build.file("harfbuzz/src/hb-aat-map.cc");
24     build.file("harfbuzz/src/hb-blob.cc");
25     build.file("harfbuzz/src/hb-buffer.cc");
26     build.file("harfbuzz/src/hb-buffer-serialize.cc");
27     build.file("harfbuzz/src/hb-common.cc");
28     build.file("harfbuzz/src/hb-face.cc");
29     build.file("harfbuzz/src/hb-fallback-shape.cc");
30     build.file("harfbuzz/src/hb-font.cc");
31     build.file("harfbuzz/src/hb-map.cc");
32     build.file("harfbuzz/src/hb-number.cc");
33     build.file("harfbuzz/src/hb-ot-cff1-table.cc");
34     build.file("harfbuzz/src/hb-ot-cff2-table.cc");
35     build.file("harfbuzz/src/hb-ot-face.cc");
36     build.file("harfbuzz/src/hb-ot-font.cc");
37     build.file("harfbuzz/src/hb-ot-layout.cc");
38     build.file("harfbuzz/src/hb-ot-map.cc");
39     build.file("harfbuzz/src/hb-ot-metrics.cc");
40     build.file("harfbuzz/src/hb-ot-shape.cc");
41     build.file("harfbuzz/src/hb-ot-shape-complex-arabic.cc");
42     build.file("harfbuzz/src/hb-ot-shape-complex-default.cc");
43     build.file("harfbuzz/src/hb-ot-shape-complex-hangul.cc");
44     build.file("harfbuzz/src/hb-ot-shape-complex-hebrew.cc");
45     build.file("harfbuzz/src/hb-ot-shape-complex-indic.cc");
46     build.file("harfbuzz/src/hb-ot-shape-complex-indic-table.cc");
47     build.file("harfbuzz/src/hb-ot-shape-complex-khmer.cc");
48     build.file("harfbuzz/src/hb-ot-shape-complex-myanmar.cc");
49     build.file("harfbuzz/src/hb-ot-shape-complex-thai.cc");
50     build.file("harfbuzz/src/hb-ot-shape-complex-use.cc");
51     build.file("harfbuzz/src/hb-ot-shape-complex-use-table.cc");
52     build.file("harfbuzz/src/hb-ot-shape-complex-vowel-constraints.cc");
53     build.file("harfbuzz/src/hb-ot-shape-fallback.cc");
54     build.file("harfbuzz/src/hb-ot-shape-normalize.cc");
55     build.file("harfbuzz/src/hb-ot-tag.cc");
56     build.file("harfbuzz/src/hb-ot-var.cc");
57     build.file("harfbuzz/src/hb-set.cc");
58     build.file("harfbuzz/src/hb-shape.cc");
59     build.file("harfbuzz/src/hb-shape-plan.cc");
60     build.file("harfbuzz/src/hb-shaper.cc");
61     build.file("harfbuzz/src/hb-static.cc");
62     build.file("harfbuzz/src/hb-ucd.cc");
63     build.file("harfbuzz/src/hb-unicode.cc");
64     build.include("harfbuzz/src");
65     build.compile("librustybuzz.a");
66 }
67