diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 56c26f74d..f74677aa3 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -120,12 +120,6 @@ jobs:
${{ matrix.platform.options }}
- run: cmake --build ./build --config Release --target clang_format_test
- run: cmake --build ./build --config Release --parallel 4
- - run: >
- cmake --install ./build --prefix ./build/dist --config Release --verbose
- --component sourcemeta_noa
- - run: >
- cmake --install ./build --prefix ./build/dist --config Release --verbose
- --component sourcemeta_noa_dev
- run: >
cmake --install ./build --prefix ./build/dist --config Release --verbose
--component sourcemeta_core
diff --git a/CMakeLists.txt b/CMakeLists.txt
index db6fc8c7c..97c154757 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -18,7 +18,7 @@ option(SOURCEMETA_CORE_INSTALL "Install the Sourcemeta Core library" ON)
option(SOURCEMETA_CORE_ADDRESS_SANITIZER "Build Sourcemeta Core with an address sanitizer" OFF)
option(SOURCEMETA_CORE_UNDEFINED_SANITIZER "Build Sourcemeta Core with an undefined behavior sanitizer" OFF)
-include(./vendor/noa/cmake/noa.cmake)
+include(Sourcemeta)
# TODO: Turn this into a re-usable utility CMake function
if(SOURCEMETA_CORE_INSTALL)
@@ -74,22 +74,22 @@ if(SOURCEMETA_CORE_EXTENSION_ALTERSCHEMA)
endif()
if(SOURCEMETA_CORE_ADDRESS_SANITIZER)
- noa_sanitizer(TYPE address)
+ sourcemeta_sanitizer(TYPE address)
elseif(SOURCEMETA_CORE_UNDEFINED_SANITIZER)
- noa_sanitizer(TYPE undefined)
+ sourcemeta_sanitizer(TYPE undefined)
endif()
if(SOURCEMETA_CORE_DOCS)
- noa_target_doxygen(CONFIG "${PROJECT_SOURCE_DIR}/doxygen/Doxyfile.in"
+ sourcemeta_target_doxygen(CONFIG "${PROJECT_SOURCE_DIR}/doxygen/Doxyfile.in"
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/website")
endif()
if(PROJECT_IS_TOP_LEVEL)
- noa_target_clang_format(SOURCES
+ sourcemeta_target_clang_format(SOURCES
src/*.h src/*.cc
benchmark/*.h benchmark/*.cc
test/*.h test/*.cc)
- noa_target_clang_tidy(SOURCES
+ sourcemeta_target_clang_tidy(SOURCES
src/*.h src/*.cc)
endif()
diff --git a/DEPENDENCIES b/DEPENDENCIES
index 9904503a1..88801530a 100644
--- a/DEPENDENCIES
+++ b/DEPENDENCIES
@@ -1,5 +1,4 @@
vendorpull https://github.com/sourcemeta/vendorpull 70342aaf458e6cb80baeb5b718901075fc42ede6
-noa https://github.com/sourcemeta/noa b2c8e362a5c4c138eb708603a351df2b2d79a1c9
jsontestsuite https://github.com/nst/JSONTestSuite d64aefb55228d9584d3e5b2433f720ea8fd00c82
jsonschema-2020-12 https://github.com/json-schema-org/json-schema-spec 769daad75a9553562333a8937a187741cb708c72
jsonschema-2019-09 https://github.com/json-schema-org/json-schema-spec 41014ea723120ce70b314d72f863c6929d9f3cfd
diff --git a/Makefile b/Makefile
index 884abc82f..a6f177797 100644
--- a/Makefile
+++ b/Makefile
@@ -20,10 +20,6 @@ configure: .always
compile: .always
$(CMAKE) --build ./build --config $(PRESET) --target clang_format
$(CMAKE) --build ./build --config $(PRESET) --parallel 4
- $(CMAKE) --install ./build --prefix ./build/dist --config $(PRESET) --verbose \
- --component sourcemeta_noa
- $(CMAKE) --install ./build --prefix ./build/dist --config $(PRESET) --verbose \
- --component sourcemeta_noa_dev
$(CMAKE) --install ./build --prefix ./build/dist --config $(PRESET) --verbose \
--component sourcemeta_core
$(CMAKE) --install ./build --prefix ./build/dist --config $(PRESET) --verbose \
diff --git a/assets/logo.png b/assets/logo.png
deleted file mode 100644
index b72daf0b4..000000000
Binary files a/assets/logo.png and /dev/null differ
diff --git a/assets/logo.svg b/assets/logo.svg
deleted file mode 100644
index cefc46eb7..000000000
--- a/assets/logo.svg
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
\ No newline at end of file
diff --git a/benchmark/CMakeLists.txt b/benchmark/CMakeLists.txt
index 7236e86b9..b5b06f368 100644
--- a/benchmark/CMakeLists.txt
+++ b/benchmark/CMakeLists.txt
@@ -13,7 +13,7 @@ if(SOURCEMETA_CORE_JSONPOINTER)
endif()
if(BENCHMARK_SOURCES)
- noa_googlebenchmark(NAMESPACE sourcemeta PROJECT core
+ sourcemeta_googlebenchmark(NAMESPACE sourcemeta PROJECT core
FOLDER "Core" SOURCES ${BENCHMARK_SOURCES})
target_compile_definitions(sourcemeta_core_benchmark
diff --git a/cmake/FindBoostRegex.cmake b/cmake/FindBoostRegex.cmake
index ebdc5e8a0..727061847 100644
--- a/cmake/FindBoostRegex.cmake
+++ b/cmake/FindBoostRegex.cmake
@@ -124,7 +124,7 @@ if(NOT BoostRegex_FOUND)
target_compile_definitions(boost_regex INTERFACE BOOST_REGEX_STANDALONE)
- if(SOURCEMETA_CORE_UNDEFINED_SANITIZER AND NOA_COMPILER_LLVM)
+ if(SOURCEMETA_CORE_UNDEFINED_SANITIZER AND SOURCEMETA_COMPILER_LLVM)
# Boost Regex doesn't pass the LLVM Undefined Behavior sanitizer otherwise
# vendor/boost-regex/include/boost/regex/v5/cpp_regex_traits.hpp:1022:60:
# runtime error: implicit conversion from type 'unsigned char' of value 128
diff --git a/cmake/Findyaml.cmake b/cmake/Findyaml.cmake
index c4cb2cf83..a621dfa68 100644
--- a/cmake/Findyaml.cmake
+++ b/cmake/Findyaml.cmake
@@ -16,7 +16,7 @@ if(NOT Yaml_FOUND)
add_library(yaml ${YAML_SOURCES})
- if(NOA_COMPILER_LLVM OR NOA_COMPILER_GCC)
+ if(SOURCEMETA_COMPILER_LLVM OR SOURCEMETA_COMPILER_GCC)
target_compile_options(yaml PRIVATE -Wno-implicit-function-declaration)
target_compile_options(yaml PRIVATE -Wno-int-to-pointer-cast)
endif()
diff --git a/cmake/Sourcemeta.cmake b/cmake/Sourcemeta.cmake
new file mode 100644
index 000000000..dbe03477a
--- /dev/null
+++ b/cmake/Sourcemeta.cmake
@@ -0,0 +1,16 @@
+set(SOURCEMETA_UTILITIES_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/common")
+include("${SOURCEMETA_UTILITIES_DIRECTORY}/shim.cmake")
+include("${SOURCEMETA_UTILITIES_DIRECTORY}/variables.cmake")
+include("${SOURCEMETA_UTILITIES_DIRECTORY}/defaults.cmake")
+include("${SOURCEMETA_UTILITIES_DIRECTORY}/compiler/sanitizer.cmake")
+include("${SOURCEMETA_UTILITIES_DIRECTORY}/compiler/options.cmake")
+include("${SOURCEMETA_UTILITIES_DIRECTORY}/options/enum.cmake")
+include("${SOURCEMETA_UTILITIES_DIRECTORY}/commands/copy-file.cmake")
+include("${SOURCEMETA_UTILITIES_DIRECTORY}/targets/library.cmake")
+include("${SOURCEMETA_UTILITIES_DIRECTORY}/targets/executable.cmake")
+include("${SOURCEMETA_UTILITIES_DIRECTORY}/targets/clang-format.cmake")
+include("${SOURCEMETA_UTILITIES_DIRECTORY}/targets/clang-tidy.cmake")
+include("${SOURCEMETA_UTILITIES_DIRECTORY}/targets/shellcheck.cmake")
+include("${SOURCEMETA_UTILITIES_DIRECTORY}/targets/doxygen.cmake")
+include("${SOURCEMETA_UTILITIES_DIRECTORY}/targets/googletest.cmake")
+include("${SOURCEMETA_UTILITIES_DIRECTORY}/targets/googlebenchmark.cmake")
diff --git a/cmake/common/commands/copy-file.cmake b/cmake/common/commands/copy-file.cmake
new file mode 100644
index 000000000..0b0200b41
--- /dev/null
+++ b/cmake/common/commands/copy-file.cmake
@@ -0,0 +1,17 @@
+function(sourcemeta_command_copy_file)
+ cmake_parse_arguments(SOURCEMETA_COMMAND_COPY_FILE "" "FROM;TO" "" ${ARGN})
+
+ if(NOT SOURCEMETA_COMMAND_COPY_FILE_FROM)
+ message(FATAL_ERROR "You must pass the file to copy using the FROM option")
+ endif()
+ if(NOT SOURCEMETA_COMMAND_COPY_FILE_TO)
+ message(FATAL_ERROR "You must pass the destination to copy to using the TO option")
+ endif()
+
+ add_custom_command(
+ OUTPUT "${SOURCEMETA_COMMAND_COPY_FILE_TO}"
+ COMMAND "${CMAKE_COMMAND}" -E copy "${SOURCEMETA_COMMAND_COPY_FILE_FROM}" "${SOURCEMETA_COMMAND_COPY_FILE_TO}"
+ MAIN_DEPENDENCY "${SOURCEMETA_COMMAND_COPY_FILE_FROM}"
+ DEPENDS "${SOURCEMETA_COMMAND_COPY_FILE_FROM}"
+ COMMENT "Copying ${SOURCEMETA_COMMAND_COPY_FILE_FROM} ot ${SOURCEMETA_COMMAND_COPY_FILE_TO}")
+endfunction()
diff --git a/vendor/noa/cmake/noa/compiler/options.cmake b/cmake/common/compiler/options.cmake
similarity index 89%
rename from vendor/noa/cmake/noa/compiler/options.cmake
rename to cmake/common/compiler/options.cmake
index 5db0e8e0a..228022a13 100644
--- a/vendor/noa/cmake/noa/compiler/options.cmake
+++ b/cmake/common/compiler/options.cmake
@@ -1,5 +1,5 @@
-function(noa_add_default_options visibility target)
- if(NOA_COMPILER_MSVC)
+function(sourcemeta_add_default_options visibility target)
+ if(SOURCEMETA_COMPILER_MSVC)
# See https://learn.microsoft.com/en-us/cpp/build/reference/compiler-options-listed-by-category
target_compile_options("${target}" ${visibility}
/options:strict
@@ -8,7 +8,7 @@ function(noa_add_default_options visibility target)
/WL
/MP
/sdl)
- elseif(NOA_COMPILER_LLVM OR NOA_COMPILER_GCC)
+ elseif(SOURCEMETA_COMPILER_LLVM OR SOURCEMETA_COMPILER_GCC)
target_compile_options("${target}" ${visibility}
-Wall
-Wextra
@@ -54,7 +54,7 @@ function(noa_add_default_options visibility target)
-fwrapv)
endif()
- if(NOA_COMPILER_LLVM)
+ if(SOURCEMETA_COMPILER_LLVM)
target_compile_options("${target}" ${visibility}
-Wbool-conversion
-Wint-conversion
@@ -80,7 +80,7 @@ function(noa_add_default_options visibility target)
-fvectorize
# Enable vectorization of straight-line code for performance
-fslp-vectorize)
- elseif(NOA_COMPILER_GCC)
+ elseif(SOURCEMETA_COMPILER_GCC)
target_compile_options("${target}" ${visibility}
-fno-trapping-math
# Newer versions of GCC (i.e. 14) seem to print a lot of false-positives here
@@ -95,13 +95,13 @@ endfunction()
# For studying failed vectorization results
# - On Clang , seems to only take effect on release shared builds
# - On GCC, seems to only take effect on release shared builds
-function(noa_add_vectorization_diagnostics target)
- if(NOA_COMPILER_LLVM)
+function(sourcemeta_add_vectorization_diagnostics target)
+ if(SOURCEMETA_COMPILER_LLVM)
# See https://llvm.org/docs/Vectorizers.html#id6
target_compile_options("${target}" PRIVATE
-Rpass-analysis=loop-vectorize
-Rpass-missed=loop-vectorize)
- elseif(NOA_COMPILER_GCC)
+ elseif(SOURCEMETA_COMPILER_GCC)
target_compile_options("${target}" PRIVATE
-fopt-info-vec-missed
-fopt-info-loop-missed)
diff --git a/vendor/noa/cmake/noa/compiler/sanitizer.cmake b/cmake/common/compiler/sanitizer.cmake
similarity index 80%
rename from vendor/noa/cmake/noa/compiler/sanitizer.cmake
rename to cmake/common/compiler/sanitizer.cmake
index 37ff6f985..491403cbd 100644
--- a/vendor/noa/cmake/noa/compiler/sanitizer.cmake
+++ b/cmake/common/compiler/sanitizer.cmake
@@ -1,11 +1,11 @@
-function(noa_sanitizer)
- cmake_parse_arguments(NOA_SANITIZER "" "TYPE" "" ${ARGN})
+function(sourcemeta_sanitizer)
+ cmake_parse_arguments(SOURCEMETA_SANITIZER "" "TYPE" "" ${ARGN})
- if(NOT NOA_SANITIZER_TYPE)
+ if(NOT SOURCEMETA_SANITIZER_TYPE)
message(FATAL_ERROR "You must pass the intended sanitizer")
endif()
- if(NOA_COMPILER_LLVM AND "${NOA_SANITIZER_TYPE}" STREQUAL "address")
+ if(SOURCEMETA_COMPILER_LLVM AND "${SOURCEMETA_SANITIZER_TYPE}" STREQUAL "address")
# See https://clang.llvm.org/docs/AddressSanitizer.html
message(STATUS "Enabling sanitizer: Clang AddressSanitizer")
add_compile_options(-fsanitize=address -fsanitize-address-use-after-scope)
@@ -13,7 +13,7 @@ function(noa_sanitizer)
# Get nicer stack traces with the Address sanitizer
add_compile_options(-fno-omit-frame-pointer -fno-optimize-sibling-calls)
add_compile_options(-O1)
- elseif(NOA_COMPILER_LLVM AND "${NOA_SANITIZER_TYPE}" STREQUAL "memory")
+ elseif(SOURCEMETA_COMPILER_LLVM AND "${SOURCEMETA_SANITIZER_TYPE}" STREQUAL "memory")
if(APPLE)
message(FATAL_ERROR "Clang MemorySanitizer is not available on Apple platforms")
endif()
@@ -25,7 +25,7 @@ function(noa_sanitizer)
# Get nicer stack traces with the Memory sanitizer
add_compile_options(-fno-omit-frame-pointer -fno-optimize-sibling-calls)
add_compile_options(-O1)
- elseif(NOA_COMPILER_LLVM AND "${NOA_SANITIZER_TYPE}" STREQUAL "undefined")
+ elseif(SOURCEMETA_COMPILER_LLVM AND "${SOURCEMETA_SANITIZER_TYPE}" STREQUAL "undefined")
# See https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html
message(STATUS "Enabling sanitizer: Clang UndefinedBehaviorSanitizer")
add_compile_options(-fsanitize=undefined,nullability,integer,implicit-conversion,local-bounds
diff --git a/vendor/noa/cmake/noa/defaults.cmake b/cmake/common/defaults.cmake
similarity index 89%
rename from vendor/noa/cmake/noa/defaults.cmake
rename to cmake/common/defaults.cmake
index 9d85f2221..437d101ea 100644
--- a/vendor/noa/cmake/noa/defaults.cmake
+++ b/cmake/common/defaults.cmake
@@ -1,11 +1,11 @@
# Standards (sane modern defaults)
-if("CXX" IN_LIST NOA_LANGUAGES)
+if("CXX" IN_LIST SOURCEMETA_LANGUAGES)
set(CMAKE_CXX_STANDARD 20)
endif()
-if("C" IN_LIST NOA_LANGUAGES)
+if("C" IN_LIST SOURCEMETA_LANGUAGES)
set(CMAKE_C_STANDARD 11)
endif()
-if("OBJCXX" IN_LIST NOA_LANGUAGES)
+if("OBJCXX" IN_LIST SOURCEMETA_LANGUAGES)
set(CMAKE_OBJCXX_STANDARD "${CMAKE_CXX_STANDARD}")
endif()
@@ -13,26 +13,26 @@ endif()
# In certain compilers, like GCC and Clang,
# symbols are visible by default.
set(CMAKE_VISIBILITY_INLINES_HIDDEN YES)
-if("CXX" IN_LIST NOA_LANGUAGES)
+if("CXX" IN_LIST SOURCEMETA_LANGUAGES)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
endif()
-if("C" IN_LIST NOA_LANGUAGES)
+if("C" IN_LIST SOURCEMETA_LANGUAGES)
set(CMAKE_C_VISIBILITY_PRESET hidden)
endif()
-if("OBJCXX" IN_LIST NOA_LANGUAGES)
+if("OBJCXX" IN_LIST SOURCEMETA_LANGUAGES)
set(CMAKE_OBJCXX_VISIBILITY_PRESET hidden)
endif()
# By default, stay within ISO C++
-if("CXX" IN_LIST NOA_LANGUAGES)
+if("CXX" IN_LIST SOURCEMETA_LANGUAGES)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
endif()
-if("C" IN_LIST NOA_LANGUAGES)
+if("C" IN_LIST SOURCEMETA_LANGUAGES)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS OFF)
endif()
-if("OBJCXX" IN_LIST NOA_LANGUAGES)
+if("OBJCXX" IN_LIST SOURCEMETA_LANGUAGES)
set(CMAKE_OBJCXX_STANDARD_REQUIRED ON)
set(CMAKE_OBJCXX_EXTENSIONS OFF)
endif()
@@ -79,7 +79,7 @@ endif()
# - https://gcc.gnu.org/onlinedocs/gccint/LTO-Overview.html
# - https://llvm.org/docs/FatLTO.html
-if(NOA_COMPILER_GCC AND CMAKE_BUILD_TYPE STREQUAL "Release" AND NOT BUILD_SHARED_LIBS)
+if(SOURCEMETA_COMPILER_GCC AND CMAKE_BUILD_TYPE STREQUAL "Release" AND NOT BUILD_SHARED_LIBS)
message(STATUS "Enabling Fat LTO")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto -ffat-lto-objects")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto")
@@ -87,7 +87,7 @@ if(NOA_COMPILER_GCC AND CMAKE_BUILD_TYPE STREQUAL "Release" AND NOT BUILD_SHARED
endif()
# TODO: Make this work on Linux on LLVM
-if(NOA_COMPILER_LLVM AND CMAKE_BUILD_TYPE STREQUAL "Release" AND NOT BUILD_SHARED_LIBS AND APPLE)
+if(SOURCEMETA_COMPILER_LLVM AND CMAKE_BUILD_TYPE STREQUAL "Release" AND NOT BUILD_SHARED_LIBS AND APPLE)
message(STATUS "Enabling Fat LTO")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto=full")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto=full")
diff --git a/cmake/common/options/enum.cmake b/cmake/common/options/enum.cmake
new file mode 100644
index 000000000..78edbfb36
--- /dev/null
+++ b/cmake/common/options/enum.cmake
@@ -0,0 +1,32 @@
+function(sourcemeta_option_enum)
+ cmake_parse_arguments(SOURCEMETA_OPTION_ENUM "" "NAME;DEFAULT;DESCRIPTION" "CHOICES" ${ARGN})
+
+ if(NOT SOURCEMETA_OPTION_ENUM_NAME)
+ message(FATAL_ERROR "You must pass the option name as NAME")
+ endif()
+ if(NOT SOURCEMETA_OPTION_ENUM_DEFAULT)
+ message(FATAL_ERROR "You must pass the option default value as DEFAULT")
+ endif()
+ if(NOT "${SOURCEMETA_OPTION_ENUM_DEFAULT}" IN_LIST SOURCEMETA_OPTION_ENUM_CHOICES)
+ message(FATAL_ERROR "Default value of ${SOURCEMETA_OPTION_ENUM_NAME} must be one of these: ${SOURCEMETA_OPTION_ENUM_CHOICES}")
+ endif()
+ if(NOT SOURCEMETA_OPTION_ENUM_DESCRIPTION)
+ message(FATAL_ERROR "You must pass the option description as DESCRIPTION")
+ endif()
+ if(NOT SOURCEMETA_OPTION_ENUM_CHOICES)
+ message(FATAL_ERROR "You must pass the option enum choices as CHOICES")
+ endif()
+
+ # Declare the option
+ set("${SOURCEMETA_OPTION_ENUM_NAME}" "${SOURCEMETA_OPTION_ENUM_DEFAULT}"
+ CACHE STRING "${SOURCEMETA_OPTION_ENUM_DESCRIPTION}")
+
+ # Display a nice set of options in `cmake-gui`
+ set_property(CACHE "${SOURCEMETA_OPTION_ENUM_NAME}"
+ PROPERTY STRINGS ${SOURCEMETA_OPTION_ENUM_CHOICES})
+
+ # Perform validation
+ if(NOT "${${SOURCEMETA_OPTION_ENUM_NAME}}" IN_LIST SOURCEMETA_OPTION_ENUM_CHOICES)
+ message(FATAL_ERROR "Value of ${SOURCEMETA_OPTION_ENUM_NAME} must be one of these: ${SOURCEMETA_OPTION_ENUM_CHOICES}")
+ endif()
+endfunction()
diff --git a/vendor/noa/cmake/noa/shim.cmake b/cmake/common/shim.cmake
similarity index 100%
rename from vendor/noa/cmake/noa/shim.cmake
rename to cmake/common/shim.cmake
diff --git a/vendor/noa/cmake/noa/targets/clang-format.cmake b/cmake/common/targets/clang-format.cmake
similarity index 76%
rename from vendor/noa/cmake/noa/targets/clang-format.cmake
rename to cmake/common/targets/clang-format.cmake
index a788e6ee9..ac8e83d5c 100644
--- a/vendor/noa/cmake/noa/targets/clang-format.cmake
+++ b/cmake/common/targets/clang-format.cmake
@@ -1,18 +1,18 @@
-function(noa_target_clang_format)
- cmake_parse_arguments(NOA_TARGET_CLANG_FORMAT "REQUIRED" "" "SOURCES" ${ARGN})
+function(sourcemeta_target_clang_format)
+ cmake_parse_arguments(SOURCEMETA_TARGET_CLANG_FORMAT "REQUIRED" "" "SOURCES" ${ARGN})
- if(NOA_TARGET_CLANG_FORMAT_REQUIRED)
+ if(SOURCEMETA_TARGET_CLANG_FORMAT_REQUIRED)
find_program(CLANG_FORMAT_BIN NAMES clang-format REQUIRED)
else()
find_program(CLANG_FORMAT_BIN NAMES clang-format)
endif()
# This covers the empty list too
- if(NOT NOA_TARGET_CLANG_FORMAT_SOURCES)
+ if(NOT SOURCEMETA_TARGET_CLANG_FORMAT_SOURCES)
message(FATAL_ERROR "You must pass file globs to format in the SOURCES option")
endif()
- file(GLOB_RECURSE NOA_TARGET_CLANG_FORMAT_FILES
- ${NOA_TARGET_CLANG_FORMAT_SOURCES})
+ file(GLOB_RECURSE SOURCEMETA_TARGET_CLANG_FORMAT_FILES
+ ${SOURCEMETA_TARGET_CLANG_FORMAT_SOURCES})
set(CLANG_FORMAT_CONFIG "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/clang-format.config")
if(CLANG_FORMAT_BIN)
@@ -20,14 +20,14 @@ function(noa_target_clang_format)
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
VERBATIM
COMMAND "${CLANG_FORMAT_BIN}" "--style=file:${CLANG_FORMAT_CONFIG}"
- -i ${NOA_TARGET_CLANG_FORMAT_FILES}
+ -i ${SOURCEMETA_TARGET_CLANG_FORMAT_FILES}
COMMENT "Formatting sources using ClangFormat")
add_custom_target(clang_format_test
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
VERBATIM
COMMAND "${CLANG_FORMAT_BIN}" "--style=file:${CLANG_FORMAT_CONFIG}"
--dry-run -Werror
- -i ${NOA_TARGET_CLANG_FORMAT_FILES}
+ -i ${SOURCEMETA_TARGET_CLANG_FORMAT_FILES}
COMMENT "Checking for ClangFormat compliance")
else()
add_custom_target(clang_format
diff --git a/vendor/noa/cmake/noa/targets/clang-format.config b/cmake/common/targets/clang-format.config
similarity index 100%
rename from vendor/noa/cmake/noa/targets/clang-format.config
rename to cmake/common/targets/clang-format.config
diff --git a/vendor/noa/cmake/noa/targets/clang-tidy.cmake b/cmake/common/targets/clang-tidy.cmake
similarity index 82%
rename from vendor/noa/cmake/noa/targets/clang-tidy.cmake
rename to cmake/common/targets/clang-tidy.cmake
index c37674111..ea00f9584 100644
--- a/vendor/noa/cmake/noa/targets/clang-tidy.cmake
+++ b/cmake/common/targets/clang-tidy.cmake
@@ -1,5 +1,5 @@
-function(noa_target_clang_tidy)
- cmake_parse_arguments(NOA_TARGET_CLANG_TIDY "REQUIRED" "" "SOURCES" ${ARGN})
+function(sourcemeta_target_clang_tidy)
+ cmake_parse_arguments(SOURCEMETA_TARGET_CLANG_TIDY "REQUIRED" "" "SOURCES" ${ARGN})
set(CLANG_TIDY_FIND_PATHS "")
@@ -20,7 +20,7 @@ function(noa_target_clang_tidy)
endif()
endif()
- if(NOA_TARGET_CLANG_TIDY_REQUIRED)
+ if(SOURCEMETA_TARGET_CLANG_TIDY_REQUIRED)
find_program(CLANG_TIDY_BIN NAMES clang-tidy REQUIRED
PATHS ${CLANG_TIDY_FIND_PATHS})
else()
@@ -29,11 +29,11 @@ function(noa_target_clang_tidy)
endif()
# This covers the empty list too
- if(NOT NOA_TARGET_CLANG_TIDY_SOURCES)
+ if(NOT SOURCEMETA_TARGET_CLANG_TIDY_SOURCES)
message(FATAL_ERROR "You must pass file globs to analyze in the SOURCES option")
endif()
- file(GLOB_RECURSE NOA_TARGET_CLANG_TIDY_FILES
- ${NOA_TARGET_CLANG_TIDY_SOURCES})
+ file(GLOB_RECURSE SOURCEMETA_TARGET_CLANG_TIDY_FILES
+ ${SOURCEMETA_TARGET_CLANG_TIDY_SOURCES})
set(CLANG_TIDY_CONFIG "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/clang-tidy.config")
if(CLANG_TIDY_BIN)
@@ -42,7 +42,7 @@ function(noa_target_clang_tidy)
VERBATIM
COMMAND "${CLANG_TIDY_BIN}" -p "${PROJECT_BINARY_DIR}"
--config-file "${CLANG_TIDY_CONFIG}"
- ${NOA_TARGET_CLANG_TIDY_FILES}
+ ${SOURCEMETA_TARGET_CLANG_TIDY_FILES}
COMMENT "Analyzing sources using ClangTidy")
else()
add_custom_target(clang_tidy
diff --git a/vendor/noa/cmake/noa/targets/clang-tidy.config b/cmake/common/targets/clang-tidy.config
similarity index 100%
rename from vendor/noa/cmake/noa/targets/clang-tidy.config
rename to cmake/common/targets/clang-tidy.config
diff --git a/vendor/noa/cmake/noa/targets/doxygen.cmake b/cmake/common/targets/doxygen.cmake
similarity index 66%
rename from vendor/noa/cmake/noa/targets/doxygen.cmake
rename to cmake/common/targets/doxygen.cmake
index 1a3bfc2ce..3d883d060 100644
--- a/vendor/noa/cmake/noa/targets/doxygen.cmake
+++ b/cmake/common/targets/doxygen.cmake
@@ -1,22 +1,22 @@
-function(noa_target_doxygen)
- cmake_parse_arguments(NOA_TARGET_DOXYGEN "" "CONFIG;OUTPUT" "" ${ARGN})
+function(sourcemeta_target_doxygen)
+ cmake_parse_arguments(SOURCEMETA_TARGET_DOXYGEN "" "CONFIG;OUTPUT" "" ${ARGN})
- if(NOT NOA_TARGET_DOXYGEN_CONFIG)
+ if(NOT SOURCEMETA_TARGET_DOXYGEN_CONFIG)
message(FATAL_ERROR "You must pass an input config file using the CONFIG option")
endif()
- if(NOT NOA_TARGET_DOXYGEN_OUTPUT)
+ if(NOT SOURCEMETA_TARGET_DOXYGEN_OUTPUT)
message(FATAL_ERROR "You must pass an output directory using the OUTPUT option")
endif()
find_package(Doxygen)
if(DOXYGEN_FOUND)
- set(DOXYGEN_IN "${NOA_TARGET_DOXYGEN_CONFIG}")
+ set(DOXYGEN_IN "${SOURCEMETA_TARGET_DOXYGEN_CONFIG}")
set(DOXYGEN_OUT "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile")
configure_file("${DOXYGEN_IN}" "${DOXYGEN_OUT}" @ONLY)
add_custom_target(doxygen
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
VERBATIM
- COMMAND "${CMAKE_COMMAND}" -E make_directory "${NOA_TARGET_DOXYGEN_OUTPUT}"
+ COMMAND "${CMAKE_COMMAND}" -E make_directory "${SOURCEMETA_TARGET_DOXYGEN_OUTPUT}"
COMMAND "${DOXYGEN_EXECUTABLE}" "${DOXYGEN_OUT}")
else()
add_custom_target(doxygen VERBATIM
diff --git a/cmake/common/targets/executable.cmake b/cmake/common/targets/executable.cmake
new file mode 100644
index 000000000..8b00bb45c
--- /dev/null
+++ b/cmake/common/targets/executable.cmake
@@ -0,0 +1,35 @@
+function(sourcemeta_executable)
+ cmake_parse_arguments(SOURCEMETA_EXECUTABLE ""
+ "NAMESPACE;PROJECT;NAME;FOLDER;VARIANT;OUTPUT" "SOURCES" ${ARGN})
+
+ if(NOT SOURCEMETA_EXECUTABLE_PROJECT)
+ message(FATAL_ERROR "You must pass the project name using the PROJECT option")
+ endif()
+ if(NOT SOURCEMETA_EXECUTABLE_NAME)
+ message(FATAL_ERROR "You must pass the executable name using the NAME option")
+ endif()
+ if(NOT SOURCEMETA_EXECUTABLE_FOLDER)
+ message(FATAL_ERROR "You must pass the folder name using the FOLDER option")
+ endif()
+ if(NOT SOURCEMETA_EXECUTABLE_SOURCES)
+ message(FATAL_ERROR "You must pass the sources list using the SOURCES option")
+ endif()
+
+ if(SOURCEMETA_EXECUTABLE_NAMESPACE)
+ set(TARGET_NAME "${SOURCEMETA_EXECUTABLE_NAMESPACE}_${SOURCEMETA_EXECUTABLE_PROJECT}_${SOURCEMETA_EXECUTABLE_NAME}")
+ else()
+ set(TARGET_NAME "${SOURCEMETA_EXECUTABLE_PROJECT}_${SOURCEMETA_EXECUTABLE_NAME}")
+ endif()
+
+ if(SOURCEMETA_EXECUTABLE_VARIANT)
+ set(TARGET_NAME "${TARGET_NAME}_${SOURCEMETA_EXECUTABLE_VARIANT}")
+ endif()
+
+ if(SOURCEMETA_EXECUTABLE_OUTPUT)
+ set("${SOURCEMETA_EXECUTABLE_OUTPUT}" "${TARGET_NAME}" PARENT_SCOPE)
+ endif()
+
+ add_executable("${TARGET_NAME}" ${SOURCEMETA_EXECUTABLE_SOURCES})
+ sourcemeta_add_default_options(PRIVATE ${TARGET_NAME})
+ set_target_properties("${TARGET_NAME}" PROPERTIES FOLDER "${SOURCEMETA_EXECUTABLE_FOLDER}")
+endfunction()
diff --git a/cmake/common/targets/googlebenchmark.cmake b/cmake/common/targets/googlebenchmark.cmake
new file mode 100644
index 000000000..10c61f1e8
--- /dev/null
+++ b/cmake/common/targets/googlebenchmark.cmake
@@ -0,0 +1,26 @@
+function(sourcemeta_googlebenchmark)
+ cmake_parse_arguments(SOURCEMETA_GOOGLEBENCHMARK ""
+ "NAMESPACE;PROJECT;FOLDER" "SOURCES" ${ARGN})
+
+ if(NOT SOURCEMETA_GOOGLEBENCHMARK_PROJECT)
+ message(FATAL_ERROR "You must pass the project name using the PROJECT option")
+ endif()
+ if(NOT SOURCEMETA_GOOGLEBENCHMARK_FOLDER)
+ message(FATAL_ERROR "You must pass the folder name using the FOLDER option")
+ endif()
+ if(NOT SOURCEMETA_GOOGLEBENCHMARK_SOURCES)
+ message(FATAL_ERROR "You must pass the sources list using the SOURCES option")
+ endif()
+
+ if(SOURCEMETA_GOOGLEBENCHMARK_NAMESPACE)
+ set(TARGET_NAME "${SOURCEMETA_GOOGLEBENCHMARK_NAMESPACE}_${SOURCEMETA_GOOGLEBENCHMARK_PROJECT}_benchmark")
+ else()
+ set(TARGET_NAME "${SOURCEMETA_GOOGLEBENCHMARK_PROJECT}_benchmark")
+ endif()
+
+ add_executable("${TARGET_NAME}" ${SOURCEMETA_GOOGLEBENCHMARK_SOURCES})
+ sourcemeta_add_default_options(PRIVATE ${TARGET_NAME})
+ set_target_properties("${TARGET_NAME}" PROPERTIES FOLDER "${SOURCEMETA_GOOGLEBENCHMARK_FOLDER}")
+ target_link_libraries("${TARGET_NAME}" PRIVATE benchmark::benchmark)
+ target_link_libraries("${TARGET_NAME}" PRIVATE benchmark::benchmark_main)
+endfunction()
diff --git a/cmake/common/targets/googletest.cmake b/cmake/common/targets/googletest.cmake
new file mode 100644
index 000000000..101b50630
--- /dev/null
+++ b/cmake/common/targets/googletest.cmake
@@ -0,0 +1,24 @@
+function(sourcemeta_googletest)
+ cmake_parse_arguments(SOURCEMETA_GOOGLETEST ""
+ "NAMESPACE;PROJECT;NAME;FOLDER;VARIANT" "SOURCES" ${ARGN})
+
+ if(SOURCEMETA_GOOGLETEST_VARIANT)
+ set(TARGET_VARIANT "${SOURCEMETA_GOOGLETEST_VARIANT}_unit")
+ else()
+ set(TARGET_VARIANT "unit")
+ endif()
+
+ sourcemeta_executable(
+ NAMESPACE "${SOURCEMETA_GOOGLETEST_NAMESPACE}"
+ PROJECT "${SOURCEMETA_GOOGLETEST_PROJECT}"
+ NAME "${SOURCEMETA_GOOGLETEST_NAME}"
+ FOLDER "${SOURCEMETA_GOOGLETEST_FOLDER}"
+ VARIANT "${TARGET_VARIANT}"
+ SOURCES "${SOURCEMETA_GOOGLETEST_SOURCES}"
+ OUTPUT TARGET_NAME)
+
+ target_link_libraries("${TARGET_NAME}"
+ PRIVATE GTest::gtest GTest::gmock GTest::gtest_main)
+ add_test(NAME "${SOURCEMETA_GOOGLETEST_PROJECT}.${SOURCEMETA_GOOGLETEST_NAME}"
+ COMMAND "${TARGET_NAME}" --gtest_brief=1)
+endfunction()
diff --git a/vendor/noa/cmake/noa/targets/library.cmake b/cmake/common/targets/library.cmake
similarity index 51%
rename from vendor/noa/cmake/noa/targets/library.cmake
rename to cmake/common/targets/library.cmake
index 03311504b..f58a153d8 100644
--- a/vendor/noa/cmake/noa/targets/library.cmake
+++ b/cmake/common/targets/library.cmake
@@ -1,75 +1,75 @@
-function(noa_library)
- cmake_parse_arguments(NOA_LIBRARY ""
+function(sourcemeta_library)
+ cmake_parse_arguments(SOURCEMETA_LIBRARY ""
"NAMESPACE;PROJECT;NAME;FOLDER;VARIANT" "PRIVATE_HEADERS;SOURCES" ${ARGN})
- if(NOT NOA_LIBRARY_PROJECT)
+ if(NOT SOURCEMETA_LIBRARY_PROJECT)
message(FATAL_ERROR "You must pass the project name using the PROJECT option")
endif()
- if(NOT NOA_LIBRARY_NAME)
+ if(NOT SOURCEMETA_LIBRARY_NAME)
message(FATAL_ERROR "You must pass the library name using the NAME option")
endif()
- if(NOT NOA_LIBRARY_FOLDER)
+ if(NOT SOURCEMETA_LIBRARY_FOLDER)
message(FATAL_ERROR "You must pass the folder name using the FOLDER option")
endif()
- if(NOA_LIBRARY_NAMESPACE)
- set(INCLUDE_PREFIX "include/${NOA_LIBRARY_NAMESPACE}/${NOA_LIBRARY_PROJECT}")
+ if(SOURCEMETA_LIBRARY_NAMESPACE)
+ set(INCLUDE_PREFIX "include/${SOURCEMETA_LIBRARY_NAMESPACE}/${SOURCEMETA_LIBRARY_PROJECT}")
else()
- set(INCLUDE_PREFIX "include/${NOA_LIBRARY_PROJECT}")
+ set(INCLUDE_PREFIX "include/${SOURCEMETA_LIBRARY_PROJECT}")
endif()
- set(EXPORT_HEADER_PATH "${CMAKE_CURRENT_BINARY_DIR}/${INCLUDE_PREFIX}/${NOA_LIBRARY_NAME}_export.h")
- if(NOT NOA_LIBRARY_VARIANT)
- set(PUBLIC_HEADER "${INCLUDE_PREFIX}/${NOA_LIBRARY_NAME}.h")
+ set(EXPORT_HEADER_PATH "${CMAKE_CURRENT_BINARY_DIR}/${INCLUDE_PREFIX}/${SOURCEMETA_LIBRARY_NAME}_export.h")
+ if(NOT SOURCEMETA_LIBRARY_VARIANT)
+ set(PUBLIC_HEADER "${INCLUDE_PREFIX}/${SOURCEMETA_LIBRARY_NAME}.h")
else()
- set(PUBLIC_HEADER "../${INCLUDE_PREFIX}/${NOA_LIBRARY_NAME}.h")
+ set(PUBLIC_HEADER "../${INCLUDE_PREFIX}/${SOURCEMETA_LIBRARY_NAME}.h")
endif()
- if(NOA_LIBRARY_SOURCES)
+ if(SOURCEMETA_LIBRARY_SOURCES)
set(ABSOLUTE_PRIVATE_HEADERS "${EXPORT_HEADER_PATH}")
else()
set(ABSOLUTE_PRIVATE_HEADERS)
endif()
- foreach(private_header IN LISTS NOA_LIBRARY_PRIVATE_HEADERS)
- if(NOA_LIBRARY_VARIANT)
- list(APPEND ABSOLUTE_PRIVATE_HEADERS "../${INCLUDE_PREFIX}/${NOA_LIBRARY_NAME}_${private_header}")
+ foreach(private_header IN LISTS SOURCEMETA_LIBRARY_PRIVATE_HEADERS)
+ if(SOURCEMETA_LIBRARY_VARIANT)
+ list(APPEND ABSOLUTE_PRIVATE_HEADERS "../${INCLUDE_PREFIX}/${SOURCEMETA_LIBRARY_NAME}_${private_header}")
else()
- list(APPEND ABSOLUTE_PRIVATE_HEADERS "${INCLUDE_PREFIX}/${NOA_LIBRARY_NAME}_${private_header}")
+ list(APPEND ABSOLUTE_PRIVATE_HEADERS "${INCLUDE_PREFIX}/${SOURCEMETA_LIBRARY_NAME}_${private_header}")
endif()
endforeach()
- if(NOA_LIBRARY_NAMESPACE)
- set(TARGET_NAME "${NOA_LIBRARY_NAMESPACE}_${NOA_LIBRARY_PROJECT}_${NOA_LIBRARY_NAME}")
- set(ALIAS_NAME "${NOA_LIBRARY_NAMESPACE}::${NOA_LIBRARY_PROJECT}::${NOA_LIBRARY_NAME}")
+ if(SOURCEMETA_LIBRARY_NAMESPACE)
+ set(TARGET_NAME "${SOURCEMETA_LIBRARY_NAMESPACE}_${SOURCEMETA_LIBRARY_PROJECT}_${SOURCEMETA_LIBRARY_NAME}")
+ set(ALIAS_NAME "${SOURCEMETA_LIBRARY_NAMESPACE}::${SOURCEMETA_LIBRARY_PROJECT}::${SOURCEMETA_LIBRARY_NAME}")
else()
- set(TARGET_NAME "${NOA_LIBRARY_PROJECT}_${NOA_LIBRARY_NAME}")
- set(ALIAS_NAME "${NOA_LIBRARY_PROJECT}::${NOA_LIBRARY_NAME}")
+ set(TARGET_NAME "${SOURCEMETA_LIBRARY_PROJECT}_${SOURCEMETA_LIBRARY_NAME}")
+ set(ALIAS_NAME "${SOURCEMETA_LIBRARY_PROJECT}::${SOURCEMETA_LIBRARY_NAME}")
endif()
- if(NOA_LIBRARY_VARIANT)
- set(TARGET_NAME "${TARGET_NAME}_${NOA_LIBRARY_VARIANT}")
- set(ALIAS_NAME "${ALIAS_NAME}::${NOA_LIBRARY_VARIANT}")
+ if(SOURCEMETA_LIBRARY_VARIANT)
+ set(TARGET_NAME "${TARGET_NAME}_${SOURCEMETA_LIBRARY_VARIANT}")
+ set(ALIAS_NAME "${ALIAS_NAME}::${SOURCEMETA_LIBRARY_VARIANT}")
endif()
- if(NOA_LIBRARY_SOURCES)
+ if(SOURCEMETA_LIBRARY_SOURCES)
add_library(${TARGET_NAME}
- ${PUBLIC_HEADER} ${ABSOLUTE_PRIVATE_HEADERS} ${NOA_LIBRARY_SOURCES})
- noa_add_default_options(PRIVATE ${TARGET_NAME})
+ ${PUBLIC_HEADER} ${ABSOLUTE_PRIVATE_HEADERS} ${SOURCEMETA_LIBRARY_SOURCES})
+ sourcemeta_add_default_options(PRIVATE ${TARGET_NAME})
else()
add_library(${TARGET_NAME} INTERFACE
${PUBLIC_HEADER} ${ABSOLUTE_PRIVATE_HEADERS})
- noa_add_default_options(INTERFACE ${TARGET_NAME})
+ sourcemeta_add_default_options(INTERFACE ${TARGET_NAME})
endif()
add_library(${ALIAS_NAME} ALIAS ${TARGET_NAME})
- if(NOT NOA_LIBRARY_VARIANT)
+ if(NOT SOURCEMETA_LIBRARY_VARIANT)
set(include_dir "${CMAKE_CURRENT_SOURCE_DIR}/include")
else()
set(include_dir "${CMAKE_CURRENT_SOURCE_DIR}/../include")
endif()
- if(NOA_LIBRARY_SOURCES)
+ if(SOURCEMETA_LIBRARY_SOURCES)
target_include_directories(${TARGET_NAME} PUBLIC
"$"
"$")
@@ -79,20 +79,20 @@ function(noa_library)
"$")
endif()
- if(NOA_LIBRARY_VARIANT)
- set(export_name "${NOA_LIBRARY_PROJECT}::${NOA_LIBRARY_NAME}::${NOA_LIBRARY_VARIANT}")
+ if(SOURCEMETA_LIBRARY_VARIANT)
+ set(export_name "${SOURCEMETA_LIBRARY_PROJECT}::${SOURCEMETA_LIBRARY_NAME}::${SOURCEMETA_LIBRARY_VARIANT}")
else()
- set(export_name "${NOA_LIBRARY_PROJECT}::${NOA_LIBRARY_NAME}")
+ set(export_name "${SOURCEMETA_LIBRARY_PROJECT}::${SOURCEMETA_LIBRARY_NAME}")
endif()
- if(NOA_LIBRARY_SOURCES)
+ if(SOURCEMETA_LIBRARY_SOURCES)
set_target_properties(${TARGET_NAME}
PROPERTIES
OUTPUT_NAME ${TARGET_NAME}
PUBLIC_HEADER "${PUBLIC_HEADER}"
PRIVATE_HEADER "${ABSOLUTE_PRIVATE_HEADERS}"
EXPORT_NAME "${export_name}"
- FOLDER "${NOA_LIBRARY_FOLDER}")
+ FOLDER "${SOURCEMETA_LIBRARY_FOLDER}")
else()
set_target_properties(${TARGET_NAME}
PROPERTIES
@@ -100,10 +100,10 @@ function(noa_library)
PUBLIC_HEADER "${PUBLIC_HEADER}"
PRIVATE_HEADER "${ABSOLUTE_PRIVATE_HEADERS}"
EXPORT_NAME "${export_name}"
- FOLDER "${NOA_LIBRARY_FOLDER}")
+ FOLDER "${SOURCEMETA_LIBRARY_FOLDER}")
endif()
- if(NOA_LIBRARY_SOURCES)
+ if(SOURCEMETA_LIBRARY_SOURCES)
include(GenerateExportHeader)
generate_export_header(${TARGET_NAME}
EXPORT_FILE_NAME ${EXPORT_HEADER_PATH})
@@ -118,30 +118,30 @@ function(noa_library)
endif()
endfunction()
-function(noa_library_install)
- cmake_parse_arguments(NOA_LIBRARY "" "NAMESPACE;PROJECT;NAME;VARIANT" "" ${ARGN})
+function(sourcemeta_library_install)
+ cmake_parse_arguments(SOURCEMETA_LIBRARY "" "NAMESPACE;PROJECT;NAME;VARIANT" "" ${ARGN})
- if(NOT NOA_LIBRARY_PROJECT)
+ if(NOT SOURCEMETA_LIBRARY_PROJECT)
message(FATAL_ERROR "You must pass the project name using the PROJECT option")
endif()
- if(NOT NOA_LIBRARY_NAME)
+ if(NOT SOURCEMETA_LIBRARY_NAME)
message(FATAL_ERROR "You must pass the library name using the NAME option")
endif()
- if(NOA_LIBRARY_NAMESPACE)
- set(COMPONENT_NAME "${NOA_LIBRARY_NAMESPACE}_${NOA_LIBRARY_PROJECT}")
- set(TARGET_NAME "${NOA_LIBRARY_NAMESPACE}_${NOA_LIBRARY_PROJECT}_${NOA_LIBRARY_NAME}")
- set(INCLUDE_PATH "${CMAKE_INSTALL_INCLUDEDIR}/${NOA_LIBRARY_NAMESPACE}/${NOA_LIBRARY_PROJECT}")
- set(NAMESPACE_PREFIX "${NOA_LIBRARY_NAMESPACE}::")
+ if(SOURCEMETA_LIBRARY_NAMESPACE)
+ set(COMPONENT_NAME "${SOURCEMETA_LIBRARY_NAMESPACE}_${SOURCEMETA_LIBRARY_PROJECT}")
+ set(TARGET_NAME "${SOURCEMETA_LIBRARY_NAMESPACE}_${SOURCEMETA_LIBRARY_PROJECT}_${SOURCEMETA_LIBRARY_NAME}")
+ set(INCLUDE_PATH "${CMAKE_INSTALL_INCLUDEDIR}/${SOURCEMETA_LIBRARY_NAMESPACE}/${SOURCEMETA_LIBRARY_PROJECT}")
+ set(NAMESPACE_PREFIX "${SOURCEMETA_LIBRARY_NAMESPACE}::")
else()
- set(COMPONENT_NAME "${NOA_LIBRARY_PROJECT}")
- set(TARGET_NAME "${NOA_LIBRARY_PROJECT}_${NOA_LIBRARY_NAME}")
- set(INCLUDE_PATH "${CMAKE_INSTALL_INCLUDEDIR}/${NOA_LIBRARY_PROJECT}")
+ set(COMPONENT_NAME "${SOURCEMETA_LIBRARY_PROJECT}")
+ set(TARGET_NAME "${SOURCEMETA_LIBRARY_PROJECT}_${SOURCEMETA_LIBRARY_NAME}")
+ set(INCLUDE_PATH "${CMAKE_INSTALL_INCLUDEDIR}/${SOURCEMETA_LIBRARY_PROJECT}")
set(NAMESPACE_PREFIX "")
endif()
- if(NOA_LIBRARY_VARIANT)
- set(TARGET_NAME "${TARGET_NAME}_${NOA_LIBRARY_VARIANT}")
+ if(SOURCEMETA_LIBRARY_VARIANT)
+ set(TARGET_NAME "${TARGET_NAME}_${SOURCEMETA_LIBRARY_VARIANT}")
endif()
include(GNUInstallDirs)
@@ -159,7 +159,7 @@ function(noa_library_install)
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
COMPONENT ${COMPONENT_NAME}_dev)
install(EXPORT ${TARGET_NAME}
- DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${NOA_LIBRARY_PROJECT}"
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${SOURCEMETA_LIBRARY_PROJECT}"
NAMESPACE ${NAMESPACE_PREFIX}
COMPONENT ${COMPONENT_NAME}_dev)
endfunction()
diff --git a/vendor/noa/cmake/noa/targets/shellcheck.cmake b/cmake/common/targets/shellcheck.cmake
similarity index 65%
rename from vendor/noa/cmake/noa/targets/shellcheck.cmake
rename to cmake/common/targets/shellcheck.cmake
index 656224704..56e5e39c1 100644
--- a/vendor/noa/cmake/noa/targets/shellcheck.cmake
+++ b/cmake/common/targets/shellcheck.cmake
@@ -1,24 +1,24 @@
-function(noa_target_shellcheck)
- cmake_parse_arguments(NOA_TARGET_SHELLCHECK "REQUIRED" "" "SOURCES" ${ARGN})
+function(sourcemeta_target_shellcheck)
+ cmake_parse_arguments(SOURCEMETA_TARGET_SHELLCHECK "REQUIRED" "" "SOURCES" ${ARGN})
- if(NOA_TARGET_SHELLCHECK_REQUIRED)
+ if(SOURCEMETA_TARGET_SHELLCHECK_REQUIRED)
find_program(SHELLCHECK_BIN NAMES shellcheck REQUIRED)
else()
find_program(SHELLCHECK_BIN NAMES shellcheck)
endif()
# This covers the empty list too
- if(NOT NOA_TARGET_SHELLCHECK_SOURCES)
+ if(NOT SOURCEMETA_TARGET_SHELLCHECK_SOURCES)
message(FATAL_ERROR "You must pass file globs to lint in the SOURCES option")
endif()
- file(GLOB_RECURSE NOA_TARGET_SHELLCHECK_FILES
- ${NOA_TARGET_SHELLCHECK_SOURCES})
+ file(GLOB_RECURSE SOURCEMETA_TARGET_SHELLCHECK_FILES
+ ${SOURCEMETA_TARGET_SHELLCHECK_SOURCES})
if(SHELLCHECK_BIN)
add_custom_target(shellcheck
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
VERBATIM
- COMMAND "${SHELLCHECK_BIN}" ${NOA_TARGET_SHELLCHECK_FILES}
+ COMMAND "${SHELLCHECK_BIN}" ${SOURCEMETA_TARGET_SHELLCHECK_FILES}
COMMENT "Analyzing sources using ShellCheck")
else()
add_custom_target(shellcheck
diff --git a/vendor/noa/cmake/noa/variables.cmake b/cmake/common/variables.cmake
similarity index 63%
rename from vendor/noa/cmake/noa/variables.cmake
rename to cmake/common/variables.cmake
index d29489856..9c3722512 100644
--- a/vendor/noa/cmake/noa/variables.cmake
+++ b/cmake/common/variables.cmake
@@ -1,12 +1,12 @@
# Get the list of languages defined in the project
-get_property(NOA_LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES)
+get_property(SOURCEMETA_LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES)
# Compiler detection (C++)
# TODO: Detect compilers on programming languages other than C++
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
- set(NOA_COMPILER_LLVM ON)
+ set(SOURCEMETA_COMPILER_LLVM ON)
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
- set(NOA_COMPILER_GCC ON)
+ set(SOURCEMETA_COMPILER_GCC ON)
elseif(MSVC)
- set(NOA_COMPILER_MSVC ON)
+ set(SOURCEMETA_COMPILER_MSVC ON)
endif()
diff --git a/doxygen/Doxyfile.in b/doxygen/Doxyfile.in
index 26b8db044..c427957d3 100644
--- a/doxygen/Doxyfile.in
+++ b/doxygen/Doxyfile.in
@@ -68,7 +68,7 @@ PROJECT_LOGO = @PROJECT_SOURCE_DIR@/doxygen/logo.png
# entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used.
-OUTPUT_DIRECTORY = @NOA_TARGET_DOXYGEN_OUTPUT@
+OUTPUT_DIRECTORY = @SOURCEMETA_TARGET_DOXYGEN_OUTPUT@
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096
# sub-directories (in 2 levels) under the output directory of each output format
diff --git a/doxygen/index.markdown b/doxygen/index.markdown
index 806f15eb1..3a6e4184f 100644
--- a/doxygen/index.markdown
+++ b/doxygen/index.markdown
@@ -9,8 +9,8 @@ projects.
Live at head
------------
-Like projects such as [`GoogleTest`](https://github.com/google/googletest), Noa
-follows the [Abseil Live at
+Like projects such as [`GoogleTest`](https://github.com/google/googletest),
+this project follows the [Abseil Live at
Head](https://abseil.io/about/philosophy#upgrade-support) philosophy. We
recommend always following the latest commit in the `main` branch.
diff --git a/src/core/json/CMakeLists.txt b/src/core/json/CMakeLists.txt
index 8d7a3d780..ca9dd84d5 100644
--- a/src/core/json/CMakeLists.txt
+++ b/src/core/json/CMakeLists.txt
@@ -1,8 +1,8 @@
-noa_library(NAMESPACE sourcemeta PROJECT core NAME json
+sourcemeta_library(NAMESPACE sourcemeta PROJECT core NAME json
FOLDER "Core/JSON"
PRIVATE_HEADERS array.h error.h object.h value.h hash.h
SOURCES grammar.h parser.h stringify.h json.cc json_value.cc)
if(SOURCEMETA_CORE_INSTALL)
- noa_library_install(NAMESPACE sourcemeta PROJECT core NAME json)
+ sourcemeta_library_install(NAMESPACE sourcemeta PROJECT core NAME json)
endif()
diff --git a/src/core/jsonl/CMakeLists.txt b/src/core/jsonl/CMakeLists.txt
index 582242bd1..fc5273232 100644
--- a/src/core/jsonl/CMakeLists.txt
+++ b/src/core/jsonl/CMakeLists.txt
@@ -1,10 +1,10 @@
-noa_library(NAMESPACE sourcemeta PROJECT core NAME jsonl
+sourcemeta_library(NAMESPACE sourcemeta PROJECT core NAME jsonl
FOLDER "Core/JSONL"
PRIVATE_HEADERS iterator.h
SOURCES jsonl.cc iterator.cc grammar.h)
if(SOURCEMETA_CORE_INSTALL)
- noa_library_install(NAMESPACE sourcemeta PROJECT core NAME jsonl)
+ sourcemeta_library_install(NAMESPACE sourcemeta PROJECT core NAME jsonl)
endif()
target_link_libraries(sourcemeta_core_jsonl PUBLIC
diff --git a/src/core/jsonpointer/CMakeLists.txt b/src/core/jsonpointer/CMakeLists.txt
index ca117a4ff..fef5a40e9 100644
--- a/src/core/jsonpointer/CMakeLists.txt
+++ b/src/core/jsonpointer/CMakeLists.txt
@@ -1,11 +1,11 @@
-noa_library(NAMESPACE sourcemeta PROJECT core NAME jsonpointer
+sourcemeta_library(NAMESPACE sourcemeta PROJECT core NAME jsonpointer
FOLDER "Core/JSON Pointer"
PRIVATE_HEADERS pointer.h position.h error.h token.h
walker.h subpointer_walker.h proxy.h
SOURCES jsonpointer.cc stringify.h parser.h grammar.h position.cc)
if(SOURCEMETA_CORE_INSTALL)
- noa_library_install(NAMESPACE sourcemeta PROJECT core NAME jsonpointer)
+ sourcemeta_library_install(NAMESPACE sourcemeta PROJECT core NAME jsonpointer)
endif()
target_link_libraries(sourcemeta_core_jsonpointer PUBLIC
diff --git a/src/core/jsonschema/CMakeLists.txt b/src/core/jsonschema/CMakeLists.txt
index d7dbcd1e6..403cd15a5 100644
--- a/src/core/jsonschema/CMakeLists.txt
+++ b/src/core/jsonschema/CMakeLists.txt
@@ -2,7 +2,7 @@ set(OFFICIAL_RESOLVER_INPUT "${CMAKE_CURRENT_SOURCE_DIR}/official_resolver.in.cc
set(OFFICIAL_RESOLVER_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/official_resolver.cc")
include(./official_resolver.cmake)
-noa_library(NAMESPACE sourcemeta PROJECT core NAME jsonschema
+sourcemeta_library(NAMESPACE sourcemeta PROJECT core NAME jsonschema
FOLDER "Core/JSON Schema"
PRIVATE_HEADERS anchor.h bundle.h resolver.h
walker.h reference.h frame.h error.h unevaluated.h
@@ -14,7 +14,7 @@ noa_library(NAMESPACE sourcemeta PROJECT core NAME jsonschema
"${CMAKE_CURRENT_BINARY_DIR}/official_resolver.cc")
if(SOURCEMETA_CORE_INSTALL)
- noa_library_install(NAMESPACE sourcemeta PROJECT core NAME jsonschema)
+ sourcemeta_library_install(NAMESPACE sourcemeta PROJECT core NAME jsonschema)
endif()
target_link_libraries(sourcemeta_core_jsonschema PUBLIC
diff --git a/src/core/regex/CMakeLists.txt b/src/core/regex/CMakeLists.txt
index 784be5cbd..ab19f9864 100644
--- a/src/core/regex/CMakeLists.txt
+++ b/src/core/regex/CMakeLists.txt
@@ -1,8 +1,8 @@
-noa_library(NAMESPACE sourcemeta PROJECT core NAME regex
+sourcemeta_library(NAMESPACE sourcemeta PROJECT core NAME regex
FOLDER "Core/Regex")
if(SOURCEMETA_CORE_INSTALL)
- noa_library_install(NAMESPACE sourcemeta PROJECT core NAME regex)
+ sourcemeta_library_install(NAMESPACE sourcemeta PROJECT core NAME regex)
endif()
target_link_libraries(sourcemeta_core_regex INTERFACE Boost::regex)
diff --git a/src/core/uri/CMakeLists.txt b/src/core/uri/CMakeLists.txt
index 4f927dbfe..8b70c8898 100644
--- a/src/core/uri/CMakeLists.txt
+++ b/src/core/uri/CMakeLists.txt
@@ -1,10 +1,10 @@
-noa_library(NAMESPACE sourcemeta PROJECT core NAME uri
+sourcemeta_library(NAMESPACE sourcemeta PROJECT core NAME uri
FOLDER "Core/URI"
PRIVATE_HEADERS error.h
SOURCES uri.cc escaping.cc)
if(SOURCEMETA_CORE_INSTALL)
- noa_library_install(NAMESPACE sourcemeta PROJECT core NAME uri)
+ sourcemeta_library_install(NAMESPACE sourcemeta PROJECT core NAME uri)
endif()
target_link_libraries(sourcemeta_core_uri
diff --git a/src/core/yaml/CMakeLists.txt b/src/core/yaml/CMakeLists.txt
index 45b5e6477..a6e8bc01f 100644
--- a/src/core/yaml/CMakeLists.txt
+++ b/src/core/yaml/CMakeLists.txt
@@ -1,10 +1,10 @@
-noa_library(NAMESPACE sourcemeta PROJECT core NAME yaml
+sourcemeta_library(NAMESPACE sourcemeta PROJECT core NAME yaml
FOLDER "Core/YAML"
PRIVATE_HEADERS error.h
SOURCES yaml.cc)
if(SOURCEMETA_CORE_INSTALL)
- noa_library_install(NAMESPACE sourcemeta PROJECT core NAME yaml)
+ sourcemeta_library_install(NAMESPACE sourcemeta PROJECT core NAME yaml)
endif()
target_link_libraries(sourcemeta_core_yaml PRIVATE yaml)
diff --git a/src/extension/alterschema/CMakeLists.txt b/src/extension/alterschema/CMakeLists.txt
index 6c0cf764d..50549a2b9 100644
--- a/src/extension/alterschema/CMakeLists.txt
+++ b/src/extension/alterschema/CMakeLists.txt
@@ -1,4 +1,4 @@
-noa_library(NAMESPACE sourcemeta PROJECT core NAME alterschema
+sourcemeta_library(NAMESPACE sourcemeta PROJECT core NAME alterschema
FOLDER "Core/AlterSchema"
SOURCES alterschema.cc
# Antipattern
@@ -158,7 +158,7 @@ noa_library(NAMESPACE sourcemeta PROJECT core NAME alterschema
superfluous/then_without_if.h)
if(SOURCEMETA_CORE_INSTALL)
- noa_library_install(NAMESPACE sourcemeta PROJECT core NAME alterschema)
+ sourcemeta_library_install(NAMESPACE sourcemeta PROJECT core NAME alterschema)
endif()
target_link_libraries(sourcemeta_core_alterschema PUBLIC
diff --git a/test/alterschema/CMakeLists.txt b/test/alterschema/CMakeLists.txt
index d7b47a02a..6fe17020f 100644
--- a/test/alterschema/CMakeLists.txt
+++ b/test/alterschema/CMakeLists.txt
@@ -1,4 +1,4 @@
-noa_googletest(NAMESPACE sourcemeta PROJECT core NAME alterschema
+sourcemeta_googletest(NAMESPACE sourcemeta PROJECT core NAME alterschema
FOLDER "Core/AlterSchema"
SOURCES
alterschema_lint_2020_12_test.cc
diff --git a/test/json/CMakeLists.txt b/test/json/CMakeLists.txt
index 1a355821e..ee3966d0d 100644
--- a/test/json/CMakeLists.txt
+++ b/test/json/CMakeLists.txt
@@ -1,4 +1,4 @@
-noa_googletest(NAMESPACE sourcemeta PROJECT core NAME json
+sourcemeta_googletest(NAMESPACE sourcemeta PROJECT core NAME json
FOLDER "Core/JSON"
SOURCES
json_array_test.cc
@@ -26,7 +26,7 @@ target_compile_definitions(sourcemeta_core_json_unit
# JSON Test Suite
# See https://github.com/nst/JSONTestSuite
-noa_googletest(NAMESPACE sourcemeta PROJECT core NAME jsontestsuite
+sourcemeta_googletest(NAMESPACE sourcemeta PROJECT core NAME jsontestsuite
FOLDER "Core/JSON"
SOURCES jsontestsuite.cc)
target_compile_definitions(sourcemeta_core_jsontestsuite_unit
diff --git a/test/jsonl/CMakeLists.txt b/test/jsonl/CMakeLists.txt
index 5d9236027..c1761f2b9 100644
--- a/test/jsonl/CMakeLists.txt
+++ b/test/jsonl/CMakeLists.txt
@@ -1,4 +1,4 @@
-noa_googletest(NAMESPACE sourcemeta PROJECT core NAME jsonl
+sourcemeta_googletest(NAMESPACE sourcemeta PROJECT core NAME jsonl
FOLDER "Core/JSONL"
SOURCES
jsonl_parse_test.cc
diff --git a/test/jsonpointer/CMakeLists.txt b/test/jsonpointer/CMakeLists.txt
index 89bf94185..df90f4c78 100644
--- a/test/jsonpointer/CMakeLists.txt
+++ b/test/jsonpointer/CMakeLists.txt
@@ -1,4 +1,4 @@
-noa_googletest(NAMESPACE sourcemeta PROJECT core NAME jsonpointer
+sourcemeta_googletest(NAMESPACE sourcemeta PROJECT core NAME jsonpointer
FOLDER "Core/JSON Pointer"
SOURCES
jsonpointer_empty_pointer_test.cc
diff --git a/test/jsonschema/CMakeLists.txt b/test/jsonschema/CMakeLists.txt
index 09b46a822..1bb3e6076 100644
--- a/test/jsonschema/CMakeLists.txt
+++ b/test/jsonschema/CMakeLists.txt
@@ -1,4 +1,4 @@
-noa_googletest(NAMESPACE sourcemeta PROJECT core NAME jsonschema
+sourcemeta_googletest(NAMESPACE sourcemeta PROJECT core NAME jsonschema
FOLDER "Core/JSON Schema"
SOURCES
jsonschema_test_utils.h
@@ -107,7 +107,7 @@ target_compile_definitions(sourcemeta_core_jsonschema_unit
# JSON Schema Referencing Suite
# See https://github.com/python-jsonschema/referencing-suite
-noa_googletest(NAMESPACE sourcemeta PROJECT core NAME jsonschema_referencing_suite
+sourcemeta_googletest(NAMESPACE sourcemeta PROJECT core NAME jsonschema_referencing_suite
FOLDER "Core/JSON Schema"
SOURCES referencingsuite.cc)
target_compile_definitions(sourcemeta_core_jsonschema_referencing_suite_unit
diff --git a/test/regex/CMakeLists.txt b/test/regex/CMakeLists.txt
index 59fed6ec9..142a33554 100644
--- a/test/regex/CMakeLists.txt
+++ b/test/regex/CMakeLists.txt
@@ -1,4 +1,4 @@
-noa_googletest(NAMESPACE sourcemeta PROJECT core NAME regex
+sourcemeta_googletest(NAMESPACE sourcemeta PROJECT core NAME regex
FOLDER "Core/Regex"
SOURCES regex_matches_test.cc regex_to_regex_test.cc)
diff --git a/test/uri/CMakeLists.txt b/test/uri/CMakeLists.txt
index 4e97e047a..d9a989531 100644
--- a/test/uri/CMakeLists.txt
+++ b/test/uri/CMakeLists.txt
@@ -1,4 +1,4 @@
-noa_googletest(NAMESPACE sourcemeta PROJECT core NAME uri
+sourcemeta_googletest(NAMESPACE sourcemeta PROJECT core NAME uri
FOLDER "Core/URI"
SOURCES
uri_test.cc
diff --git a/test/yaml/CMakeLists.txt b/test/yaml/CMakeLists.txt
index a8a96c1f5..7811e2343 100644
--- a/test/yaml/CMakeLists.txt
+++ b/test/yaml/CMakeLists.txt
@@ -1,4 +1,4 @@
-noa_googletest(NAMESPACE sourcemeta PROJECT core NAME yaml
+sourcemeta_googletest(NAMESPACE sourcemeta PROJECT core NAME yaml
FOLDER "Core/YAML"
SOURCES
yaml_parse_test.cc)
diff --git a/vendor/noa/CMakeLists.txt b/vendor/noa/CMakeLists.txt
deleted file mode 100644
index a0955d96a..000000000
--- a/vendor/noa/CMakeLists.txt
+++ /dev/null
@@ -1,82 +0,0 @@
-cmake_minimum_required(VERSION 3.16)
-project(noa VERSION 0.0.0 LANGUAGES CXX
- DESCRIPTION "A set of re-usable and opinionated utilities for Sourcemeta projects")
-list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
-include(noa)
-
-# Options
-option(NOA_HASH "Build the Noa Hash library" ON)
-option(NOA_FLAT_MAP "Build the Noa Flat Map library" ON)
-option(NOA_GOOGLETEST "Build the Google Test library" ON)
-option(NOA_GOOGLEBENCHMARK "Build the Google Benchmark library" ON)
-option(NOA_TESTS "Build the Noa tests" OFF)
-option(NOA_INSTALL "Install the Noa library" ON)
-option(NOA_ADDRESS_SANITIZER "Build Noa with an address sanitizer" OFF)
-option(NOA_UNDEFINED_SANITIZER "Build Noa with an undefined behavior sanitizer" OFF)
-
-if(NOA_INSTALL)
- include(GNUInstallDirs)
- include(CMakePackageConfigHelpers)
- configure_package_config_file(
- config.cmake.in
- "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
- INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
- write_basic_package_version_file(
- "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake"
- COMPATIBILITY SameMajorVersion)
- install(FILES
- "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake"
- "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
- DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
- COMPONENT sourcemeta_noa_dev)
-endif()
-
-if(NOA_HASH)
- add_subdirectory(src/hash)
-endif()
-
-if(NOA_FLAT_MAP)
- add_subdirectory(src/flat_map)
-endif()
-
-if(NOA_GOOGLETEST)
- find_package(GoogleTest REQUIRED)
-endif()
-
-if(NOA_ADDRESS_SANITIZER)
- noa_sanitizer(TYPE address)
-elseif(NOA_UNDEFINED_SANITIZER)
- noa_sanitizer(TYPE undefined)
-endif()
-
-if(PROJECT_IS_TOP_LEVEL)
- noa_target_clang_format(SOURCES
- src/*.h src/*.cc
- test/*.h test/*.cc)
- noa_target_clang_tidy(SOURCES
- src/*.h src/*.cc)
-endif()
-
-if(NOA_TESTS AND NOA_GOOGLETEST)
- enable_testing()
-
- if(NOA_HASH)
- add_subdirectory(test/hash)
- endif()
-
- if(NOA_FLAT_MAP)
- add_subdirectory(test/flat_map)
- endif()
-
- if(PROJECT_IS_TOP_LEVEL)
- # Otherwise we need the child project to link
- # against the sanitizers too.
- if(NOT NOA_ADDRESS_SANITIZER AND NOT NOA_UNDEFINED_SANITIZER)
- add_subdirectory(test/packaging)
- endif()
- endif()
-endif()
-
-if(NOA_GOOGLEBENCHMARK)
- find_package(GoogleBenchmark REQUIRED)
-endif()
diff --git a/vendor/noa/LICENSE b/vendor/noa/LICENSE
deleted file mode 100644
index 9348973bd..000000000
--- a/vendor/noa/LICENSE
+++ /dev/null
@@ -1,12 +0,0 @@
-This software is dual-licensed: you can redistribute it and/or modify it under
-the terms of the GNU Affero General Public License as published by the Free
-Software Foundation, either version 3 of the License, or (at your option) any
-later version. For the terms of this license, see
-.
-
-You are free to use this software under the terms of the GNU Affero General
-Public License WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-Alternatively, you can use this software under a commercial license, as set out
-in .
diff --git a/vendor/noa/cmake/FindGoogleBenchmark.cmake b/vendor/noa/cmake/FindGoogleBenchmark.cmake
deleted file mode 100644
index da442f63e..000000000
--- a/vendor/noa/cmake/FindGoogleBenchmark.cmake
+++ /dev/null
@@ -1,5 +0,0 @@
-if(NOT Benchmark_FOUND)
- set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Enable testing of the benchmark library.")
- add_subdirectory("${PROJECT_SOURCE_DIR}/vendor/googlebenchmark")
- set(Benchmark_FOUND ON)
-endif()
diff --git a/vendor/noa/cmake/FindGoogleTest.cmake b/vendor/noa/cmake/FindGoogleTest.cmake
deleted file mode 100644
index 18eb1184e..000000000
--- a/vendor/noa/cmake/FindGoogleTest.cmake
+++ /dev/null
@@ -1,6 +0,0 @@
-if(NOT GoogleTest_FOUND)
- set(BUILD_GMOCK ON CACHE BOOL "enable googlemock")
- set(INSTALL_GTEST OFF CACHE BOOL "disable installation")
- add_subdirectory("${PROJECT_SOURCE_DIR}/vendor/googletest")
- set(GoogleTest_FOUND ON)
-endif()
diff --git a/vendor/noa/cmake/noa.cmake b/vendor/noa/cmake/noa.cmake
deleted file mode 100644
index a2c4717fa..000000000
--- a/vendor/noa/cmake/noa.cmake
+++ /dev/null
@@ -1,16 +0,0 @@
-set(NOA_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/noa")
-include("${NOA_DIRECTORY}/shim.cmake")
-include("${NOA_DIRECTORY}/variables.cmake")
-include("${NOA_DIRECTORY}/defaults.cmake")
-include("${NOA_DIRECTORY}/compiler/sanitizer.cmake")
-include("${NOA_DIRECTORY}/compiler/options.cmake")
-include("${NOA_DIRECTORY}/options/enum.cmake")
-include("${NOA_DIRECTORY}/commands/copy-file.cmake")
-include("${NOA_DIRECTORY}/targets/library.cmake")
-include("${NOA_DIRECTORY}/targets/executable.cmake")
-include("${NOA_DIRECTORY}/targets/clang-format.cmake")
-include("${NOA_DIRECTORY}/targets/clang-tidy.cmake")
-include("${NOA_DIRECTORY}/targets/shellcheck.cmake")
-include("${NOA_DIRECTORY}/targets/doxygen.cmake")
-include("${NOA_DIRECTORY}/targets/googletest.cmake")
-include("${NOA_DIRECTORY}/targets/googlebenchmark.cmake")
diff --git a/vendor/noa/cmake/noa/commands/copy-file.cmake b/vendor/noa/cmake/noa/commands/copy-file.cmake
deleted file mode 100644
index bed4cb82c..000000000
--- a/vendor/noa/cmake/noa/commands/copy-file.cmake
+++ /dev/null
@@ -1,17 +0,0 @@
-function(noa_command_copy_file)
- cmake_parse_arguments(NOA_COMMAND_COPY_FILE "" "FROM;TO" "" ${ARGN})
-
- if(NOT NOA_COMMAND_COPY_FILE_FROM)
- message(FATAL_ERROR "You must pass the file to copy using the FROM option")
- endif()
- if(NOT NOA_COMMAND_COPY_FILE_TO)
- message(FATAL_ERROR "You must pass the destination to copy to using the TO option")
- endif()
-
- add_custom_command(
- OUTPUT "${NOA_COMMAND_COPY_FILE_TO}"
- COMMAND "${CMAKE_COMMAND}" -E copy "${NOA_COMMAND_COPY_FILE_FROM}" "${NOA_COMMAND_COPY_FILE_TO}"
- MAIN_DEPENDENCY "${NOA_COMMAND_COPY_FILE_FROM}"
- DEPENDS "${NOA_COMMAND_COPY_FILE_FROM}"
- COMMENT "Copying ${NOA_COMMAND_COPY_FILE_FROM} ot ${NOA_COMMAND_COPY_FILE_TO}")
-endfunction()
diff --git a/vendor/noa/cmake/noa/options/enum.cmake b/vendor/noa/cmake/noa/options/enum.cmake
deleted file mode 100644
index b75eb2a99..000000000
--- a/vendor/noa/cmake/noa/options/enum.cmake
+++ /dev/null
@@ -1,32 +0,0 @@
-function(noa_option_enum)
- cmake_parse_arguments(NOA_OPTION_ENUM "" "NAME;DEFAULT;DESCRIPTION" "CHOICES" ${ARGN})
-
- if(NOT NOA_OPTION_ENUM_NAME)
- message(FATAL_ERROR "You must pass the option name as NAME")
- endif()
- if(NOT NOA_OPTION_ENUM_DEFAULT)
- message(FATAL_ERROR "You must pass the option default value as DEFAULT")
- endif()
- if(NOT "${NOA_OPTION_ENUM_DEFAULT}" IN_LIST NOA_OPTION_ENUM_CHOICES)
- message(FATAL_ERROR "Default value of ${NOA_OPTION_ENUM_NAME} must be one of these: ${NOA_OPTION_ENUM_CHOICES}")
- endif()
- if(NOT NOA_OPTION_ENUM_DESCRIPTION)
- message(FATAL_ERROR "You must pass the option description as DESCRIPTION")
- endif()
- if(NOT NOA_OPTION_ENUM_CHOICES)
- message(FATAL_ERROR "You must pass the option enum choices as CHOICES")
- endif()
-
- # Declare the option
- set("${NOA_OPTION_ENUM_NAME}" "${NOA_OPTION_ENUM_DEFAULT}"
- CACHE STRING "${NOA_OPTION_ENUM_DESCRIPTION}")
-
- # Display a nice set of options in `cmake-gui`
- set_property(CACHE "${NOA_OPTION_ENUM_NAME}"
- PROPERTY STRINGS ${NOA_OPTION_ENUM_CHOICES})
-
- # Perform validation
- if(NOT "${${NOA_OPTION_ENUM_NAME}}" IN_LIST NOA_OPTION_ENUM_CHOICES)
- message(FATAL_ERROR "Value of ${NOA_OPTION_ENUM_NAME} must be one of these: ${NOA_OPTION_ENUM_CHOICES}")
- endif()
-endfunction()
diff --git a/vendor/noa/cmake/noa/targets/executable.cmake b/vendor/noa/cmake/noa/targets/executable.cmake
deleted file mode 100644
index 97a49fae3..000000000
--- a/vendor/noa/cmake/noa/targets/executable.cmake
+++ /dev/null
@@ -1,35 +0,0 @@
-function(noa_executable)
- cmake_parse_arguments(NOA_EXECUTABLE ""
- "NAMESPACE;PROJECT;NAME;FOLDER;VARIANT;OUTPUT" "SOURCES" ${ARGN})
-
- if(NOT NOA_EXECUTABLE_PROJECT)
- message(FATAL_ERROR "You must pass the project name using the PROJECT option")
- endif()
- if(NOT NOA_EXECUTABLE_NAME)
- message(FATAL_ERROR "You must pass the executable name using the NAME option")
- endif()
- if(NOT NOA_EXECUTABLE_FOLDER)
- message(FATAL_ERROR "You must pass the folder name using the FOLDER option")
- endif()
- if(NOT NOA_EXECUTABLE_SOURCES)
- message(FATAL_ERROR "You must pass the sources list using the SOURCES option")
- endif()
-
- if(NOA_EXECUTABLE_NAMESPACE)
- set(TARGET_NAME "${NOA_EXECUTABLE_NAMESPACE}_${NOA_EXECUTABLE_PROJECT}_${NOA_EXECUTABLE_NAME}")
- else()
- set(TARGET_NAME "${NOA_EXECUTABLE_PROJECT}_${NOA_EXECUTABLE_NAME}")
- endif()
-
- if(NOA_EXECUTABLE_VARIANT)
- set(TARGET_NAME "${TARGET_NAME}_${NOA_EXECUTABLE_VARIANT}")
- endif()
-
- if(NOA_EXECUTABLE_OUTPUT)
- set("${NOA_EXECUTABLE_OUTPUT}" "${TARGET_NAME}" PARENT_SCOPE)
- endif()
-
- add_executable("${TARGET_NAME}" ${NOA_EXECUTABLE_SOURCES})
- noa_add_default_options(PRIVATE ${TARGET_NAME})
- set_target_properties("${TARGET_NAME}" PROPERTIES FOLDER "${NOA_EXECUTABLE_FOLDER}")
-endfunction()
diff --git a/vendor/noa/cmake/noa/targets/googlebenchmark.cmake b/vendor/noa/cmake/noa/targets/googlebenchmark.cmake
deleted file mode 100644
index f7068346a..000000000
--- a/vendor/noa/cmake/noa/targets/googlebenchmark.cmake
+++ /dev/null
@@ -1,26 +0,0 @@
-function(noa_googlebenchmark)
- cmake_parse_arguments(NOA_GOOGLEBENCHMARK ""
- "NAMESPACE;PROJECT;FOLDER" "SOURCES" ${ARGN})
-
- if(NOT NOA_GOOGLEBENCHMARK_PROJECT)
- message(FATAL_ERROR "You must pass the project name using the PROJECT option")
- endif()
- if(NOT NOA_GOOGLEBENCHMARK_FOLDER)
- message(FATAL_ERROR "You must pass the folder name using the FOLDER option")
- endif()
- if(NOT NOA_GOOGLEBENCHMARK_SOURCES)
- message(FATAL_ERROR "You must pass the sources list using the SOURCES option")
- endif()
-
- if(NOA_GOOGLEBENCHMARK_NAMESPACE)
- set(TARGET_NAME "${NOA_GOOGLEBENCHMARK_NAMESPACE}_${NOA_GOOGLEBENCHMARK_PROJECT}_benchmark")
- else()
- set(TARGET_NAME "${NOA_GOOGLEBENCHMARK_PROJECT}_benchmark")
- endif()
-
- add_executable("${TARGET_NAME}" ${NOA_GOOGLEBENCHMARK_SOURCES})
- noa_add_default_options(PRIVATE ${TARGET_NAME})
- set_target_properties("${TARGET_NAME}" PROPERTIES FOLDER "${NOA_GOOGLEBENCHMARK_FOLDER}")
- target_link_libraries("${TARGET_NAME}" PRIVATE benchmark::benchmark)
- target_link_libraries("${TARGET_NAME}" PRIVATE benchmark::benchmark_main)
-endfunction()
diff --git a/vendor/noa/cmake/noa/targets/googletest.cmake b/vendor/noa/cmake/noa/targets/googletest.cmake
deleted file mode 100644
index ee8482b92..000000000
--- a/vendor/noa/cmake/noa/targets/googletest.cmake
+++ /dev/null
@@ -1,24 +0,0 @@
-function(noa_googletest)
- cmake_parse_arguments(NOA_GOOGLETEST ""
- "NAMESPACE;PROJECT;NAME;FOLDER;VARIANT" "SOURCES" ${ARGN})
-
- if(NOA_GOOGLETEST_VARIANT)
- set(TARGET_VARIANT "${NOA_GOOGLETEST_VARIANT}_unit")
- else()
- set(TARGET_VARIANT "unit")
- endif()
-
- noa_executable(
- NAMESPACE "${NOA_GOOGLETEST_NAMESPACE}"
- PROJECT "${NOA_GOOGLETEST_PROJECT}"
- NAME "${NOA_GOOGLETEST_NAME}"
- FOLDER "${NOA_GOOGLETEST_FOLDER}"
- VARIANT "${TARGET_VARIANT}"
- SOURCES "${NOA_GOOGLETEST_SOURCES}"
- OUTPUT TARGET_NAME)
-
- target_link_libraries("${TARGET_NAME}"
- PRIVATE GTest::gtest GTest::gmock GTest::gtest_main)
- add_test(NAME "${NOA_GOOGLETEST_PROJECT}.${NOA_GOOGLETEST_NAME}"
- COMMAND "${TARGET_NAME}" --gtest_brief=1)
-endfunction()
diff --git a/vendor/noa/config.cmake.in b/vendor/noa/config.cmake.in
deleted file mode 100644
index 2f56dfc49..000000000
--- a/vendor/noa/config.cmake.in
+++ /dev/null
@@ -1,23 +0,0 @@
-@PACKAGE_INIT@
-
-# Support both casing styles
-list(APPEND NOA_COMPONENTS ${Noa_FIND_COMPONENTS})
-list(APPEND NOA_COMPONENTS ${noa_FIND_COMPONENTS})
-if(NOT NOA_COMPONENTS)
- list(APPEND NOA_COMPONENTS hash)
- list(APPEND NOA_COMPONENTS flat_map)
-endif()
-
-include(CMakeFindDependencyMacro)
-
-foreach(component ${NOA_COMPONENTS})
- if(component STREQUAL "hash")
- include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_noa_hash.cmake")
- elseif(component STREQUAL "flat_map")
- include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_noa_flat_map.cmake")
- else()
- message(FATAL_ERROR "Unknown Noa component: ${component}")
- endif()
-endforeach()
-
-check_required_components("@PROJECT_NAME@")
diff --git a/vendor/noa/src/flat_map/CMakeLists.txt b/vendor/noa/src/flat_map/CMakeLists.txt
deleted file mode 100644
index 82cb687ae..000000000
--- a/vendor/noa/src/flat_map/CMakeLists.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-noa_library(NAMESPACE sourcemeta PROJECT noa NAME flat_map FOLDER "Noa/Flat Map")
-
-if(NOA_INSTALL)
- noa_library_install(NAMESPACE sourcemeta PROJECT noa NAME flat_map)
-endif()
diff --git a/vendor/noa/src/flat_map/include/sourcemeta/noa/flat_map.h b/vendor/noa/src/flat_map/include/sourcemeta/noa/flat_map.h
deleted file mode 100644
index 5df7a2855..000000000
--- a/vendor/noa/src/flat_map/include/sourcemeta/noa/flat_map.h
+++ /dev/null
@@ -1,297 +0,0 @@
-#ifndef SOURCEMETA_NOA_FLAT_MAP_H_
-#define SOURCEMETA_NOA_FLAT_MAP_H_
-
-#include // std::swap
-#include // assert
-#include // std::initializer_list
-#include // std::advance
-#include // std::pair, std::move
-#include // std::vector
-
-/// @defgroup flat_map Flat Map
-
-namespace sourcemeta::noa {
-
-// TODO: Allow passing custom allocators
-/// @ingroup flat_map
-template class FlatMap {
-public:
- FlatMap() = default;
-
- using key_type = Key;
- using mapped_type = Value;
- using hash_type = typename Hash::hash_type;
- using value_type = std::pair;
-
- struct Entry {
- key_type first;
- mapped_type second;
- hash_type hash;
- };
-
- using underlying_type = std::vector;
- using size_type = typename underlying_type::size_type;
- using difference_type = typename underlying_type::difference_type;
- using allocator_type = typename underlying_type::allocator_type;
- using reference = typename underlying_type::reference;
- using const_reference = typename underlying_type::const_reference;
- using pointer = typename underlying_type::pointer;
- using const_pointer = typename underlying_type::const_pointer;
- using const_iterator = typename underlying_type::const_iterator;
-
- FlatMap(std::initializer_list entries) {
- this->data.reserve(entries.size());
- for (auto &&entry : entries) {
- this->assign(std::move(entry.first), std::move(entry.second));
- }
- }
-
- auto begin() const noexcept -> const_iterator { return this->data.begin(); }
- auto end() const noexcept -> const_iterator { return this->data.end(); }
- auto cbegin() const noexcept -> const_iterator { return this->data.cbegin(); }
- auto cend() const noexcept -> const_iterator { return this->data.cend(); }
-
- inline auto hash(const key_type &key) const noexcept -> hash_type {
- return this->hasher(key);
- }
-
- auto assign(key_type &&key, mapped_type &&value) -> hash_type {
- const auto key_hash{this->hash(key)};
-
- if (this->hasher.is_perfect(key_hash)) {
- for (auto &entry : this->data) {
- if (entry.hash == key_hash) {
- entry.second = std::move(value);
- return key_hash;
- }
- }
- } else {
- for (auto &entry : this->data) {
- if (entry.hash == key_hash && entry.first == key) {
- entry.second = std::move(value);
- return key_hash;
- }
- }
- }
-
- this->data.push_back({std::move(key), std::move(value), key_hash});
- return key_hash;
- }
-
- auto assign(const key_type &key, const mapped_type &value) -> hash_type {
- const auto key_hash{this->hash(key)};
-
- if (this->hasher.is_perfect(key_hash)) {
- for (auto &entry : this->data) {
- if (entry.hash == key_hash) {
- entry.second = value;
- return key_hash;
- }
- }
- } else {
- for (auto &entry : this->data) {
- if (entry.hash == key_hash && entry.first == key) {
- entry.second = value;
- return key_hash;
- }
- }
- }
-
- this->data.push_back({key, value, key_hash});
- return key_hash;
- }
-
- // As a performance optimisation if the hash is known
- inline auto find(const key_type &key, const hash_type key_hash) const
- -> const_iterator {
- assert(this->hash(key) == key_hash);
-
- // Move the perfect hash condition out of the loop for extra performance
- if (this->hasher.is_perfect(key_hash)) {
- for (size_type index = 0; index < this->data.size(); index++) {
- if (this->data[index].hash == key_hash) {
- auto iterator{this->cbegin()};
- std::advance(iterator, index);
- return iterator;
- }
- }
- } else {
- for (size_type index = 0; index < this->data.size(); index++) {
- if (this->data[index].hash == key_hash &&
- this->data[index].first == key) {
- auto iterator{this->cbegin()};
- std::advance(iterator, index);
- return iterator;
- }
- }
- }
-
- return this->cend();
- }
-
- inline auto try_at(const key_type &key, const hash_type key_hash) const
- -> const mapped_type * {
- assert(this->hash(key) == key_hash);
-
- // Move the perfect hash condition out of the loop for extra performance
- if (this->hasher.is_perfect(key_hash)) {
- for (size_type index = 0; index < this->data.size(); index++) {
- if (this->data[index].hash == key_hash) {
- return &this->data[index].second;
- }
- }
- } else {
- for (size_type index = 0; index < this->data.size(); index++) {
- if (this->data[index].hash == key_hash &&
- this->data[index].first == key) {
- return &this->data[index].second;
- }
- }
- }
-
- return nullptr;
- }
-
- // As a performance optimisation if the hash is known
- auto contains(const key_type &key, const hash_type key_hash) const -> bool {
- assert(this->hash(key) == key_hash);
-
- // Move the perfect hash condition out of the loop for extra performance
- if (this->hasher.is_perfect(key_hash)) {
- for (const auto &entry : this->data) {
- if (entry.hash == key_hash) {
- return true;
- }
- }
- } else {
- for (const auto &entry : this->data) {
- if (entry.hash == key_hash && entry.first == key) {
- return true;
- }
- }
- }
-
- return false;
- }
-
- // As a performance optimisation if the hash is known
-
- inline auto at(const key_type &key, const hash_type key_hash) const
- -> const mapped_type & {
- assert(this->hash(key) == key_hash);
-
- // Move the perfect hash condition out of the loop for extra performance
- if (this->hasher.is_perfect(key_hash)) {
- for (const auto &entry : this->data) {
- if (entry.hash == key_hash) {
- return entry.second;
- }
- }
- } else {
- for (const auto &entry : this->data) {
- if (entry.hash == key_hash && entry.first == key) {
- return entry.second;
- }
- }
- }
-
-// See https://en.cppreference.com/w/cpp/utility/unreachable
-#if defined(_MSC_VER) && !defined(__clang__)
- __assume(false);
-#else
- __builtin_unreachable();
-#endif
- }
-
- inline auto at(const key_type &key, const hash_type key_hash)
- -> mapped_type & {
- assert(this->hash(key) == key_hash);
-
- // Move the perfect hash condition out of the loop for extra performance
- if (this->hasher.is_perfect(key_hash)) {
- for (auto &entry : this->data) {
- if (entry.hash == key_hash) {
- return entry.second;
- }
- }
- } else {
- for (auto &entry : this->data) {
- if (entry.hash == key_hash && entry.first == key) {
- return entry.second;
- }
- }
- }
-
-// See https://en.cppreference.com/w/cpp/utility/unreachable
-#if defined(_MSC_VER) && !defined(__clang__)
- __assume(false);
-#else
- __builtin_unreachable();
-#endif
- }
-
- inline auto at(const size_type index) const noexcept -> const Entry & {
- return this->data[index];
- }
-
- auto erase(const key_type &key, const hash_type key_hash) -> size_type {
- const auto current_size{this->size()};
-
- if (this->hasher.is_perfect(key_hash)) {
- for (auto &entry : this->data) {
- if (entry.hash == key_hash) {
- std::swap(entry, this->data.back());
- this->data.pop_back();
- return current_size - 1;
- }
- }
- } else {
- for (auto &entry : this->data) {
- if (entry.hash == key_hash && entry.first == key) {
- std::swap(entry, this->data.back());
- this->data.pop_back();
- return current_size - 1;
- }
- }
- }
-
- return current_size;
- }
-
- inline auto erase(const key_type &key) -> size_type {
- return this->erase(key, this->hash(key));
- }
-
- inline auto size() const noexcept -> size_type { return this->data.size(); }
-
- inline auto empty() const noexcept -> bool { return this->data.empty(); }
-
- inline auto clear() noexcept -> void { this->data.clear(); }
-
- auto operator!=(const FlatMap &other) const -> bool = default;
-
- auto operator==(const FlatMap &other) const -> bool {
- if (this->size() != other.size()) {
- return false;
- }
-
- for (const auto &entry : this->data) {
- const auto *result{other.try_at(entry.first, entry.hash)};
- if (!result) {
- return false;
- } else if (*result != entry.second) {
- return false;
- }
- }
-
- return true;
- }
-
-private:
- underlying_type data;
- Hash hasher;
-};
-
-} // namespace sourcemeta::noa
-
-#endif
diff --git a/vendor/noa/src/hash/CMakeLists.txt b/vendor/noa/src/hash/CMakeLists.txt
deleted file mode 100644
index 3ea7ba243..000000000
--- a/vendor/noa/src/hash/CMakeLists.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-noa_library(NAMESPACE sourcemeta PROJECT noa NAME hash FOLDER "Noa/Hash")
-
-if(NOA_INSTALL)
- noa_library_install(NAMESPACE sourcemeta PROJECT noa NAME hash)
-endif()
diff --git a/vendor/noa/src/hash/include/sourcemeta/noa/hash.h b/vendor/noa/src/hash/include/sourcemeta/noa/hash.h
deleted file mode 100644
index a5f2ee334..000000000
--- a/vendor/noa/src/hash/include/sourcemeta/noa/hash.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef SOURCEMETA_NOA_HASH_H_
-#define SOURCEMETA_NOA_HASH_H_
-
-/// @defgroup hash Hash
-
-namespace sourcemeta::noa {
-
-// @ingroup hash
-template struct StandardHash {
- using hash_type = std::size_t;
- inline auto operator()(const T &value) const -> hash_type {
- return this->hasher(value);
- }
-
- inline auto is_perfect(const hash_type &) const noexcept -> bool {
- return false;
- }
-
-private:
- std::hash hasher;
-};
-
-} // namespace sourcemeta::noa
-
-#endif
diff --git a/vendor/noa/vendor/googlebenchmark/CMakeLists.txt b/vendor/noa/vendor/googlebenchmark/CMakeLists.txt
deleted file mode 100644
index 216c1c921..000000000
--- a/vendor/noa/vendor/googlebenchmark/CMakeLists.txt
+++ /dev/null
@@ -1,351 +0,0 @@
-# Require CMake 3.10. If available, use the policies up to CMake 3.22.
-cmake_minimum_required (VERSION 3.10...3.22)
-
-project (benchmark VERSION 1.8.5 LANGUAGES CXX)
-
-option(BENCHMARK_ENABLE_TESTING "Enable testing of the benchmark library." ON)
-option(BENCHMARK_ENABLE_EXCEPTIONS "Enable the use of exceptions in the benchmark library." ON)
-option(BENCHMARK_ENABLE_LTO "Enable link time optimisation of the benchmark library." OFF)
-option(BENCHMARK_USE_LIBCXX "Build and test using libc++ as the standard library." OFF)
-option(BENCHMARK_ENABLE_WERROR "Build Release candidates with -Werror." ON)
-option(BENCHMARK_FORCE_WERROR "Build Release candidates with -Werror regardless of compiler issues." OFF)
-
-if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "PGI")
- # PGC++ maybe reporting false positives.
- set(BENCHMARK_ENABLE_WERROR OFF)
-endif()
-if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "NVHPC")
- set(BENCHMARK_ENABLE_WERROR OFF)
-endif()
-if(BENCHMARK_FORCE_WERROR)
- set(BENCHMARK_ENABLE_WERROR ON)
-endif(BENCHMARK_FORCE_WERROR)
-
-if(NOT (MSVC OR CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC"))
- option(BENCHMARK_BUILD_32_BITS "Build a 32 bit version of the library." OFF)
-else()
- set(BENCHMARK_BUILD_32_BITS OFF CACHE BOOL "Build a 32 bit version of the library - unsupported when using MSVC)" FORCE)
-endif()
-option(BENCHMARK_ENABLE_INSTALL "Enable installation of benchmark. (Projects embedding benchmark may want to turn this OFF.)" ON)
-option(BENCHMARK_ENABLE_DOXYGEN "Build documentation with Doxygen." OFF)
-option(BENCHMARK_INSTALL_DOCS "Enable installation of documentation." ON)
-
-# Allow unmet dependencies to be met using CMake's ExternalProject mechanics, which
-# may require downloading the source code.
-option(BENCHMARK_DOWNLOAD_DEPENDENCIES "Allow the downloading and in-tree building of unmet dependencies" OFF)
-
-# This option can be used to disable building and running unit tests which depend on gtest
-# in cases where it is not possible to build or find a valid version of gtest.
-option(BENCHMARK_ENABLE_GTEST_TESTS "Enable building the unit tests which depend on gtest" ON)
-option(BENCHMARK_USE_BUNDLED_GTEST "Use bundled GoogleTest. If disabled, the find_package(GTest) will be used." ON)
-
-option(BENCHMARK_ENABLE_LIBPFM "Enable performance counters provided by libpfm" OFF)
-
-# Export only public symbols
-set(CMAKE_CXX_VISIBILITY_PRESET hidden)
-set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
-
-if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
- # As of CMake 3.18, CMAKE_SYSTEM_PROCESSOR is not set properly for MSVC and
- # cross-compilation (e.g. Host=x86_64, target=aarch64) requires using the
- # undocumented, but working variable.
- # See https://gitlab.kitware.com/cmake/cmake/-/issues/15170
- set(CMAKE_SYSTEM_PROCESSOR ${MSVC_CXX_ARCHITECTURE_ID})
- if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "ARM")
- set(CMAKE_CROSSCOMPILING TRUE)
- endif()
-endif()
-
-set(ENABLE_ASSEMBLY_TESTS_DEFAULT OFF)
-function(should_enable_assembly_tests)
- if(CMAKE_BUILD_TYPE)
- string(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_LOWER)
- if (${CMAKE_BUILD_TYPE_LOWER} MATCHES "coverage")
- # FIXME: The --coverage flag needs to be removed when building assembly
- # tests for this to work.
- return()
- endif()
- endif()
- if (MSVC OR CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")
- return()
- elseif(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
- return()
- elseif(NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
- # FIXME: Make these work on 32 bit builds
- return()
- elseif(BENCHMARK_BUILD_32_BITS)
- # FIXME: Make these work on 32 bit builds
- return()
- endif()
- find_program(LLVM_FILECHECK_EXE FileCheck)
- if (LLVM_FILECHECK_EXE)
- set(LLVM_FILECHECK_EXE "${LLVM_FILECHECK_EXE}" CACHE PATH "llvm filecheck" FORCE)
- message(STATUS "LLVM FileCheck Found: ${LLVM_FILECHECK_EXE}")
- else()
- message(STATUS "Failed to find LLVM FileCheck")
- return()
- endif()
- set(ENABLE_ASSEMBLY_TESTS_DEFAULT ON PARENT_SCOPE)
-endfunction()
-should_enable_assembly_tests()
-
-# This option disables the building and running of the assembly verification tests
-option(BENCHMARK_ENABLE_ASSEMBLY_TESTS "Enable building and running the assembly tests"
- ${ENABLE_ASSEMBLY_TESTS_DEFAULT})
-
-# Make sure we can import out CMake functions
-list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules")
-list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
-
-
-# Read the git tags to determine the project version
-include(GetGitVersion)
-get_git_version(GIT_VERSION)
-
-# If no git version can be determined, use the version
-# from the project() command
-if ("${GIT_VERSION}" STREQUAL "v0.0.0")
- set(VERSION "v${benchmark_VERSION}")
-else()
- set(VERSION "${GIT_VERSION}")
-endif()
-
-# Normalize version: drop "v" prefix, replace first "-" with ".",
-# drop everything after second "-" (including said "-").
-string(STRIP ${VERSION} VERSION)
-if(VERSION MATCHES v[^-]*-)
- string(REGEX REPLACE "v([^-]*)-([0-9]+)-.*" "\\1.\\2" NORMALIZED_VERSION ${VERSION})
-else()
- string(REGEX REPLACE "v(.*)" "\\1" NORMALIZED_VERSION ${VERSION})
-endif()
-
-# Tell the user what versions we are using
-message(STATUS "Google Benchmark version: ${VERSION}, normalized to ${NORMALIZED_VERSION}")
-
-# The version of the libraries
-set(GENERIC_LIB_VERSION ${NORMALIZED_VERSION})
-string(SUBSTRING ${NORMALIZED_VERSION} 0 1 GENERIC_LIB_SOVERSION)
-
-# Import our CMake modules
-include(AddCXXCompilerFlag)
-include(CheckCXXCompilerFlag)
-include(CheckLibraryExists)
-include(CXXFeatureCheck)
-
-check_library_exists(rt shm_open "" HAVE_LIB_RT)
-
-if (BENCHMARK_BUILD_32_BITS)
- add_required_cxx_compiler_flag(-m32)
-endif()
-
-set(BENCHMARK_CXX_STANDARD 14)
-
-set(CMAKE_CXX_STANDARD ${BENCHMARK_CXX_STANDARD})
-set(CMAKE_CXX_STANDARD_REQUIRED YES)
-set(CMAKE_CXX_EXTENSIONS OFF)
-
-if (MSVC)
- # Turn compiler warnings up to 11
- string(REGEX REPLACE "[-/]W[1-4]" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
- add_definitions(-D_CRT_SECURE_NO_WARNINGS)
-
- if (NOT BENCHMARK_ENABLE_EXCEPTIONS)
- add_cxx_compiler_flag(-EHs-)
- add_cxx_compiler_flag(-EHa-)
- add_definitions(-D_HAS_EXCEPTIONS=0)
- endif()
- # Link time optimisation
- if (BENCHMARK_ENABLE_LTO)
- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GL")
- set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} /LTCG")
- set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /LTCG")
- set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG")
-
- set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /GL")
- string(REGEX REPLACE "[-/]INCREMENTAL" "/INCREMENTAL:NO" CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO}")
- set(CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO} /LTCG")
- string(REGEX REPLACE "[-/]INCREMENTAL" "/INCREMENTAL:NO" CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO}")
- set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO} /LTCG")
- string(REGEX REPLACE "[-/]INCREMENTAL" "/INCREMENTAL:NO" CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO}")
- set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} /LTCG")
-
- set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /GL")
- set(CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL "${CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL} /LTCG")
- set(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "${CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL} /LTCG")
- set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} /LTCG")
- endif()
-else()
- # Turn on Large-file Support
- add_definitions(-D_FILE_OFFSET_BITS=64)
- add_definitions(-D_LARGEFILE64_SOURCE)
- add_definitions(-D_LARGEFILE_SOURCE)
- # Turn compiler warnings up to 11
- add_cxx_compiler_flag(-Wall)
- add_cxx_compiler_flag(-Wextra)
- add_cxx_compiler_flag(-Wshadow)
- add_cxx_compiler_flag(-Wfloat-equal)
- add_cxx_compiler_flag(-Wold-style-cast)
- add_cxx_compiler_flag(-Wconversion)
- if(BENCHMARK_ENABLE_WERROR)
- add_cxx_compiler_flag(-Werror)
- endif()
- if (NOT BENCHMARK_ENABLE_TESTING)
- # Disable warning when compiling tests as gtest does not use 'override'.
- add_cxx_compiler_flag(-Wsuggest-override)
- endif()
- add_cxx_compiler_flag(-pedantic)
- add_cxx_compiler_flag(-pedantic-errors)
- add_cxx_compiler_flag(-Wshorten-64-to-32)
- add_cxx_compiler_flag(-fstrict-aliasing)
- # Disable warnings regarding deprecated parts of the library while building
- # and testing those parts of the library.
- add_cxx_compiler_flag(-Wno-deprecated-declarations)
- if (CMAKE_CXX_COMPILER_ID STREQUAL "Intel" OR CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM")
- # Intel silently ignores '-Wno-deprecated-declarations',
- # warning no. 1786 must be explicitly disabled.
- # See #631 for rationale.
- add_cxx_compiler_flag(-wd1786)
- add_cxx_compiler_flag(-fno-finite-math-only)
- endif()
- # Disable deprecation warnings for release builds (when -Werror is enabled).
- if(BENCHMARK_ENABLE_WERROR)
- add_cxx_compiler_flag(-Wno-deprecated)
- endif()
- if (NOT BENCHMARK_ENABLE_EXCEPTIONS)
- add_cxx_compiler_flag(-fno-exceptions)
- endif()
-
- if (HAVE_CXX_FLAG_FSTRICT_ALIASING)
- if (NOT CMAKE_CXX_COMPILER_ID STREQUAL "Intel" AND NOT CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM") #ICC17u2: Many false positives for Wstrict-aliasing
- add_cxx_compiler_flag(-Wstrict-aliasing)
- endif()
- endif()
- # ICC17u2: overloaded virtual function "benchmark::Fixture::SetUp" is only partially overridden
- # (because of deprecated overload)
- add_cxx_compiler_flag(-wd654)
- add_cxx_compiler_flag(-Wthread-safety)
- if (HAVE_CXX_FLAG_WTHREAD_SAFETY)
- cxx_feature_check(THREAD_SAFETY_ATTRIBUTES "-DINCLUDE_DIRECTORIES=${PROJECT_SOURCE_DIR}/include")
- endif()
-
- # On most UNIX like platforms g++ and clang++ define _GNU_SOURCE as a
- # predefined macro, which turns on all of the wonderful libc extensions.
- # However g++ doesn't do this in Cygwin so we have to define it ourselves
- # since we depend on GNU/POSIX/BSD extensions.
- if (CYGWIN)
- add_definitions(-D_GNU_SOURCE=1)
- endif()
-
- if (QNXNTO)
- add_definitions(-D_QNX_SOURCE)
- endif()
-
- # Link time optimisation
- if (BENCHMARK_ENABLE_LTO)
- add_cxx_compiler_flag(-flto)
- add_cxx_compiler_flag(-Wno-lto-type-mismatch)
- if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
- find_program(GCC_AR gcc-ar)
- if (GCC_AR)
- set(CMAKE_AR ${GCC_AR})
- endif()
- find_program(GCC_RANLIB gcc-ranlib)
- if (GCC_RANLIB)
- set(CMAKE_RANLIB ${GCC_RANLIB})
- endif()
- elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
- include(llvm-toolchain)
- endif()
- endif()
-
- # Coverage build type
- set(BENCHMARK_CXX_FLAGS_COVERAGE "${CMAKE_CXX_FLAGS_DEBUG}"
- CACHE STRING "Flags used by the C++ compiler during coverage builds."
- FORCE)
- set(BENCHMARK_EXE_LINKER_FLAGS_COVERAGE "${CMAKE_EXE_LINKER_FLAGS_DEBUG}"
- CACHE STRING "Flags used for linking binaries during coverage builds."
- FORCE)
- set(BENCHMARK_SHARED_LINKER_FLAGS_COVERAGE "${CMAKE_SHARED_LINKER_FLAGS_DEBUG}"
- CACHE STRING "Flags used by the shared libraries linker during coverage builds."
- FORCE)
- mark_as_advanced(
- BENCHMARK_CXX_FLAGS_COVERAGE
- BENCHMARK_EXE_LINKER_FLAGS_COVERAGE
- BENCHMARK_SHARED_LINKER_FLAGS_COVERAGE)
- set(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING
- "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel Coverage.")
- add_cxx_compiler_flag(--coverage COVERAGE)
-endif()
-
-if (BENCHMARK_USE_LIBCXX)
- if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
- add_cxx_compiler_flag(-stdlib=libc++)
- elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR
- "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel" OR
- "${CMAKE_CXX_COMPILER_ID}" STREQUAL "IntelLLVM")
- add_cxx_compiler_flag(-nostdinc++)
- message(WARNING "libc++ header path must be manually specified using CMAKE_CXX_FLAGS")
- # Adding -nodefaultlibs directly to CMAKE__LINKER_FLAGS will break
- # configuration checks such as 'find_package(Threads)'
- list(APPEND BENCHMARK_CXX_LINKER_FLAGS -nodefaultlibs)
- # -lc++ cannot be added directly to CMAKE__LINKER_FLAGS because
- # linker flags appear before all linker inputs and -lc++ must appear after.
- list(APPEND BENCHMARK_CXX_LIBRARIES c++)
- else()
- message(FATAL_ERROR "-DBENCHMARK_USE_LIBCXX:BOOL=ON is not supported for compiler")
- endif()
-endif(BENCHMARK_USE_LIBCXX)
-
-set(EXTRA_CXX_FLAGS "")
-if (WIN32 AND "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
- # Clang on Windows fails to compile the regex feature check under C++11
- set(EXTRA_CXX_FLAGS "-DCMAKE_CXX_STANDARD=14")
-endif()
-
-# C++ feature checks
-# Determine the correct regular expression engine to use
-cxx_feature_check(STD_REGEX ${EXTRA_CXX_FLAGS})
-cxx_feature_check(GNU_POSIX_REGEX ${EXTRA_CXX_FLAGS})
-cxx_feature_check(POSIX_REGEX ${EXTRA_CXX_FLAGS})
-if(NOT HAVE_STD_REGEX AND NOT HAVE_GNU_POSIX_REGEX AND NOT HAVE_POSIX_REGEX)
- message(FATAL_ERROR "Failed to determine the source files for the regular expression backend")
-endif()
-if (NOT BENCHMARK_ENABLE_EXCEPTIONS AND HAVE_STD_REGEX
- AND NOT HAVE_GNU_POSIX_REGEX AND NOT HAVE_POSIX_REGEX)
- message(WARNING "Using std::regex with exceptions disabled is not fully supported")
-endif()
-
-cxx_feature_check(STEADY_CLOCK)
-# Ensure we have pthreads
-set(THREADS_PREFER_PTHREAD_FLAG ON)
-find_package(Threads REQUIRED)
-cxx_feature_check(PTHREAD_AFFINITY)
-
-if (BENCHMARK_ENABLE_LIBPFM)
- find_package(PFM REQUIRED)
-endif()
-
-# Set up directories
-include_directories(${PROJECT_SOURCE_DIR}/include)
-
-# Build the targets
-add_subdirectory(src)
-
-if (BENCHMARK_ENABLE_TESTING)
- enable_testing()
- if (BENCHMARK_ENABLE_GTEST_TESTS AND
- NOT (TARGET gtest AND TARGET gtest_main AND
- TARGET gmock AND TARGET gmock_main))
- if (BENCHMARK_USE_BUNDLED_GTEST)
- include(GoogleTest)
- else()
- find_package(GTest CONFIG REQUIRED)
- add_library(gtest ALIAS GTest::gtest)
- add_library(gtest_main ALIAS GTest::gtest_main)
- add_library(gmock ALIAS GTest::gmock)
- add_library(gmock_main ALIAS GTest::gmock_main)
- endif()
- endif()
- add_subdirectory(test)
-endif()
diff --git a/vendor/noa/vendor/googlebenchmark/LICENSE b/vendor/noa/vendor/googlebenchmark/LICENSE
deleted file mode 100644
index d64569567..000000000
--- a/vendor/noa/vendor/googlebenchmark/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/vendor/noa/vendor/googlebenchmark/cmake/AddCXXCompilerFlag.cmake b/vendor/noa/vendor/googlebenchmark/cmake/AddCXXCompilerFlag.cmake
deleted file mode 100644
index 858589e97..000000000
--- a/vendor/noa/vendor/googlebenchmark/cmake/AddCXXCompilerFlag.cmake
+++ /dev/null
@@ -1,78 +0,0 @@
-# - Adds a compiler flag if it is supported by the compiler
-#
-# This function checks that the supplied compiler flag is supported and then
-# adds it to the corresponding compiler flags
-#
-# add_cxx_compiler_flag( [])
-#
-# - Example
-#
-# include(AddCXXCompilerFlag)
-# add_cxx_compiler_flag(-Wall)
-# add_cxx_compiler_flag(-no-strict-aliasing RELEASE)
-# Requires CMake 2.6+
-
-if(__add_cxx_compiler_flag)
- return()
-endif()
-set(__add_cxx_compiler_flag INCLUDED)
-
-include(CheckCXXCompilerFlag)
-
-function(mangle_compiler_flag FLAG OUTPUT)
- string(TOUPPER "HAVE_CXX_FLAG_${FLAG}" SANITIZED_FLAG)
- string(REPLACE "+" "X" SANITIZED_FLAG ${SANITIZED_FLAG})
- string(REGEX REPLACE "[^A-Za-z_0-9]" "_" SANITIZED_FLAG ${SANITIZED_FLAG})
- string(REGEX REPLACE "_+" "_" SANITIZED_FLAG ${SANITIZED_FLAG})
- set(${OUTPUT} "${SANITIZED_FLAG}" PARENT_SCOPE)
-endfunction(mangle_compiler_flag)
-
-function(add_cxx_compiler_flag FLAG)
- mangle_compiler_flag("${FLAG}" MANGLED_FLAG)
- set(OLD_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
- set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${FLAG}")
- check_cxx_compiler_flag("${FLAG}" ${MANGLED_FLAG})
- set(CMAKE_REQUIRED_FLAGS "${OLD_CMAKE_REQUIRED_FLAGS}")
- if(${MANGLED_FLAG})
- if(ARGC GREATER 1)
- set(VARIANT ${ARGV1})
- string(TOUPPER "_${VARIANT}" VARIANT)
- else()
- set(VARIANT "")
- endif()
- set(CMAKE_CXX_FLAGS${VARIANT} "${CMAKE_CXX_FLAGS${VARIANT}} ${BENCHMARK_CXX_FLAGS${VARIANT}} ${FLAG}" PARENT_SCOPE)
- endif()
-endfunction()
-
-function(add_required_cxx_compiler_flag FLAG)
- mangle_compiler_flag("${FLAG}" MANGLED_FLAG)
- set(OLD_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
- set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${FLAG}")
- check_cxx_compiler_flag("${FLAG}" ${MANGLED_FLAG})
- set(CMAKE_REQUIRED_FLAGS "${OLD_CMAKE_REQUIRED_FLAGS}")
- if(${MANGLED_FLAG})
- if(ARGC GREATER 1)
- set(VARIANT ${ARGV1})
- string(TOUPPER "_${VARIANT}" VARIANT)
- else()
- set(VARIANT "")
- endif()
- set(CMAKE_CXX_FLAGS${VARIANT} "${CMAKE_CXX_FLAGS${VARIANT}} ${FLAG}" PARENT_SCOPE)
- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${FLAG}" PARENT_SCOPE)
- set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${FLAG}" PARENT_SCOPE)
- set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${FLAG}" PARENT_SCOPE)
- set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${FLAG}" PARENT_SCOPE)
- else()
- message(FATAL_ERROR "Required flag '${FLAG}' is not supported by the compiler")
- endif()
-endfunction()
-
-function(check_cxx_warning_flag FLAG)
- mangle_compiler_flag("${FLAG}" MANGLED_FLAG)
- set(OLD_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
- # Add -Werror to ensure the compiler generates an error if the warning flag
- # doesn't exist.
- set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -Werror ${FLAG}")
- check_cxx_compiler_flag("${FLAG}" ${MANGLED_FLAG})
- set(CMAKE_REQUIRED_FLAGS "${OLD_CMAKE_REQUIRED_FLAGS}")
-endfunction()
diff --git a/vendor/noa/vendor/googlebenchmark/cmake/CXXFeatureCheck.cmake b/vendor/noa/vendor/googlebenchmark/cmake/CXXFeatureCheck.cmake
deleted file mode 100644
index e51482659..000000000
--- a/vendor/noa/vendor/googlebenchmark/cmake/CXXFeatureCheck.cmake
+++ /dev/null
@@ -1,82 +0,0 @@
-# - Compile and run code to check for C++ features
-#
-# This functions compiles a source file under the `cmake` folder
-# and adds the corresponding `HAVE_[FILENAME]` flag to the CMake
-# environment
-#
-# cxx_feature_check( [])
-#
-# - Example
-#
-# include(CXXFeatureCheck)
-# cxx_feature_check(STD_REGEX)
-# Requires CMake 2.8.12+
-
-if(__cxx_feature_check)
- return()
-endif()
-set(__cxx_feature_check INCLUDED)
-
-option(CXXFEATURECHECK_DEBUG OFF)
-
-function(cxx_feature_check FILE)
- string(TOLOWER ${FILE} FILE)
- string(TOUPPER ${FILE} VAR)
- string(TOUPPER "HAVE_${VAR}" FEATURE)
- if (DEFINED HAVE_${VAR})
- set(HAVE_${VAR} 1 PARENT_SCOPE)
- add_definitions(-DHAVE_${VAR})
- return()
- endif()
-
- set(FEATURE_CHECK_CMAKE_FLAGS ${BENCHMARK_CXX_LINKER_FLAGS})
- if (ARGC GREATER 1)
- message(STATUS "Enabling additional flags: ${ARGV1}")
- list(APPEND FEATURE_CHECK_CMAKE_FLAGS ${ARGV1})
- endif()
-
- if (NOT DEFINED COMPILE_${FEATURE})
- if(CMAKE_CROSSCOMPILING)
- message(STATUS "Cross-compiling to test ${FEATURE}")
- try_compile(COMPILE_${FEATURE}
- ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${FILE}.cpp
- CXX_STANDARD 11
- CXX_STANDARD_REQUIRED ON
- CMAKE_FLAGS ${FEATURE_CHECK_CMAKE_FLAGS}
- LINK_LIBRARIES ${BENCHMARK_CXX_LIBRARIES}
- OUTPUT_VARIABLE COMPILE_OUTPUT_VAR)
- if(COMPILE_${FEATURE})
- message(WARNING
- "If you see build failures due to cross compilation, try setting HAVE_${VAR} to 0")
- set(RUN_${FEATURE} 0 CACHE INTERNAL "")
- else()
- set(RUN_${FEATURE} 1 CACHE INTERNAL "")
- endif()
- else()
- message(STATUS "Compiling and running to test ${FEATURE}")
- try_run(RUN_${FEATURE} COMPILE_${FEATURE}
- ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${FILE}.cpp
- CXX_STANDARD 11
- CXX_STANDARD_REQUIRED ON
- CMAKE_FLAGS ${FEATURE_CHECK_CMAKE_FLAGS}
- LINK_LIBRARIES ${BENCHMARK_CXX_LIBRARIES}
- COMPILE_OUTPUT_VARIABLE COMPILE_OUTPUT_VAR)
- endif()
- endif()
-
- if(RUN_${FEATURE} EQUAL 0)
- message(STATUS "Performing Test ${FEATURE} -- success")
- set(HAVE_${VAR} 1 PARENT_SCOPE)
- add_definitions(-DHAVE_${VAR})
- else()
- if(NOT COMPILE_${FEATURE})
- if(CXXFEATURECHECK_DEBUG)
- message(STATUS "Performing Test ${FEATURE} -- failed to compile: ${COMPILE_OUTPUT_VAR}")
- else()
- message(STATUS "Performing Test ${FEATURE} -- failed to compile")
- endif()
- else()
- message(STATUS "Performing Test ${FEATURE} -- compiled but failed to run")
- endif()
- endif()
-endfunction()
diff --git a/vendor/noa/vendor/googlebenchmark/cmake/Config.cmake.in b/vendor/noa/vendor/googlebenchmark/cmake/Config.cmake.in
deleted file mode 100644
index 3659cfa2a..000000000
--- a/vendor/noa/vendor/googlebenchmark/cmake/Config.cmake.in
+++ /dev/null
@@ -1,11 +0,0 @@
-@PACKAGE_INIT@
-
-include (CMakeFindDependencyMacro)
-
-find_dependency (Threads)
-
-if (@BENCHMARK_ENABLE_LIBPFM@)
- find_dependency (PFM)
-endif()
-
-include("${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake")
diff --git a/vendor/noa/vendor/googlebenchmark/cmake/GetGitVersion.cmake b/vendor/noa/vendor/googlebenchmark/cmake/GetGitVersion.cmake
deleted file mode 100644
index b0210103b..000000000
--- a/vendor/noa/vendor/googlebenchmark/cmake/GetGitVersion.cmake
+++ /dev/null
@@ -1,36 +0,0 @@
-# - Returns a version string from Git tags
-#
-# This function inspects the annotated git tags for the project and returns a string
-# into a CMake variable
-#
-# get_git_version()
-#
-# - Example
-#
-# include(GetGitVersion)
-# get_git_version(GIT_VERSION)
-#
-# Requires CMake 2.8.11+
-find_package(Git)
-
-if(__get_git_version)
- return()
-endif()
-set(__get_git_version INCLUDED)
-
-function(get_git_version var)
- if(GIT_EXECUTABLE)
- execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags --match "v[0-9]*.[0-9]*.[0-9]*" --abbrev=8 --dirty
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
- RESULT_VARIABLE status
- OUTPUT_VARIABLE GIT_VERSION
- ERROR_QUIET)
- if(status)
- set(GIT_VERSION "v0.0.0")
- endif()
- else()
- set(GIT_VERSION "v0.0.0")
- endif()
-
- set(${var} ${GIT_VERSION} PARENT_SCOPE)
-endfunction()
diff --git a/vendor/noa/vendor/googlebenchmark/cmake/GoogleTest.cmake b/vendor/noa/vendor/googlebenchmark/cmake/GoogleTest.cmake
deleted file mode 100644
index e66e9d1a2..000000000
--- a/vendor/noa/vendor/googlebenchmark/cmake/GoogleTest.cmake
+++ /dev/null
@@ -1,58 +0,0 @@
-# Download and unpack googletest at configure time
-set(GOOGLETEST_PREFIX "${benchmark_BINARY_DIR}/third_party/googletest")
-configure_file(${benchmark_SOURCE_DIR}/cmake/GoogleTest.cmake.in ${GOOGLETEST_PREFIX}/CMakeLists.txt @ONLY)
-
-set(GOOGLETEST_PATH "${CMAKE_CURRENT_SOURCE_DIR}/googletest" CACHE PATH "") # Mind the quotes
-execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}"
- -DALLOW_DOWNLOADING_GOOGLETEST=${BENCHMARK_DOWNLOAD_DEPENDENCIES} -DGOOGLETEST_PATH:PATH=${GOOGLETEST_PATH} .
- RESULT_VARIABLE result
- WORKING_DIRECTORY ${GOOGLETEST_PREFIX}
-)
-
-if(result)
- message(FATAL_ERROR "CMake step for googletest failed: ${result}")
-endif()
-
-execute_process(
- COMMAND ${CMAKE_COMMAND} --build .
- RESULT_VARIABLE result
- WORKING_DIRECTORY ${GOOGLETEST_PREFIX}
-)
-
-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)
-
-include(${GOOGLETEST_PREFIX}/googletest-paths.cmake)
-
-# Add googletest directly to our build. This defines
-# the gtest and gtest_main targets.
-add_subdirectory(${GOOGLETEST_SOURCE_DIR}
- ${GOOGLETEST_BINARY_DIR}
- EXCLUDE_FROM_ALL)
-
-# googletest doesn't seem to want to stay build warning clean so let's not hurt ourselves.
-if (MSVC)
- target_compile_options(gtest PRIVATE "/wd4244" "/wd4722")
- target_compile_options(gtest_main PRIVATE "/wd4244" "/wd4722")
- target_compile_options(gmock PRIVATE "/wd4244" "/wd4722")
- target_compile_options(gmock_main PRIVATE "/wd4244" "/wd4722")
-else()
- target_compile_options(gtest PRIVATE "-w")
- target_compile_options(gtest_main PRIVATE "-w")
- target_compile_options(gmock PRIVATE "-w")
- target_compile_options(gmock_main PRIVATE "-w")
-endif()
-
-if(NOT DEFINED GTEST_COMPILE_COMMANDS)
- set(GTEST_COMPILE_COMMANDS ON)
-endif()
-
-set_target_properties(gtest PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $ EXPORT_COMPILE_COMMANDS ${GTEST_COMPILE_COMMANDS})
-set_target_properties(gtest_main PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $ EXPORT_COMPILE_COMMANDS ${GTEST_COMPILE_COMMANDS})
-set_target_properties(gmock PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $ EXPORT_COMPILE_COMMANDS ${GTEST_COMPILE_COMMANDS})
-set_target_properties(gmock_main PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $ EXPORT_COMPILE_COMMANDS ${GTEST_COMPILE_COMMANDS})
diff --git a/vendor/noa/vendor/googlebenchmark/cmake/GoogleTest.cmake.in b/vendor/noa/vendor/googlebenchmark/cmake/GoogleTest.cmake.in
deleted file mode 100644
index ce653ac37..000000000
--- a/vendor/noa/vendor/googlebenchmark/cmake/GoogleTest.cmake.in
+++ /dev/null
@@ -1,59 +0,0 @@
-cmake_minimum_required(VERSION 2.8.12)
-
-project(googletest-download NONE)
-
-# Enable ExternalProject CMake module
-include(ExternalProject)
-
-option(ALLOW_DOWNLOADING_GOOGLETEST "If googletest src tree is not found in location specified by GOOGLETEST_PATH, do fetch the archive from internet" OFF)
-set(GOOGLETEST_PATH "/usr/src/googletest" CACHE PATH
- "Path to the googletest root tree. Should contain googletest and googlemock subdirs. And CMakeLists.txt in root, and in both of these subdirs")
-
-# Download and install GoogleTest
-
-message(STATUS "Looking for Google Test sources")
-message(STATUS "Looking for Google Test sources in ${GOOGLETEST_PATH}")
-if(EXISTS "${GOOGLETEST_PATH}" AND IS_DIRECTORY "${GOOGLETEST_PATH}" AND EXISTS "${GOOGLETEST_PATH}/CMakeLists.txt" AND
- EXISTS "${GOOGLETEST_PATH}/googletest" AND IS_DIRECTORY "${GOOGLETEST_PATH}/googletest" AND EXISTS "${GOOGLETEST_PATH}/googletest/CMakeLists.txt" AND
- EXISTS "${GOOGLETEST_PATH}/googlemock" AND IS_DIRECTORY "${GOOGLETEST_PATH}/googlemock" AND EXISTS "${GOOGLETEST_PATH}/googlemock/CMakeLists.txt")
- message(STATUS "Found Google Test in ${GOOGLETEST_PATH}")
-
- ExternalProject_Add(
- googletest
- PREFIX "${CMAKE_BINARY_DIR}"
- DOWNLOAD_DIR "${CMAKE_BINARY_DIR}/download"
- SOURCE_DIR "${GOOGLETEST_PATH}" # use existing src dir.
- BINARY_DIR "${CMAKE_BINARY_DIR}/build"
- CONFIGURE_COMMAND ""
- BUILD_COMMAND ""
- INSTALL_COMMAND ""
- TEST_COMMAND ""
- )
-else()
- if(NOT ALLOW_DOWNLOADING_GOOGLETEST)
- message(SEND_ERROR "Did not find Google Test sources! Either pass correct path in GOOGLETEST_PATH, or enable BENCHMARK_DOWNLOAD_DEPENDENCIES, or disable BENCHMARK_USE_BUNDLED_GTEST, or disable BENCHMARK_ENABLE_GTEST_TESTS / BENCHMARK_ENABLE_TESTING.")
- return()
- else()
- message(WARNING "Did not find Google Test sources! Fetching from web...")
- ExternalProject_Add(
- googletest
- GIT_REPOSITORY https://github.com/google/googletest.git
- GIT_TAG "release-1.11.0"
- PREFIX "${CMAKE_BINARY_DIR}"
- STAMP_DIR "${CMAKE_BINARY_DIR}/stamp"
- DOWNLOAD_DIR "${CMAKE_BINARY_DIR}/download"
- SOURCE_DIR "${CMAKE_BINARY_DIR}/src"
- BINARY_DIR "${CMAKE_BINARY_DIR}/build"
- CONFIGURE_COMMAND ""
- BUILD_COMMAND ""
- INSTALL_COMMAND ""
- TEST_COMMAND ""
- )
- endif()
-endif()
-
-ExternalProject_Get_Property(googletest SOURCE_DIR BINARY_DIR)
-file(WRITE googletest-paths.cmake
-"set(GOOGLETEST_SOURCE_DIR \"${SOURCE_DIR}\")
-set(GOOGLETEST_BINARY_DIR \"${BINARY_DIR}\")
-")
diff --git a/vendor/noa/vendor/googlebenchmark/cmake/Modules/FindLLVMAr.cmake b/vendor/noa/vendor/googlebenchmark/cmake/Modules/FindLLVMAr.cmake
deleted file mode 100644
index 23469813c..000000000
--- a/vendor/noa/vendor/googlebenchmark/cmake/Modules/FindLLVMAr.cmake
+++ /dev/null
@@ -1,16 +0,0 @@
-include(FeatureSummary)
-
-find_program(LLVMAR_EXECUTABLE
- NAMES llvm-ar
- DOC "The llvm-ar executable"
- )
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(LLVMAr
- DEFAULT_MSG
- LLVMAR_EXECUTABLE)
-
-SET_PACKAGE_PROPERTIES(LLVMAr PROPERTIES
- URL https://llvm.org/docs/CommandGuide/llvm-ar.html
- DESCRIPTION "create, modify, and extract from archives"
-)
diff --git a/vendor/noa/vendor/googlebenchmark/cmake/Modules/FindLLVMNm.cmake b/vendor/noa/vendor/googlebenchmark/cmake/Modules/FindLLVMNm.cmake
deleted file mode 100644
index e56430a04..000000000
--- a/vendor/noa/vendor/googlebenchmark/cmake/Modules/FindLLVMNm.cmake
+++ /dev/null
@@ -1,16 +0,0 @@
-include(FeatureSummary)
-
-find_program(LLVMNM_EXECUTABLE
- NAMES llvm-nm
- DOC "The llvm-nm executable"
- )
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(LLVMNm
- DEFAULT_MSG
- LLVMNM_EXECUTABLE)
-
-SET_PACKAGE_PROPERTIES(LLVMNm PROPERTIES
- URL https://llvm.org/docs/CommandGuide/llvm-nm.html
- DESCRIPTION "list LLVM bitcode and object file’s symbol table"
-)
diff --git a/vendor/noa/vendor/googlebenchmark/cmake/Modules/FindLLVMRanLib.cmake b/vendor/noa/vendor/googlebenchmark/cmake/Modules/FindLLVMRanLib.cmake
deleted file mode 100644
index 7b53e1a79..000000000
--- a/vendor/noa/vendor/googlebenchmark/cmake/Modules/FindLLVMRanLib.cmake
+++ /dev/null
@@ -1,15 +0,0 @@
-include(FeatureSummary)
-
-find_program(LLVMRANLIB_EXECUTABLE
- NAMES llvm-ranlib
- DOC "The llvm-ranlib executable"
- )
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(LLVMRanLib
- DEFAULT_MSG
- LLVMRANLIB_EXECUTABLE)
-
-SET_PACKAGE_PROPERTIES(LLVMRanLib PROPERTIES
- DESCRIPTION "generate index for LLVM archive"
-)
diff --git a/vendor/noa/vendor/googlebenchmark/cmake/Modules/FindPFM.cmake b/vendor/noa/vendor/googlebenchmark/cmake/Modules/FindPFM.cmake
deleted file mode 100644
index 4c1ce938f..000000000
--- a/vendor/noa/vendor/googlebenchmark/cmake/Modules/FindPFM.cmake
+++ /dev/null
@@ -1,28 +0,0 @@
-# If successful, the following variables will be defined:
-# PFM_FOUND.
-# PFM_LIBRARIES
-# PFM_INCLUDE_DIRS
-# the following target will be defined:
-# PFM::libpfm
-
-include(FeatureSummary)
-include(FindPackageHandleStandardArgs)
-
-set_package_properties(PFM PROPERTIES
- URL http://perfmon2.sourceforge.net/
- DESCRIPTION "A helper library to develop monitoring tools"
- PURPOSE "Used to program specific performance monitoring events")
-
-find_library(PFM_LIBRARY NAMES pfm)
-find_path(PFM_INCLUDE_DIR NAMES perfmon/pfmlib.h)
-
-find_package_handle_standard_args(PFM REQUIRED_VARS PFM_LIBRARY PFM_INCLUDE_DIR)
-
-if (PFM_FOUND AND NOT TARGET PFM::libpfm)
- add_library(PFM::libpfm UNKNOWN IMPORTED)
- set_target_properties(PFM::libpfm PROPERTIES
- IMPORTED_LOCATION "${PFM_LIBRARY}"
- INTERFACE_INCLUDE_DIRECTORIES "${PFM_INCLUDE_DIR}")
-endif()
-
-mark_as_advanced(PFM_LIBRARY PFM_INCLUDE_DIR)
diff --git a/vendor/noa/vendor/googlebenchmark/cmake/benchmark.pc.in b/vendor/noa/vendor/googlebenchmark/cmake/benchmark.pc.in
deleted file mode 100644
index 043f2fc75..000000000
--- a/vendor/noa/vendor/googlebenchmark/cmake/benchmark.pc.in
+++ /dev/null
@@ -1,12 +0,0 @@
-prefix=@CMAKE_INSTALL_PREFIX@
-exec_prefix=${prefix}
-libdir=@CMAKE_INSTALL_FULL_LIBDIR@
-includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
-
-Name: @PROJECT_NAME@
-Description: Google microbenchmark framework
-Version: @VERSION@
-
-Libs: -L${libdir} -lbenchmark
-Libs.private: -lpthread @BENCHMARK_PRIVATE_LINK_LIBRARIES@
-Cflags: -I${includedir}
diff --git a/vendor/noa/vendor/googlebenchmark/cmake/benchmark_main.pc.in b/vendor/noa/vendor/googlebenchmark/cmake/benchmark_main.pc.in
deleted file mode 100644
index a90f3cd06..000000000
--- a/vendor/noa/vendor/googlebenchmark/cmake/benchmark_main.pc.in
+++ /dev/null
@@ -1,7 +0,0 @@
-libdir=@CMAKE_INSTALL_FULL_LIBDIR@
-
-Name: @PROJECT_NAME@
-Description: Google microbenchmark framework (with main() function)
-Version: @VERSION@
-Requires: benchmark
-Libs: -L${libdir} -lbenchmark_main
diff --git a/vendor/noa/vendor/googlebenchmark/cmake/gnu_posix_regex.cpp b/vendor/noa/vendor/googlebenchmark/cmake/gnu_posix_regex.cpp
deleted file mode 100644
index b5b91cdab..000000000
--- a/vendor/noa/vendor/googlebenchmark/cmake/gnu_posix_regex.cpp
+++ /dev/null
@@ -1,12 +0,0 @@
-#include
-#include
-int main() {
- std::string str = "test0159";
- regex_t re;
- int ec = regcomp(&re, "^[a-z]+[0-9]+$", REG_EXTENDED | REG_NOSUB);
- if (ec != 0) {
- return ec;
- }
- return regexec(&re, str.c_str(), 0, nullptr, 0) ? -1 : 0;
-}
-
diff --git a/vendor/noa/vendor/googlebenchmark/cmake/llvm-toolchain.cmake b/vendor/noa/vendor/googlebenchmark/cmake/llvm-toolchain.cmake
deleted file mode 100644
index fc119e52f..000000000
--- a/vendor/noa/vendor/googlebenchmark/cmake/llvm-toolchain.cmake
+++ /dev/null
@@ -1,8 +0,0 @@
-find_package(LLVMAr REQUIRED)
-set(CMAKE_AR "${LLVMAR_EXECUTABLE}" CACHE FILEPATH "" FORCE)
-
-find_package(LLVMNm REQUIRED)
-set(CMAKE_NM "${LLVMNM_EXECUTABLE}" CACHE FILEPATH "" FORCE)
-
-find_package(LLVMRanLib REQUIRED)
-set(CMAKE_RANLIB "${LLVMRANLIB_EXECUTABLE}" CACHE FILEPATH "" FORCE)
diff --git a/vendor/noa/vendor/googlebenchmark/cmake/posix_regex.cpp b/vendor/noa/vendor/googlebenchmark/cmake/posix_regex.cpp
deleted file mode 100644
index 466dc6256..000000000
--- a/vendor/noa/vendor/googlebenchmark/cmake/posix_regex.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-#include
-#include
-int main() {
- std::string str = "test0159";
- regex_t re;
- int ec = regcomp(&re, "^[a-z]+[0-9]+$", REG_EXTENDED | REG_NOSUB);
- if (ec != 0) {
- return ec;
- }
- int ret = regexec(&re, str.c_str(), 0, nullptr, 0) ? -1 : 0;
- regfree(&re);
- return ret;
-}
-
diff --git a/vendor/noa/vendor/googlebenchmark/cmake/pthread_affinity.cpp b/vendor/noa/vendor/googlebenchmark/cmake/pthread_affinity.cpp
deleted file mode 100644
index 7b143bc02..000000000
--- a/vendor/noa/vendor/googlebenchmark/cmake/pthread_affinity.cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-#include
-int main() {
- cpu_set_t set;
- CPU_ZERO(&set);
- for (int i = 0; i < CPU_SETSIZE; ++i) {
- CPU_SET(i, &set);
- CPU_CLR(i, &set);
- }
- pthread_t self = pthread_self();
- int ret;
- ret = pthread_getaffinity_np(self, sizeof(set), &set);
- if (ret != 0) return ret;
- ret = pthread_setaffinity_np(self, sizeof(set), &set);
- if (ret != 0) return ret;
- return 0;
-}
diff --git a/vendor/noa/vendor/googlebenchmark/cmake/split_list.cmake b/vendor/noa/vendor/googlebenchmark/cmake/split_list.cmake
deleted file mode 100644
index 67aed3fdc..000000000
--- a/vendor/noa/vendor/googlebenchmark/cmake/split_list.cmake
+++ /dev/null
@@ -1,3 +0,0 @@
-macro(split_list listname)
- string(REPLACE ";" " " ${listname} "${${listname}}")
-endmacro()
diff --git a/vendor/noa/vendor/googlebenchmark/cmake/std_regex.cpp b/vendor/noa/vendor/googlebenchmark/cmake/std_regex.cpp
deleted file mode 100644
index 696f2a26b..000000000
--- a/vendor/noa/vendor/googlebenchmark/cmake/std_regex.cpp
+++ /dev/null
@@ -1,10 +0,0 @@
-#include
-#include
-int main() {
- const std::string str = "test0159";
- std::regex re;
- re = std::regex("^[a-z]+[0-9]+$",
- std::regex_constants::extended | std::regex_constants::nosubs);
- return std::regex_search(str, re) ? 0 : -1;
-}
-
diff --git a/vendor/noa/vendor/googlebenchmark/cmake/steady_clock.cpp b/vendor/noa/vendor/googlebenchmark/cmake/steady_clock.cpp
deleted file mode 100644
index 66d50d17e..000000000
--- a/vendor/noa/vendor/googlebenchmark/cmake/steady_clock.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-#include
-
-int main() {
- typedef std::chrono::steady_clock Clock;
- Clock::time_point tp = Clock::now();
- ((void)tp);
-}
diff --git a/vendor/noa/vendor/googlebenchmark/cmake/thread_safety_attributes.cpp b/vendor/noa/vendor/googlebenchmark/cmake/thread_safety_attributes.cpp
deleted file mode 100644
index 46161babd..000000000
--- a/vendor/noa/vendor/googlebenchmark/cmake/thread_safety_attributes.cpp
+++ /dev/null
@@ -1,4 +0,0 @@
-#define HAVE_THREAD_SAFETY_ATTRIBUTES
-#include "../src/mutex.h"
-
-int main() {}
diff --git a/vendor/noa/vendor/googlebenchmark/include/benchmark/benchmark.h b/vendor/noa/vendor/googlebenchmark/include/benchmark/benchmark.h
deleted file mode 100644
index 7dd72e27b..000000000
--- a/vendor/noa/vendor/googlebenchmark/include/benchmark/benchmark.h
+++ /dev/null
@@ -1,2060 +0,0 @@
-// Copyright 2015 Google Inc. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Support for registering benchmarks for functions.
-
-/* Example usage:
-// Define a function that executes the code to be measured a
-// specified number of times:
-static void BM_StringCreation(benchmark::State& state) {
- for (auto _ : state)
- std::string empty_string;
-}
-
-// Register the function as a benchmark
-BENCHMARK(BM_StringCreation);
-
-// Define another benchmark
-static void BM_StringCopy(benchmark::State& state) {
- std::string x = "hello";
- for (auto _ : state)
- std::string copy(x);
-}
-BENCHMARK(BM_StringCopy);
-
-// Augment the main() program to invoke benchmarks if specified
-// via the --benchmark_filter command line flag. E.g.,
-// my_unittest --benchmark_filter=all
-// my_unittest --benchmark_filter=BM_StringCreation
-// my_unittest --benchmark_filter=String
-// my_unittest --benchmark_filter='Copy|Creation'
-int main(int argc, char** argv) {
- benchmark::Initialize(&argc, argv);
- benchmark::RunSpecifiedBenchmarks();
- benchmark::Shutdown();
- return 0;
-}
-
-// Sometimes a family of microbenchmarks can be implemented with
-// just one routine that takes an extra argument to specify which
-// one of the family of benchmarks to run. For example, the following
-// code defines a family of microbenchmarks for measuring the speed
-// of memcpy() calls of different lengths:
-
-static void BM_memcpy(benchmark::State& state) {
- char* src = new char[state.range(0)]; char* dst = new char[state.range(0)];
- memset(src, 'x', state.range(0));
- for (auto _ : state)
- memcpy(dst, src, state.range(0));
- state.SetBytesProcessed(state.iterations() * state.range(0));
- delete[] src; delete[] dst;
-}
-BENCHMARK(BM_memcpy)->Arg(8)->Arg(64)->Arg(512)->Arg(1<<10)->Arg(8<<10);
-
-// The preceding code is quite repetitive, and can be replaced with the
-// following short-hand. The following invocation will pick a few
-// appropriate arguments in the specified range and will generate a
-// microbenchmark for each such argument.
-BENCHMARK(BM_memcpy)->Range(8, 8<<10);
-
-// You might have a microbenchmark that depends on two inputs. For
-// example, the following code defines a family of microbenchmarks for
-// measuring the speed of set insertion.
-static void BM_SetInsert(benchmark::State& state) {
- set data;
- for (auto _ : state) {
- state.PauseTiming();
- data = ConstructRandomSet(state.range(0));
- state.ResumeTiming();
- for (int j = 0; j < state.range(1); ++j)
- data.insert(RandomNumber());
- }
-}
-BENCHMARK(BM_SetInsert)
- ->Args({1<<10, 128})
- ->Args({2<<10, 128})
- ->Args({4<<10, 128})
- ->Args({8<<10, 128})
- ->Args({1<<10, 512})
- ->Args({2<<10, 512})
- ->Args({4<<10, 512})
- ->Args({8<<10, 512});
-
-// The preceding code is quite repetitive, and can be replaced with
-// the following short-hand. The following macro will pick a few
-// appropriate arguments in the product of the two specified ranges
-// and will generate a microbenchmark for each such pair.
-BENCHMARK(BM_SetInsert)->Ranges({{1<<10, 8<<10}, {128, 512}});
-
-// For more complex patterns of inputs, passing a custom function
-// to Apply allows programmatic specification of an
-// arbitrary set of arguments to run the microbenchmark on.
-// The following example enumerates a dense range on
-// one parameter, and a sparse range on the second.
-static void CustomArguments(benchmark::internal::Benchmark* b) {
- for (int i = 0; i <= 10; ++i)
- for (int j = 32; j <= 1024*1024; j *= 8)
- b->Args({i, j});
-}
-BENCHMARK(BM_SetInsert)->Apply(CustomArguments);
-
-// Templated microbenchmarks work the same way:
-// Produce then consume 'size' messages 'iters' times
-// Measures throughput in the absence of multiprogramming.
-template int BM_Sequential(benchmark::State& state) {
- Q q;
- typename Q::value_type v;
- for (auto _ : state) {
- for (int i = state.range(0); i--; )
- q.push(v);
- for (int e = state.range(0); e--; )
- q.Wait(&v);
- }
- // actually messages, not bytes:
- state.SetBytesProcessed(state.iterations() * state.range(0));
-}
-BENCHMARK_TEMPLATE(BM_Sequential, WaitQueue)->Range(1<<0, 1<<10);
-
-Use `Benchmark::MinTime(double t)` to set the minimum time used to run the
-benchmark. This option overrides the `benchmark_min_time` flag.
-
-void BM_test(benchmark::State& state) {
- ... body ...
-}
-BENCHMARK(BM_test)->MinTime(2.0); // Run for at least 2 seconds.
-
-In a multithreaded test, it is guaranteed that none of the threads will start
-until all have reached the loop start, and all will have finished before any
-thread exits the loop body. As such, any global setup or teardown you want to
-do can be wrapped in a check against the thread index:
-
-static void BM_MultiThreaded(benchmark::State& state) {
- if (state.thread_index() == 0) {
- // Setup code here.
- }
- for (auto _ : state) {
- // Run the test as normal.
- }
- if (state.thread_index() == 0) {
- // Teardown code here.
- }
-}
-BENCHMARK(BM_MultiThreaded)->Threads(4);
-
-
-If a benchmark runs a few milliseconds it may be hard to visually compare the
-measured times, since the output data is given in nanoseconds per default. In
-order to manually set the time unit, you can specify it manually:
-
-BENCHMARK(BM_test)->Unit(benchmark::kMillisecond);
-*/
-
-#ifndef BENCHMARK_BENCHMARK_H_
-#define BENCHMARK_BENCHMARK_H_
-
-// The _MSVC_LANG check should detect Visual Studio 2015 Update 3 and newer.
-#if __cplusplus >= 201103L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201103L)
-#define BENCHMARK_HAS_CXX11
-#endif
-
-// This _MSC_VER check should detect VS 2017 v15.3 and newer.
-#if __cplusplus >= 201703L || \
- (defined(_MSC_VER) && _MSC_VER >= 1911 && _MSVC_LANG >= 201703L)
-#define BENCHMARK_HAS_CXX17
-#endif
-
-#include
-
-#include
-#include
-#include
-#include
-#include
-#include