From ec21a93ab2f8f2c2d1037952ea58e1085d6c2b84 Mon Sep 17 00:00:00 2001 From: Yaraslau Tamashevich Date: Sun, 17 Dec 2023 15:46:08 +0200 Subject: [PATCH 1/4] Add cmake options to handle logging --- CMakeLists.txt | 7 +++++++ src/shell/CMakeLists.txt | 13 +++++++++++++ src/shell/Lexer.cpp | 2 +- src/shell/Parser.cpp | 2 +- src/shell/Shell.cpp | 11 ++++++----- src/shell/Shell_test.cpp | 10 +++++++++- 6 files changed, 37 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 580e0ba..f803bc0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,9 @@ set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +option(ENDO_TRACE "Enables debug output" ON) +option(ENDO_TRACE_PARSER "Enables debug output for Parser" ON) +option(ENDO_TRACE_LEXER "Enables debug output for Lexer" ON) include(EnableCcache) include(EndoThirdParties) @@ -35,3 +38,7 @@ enable_testing() add_subdirectory(src) EndoThirdPartiesSummary2() +message(" flags ") +message(" ENDO_TRACE : ${ENDO_TRACE}") +message(" ENDO_TRACE_PARSER : ${ENDO_TRACE_PARSER}") +message(" ENDO_TRACE_LEXER : ${ENDO_TRACE_LEXER}") diff --git a/src/shell/CMakeLists.txt b/src/shell/CMakeLists.txt index 119cde4..f95554c 100644 --- a/src/shell/CMakeLists.txt +++ b/src/shell/CMakeLists.txt @@ -25,6 +25,19 @@ find_package(Threads REQUIRED) target_compile_definitions(Shell PUBLIC META_WORKAROUND_LLVM_28385) target_link_libraries(Shell PUBLIC fmt::fmt-header-only vtparser crispy::core CoreVM InputEditor Threads::Threads util) + +if(ENDO_TRACE) + message("HERE") + target_compile_definitions(Shell PUBLIC ENDO_TRACE) +endif() +if(ENDO_TRACE_PARSER) + target_compile_definitions(Shell PUBLIC ENDO_TRACE_PARSER) +endif() +if(ENDO_TRACE_LEXER) + target_compile_definitions(Shell PUBLIC ENDO_TRACE_LEXER) +endif() + + add_executable(endo main.cpp ) diff --git a/src/shell/Lexer.cpp b/src/shell/Lexer.cpp index 1499030..02d6a0d 100644 --- a/src/shell/Lexer.cpp +++ b/src/shell/Lexer.cpp @@ -10,7 +10,7 @@ module; #include // clang-format off -#if 0 // defined(TRACE_LEXER) +#if defined(ENDO_TRACE_LEXER) #define TRACE(message, ...) do { ::fmt::print("Lexer: " message, __VA_ARGS__); } while (0) #else #define TRACE(message, ...) do {} while (0) diff --git a/src/shell/Parser.cpp b/src/shell/Parser.cpp index 6afc0a1..1dd65ca 100644 --- a/src/shell/Parser.cpp +++ b/src/shell/Parser.cpp @@ -11,7 +11,7 @@ module; // {{{ trace macros // clang-format off -#if 0 // defined(TRACE_PARSER) +#if defined(ENDO_TRACE_PARSER) #define TRACE_SCOPE(message) ScopedLogger _logger { message } #define TRACE_FMT(message, ...) do { ScopedLogger::write(::fmt::format(message, __VA_ARGS__)); } while (0) #define TRACE(message) do { ScopedLogger::write(::fmt::format(message)); } while (0) diff --git a/src/shell/Shell.cpp b/src/shell/Shell.cpp index e6c2d9f..6e7d378 100644 --- a/src/shell/Shell.cpp +++ b/src/shell/Shell.cpp @@ -27,7 +27,7 @@ export module Shell; // {{{ trace macros // clang-format off -#if 0 +#if defined(ENDO_TRACE) #define DEBUG(msg) do { fmt::print("{}\n", (msg)); } while (0) #define DEBUGF(msg, ...) do { fmt::print("{}\n", fmt::format((msg), __VA_ARGS__)); } while (0) #else @@ -192,10 +192,6 @@ export class Shell final: public CoreVM::Runtime // NB: These lines could go away once we have a proper command line parser and // the ability to set these options from the command line. - _optimize = _env.get("SHELL_IR_OPTIMIZE").value_or("0") != "0"; - _debugIR = _env.get("SHELL_IR_DEBUG").value_or("0") != "0"; - _traceVM = _env.get("SHELL_VM_TRACE").value_or("0") != "0"; - registerBuiltinFunctions(); // for (CoreVM::NativeCallback const* callback: builtins()) @@ -645,8 +641,13 @@ export class Shell final: public CoreVM::Runtime std::unique_ptr _currentProgram; CoreVM::Runner::Globals _globals; +#if defined(ENDO_TRACE) + bool _debugIR = true; + bool _traceVM = true; +#else bool _debugIR = false; bool _traceVM = false; +#endif bool _optimize = false; PipelineBuilder _currentPipelineBuilder; diff --git a/src/shell/Shell_test.cpp b/src/shell/Shell_test.cpp index 8cea9bc..fee28ff 100644 --- a/src/shell/Shell_test.cpp +++ b/src/shell/Shell_test.cpp @@ -79,13 +79,21 @@ TEST_CASE("shell.builtin.set_variable") CHECK(shell.env.get("BRU").value_or("NONE") == "hello"); } +TEST_CASE("shell.builtin.get_variable") +{ + TestShell shell; + shell("set BRU hello"); + CHECK(shell.env.get("BRU").value_or("NONE") == "hello"); + shell("$BRU"); +} + // TEST_CASE("shell.builtin.set_and_export_variable") // { // TestShell shell; // shell("set BRU hello"); // CHECK(shell.env.get("BRU").value_or("NONE") == "hello"); -// + // shell("export $BRU"); // CHECK(shell("echo $BRU").output() == "hello\n"); // } From 5222a9e40c28ae937fa9b5bc5ad7ebb095b01f16 Mon Sep 17 00:00:00 2001 From: Yaraslau Tamashevich Date: Sun, 17 Dec 2023 16:22:38 +0200 Subject: [PATCH 2/4] Small update and cmake summary --- CMakeLists.txt | 24 +++++++++++++++++------- src/shell/CMakeLists.txt | 1 - 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f803bc0..06d700e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,9 +12,16 @@ set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -option(ENDO_TRACE "Enables debug output" ON) -option(ENDO_TRACE_PARSER "Enables debug output for Parser" ON) -option(ENDO_TRACE_LEXER "Enables debug output for Lexer" ON) +option(ENDO_TRACE "Enables debug output" OFF) +option(ENDO_TRACE_PARSER "Enables debug output for Parser" OFF) +option(ENDO_TRACE_LEXER "Enables debug output for Lexer" OFF) + +if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") + set(ENDO_TRACE ON) + set(ENDO_TRACE_PARSER ON) + set(ENDO_TRACE_LEXER ON) +endif() + include(EnableCcache) include(EndoThirdParties) @@ -38,7 +45,10 @@ enable_testing() add_subdirectory(src) EndoThirdPartiesSummary2() -message(" flags ") -message(" ENDO_TRACE : ${ENDO_TRACE}") -message(" ENDO_TRACE_PARSER : ${ENDO_TRACE_PARSER}") -message(" ENDO_TRACE_LEXER : ${ENDO_TRACE_LEXER}") +message(STATUS "--------------------------------") +message(STATUS " output flags ") +message(STATUS "--------------------------------") +message(STATUS "endo trace ${ENDO_TRACE}") +message(STATUS "endo trace parser ${ENDO_TRACE_PARSER}") +message(STATUS "endo trace lexer ${ENDO_TRACE_LEXER}") +message(STATUS "--------------------------------") diff --git a/src/shell/CMakeLists.txt b/src/shell/CMakeLists.txt index f95554c..3107b75 100644 --- a/src/shell/CMakeLists.txt +++ b/src/shell/CMakeLists.txt @@ -27,7 +27,6 @@ target_link_libraries(Shell PUBLIC fmt::fmt-header-only vtparser crispy::core Co if(ENDO_TRACE) - message("HERE") target_compile_definitions(Shell PUBLIC ENDO_TRACE) endif() if(ENDO_TRACE_PARSER) From f2d0fff16836cb380e46363094e05d64cf7ab7ac Mon Sep 17 00:00:00 2001 From: Yaraslau Tamashevich Date: Mon, 18 Dec 2023 00:12:44 +0200 Subject: [PATCH 3/4] rename ENDO_TRACE -> ENDO_TRACE_VM --- CMakeLists.txt | 6 +++--- src/shell/CMakeLists.txt | 4 ++-- src/shell/Shell.cpp | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 06d700e..327226c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,12 +12,12 @@ set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -option(ENDO_TRACE "Enables debug output" OFF) +option(ENDO_TRACE_VM "Enables debug output" OFF) option(ENDO_TRACE_PARSER "Enables debug output for Parser" OFF) option(ENDO_TRACE_LEXER "Enables debug output for Lexer" OFF) if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") - set(ENDO_TRACE ON) + set(ENDO_TRACE_VM ON) set(ENDO_TRACE_PARSER ON) set(ENDO_TRACE_LEXER ON) endif() @@ -48,7 +48,7 @@ EndoThirdPartiesSummary2() message(STATUS "--------------------------------") message(STATUS " output flags ") message(STATUS "--------------------------------") -message(STATUS "endo trace ${ENDO_TRACE}") +message(STATUS "endo trace vm ${ENDO_TRACE_VM}") message(STATUS "endo trace parser ${ENDO_TRACE_PARSER}") message(STATUS "endo trace lexer ${ENDO_TRACE_LEXER}") message(STATUS "--------------------------------") diff --git a/src/shell/CMakeLists.txt b/src/shell/CMakeLists.txt index 3107b75..858dd30 100644 --- a/src/shell/CMakeLists.txt +++ b/src/shell/CMakeLists.txt @@ -26,8 +26,8 @@ target_compile_definitions(Shell PUBLIC META_WORKAROUND_LLVM_28385) target_link_libraries(Shell PUBLIC fmt::fmt-header-only vtparser crispy::core CoreVM InputEditor Threads::Threads util) -if(ENDO_TRACE) - target_compile_definitions(Shell PUBLIC ENDO_TRACE) +if(ENDO_TRACE_VM) + target_compile_definitions(Shell PUBLIC ENDO_TRACE_VM) endif() if(ENDO_TRACE_PARSER) target_compile_definitions(Shell PUBLIC ENDO_TRACE_PARSER) diff --git a/src/shell/Shell.cpp b/src/shell/Shell.cpp index 6e7d378..fe5c5ea 100644 --- a/src/shell/Shell.cpp +++ b/src/shell/Shell.cpp @@ -641,7 +641,7 @@ export class Shell final: public CoreVM::Runtime std::unique_ptr _currentProgram; CoreVM::Runner::Globals _globals; -#if defined(ENDO_TRACE) +#if defined(ENDO_TRACE_VM) bool _debugIR = true; bool _traceVM = true; #else From 6bb126fc3b8f72c78587610c3d60b9ef1e73ac89 Mon Sep 17 00:00:00 2001 From: Yaraslau Tamashevich Date: Mon, 18 Dec 2023 00:25:27 +0200 Subject: [PATCH 4/4] allow user to set options and keep default behaviour if not --- CMakeLists.txt | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 327226c..d5921bb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,14 +12,26 @@ set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -option(ENDO_TRACE_VM "Enables debug output" OFF) -option(ENDO_TRACE_PARSER "Enables debug output for Parser" OFF) -option(ENDO_TRACE_LEXER "Enables debug output for Lexer" OFF) - -if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") - set(ENDO_TRACE_VM ON) - set(ENDO_TRACE_PARSER ON) - set(ENDO_TRACE_LEXER ON) +if(NOT DEFINED ENDO_TRACE_VM) + option(ENDO_TRACE_VM "Enables debug output" OFF) + if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") + set(ENDO_TRACE_VM ON) + endif() +endif() + +if(NOT DEFINED ENDO_TRACE_PARSER) + option(ENDO_TRACE_PARSER "Enables debug output for Parser" OFF) + if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") + set(ENDO_TRACE_PARSER ON) + endif() +endif() + + +if(NOT DEFINED ENDO_TRACE_LEXER) + option(ENDO_TRACE_LEXER "Enables debug output for Lexer" OFF) + if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") + set(ENDO_TRACE_LEXER ON) + endif() endif()