diff --git a/CMake/FindBoost_preprocessor.cmake b/CMake/FindBoost_preprocessor.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..76090e60e497243ca7c90112b235a5084f93ea26
--- /dev/null
+++ b/CMake/FindBoost_preprocessor.cmake
@@ -0,0 +1,40 @@
+################################################################################
+# Copyright 2018-2021, Barcelona Supercomputing Center (BSC), Spain #
+# Copyright 2015-2021, Johannes Gutenberg Universitaet Mainz, Germany #
+# #
+# This software was partially supported by the #
+# EC H2020 funded project NEXTGenIO (Project ID: 671951, www.nextgenio.eu). #
+# #
+# This software was partially supported by the #
+# ADA-FS project under the SPPEXA project funded by the DFG. #
+# #
+# This file is part of GekkoFS. #
+# #
+# GekkoFS is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation, either version 3 of the License, or #
+# (at your option) any later version. #
+# #
+# GekkoFS is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with GekkoFS. If not, see . #
+# #
+# SPDX-License-Identifier: GPL-3.0-or-later #
+################################################################################
+
+find_path(BOOST_PREPROCESSOR_INCLUDE_DIR
+ NAMES boost/preprocessor.hpp
+)
+
+set(BOOST_PREPROCESSOR_INCLUDE_DIRS ${BOOST_PREPROCESSOR_INCLUDE_DIR})
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Boost_preprocessor DEFAULT_MSG BOOST_PREPROCESSOR_INCLUDE_DIRS)
+
+mark_as_advanced(
+ BOOST_PREPROCESSOR_INCLUDE_DIR
+)
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3388b9015ad7cdfc7e4e6dc85d796e44c0c0d5bf..f8f871e9d9856b4f791dcaa6de83a535e027cc3e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -128,11 +128,6 @@ find_package(Abt REQUIRED)
find_package(Margo REQUIRED)
find_package(Syscall_intercept REQUIRED)
-# boost dependencies
-find_package(Boost 1.53 REQUIRED
- COMPONENTS
- program_options
- )
find_package(Threads REQUIRED)
@@ -223,6 +218,12 @@ set_target_properties(spdlog
PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/external"
)
+add_library(CLI11 INTERFACE)
+# we cannot use target_include_directories with CMake < 3.11
+set_target_properties(CLI11
+ PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/external"
+ )
add_subdirectory(external/fmt)
set_property(TARGET fmt PROPERTY POSITION_INDEPENDENT_CODE ON)
@@ -260,6 +261,8 @@ include(CMakeDependentOption)
cmake_dependent_option(GKFS_INSTALL_TESTS "Install GekkoFS self tests" OFF "GKFS_BUILD_TESTS" OFF)
if (GKFS_BUILD_TESTS)
+ # Boost preprocessor header-only is supplied by the Mercury installation
+ find_package(Boost_preprocessor REQUIRED)
# check symbols exists doesn't work for statx. This is a workaround
check_cxx_source_compiles("
#include
diff --git a/external/CLI11/CLI11.hpp b/external/CLI11/CLI11.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..dcb57c6c6cafe03f7e5687e78e6cfba4f5a9ff8c
--- /dev/null
+++ b/external/CLI11/CLI11.hpp
@@ -0,0 +1,9066 @@
+// CLI11: Version 2.1.2
+// Originally designed by Henry Schreiner
+// https://github.com/CLIUtils/CLI11
+//
+// This is a standalone header file generated by MakeSingleHeader.py in CLI11/scripts
+// from: v2.1.2
+//
+// CLI11 2.1.2 Copyright (c) 2017-2021 University of Cincinnati, developed by Henry
+// Schreiner under NSF AWARD 1414736. All rights reserved.
+//
+// Redistribution and use in source and binary forms of CLI11, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+// 3. Neither the name of the copyright holder nor the names of its contributors
+// may be used to endorse or promote products derived from this software without
+// specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#pragma once
+
+// Standard combined includes:
+#include
+#include
+#include
+#include
+#include
+#include