summaryrefslogtreecommitdiff
path: root/.circleci/config.yml
blob: c90ef4c4c0335615efdad17cc59f5f3b84a5595b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
version: 2

jobs:

  distcheck:
    docker:
      - image: ubuntu:17.10
    steps:
      - checkout
      - run: apt update && apt install -y ninja-build binutils libtool autoconf automake make cmake gcc g++ pkg-config ragel gtk-doc-tools libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python python-pip
      - run: pip install fonttools
      - run: ./autogen.sh && make distcheck && rm -rf harfbuzz-*
      - run: make distdir && cd harfbuzz-* && cmake -DHB_CHECK=ON -Bbuild -H. -GNinja && ninja -Cbuild && CTEST_OUTPUT_ON_FAILURE=1 ninja -Cbuild test && ninja -Cbuild install

  alpine:
    docker:
      - image: alpine
    steps:
      - checkout
      - run: apk update && apk add ragel make pkgconfig libtool autoconf automake gettext gcc g++ glib-dev freetype-dev cairo-dev
      - run: ./autogen.sh
      - run: make && (make check || (cat `find -name '*.log'` && false))

  archlinux:
    docker:
      - image: base/devel
    steps:
      - checkout
      - run: pacman --noconfirm -Syu freetype2 cairo icu gettext gobject-introspection gcc gcc-libs glib2 graphite pkg-config ragel python
      - run: ./autogen.sh --with-freetype --with-glib --with-gobject --with-cairo --with-icu --with-graphite2
      - run: make && (make check || (cat `find -name '*.log'` && false))

  fedora-outoftreebuild:
    docker:
      - image: fedora
    steps:
      - checkout
      - run: dnf install -y pkg-config ragel gcc gcc-c++ automake autoconf libtool make which glib2-devel freetype-devel cairo-devel libicu-devel gobject-introspection-devel graphite2-devel redhat-rpm-config python || true
      - run: NOCONFIGURE=1 ./autogen.sh --with-freetype --with-glib --with-gobject --with-cairo --with-icu --with-graphite2
      - run: mkdir build && cd build && ../configure && make && (make check || (cat `find -name '*.log'` && false))

  cmake-gcc:
    docker:
      - image: ubuntu:17.10
    steps:
      - checkout
      - run: apt update && apt install -y ninja-build binutils cmake gcc g++ pkg-config ragel gtk-doc-tools libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python python-pip
      - run: pip install fonttools
      - run: cmake -DHB_CHECK=ON -Bbuild -H. -GNinja
      - run: ninja -Cbuild
      - run: CTEST_OUTPUT_ON_FAILURE=1 ninja -Cbuild test
      - run: ninja -Cbuild install

  cmake-oracledeveloperstudio:
    docker:
      - image: fedora
    steps:
      - checkout
      - run: dnf install -y gcc ragel cmake make which glib2-devel freetype-devel cairo-devel libicu-devel graphite2-devel wget tar bzip2 python || true
      - run: wget http://$ODSUSER:$ODSPASS@behdad.org/harfbuzz-private/OracleDeveloperStudio12.6-linux-x86-bin.tar.bz2 && tar xf OracleDeveloperStudio12.6-linux-x86-bin.tar.bz2 --owner root --group root --no-same-owner
      - run: CC=/root/project/OracleDeveloperStudio12.6-linux-x86-bin/developerstudio12.6/bin/suncc CXX=/root/project/OracleDeveloperStudio12.6-linux-x86-bin/developerstudio12.6/bin/sunCC cmake -DHB_HAVE_GRAPHITE2=ON -DHB_BUILTIN_UCDN=ON -DHB_HAVE_GLIB=ON -DHB_HAVE_ICU=ON -DHB_HAVE_FREETYPE=ON -Bbuild -H.
      - run: make -Cbuild
      - run: CTEST_OUTPUT_ON_FAILURE=1 make -Cbuild test
      - run: make -Cbuild install

  crosscompile-notest-djgpp:
    docker:
      - image: quay.io/ebraminio/djgpp
    steps:
      - checkout
      - run: apt update && apt install -y ragel pkg-config libtool autoconf
      - run: CFLAGS="-Wno-attributes" CXXFLAGS="-Wno-attributes" ./autogen.sh --prefix=/usr/local/djgpp --host=i586-pc-msdosdjgpp
      - run: make

  crosscompile-notest-freebsd9:
    docker:
      - image: donbowman/freebsd-cross-build
    steps:
      - checkout
      - run: apt update && apt install -y pkg-config ragel
      - run: ./autogen.sh --prefix=/freebsd --host=x86_64-pc-freebsd9
      - run: make

  crosscompile-notest-psvita:
    docker:
      - image: dockcross/base
    steps:
      - checkout
      - run: apt update && apt install ragel
      - run: git clone https://github.com/vitasdk/vdpm && cd vdpm && ./bootstrap-vitasdk.sh
      - run: ./autogen.sh --prefix=/usr/local/vitasdk/arm-vita-eabi --host=arm-vita-eabi
      - run: make

  crosscompile-cmake-notest-android-arm:
    docker:
      - image: dockcross/android-arm
    steps:
      - checkout
      - run: apt update && apt install ragel
      - run: cmake -Bbuild -H. -GNinja
      - run: ninja -Cbuild

  crosscompile-cmake-notest-browser-asmjs:
    docker:
      - image: dockcross/browser-asmjs
    steps:
      - checkout
      - run: apt update && apt install ragel
      - run: cmake -Bbuild -H. -GNinja
      - run: ninja -Cbuild

  crosscompile-cmake-notest-linux-arm64:
    docker:
      - image: dockcross/linux-arm64
    steps:
      - checkout
      - run: apt update && apt install ragel
      - run: cmake -Bbuild -H. -GNinja
      - run: ninja -Cbuild

  crosscompile-cmake-notest-linux-mips:
    docker:
      - image: dockcross/linux-mips
    steps:
      - checkout
      - run: apt update && apt install ragel
      - run: cmake -Bbuild -H. -GNinja
      - run: ninja -Cbuild

  crosscompile-cmake-notest-windows-x64:
    docker:
      - image: dockcross/windows-x64
    steps:
      - checkout
      - run: apt update && apt install ragel
      - run: cmake -Bbuild -H. -GNinja
      - run: ninja -Cbuild

workflows:
  version: 2
  build:
    jobs:
      # both autotools and cmake
      - distcheck

      # autotools based builds
      - alpine
      - archlinux
      - fedora-outoftreebuild

      # cmake based builds
      - cmake-gcc
      - cmake-oracledeveloperstudio

      # crosscompiles
      # they can't be test thus are without tests
      ## autotools
      - crosscompile-notest-djgpp
      - crosscompile-notest-freebsd9
      - crosscompile-notest-psvita

      ## cmake
      - crosscompile-cmake-notest-android-arm
      - crosscompile-cmake-notest-browser-asmjs
      - crosscompile-cmake-notest-linux-arm64
      - crosscompile-cmake-notest-linux-mips
      - crosscompile-cmake-notest-windows-x64