set(UNITTEST_LIBS GMock::Main GMock::GMock GTest::GTest ${CMAKE_THREAD_LIBS_INIT}
${GSSAPI_LIBRARIES} ${OPENLDAP_LIBRARIES} ${CMAKE_DL_LIBS})
+if(WIN32)
+ # Needed by Boost.
+ list(APPEND UNITTEST_LIBS ws2_32)
+endif()
+
add_library(unit-main OBJECT unit.cc)
target_include_directories(unit-main PRIVATE
$<TARGET_PROPERTY:GTest::GTest,INTERFACE_INCLUDE_DIRECTORIES>)
-add_subdirectory(cls_hello)
-add_subdirectory(cls_fifo)
-add_subdirectory(cls_lock)
-add_subdirectory(cls_cas)
-add_subdirectory(cls_log)
-add_subdirectory(cls_numops)
-add_subdirectory(cls_sdk)
-if(WITH_RBD)
- add_subdirectory(cls_journal)
- add_subdirectory(cls_rbd)
-endif(WITH_RBD)
-add_subdirectory(cls_refcount)
-add_subdirectory(cls_rgw)
-add_subdirectory(cls_version)
-add_subdirectory(cls_lua)
-add_subdirectory(cls_rgw_gc)
-add_subdirectory(cls_queue)
-add_subdirectory(cls_2pc_queue)
-add_subdirectory(cls_cmpomap)
add_subdirectory(common)
add_subdirectory(compressor)
add_subdirectory(crush)
add_subdirectory(direct_messenger)
add_subdirectory(encoding)
-add_subdirectory(erasure-code)
-add_subdirectory(filestore)
-add_subdirectory(fs)
-add_subdirectory(journal)
-add_subdirectory(libcephfs)
add_subdirectory(librados)
-add_subdirectory(neorados)
add_subdirectory(librados_test_stub)
if(WITH_LIBRADOSSTRIPER)
add_subdirectory(libradosstriper)
endif()
-if(WITH_RBD)
+if(WITH_RBD AND NOT WIN32)
+ # librbd tests require libcls*, which in turn require libos and libosd, which
+ # haven't been ported to Windows yet.
add_subdirectory(librbd)
-endif(WITH_RBD)
+endif(WITH_RBD AND NOT WIN32)
if (WITH_CEPHFS)
add_subdirectory(mds)
endif()
-add_subdirectory(mon)
-add_subdirectory(mgr)
-add_subdirectory(msgr)
-add_subdirectory(ObjectMap)
-add_subdirectory(objectstore)
-add_subdirectory(os)
-add_subdirectory(osd)
-add_subdirectory(osdc)
add_subdirectory(pybind)
-add_subdirectory(immutable_object_cache)
+
+# Not available on Windows for the time being.
+if(NOT WIN32)
+ # libcls_* dependencies cascade to osd, kv and other libs that are not
+ # available on Windows yet.
+ add_subdirectory(cls_hello)
+ add_subdirectory(cls_fifo)
+ add_subdirectory(cls_cas)
+ add_subdirectory(cls_lock)
+ add_subdirectory(cls_log)
+ add_subdirectory(cls_numops)
+ add_subdirectory(cls_sdk)
+ if(WITH_RBD)
+ add_subdirectory(cls_journal)
+ add_subdirectory(cls_rbd)
+ endif(WITH_RBD)
+ add_subdirectory(cls_refcount)
+ add_subdirectory(cls_rgw)
+ add_subdirectory(cls_version)
+ add_subdirectory(cls_lua)
+ add_subdirectory(cls_rgw_gc)
+ add_subdirectory(cls_queue)
+ add_subdirectory(cls_2pc_queue)
+ add_subdirectory(cls_cmpomap)
+ add_subdirectory(journal)
+
+ add_subdirectory(erasure-code)
+ add_subdirectory(filestore)
+ add_subdirectory(fs)
+ add_subdirectory(libcephfs)
+ add_subdirectory(mon)
+ add_subdirectory(mgr)
+ add_subdirectory(msgr)
+ add_subdirectory(neorados)
+ add_subdirectory(objectstore)
+ add_subdirectory(ObjectMap)
+ add_subdirectory(os)
+ add_subdirectory(osd)
+ add_subdirectory(osdc)
+ add_subdirectory(immutable_object_cache)
+endif()
+
if(WITH_RADOSGW)
set(rgw_libs rgw_a)
if(WITH_RADOSGW_AMQP_ENDPOINT)
endif()
add_subdirectory(rgw)
endif(WITH_RADOSGW)
-if(WITH_RBD)
- add_subdirectory(rbd_mirror)
-endif(WITH_RBD)
+if(WITH_RBD AND NOT WIN32)
+add_subdirectory(rbd_mirror)
+endif(WITH_RBD AND NOT WIN32)
if(WITH_SEASTAR)
add_subdirectory(crimson)
endif()
endif(WITH_LIBCEPHFS)
add_executable(test_build_librados buildtest_skeleton.cc)
-target_link_libraries(test_build_librados librados pthread ${CRYPTO_LIBS} ${EXTRALIBS} osdc osd os ceph-common cls_lock_client ${BLKID_LIBRARIES})
+target_link_libraries(test_build_librados librados pthread ${CRYPTO_LIBS} ${EXTRALIBS} ceph-common ${BLKID_LIBRARIES})
+if(NOT WIN32)
+ target_link_libraries(test_build_librados os osdc osd cls_lock_client)
+endif()
# bench_log
set(bench_log_srcs
add_executable(ceph_bench_log
${bench_log_srcs}
)
-target_link_libraries(ceph_bench_log global pthread rt ${BLKID_LIBRARIES} ${CMAKE_DL_LIBS})
+target_link_libraries(ceph_bench_log global pthread ${BLKID_LIBRARIES} ${CMAKE_DL_LIBS})
+if(NOT WIN32)
+ target_link_libraries(ceph_bench_log rt)
+endif()
# ceph_test_mutate
add_executable(ceph_test_mutate
target_link_libraries(ceph_test_mutate global librados ${BLKID_LIBRARIES}
${CMAKE_DL_LIBS})
+if(NOT WIN32)
# test_trans
add_executable(test_trans
test_trans.cc
)
target_link_libraries(test_trans os global ${BLKID_LIBRARIES} ${CMAKE_DL_LIBS})
+endif()
## Benchmarks
install(TARGETS ceph_kvstorebench DESTINATION bin)
endif(WITH_KVS)
-# ceph_objectstore_bench
-add_executable(ceph_objectstore_bench objectstore_bench.cc)
-target_link_libraries(ceph_objectstore_bench os global ${BLKID_LIBRARIES})
+if(NOT WIN32)
+ # ceph_objectstore_bench
+ add_executable(ceph_objectstore_bench objectstore_bench.cc)
+ target_link_libraries(ceph_objectstore_bench os global ${BLKID_LIBRARIES})
+endif()
if(${WITH_RADOSGW})
# test_cors
)
target_link_libraries(ceph_multi_stress_watch librados global radostest-cxx)
+install(TARGETS
+ ceph_bench_log
+ ceph_multi_stress_watch
+ ceph_omapbench
+ DESTINATION bin)
+
+if(NOT WIN32)
#ceph_perf_local
add_executable(ceph_perf_local
perf_local.cc
target_link_libraries(ceph_perf_local global ${UNITTEST_LIBS})
install(TARGETS
- ceph_bench_log
- ceph_multi_stress_watch
ceph_objectstore_bench
- ceph_omapbench
ceph_perf_local
DESTINATION bin)
$<TARGET_OBJECTS:unit-main>
)
target_link_libraries(ceph_test_snap_mapper osd global ${BLKID_LIBRARIES} ${UNITTEST_LIBS})
+endif(NOT WIN32)
add_executable(ceph_test_stress_watch
test_stress_watch.cc
#following dependencies are run inside make check unit tests
add_dependencies(tests
- ceph-mon
ceph-authtool
- get_command_descriptions
- crushtool
ceph-conf
rados
- monmaptool
- ceph-osd
+ ceph_snappy)
+if(NOT WIN32)
+ # Not currently supported on Windows
+ add_dependencies(tests
+ ceph-mon
+ get_command_descriptions
ceph-dencoder
ceph-objectstore-tool
ceph-kvstore-tool
ceph-monstore-tool
+ ceph-osd
osdmaptool
ceph_example
ceph_snappy
cls_lock
ceph_test_objectstore
ceph_erasure_code_non_regression
- cython_modules)
+ cython_modules
+ crushtool
+ monmaptool)
+
if (WITH_CEPHFS)
add_dependencies(tests ceph-mds)
endif()
add_ceph_test(rbd-ggate.sh ${CMAKE_CURRENT_SOURCE_DIR}/rbd-ggate.sh)
endif(FREEBSD)
endif(WITH_RBD)
+
+endif(NOT WIN32)
+
add_ceph_test(run-cli-tests ${CMAKE_CURRENT_SOURCE_DIR}/run-cli-tests)
# flaky, see https://tracker.ceph.com/issues/44243
add_ceph_unittest(unittest_str_list)
target_link_libraries(unittest_str_list global)
+# This test's usage of templates generates more sections than a PE file can
+# contain.
+if(NOT MINGW)
# unittest_log
add_executable(unittest_log
${CMAKE_SOURCE_DIR}/src/log/test.cc
)
add_ceph_unittest(unittest_log)
target_link_libraries(unittest_log global)
+endif(NOT MINGW)
# unittest_base64
add_executable(unittest_base64
add_ceph_unittest(unittest_run_cmd)
target_link_libraries(unittest_run_cmd global)
+if(NOT WIN32)
# signals
add_executable(unittest_signals
signals.cc
)
add_ceph_unittest(unittest_signals)
target_link_libraries(unittest_signals global)
+endif()
# unittest_simple_spin
add_executable(unittest_simple_spin
librbd
librados
global
+ ceph-common
rbd_replay
rbd_replay_ios
${BLKID_LIBRARIES}
add_ceph_unittest(unittest_texttable)
target_link_libraries(unittest_texttable ceph-common)
+if(NOT WIN32)
# unittest_on_exit
add_executable(unittest_on_exit
on_exit.cc)
add_ceph_unittest(unittest_on_exit)
target_link_libraries(unittest_on_exit ceph-common)
+endif()
# unittest_subprocess
add_executable(unittest_subprocess
+if(NOT WIN32)
# get_command_descriptions
+# libmon not currently available on Windows.
add_executable(get_command_descriptions
get_command_descriptions.cc
$<TARGET_OBJECTS:common_texttable_obj>
${BLKID_LIBRARIES}
${CMAKE_DL_LIBS}
)
+endif(NOT WIN32)
# Though FreeBSD has blkdev support, the unittests' mocks only work in Linux
if(HAVE_BLKID AND LINUX)
target_link_libraries(unittest_prioritized_queue ceph-common)
add_ceph_unittest(unittest_prioritized_queue)
+if(NOT WIN32)
# unittest_mclock_priority_queue
add_executable(unittest_mclock_priority_queue
test_mclock_priority_queue.cc
target_link_libraries(unittest_mclock_priority_queue
ceph-common
dmclock::dmclock)
+endif(NOT WIN32)
# unittest_str_map
add_executable(unittest_str_map
target_link_libraries(unittest_global_doublefree cephfs librados)
endif(WITH_CEPHFS)
+if(NOT WIN32)
add_executable(unittest_dns_resolve
dns_resolve.cc
$<TARGET_OBJECTS:unit-main>)
target_link_libraries(unittest_dns_resolve global)
add_ceph_unittest(unittest_dns_resolve)
+endif()
add_executable(unittest_back_trace
test_back_trace.cc)
set_source_files_properties(test_back_trace.cc PROPERTIES
COMPILE_FLAGS -fno-inline)
-target_link_libraries(unittest_back_trace ceph-common)
add_ceph_unittest(unittest_back_trace)
+target_link_libraries(unittest_back_trace ceph-common)
add_executable(unittest_hostname
test_hostname.cc)
-target_link_libraries(unittest_hostname ceph-common)
add_ceph_unittest(unittest_hostname)
+target_link_libraries(unittest_hostname ceph-common)
add_executable(unittest_iso_8601
test_iso_8601.cc)
-target_link_libraries(unittest_iso_8601 ceph-common)
add_ceph_unittest(unittest_iso_8601)
+target_link_libraries(unittest_iso_8601 ceph-common)
add_executable(unittest_convenience test_convenience.cc)
add_ceph_unittest(unittest_convenience)
add_executable(unittest_async_completion test_async_completion.cc)
add_ceph_unittest(unittest_async_completion)
-target_link_libraries(unittest_async_completion Boost::system)
+target_link_libraries(unittest_async_completion ceph-common Boost::system)
add_executable(unittest_async_shared_mutex test_async_shared_mutex.cc)
add_ceph_unittest(unittest_async_shared_mutex)
echo "Dev build enabled."
echo "Git versioning will be disabled."
ENABLE_GIT_VERSION="OFF"
+ WITH_CEPH_DEBUG_MUTEX="ON"
else
ENABLE_GIT_VERSION="ON"
+ WITH_CEPH_DEBUG_MUTEX="OFF"
fi
# As opposed to Linux, Windows shared libraries can't have unresolved
-D WITH_GSSAPI=OFF -D WITH_FUSE=OFF -D WITH_XFS=OFF \
-D WITH_BLUESTORE=OFF -D WITH_LEVELDB=OFF \
-D WITH_LTTNG=OFF -D WITH_BABELTRACE=OFF \
- -D WITH_SYSTEM_BOOST=ON -D WITH_MGR=OFF \
+ -D WITH_SYSTEM_BOOST=ON -D WITH_MGR=OFF -D WITH_KVS=OFF \
-D WITH_LIBCEPHFS=OFF -D WITH_KRBD=OFF -D WITH_RADOSGW=OFF \
- -D ENABLE_SHARED=OFF -D WITH_RBD=ON -D BUILD_GMOCK=OFF \
+ -D ENABLE_SHARED=OFF -D WITH_RBD=ON -D BUILD_GMOCK=ON \
-D WITH_CEPHFS=OFF -D WITH_MANPAGE=OFF \
- -D WITH_MGR_DASHBOARD_FRONTEND=OFF -D WITH_SYSTEMD=OFF -D WITH_TESTS=OFF \
+ -D WITH_MGR_DASHBOARD_FRONTEND=OFF -D WITH_SYSTEMD=OFF -D WITH_TESTS=ON \
-D LZ4_INCLUDE_DIR=$lz4Include -D LZ4_LIBRARY=$lz4Lib \
-D Backtrace_INCLUDE_DIR="$backtraceDir/include" \
-D Backtrace_LIBRARY="$backtraceDir/lib/libbacktrace.a" \
-D ALLOCATOR="$ALLOCATOR" -D CMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE \
-D WNBD_INCLUDE_DIRS="$wnbdSrcDir/include" \
-D WNBD_LIBRARIES="$wnbdLibDir/libwnbd.a" \
+ -D WITH_CEPH_DEBUG_MUTEX=$WITH_CEPH_DEBUG_MUTEX \
-G "$generatorUsed" \
$CEPH_DIR 2>&1 | tee "${BUILD_DIR}/cmake.log"
fi # [[ -z $SKIP_CMAKE ]]
make_targets["src/tools/rbd"]="all"
make_targets["src/tools/rbd_wnbd"]="all"
make_targets["src/compressor"]="all"
+ make_targets["src/test"]="all"
for target_subdir in "${!make_targets[@]}"; do
echo "Building $target_subdir: ${make_targets[$target_subdir]}" | tee -a "${BUILD_DIR}/build.log"