summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/hof/CMakeLists.txt
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 18:24:20 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 18:24:20 +0000
commit483eb2f56657e8e7f419ab1a4fab8dce9ade8609 (patch)
treee5d88d25d870d5dedacb6bbdbe2a966086a0a5cf /src/boost/libs/hof/CMakeLists.txt
parentInitial commit. (diff)
downloadceph-upstream.tar.xz
ceph-upstream.zip
Adding upstream version 14.2.21.upstream/14.2.21upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/boost/libs/hof/CMakeLists.txt')
-rw-r--r--src/boost/libs/hof/CMakeLists.txt159
1 files changed, 159 insertions, 0 deletions
diff --git a/src/boost/libs/hof/CMakeLists.txt b/src/boost/libs/hof/CMakeLists.txt
new file mode 100644
index 00000000..2ba06272
--- /dev/null
+++ b/src/boost/libs/hof/CMakeLists.txt
@@ -0,0 +1,159 @@
+#=============================================================================
+# Copyright (c) 2017 Paul Fultz II
+# CMakeLists.txt
+# Distributed under the Boost Software License, Version 1.0. (See accompanying
+# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+#==============================================================================
+cmake_minimum_required (VERSION 2.8)
+project (boost_hof)
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+
+foreach(level MAJOR MINOR PATCH)
+ file(STRINGS include/boost/hof/version.hpp
+ _define_${level}
+ REGEX "#define BOOST_HOF_${level}_VERSION")
+ string(REGEX MATCH "([0-9]+)" boost_hof_VERSION_${level} "${_define_${level}}")
+endforeach()
+
+include(CheckCXXCompilerFlag)
+enable_language(CXX)
+
+if(NOT CMAKE_CXX_FLAGS MATCHES "-std=")
+
+ if(CMAKE_HOST_APPLE)
+ check_cxx_compiler_flag("-stdlib=libc++" COMPILER_HAS_CXX_FLAG_libcxx)
+ if(COMPILER_HAS_CXX_FLAG_libcxx)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
+ endif()
+ endif()
+
+ set(ENABLE_CXXFLAGS_TO_CHECK
+ -std=gnu++17
+ -std=c++17
+ -std=gnu++1z
+ -std=c++1z
+ -std=gnu++14
+ -std=c++14
+ -std=gnu++1y
+ -std=c++1y
+ -std=gnu++11
+ -std=c++11
+ -std=gnu++0x
+ -std=c++0x)
+
+ foreach(flag ${ENABLE_CXXFLAGS_TO_CHECK})
+ string(REPLACE "-std=" "_" flag_var ${flag})
+ string(REPLACE "+" "x" flag_var ${flag_var})
+ check_cxx_compiler_flag("${flag}" COMPILER_HAS_CXX_FLAG${flag_var})
+ if(COMPILER_HAS_CXX_FLAG${flag_var})
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
+ break()
+ endif()
+ endforeach()
+
+endif()
+
+install (DIRECTORY include/boost DESTINATION include)
+configure_file(boost_hof.pc.in boost_hof.pc)
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/boost_hof.pc DESTINATION lib/pkgconfig)
+
+include(SphinxDoc)
+
+add_sphinx_doc(${CMAKE_CURRENT_SOURCE_DIR}/doc HTML_DIR ${CMAKE_CURRENT_SOURCE_DIR}/doc/html)
+
+include(BCMTest)
+
+include_directories(include)
+
+file(GLOB TESTS test/*.cpp)
+foreach(TEST ${TESTS})
+ get_filename_component(BASE_NAME ${TEST} NAME_WE)
+ bcm_add_test(NAME ${BASE_NAME} SOURCES ${TEST})
+ set_tests_properties(${BASE_NAME} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED")
+endforeach()
+bcm_add_test(NAME static_def SOURCES test/static_def/static_def.cpp test/static_def/static_def2.cpp)
+set_tests_properties(static_def PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED")
+
+file(GLOB FAIL_TESTS test/fail/*.cpp)
+foreach(TEST ${FAIL_TESTS})
+ get_filename_component(BASE_NAME ${TEST} NAME_WE)
+ bcm_add_test(NAME fail-${BASE_NAME} COMPILE_ONLY WILL_FAIL SOURCES ${TEST})
+endforeach()
+
+file(GLOB HEADERS include/boost/hof/*.hpp)
+foreach(HEADER ${HEADERS})
+ get_filename_component(BASE_NAME ${HEADER} NAME_WE)
+ bcm_test_header(NAME ${BASE_NAME} HEADER boost/hof/${BASE_NAME}.hpp STATIC)
+endforeach()
+bcm_test_header(NAME hof HEADER boost/hof.hpp STATIC)
+
+function(extract_doc SOURCE OUTPUTVAR)
+ file(READ ${SOURCE} CONTENT)
+ string(REGEX REPLACE "(\n(/[^/][^/]|//[^/]|[^/][^/][^/])([^\n])*)" "" CONTENT "\n${CONTENT}")
+ string(REPLACE "/// " "" CONTENT "${CONTENT}")
+ set(${OUTPUTVAR} "${CONTENT}" PARENT_SCOPE)
+endfunction()
+
+function(build_example SECTIONCONTENT NAME)
+ string(MD5 MD5_SECTION "${SECTIONCONTENT}")
+ set(TARGET_NAME "example-${NAME}-${MD5_SECTION}")
+ set(CONTENT "")
+ foreach(LINE ${SECTIONCONTENT})
+ if(LINE MATCHES "^ ")
+ string(SUBSTRING ${LINE} "4" "-1" OUTPUT_LINE)
+ list(APPEND CONTENT ${OUTPUT_LINE})
+ endif()
+ endforeach()
+ string(REPLACE ";" "\n" CONTENT "${CONTENT}")
+ string(REPLACE "$$__semicolon__$$" ";" CONTENT "${CONTENT}")
+ if(NOT CONTENT MATCHES "int main")
+ string(APPEND CONTENT "int main() {}")
+ endif()
+ message(STATUS "Adding example: ${TARGET_NAME}")
+ bcm_add_test(NAME ${TARGET_NAME} CONTENT "${CONTENT}\n")
+endfunction()
+
+function(extract_example SOURCE)
+ extract_doc(${SOURCE} CONTENT)
+ string(REPLACE ";" "$$__semicolon__$$" CONTENT "${CONTENT}")
+ string(REPLACE "\n" ";" CONTENT "${CONTENT}")
+
+ get_filename_component(BASE_NAME ${SOURCE} NAME_WE)
+
+ set(SECTION "")
+ set(PREVLINE "")
+ set(APPEND_SECTION Off)
+ foreach(LINE ${CONTENT})
+ if(APPEND_SECTION)
+ if((LINE MATCHES "^---") OR (LINE MATCHES "^==="))
+ build_example("${SECTION}" ${BASE_NAME})
+ set(APPEND_SECTION Off)
+ set(SECTION "")
+ elseif(NOT PREVLINE MATCHES "^---")
+ list(APPEND SECTION ${PREVLINE})
+ endif()
+ else()
+ if((LINE MATCHES "^---") AND (PREVLINE MATCHES "^Example"))
+ set(APPEND_SECTION One)
+ endif()
+ endif()
+ set(PREVLINE "${LINE}")
+ endforeach()
+ list(APPEND SECTION ${PREVLINE})
+ if(APPEND_SECTION)
+ build_example("${SECTION}" ${BASE_NAME})
+ endif()
+endfunction()
+
+set(BUILD_EXAMPLES off CACHE BOOL "Set this to build the examples")
+
+if (BUILD_EXAMPLES)
+ file(GLOB EXAMPLES example/*.cpp)
+ foreach(EXAMPLE ${EXAMPLES})
+ get_filename_component(BASE_NAME ${EXAMPLE} NAME_WE)
+ bcm_add_test(NAME example-${BASE_NAME} SOURCES ${EXAMPLE})
+ endforeach()
+ foreach(HEADER ${HEADERS})
+ extract_example(${HEADER})
+ endforeach()
+endif()