openclonk/tests/CMakeLists.txt

156 lines
4.5 KiB
CMake

# OpenClonk, http://www.openclonk.org
#
# Copyright (c) 2013-2015, The OpenClonk Team and contributors
#
# Distributed under the terms of the ISC license; see accompanying file
# "COPYING" for details.
#
# "Clonk" is a registered trademark of Matthes Bender, used with permission.
# See accompanying file "TRADEMARK" for details.
#
# To redistribute this file separately, substitute the full license texts
# for the above references.
# used by c4script and by the unit tests
set(C4SCRIPT_SOURCES
../include/c4script/c4script.h
../src/C4Include.cpp
../src/script/C4ScriptStandalone.cpp
../src/script/C4ScriptStandaloneStubs.cpp
)
# Look for GTest and GMock
# GMock's source package ships GTest too, so look for it first
find_path(GMOCK_ROOT
NAMES "gmock-all.cc" "src/gmock-all.cc" "gmock/gmock-all.cc"
PATHS "/usr/src/gmock"
)
find_path(GMOCK_INCLUDE_DIR
NAMES "gmock/gmock.h"
HINTS "${GMOCK_ROOT}"
PATH_SUFFIXES "include"
)
find_file(GMOCK_SOURCE_ALL
NAMES "gmock-all.cc"
HINTS "${GMOCK_ROOT}"
PATH_SUFFIXES "src" "gtest"
NO_DEFAULT_PATH
)
find_path(GTEST_ROOT
NAMES "src/gtest-all.cc" "gtest/gtest-all.cc"
PATHS "${GMOCK_ROOT}" "/usr/src/gtest"
)
find_path(GTEST_INCLUDE_DIR
NAMES "gtest/gtest.h"
HINTS "${GTEST_ROOT}"
PATH_SUFFIXES "include"
)
find_file(GTEST_SOURCE_ALL
NAMES "gtest-all.cc"
HINTS "${GTEST_ROOT}"
PATH_SUFFIXES "src" "gtest"
NO_DEFAULT_PATH
)
if (GMOCK_SOURCE_ALL AND GMOCK_INCLUDE_DIR)
add_library(gmock STATIC
"${GMOCK_SOURCE_ALL}"
"${GMOCK_INCLUDE_DIR}/gmock/gmock.h"
)
set_property(TARGET gmock PROPERTY FOLDER "Third-party libraries")
if (GMOCK_ROOT)
include_directories("${GMOCK_ROOT}")
endif()
include_directories("${GMOCK_INCLUDE_DIR}")
set(GMOCK_FOUND 1)
endif()
if (GTEST_SOURCE_ALL AND GTEST_INCLUDE_DIR)
add_library(gtest STATIC
"${GTEST_SOURCE_ALL}"
"${GTEST_INCLUDE_DIR}/gtest/gtest.h"
)
set_property(TARGET gtest PROPERTY FOLDER "Third-party libraries")
if (GTEST_ROOT)
include_directories("${GTEST_ROOT}")
endif()
if(HAVE_PTHREAD)
target_link_libraries(gtest pthread)
endif()
include_directories("${GTEST_INCLUDE_DIR}")
set(GTEST_FOUND 1)
endif()
include(CMakeParseArguments)
function(create_test testName)
set(oneValueArgs "")
set(multiValueArgs SOURCES LIBRARIES)
CMAKE_PARSE_ARGUMENTS(CT "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
add_executable("${testName}" EXCLUDE_FROM_ALL
${CT_SOURCES}
TestLog.cpp
TestLog.h
main.cpp
)
target_include_directories("${testName}" PRIVATE "${CMAKE_CURRENT_LIST_DIR}")
set_property(TARGET "${testName}" PROPERTY FOLDER "Testing")
target_link_libraries("${testName}" gtest gmock ${CT_LIBRARIES})
add_test(NAME "${testName}" COMMAND "${testName}")
endfunction()
if (GTEST_FOUND AND GMOCK_FOUND)
enable_testing()
create_test(StdMeshMath
SOURCES
"../src/lib/StdMeshMath.cpp"
"../src/lib/StdMeshMath.h"
"math/StdMeshVectorTest.cpp"
"math/StdMeshQuaternionTest.cpp"
)
AUX_SOURCE_DIRECTORY("${CMAKE_CURRENT_LIST_DIR}" TESTS_SOURCES)
add_executable(tests EXCLUDE_FROM_ALL ${TESTS_SOURCES} ${C4SCRIPT_SOURCES})
set_property(TARGET "tests" PROPERTY FOLDER "Testing")
target_link_libraries(tests gtest gmock libc4script libmisc)
if(UNIX AND NOT APPLE)
target_link_libraries(tests rt)
endif()
if(WIN32)
target_link_libraries(tests winmm)
endif()
create_test(aul_test
SOURCES
aul/AulTest.cpp
aul/AulTest.h
aul/AulMathTest.cpp
aul/AulPredefinedFunctionTest.cpp
aul/AulDeathTest.cpp
aul/AulDiagnosticsTest.cpp
aul/AulSyntaxTest.cpp
aul/AulSyntaxTestDetail.h
aul/ErrorHandler.h
../src/script/C4ScriptStandaloneStubs.cpp
../src/script/C4ScriptStandalone.cpp
LIBRARIES
libmisc
libc4script)
else()
set(_gtest_missing "")
if (NOT GTEST_INCLUDE_DIR)
set(_gtest_missing "${_gtest_missing} gtest/gtest.h")
endif()
if (NOT GTEST_SOURCE_ALL)
set(_gtest_missing "${_gtest_missing} gtest-all.cc")
endif()
if (NOT GMOCK_INCLUDE_DIR)
set(_gtest_missing "${_gtest_missing} gmock/gmock.h")
endif()
if (NOT GMOCK_SOURCE_ALL)
set(_gtest_missing "${_gtest_missing} gmock-all.cc")
endif()
message(STATUS "Could NOT find GTest/GMock (missing:${_gtest_missing})")
endif()