tests: Convert ExpressionMatchTests into a GTest-based test case
[quassel.git] / CMakeLists.txt
index e4f5d61..c0e89ba 100644 (file)
@@ -338,7 +338,30 @@ if (NOT WIN32)
     )
 endif()
 
+# Setup unit testing
+#####################################################################
+
+option(BUILD_TESTING "Enable unit tests" OFF)
+add_feature_info(BUILD_TESTING BUILD_TESTING "Build unit tests")
+
+if (BUILD_TESTING)
+    find_package(GTest QUIET)
+    set_package_properties(GTest PROPERTIES TYPE REQUIRED
+        DESCRIPTION "Google's unit testing framework"
+        PURPOSE "Required for building unit tests"
+    )
+
+    find_package(Qt5Test QUIET)
+    set_package_properties(Qt5Test PROPERTIES TYPE REQUIRED
+        DESCRIPTION "unit testing library for the Qt5 framework"
+        PURPOSE "Required for building unit tests"
+    )
+    enable_testing()
+endif()
+
 # Check for SSL support in Qt
+#####################################################################
+
 cmake_push_check_state(RESET)
 set(CMAKE_REQUIRED_LIBRARIES Qt5::Core)
 check_cxx_source_compiles("
@@ -388,6 +411,31 @@ endif()
 # This needs to come after setting up KDE integration, so we can use KDE-specific paths
 include(QuasselInstallDirs)
 
+# RPATH and output settings
+#####################################################################
+
+# Build artifacts in a well-known location; especially important for Windows DLLs
+# (which go into RUNTIME_OUTPUT_DIRECTORY and can thus be found by executables)
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
+set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
+
+# These RPATH settings allow for running directly from the build dir
+set(CMAKE_SKIP_BUILD_RPATH            FALSE)
+set(CMAKE_BUILD_WITH_INSTALL_RPATH    FALSE)
+set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE )
+
+# Set install RPATH only if libdir isn't a system directory
+if (IS_ABSOLUTE "${CMAKE_INSTALL_LIBDIR}")
+    set(libdir "${CMAKE_INSTALL_LIBDIR}")
+else()
+    set(libdir "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
+endif()
+list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${libdir}" is_systemdir)
+if ("${is_systemdir}" STREQUAL "-1")
+   set(CMAKE_INSTALL_RPATH "${libdir}")
+endif()
+
 # Various config-dependent checks and settings
 #####################################################################
 
@@ -468,7 +516,6 @@ add_subdirectory(icons)
 add_subdirectory(pics)
 add_subdirectory(po)
 
-
 # Set up and display feature summary
 #####################################################################
 
@@ -483,3 +530,8 @@ feature_summary(WHAT ALL
 #####################################################################
 
 add_subdirectory(src)
+
+# Build tests if so desired
+if (BUILD_TESTING)
+    add_subdirectory(tests)
+endif()