From d10fcdad29067a473b7acbb755a46b4a0d4b3326 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dietmar=20K=C3=BChl?= Date: Thu, 19 Sep 2024 21:58:54 +0100 Subject: [PATCH] brought the cmake files more into line with beman --- CMakeLists.txt | 20 ++++++++---- Makefile | 1 + examples/CMakeLists.txt | 25 +++----------- src/CMakeLists.txt | 6 ---- src/beman/CMakeLists.txt | 6 ---- src/beman/net29/CMakeLists.txt | 49 ++++++++++++++-------------- src/beman/net29/tests/CMakeLists.txt | 10 +++--- 7 files changed, 48 insertions(+), 69 deletions(-) delete mode 100644 src/CMakeLists.txt delete mode 100644 src/beman/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 457b51b..307c998 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,28 +1,34 @@ -# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception # cmake-format: off # /CMakeLists.txt -*-makefile-*- # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception # cmake-format: on cmake_minimum_required(VERSION 3.23) - project(beman_net29 VERSION 0.0.0 LANGUAGES CXX) - -enable_testing() +set(TARGET_NAME net29) +set(TARGET_PREFIX beman.${TARGET_NAME}) +set(TARGET_LIBRARY beman_${TARGET_NAME}) +set(TARGET_ALIAS beman::${TARGET_NAME}) +set(TARGETS_EXPORT_NAME ${CMAKE_PROJECT_NAME}Targets) set(CMAKE_CXX_STANDARD 23) -set(TARGETS_EXPORT_NAME ${CMAKE_PROJECT_NAME}Targets) include(FetchContent) FetchContent_Declare( execution26 # for local development, use SOURCE_DIR /execution26 GIT_REPOSITORY https://github.com/beman-project/execution26 - GIT_TAG 22affb6 + GIT_TAG 81c58fe ) FetchContent_MakeAvailable(execution26) -add_subdirectory(src) +include(CTest) +if(BUILD_TESTING) + add_subdirectory(src/beman/${TARGET_NAME}/tests) + enable_testing() +endif() + +add_subdirectory(src/beman/net29) add_subdirectory(examples) include(GNUInstallDirs) diff --git a/Makefile b/Makefile index 43506f2..5f6fcd9 100644 --- a/Makefile +++ b/Makefile @@ -89,6 +89,7 @@ todo: bin/mk-todo.py clean: + $(RM) -r $(BUILD) $(RM) mkerr olderr *~ distclean: clean diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 2e889f0..cc0922e 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -3,15 +3,6 @@ # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception # cmake-format: on -set(BEMAN_EXECUTION26_LIBRARY beman_execution26) -set(BEMAN_NET29_LIBRARY beman_net29) -set(LIBRARIES - ${BEMAN_NET29_LIBRARY} - ${BEMAN_EXECUTION26_LIBRARY} -) - -include(GNUInstallDirs) - set(EXAMPLES http-server empty @@ -21,17 +12,9 @@ set(EXAMPLES cppcon-2024 ) -set(DATA - index.html - favicon.ico -) - -foreach(FILE ${DATA}) - file(GENERATE OUTPUT data/${FILE} INPUT data/${FILE}) -endforeach() - foreach(EXAMPLE ${EXAMPLES}) - add_executable(${EXAMPLE}) - target_sources(${EXAMPLE} PRIVATE ${EXAMPLE}.cpp) - target_link_libraries(${EXAMPLE} PRIVATE ${LIBRARIES}) + set(EXAMPLE_TARGET ${TARGET_PREFIX}.examples.${EXAMPLE}) + add_executable(${EXAMPLE_TARGET}) + target_sources(${EXAMPLE_TARGET} PRIVATE ${EXAMPLE}.cpp) + target_link_libraries(${EXAMPLE_TARGET} PRIVATE ${TARGET_LIBRARY}) endforeach() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt deleted file mode 100644 index 74b27de..0000000 --- a/src/CMakeLists.txt +++ /dev/null @@ -1,6 +0,0 @@ -# cmake-format: off -# src/CMakeLists.txt -*-makefile-*- -# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -# cmake-format: on - -add_subdirectory(beman) diff --git a/src/beman/CMakeLists.txt b/src/beman/CMakeLists.txt deleted file mode 100644 index 06ada11..0000000 --- a/src/beman/CMakeLists.txt +++ /dev/null @@ -1,6 +0,0 @@ -# cmake-format: off -# src/beman/CMakeLists.txt -*-makefile-*- -# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -# cmake-format: on - -add_subdirectory(net29) diff --git a/src/beman/net29/CMakeLists.txt b/src/beman/net29/CMakeLists.txt index 1e0b7a7..1efbcb0 100644 --- a/src/beman/net29/CMakeLists.txt +++ b/src/beman/net29/CMakeLists.txt @@ -3,10 +3,8 @@ # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception # cmake-format: on -set(TARGET_LIBRARY beman_net29) - -add_subdirectory(tests) add_library(${TARGET_LIBRARY} STATIC) +add_library(${TARGET_ALIAS} ALIAS ${TARGET_LIBRARY}) target_sources(${TARGET_LIBRARY} PRIVATE @@ -15,32 +13,32 @@ target_sources(${TARGET_LIBRARY} FILE_SET ${TARGET_LIBRARY}_public_headers TYPE HEADERS BASE_DIRS ${PROJECT_SOURCE_DIR}/include FILES - ${PROJECT_SOURCE_DIR}/include/beman/net29/net.hpp + ${PROJECT_SOURCE_DIR}/include/beman/${TARGET_NAME}/net.hpp PUBLIC FILE_SET ${TARGET_LIBRARY}_detail_headers TYPE HEADERS BASE_DIRS ${PROJECT_SOURCE_DIR}/include FILES - ${PROJECT_SOURCE_DIR}/include/beman/net29/detail/basic_socket.hpp - ${PROJECT_SOURCE_DIR}/include/beman/net29/detail/basic_socket_acceptor.hpp - ${PROJECT_SOURCE_DIR}/include/beman/net29/detail/basic_stream_socket.hpp - ${PROJECT_SOURCE_DIR}/include/beman/net29/detail/buffer.hpp - ${PROJECT_SOURCE_DIR}/include/beman/net29/detail/container.hpp - ${PROJECT_SOURCE_DIR}/include/beman/net29/detail/context_base.hpp - ${PROJECT_SOURCE_DIR}/include/beman/net29/detail/endpoint.hpp - ${PROJECT_SOURCE_DIR}/include/beman/net29/detail/execution.hpp - ${PROJECT_SOURCE_DIR}/include/beman/net29/detail/internet.hpp - ${PROJECT_SOURCE_DIR}/include/beman/net29/detail/io_base.hpp - ${PROJECT_SOURCE_DIR}/include/beman/net29/detail/io_context.hpp - ${PROJECT_SOURCE_DIR}/include/beman/net29/detail/io_context_scheduler.hpp - ${PROJECT_SOURCE_DIR}/include/beman/net29/detail/netfwd.hpp - ${PROJECT_SOURCE_DIR}/include/beman/net29/detail/operations.hpp - ${PROJECT_SOURCE_DIR}/include/beman/net29/detail/poll_context.hpp - ${PROJECT_SOURCE_DIR}/include/beman/net29/detail/sender.hpp - ${PROJECT_SOURCE_DIR}/include/beman/net29/detail/socket_base.hpp - ${PROJECT_SOURCE_DIR}/include/beman/net29/detail/socket_category.hpp - ${PROJECT_SOURCE_DIR}/include/beman/net29/detail/sorted_list.hpp - ${PROJECT_SOURCE_DIR}/include/beman/net29/detail/stop_token.hpp - ${PROJECT_SOURCE_DIR}/include/beman/net29/detail/timer.hpp + ${PROJECT_SOURCE_DIR}/include/beman/${TARGET_NAME}/detail/basic_socket.hpp + ${PROJECT_SOURCE_DIR}/include/beman/${TARGET_NAME}/detail/basic_socket_acceptor.hpp + ${PROJECT_SOURCE_DIR}/include/beman/${TARGET_NAME}/detail/basic_stream_socket.hpp + ${PROJECT_SOURCE_DIR}/include/beman/${TARGET_NAME}/detail/buffer.hpp + ${PROJECT_SOURCE_DIR}/include/beman/${TARGET_NAME}/detail/container.hpp + ${PROJECT_SOURCE_DIR}/include/beman/${TARGET_NAME}/detail/context_base.hpp + ${PROJECT_SOURCE_DIR}/include/beman/${TARGET_NAME}/detail/endpoint.hpp + ${PROJECT_SOURCE_DIR}/include/beman/${TARGET_NAME}/detail/execution.hpp + ${PROJECT_SOURCE_DIR}/include/beman/${TARGET_NAME}/detail/internet.hpp + ${PROJECT_SOURCE_DIR}/include/beman/${TARGET_NAME}/detail/io_base.hpp + ${PROJECT_SOURCE_DIR}/include/beman/${TARGET_NAME}/detail/io_context.hpp + ${PROJECT_SOURCE_DIR}/include/beman/${TARGET_NAME}/detail/io_context_scheduler.hpp + ${PROJECT_SOURCE_DIR}/include/beman/${TARGET_NAME}/detail/netfwd.hpp + ${PROJECT_SOURCE_DIR}/include/beman/${TARGET_NAME}/detail/operations.hpp + ${PROJECT_SOURCE_DIR}/include/beman/${TARGET_NAME}/detail/poll_context.hpp + ${PROJECT_SOURCE_DIR}/include/beman/${TARGET_NAME}/detail/sender.hpp + ${PROJECT_SOURCE_DIR}/include/beman/${TARGET_NAME}/detail/socket_base.hpp + ${PROJECT_SOURCE_DIR}/include/beman/${TARGET_NAME}/detail/socket_category.hpp + ${PROJECT_SOURCE_DIR}/include/beman/${TARGET_NAME}/detail/sorted_list.hpp + ${PROJECT_SOURCE_DIR}/include/beman/${TARGET_NAME}/detail/stop_token.hpp + ${PROJECT_SOURCE_DIR}/include/beman/${TARGET_NAME}/detail/timer.hpp ) get_property(DETAIL_HEADER_FILES TARGET ${TARGET_LIBRARY} PROPERTY HEADER_SET_${TARGET_LIBRARY}_detail_headers) source_group("Header Files\\detail" FILES ${DETAIL_HEADER_FILES}) @@ -58,6 +56,7 @@ install( FILE_SET ${TARGET_LIBRARY}_detail_headers ) target_include_directories(${TARGET_LIBRARY} PUBLIC $) +target_link_libraries(${TARGET_LIBRARY} PUBLIC beman::execution26) install(EXPORT ${TARGETS_EXPORT_NAME}1 FILE ${TARGET_LIBRARY}-config.cmake diff --git a/src/beman/net29/tests/CMakeLists.txt b/src/beman/net29/tests/CMakeLists.txt index a25223c..6540cd9 100644 --- a/src/beman/net29/tests/CMakeLists.txt +++ b/src/beman/net29/tests/CMakeLists.txt @@ -1,12 +1,14 @@ -# src/beman/net29/tests/CMakeLists.txt +# cmake-format: off +# src/beman/net29/CMakeLists.txt -*-makefile-*- # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +# cmake-format: on -list(APPEND execution_tests +list(APPEND tests sorted_list.pass ) -foreach(test ${execution_tests}) +foreach(test ${tests}) add_executable(${test} ${test}.cpp) target_link_libraries(${test} PRIVATE ${TARGET_LIBRARY}) add_test(NAME ${test} COMMAND $) -endforeach() +endforeach() \ No newline at end of file