From a1f5add8d347da2eb8acb812cd6dbcb36a46778d Mon Sep 17 00:00:00 2001 From: Green Sky Date: Sun, 4 Feb 2024 13:20:15 +0100 Subject: [PATCH] restructure and manage own deps --- CMakeLists.txt | 82 +++++++++++++------ external/CMakeLists.txt | 22 +++++ src/CMakeLists.txt | 30 +++++++ .../solanaceae}/message3/components.hpp | 0 .../solanaceae}/message3/components_id.inl | 0 .../solanaceae}/message3/file.hpp | 0 .../solanaceae}/message3/file_r_file.hpp | 0 .../solanaceae}/message3/file_r_mem.hpp | 0 .../solanaceae}/message3/file_rw_file.hpp | 0 .../solanaceae}/message3/file_w_file.hpp | 0 .../message3/message_command_dispatcher.cpp | 6 +- .../message3/message_command_dispatcher.hpp | 2 +- .../solanaceae}/message3/message_model3.hpp | 0 .../message3/message_time_sort.cpp | 0 .../message3/message_time_sort.hpp | 0 .../message3/registry_message_model.cpp | 0 .../message3/registry_message_model.hpp | 0 17 files changed, 115 insertions(+), 27 deletions(-) create mode 100644 external/CMakeLists.txt create mode 100644 src/CMakeLists.txt rename {solanaceae => src/solanaceae}/message3/components.hpp (100%) rename {solanaceae => src/solanaceae}/message3/components_id.inl (100%) rename {solanaceae => src/solanaceae}/message3/file.hpp (100%) rename {solanaceae => src/solanaceae}/message3/file_r_file.hpp (100%) rename {solanaceae => src/solanaceae}/message3/file_r_mem.hpp (100%) rename {solanaceae => src/solanaceae}/message3/file_rw_file.hpp (100%) rename {solanaceae => src/solanaceae}/message3/file_w_file.hpp (100%) rename {solanaceae => src/solanaceae}/message3/message_command_dispatcher.cpp (99%) rename {solanaceae => src/solanaceae}/message3/message_command_dispatcher.hpp (98%) rename {solanaceae => src/solanaceae}/message3/message_model3.hpp (100%) rename {solanaceae => src/solanaceae}/message3/message_time_sort.cpp (100%) rename {solanaceae => src/solanaceae}/message3/message_time_sort.hpp (100%) rename {solanaceae => src/solanaceae}/message3/registry_message_model.cpp (100%) rename {solanaceae => src/solanaceae}/message3/registry_message_model.hpp (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index b14e24f..15000a4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,34 +1,66 @@ -cmake_minimum_required(VERSION 3.9 FATAL_ERROR) +cmake_minimum_required(VERSION 3.24 FATAL_ERROR) -project(solanaceae) +# cmake setup begin +project(solanaceae_message3) -add_library(solanaceae_message3 - ./solanaceae/message3/file.hpp - ./solanaceae/message3/file_r_mem.hpp - ./solanaceae/message3/file_r_file.hpp - ./solanaceae/message3/file_w_file.hpp - ./solanaceae/message3/file_rw_file.hpp +if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) + set(SOLANACEAE_MESSAGE3_STANDALONE ON) +else() + set(SOLANACEAE_MESSAGE3_STANDALONE OFF) +endif() +message("II SOLANACEAE_MESSAGE3_STANDALONE " ${SOLANACEAE_MESSAGE3_STANDALONE}) - ./solanaceae/message3/components.hpp - ./solanaceae/message3/components_id.inl +if (SOLANACEAE_MESSAGE3_STANDALONE) + set(CMAKE_POSITION_INDEPENDENT_CODE ON) - ./solanaceae/message3/message_model3.hpp + # defaulting to debug mode, if not specified + if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Debug") + endif() - ./solanaceae/message3/registry_message_model.hpp - ./solanaceae/message3/registry_message_model.cpp + # setup my vim ycm :D + set(CMAKE_EXPORT_COMPILE_COMMANDS ON) - ./solanaceae/message3/message_time_sort.hpp - ./solanaceae/message3/message_time_sort.cpp + # more paths + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") +endif() - ./solanaceae/message3/message_command_dispatcher.hpp - ./solanaceae/message3/message_command_dispatcher.cpp -) +# external libs +add_subdirectory(./external EXCLUDE_FROM_ALL) # before increasing warn levels, sad :( -target_include_directories(solanaceae_message3 PUBLIC .) -target_compile_features(solanaceae_message3 PUBLIC cxx_std_17) -target_link_libraries(solanaceae_message3 PUBLIC - solanaceae_util - solanaceae_contact - EnTT::EnTT -) +if (SOLANACEAE_MESSAGE3_STANDALONE) + set(CMAKE_CXX_EXTENSIONS OFF) + + # bump up warning levels appropriately for clang, gcc & msvc + if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") + add_compile_options( + -Wall -Wextra # Reasonable and standard + -Wpedantic # Warn if non-standard C++ is used + -Wunused # Warn on anything being unused + #-Wconversion # Warn on type conversions that may lose data + #-Wsign-conversion # Warn on sign conversions + -Wshadow # Warn if a variable declaration shadows one from a parent context + ) + + if (NOT WIN32) + #link_libraries(-fsanitize=address) + #link_libraries(-fsanitize=address,undefined) + #link_libraries(-fsanitize-address-use-after-scope) + #link_libraries(-fsanitize=undefined) + endif() + elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC") + if (CMAKE_CXX_FLAGS MATCHES "/W[0-4]") + string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + else() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") + endif() + endif() + +endif() + +# cmake setup end + +add_subdirectory(./src) diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt new file mode 100644 index 0000000..d0e525e --- /dev/null +++ b/external/CMakeLists.txt @@ -0,0 +1,22 @@ +cmake_minimum_required(VERSION 3.24 FATAL_ERROR) + +include(FetchContent) + +if (NOT TARGET solanaceae_contact) + FetchContent_Declare(solanaceae_contact + GIT_REPOSITORY https://github.com/Green-Sky/solanaceae_contact.git + GIT_TAG master + EXCLUDE_FROM_ALL + ) + FetchContent_MakeAvailable(solanaceae_contact) +endif() + +if (NOT TARGET solanaceae_util) + FetchContent_Declare(solanaceae_util + GIT_REPOSITORY https://github.com/Green-Sky/solanaceae_util.git + GIT_TAG master + EXCLUDE_FROM_ALL + ) + FetchContent_MakeAvailable(solanaceae_util) +endif() + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..5482c51 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,30 @@ +add_library(solanaceae_message3 + ./solanaceae/message3/file.hpp + ./solanaceae/message3/file_r_mem.hpp + ./solanaceae/message3/file_r_file.hpp + ./solanaceae/message3/file_w_file.hpp + ./solanaceae/message3/file_rw_file.hpp + + ./solanaceae/message3/components.hpp + ./solanaceae/message3/components_id.inl + + ./solanaceae/message3/message_model3.hpp + + ./solanaceae/message3/registry_message_model.hpp + ./solanaceae/message3/registry_message_model.cpp + + ./solanaceae/message3/message_time_sort.hpp + ./solanaceae/message3/message_time_sort.cpp + + ./solanaceae/message3/message_command_dispatcher.hpp + ./solanaceae/message3/message_command_dispatcher.cpp +) + +target_include_directories(solanaceae_message3 PUBLIC .) +target_compile_features(solanaceae_message3 PUBLIC cxx_std_17) +target_link_libraries(solanaceae_message3 PUBLIC + solanaceae_util + solanaceae_contact + EnTT::EnTT +) + diff --git a/solanaceae/message3/components.hpp b/src/solanaceae/message3/components.hpp similarity index 100% rename from solanaceae/message3/components.hpp rename to src/solanaceae/message3/components.hpp diff --git a/solanaceae/message3/components_id.inl b/src/solanaceae/message3/components_id.inl similarity index 100% rename from solanaceae/message3/components_id.inl rename to src/solanaceae/message3/components_id.inl diff --git a/solanaceae/message3/file.hpp b/src/solanaceae/message3/file.hpp similarity index 100% rename from solanaceae/message3/file.hpp rename to src/solanaceae/message3/file.hpp diff --git a/solanaceae/message3/file_r_file.hpp b/src/solanaceae/message3/file_r_file.hpp similarity index 100% rename from solanaceae/message3/file_r_file.hpp rename to src/solanaceae/message3/file_r_file.hpp diff --git a/solanaceae/message3/file_r_mem.hpp b/src/solanaceae/message3/file_r_mem.hpp similarity index 100% rename from solanaceae/message3/file_r_mem.hpp rename to src/solanaceae/message3/file_r_mem.hpp diff --git a/solanaceae/message3/file_rw_file.hpp b/src/solanaceae/message3/file_rw_file.hpp similarity index 100% rename from solanaceae/message3/file_rw_file.hpp rename to src/solanaceae/message3/file_rw_file.hpp diff --git a/solanaceae/message3/file_w_file.hpp b/src/solanaceae/message3/file_w_file.hpp similarity index 100% rename from solanaceae/message3/file_w_file.hpp rename to src/solanaceae/message3/file_w_file.hpp diff --git a/solanaceae/message3/message_command_dispatcher.cpp b/src/solanaceae/message3/message_command_dispatcher.cpp similarity index 99% rename from solanaceae/message3/message_command_dispatcher.cpp rename to src/solanaceae/message3/message_command_dispatcher.cpp index 4ce5d3a..119cfbf 100644 --- a/solanaceae/message3/message_command_dispatcher.cpp +++ b/src/solanaceae/message3/message_command_dispatcher.cpp @@ -41,14 +41,18 @@ MessageCommandDispatcher::MessageCommandDispatcher( MessageCommandDispatcher::~MessageCommandDispatcher(void) { } -void MessageCommandDispatcher::iterate(float) { +float MessageCommandDispatcher::iterate(float) { if (!_message_queue.empty()) { _rmm.sendText( _message_queue.front().to, _message_queue.front().message ); _message_queue.pop_front(); + + return 0.05f; } + + return 1.f*60.f*60.f; // 1h } static std::string_view get_first_word(std::string_view text, std::string_view::size_type& out_next) { diff --git a/solanaceae/message3/message_command_dispatcher.hpp b/src/solanaceae/message3/message_command_dispatcher.hpp similarity index 98% rename from solanaceae/message3/message_command_dispatcher.hpp rename to src/solanaceae/message3/message_command_dispatcher.hpp index 0e3a1d4..71add65 100644 --- a/solanaceae/message3/message_command_dispatcher.hpp +++ b/src/solanaceae/message3/message_command_dispatcher.hpp @@ -59,7 +59,7 @@ class MessageCommandDispatcher : public RegistryMessageModelEventI { MessageCommandDispatcher(Contact3Registry& cr, RegistryMessageModel& rmm, ConfigModelI& conf); ~MessageCommandDispatcher(void); - void iterate(float time_delta); + float iterate(float time_delta); // TODO: think more about permissions? // - user(s) diff --git a/solanaceae/message3/message_model3.hpp b/src/solanaceae/message3/message_model3.hpp similarity index 100% rename from solanaceae/message3/message_model3.hpp rename to src/solanaceae/message3/message_model3.hpp diff --git a/solanaceae/message3/message_time_sort.cpp b/src/solanaceae/message3/message_time_sort.cpp similarity index 100% rename from solanaceae/message3/message_time_sort.cpp rename to src/solanaceae/message3/message_time_sort.cpp diff --git a/solanaceae/message3/message_time_sort.hpp b/src/solanaceae/message3/message_time_sort.hpp similarity index 100% rename from solanaceae/message3/message_time_sort.hpp rename to src/solanaceae/message3/message_time_sort.hpp diff --git a/solanaceae/message3/registry_message_model.cpp b/src/solanaceae/message3/registry_message_model.cpp similarity index 100% rename from solanaceae/message3/registry_message_model.cpp rename to src/solanaceae/message3/registry_message_model.cpp diff --git a/solanaceae/message3/registry_message_model.hpp b/src/solanaceae/message3/registry_message_model.hpp similarity index 100% rename from solanaceae/message3/registry_message_model.hpp rename to src/solanaceae/message3/registry_message_model.hpp