Support unit tests for non-MSVC builds
The currently included version of cppunit supports compilation only with MSVC compilers, as it lacks the necessary config-auto.h header typically generated via configure. Address this by using CMake to auto-generate the configuration header for all other compilers, restoring balance to the universe.pull/366/head
parent
1c27d3c565
commit
8d77a47304
|
@ -51,6 +51,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
# include "../contrib/zlib/zlib.h"
|
||||
#endif
|
||||
|
||||
#include <time.h>
|
||||
|
||||
#ifndef ASSIMP_BUILD_NO_EXPORT
|
||||
#ifndef ASSIMP_BUILD_NO_ASSBIN_EXPORTER
|
||||
|
||||
|
|
|
@ -16,6 +16,111 @@ SOURCE_GROUP( unit FILES
|
|||
)
|
||||
|
||||
if(WIN32)
|
||||
# cpppunit provides configuration headers for MSVC. Other plaforms require
|
||||
# explicit creation at configure time.
|
||||
if(NOT MSVC)
|
||||
# Generates include/cppunit/config-auto.h
|
||||
# This is originally done by autoconf
|
||||
|
||||
include(CheckIncludeFile)
|
||||
include(CheckIncludeFileCXX)
|
||||
include(CheckCXXSourceCompiles)
|
||||
include(CheckCSourceCompiles)
|
||||
include(CheckLibraryExists)
|
||||
include(CheckFunctionExists)
|
||||
|
||||
check_include_file_cxx(sstream CPPUNIT_HAVE_SSTREAM)
|
||||
check_include_file_cxx(strstream CPPUNIT_HAVE_STRSTREAM)
|
||||
set (CMAKE_REQUIRED_DEFINITIONS -DHAVE_STRSTREAM=CPPUNIT_HAVE_STRSTREAM)
|
||||
check_cxx_source_compiles(
|
||||
"#ifdef HAVE_STRSTREAM
|
||||
# include <strstream>
|
||||
#else
|
||||
# include <strstream.h>
|
||||
#endif
|
||||
int main() {
|
||||
std::ostrstream message;
|
||||
message << \"Hello\";
|
||||
return 0;
|
||||
}" CPPUNIT_HAVE_CLASS_STRSTREAM)
|
||||
|
||||
check_include_file_cxx(cmath CPPUNIT_HAVE_CMATH)
|
||||
#Not used, dld library is obsolete anyway HAVE_DLD
|
||||
#Not used HAVE_DLERROR
|
||||
check_include_file(dlfcn.h CPPUNIT_HAVE_DLFCN_H)
|
||||
|
||||
check_c_source_compiles(
|
||||
"#include <math.h>
|
||||
int main() {
|
||||
return finite(3);
|
||||
}" CPPUNIT_HAVE_FINITE)
|
||||
|
||||
check_c_source_compiles(
|
||||
"#include <math.h>
|
||||
int main() {
|
||||
return _finite(3);
|
||||
}" CPPUNIT_HAVE__FINITE)
|
||||
|
||||
#Not used CPPUNIT_HAVE_GCC_ABI_DEMANGLE
|
||||
#Not used HAVE_INTTYPES_H
|
||||
|
||||
check_c_source_compiles(
|
||||
"#include <math.h>
|
||||
int main() {
|
||||
return isfinite(3);
|
||||
}" CPPUNIT_HAVE_ISFINITE)
|
||||
|
||||
check_library_exists(dl dlopen "" CPPUNIT_HAVE_LIBDL)
|
||||
#Not used HAVE_MEMORY_H
|
||||
|
||||
check_cxx_source_compiles(
|
||||
"namespace Outer {
|
||||
namespace Inner {
|
||||
int i = 0;
|
||||
}
|
||||
}
|
||||
using namespace Outer::Inner;
|
||||
int main() {
|
||||
return i;
|
||||
}" CPPUNIT_HAVE_NAMESPACES)
|
||||
|
||||
check_cxx_source_compiles(
|
||||
"#include <typeinfo>
|
||||
class Base {
|
||||
public:
|
||||
Base() {}
|
||||
virtual int f() { return 0; }
|
||||
};
|
||||
class Derived : public Base {
|
||||
public:
|
||||
Derived() {}
|
||||
virtual int f() { return 1; }
|
||||
};
|
||||
int main() {
|
||||
Derived d;
|
||||
Base * ptr = &d;
|
||||
return typeid(*ptr) == typeid(Derived);
|
||||
}" CPPUNIT_HAVE_RTTI)
|
||||
|
||||
check_library_exists(dl shl_load "" CPPUNIT_HAVE_SHL_LOAD)
|
||||
#Not used HAVE_STDINT_H
|
||||
#Not used HAVE_STDLIB_H
|
||||
#Not used HAVE_STRINGS_H
|
||||
#Not used HAVE_STRING_H
|
||||
#Not used HAVE_SYS_STAT_H
|
||||
#Not used HAVE_SYS_TYPES_H
|
||||
#Not used HAVE_UNISTD_H
|
||||
#Not used PACKAGE
|
||||
#Not used PACKAGE_BUGREPORT
|
||||
#Not used PACKAGE_NAME
|
||||
#Not used PACKAGE_STRING
|
||||
#Not used PACKAGE_TARNAME
|
||||
#Not used PACKAGE_VERSION
|
||||
#Not used STDC_HEADERS
|
||||
check_include_file_cxx(typeinfo CPPUNIT_USE_TYPEINFO_NAME)
|
||||
configure_file(unit/cppunit-config/config.h.cmake ${CMAKE_CURRENT_SOURCE_DIR}/../contrib/cppunit-1.12.1/include/cppunit/config-auto.h)
|
||||
endif()
|
||||
|
||||
SET( CPPUNIT_SRCS
|
||||
../contrib/cppunit-1.12.1/src/cppunit/AdditionalMessage.cpp
|
||||
../contrib/cppunit-1.12.1/src/cppunit/Asserter.cpp
|
||||
|
|
|
@ -0,0 +1,103 @@
|
|||
/* Inspired by config/config.h.in, config.h.cmake is used by CMake. */
|
||||
|
||||
/* define if library uses std::string::compare(string,pos,n) */
|
||||
//Not used #undef FUNC_STRING_COMPARE_STRING_FIRST
|
||||
|
||||
/* define to 1 if the library defines strstream */
|
||||
#cmakedefine01 CPPUNIT_HAVE_CLASS_STRSTREAM
|
||||
|
||||
/* Define to 1 if you have the <cmath> header file. */
|
||||
#cmakedefine01 CPPUNIT_HAVE_CMATH
|
||||
|
||||
/* Define if you have the GNU dld library. */
|
||||
//Not used, dld library is obsolete anyway #undef HAVE_DLD
|
||||
|
||||
/* Define to 1 if you have the `dlerror' function. */
|
||||
//Not used #undef HAVE_DLERROR
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#cmakedefine01 CPPUNIT_HAVE_DLFCN_H
|
||||
|
||||
/* Define to 1 if you have the `finite' function. */
|
||||
#cmakedefine01 CPPUNIT_HAVE_FINITE
|
||||
|
||||
/* Define to 1 if you have the `_finite' function. */
|
||||
#cmakedefine01 CPPUNIT_HAVE__FINITE
|
||||
|
||||
/* define to 1 if the compiler supports GCC C ABI name demangling */
|
||||
//Not used #undef CPPUNIT_HAVE_GCC_ABI_DEMANGLE
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
//Not used #undef HAVE_INTTYPES_H
|
||||
|
||||
/* define if compiler has isfinite */
|
||||
#cmakedefine CPPUNIT_HAVE_ISFINITE
|
||||
|
||||
/* Define if you have the libdl library or equivalent. */
|
||||
#cmakedefine CPPUNIT_HAVE_LIBDL
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
//Not used #undef HAVE_MEMORY_H
|
||||
|
||||
/* define to 1 if the compiler implements namespaces */
|
||||
#cmakedefine01 CPPUNIT_HAVE_NAMESPACES
|
||||
|
||||
/* define to 1 if the compiler supports Run-Time Type Identification */
|
||||
#cmakedefine01 CPPUNIT_HAVE_RTTI
|
||||
|
||||
/* Define if you have the shl_load function. */
|
||||
#cmakedefine CPPUNIT_HAVE_SHL_LOAD
|
||||
|
||||
/* define to 1 if the compiler has stringstream */
|
||||
#cmakedefine01 CPPUNIT_HAVE_SSTREAM
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
//Not used #undef HAVE_STDINT_H
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
//Not used #undef HAVE_STDLIB_H
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
//Not used #undef HAVE_STRINGS_H
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
//Not used #undef HAVE_STRING_H
|
||||
|
||||
/* Define to 1 if you have the <strstream> header file. */
|
||||
#cmakedefine01 CPPUNIT_HAVE_STRSTREAM
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
//Not used #undef HAVE_SYS_STAT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
//Not used #undef HAVE_SYS_TYPES_H
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
//Not used #undef HAVE_UNISTD_H
|
||||
|
||||
/* Name of package */
|
||||
//Not used #undef PACKAGE
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
//Not used #undef PACKAGE_BUGREPORT
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
//Not used #undef PACKAGE_NAME
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
//Not used #undef PACKAGE_STRING
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
//Not used #undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the version of this package. */
|
||||
//Not used #undef PACKAGE_VERSION
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
//Not used #undef STDC_HEADERS
|
||||
|
||||
/* Define to 1 to use type_info::name() for class names */
|
||||
#cmakedefine01 CPPUNIT_USE_TYPEINFO_NAME
|
||||
|
||||
/* Version number of package */
|
||||
#define CPPUNIT_VERSION @CppUnit_VERSION@
|
Loading…
Reference in New Issue