[PATCH 1/5] Add CMake build system for cppunit library
Bernhard Sessler
bernhard.sessler at corscience.de
Mon Dec 16 02:48:30 PST 2013
Signed-off-by: Bernhard Sessler <bernhard.sessler at corscience.de>
---
CMakeLists.txt | 45 ++++++++++
cmake/CheckCXXSourcefileCompiles.cmake | 99 ++++++++++++++++++++++
cmake/CheckCXXTypeExists.cmake | 35 ++++++++
cmake/CheckCXXTypeExists.cpp.in | 6 ++
cmake/PlatformChecks.cmake | 139 +++++++++++++++++++++++++++++++
cmake/Versioning.cmake | 47 +++++++++++
cmake/have_casts.cpp | 25 ++++++
cmake/have_namespaces.cpp | 32 +++++++
cmake/have_rtti.cpp | 28 +++++++
cmake/string_compare_signature.cpp | 30 +++++++
include/CMakeLists.txt | 23 ++++++
include/config-auto.h.in | 147 +++++++++++++++++++++++++++++++++
include/cppunit/TestAssert.h | 2 +-
src/CMakeLists.txt | 20 +++++
src/cppunit/CMakeLists.txt | 105 +++++++++++++++++++++++
15 files changed, 782 insertions(+), 1 deletion(-)
create mode 100644 CMakeLists.txt
create mode 100644 cmake/CheckCXXSourcefileCompiles.cmake
create mode 100644 cmake/CheckCXXTypeExists.cmake
create mode 100644 cmake/CheckCXXTypeExists.cpp.in
create mode 100644 cmake/PlatformChecks.cmake
create mode 100644 cmake/Versioning.cmake
create mode 100644 cmake/have_casts.cpp
create mode 100644 cmake/have_namespaces.cpp
create mode 100644 cmake/have_rtti.cpp
create mode 100644 cmake/string_compare_signature.cpp
create mode 100644 include/CMakeLists.txt
create mode 100644 include/config-auto.h.in
create mode 100644 src/CMakeLists.txt
create mode 100644 src/cppunit/CMakeLists.txt
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..c61228f
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,45 @@
+#=============================================================================
+# CppUnit - The C++ Unit Test Library
+# Copyright (c) 2013 - The Document Foundation
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#=============================================================================
+
+project(cppunit C CXX)
+cmake_minimum_required(VERSION 2.8.7)
+
+# Add project specific CMake module path
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+
+# Perform platform and compiler feature checks
+include(PlatformChecks)
+
+# Versioning
+include(Versioning)
+
+# Build options
+option(BUILD_SHARED_LIBS "Build cppunit as shared or static library" ON)
+
+if(BUILD_SHARED_LIBS)
+ add_definitions(-DCPPUNIT_BUILD_DLL)
+endif()
+
+# Include paths
+include_directories("${CMAKE_CURRENT_SOURCE_DIR}/include")
+include_directories("${CMAKE_CURRENT_BINARY_DIR}/include")
+
+# Subdirectories
+add_subdirectory(include)
+add_subdirectory(src)
diff --git a/cmake/CheckCXXSourcefileCompiles.cmake b/cmake/CheckCXXSourcefileCompiles.cmake
new file mode 100644
index 0000000..9e7a351
--- /dev/null
+++ b/cmake/CheckCXXSourcefileCompiles.cmake
@@ -0,0 +1,99 @@
+# - Check if given C++ source in the specified file compiles and links into an executable
+# CHECK_CXX_SOURCEFILE_COMPILES(<file> <var> [FAIL_REGEX <fail-regex>])
+# <file> - source file to try to compile, must define 'main'
+# <var> - variable to store whether the source code compiled
+# <fail-regex> - fail if test output matches this regex
+# The following variables may be set before calling this macro to
+# modify the way the check is run:
+#
+# CMAKE_REQUIRED_FLAGS = string of compile command line flags
+# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
+# CMAKE_REQUIRED_INCLUDES = list of include directories
+# CMAKE_REQUIRED_LIBRARIES = list of libraries to link
+#
+# Original implementation by:
+#=============================================================================
+# Copyright 2005-2009 Kitware, Inc.
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+#
+# This macro overwrites the original macro shipped with the CMake distribution in a way that
+# allows to specify a _file_ containing source code instead of passing the source code directly
+# as argument.
+#
+# Author: Bernhard Sessler <bernhard.sessler at corscience.de>
+# (c) 2013, The Document Foundation
+
+macro(CHECK_CXX_SOURCEFILE_COMPILES SOURCEFILE VAR)
+ if("${VAR}" MATCHES "^${VAR}$")
+ set(_FAIL_REGEX)
+ set(_key)
+ foreach(arg ${ARGN})
+ if("${arg}" MATCHES "^(FAIL_REGEX)$")
+ set(_key "${arg}")
+ elseif(_key)
+ list(APPEND _${_key} "${arg}")
+ else()
+ message(FATAL_ERROR "Unknown argument:\n ${arg}\n")
+ endif()
+ endforeach()
+
+ if(NOT EXISTS ${SOURCEFILE})
+ message(FATAL_ERROR "Could not find file ${SOURCEFILE}")
+ endif()
+
+ set(MACRO_CHECK_FUNCTION_DEFINITIONS
+ "-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
+ if(CMAKE_REQUIRED_LIBRARIES)
+ set(CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES
+ LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
+ else()
+ set(CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES)
+ endif()
+ if(CMAKE_REQUIRED_INCLUDES)
+ set(CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES
+ "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
+ else()
+ set(CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES)
+ endif()
+
+ message(STATUS "Performing Test ${VAR}")
+ try_compile(${VAR}
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${SOURCEFILE}
+ COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+ ${CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES}
+ CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
+ "${CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES}"
+ OUTPUT_VARIABLE OUTPUT)
+
+ foreach(_regex ${_FAIL_REGEX})
+ if("${OUTPUT}" MATCHES "${_regex}")
+ set(${VAR} 0)
+ endif()
+ endforeach()
+
+ if(${VAR})
+ set(${VAR} 1 CACHE INTERNAL "Test ${VAR}")
+ message(STATUS "Performing Test ${VAR} - Success")
+ file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+ "Performing C++ SOURCE FILE Test ${VAR} succeded with the following output:\n"
+ "${OUTPUT}\n"
+ "Source file was:\n${SOURCEFILE}\n")
+ else()
+ message(STATUS "Performing Test ${VAR} - Failed")
+ set(${VAR} "" CACHE INTERNAL "Test ${VAR}")
+ file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+ "Performing C++ SOURCE FILE Test ${VAR} failed with the following output:\n"
+ "${OUTPUT}\n"
+ "Source file was:\n${SOURCEFILE}\n")
+ endif()
+ endif()
+endmacro()
+
diff --git a/cmake/CheckCXXTypeExists.cmake b/cmake/CheckCXXTypeExists.cmake
new file mode 100644
index 0000000..1920a80
--- /dev/null
+++ b/cmake/CheckCXXTypeExists.cmake
@@ -0,0 +1,35 @@
+# Checks if a C++ type exists
+# Contrary to CheckTypeSize, complex C++ types can be used here.
+#
+# The parameters have following meaning:
+# TYPE - the type like "std::tr1::shared_ptr<int>"
+# HEADER - the header to include, for example "tr1/memory"
+# VARIABLE - the name of the variable that is set to TRUE on success
+#
+# Example:
+# check_cxx_type_exists("std::tr1::array<int, 20>" "tr1/array" HAVE_STD_TR1_ARRAY)
+#
+# Author: Bernhard Sessler <bernhard.sessler at corscience.de>
+# (c) 2013, The Document Foundation
+
+macro(CHECK_CXX_TYPE_EXISTS TYPE HEADER VARIABLE)
+ set(CHECK_CXX_TYPE_EXISTS_HEADER ${HEADER})
+ set(CHECK_CXX_TYPE_EXISTS_TYPE ${TYPE})
+
+ if(NOT DEFINED ${VARIABLE})
+ message(STATUS "Looking for ${TYPE}")
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/CheckCXXTypeExists.cpp.in"
+ "${CMAKE_BINARY_DIR}/cmake/CheckCXXTypeExists_${VARIABLE}.cpp")
+
+ try_compile(${VARIABLE}
+ "${CMAKE_BINARY_DIR}"
+ "${CMAKE_BINARY_DIR}/cmake/CheckCXXTypeExists_${VARIABLE}.cpp")
+
+ if(${VARIABLE})
+ message(STATUS "Looking for ${TYPE} - found")
+ else ()
+ message(STATUS "Looking for ${TYPE} - not found")
+ endif()
+ set(${var} "${${var}}" CACHE INTERNAL "CHECK_CXX_TYPE_EXISTS(${TYPE})")
+ endif()
+endmacro()
diff --git a/cmake/CheckCXXTypeExists.cpp.in b/cmake/CheckCXXTypeExists.cpp.in
new file mode 100644
index 0000000..2a97911
--- /dev/null
+++ b/cmake/CheckCXXTypeExists.cpp.in
@@ -0,0 +1,6 @@
+#include <@CHECK_CXX_TYPE_EXISTS_HEADER@>
+
+int main()
+{
+ @CHECK_CXX_TYPE_EXISTS_TYPE@ type;
+}
diff --git a/cmake/PlatformChecks.cmake b/cmake/PlatformChecks.cmake
new file mode 100644
index 0000000..657bf3b
--- /dev/null
+++ b/cmake/PlatformChecks.cmake
@@ -0,0 +1,139 @@
+#=============================================================================
+# CppUnit - The C++ Unit Test Library
+# Copyright (c) 2013 - The Document Foundation
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#=============================================================================
+
+##########################
+# C platform checks
+##########################
+
+# C header Checks
+include(CheckIncludeFile)
+check_include_file(sys/types.h CPPUNIT_HAVE_SYS_TYPES_H)
+check_include_file(sys/stat.h CPPUNIT_HAVE_SYS_STAT_H)
+check_include_file(stdlib.h CPPUNIT_HAVE_STDLIB_H)
+check_include_file(string.h CPPUNIT_HAVE_STRING_H)
+check_include_file(memory.h CPPUNIT_HAVE_MEMORY_H)
+check_include_file(strings.h CPPUNIT_HAVE_STRINGS_H)
+check_include_file(inttypes.h CPPUNIT_HAVE_INTTYPES_H)
+check_include_file(stdint.h CPPUNIT_HAVE_STDINT_H)
+check_include_file(unistd.h CPPUNIT_HAVE_UNISTD_H)
+check_include_file(dlfcn.h CPPUNIT_HAVE_DLFCN_H)
+check_include_file(math.h CPPUNIT_HAVE_MATH_H)
+check_include_file(ieeefp.h CPPUNIT_HAVE_IEEEFP_H)
+
+# C library checks
+include(CheckLibraryExists)
+check_library_exists(dl dlopen dlfcn.h CPPUNIT_HAVE_LIBDL)
+check_library_exists(dl dlerror dlfcn.h CPPUNIT_HAVE_DLERROR)
+if(CPPUNIT_HAVE_LIBDL)
+ list(APPEND CPPUNIT_COMMON_LIBS "dl")
+endif()
+
+if(NOT CPPUNIT_HAVE_LIBDL)
+ check_library_exists(svld dlopen dlfcn.h CPPUNIT_HAVE_LIBDL)
+ check_library_exists(svld dlerror dlfcn.h CPPUNIT_HAVE_DLERROR)
+ if(CPPUNIT_HAVE_LIBDL)
+ list(APPEND CPPUNIT_COMMON_LIBS "svld")
+ endif()
+endif()
+
+check_library_exists(dld dld_link dld.h CPPUNIT_HAVE_DLD)
+check_library_exists(dld shl_load dld.h CPPUNIT_HAVE_UNIX_SHL_LOADER)
+if(CPPUNIT_HAVE_UNIX_SHL_LOADER)
+ list(APPEND CPPUNIT_COMMON_LIBS "dld")
+endif()
+
+# C function checks
+include(CheckFunctionExists)
+check_function_exists(finite CPPUNIT_HAVE_FINITE)
+check_function_exists(_finite CPPUNIT_HAVE__FINITE)
+
+# C symbol checks
+include(CheckSymbolExists)
+if(CPPUNIT_HAVE_MATH_H)
+ set(_header math.h)
+elseif(CPPUNIT_HAVE_IEEEFP_H)
+ set(_header ieeefp.h)
+else()
+ set(_unsupported_compiler 1)
+endif()
+
+if(CPPUNIT_HAVE_MATH_H OR CPPUNIT_HAVE_IEEEFP_H)
+ check_symbol_exists(isfinite ${_header} CPPUNIT_HAVE_ISFINITE)
+endif()
+
+# MinGW depends on the MS Visual C Runtime.
+# Unfortunately on Windows XP the default runtime does not support the Microsoft secure API.
+# That's why it's explicitly disabled for all Windows versions < 6.0 (Vista) here.
+if(MINGW AND ${CMAKE_SYSTEM_VERSION} VERSION_LESS "6.0")
+ set(CPPUNIT_HAVE_SPRINTF_S FALSE CACHE INTERNAL "MinGW on Windows < 6.0 does not support this")
+ message(STATUS "Building for ${CMAKE_SYSTEM} with MinGW - disabling Secure API")
+else()
+ check_symbol_exists(sprintf_s "stdio.h" CPPUNIT_HAVE_SPRINTF_S)
+endif()
+
+##########################
+# C++ platform checks
+##########################
+
+# C++ header checks
+include(CheckIncludeFileCXX)
+check_include_file_cxx(strstream CPPUNIT_HAVE_STRSTREAM)
+check_include_file_cxx(cmath CPPUNIT_HAVE_CMATH)
+check_include_file_cxx(memory.h CPPUNIT_HAVE_MEMORY_H)
+check_include_file_cxx(cxxabi.h CPPUNIT_HAVE_CXXABI_H)
+check_include_file_cxx(typeinfo CPPUNIT_HAVE_TYPEINFO)
+
+# C++ symbol checks
+include(CheckCXXSymbolExists)
+if(CPPUNIT_HAVE_CXXABI_H)
+ check_cxx_symbol_exists(abi::__cxa_demangle cxxabi.h CPPUNIT_HAVE_GCC_ABI_DEMANGLE)
+endif()
+
+# C++ type checks
+include(CheckCXXTypeExists)
+check_cxx_type_exists(std::stringstream sstream CPPUNIT_HAVE_SSTREAM)
+if(CPPUNIT_HAVE_STRSTREAM)
+ set(_header strstream)
+else()
+ set(_header strstream.h)
+endif()
+check_cxx_type_exists(std::ostrstream ${_header} CPPUNIT_HAVE_CLASS_STRSTREAM)
+
+# C++ feature checks
+include(CheckCXXSourcefileCompiles)
+check_cxx_sourcefile_compiles(${PROJECT_SOURCE_DIR}/cmake/have_namespaces.cpp
+ CPPUNIT_HAVE_NAMESPACES)
+check_cxx_sourcefile_compiles(${PROJECT_SOURCE_DIR}/cmake/have_casts.cpp
+ CPPUNIT_HAVE_CPP_CAST)
+check_cxx_sourcefile_compiles(${PROJECT_SOURCE_DIR}/cmake/string_compare_signature.cpp
+ CPPUNIT_FUNC_STRING_COMPARE_SIZE_FIRST)
+
+if(NOT CPPUNIT_FUNC_STRING_COMPARE_SIZE_FIRST)
+ set(CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST 1
+ CACHE INTERNAL "define if library uses std::string::compare(string,pos,n)")
+endif()
+
+if(CPPUNIT_HAVE_TYPEINFO)
+ check_cxx_sourcefile_compiles(${PROJECT_SOURCE_DIR}/cmake/have_rtti.cpp
+ CPPUNIT_HAVE_RTTI)
+endif()
+
+if(_unsupported_compiler)
+ message(FATAL_ERROR "Your compiler does not support all features required to build cppunit!")
+endif()
diff --git a/cmake/Versioning.cmake b/cmake/Versioning.cmake
new file mode 100644
index 0000000..8cc9dee
--- /dev/null
+++ b/cmake/Versioning.cmake
@@ -0,0 +1,47 @@
+#=============================================================================
+# CppUnit - The C++ Unit Test Library
+# Copyright (c) 2013 - The Document Foundation
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#=============================================================================
+
+set(CPPUNIT_PACKAGE "cppunit" CACHE INTERNAL "The library package name")
+set(CPPUNIT_SOVERSION_MAJOR 1)
+set(CPPUNIT_SOVERSION_MINOR 0)
+set(CPPUNIT_SOVERSION_PATCH 0)
+
+if(EXISTS "${PROJECT_SOURCE_DIR}/.version")
+ file(READ "${PROJECT_SOURCE_DIR}/.version" _version)
+ string(STRIP ${_version} _version)
+endif()
+
+if(NOT _version)
+ find_package(Git)
+ if(GIT_FOUND)
+ execute_process(
+ COMMAND ${GIT_EXECUTABLE} describe
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+ OUTPUT_VARIABLE _version
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ RESULT_VARIABLE CPPUNIT_VERSION_RESULT)
+ endif()
+endif()
+
+if(NOT _version)
+ set(_version "unknown")
+endif()
+
+set(CPPUNIT_VERSION "${_version}" CACHE INTERNAL "The cppunit library version")
+message(STATUS "Building cppunit version: ${CPPUNIT_VERSION}")
diff --git a/cmake/have_casts.cpp b/cmake/have_casts.cpp
new file mode 100644
index 0000000..de35b46
--- /dev/null
+++ b/cmake/have_casts.cpp
@@ -0,0 +1,25 @@
+//=============================================================================
+// CppUnit - The C++ Unit Test Library
+// Copyright (c) 2013 - The Document Foundation
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//=============================================================================
+
+// Check whether the compiler supports C++ style casts
+int main()
+{
+ char c = 0;
+ return static_cast<int>(c);
+}
diff --git a/cmake/have_namespaces.cpp b/cmake/have_namespaces.cpp
new file mode 100644
index 0000000..0183235
--- /dev/null
+++ b/cmake/have_namespaces.cpp
@@ -0,0 +1,32 @@
+//=============================================================================
+// CppUnit - The C++ Unit Test Library
+// Copyright (c) 2013 - The Document Foundation
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//=============================================================================
+
+// Check whether the compiler supports namespaces
+namespace o {
+namespace i {
+int r = 0;
+}
+}
+
+using namespace o::i;
+
+int main()
+{
+ return r;
+}
diff --git a/cmake/have_rtti.cpp b/cmake/have_rtti.cpp
new file mode 100644
index 0000000..b0b9774
--- /dev/null
+++ b/cmake/have_rtti.cpp
@@ -0,0 +1,28 @@
+//=============================================================================
+// CppUnit - The C++ Unit Test Library
+// Copyright (c) 2013 - The Document Foundation
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//=============================================================================
+
+#include <typeinfo>
+
+// Check whether the compiler supports run-time type information (RTTI)
+int main()
+{
+ int t = 0;
+ const char* id = typeid(t).name();
+ return t;
+}
diff --git a/cmake/string_compare_signature.cpp b/cmake/string_compare_signature.cpp
new file mode 100644
index 0000000..66ba5d4
--- /dev/null
+++ b/cmake/string_compare_signature.cpp
@@ -0,0 +1,30 @@
+//=============================================================================
+// CppUnit - The C++ Unit Test Library
+// Copyright (c) 2013 - The Document Foundation
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//=============================================================================
+
+// Check whether the std::string::compare method takes a size_t as first argument
+#include <string>
+
+int main()
+{
+ std::string s1("Test");
+ std::string s2("test");
+ int res = s2.compare(0, std::string::npos, s1);
+
+ return 0;
+}
diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
new file mode 100644
index 0000000..b129580
--- /dev/null
+++ b/include/CMakeLists.txt
@@ -0,0 +1,23 @@
+#=============================================================================
+# CppUnit - The C++ Unit Test Library
+# Copyright (c) 2013 - The Document Foundation
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#=============================================================================
+
+configure_file(config-auto.h.in "${CMAKE_CURRENT_BINARY_DIR}/cppunit/config-auto.h")
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/cppunit/config-auto.h" DESTINATION include/cppunit)
+
+install(DIRECTORY cppunit DESTINATION include FILES_MATCHING PATTERN "*.h")
diff --git a/include/config-auto.h.in b/include/config-auto.h.in
new file mode 100644
index 0000000..309e291
--- /dev/null
+++ b/include/config-auto.h.in
@@ -0,0 +1,147 @@
+//=============================================================================
+// CppUnit - The C++ Unit Test Library
+// Copyright (c) 2013 - The Document Foundation
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//=============================================================================
+
+#ifndef _INCLUDE_CPPUNIT_CONFIG_AUTO_H
+#define _INCLUDE_CPPUNIT_CONFIG_AUTO_H
+
+/* include/cppunit/config-auto.h. Generated automatically at end of configure. */
+
+/* define if library uses std::string::compare(string,pos,n) */
+#cmakedefine CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST 1
+
+/* define if the library defines strstream */
+#cmakedefine CPPUNIT_HAVE_CLASS_STRSTREAM 1
+
+/* Define if you have the <cmath> header file. */
+#cmakedefine CPPUNIT_HAVE_CMATH 1
+
+/* Define if you have the GNU dld library. */
+#cmakedefine CPPUNIT_HAVE_DLD 1
+
+/* Define if you have the `dlerror' function. */
+#cmakedefine CPPUNIT_HAVE_DLERROR 1
+
+/* Define if you have the <dlfcn.h> header file. */
+#cmakedefine CPPUNIT_HAVE_DLFCN_H 1
+
+/* Define if you have the `finite' function. */
+#cmakedefine CPPUNIT_HAVE_FINITE 1
+
+/* define if the compiler supports GCC C++ ABI name demangling */
+#cmakedefine CPPUNIT_HAVE_GCC_ABI_DEMANGLE 1
+
+/* Define if you have the <ieeefp.h> header file. */
+#cmakedefine CPPUNIT_HAVE_IEEEFP_H 1
+
+/* Define if you have the <inttypes.h> header file. */
+#cmakedefine CPPUNIT_HAVE_INTTYPES_H 1
+
+/* define if compiler has isfinite */
+#cmakedefine CPPUNIT_HAVE_ISFINITE 1
+
+/* Define if you have the secure sprintf_s function */
+#cmakedefine CPPUNIT_HAVE_SPRINTF_S 1
+
+/* Define if you have the libdl library or equivalent. */
+#cmakedefine CPPUNIT_HAVE_LIBDL 1
+
+/* Define if you have the <memory.h> header file. */
+#cmakedefine CPPUNIT_HAVE_MEMORY_H 1
+
+/* Define if the compiler implements namespaces */
+#cmakedefine CPPUNIT_HAVE_NAMESPACES 1
+
+/* define if the compiler supports Run-Time Type Identification */
+#cmakedefine CPPUNIT_HAVE_RTTI 1
+
+/* define if the compiler supports C++ style casts */
+#cmakedefine CPPUNIT_HAVE_CPP_CAST 1
+
+/* Define if you have the shl_load function. */
+#cmakedefine CPPUNIT_HAVE_SHL_LOAD 1
+
+/* define if the compiler has stringstream */
+#cmakedefine CPPUNIT_HAVE_SSTREAM 1
+
+/* Define if you have the <stdint.h> header file. */
+#cmakedefine CPPUNIT_HAVE_STDINT_H 1
+
+/* Define if you have the <stdlib.h> header file. */
+#cmakedefine CPPUNIT_HAVE_STDLIB_H 1
+
+/* Define if you have the <strings.h> header file. */
+#cmakedefine CPPUNIT_HAVE_STRINGS_H 1
+
+/* Define if you have the <string.h> header file. */
+#cmakedefine CPPUNIT_HAVE_STRING_H 1
+
+/* Define if you have the <strstream> header file. */
+#cmakedefine CPPUNIT_HAVE_STRSTREAM 1
+
+/* Define if you have the <sys/stat.h> header file. */
+#cmakedefine CPPUNIT_HAVE_SYS_STAT_H 1
+
+/* Define if you have the <sys/types.h> header file. */
+#cmakedefine CPPUNIT_HAVE_SYS_TYPES_H 1
+
+/* Define if you have the <unistd.h> header file. */
+#cmakedefine CPPUNIT_HAVE_UNISTD_H 1
+
+/* Name of package */
+#cmakedefine CPPUNIT_PACKAGE "@CPPUNIT_PACKAGE@"
+
+/* Version number of package */
+#cmakedefine CPPUNIT_VERSION "@CPPUNIT_VERSION@"
+
+/* Define to the address where bug reports for this package should be sent. */
+#ifndef CPPUNIT_PACKAGE_BUGREPORT
+#define CPPUNIT_PACKAGE_BUGREPORT ""
+#endif
+
+/* Define to the full name of this package. */
+#ifndef CPPUNIT_PACKAGE_NAME
+#define CPPUNIT_PACKAGE_NAME ""
+#endif
+
+/* Define to the full name and version of this package. */
+#ifndef CPPUNIT_PACKAGE_STRING
+#define CPPUNIT_PACKAGE_STRING ""
+#endif
+
+/* Define to the one symbol short name of this package. */
+#ifndef CPPUNIT_PACKAGE_TARNAME
+#define CPPUNIT_PACKAGE_TARNAME ""
+#endif
+
+/* Define to the home page for this package. */
+#ifndef CPPUNIT_PACKAGE_URL
+#define CPPUNIT_PACKAGE_URL ""
+#endif
+
+/* Define to the version of this package. */
+#ifndef CPPUNIT_PACKAGE_VERSION
+#define CPPUNIT_PACKAGE_VERSION ""
+#endif
+
+/* Define to use type_info::name() for class names */
+#ifndef CPPUNIT_USE_TYPEINFO_NAME
+#define CPPUNIT_USE_TYPEINFO_NAME CPPUNIT_HAVE_RTTI
+#endif
+
+#endif /* _INCLUDE_CPPUNIT_CONFIG_AUTO_H */
diff --git a/include/cppunit/TestAssert.h b/include/cppunit/TestAssert.h
index 851a444..0b39f2a 100644
--- a/include/cppunit/TestAssert.h
+++ b/include/cppunit/TestAssert.h
@@ -91,7 +91,7 @@ struct assertion_traits<double>
const int precision = 15;
#endif // #ifdef DBL_DIG
char buffer[128];
-#ifdef __STDC_SECURE_LIB__ // Use secure version with visual studio 2005 to avoid warning.
+#ifdef CPPUNIT_HAVE_SPRINTF_S // Use secure version with visual studio 2005 to avoid warning.
sprintf_s(buffer, sizeof(buffer), "%.*g", precision, x);
#else
sprintf(buffer, "%.*g", precision, x);
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 0000000..6ac95fd
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,20 @@
+#=============================================================================
+# CppUnit - The C++ Unit Test Library
+# Copyright (c) 2013 - The Document Foundation
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#=============================================================================
+
+add_subdirectory(cppunit)
diff --git a/src/cppunit/CMakeLists.txt b/src/cppunit/CMakeLists.txt
new file mode 100644
index 0000000..1f0b058
--- /dev/null
+++ b/src/cppunit/CMakeLists.txt
@@ -0,0 +1,105 @@
+#=============================================================================
+# CppUnit - The C++ Unit Test Library
+# Copyright (c) 2013 - The Document Foundation
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#=============================================================================
+
+# Common source files
+set(cppunit_SOURCES
+ AdditionalMessage.cpp
+ Asserter.cpp
+ BriefTestProgressListener.cpp
+ CompilerOutputter.cpp
+ DefaultProtector.cpp
+ DynamicLibraryManager.cpp
+ DynamicLibraryManagerException.cpp
+ Exception.cpp
+ Message.cpp
+ PlugInManager.cpp
+ PlugInParameters.cpp
+ ProtectorChain.cpp
+ Protector.cpp
+ RepeatedTest.cpp
+ SourceLine.cpp
+ StringTools.cpp
+ SynchronizedObject.cpp
+ TestAssert.cpp
+ TestCase.cpp
+ TestCaseDecorator.cpp
+ TestComposite.cpp
+ Test.cpp
+ TestDecorator.cpp
+ TestFactoryRegistry.cpp
+ TestFailure.cpp
+ TestLeaf.cpp
+ TestNamer.cpp
+ TestPath.cpp
+ TestPlugInDefaultImpl.cpp
+ TestResultCollector.cpp
+ TestResult.cpp
+ TestRunner.cpp
+ TestSetUp.cpp
+ TestSuccessListener.cpp
+ TestSuiteBuilderContext.cpp
+ TestSuite.cpp
+ TextOutputter.cpp
+ TextTestProgressListener.cpp
+ TextTestResult.cpp
+ TextTestRunner.cpp
+ TypeInfoHelper.cpp
+ XmlDocument.cpp
+ XmlElement.cpp
+ XmlOutputter.cpp
+ XmlOutputterHook.cpp)
+
+# Platform specific source files
+# Microsoft Windows
+if(WIN32)
+ set(cppunit_SOURCES ${cppunit_SOURCES}
+ DllMain.cpp
+ Win32DynamicLibraryManager.cpp)
+# Unix based systems
+elseif(UNIX)
+ set(cppunit_SOURCES ${cppunit_SOURCES}
+ UnixDynamicLibraryManager.cpp)
+ if(CPPUNIT_HAVE_UNIX_SHL_LOADER)
+ set(cppunit_SOURCES ${cppunit_SOURCES}
+ ShlDynamicLibraryManager.cpp)
+ endif()
+# BeOS
+elseif(CMAKE_SYSTEM_NAME MATCHES "BeOS.*")
+ set(cppunit_SOURCES ${cppunit_SOURCES}
+ BeOsDynamicLibraryManager.cpp)
+endif()
+
+# Create the library
+add_library(cppunit ${cppunit_SOURCES})
+target_link_libraries(cppunit ${CPPUNIT_COMMON_LIBS})
+
+set_target_properties(cppunit PROPERTIES
+ VERSION ${CPPUNIT_SOVERSION_MAJOR}.${CPPUNIT_SOVERSION_MINOR}.${CPPUNIT_SOVERSION_PATCH}
+ SOVERSION ${CPPUNIT_SOVERSION_MAJOR})
+
+# Append a debug postfix to the library filename on Windows
+if(WIN32)
+ set_target_properties(cppunit PROPERTIES DEBUG_POSTFIX "d")
+endif()
+
+# Create install target
+install(TARGETS cppunit
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
+ RUNTIME DESTINATION bin)
--
1.8.3.2
More information about the LibreOffice
mailing list