From d7933f01b3e398f05ce3a85168347d83958f523f Mon Sep 17 00:00:00 2001 From: Tamas Kenez Date: Tue, 24 Nov 2015 22:53:18 +0100 Subject: [PATCH] [cmake] add cmake-testbuild.sh to test the config-module --- builds/cmake-testbuild.sh | 104 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100755 builds/cmake-testbuild.sh diff --git a/builds/cmake-testbuild.sh b/builds/cmake-testbuild.sh new file mode 100755 index 0000000..71e7cc0 --- /dev/null +++ b/builds/cmake-testbuild.sh @@ -0,0 +1,104 @@ +#!/bin/sh -e + +# 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 [ -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" +build_opts="$build_opts -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 +#include + +#include +#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 +export LD_LIBRARY_PATH=$tmpdir/out/lib:$LD_LIBRARY_PATH +export DYLD_LIBRARY_PATH=$tmpdir/out/lib:$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 + -- 2.6.2