| #!/bin/sh -e |
| |
| # Copyright (C) 2015-2022 by |
| # David Turner, Robert Wilhelm, and Werner Lemberg. |
| # |
| # This file is part of the FreeType project, and may only be used, modified, |
| # and distributed under the terms of the FreeType project license, |
| # LICENSE.TXT. By continuing to use, modify, or distribute this file you |
| # indicate that you have read the license and understand and accept it |
| # fully. |
| |
| # This script tests the CMake build. Simply run |
| # |
| # builds/cmake/testbuild.sh |
| # |
| # or |
| # |
| # BUILD_SHARED_LIBS=1 builds/cmake/testbuild.sh |
| # |
| # The script: |
| # |
| # - builds the main CMakeLists.txt |
| # - builds and runs a small test app in a separate build tree so |
| # the config-module is tested, too |
| # |
| # Options (environment variables): |
| # |
| # - The variable BUILD_SHARED_LIBS will be forwarded to the CMake project |
| # that builds the library. |
| # |
| |
| |
| # prepare temporary dir |
| |
| cd `dirname $0`/../.. |
| ftdir=`pwd` |
| tmpdir=/tmp/freetype-cmake-testbuild |
| rm -rf $tmpdir |
| mkdir -p $tmpdir |
| |
| |
| # build and install freetype |
| |
| if test -n "$BUILD_SHARED_LIBS"; then |
| bsl=-DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS |
| else |
| bsl=-UBUILD_SHARED_LIBS |
| fi |
| |
| build_opts="-DWITH_ZLIB=0 \ |
| -DWITH_BZip2=0 \ |
| -DWITH_PNG=0 \ |
| -DWITH_HarfBuzz=0 \ |
| $bsl \ |
| -DCMAKE_INSTALL_PREFIX=$tmpdir/out" |
| |
| (set -x; cmake -H$ftdir \ |
| -B$tmpdir/ftb \ |
| -DCMAKE_BUILD_TYPE=Debug \ |
| $build_opts) |
| (set -x; cmake --build $tmpdir/ftb \ |
| --config Debug \ |
| --target install) |
| |
| (set -x; cmake $tmpdir/ftb \ |
| -DCMAKE_BUILD_TYPE=Release) |
| (set -x; cmake --build $tmpdir/ftb \ |
| --config Release \ |
| --target install \ |
| --clean-first) |
| |
| |
| # create test project CMakeLists.txt |
| |
| cat >$tmpdir/CMakeLists.txt << END |
| cmake_minimum_required(VERSION 2.6) |
| project(freetype-cmake-testbuild) |
| |
| find_package(Freetype REQUIRED CONFIG) |
| |
| add_executable(freetype-cmake-test main.c) |
| target_link_libraries(freetype-cmake-test freetype) |
| |
| enable_testing() |
| add_test(freetype-cmake-test freetype-cmake-test) |
| END |
| |
| |
| # create test project main.c |
| |
| cat >$tmpdir/main.c << END |
| #include <stdio.h> |
| #include <stdlib.h> |
| |
| #include <ft2build.h> |
| #include <freetype/freetype.h> |
| |
| |
| FT_Library library; |
| |
| |
| int main(int argc, |
| char*argv[]) |
| { |
| FT_Error error; |
| FT_Int major = 0; |
| FT_Int minor = 0; |
| FT_Int patch = 0; |
| |
| error = FT_Init_FreeType(&library); |
| if (error) |
| return EXIT_FAILURE; |
| |
| FT_Library_Version(library, &major, &minor, &patch); |
| if (major != FREETYPE_MAJOR |
| || minor != FREETYPE_MINOR |
| || patch != FREETYPE_PATCH) |
| return EXIT_FAILURE; |
| |
| printf("FT_Library_Version: %d.%d.%d\n", major, minor, patch); |
| |
| error = FT_Done_FreeType(library); |
| if (error) |
| return EXIT_FAILURE; |
| |
| return EXIT_SUCCESS; |
| } |
| END |
| |
| |
| # build and test |
| |
| mkdir -p $tmpdir/tb |
| cd $tmpdir/tb |
| |
| LD_LIBRARY_PATH=$tmpdir/out/lib:$LD_LIBRARY_PATH |
| DYLD_LIBRARY_PATH=$tmpdir/out/lib:$DYLD_LIBRARY_PATH |
| export LD_LIBRARY_PATH |
| export DYLD_LIBRARY_PATH |
| |
| (set -x; cmake $tmpdir \ |
| -DCMAKE_BUILD_TYPE=Debug \ |
| -DCMAKE_PREFIX_PATH=$tmpdir/out) |
| (set -x; cmake --build . \ |
| --config Debug) |
| (set -x; ctest -V -C Debug) |
| |
| (set -x; cmake . \ |
| -DCMAKE_BUILD_TYPE=Release) |
| (set -x; cmake --build . \ |
| --config Release \ |
| --clean-first) |
| (set -x; ctest -V -C Release) |
| |
| rm -rf $tmpdir |
| |
| # EOF |