diff --git a/CMakeLists.txt b/CMakeLists.txt index 3b5a3361..1aa4b2d6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -121,76 +121,6 @@ set_target_properties(cppformat add_subdirectory(doc) if (FMT_TESTS) - include_directories(. gmock) - - # We compile Google Test ourselves instead of using pre-compiled libraries. - # See the Google Test FAQ "Why is it not recommended to install a - # pre-compiled copy of Google Test (for example, into /usr/local)?" - # at http://code.google.com/p/googletest/wiki/FAQ for more details. - - add_library(gmock STATIC - gmock/gmock-gtest-all.cc gmock/gmock/gmock.h - gmock/gtest/gtest.h gmock/gtest/gtest-spi.h) - find_package(Threads) - if (Threads_FOUND) - target_link_libraries(gmock ${CMAKE_THREAD_LIBS_INIT}) - else () - target_compile_definitions(gmock PUBLIC GTEST_HAS_PTHREAD=0) - endif () - - # Check if variadic templates are working and not affected by GCC bug 39653: - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=39653 - check_cxx_source_compiles(" - template - struct S { typedef typename S::type type; }; - int main() {}" FMT_VARIADIC_TEMPLATES) - - # Check if initializer lists are supported. - check_cxx_source_compiles(" - #include - int main() {}" FMT_INITIALIZER_LIST) - - if (NOT FMT_VARIADIC_TEMPLATES OR NOT FMT_INITIALIZER_LIST) - add_definitions(-DGTEST_LANG_CXX11=0) - endif () - - # This is disabled at the moment because format is compiled without -std=c++11 - # by default. - #check_cxx_source_compiles(" - # void f() noexcept {} - # int main(){ f(); }" FMT_BASIC_NOEXCEPT_SUPPORT) - #if (FMT_BASIC_NOEXCEPT_SUPPORT) - # add_definitions(-DFMT_USE_NOEXCEPT=1) - #endif () - - #check_cxx_source_compiles(" - # struct C{ - # C()=delete; - # C(const C&)=delete; - # C& operator=(const C&)=delete; - # }; - # int main(){}" FMT_DELETED_FUNCTIONS) - #if (FMT_DELETED_FUNCTIONS) - # add_definitions(-DFMT_USE_DELETED_FUNCTIONS=1) - #endif () - - #check_cxx_source_compiles(" - # static_assert(true, \"\"); - # int main(){}" FMT_STATIC_ASSERT) - #if (FMT_STATIC_ASSERT) - # add_definitions(-DFMT_USE_STATIC_ASSERT=1) - #endif () - - # Workaround a bug in implementation of variadic templates in MSVC11. - if (MSVC) - target_compile_definitions(gmock PUBLIC _VARIADIC_MAX=10) - endif () - - # GTest doesn't detect with clang. - if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - target_compile_definitions(gmock PUBLIC GTEST_USE_OWN_TR1_TUPLE=1) - endif () - enable_testing() add_subdirectory(test) endif () diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index b23d4cc4..e7348724 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,3 +1,48 @@ +set(FMT_GMOCK_DIR ../gmock) + +include_directories(.. ${FMT_GMOCK_DIR}) + +# We compile Google Test ourselves instead of using pre-compiled libraries. +# See the Google Test FAQ "Why is it not recommended to install a +# pre-compiled copy of Google Test (for example, into /usr/local)?" +# at http://code.google.com/p/googletest/wiki/FAQ for more details. + +add_library(gmock STATIC + ${FMT_GMOCK_DIR}/gmock-gtest-all.cc ${FMT_GMOCK_DIR}/gmock/gmock.h + ${FMT_GMOCK_DIR}/gtest/gtest.h ${FMT_GMOCK_DIR}/gtest/gtest-spi.h) +find_package(Threads) +if (Threads_FOUND) + target_link_libraries(gmock ${CMAKE_THREAD_LIBS_INIT}) +else () + target_compile_definitions(gmock PUBLIC GTEST_HAS_PTHREAD=0) +endif () + +# Check if variadic templates are working and not affected by GCC bug 39653: +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=39653 +check_cxx_source_compiles(" + template + struct S { typedef typename S::type type; }; + int main() {}" FMT_VARIADIC_TEMPLATES) + +# Check if initializer lists are supported. +check_cxx_source_compiles(" + #include + int main() {}" FMT_INITIALIZER_LIST) + +if (NOT FMT_VARIADIC_TEMPLATES OR NOT FMT_INITIALIZER_LIST) + target_compile_definitions(gmock PUBLIC GTEST_LANG_CXX11=0) +endif () + +# Workaround a bug in implementation of variadic templates in MSVC11. +if (MSVC) + target_compile_definitions(gmock PUBLIC _VARIADIC_MAX=10) +endif () + +# GTest doesn't detect with clang. +if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + target_compile_definitions(gmock PUBLIC GTEST_USE_OWN_TR1_TUPLE=1) +endif () + set(TEST_MAIN_SRC test-main.cc gtest-extra.cc gtest-extra.h util.cc) add_library(test-main STATIC ${TEST_MAIN_SRC}) target_link_libraries(test-main cppformat gmock)