2022-01-17 19:42:00 +00:00
|
|
|
#"${folder}/CMakeLists.txt" Third-party libraries may have substandard code.
|
2018-07-30 20:36:23 +00:00
|
|
|
|
2021-04-28 22:16:45 +00:00
|
|
|
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w")
|
|
|
|
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
|
2016-08-25 21:55:02 +00:00
|
|
|
|
2020-12-23 12:31:18 +00:00
|
|
|
if (WITH_COVERAGE)
|
2020-12-24 13:06:32 +00:00
|
|
|
set (WITHOUT_COVERAGE_LIST ${WITHOUT_COVERAGE})
|
|
|
|
separate_arguments(WITHOUT_COVERAGE_LIST)
|
|
|
|
# disable coverage for contib files and build with optimisations
|
2021-01-07 16:38:58 +00:00
|
|
|
if (COMPILER_CLANG)
|
|
|
|
add_compile_options(-O3 -DNDEBUG -finline-functions -finline-hint-functions ${WITHOUT_COVERAGE_LIST})
|
|
|
|
else()
|
|
|
|
add_compile_options(-O3 -DNDEBUG -finline-functions ${WITHOUT_COVERAGE_LIST})
|
|
|
|
endif()
|
2020-12-23 12:31:18 +00:00
|
|
|
endif()
|
|
|
|
|
2020-11-06 17:52:28 +00:00
|
|
|
if (SANITIZE STREQUAL "undefined")
|
|
|
|
# 3rd-party libraries usually not intended to work with UBSan.
|
|
|
|
add_compile_options(-fno-sanitize=undefined)
|
|
|
|
endif()
|
|
|
|
|
2019-02-04 14:07:01 +00:00
|
|
|
set_property(DIRECTORY PROPERTY EXCLUDE_FROM_ALL 1)
|
|
|
|
|
2022-01-17 21:34:07 +00:00
|
|
|
add_subdirectory (miniselect-cmake)
|
2022-01-17 21:37:14 +00:00
|
|
|
add_subdirectory (pdqsort-cmake)
|
2022-01-17 19:04:55 +00:00
|
|
|
add_subdirectory (sparsehash-c11-cmake)
|
2021-02-27 16:04:32 +00:00
|
|
|
add_subdirectory (abseil-cpp-cmake)
|
2021-09-06 15:59:46 +00:00
|
|
|
add_subdirectory (magic-enum-cmake)
|
2020-06-09 10:54:49 +00:00
|
|
|
add_subdirectory (boost-cmake)
|
2020-05-08 14:11:19 +00:00
|
|
|
add_subdirectory (cctz-cmake)
|
|
|
|
add_subdirectory (consistent-hashing)
|
2020-12-07 18:26:02 +00:00
|
|
|
add_subdirectory (dragonbox-cmake)
|
2020-06-09 10:54:49 +00:00
|
|
|
add_subdirectory (hyperscan-cmake)
|
2020-05-08 14:11:19 +00:00
|
|
|
add_subdirectory (jemalloc-cmake)
|
|
|
|
add_subdirectory (libcpuid-cmake)
|
2020-06-09 10:54:49 +00:00
|
|
|
add_subdirectory (libdivide)
|
|
|
|
add_subdirectory (libmetrohash)
|
|
|
|
add_subdirectory (lz4-cmake)
|
2020-05-08 14:11:19 +00:00
|
|
|
add_subdirectory (murmurhash)
|
|
|
|
add_subdirectory (replxx-cmake)
|
|
|
|
add_subdirectory (unixodbc-cmake)
|
2021-04-20 11:07:05 +00:00
|
|
|
add_subdirectory (nanodbc-cmake)
|
2022-01-17 20:57:21 +00:00
|
|
|
add_subdirectory (capnproto-cmake)
|
2022-01-17 21:23:14 +00:00
|
|
|
add_subdirectory (yaml-cpp-cmake)
|
2022-01-17 18:45:54 +00:00
|
|
|
add_subdirectory (re2-cmake)
|
2022-01-17 18:45:54 +00:00
|
|
|
add_subdirectory (xz-cmake)
|
2022-01-17 18:48:14 +00:00
|
|
|
add_subdirectory (brotli-cmake)
|
2022-01-17 18:45:54 +00:00
|
|
|
add_subdirectory (double-conversion-cmake)
|
2022-01-17 05:45:10 +00:00
|
|
|
add_subdirectory (boringssl-cmake)
|
2020-05-08 14:11:19 +00:00
|
|
|
add_subdirectory (poco-cmake)
|
2020-10-23 11:42:21 +00:00
|
|
|
add_subdirectory (croaring-cmake)
|
2022-01-16 09:20:20 +00:00
|
|
|
add_subdirectory (zstd-cmake)
|
2022-01-16 10:34:54 +00:00
|
|
|
add_subdirectory (zlib-ng-cmake)
|
2022-01-16 10:55:08 +00:00
|
|
|
add_subdirectory (bzip2-cmake)
|
2022-01-16 20:00:25 +00:00
|
|
|
add_subdirectory (snappy-cmake)
|
|
|
|
add_subdirectory (rocksdb-cmake)
|
2022-01-17 05:10:57 +00:00
|
|
|
add_subdirectory (thrift-cmake)
|
2022-01-16 19:37:27 +00:00
|
|
|
# parquet/arrow/orc
|
2022-01-17 18:45:54 +00:00
|
|
|
add_subdirectory (arrow-cmake) # requires: snappy, thrift, double-conversion
|
2022-01-16 19:34:00 +00:00
|
|
|
add_subdirectory (avro-cmake) # requires: snappy
|
2022-01-17 05:06:53 +00:00
|
|
|
add_subdirectory (hive-metastore-cmake) # requires: thrift/avro/arrow
|
2022-01-17 05:21:56 +00:00
|
|
|
add_subdirectory (librdkafka-cmake)
|
|
|
|
add_subdirectory (cppkafka-cmake)
|
2022-01-17 06:00:50 +00:00
|
|
|
add_subdirectory (openldap-cmake)
|
2022-01-17 07:36:58 +00:00
|
|
|
add_subdirectory (grpc-cmake)
|
2022-01-17 07:46:31 +00:00
|
|
|
add_subdirectory (protobuf-cmake)
|
2022-01-17 18:45:53 +00:00
|
|
|
add_subdirectory (libhdfs3-cmake) # requires: protobuf
|
2022-01-17 20:21:37 +00:00
|
|
|
add_subdirectory (msgpack-c-cmake)
|
2020-05-08 14:11:19 +00:00
|
|
|
|
2022-01-17 18:45:53 +00:00
|
|
|
if (ENABLE_FUZZING)
|
|
|
|
add_subdirectory (libprotobuf-mutator-cmake)
|
|
|
|
endif()
|
|
|
|
|
2022-01-17 19:09:12 +00:00
|
|
|
add_subdirectory (cityhash102)
|
2022-01-17 19:16:12 +00:00
|
|
|
add_subdirectory (libfarmhash)
|
2022-01-17 19:20:39 +00:00
|
|
|
add_subdirectory (icu-cmake)
|
2022-01-17 21:17:35 +00:00
|
|
|
add_subdirectory (h3-cmake)
|
2022-01-18 06:48:23 +00:00
|
|
|
add_subdirectory (mariadb-connector-c-cmake)
|
2018-08-02 00:49:31 +00:00
|
|
|
|
2022-01-17 20:26:05 +00:00
|
|
|
if (ENABLE_TESTS)
|
|
|
|
add_subdirectory (googletest-cmake)
|
2019-01-25 20:12:15 +00:00
|
|
|
endif()
|
2018-11-16 12:22:51 +00:00
|
|
|
|
2022-01-18 06:48:23 +00:00
|
|
|
add_subdirectory (llvm-cmake)
|
2022-01-18 06:48:23 +00:00
|
|
|
add_subdirectory (libgsasl-cmake)
|
|
|
|
add_subdirectory (libxml2-cmake)
|
|
|
|
add_subdirectory (aws-s3-cmake)
|
2022-01-17 20:32:13 +00:00
|
|
|
add_subdirectory (base64-cmake)
|
2022-01-17 19:29:50 +00:00
|
|
|
add_subdirectory (simdjson-cmake)
|
2022-01-17 21:13:13 +00:00
|
|
|
add_subdirectory (rapidjson-cmake)
|
2022-01-17 21:07:59 +00:00
|
|
|
add_subdirectory (fastops-cmake)
|
2022-01-17 19:49:52 +00:00
|
|
|
add_subdirectory (libuv-cmake)
|
2022-01-17 19:53:36 +00:00
|
|
|
add_subdirectory (amqpcpp-cmake) # requires: libuv
|
2022-01-17 19:58:31 +00:00
|
|
|
add_subdirectory (cassandra-cmake) # requires: libuv
|
2021-01-17 15:38:29 +00:00
|
|
|
add_subdirectory (curl-cmake)
|
2022-01-17 19:42:00 +00:00
|
|
|
add_subdirectory (azure-cmake)
|
2022-01-17 22:08:35 +00:00
|
|
|
add_subdirectory (sentry-native-cmake) # requires: curl
|
2020-05-22 10:58:29 +00:00
|
|
|
add_subdirectory (fmtlib-cmake)
|
2022-01-17 21:44:15 +00:00
|
|
|
add_subdirectory (krb5-cmake)
|
2022-01-17 21:54:24 +00:00
|
|
|
add_subdirectory (cyrus-sasl-cmake) # for krb5
|
2022-01-17 21:29:27 +00:00
|
|
|
add_subdirectory (libpqxx-cmake)
|
|
|
|
add_subdirectory (libpq-cmake)
|
2022-01-17 18:45:54 +00:00
|
|
|
add_subdirectory (nuraft-cmake)
|
2022-01-17 21:54:24 +00:00
|
|
|
add_subdirectory (fast_float-cmake)
|
2022-01-17 22:13:47 +00:00
|
|
|
add_subdirectory (datasketches-cpp-cmake)
|
2021-07-30 13:30:30 +00:00
|
|
|
|
2022-01-18 06:48:23 +00:00
|
|
|
option(ENABLE_NLP "Enable NLP functions support" ${ENABLE_LIBRARIES})
|
|
|
|
add_subdirectory(libstemmer-c-cmake) # ENABLE_NLP
|
|
|
|
add_subdirectory(wordnet-blast-cmake) # ENABLE_NLP
|
|
|
|
add_subdirectory(lemmagen-c-cmake) # ENABLE_NLP
|
2020-12-09 23:26:01 +00:00
|
|
|
|
2022-01-17 20:53:49 +00:00
|
|
|
add_subdirectory (sqlite-cmake)
|
2022-01-17 21:18:31 +00:00
|
|
|
add_subdirectory (s2geometry-cmake)
|
2021-10-03 16:26:48 +00:00
|
|
|
|
|
|
|
# Put all targets defined here and in subdirectories under "contrib/<immediate-subdir>" folders in GUI-based IDEs.
|
|
|
|
# Some of third-party projects may override CMAKE_FOLDER or FOLDER property of their targets, so they would not appear
|
|
|
|
# in "contrib/..." as originally planned, so we workaround this by fixing FOLDER properties of all targets manually,
|
|
|
|
# instead of controlling it via CMAKE_FOLDER.
|
|
|
|
|
|
|
|
function (ensure_target_rooted_in _target _folder)
|
2021-11-25 23:04:11 +00:00
|
|
|
# Skip aliases and INTERFACE library targets, since FOLDER property is not available/writable for them.
|
|
|
|
get_target_property (_target_aliased "${_target}" ALIASED_TARGET)
|
2021-10-03 17:07:44 +00:00
|
|
|
get_target_property (_target_type "${_target}" TYPE)
|
2021-11-25 23:04:11 +00:00
|
|
|
if (_target_aliased OR _target_type STREQUAL "INTERFACE_LIBRARY")
|
2021-10-03 17:07:44 +00:00
|
|
|
return ()
|
|
|
|
endif ()
|
|
|
|
|
2021-10-03 16:26:48 +00:00
|
|
|
# Read the original FOLDER property value, if any.
|
|
|
|
get_target_property (_folder_prop "${_target}" FOLDER)
|
|
|
|
|
|
|
|
# Normalize that value, so we avoid possible repetitions in folder names.
|
|
|
|
|
|
|
|
if (NOT _folder_prop)
|
|
|
|
set (_folder_prop "")
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
if (CMAKE_FOLDER AND _folder_prop MATCHES "^${CMAKE_FOLDER}/(.*)\$")
|
|
|
|
set (_folder_prop "${CMAKE_MATCH_1}")
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
if (_folder AND _folder_prop MATCHES "^${_folder}/(.*)\$")
|
|
|
|
set (_folder_prop "${CMAKE_MATCH_1}")
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
if (_folder)
|
|
|
|
set (_folder_prop "${_folder}/${_folder_prop}")
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
if (CMAKE_FOLDER)
|
|
|
|
set (_folder_prop "${CMAKE_FOLDER}/${_folder_prop}")
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
# Set the updated FOLDER property value back.
|
|
|
|
set_target_properties ("${_target}" PROPERTIES FOLDER "${_folder_prop}")
|
|
|
|
endfunction ()
|
|
|
|
|
|
|
|
function (ensure_own_targets_are_rooted_in _dir _folder)
|
|
|
|
get_directory_property (_targets DIRECTORY "${_dir}" BUILDSYSTEM_TARGETS)
|
|
|
|
foreach (_target IN LISTS _targets)
|
|
|
|
ensure_target_rooted_in ("${_target}" "${_folder}")
|
|
|
|
endforeach ()
|
|
|
|
endfunction ()
|
|
|
|
|
|
|
|
function (ensure_all_targets_are_rooted_in _dir _folder)
|
|
|
|
ensure_own_targets_are_rooted_in ("${_dir}" "${_folder}")
|
|
|
|
|
|
|
|
get_property (_sub_dirs DIRECTORY "${_dir}" PROPERTY SUBDIRECTORIES)
|
|
|
|
foreach (_sub_dir IN LISTS _sub_dirs)
|
|
|
|
ensure_all_targets_are_rooted_in ("${_sub_dir}" "${_folder}")
|
|
|
|
endforeach ()
|
|
|
|
endfunction ()
|
|
|
|
|
|
|
|
function (organize_ide_folders_2_level _dir)
|
|
|
|
get_filename_component (_dir_name "${_dir}" NAME)
|
|
|
|
ensure_own_targets_are_rooted_in ("${_dir}" "${_dir_name}")
|
|
|
|
|
|
|
|
# Note, that we respect only first two levels of nesting, we don't want to
|
|
|
|
# reorganize target folders further within each third-party dir.
|
|
|
|
|
|
|
|
get_property (_sub_dirs DIRECTORY "${_dir}" PROPERTY SUBDIRECTORIES)
|
|
|
|
foreach (_sub_dir IN LISTS _sub_dirs)
|
|
|
|
get_filename_component (_sub_dir_name "${_sub_dir}" NAME)
|
|
|
|
ensure_all_targets_are_rooted_in ("${_sub_dir}" "${_dir_name}/${_sub_dir_name}")
|
|
|
|
endforeach ()
|
|
|
|
endfunction ()
|
|
|
|
|
|
|
|
organize_ide_folders_2_level ("${CMAKE_CURRENT_LIST_DIR}")
|