aboutsummaryrefslogtreecommitdiff
path: root/test/unit/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit/CMakeLists.txt')
-rw-r--r--test/unit/CMakeLists.txt72
1 files changed, 59 insertions, 13 deletions
diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt
index 899aec9b..35c2c29d 100644
--- a/test/unit/CMakeLists.txt
+++ b/test/unit/CMakeLists.txt
@@ -1,13 +1,59 @@
-#SET(CATCH2_INCLUDE ../catch.hpp)
-#include_directories(..)
-
-#SET(BASIC_TEST_SRC basic_test.cpp)
-#add_executable(basic_test ${BASIC_TEST_SRC} ${CATCH2_INCLUDE})
-#target_link_libraries(basic_test ${PROJ_LIBRARIES} ${TEST_MAIN_LIBRARIES})
-#set_target_properties(basic_test
-# PROPERTIES
-# LINKER_LANGUAGE CXX)
-#
-#add_test( NAME basic_test
-# WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/test
-# COMMAND basic_test )
+# CMake configuration for PROJ unit tests
+
+# FIXME: Deal with our old-school CMakeLists.txt behaving badly
+set(_save_c_flags "${CMAKE_C_FLAGS}")
+set(_save_cxx_flags "${CMAKE_CXX_FLAGS}")
+string(REGEX REPLACE "\\-W[a-z\\-]+" "" CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
+string(REGEX REPLACE "\\-W[a-z\\-]+" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
+
+#
+# Build Google Test
+#
+# Source https://github.com/google/googletest/blob/master/googletest/README.md
+# Download and unpack googletest at configure time
+configure_file(
+ ${CMAKE_SOURCE_DIR}/test/googletest/CMakeLists.txt.in
+ ${CMAKE_BINARY_DIR}/googletest-download/CMakeLists.txt)
+execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
+ RESULT_VARIABLE result
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download )
+if(result)
+ message(FATAL_ERROR "CMake step for googletest failed: ${result}")
+endif()
+execute_process(COMMAND ${CMAKE_COMMAND} --build .
+ RESULT_VARIABLE result
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download)
+if(result)
+ message(FATAL_ERROR "Build step for googletest failed: ${result}")
+endif()
+# Prevent overriding the parent project's compiler/linker
+# settings on Windows
+set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
+# Add googletest directly to our build. This defines
+# the gtest and gtest_main targets.
+add_subdirectory(${CMAKE_BINARY_DIR}/googletest-src
+ ${CMAKE_BINARY_DIR}/googletest-build
+ EXCLUDE_FROM_ALL)
+# The gtest/gtest_main targets carry header search path
+# dependencies automatically when using CMake 2.8.11 or
+# later. Otherwise we have to add them here ourselves.
+if (CMAKE_VERSION VERSION_LESS 2.8.11)
+ include_directories("${gtest_SOURCE_DIR}/include")
+endif()
+
+# FIXME: Deal with our old-school CMakeLists.txt behaving badly
+set(CMAKE_C_FLAGS "${_save_c_flags}")
+set(CMAKE_CXX_FLAGS "${_save_cxx_flags}")
+unset(_save_c_flags)
+unset(_save_cxx_flags)
+
+#
+# Build PROJ unit tests
+#
+add_executable(proj_test_unit
+ main.cpp
+ basic_test.cpp)
+target_link_libraries(proj_test_unit
+ gtest
+ ${PROJ_LIBRARIES})
+add_test(NAME proj_test_unit COMMAND proj_test_unit)