parent
c80620c7fe
commit
30fdfe6c66
2 changed files with 163 additions and 0 deletions
@ -0,0 +1,157 @@ |
||||
#!/bin/sh -e |
||||
|
||||
# Copyright 2015 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 FT_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 |
Loading…
Reference in new issue