• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/sh -e
2
3# Copyright 2015-2018 by
4# David Turner, Robert Wilhelm, and Werner Lemberg.
5#
6# This file is part of the FreeType project, and may only be used, modified,
7# and distributed under the terms of the FreeType project license,
8# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
9# indicate that you have read the license and understand and accept it
10# fully.
11
12# This script tests the CMake build. Simply run
13#
14#     builds/cmake/testbuild.sh
15#
16# or
17#
18#     BUILD_SHARED_LIBS=1 builds/cmake/testbuild.sh
19#
20# The script:
21#
22# - builds the main CMakeLists.txt
23# - builds and runs a small test app in a separate build tree so
24#   the config-module is tested, too
25#
26# Options (environment variables):
27#
28# - The variable BUILD_SHARED_LIBS will be forwarded to the CMake project
29#   that builds the library.
30#
31
32
33# prepare temporary dir
34
35cd `dirname $0`/../..
36ftdir=`pwd`
37tmpdir=/tmp/freetype-cmake-testbuild
38rm -rf $tmpdir
39mkdir -p $tmpdir
40
41
42# build and install freetype
43
44if test -n "$BUILD_SHARED_LIBS"; then
45  bsl=-DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS
46else
47  bsl=-UBUILD_SHARED_LIBS
48fi
49
50build_opts="-DWITH_ZLIB=0 \
51            -DWITH_BZip2=0 \
52            -DWITH_PNG=0 \
53            -DWITH_HarfBuzz=0 \
54            $bsl \
55            -DCMAKE_INSTALL_PREFIX=$tmpdir/out"
56
57(set -x; cmake -H$ftdir \
58               -B$tmpdir/ftb \
59               -DCMAKE_BUILD_TYPE=Debug \
60               $build_opts)
61(set -x; cmake --build $tmpdir/ftb \
62               --config Debug \
63               --target install)
64
65(set -x; cmake $tmpdir/ftb \
66               -DCMAKE_BUILD_TYPE=Release)
67(set -x; cmake --build $tmpdir/ftb \
68               --config Release \
69               --target install \
70               --clean-first)
71
72
73# create test project CMakeLists.txt
74
75cat >$tmpdir/CMakeLists.txt << END
76cmake_minimum_required(VERSION 2.6)
77project(freetype-cmake-testbuild)
78
79find_package(Freetype REQUIRED CONFIG)
80
81add_executable(freetype-cmake-test main.c)
82target_link_libraries(freetype-cmake-test freetype)
83
84enable_testing()
85add_test(freetype-cmake-test freetype-cmake-test)
86END
87
88
89# create test project main.c
90
91cat >$tmpdir/main.c << END
92#include <stdio.h>
93#include <stdlib.h>
94
95#include <ft2build.h>
96#include FT_FREETYPE_H
97
98
99FT_Library library;
100
101
102int main(int argc,
103         char*argv[])
104{
105  FT_Error error;
106  FT_Int major = 0;
107  FT_Int minor = 0;
108  FT_Int patch = 0;
109
110  error = FT_Init_FreeType(&library);
111  if (error)
112    return EXIT_FAILURE;
113
114  FT_Library_Version(library, &major, &minor, &patch);
115  if (major != FREETYPE_MAJOR
116      || minor != FREETYPE_MINOR
117      || patch != FREETYPE_PATCH)
118    return EXIT_FAILURE;
119
120  printf("FT_Library_Version: %d.%d.%d\n", major, minor, patch);
121
122  error = FT_Done_FreeType(library);
123  if (error)
124    return EXIT_FAILURE;
125
126  return EXIT_SUCCESS;
127}
128END
129
130
131# build and test
132
133mkdir -p $tmpdir/tb
134cd $tmpdir/tb
135
136LD_LIBRARY_PATH=$tmpdir/out/lib:$LD_LIBRARY_PATH
137DYLD_LIBRARY_PATH=$tmpdir/out/lib:$DYLD_LIBRARY_PATH
138export LD_LIBRARY_PATH
139export DYLD_LIBRARY_PATH
140
141(set -x; cmake $tmpdir \
142               -DCMAKE_BUILD_TYPE=Debug \
143               -DCMAKE_PREFIX_PATH=$tmpdir/out)
144(set -x; cmake --build . \
145               --config Debug)
146(set -x; ctest -V -C Debug)
147
148(set -x; cmake . \
149               -DCMAKE_BUILD_TYPE=Release)
150(set -x; cmake --build . \
151               --config Release \
152               --clean-first)
153(set -x; ctest -V -C Release)
154
155rm -rf $tmpdir
156
157# EOF
158