X-Git-Url: http://plrg.eecs.uci.edu/git/?p=folly.git;a=blobdiff_plain;f=CMakeLists.txt;h=f1446753b312592d457bad19c4a03db7785f1356;hp=a37216121027b147c5e4c6752f61c9e26aa6cf10;hb=3d9eb7ffc32c2f5f878bb4aee61d30cb8c62a146;hpb=24db104019844e325def3f12c9f06ee48b8cfce6 diff --git a/CMakeLists.txt b/CMakeLists.txt index a3721612..f1446753 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,20 +16,30 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ON) project(${PACKAGE_NAME} CXX) -if (MSVC_VERSION GREATER_EQUAL 1910 AND MSVC_VERSION LESS 1920) - set(MSVC_IS_2017 ON) -elseif (MSVC_VERSION EQUAL 1900) - set(MSVC_IS_2017 OFF) -else() - message(FATAL_ERROR "This build script only supports building Folly on 64-bit Windows with Visual Studio 2015 or Visual Studio 2017. MSVC version '${MSVC_VERSION}' is not supported.") -endif() - -# Check architecture OS +# Check target architecture if (NOT CMAKE_SIZEOF_VOID_P EQUAL 8) - message(FATAL_ERROR "Folly requires a 64bit OS") + message(FATAL_ERROR "Folly requires a 64bit target architecture.") endif() -if(NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "Windows") - message(FATAL_ERROR "You should only be using CMake to build Folly if you are on Windows!") + +if("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows") + if (MSVC_VERSION GREATER_EQUAL 1910 AND MSVC_VERSION LESS 1920) + set(MSVC_IS_2017 ON) + elseif (MSVC_VERSION EQUAL 1900) + set(MSVC_IS_2017 OFF) + else() + message( + FATAL_ERROR + "This build script only supports building Folly on 64-bit Windows with " + "Visual Studio 2015 or Visual Studio 2017. " + "MSVC version '${MSVC_VERSION}' is not supported." + ) + endif() +else() + message( + FATAL_ERROR + "The CMake build should only be used on Windows. " + "For every other platform, use autoconf." + ) endif() set(FOLLY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/folly") @@ -38,23 +48,32 @@ set(FOLLY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/folly") find_package(PythonInterp REQUIRED) add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/folly/build/EscapeTables.cpp - COMMAND ${PYTHON_EXECUTABLE} "${FOLLY_DIR}/build/generate_escape_tables.py" + COMMAND + ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/folly/build + COMMAND + ${PYTHON_EXECUTABLE} "${FOLLY_DIR}/build/generate_escape_tables.py" + --install_dir ${CMAKE_CURRENT_BINARY_DIR}/folly/build DEPENDS ${FOLLY_DIR}/build/generate_escape_tables.py - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/folly/build/ COMMENT "Generating the escape tables..." VERBATIM ) add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/folly/build/FormatTables.cpp - COMMAND ${PYTHON_EXECUTABLE} "${FOLLY_DIR}/build/generate_format_tables.py" + COMMAND + ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/folly/build + COMMAND + ${PYTHON_EXECUTABLE} "${FOLLY_DIR}/build/generate_format_tables.py" + --install_dir ${CMAKE_CURRENT_BINARY_DIR}/folly/build DEPENDS ${FOLLY_DIR}/build/generate_format_tables.py - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/folly/build/ COMMENT "Generating the format tables..." VERBATIM ) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/folly/build/GroupVarintTables.cpp" - COMMAND ${PYTHON_EXECUTABLE} "${FOLLY_DIR}/build/generate_varint_tables.py" + COMMAND + ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/folly/build + COMMAND + ${PYTHON_EXECUTABLE} "${FOLLY_DIR}/build/generate_varint_tables.py" + --install_dir ${CMAKE_CURRENT_BINARY_DIR}/folly/build DEPENDS ${FOLLY_DIR}/build/generate_varint_tables.py - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/folly/build/ COMMENT "Generating the group varint tables..." VERBATIM ) @@ -149,9 +168,36 @@ set(FOLLY_SHINY_DEPENDENCIES set(FOLLY_LINK_LIBRARIES ${DOUBLE_CONVERSION_LIBRARY} - ${LIBEVENT_LIB} - ${LIBGFLAGS_LIBRARY} - ${LIBGLOG_LIBRARY} +) + +set(FOLLY_INCLUDE_DIRECTORIES + ${DOUBLE_CONVERSION_INCLUDE_DIR} +) + +if(TARGET gflags) + set(FOLLY_SHINY_DEPENDENCIES ${FOLLY_SHINY_DEPENDENCIES} gflags) +else() + set(FOLLY_LINK_LIBRARIES ${FOLLY_LINK_LIBRARIES} ${LIBGFLAGS_LIBRARY}) + set(FOLLY_INCLUDE_DIRECTORIES ${FOLLY_INCLUDE_DIRECTORIES} ${LIBGFLAGS_INCLUDE_DIR}) +endif() + +if(TARGET glog::glog) + set(FOLLY_SHINY_DEPENDENCIES ${FOLLY_SHINY_DEPENDENCIES} glog::glog) +else() + set(FOLLY_LINK_LIBRARIES ${FOLLY_LINK_LIBRARIES} ${LIBGLOG_LIBRARY}) + set(FOLLY_INCLUDE_DIRECTORIES ${FOLLY_INCLUDE_DIRECTORIES} ${LIBGLOG_INCLUDE_DIR}) +endif() + +if(TARGET event) + set(FOLLY_SHINY_DEPENDENCIES ${FOLLY_SHINY_DEPENDENCIES} event) +else() + set(FOLLY_LINK_LIBRARIES ${FOLLY_LINK_LIBRARIES} ${LIBEVENT_LIB}) + set(FOLLY_INCLUDE_DIRECTORIES ${FOLLY_INCLUDE_DIRECTORIES} ${LIBEVENT_INCLUDE_DIR}) +endif() + + +set(FOLLY_LINK_LIBRARIES + ${FOLLY_LINK_LIBRARIES} Iphlpapi.lib Ws2_32.lib @@ -160,15 +206,13 @@ set(FOLLY_LINK_LIBRARIES target_include_directories(folly_base PUBLIC - ${DOUBLE_CONVERSION_INCLUDE_DIR} - ${LIBGFLAGS_INCLUDE_DIR} - ${LIBGLOG_INCLUDE_DIR} - ${LIBEVENT_INCLUDE_DIR} + ${FOLLY_INCLUDE_DIRECTORIES} $ ) foreach (LIB ${FOLLY_SHINY_DEPENDENCIES}) target_include_directories(folly_base PUBLIC $) + target_compile_definitions(folly_base PUBLIC $) endforeach() if (FOLLY_HAVE_PTHREAD) @@ -191,9 +235,12 @@ source_group("" FILES ${FOLLY_DIR}/build/GenerateFingerprintTables.cpp) # Compile the fingerprint tables. add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/folly/build/FingerprintTables.cpp - COMMAND GenerateFingerprintTables + COMMAND + ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/folly/build + COMMAND + GenerateFingerprintTables + --install_dir ${CMAKE_CURRENT_BINARY_DIR}/folly/build DEPENDS GenerateFingerprintTables - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/folly/build/ COMMENT "Generating the fingerprint tables..." ) add_library(folly_fingerprint STATIC @@ -264,6 +311,7 @@ if (BUILD_TESTS) ${FOLLY_DIR}/test/SingletonTestStructs.cpp ${FOLLY_DIR}/test/SocketAddressTestHelper.cpp ${FOLLY_DIR}/test/SocketAddressTestHelper.h + ${FOLLY_DIR}/experimental/logging/test/TestLogHandler.cpp ${FOLLY_DIR}/experimental/logging/test/TestLogHandler.h ${FOLLY_DIR}/futures/test/TestExecutor.cpp ${FOLLY_DIR}/futures/test/TestExecutor.h @@ -302,11 +350,16 @@ if (BUILD_TESTS) apply_folly_compile_options_to_target(folly_test_support) folly_define_tests( + DIRECTORY chrono/test/ + TEST chrono_conv_test SOURCES ConvTest.cpp + DIRECTORY compression/test/ TEST compression_test SOURCES CompressionTest.cpp DIRECTORY container/test/ + TEST access_test SOURCES AccessTest.cpp TEST array_test SOURCES ArrayTest.cpp + TEST bit_iterator_test SOURCES BitIteratorTest.cpp TEST enumerate_test SOURCES EnumerateTest.cpp TEST evicting_cache_map_test SOURCES EvictingCacheMapTest.cpp TEST foreach_test SOURCES ForeachTest.cpp @@ -356,6 +409,9 @@ if (BUILD_TESTS) DIRECTORY experimental/logging/test/ TEST async_file_writer_test SOURCES AsyncFileWriterTest.cpp + TEST config_parser_test SOURCES ConfigParserTest.cpp + TEST config_update_test SOURCES ConfigUpdateTest.cpp + TEST file_handler_factory_test SOURCES FileHandlerFactoryTest.cpp TEST glog_formatter_test SOURCES GlogFormatterTest.cpp TEST immediate_file_writer_test SOURCES ImmediateFileWriterTest.cpp TEST log_category_test SOURCES LogCategoryTest.cpp @@ -484,6 +540,10 @@ if (BUILD_TESTS) DIRECTORY io/async/ssl/test/ TEST ssl_errors_test SOURCES SSLErrorsTest.cpp + DIRECTORY lang/test/ + TEST bits_test SOURCES BitsTest.cpp + TEST cold_class_test SOURCES ColdClassTest.cpp + DIRECTORY memory/test/ TEST arena_test SOURCES ArenaTest.cpp TEST thread_cached_arena_test SOURCES ThreadCachedArenaTest.cpp @@ -504,7 +564,10 @@ if (BUILD_TESTS) TEST timeseries_test SOURCES TimeseriesTest.cpp DIRECTORY synchronization/test/ + TEST baton_test SOURCES BatonTest.cpp TEST call_once_test SOURCES CallOnceTest.cpp + TEST lifo_sem_test SOURCES LifoSemTests.cpp + TEST rw_spin_lock_test SOURCES RWSpinLockTest.cpp DIRECTORY system/test/ TEST memory_mapping_test SOURCES MemoryMappingTest.cpp @@ -524,9 +587,6 @@ if (BUILD_TESTS) TEST atomic_linked_list_test SOURCES AtomicLinkedListTest.cpp TEST atomic_struct_test SOURCES AtomicStructTest.cpp TEST atomic_unordered_map_test SOURCES AtomicUnorderedMapTest.cpp - TEST baton_test SOURCES BatonTest.cpp - TEST bit_iterator_test SOURCES BitIteratorTest.cpp - TEST bits_test SOURCES BitsTest.cpp TEST cacheline_padded_test SOURCES CachelinePaddedTest.cpp TEST clock_gettime_wrappers_test SOURCES ClockGettimeWrappersTest.cpp TEST concurrent_skip_list_test SOURCES ConcurrentSkipListTest.cpp @@ -569,7 +629,6 @@ if (BUILD_TESTS) SOURCES JsonOtherTest.cpp TEST lazy_test SOURCES LazyTest.cpp - TEST lifosem_test SOURCES LifoSemTests.cpp TEST lock_traits_test SOURCES LockTraitsTest.cpp TEST locks_test SOURCES SmallLocksTest.cpp SpinLockTest.cpp TEST logging_test SOURCES LoggingTest.cpp @@ -595,7 +654,6 @@ if (BUILD_TESTS) TEST portability_test SOURCES PortabilityTest.cpp TEST producer_consumer_queue_test SLOW SOURCES ProducerConsumerQueueTest.cpp - TEST r_w_spin_lock_test SOURCES RWSpinLockTest.cpp TEST random_test SOURCES RandomTest.cpp TEST range_test SOURCES RangeTest.cpp TEST safe_assert_test SOURCES SafeAssertTest.cpp