Commit 30fdfe6c6624d0fa4d52d4291beb70c9e2a353b1

Tamas Kenez 2015-11-27T23:16:08

[cmake] Add script to test the config module. * builds/cmake/testbuild.sh: New file.

diff --git a/ChangeLog b/ChangeLog
index 33c9637..85e00c1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2015-11-27  Tamas Kenez  <tamas.kenez@adasworks.com>
 
+	[cmake] Add script to test the config module.
+
+	* builds/cmake/testbuild.sh: New file.
+
+2015-11-27  Tamas Kenez  <tamas.kenez@adasworks.com>
+
 	* CMakeLists.txt: Create `freetype-config.cmake' config module.
 
 2015-11-27  Tamas Kenez  <tamas.kenez@adasworks.com>
diff --git a/builds/cmake/testbuild.sh b/builds/cmake/testbuild.sh
new file mode 100755
index 0000000..5af669c
--- /dev/null
+++ b/builds/cmake/testbuild.sh
@@ -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