From 57d761250676e353c5deda3d25736d44c94a79b9 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sun, 10 Aug 2025 02:56:59 +0000 Subject: [PATCH 1/2] Add CMake build files for EPANET library configuration Co-authored-by: lukepbutler --- epanet_named_vars_expr.patch | 15021 +++++++++++++++++++++++++++++++++ epanet_upstream | 1 + 2 files changed, 15022 insertions(+) create mode 100644 epanet_named_vars_expr.patch create mode 160000 epanet_upstream diff --git a/epanet_named_vars_expr.patch b/epanet_named_vars_expr.patch new file mode 100644 index 00000000..2b3aaecf --- /dev/null +++ b/epanet_named_vars_expr.patch @@ -0,0 +1,15021 @@ +diff -ruN /workspace/epanet_upstream/build/CMakeCache.txt /workspace/epanet/build/CMakeCache.txt +--- /workspace/epanet_upstream/build/CMakeCache.txt 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeCache.txt 2025-08-10 02:49:33.506682011 +0000 +@@ -0,0 +1,406 @@ ++# This is the CMakeCache file. ++# For build in directory: /workspace/epanet/build ++# It was generated by CMake: /usr/bin/cmake ++# You can edit this file to change values found and used by cmake. ++# If you do not want to change any of the values, simply exit the editor. ++# If you do want to change a value, simply edit, save, and exit the editor. ++# The syntax for the file is as follows: ++# KEY:TYPE=VALUE ++# KEY is the name of a variable in the cache. ++# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. ++# VALUE is the current value for the KEY. ++ ++######################## ++# EXTERNAL cache entries ++######################## ++ ++//Build library for coverage ++BUILD_COVERAGE:BOOL=OFF ++ ++//Build using shared libraries ++BUILD_SHARED_LIBS:BOOL=ON ++ ++//Build tests (requires Boost) ++BUILD_TESTS:BOOL=OFF ++ ++//Path to a program. ++CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line ++ ++//Path to a program. ++CMAKE_AR:FILEPATH=/usr/bin/ar ++ ++//Choose the type of build, options are: None Debug Release RelWithDebInfo ++// MinSizeRel ... ++CMAKE_BUILD_TYPE:STRING= ++ ++//Enable/Disable color output during build. ++CMAKE_COLOR_MAKEFILE:BOOL=ON ++ ++//CXX compiler ++CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ ++ ++//LLVM archiver ++CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/llvm-ar-20 ++ ++//`clang-scan-deps` dependency scanner ++CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS:FILEPATH=/usr/bin/clang-scan-deps-20 ++ ++//Generate index for LLVM archive ++CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/llvm-ranlib-20 ++ ++//Flags used by the CXX compiler during all build types. ++CMAKE_CXX_FLAGS:STRING= ++ ++//Flags used by the CXX compiler during DEBUG builds. ++CMAKE_CXX_FLAGS_DEBUG:STRING=-g ++ ++//Flags used by the CXX compiler during MINSIZEREL builds. ++CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG ++ ++//Flags used by the CXX compiler during RELEASE builds. ++CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG ++ ++//Flags used by the CXX compiler during RELWITHDEBINFO builds. ++CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG ++ ++//C compiler ++CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc ++ ++//LLVM archiver ++CMAKE_C_COMPILER_AR:FILEPATH=/usr/bin/llvm-ar-20 ++ ++//`clang-scan-deps` dependency scanner ++CMAKE_C_COMPILER_CLANG_SCAN_DEPS:FILEPATH=/usr/bin/clang-scan-deps-20 ++ ++//Generate index for LLVM archive ++CMAKE_C_COMPILER_RANLIB:FILEPATH=/usr/bin/llvm-ranlib-20 ++ ++//Flags used by the C compiler during all build types. ++CMAKE_C_FLAGS:STRING= ++ ++//Flags used by the C compiler during DEBUG builds. ++CMAKE_C_FLAGS_DEBUG:STRING=-g ++ ++//Flags used by the C compiler during MINSIZEREL builds. ++CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG ++ ++//Flags used by the C compiler during RELEASE builds. ++CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG ++ ++//Flags used by the C compiler during RELWITHDEBINFO builds. ++CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG ++ ++//Path to a program. ++CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND ++ ++//Flags used by the linker during all build types. ++CMAKE_EXE_LINKER_FLAGS:STRING= ++ ++//Flags used by the linker during DEBUG builds. ++CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= ++ ++//Flags used by the linker during MINSIZEREL builds. ++CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= ++ ++//Flags used by the linker during RELEASE builds. ++CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= ++ ++//Flags used by the linker during RELWITHDEBINFO builds. ++CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= ++ ++//Enable/Disable output of compile commands during generation. ++CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= ++ ++//Value Computed by CMake. ++CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=/workspace/epanet/build/CMakeFiles/pkgRedirects ++ ++//Install path prefix, prepended onto install directories. ++CMAKE_INSTALL_PREFIX:PATH=/usr/local ++ ++//Path to a program. ++CMAKE_LINKER:FILEPATH=/usr/bin/ld ++ ++//Path to a program. ++CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/gmake ++ ++//Flags used by the linker during the creation of modules during ++// all build types. ++CMAKE_MODULE_LINKER_FLAGS:STRING= ++ ++//Flags used by the linker during the creation of modules during ++// DEBUG builds. ++CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= ++ ++//Flags used by the linker during the creation of modules during ++// MINSIZEREL builds. ++CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= ++ ++//Flags used by the linker during the creation of modules during ++// RELEASE builds. ++CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= ++ ++//Flags used by the linker during the creation of modules during ++// RELWITHDEBINFO builds. ++CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= ++ ++//Path to a program. ++CMAKE_NM:FILEPATH=/usr/bin/nm ++ ++//Path to a program. ++CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy ++ ++//Path to a program. ++CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump ++ ++//Value Computed by CMake ++CMAKE_PROJECT_DESCRIPTION:STATIC= ++ ++//Value Computed by CMake ++CMAKE_PROJECT_HOMEPAGE_URL:STATIC= ++ ++//Value Computed by CMake ++CMAKE_PROJECT_NAME:STATIC=EPANET ++ ++//Path to a program. ++CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib ++ ++//Path to a program. ++CMAKE_READELF:FILEPATH=/usr/bin/readelf ++ ++//Flags used by the linker during the creation of shared libraries ++// during all build types. ++CMAKE_SHARED_LINKER_FLAGS:STRING= ++ ++//Flags used by the linker during the creation of shared libraries ++// during DEBUG builds. ++CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= ++ ++//Flags used by the linker during the creation of shared libraries ++// during MINSIZEREL builds. ++CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= ++ ++//Flags used by the linker during the creation of shared libraries ++// during RELEASE builds. ++CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= ++ ++//Flags used by the linker during the creation of shared libraries ++// during RELWITHDEBINFO builds. ++CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= ++ ++//If set, runtime paths are not added when installing shared libraries, ++// but are added when building. ++CMAKE_SKIP_INSTALL_RPATH:BOOL=NO ++ ++//If set, runtime paths are not added when using shared libraries. ++CMAKE_SKIP_RPATH:BOOL=NO ++ ++//Flags used by the linker during the creation of static libraries ++// during all build types. ++CMAKE_STATIC_LINKER_FLAGS:STRING= ++ ++//Flags used by the linker during the creation of static libraries ++// during DEBUG builds. ++CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= ++ ++//Flags used by the linker during the creation of static libraries ++// during MINSIZEREL builds. ++CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= ++ ++//Flags used by the linker during the creation of static libraries ++// during RELEASE builds. ++CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= ++ ++//Flags used by the linker during the creation of static libraries ++// during RELWITHDEBINFO builds. ++CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= ++ ++//Path to a program. ++CMAKE_STRIP:FILEPATH=/usr/bin/strip ++ ++//Path to a program. ++CMAKE_TAPI:FILEPATH=CMAKE_TAPI-NOTFOUND ++ ++//If this value is on, makefiles will be generated without the ++// .SILENT directive, and all commands will be echoed to the console ++// during the make. This is useful for debugging only. With Visual ++// Studio IDE projects all commands are done without /nologo. ++CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE ++ ++//Value Computed by CMake ++EPANET_BINARY_DIR:STATIC=/workspace/epanet/build ++ ++//Value Computed by CMake ++EPANET_IS_TOP_LEVEL:STATIC=ON ++ ++//Value Computed by CMake ++EPANET_SOURCE_DIR:STATIC=/workspace/epanet ++ ++ ++######################## ++# INTERNAL cache entries ++######################## ++ ++//ADVANCED property for variable: CMAKE_ADDR2LINE ++CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_AR ++CMAKE_AR-ADVANCED:INTERNAL=1 ++//This is the directory where this CMakeCache.txt was created ++CMAKE_CACHEFILE_DIR:INTERNAL=/workspace/epanet/build ++//Major version of cmake used to create the current loaded cache ++CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 ++//Minor version of cmake used to create the current loaded cache ++CMAKE_CACHE_MINOR_VERSION:INTERNAL=31 ++//Patch version of cmake used to create the current loaded cache ++CMAKE_CACHE_PATCH_VERSION:INTERNAL=6 ++//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE ++CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 ++//Path to CMake executable. ++CMAKE_COMMAND:INTERNAL=/usr/bin/cmake ++//Path to cpack program executable. ++CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack ++//Path to ctest program executable. ++CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest ++//ADVANCED property for variable: CMAKE_CXX_COMPILER ++CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR ++CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS ++CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB ++CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_CXX_FLAGS ++CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG ++CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL ++CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE ++CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO ++CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_C_COMPILER ++CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_C_COMPILER_AR ++CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_C_COMPILER_CLANG_SCAN_DEPS ++CMAKE_C_COMPILER_CLANG_SCAN_DEPS-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB ++CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_C_FLAGS ++CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG ++CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL ++CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE ++CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO ++CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_DLLTOOL ++CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 ++//Executable file format ++CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF ++//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS ++CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG ++CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL ++CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE ++CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO ++CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS ++CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 ++//Name of external makefile project generator. ++CMAKE_EXTRA_GENERATOR:INTERNAL= ++//Name of generator. ++CMAKE_GENERATOR:INTERNAL=Unix Makefiles ++//Generator instance identifier. ++CMAKE_GENERATOR_INSTANCE:INTERNAL= ++//Name of generator platform. ++CMAKE_GENERATOR_PLATFORM:INTERNAL= ++//Name of generator toolset. ++CMAKE_GENERATOR_TOOLSET:INTERNAL= ++//Source directory with the top level CMakeLists.txt file for this ++// project ++CMAKE_HOME_DIRECTORY:INTERNAL=/workspace/epanet ++//Install .so files without execute permission. ++CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_LINKER ++CMAKE_LINKER-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_MAKE_PROGRAM ++CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS ++CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG ++CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL ++CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE ++CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO ++CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_NM ++CMAKE_NM-ADVANCED:INTERNAL=1 ++//number of local generators ++CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=3 ++//ADVANCED property for variable: CMAKE_OBJCOPY ++CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_OBJDUMP ++CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 ++//Platform information initialized ++CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_RANLIB ++CMAKE_RANLIB-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_READELF ++CMAKE_READELF-ADVANCED:INTERNAL=1 ++//Path to CMake installation. ++CMAKE_ROOT:INTERNAL=/usr/share/cmake-3.31 ++//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS ++CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG ++CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL ++CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE ++CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO ++CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH ++CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_SKIP_RPATH ++CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS ++CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG ++CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL ++CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE ++CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO ++CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_STRIP ++CMAKE_STRIP-ADVANCED:INTERNAL=1 ++//ADVANCED property for variable: CMAKE_TAPI ++CMAKE_TAPI-ADVANCED:INTERNAL=1 ++//uname command ++CMAKE_UNAME:INTERNAL=/usr/bin/uname ++//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE ++CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 ++//Compiler support for a deprecated attribute ++COMPILER_HAS_DEPRECATED:INTERNAL=1 ++//Test COMPILER_HAS_DEPRECATED_ATTR ++COMPILER_HAS_DEPRECATED_ATTR:INTERNAL=1 ++//Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY ++COMPILER_HAS_HIDDEN_INLINE_VISIBILITY:INTERNAL=1 ++//Test COMPILER_HAS_HIDDEN_VISIBILITY ++COMPILER_HAS_HIDDEN_VISIBILITY:INTERNAL=1 ++//linker supports push/pop state ++_CMAKE_CXX_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE ++//linker supports push/pop state ++_CMAKE_C_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE ++//linker supports push/pop state ++_CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE ++ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/3.31.6/CMakeCCompiler.cmake /workspace/epanet/build/CMakeFiles/3.31.6/CMakeCCompiler.cmake +--- /workspace/epanet_upstream/build/CMakeFiles/3.31.6/CMakeCCompiler.cmake 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/3.31.6/CMakeCCompiler.cmake 2025-08-10 02:49:33.086680700 +0000 +@@ -0,0 +1,81 @@ ++set(CMAKE_C_COMPILER "/usr/bin/cc") ++set(CMAKE_C_COMPILER_ARG1 "") ++set(CMAKE_C_COMPILER_ID "Clang") ++set(CMAKE_C_COMPILER_VERSION "20.1.2") ++set(CMAKE_C_COMPILER_VERSION_INTERNAL "") ++set(CMAKE_C_COMPILER_WRAPPER "") ++set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17") ++set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON") ++set(CMAKE_C_STANDARD_LATEST "23") ++set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23") ++set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") ++set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") ++set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") ++set(CMAKE_C17_COMPILE_FEATURES "c_std_17") ++set(CMAKE_C23_COMPILE_FEATURES "c_std_23") ++ ++set(CMAKE_C_PLATFORM_ID "Linux") ++set(CMAKE_C_SIMULATE_ID "") ++set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU") ++set(CMAKE_C_SIMULATE_VERSION "") ++ ++ ++ ++ ++set(CMAKE_AR "/usr/bin/ar") ++set(CMAKE_C_COMPILER_AR "/usr/bin/llvm-ar-20") ++set(CMAKE_RANLIB "/usr/bin/ranlib") ++set(CMAKE_C_COMPILER_RANLIB "/usr/bin/llvm-ranlib-20") ++set(CMAKE_LINKER "/usr/bin/ld") ++set(CMAKE_LINKER_LINK "") ++set(CMAKE_LINKER_LLD "") ++set(CMAKE_C_COMPILER_LINKER "/usr/bin/ld") ++set(CMAKE_C_COMPILER_LINKER_ID "GNU") ++set(CMAKE_C_COMPILER_LINKER_VERSION 2.44) ++set(CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT GNU) ++set(CMAKE_MT "") ++set(CMAKE_TAPI "CMAKE_TAPI-NOTFOUND") ++set(CMAKE_COMPILER_IS_GNUCC ) ++set(CMAKE_C_COMPILER_LOADED 1) ++set(CMAKE_C_COMPILER_WORKS TRUE) ++set(CMAKE_C_ABI_COMPILED TRUE) ++ ++set(CMAKE_C_COMPILER_ENV_VAR "CC") ++ ++set(CMAKE_C_COMPILER_ID_RUN 1) ++set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) ++set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) ++set(CMAKE_C_LINKER_PREFERENCE 10) ++set(CMAKE_C_LINKER_DEPFILE_SUPPORTED ) ++ ++# Save compiler ABI information. ++set(CMAKE_C_SIZEOF_DATA_PTR "8") ++set(CMAKE_C_COMPILER_ABI "ELF") ++set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN") ++set(CMAKE_C_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") ++ ++if(CMAKE_C_SIZEOF_DATA_PTR) ++ set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") ++endif() ++ ++if(CMAKE_C_COMPILER_ABI) ++ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") ++endif() ++ ++if(CMAKE_C_LIBRARY_ARCHITECTURE) ++ set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") ++endif() ++ ++set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") ++if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) ++ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") ++endif() ++ ++ ++ ++ ++ ++set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/usr/lib/llvm-20/lib/clang/20/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include") ++set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "gcc;gcc_s;c;gcc;gcc_s") ++set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/14;/usr/lib64;/lib/x86_64-linux-gnu;/lib64;/usr/lib/x86_64-linux-gnu;/lib;/usr/lib") ++set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/3.31.6/CMakeCXXCompiler.cmake /workspace/epanet/build/CMakeFiles/3.31.6/CMakeCXXCompiler.cmake +--- /workspace/epanet_upstream/build/CMakeFiles/3.31.6/CMakeCXXCompiler.cmake 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/3.31.6/CMakeCXXCompiler.cmake 2025-08-10 02:49:33.206681075 +0000 +@@ -0,0 +1,105 @@ ++set(CMAKE_CXX_COMPILER "/usr/bin/c++") ++set(CMAKE_CXX_COMPILER_ARG1 "") ++set(CMAKE_CXX_COMPILER_ID "Clang") ++set(CMAKE_CXX_COMPILER_VERSION "20.1.2") ++set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") ++set(CMAKE_CXX_COMPILER_WRAPPER "") ++set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "17") ++set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON") ++set(CMAKE_CXX_STANDARD_LATEST "26") ++set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23;cxx_std_26") ++set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") ++set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") ++set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") ++set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") ++set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") ++set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23") ++set(CMAKE_CXX26_COMPILE_FEATURES "cxx_std_26") ++ ++set(CMAKE_CXX_PLATFORM_ID "Linux") ++set(CMAKE_CXX_SIMULATE_ID "") ++set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU") ++set(CMAKE_CXX_SIMULATE_VERSION "") ++ ++ ++ ++ ++set(CMAKE_AR "/usr/bin/ar") ++set(CMAKE_CXX_COMPILER_AR "/usr/bin/llvm-ar-20") ++set(CMAKE_RANLIB "/usr/bin/ranlib") ++set(CMAKE_CXX_COMPILER_RANLIB "/usr/bin/llvm-ranlib-20") ++set(CMAKE_LINKER "/usr/bin/ld") ++set(CMAKE_LINKER_LINK "") ++set(CMAKE_LINKER_LLD "") ++set(CMAKE_CXX_COMPILER_LINKER "/usr/bin/ld") ++set(CMAKE_CXX_COMPILER_LINKER_ID "GNU") ++set(CMAKE_CXX_COMPILER_LINKER_VERSION 2.44) ++set(CMAKE_CXX_COMPILER_LINKER_FRONTEND_VARIANT GNU) ++set(CMAKE_MT "") ++set(CMAKE_TAPI "CMAKE_TAPI-NOTFOUND") ++set(CMAKE_COMPILER_IS_GNUCXX ) ++set(CMAKE_CXX_COMPILER_LOADED 1) ++set(CMAKE_CXX_COMPILER_WORKS TRUE) ++set(CMAKE_CXX_ABI_COMPILED TRUE) ++ ++set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") ++ ++set(CMAKE_CXX_COMPILER_ID_RUN 1) ++set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm;ccm;cxxm;c++m) ++set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) ++ ++foreach (lang IN ITEMS C OBJC OBJCXX) ++ if (CMAKE_${lang}_COMPILER_ID_RUN) ++ foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) ++ list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) ++ endforeach() ++ endif() ++endforeach() ++ ++set(CMAKE_CXX_LINKER_PREFERENCE 30) ++set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) ++set(CMAKE_CXX_LINKER_DEPFILE_SUPPORTED ) ++ ++# Save compiler ABI information. ++set(CMAKE_CXX_SIZEOF_DATA_PTR "8") ++set(CMAKE_CXX_COMPILER_ABI "ELF") ++set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN") ++set(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") ++ ++if(CMAKE_CXX_SIZEOF_DATA_PTR) ++ set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") ++endif() ++ ++if(CMAKE_CXX_COMPILER_ABI) ++ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") ++endif() ++ ++if(CMAKE_CXX_LIBRARY_ARCHITECTURE) ++ set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") ++endif() ++ ++set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") ++if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) ++ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") ++endif() ++ ++ ++ ++ ++ ++set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/usr/include/c++/14;/usr/include/x86_64-linux-gnu/c++/14;/usr/include/c++/14/backward;/usr/lib/llvm-20/lib/clang/20/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include") ++set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;gcc_s;gcc;c;gcc_s;gcc") ++set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/14;/usr/lib64;/lib/x86_64-linux-gnu;/lib64;/usr/lib/x86_64-linux-gnu;/lib;/usr/lib") ++set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") ++set(CMAKE_CXX_COMPILER_CLANG_RESOURCE_DIR "/usr/lib/llvm-20/lib/clang/20") ++ ++set(CMAKE_CXX_COMPILER_IMPORT_STD "") ++### Imported target for C++23 standard library ++set(CMAKE_CXX23_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE "Unsupported generator: Unix Makefiles") ++ ++ ++### Imported target for C++26 standard library ++set(CMAKE_CXX26_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE "Unsupported generator: Unix Makefiles") ++ ++ ++ +Binary files /workspace/epanet_upstream/build/CMakeFiles/3.31.6/CMakeDetermineCompilerABI_C.bin and /workspace/epanet/build/CMakeFiles/3.31.6/CMakeDetermineCompilerABI_C.bin differ +Binary files /workspace/epanet_upstream/build/CMakeFiles/3.31.6/CMakeDetermineCompilerABI_CXX.bin and /workspace/epanet/build/CMakeFiles/3.31.6/CMakeDetermineCompilerABI_CXX.bin differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/3.31.6/CMakeSystem.cmake /workspace/epanet/build/CMakeFiles/3.31.6/CMakeSystem.cmake +--- /workspace/epanet_upstream/build/CMakeFiles/3.31.6/CMakeSystem.cmake 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/3.31.6/CMakeSystem.cmake 2025-08-10 02:49:32.714679537 +0000 +@@ -0,0 +1,15 @@ ++set(CMAKE_HOST_SYSTEM "Linux-6.1.147") ++set(CMAKE_HOST_SYSTEM_NAME "Linux") ++set(CMAKE_HOST_SYSTEM_VERSION "6.1.147") ++set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") ++ ++ ++ ++set(CMAKE_SYSTEM "Linux-6.1.147") ++set(CMAKE_SYSTEM_NAME "Linux") ++set(CMAKE_SYSTEM_VERSION "6.1.147") ++set(CMAKE_SYSTEM_PROCESSOR "x86_64") ++ ++set(CMAKE_CROSSCOMPILING "FALSE") ++ ++set(CMAKE_SYSTEM_LOADED 1) +Binary files /workspace/epanet_upstream/build/CMakeFiles/3.31.6/CompilerIdC/a.out and /workspace/epanet/build/CMakeFiles/3.31.6/CompilerIdC/a.out differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/3.31.6/CompilerIdC/CMakeCCompilerId.c /workspace/epanet/build/CMakeFiles/3.31.6/CompilerIdC/CMakeCCompilerId.c +--- /workspace/epanet_upstream/build/CMakeFiles/3.31.6/CompilerIdC/CMakeCCompilerId.c 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/3.31.6/CompilerIdC/CMakeCCompilerId.c 2025-08-10 02:49:32.722679562 +0000 +@@ -0,0 +1,904 @@ ++#ifdef __cplusplus ++# error "A C++ compiler has been selected for C." ++#endif ++ ++#if defined(__18CXX) ++# define ID_VOID_MAIN ++#endif ++#if defined(__CLASSIC_C__) ++/* cv-qualifiers did not exist in K&R C */ ++# define const ++# define volatile ++#endif ++ ++#if !defined(__has_include) ++/* If the compiler does not have __has_include, pretend the answer is ++ always no. */ ++# define __has_include(x) 0 ++#endif ++ ++ ++/* Version number components: V=Version, R=Revision, P=Patch ++ Version date components: YYYY=Year, MM=Month, DD=Day */ ++ ++#if defined(__INTEL_COMPILER) || defined(__ICC) ++# define COMPILER_ID "Intel" ++# if defined(_MSC_VER) ++# define SIMULATE_ID "MSVC" ++# endif ++# if defined(__GNUC__) ++# define SIMULATE_ID "GNU" ++# endif ++ /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, ++ except that a few beta releases use the old format with V=2021. */ ++# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 ++# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) ++# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) ++# if defined(__INTEL_COMPILER_UPDATE) ++# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) ++# else ++# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) ++# endif ++# else ++# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) ++# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) ++ /* The third version component from --version is an update index, ++ but no macro is provided for it. */ ++# define COMPILER_VERSION_PATCH DEC(0) ++# endif ++# if defined(__INTEL_COMPILER_BUILD_DATE) ++ /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ ++# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) ++# endif ++# if defined(_MSC_VER) ++ /* _MSC_VER = VVRR */ ++# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) ++# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) ++# endif ++# if defined(__GNUC__) ++# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) ++# elif defined(__GNUG__) ++# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) ++# endif ++# if defined(__GNUC_MINOR__) ++# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) ++# endif ++# if defined(__GNUC_PATCHLEVEL__) ++# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) ++# endif ++ ++#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) ++# define COMPILER_ID "IntelLLVM" ++#if defined(_MSC_VER) ++# define SIMULATE_ID "MSVC" ++#endif ++#if defined(__GNUC__) ++# define SIMULATE_ID "GNU" ++#endif ++/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and ++ * later. Look for 6 digit vs. 8 digit version number to decide encoding. ++ * VVVV is no smaller than the current year when a version is released. ++ */ ++#if __INTEL_LLVM_COMPILER < 1000000L ++# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) ++# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) ++# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) ++#else ++# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) ++# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) ++# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) ++#endif ++#if defined(_MSC_VER) ++ /* _MSC_VER = VVRR */ ++# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) ++# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) ++#endif ++#if defined(__GNUC__) ++# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) ++#elif defined(__GNUG__) ++# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) ++#endif ++#if defined(__GNUC_MINOR__) ++# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) ++#endif ++#if defined(__GNUC_PATCHLEVEL__) ++# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) ++#endif ++ ++#elif defined(__PATHCC__) ++# define COMPILER_ID "PathScale" ++# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) ++# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) ++# if defined(__PATHCC_PATCHLEVEL__) ++# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) ++# endif ++ ++#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) ++# define COMPILER_ID "Embarcadero" ++# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) ++# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) ++# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) ++ ++#elif defined(__BORLANDC__) ++# define COMPILER_ID "Borland" ++ /* __BORLANDC__ = 0xVRR */ ++# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) ++# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) ++ ++#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 ++# define COMPILER_ID "Watcom" ++ /* __WATCOMC__ = VVRR */ ++# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) ++# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) ++# if (__WATCOMC__ % 10) > 0 ++# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) ++# endif ++ ++#elif defined(__WATCOMC__) ++# define COMPILER_ID "OpenWatcom" ++ /* __WATCOMC__ = VVRP + 1100 */ ++# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) ++# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) ++# if (__WATCOMC__ % 10) > 0 ++# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) ++# endif ++ ++#elif defined(__SUNPRO_C) ++# define COMPILER_ID "SunPro" ++# if __SUNPRO_C >= 0x5100 ++ /* __SUNPRO_C = 0xVRRP */ ++# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) ++# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) ++# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) ++# else ++ /* __SUNPRO_CC = 0xVRP */ ++# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) ++# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) ++# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) ++# endif ++ ++#elif defined(__HP_cc) ++# define COMPILER_ID "HP" ++ /* __HP_cc = VVRRPP */ ++# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) ++# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) ++# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) ++ ++#elif defined(__DECC) ++# define COMPILER_ID "Compaq" ++ /* __DECC_VER = VVRRTPPPP */ ++# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) ++# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) ++# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) ++ ++#elif defined(__IBMC__) && defined(__COMPILER_VER__) ++# define COMPILER_ID "zOS" ++ /* __IBMC__ = VRP */ ++# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) ++# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) ++# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) ++ ++#elif defined(__open_xl__) && defined(__clang__) ++# define COMPILER_ID "IBMClang" ++# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) ++# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) ++# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) ++# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) ++ ++ ++#elif defined(__ibmxl__) && defined(__clang__) ++# define COMPILER_ID "XLClang" ++# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) ++# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) ++# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) ++# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) ++ ++ ++#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 ++# define COMPILER_ID "XL" ++ /* __IBMC__ = VRP */ ++# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) ++# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) ++# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) ++ ++#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 ++# define COMPILER_ID "VisualAge" ++ /* __IBMC__ = VRP */ ++# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) ++# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) ++# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) ++ ++#elif defined(__NVCOMPILER) ++# define COMPILER_ID "NVHPC" ++# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) ++# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) ++# if defined(__NVCOMPILER_PATCHLEVEL__) ++# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) ++# endif ++ ++#elif defined(__PGI) ++# define COMPILER_ID "PGI" ++# define COMPILER_VERSION_MAJOR DEC(__PGIC__) ++# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) ++# if defined(__PGIC_PATCHLEVEL__) ++# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) ++# endif ++ ++#elif defined(__clang__) && defined(__cray__) ++# define COMPILER_ID "CrayClang" ++# define COMPILER_VERSION_MAJOR DEC(__cray_major__) ++# define COMPILER_VERSION_MINOR DEC(__cray_minor__) ++# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__) ++# define COMPILER_VERSION_INTERNAL_STR __clang_version__ ++ ++ ++#elif defined(_CRAYC) ++# define COMPILER_ID "Cray" ++# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) ++# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) ++ ++#elif defined(__TI_COMPILER_VERSION__) ++# define COMPILER_ID "TI" ++ /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ ++# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) ++# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) ++# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) ++ ++#elif defined(__CLANG_FUJITSU) ++# define COMPILER_ID "FujitsuClang" ++# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) ++# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) ++# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) ++# define COMPILER_VERSION_INTERNAL_STR __clang_version__ ++ ++ ++#elif defined(__FUJITSU) ++# define COMPILER_ID "Fujitsu" ++# if defined(__FCC_version__) ++# define COMPILER_VERSION __FCC_version__ ++# elif defined(__FCC_major__) ++# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) ++# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) ++# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) ++# endif ++# if defined(__fcc_version) ++# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) ++# elif defined(__FCC_VERSION) ++# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) ++# endif ++ ++ ++#elif defined(__ghs__) ++# define COMPILER_ID "GHS" ++/* __GHS_VERSION_NUMBER = VVVVRP */ ++# ifdef __GHS_VERSION_NUMBER ++# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) ++# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) ++# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) ++# endif ++ ++#elif defined(__TASKING__) ++# define COMPILER_ID "Tasking" ++ # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) ++ # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) ++# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) ++ ++#elif defined(__ORANGEC__) ++# define COMPILER_ID "OrangeC" ++# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__) ++# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__) ++# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__) ++ ++#elif defined(__TINYC__) ++# define COMPILER_ID "TinyCC" ++ ++#elif defined(__BCC__) ++# define COMPILER_ID "Bruce" ++ ++#elif defined(__SCO_VERSION__) ++# define COMPILER_ID "SCO" ++ ++#elif defined(__ARMCC_VERSION) && !defined(__clang__) ++# define COMPILER_ID "ARMCC" ++#if __ARMCC_VERSION >= 1000000 ++ /* __ARMCC_VERSION = VRRPPPP */ ++ # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) ++ # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) ++ # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) ++#else ++ /* __ARMCC_VERSION = VRPPPP */ ++ # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) ++ # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) ++ # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) ++#endif ++ ++ ++#elif defined(__clang__) && defined(__apple_build_version__) ++# define COMPILER_ID "AppleClang" ++# if defined(_MSC_VER) ++# define SIMULATE_ID "MSVC" ++# endif ++# define COMPILER_VERSION_MAJOR DEC(__clang_major__) ++# define COMPILER_VERSION_MINOR DEC(__clang_minor__) ++# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) ++# if defined(_MSC_VER) ++ /* _MSC_VER = VVRR */ ++# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) ++# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) ++# endif ++# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) ++ ++#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) ++# define COMPILER_ID "ARMClang" ++ # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) ++ # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) ++ # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100 % 100) ++# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) ++ ++#elif defined(__clang__) && defined(__ti__) ++# define COMPILER_ID "TIClang" ++ # define COMPILER_VERSION_MAJOR DEC(__ti_major__) ++ # define COMPILER_VERSION_MINOR DEC(__ti_minor__) ++ # define COMPILER_VERSION_PATCH DEC(__ti_patchlevel__) ++# define COMPILER_VERSION_INTERNAL DEC(__ti_version__) ++ ++#elif defined(__clang__) ++# define COMPILER_ID "Clang" ++# if defined(_MSC_VER) ++# define SIMULATE_ID "MSVC" ++# endif ++# define COMPILER_VERSION_MAJOR DEC(__clang_major__) ++# define COMPILER_VERSION_MINOR DEC(__clang_minor__) ++# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) ++# if defined(_MSC_VER) ++ /* _MSC_VER = VVRR */ ++# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) ++# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) ++# endif ++ ++#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) ++# define COMPILER_ID "LCC" ++# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) ++# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) ++# if defined(__LCC_MINOR__) ++# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) ++# endif ++# if defined(__GNUC__) && defined(__GNUC_MINOR__) ++# define SIMULATE_ID "GNU" ++# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) ++# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) ++# if defined(__GNUC_PATCHLEVEL__) ++# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) ++# endif ++# endif ++ ++#elif defined(__GNUC__) ++# define COMPILER_ID "GNU" ++# define COMPILER_VERSION_MAJOR DEC(__GNUC__) ++# if defined(__GNUC_MINOR__) ++# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) ++# endif ++# if defined(__GNUC_PATCHLEVEL__) ++# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) ++# endif ++ ++#elif defined(_MSC_VER) ++# define COMPILER_ID "MSVC" ++ /* _MSC_VER = VVRR */ ++# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) ++# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) ++# if defined(_MSC_FULL_VER) ++# if _MSC_VER >= 1400 ++ /* _MSC_FULL_VER = VVRRPPPPP */ ++# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) ++# else ++ /* _MSC_FULL_VER = VVRRPPPP */ ++# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) ++# endif ++# endif ++# if defined(_MSC_BUILD) ++# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) ++# endif ++ ++#elif defined(_ADI_COMPILER) ++# define COMPILER_ID "ADSP" ++#if defined(__VERSIONNUM__) ++ /* __VERSIONNUM__ = 0xVVRRPPTT */ ++# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) ++# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) ++# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) ++# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) ++#endif ++ ++#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) ++# define COMPILER_ID "IAR" ++# if defined(__VER__) && defined(__ICCARM__) ++# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) ++# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) ++# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) ++# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) ++# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) ++# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) ++# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) ++# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) ++# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) ++# endif ++ ++#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) ++# define COMPILER_ID "SDCC" ++# if defined(__SDCC_VERSION_MAJOR) ++# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) ++# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) ++# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) ++# else ++ /* SDCC = VRP */ ++# define COMPILER_VERSION_MAJOR DEC(SDCC/100) ++# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) ++# define COMPILER_VERSION_PATCH DEC(SDCC % 10) ++# endif ++ ++ ++/* These compilers are either not known or too old to define an ++ identification macro. Try to identify the platform and guess that ++ it is the native compiler. */ ++#elif defined(__hpux) || defined(__hpua) ++# define COMPILER_ID "HP" ++ ++#else /* unknown compiler */ ++# define COMPILER_ID "" ++#endif ++ ++/* Construct the string literal in pieces to prevent the source from ++ getting matched. Store it in a pointer rather than an array ++ because some compilers will just produce instructions to fill the ++ array rather than assigning a pointer to a static array. */ ++char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; ++#ifdef SIMULATE_ID ++char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; ++#endif ++ ++#ifdef __QNXNTO__ ++char const* qnxnto = "INFO" ":" "qnxnto[]"; ++#endif ++ ++#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) ++char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; ++#endif ++ ++#define STRINGIFY_HELPER(X) #X ++#define STRINGIFY(X) STRINGIFY_HELPER(X) ++ ++/* Identify known platforms by name. */ ++#if defined(__linux) || defined(__linux__) || defined(linux) ++# define PLATFORM_ID "Linux" ++ ++#elif defined(__MSYS__) ++# define PLATFORM_ID "MSYS" ++ ++#elif defined(__CYGWIN__) ++# define PLATFORM_ID "Cygwin" ++ ++#elif defined(__MINGW32__) ++# define PLATFORM_ID "MinGW" ++ ++#elif defined(__APPLE__) ++# define PLATFORM_ID "Darwin" ++ ++#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) ++# define PLATFORM_ID "Windows" ++ ++#elif defined(__FreeBSD__) || defined(__FreeBSD) ++# define PLATFORM_ID "FreeBSD" ++ ++#elif defined(__NetBSD__) || defined(__NetBSD) ++# define PLATFORM_ID "NetBSD" ++ ++#elif defined(__OpenBSD__) || defined(__OPENBSD) ++# define PLATFORM_ID "OpenBSD" ++ ++#elif defined(__sun) || defined(sun) ++# define PLATFORM_ID "SunOS" ++ ++#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) ++# define PLATFORM_ID "AIX" ++ ++#elif defined(__hpux) || defined(__hpux__) ++# define PLATFORM_ID "HP-UX" ++ ++#elif defined(__HAIKU__) ++# define PLATFORM_ID "Haiku" ++ ++#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) ++# define PLATFORM_ID "BeOS" ++ ++#elif defined(__QNX__) || defined(__QNXNTO__) ++# define PLATFORM_ID "QNX" ++ ++#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) ++# define PLATFORM_ID "Tru64" ++ ++#elif defined(__riscos) || defined(__riscos__) ++# define PLATFORM_ID "RISCos" ++ ++#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) ++# define PLATFORM_ID "SINIX" ++ ++#elif defined(__UNIX_SV__) ++# define PLATFORM_ID "UNIX_SV" ++ ++#elif defined(__bsdos__) ++# define PLATFORM_ID "BSDOS" ++ ++#elif defined(_MPRAS) || defined(MPRAS) ++# define PLATFORM_ID "MP-RAS" ++ ++#elif defined(__osf) || defined(__osf__) ++# define PLATFORM_ID "OSF1" ++ ++#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) ++# define PLATFORM_ID "SCO_SV" ++ ++#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) ++# define PLATFORM_ID "ULTRIX" ++ ++#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) ++# define PLATFORM_ID "Xenix" ++ ++#elif defined(__WATCOMC__) ++# if defined(__LINUX__) ++# define PLATFORM_ID "Linux" ++ ++# elif defined(__DOS__) ++# define PLATFORM_ID "DOS" ++ ++# elif defined(__OS2__) ++# define PLATFORM_ID "OS2" ++ ++# elif defined(__WINDOWS__) ++# define PLATFORM_ID "Windows3x" ++ ++# elif defined(__VXWORKS__) ++# define PLATFORM_ID "VxWorks" ++ ++# else /* unknown platform */ ++# define PLATFORM_ID ++# endif ++ ++#elif defined(__INTEGRITY) ++# if defined(INT_178B) ++# define PLATFORM_ID "Integrity178" ++ ++# else /* regular Integrity */ ++# define PLATFORM_ID "Integrity" ++# endif ++ ++# elif defined(_ADI_COMPILER) ++# define PLATFORM_ID "ADSP" ++ ++#else /* unknown platform */ ++# define PLATFORM_ID ++ ++#endif ++ ++/* For windows compilers MSVC and Intel we can determine ++ the architecture of the compiler being used. This is because ++ the compilers do not have flags that can change the architecture, ++ but rather depend on which compiler is being used ++*/ ++#if defined(_WIN32) && defined(_MSC_VER) ++# if defined(_M_IA64) ++# define ARCHITECTURE_ID "IA64" ++ ++# elif defined(_M_ARM64EC) ++# define ARCHITECTURE_ID "ARM64EC" ++ ++# elif defined(_M_X64) || defined(_M_AMD64) ++# define ARCHITECTURE_ID "x64" ++ ++# elif defined(_M_IX86) ++# define ARCHITECTURE_ID "X86" ++ ++# elif defined(_M_ARM64) ++# define ARCHITECTURE_ID "ARM64" ++ ++# elif defined(_M_ARM) ++# if _M_ARM == 4 ++# define ARCHITECTURE_ID "ARMV4I" ++# elif _M_ARM == 5 ++# define ARCHITECTURE_ID "ARMV5I" ++# else ++# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) ++# endif ++ ++# elif defined(_M_MIPS) ++# define ARCHITECTURE_ID "MIPS" ++ ++# elif defined(_M_SH) ++# define ARCHITECTURE_ID "SHx" ++ ++# else /* unknown architecture */ ++# define ARCHITECTURE_ID "" ++# endif ++ ++#elif defined(__WATCOMC__) ++# if defined(_M_I86) ++# define ARCHITECTURE_ID "I86" ++ ++# elif defined(_M_IX86) ++# define ARCHITECTURE_ID "X86" ++ ++# else /* unknown architecture */ ++# define ARCHITECTURE_ID "" ++# endif ++ ++#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) ++# if defined(__ICCARM__) ++# define ARCHITECTURE_ID "ARM" ++ ++# elif defined(__ICCRX__) ++# define ARCHITECTURE_ID "RX" ++ ++# elif defined(__ICCRH850__) ++# define ARCHITECTURE_ID "RH850" ++ ++# elif defined(__ICCRL78__) ++# define ARCHITECTURE_ID "RL78" ++ ++# elif defined(__ICCRISCV__) ++# define ARCHITECTURE_ID "RISCV" ++ ++# elif defined(__ICCAVR__) ++# define ARCHITECTURE_ID "AVR" ++ ++# elif defined(__ICC430__) ++# define ARCHITECTURE_ID "MSP430" ++ ++# elif defined(__ICCV850__) ++# define ARCHITECTURE_ID "V850" ++ ++# elif defined(__ICC8051__) ++# define ARCHITECTURE_ID "8051" ++ ++# elif defined(__ICCSTM8__) ++# define ARCHITECTURE_ID "STM8" ++ ++# else /* unknown architecture */ ++# define ARCHITECTURE_ID "" ++# endif ++ ++#elif defined(__ghs__) ++# if defined(__PPC64__) ++# define ARCHITECTURE_ID "PPC64" ++ ++# elif defined(__ppc__) ++# define ARCHITECTURE_ID "PPC" ++ ++# elif defined(__ARM__) ++# define ARCHITECTURE_ID "ARM" ++ ++# elif defined(__x86_64__) ++# define ARCHITECTURE_ID "x64" ++ ++# elif defined(__i386__) ++# define ARCHITECTURE_ID "X86" ++ ++# else /* unknown architecture */ ++# define ARCHITECTURE_ID "" ++# endif ++ ++#elif defined(__clang__) && defined(__ti__) ++# if defined(__ARM_ARCH) ++# define ARCHITECTURE_ID "ARM" ++ ++# else /* unknown architecture */ ++# define ARCHITECTURE_ID "" ++# endif ++ ++#elif defined(__TI_COMPILER_VERSION__) ++# if defined(__TI_ARM__) ++# define ARCHITECTURE_ID "ARM" ++ ++# elif defined(__MSP430__) ++# define ARCHITECTURE_ID "MSP430" ++ ++# elif defined(__TMS320C28XX__) ++# define ARCHITECTURE_ID "TMS320C28x" ++ ++# elif defined(__TMS320C6X__) || defined(_TMS320C6X) ++# define ARCHITECTURE_ID "TMS320C6x" ++ ++# else /* unknown architecture */ ++# define ARCHITECTURE_ID "" ++# endif ++ ++# elif defined(__ADSPSHARC__) ++# define ARCHITECTURE_ID "SHARC" ++ ++# elif defined(__ADSPBLACKFIN__) ++# define ARCHITECTURE_ID "Blackfin" ++ ++#elif defined(__TASKING__) ++ ++# if defined(__CTC__) || defined(__CPTC__) ++# define ARCHITECTURE_ID "TriCore" ++ ++# elif defined(__CMCS__) ++# define ARCHITECTURE_ID "MCS" ++ ++# elif defined(__CARM__) ++# define ARCHITECTURE_ID "ARM" ++ ++# elif defined(__CARC__) ++# define ARCHITECTURE_ID "ARC" ++ ++# elif defined(__C51__) ++# define ARCHITECTURE_ID "8051" ++ ++# elif defined(__CPCP__) ++# define ARCHITECTURE_ID "PCP" ++ ++# else ++# define ARCHITECTURE_ID "" ++# endif ++ ++#else ++# define ARCHITECTURE_ID ++#endif ++ ++/* Convert integer to decimal digit literals. */ ++#define DEC(n) \ ++ ('0' + (((n) / 10000000)%10)), \ ++ ('0' + (((n) / 1000000)%10)), \ ++ ('0' + (((n) / 100000)%10)), \ ++ ('0' + (((n) / 10000)%10)), \ ++ ('0' + (((n) / 1000)%10)), \ ++ ('0' + (((n) / 100)%10)), \ ++ ('0' + (((n) / 10)%10)), \ ++ ('0' + ((n) % 10)) ++ ++/* Convert integer to hex digit literals. */ ++#define HEX(n) \ ++ ('0' + ((n)>>28 & 0xF)), \ ++ ('0' + ((n)>>24 & 0xF)), \ ++ ('0' + ((n)>>20 & 0xF)), \ ++ ('0' + ((n)>>16 & 0xF)), \ ++ ('0' + ((n)>>12 & 0xF)), \ ++ ('0' + ((n)>>8 & 0xF)), \ ++ ('0' + ((n)>>4 & 0xF)), \ ++ ('0' + ((n) & 0xF)) ++ ++/* Construct a string literal encoding the version number. */ ++#ifdef COMPILER_VERSION ++char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; ++ ++/* Construct a string literal encoding the version number components. */ ++#elif defined(COMPILER_VERSION_MAJOR) ++char const info_version[] = { ++ 'I', 'N', 'F', 'O', ':', ++ 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', ++ COMPILER_VERSION_MAJOR, ++# ifdef COMPILER_VERSION_MINOR ++ '.', COMPILER_VERSION_MINOR, ++# ifdef COMPILER_VERSION_PATCH ++ '.', COMPILER_VERSION_PATCH, ++# ifdef COMPILER_VERSION_TWEAK ++ '.', COMPILER_VERSION_TWEAK, ++# endif ++# endif ++# endif ++ ']','\0'}; ++#endif ++ ++/* Construct a string literal encoding the internal version number. */ ++#ifdef COMPILER_VERSION_INTERNAL ++char const info_version_internal[] = { ++ 'I', 'N', 'F', 'O', ':', ++ 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', ++ 'i','n','t','e','r','n','a','l','[', ++ COMPILER_VERSION_INTERNAL,']','\0'}; ++#elif defined(COMPILER_VERSION_INTERNAL_STR) ++char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; ++#endif ++ ++/* Construct a string literal encoding the version number components. */ ++#ifdef SIMULATE_VERSION_MAJOR ++char const info_simulate_version[] = { ++ 'I', 'N', 'F', 'O', ':', ++ 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', ++ SIMULATE_VERSION_MAJOR, ++# ifdef SIMULATE_VERSION_MINOR ++ '.', SIMULATE_VERSION_MINOR, ++# ifdef SIMULATE_VERSION_PATCH ++ '.', SIMULATE_VERSION_PATCH, ++# ifdef SIMULATE_VERSION_TWEAK ++ '.', SIMULATE_VERSION_TWEAK, ++# endif ++# endif ++# endif ++ ']','\0'}; ++#endif ++ ++/* Construct the string literal in pieces to prevent the source from ++ getting matched. Store it in a pointer rather than an array ++ because some compilers will just produce instructions to fill the ++ array rather than assigning a pointer to a static array. */ ++char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; ++char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; ++ ++ ++ ++#define C_STD_99 199901L ++#define C_STD_11 201112L ++#define C_STD_17 201710L ++#define C_STD_23 202311L ++ ++#ifdef __STDC_VERSION__ ++# define C_STD __STDC_VERSION__ ++#endif ++ ++#if !defined(__STDC__) && !defined(__clang__) ++# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) ++# define C_VERSION "90" ++# else ++# define C_VERSION ++# endif ++#elif C_STD > C_STD_17 ++# define C_VERSION "23" ++#elif C_STD > C_STD_11 ++# define C_VERSION "17" ++#elif C_STD > C_STD_99 ++# define C_VERSION "11" ++#elif C_STD >= C_STD_99 ++# define C_VERSION "99" ++#else ++# define C_VERSION "90" ++#endif ++const char* info_language_standard_default = ++ "INFO" ":" "standard_default[" C_VERSION "]"; ++ ++const char* info_language_extensions_default = "INFO" ":" "extensions_default[" ++#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ ++ defined(__TI_COMPILER_VERSION__)) && \ ++ !defined(__STRICT_ANSI__) ++ "ON" ++#else ++ "OFF" ++#endif ++"]"; ++ ++/*--------------------------------------------------------------------------*/ ++ ++#ifdef ID_VOID_MAIN ++void main() {} ++#else ++# if defined(__CLASSIC_C__) ++int main(argc, argv) int argc; char *argv[]; ++# else ++int main(int argc, char* argv[]) ++# endif ++{ ++ int require = 0; ++ require += info_compiler[argc]; ++ require += info_platform[argc]; ++ require += info_arch[argc]; ++#ifdef COMPILER_VERSION_MAJOR ++ require += info_version[argc]; ++#endif ++#ifdef COMPILER_VERSION_INTERNAL ++ require += info_version_internal[argc]; ++#endif ++#ifdef SIMULATE_ID ++ require += info_simulate[argc]; ++#endif ++#ifdef SIMULATE_VERSION_MAJOR ++ require += info_simulate_version[argc]; ++#endif ++#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) ++ require += info_cray[argc]; ++#endif ++ require += info_language_standard_default[argc]; ++ require += info_language_extensions_default[argc]; ++ (void)argv; ++ return require; ++} ++#endif +Binary files /workspace/epanet_upstream/build/CMakeFiles/3.31.6/CompilerIdCXX/a.out and /workspace/epanet/build/CMakeFiles/3.31.6/CompilerIdCXX/a.out differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/3.31.6/CompilerIdCXX/CMakeCXXCompilerId.cpp /workspace/epanet/build/CMakeFiles/3.31.6/CompilerIdCXX/CMakeCXXCompilerId.cpp +--- /workspace/epanet_upstream/build/CMakeFiles/3.31.6/CompilerIdCXX/CMakeCXXCompilerId.cpp 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/3.31.6/CompilerIdCXX/CMakeCXXCompilerId.cpp 2025-08-10 02:49:32.874680038 +0000 +@@ -0,0 +1,919 @@ ++/* This source file must have a .cpp extension so that all C++ compilers ++ recognize the extension without flags. Borland does not know .cxx for ++ example. */ ++#ifndef __cplusplus ++# error "A C compiler has been selected for C++." ++#endif ++ ++#if !defined(__has_include) ++/* If the compiler does not have __has_include, pretend the answer is ++ always no. */ ++# define __has_include(x) 0 ++#endif ++ ++ ++/* Version number components: V=Version, R=Revision, P=Patch ++ Version date components: YYYY=Year, MM=Month, DD=Day */ ++ ++#if defined(__INTEL_COMPILER) || defined(__ICC) ++# define COMPILER_ID "Intel" ++# if defined(_MSC_VER) ++# define SIMULATE_ID "MSVC" ++# endif ++# if defined(__GNUC__) ++# define SIMULATE_ID "GNU" ++# endif ++ /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, ++ except that a few beta releases use the old format with V=2021. */ ++# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 ++# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) ++# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) ++# if defined(__INTEL_COMPILER_UPDATE) ++# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) ++# else ++# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) ++# endif ++# else ++# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) ++# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) ++ /* The third version component from --version is an update index, ++ but no macro is provided for it. */ ++# define COMPILER_VERSION_PATCH DEC(0) ++# endif ++# if defined(__INTEL_COMPILER_BUILD_DATE) ++ /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ ++# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) ++# endif ++# if defined(_MSC_VER) ++ /* _MSC_VER = VVRR */ ++# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) ++# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) ++# endif ++# if defined(__GNUC__) ++# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) ++# elif defined(__GNUG__) ++# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) ++# endif ++# if defined(__GNUC_MINOR__) ++# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) ++# endif ++# if defined(__GNUC_PATCHLEVEL__) ++# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) ++# endif ++ ++#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) ++# define COMPILER_ID "IntelLLVM" ++#if defined(_MSC_VER) ++# define SIMULATE_ID "MSVC" ++#endif ++#if defined(__GNUC__) ++# define SIMULATE_ID "GNU" ++#endif ++/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and ++ * later. Look for 6 digit vs. 8 digit version number to decide encoding. ++ * VVVV is no smaller than the current year when a version is released. ++ */ ++#if __INTEL_LLVM_COMPILER < 1000000L ++# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) ++# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) ++# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) ++#else ++# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) ++# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) ++# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) ++#endif ++#if defined(_MSC_VER) ++ /* _MSC_VER = VVRR */ ++# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) ++# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) ++#endif ++#if defined(__GNUC__) ++# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) ++#elif defined(__GNUG__) ++# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) ++#endif ++#if defined(__GNUC_MINOR__) ++# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) ++#endif ++#if defined(__GNUC_PATCHLEVEL__) ++# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) ++#endif ++ ++#elif defined(__PATHCC__) ++# define COMPILER_ID "PathScale" ++# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) ++# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) ++# if defined(__PATHCC_PATCHLEVEL__) ++# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) ++# endif ++ ++#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) ++# define COMPILER_ID "Embarcadero" ++# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) ++# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) ++# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) ++ ++#elif defined(__BORLANDC__) ++# define COMPILER_ID "Borland" ++ /* __BORLANDC__ = 0xVRR */ ++# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) ++# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) ++ ++#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 ++# define COMPILER_ID "Watcom" ++ /* __WATCOMC__ = VVRR */ ++# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) ++# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) ++# if (__WATCOMC__ % 10) > 0 ++# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) ++# endif ++ ++#elif defined(__WATCOMC__) ++# define COMPILER_ID "OpenWatcom" ++ /* __WATCOMC__ = VVRP + 1100 */ ++# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) ++# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) ++# if (__WATCOMC__ % 10) > 0 ++# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) ++# endif ++ ++#elif defined(__SUNPRO_CC) ++# define COMPILER_ID "SunPro" ++# if __SUNPRO_CC >= 0x5100 ++ /* __SUNPRO_CC = 0xVRRP */ ++# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) ++# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) ++# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) ++# else ++ /* __SUNPRO_CC = 0xVRP */ ++# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) ++# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) ++# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) ++# endif ++ ++#elif defined(__HP_aCC) ++# define COMPILER_ID "HP" ++ /* __HP_aCC = VVRRPP */ ++# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) ++# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) ++# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) ++ ++#elif defined(__DECCXX) ++# define COMPILER_ID "Compaq" ++ /* __DECCXX_VER = VVRRTPPPP */ ++# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) ++# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) ++# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) ++ ++#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) ++# define COMPILER_ID "zOS" ++ /* __IBMCPP__ = VRP */ ++# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) ++# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) ++# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) ++ ++#elif defined(__open_xl__) && defined(__clang__) ++# define COMPILER_ID "IBMClang" ++# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) ++# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) ++# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) ++# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) ++ ++ ++#elif defined(__ibmxl__) && defined(__clang__) ++# define COMPILER_ID "XLClang" ++# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) ++# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) ++# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) ++# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) ++ ++ ++#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 ++# define COMPILER_ID "XL" ++ /* __IBMCPP__ = VRP */ ++# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) ++# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) ++# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) ++ ++#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 ++# define COMPILER_ID "VisualAge" ++ /* __IBMCPP__ = VRP */ ++# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) ++# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) ++# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) ++ ++#elif defined(__NVCOMPILER) ++# define COMPILER_ID "NVHPC" ++# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) ++# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) ++# if defined(__NVCOMPILER_PATCHLEVEL__) ++# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) ++# endif ++ ++#elif defined(__PGI) ++# define COMPILER_ID "PGI" ++# define COMPILER_VERSION_MAJOR DEC(__PGIC__) ++# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) ++# if defined(__PGIC_PATCHLEVEL__) ++# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) ++# endif ++ ++#elif defined(__clang__) && defined(__cray__) ++# define COMPILER_ID "CrayClang" ++# define COMPILER_VERSION_MAJOR DEC(__cray_major__) ++# define COMPILER_VERSION_MINOR DEC(__cray_minor__) ++# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__) ++# define COMPILER_VERSION_INTERNAL_STR __clang_version__ ++ ++ ++#elif defined(_CRAYC) ++# define COMPILER_ID "Cray" ++# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) ++# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) ++ ++#elif defined(__TI_COMPILER_VERSION__) ++# define COMPILER_ID "TI" ++ /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ ++# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) ++# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) ++# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) ++ ++#elif defined(__CLANG_FUJITSU) ++# define COMPILER_ID "FujitsuClang" ++# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) ++# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) ++# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) ++# define COMPILER_VERSION_INTERNAL_STR __clang_version__ ++ ++ ++#elif defined(__FUJITSU) ++# define COMPILER_ID "Fujitsu" ++# if defined(__FCC_version__) ++# define COMPILER_VERSION __FCC_version__ ++# elif defined(__FCC_major__) ++# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) ++# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) ++# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) ++# endif ++# if defined(__fcc_version) ++# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) ++# elif defined(__FCC_VERSION) ++# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) ++# endif ++ ++ ++#elif defined(__ghs__) ++# define COMPILER_ID "GHS" ++/* __GHS_VERSION_NUMBER = VVVVRP */ ++# ifdef __GHS_VERSION_NUMBER ++# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) ++# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) ++# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) ++# endif ++ ++#elif defined(__TASKING__) ++# define COMPILER_ID "Tasking" ++ # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) ++ # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) ++# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) ++ ++#elif defined(__ORANGEC__) ++# define COMPILER_ID "OrangeC" ++# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__) ++# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__) ++# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__) ++ ++#elif defined(__SCO_VERSION__) ++# define COMPILER_ID "SCO" ++ ++#elif defined(__ARMCC_VERSION) && !defined(__clang__) ++# define COMPILER_ID "ARMCC" ++#if __ARMCC_VERSION >= 1000000 ++ /* __ARMCC_VERSION = VRRPPPP */ ++ # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) ++ # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) ++ # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) ++#else ++ /* __ARMCC_VERSION = VRPPPP */ ++ # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) ++ # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) ++ # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) ++#endif ++ ++ ++#elif defined(__clang__) && defined(__apple_build_version__) ++# define COMPILER_ID "AppleClang" ++# if defined(_MSC_VER) ++# define SIMULATE_ID "MSVC" ++# endif ++# define COMPILER_VERSION_MAJOR DEC(__clang_major__) ++# define COMPILER_VERSION_MINOR DEC(__clang_minor__) ++# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) ++# if defined(_MSC_VER) ++ /* _MSC_VER = VVRR */ ++# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) ++# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) ++# endif ++# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) ++ ++#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) ++# define COMPILER_ID "ARMClang" ++ # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) ++ # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) ++ # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100 % 100) ++# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) ++ ++#elif defined(__clang__) && defined(__ti__) ++# define COMPILER_ID "TIClang" ++ # define COMPILER_VERSION_MAJOR DEC(__ti_major__) ++ # define COMPILER_VERSION_MINOR DEC(__ti_minor__) ++ # define COMPILER_VERSION_PATCH DEC(__ti_patchlevel__) ++# define COMPILER_VERSION_INTERNAL DEC(__ti_version__) ++ ++#elif defined(__clang__) ++# define COMPILER_ID "Clang" ++# if defined(_MSC_VER) ++# define SIMULATE_ID "MSVC" ++# endif ++# define COMPILER_VERSION_MAJOR DEC(__clang_major__) ++# define COMPILER_VERSION_MINOR DEC(__clang_minor__) ++# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) ++# if defined(_MSC_VER) ++ /* _MSC_VER = VVRR */ ++# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) ++# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) ++# endif ++ ++#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) ++# define COMPILER_ID "LCC" ++# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) ++# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) ++# if defined(__LCC_MINOR__) ++# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) ++# endif ++# if defined(__GNUC__) && defined(__GNUC_MINOR__) ++# define SIMULATE_ID "GNU" ++# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) ++# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) ++# if defined(__GNUC_PATCHLEVEL__) ++# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) ++# endif ++# endif ++ ++#elif defined(__GNUC__) || defined(__GNUG__) ++# define COMPILER_ID "GNU" ++# if defined(__GNUC__) ++# define COMPILER_VERSION_MAJOR DEC(__GNUC__) ++# else ++# define COMPILER_VERSION_MAJOR DEC(__GNUG__) ++# endif ++# if defined(__GNUC_MINOR__) ++# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) ++# endif ++# if defined(__GNUC_PATCHLEVEL__) ++# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) ++# endif ++ ++#elif defined(_MSC_VER) ++# define COMPILER_ID "MSVC" ++ /* _MSC_VER = VVRR */ ++# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) ++# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) ++# if defined(_MSC_FULL_VER) ++# if _MSC_VER >= 1400 ++ /* _MSC_FULL_VER = VVRRPPPPP */ ++# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) ++# else ++ /* _MSC_FULL_VER = VVRRPPPP */ ++# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) ++# endif ++# endif ++# if defined(_MSC_BUILD) ++# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) ++# endif ++ ++#elif defined(_ADI_COMPILER) ++# define COMPILER_ID "ADSP" ++#if defined(__VERSIONNUM__) ++ /* __VERSIONNUM__ = 0xVVRRPPTT */ ++# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) ++# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) ++# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) ++# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) ++#endif ++ ++#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) ++# define COMPILER_ID "IAR" ++# if defined(__VER__) && defined(__ICCARM__) ++# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) ++# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) ++# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) ++# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) ++# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) ++# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) ++# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) ++# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) ++# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) ++# endif ++ ++ ++/* These compilers are either not known or too old to define an ++ identification macro. Try to identify the platform and guess that ++ it is the native compiler. */ ++#elif defined(__hpux) || defined(__hpua) ++# define COMPILER_ID "HP" ++ ++#else /* unknown compiler */ ++# define COMPILER_ID "" ++#endif ++ ++/* Construct the string literal in pieces to prevent the source from ++ getting matched. Store it in a pointer rather than an array ++ because some compilers will just produce instructions to fill the ++ array rather than assigning a pointer to a static array. */ ++char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; ++#ifdef SIMULATE_ID ++char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; ++#endif ++ ++#ifdef __QNXNTO__ ++char const* qnxnto = "INFO" ":" "qnxnto[]"; ++#endif ++ ++#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) ++char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; ++#endif ++ ++#define STRINGIFY_HELPER(X) #X ++#define STRINGIFY(X) STRINGIFY_HELPER(X) ++ ++/* Identify known platforms by name. */ ++#if defined(__linux) || defined(__linux__) || defined(linux) ++# define PLATFORM_ID "Linux" ++ ++#elif defined(__MSYS__) ++# define PLATFORM_ID "MSYS" ++ ++#elif defined(__CYGWIN__) ++# define PLATFORM_ID "Cygwin" ++ ++#elif defined(__MINGW32__) ++# define PLATFORM_ID "MinGW" ++ ++#elif defined(__APPLE__) ++# define PLATFORM_ID "Darwin" ++ ++#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) ++# define PLATFORM_ID "Windows" ++ ++#elif defined(__FreeBSD__) || defined(__FreeBSD) ++# define PLATFORM_ID "FreeBSD" ++ ++#elif defined(__NetBSD__) || defined(__NetBSD) ++# define PLATFORM_ID "NetBSD" ++ ++#elif defined(__OpenBSD__) || defined(__OPENBSD) ++# define PLATFORM_ID "OpenBSD" ++ ++#elif defined(__sun) || defined(sun) ++# define PLATFORM_ID "SunOS" ++ ++#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) ++# define PLATFORM_ID "AIX" ++ ++#elif defined(__hpux) || defined(__hpux__) ++# define PLATFORM_ID "HP-UX" ++ ++#elif defined(__HAIKU__) ++# define PLATFORM_ID "Haiku" ++ ++#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) ++# define PLATFORM_ID "BeOS" ++ ++#elif defined(__QNX__) || defined(__QNXNTO__) ++# define PLATFORM_ID "QNX" ++ ++#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) ++# define PLATFORM_ID "Tru64" ++ ++#elif defined(__riscos) || defined(__riscos__) ++# define PLATFORM_ID "RISCos" ++ ++#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) ++# define PLATFORM_ID "SINIX" ++ ++#elif defined(__UNIX_SV__) ++# define PLATFORM_ID "UNIX_SV" ++ ++#elif defined(__bsdos__) ++# define PLATFORM_ID "BSDOS" ++ ++#elif defined(_MPRAS) || defined(MPRAS) ++# define PLATFORM_ID "MP-RAS" ++ ++#elif defined(__osf) || defined(__osf__) ++# define PLATFORM_ID "OSF1" ++ ++#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) ++# define PLATFORM_ID "SCO_SV" ++ ++#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) ++# define PLATFORM_ID "ULTRIX" ++ ++#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) ++# define PLATFORM_ID "Xenix" ++ ++#elif defined(__WATCOMC__) ++# if defined(__LINUX__) ++# define PLATFORM_ID "Linux" ++ ++# elif defined(__DOS__) ++# define PLATFORM_ID "DOS" ++ ++# elif defined(__OS2__) ++# define PLATFORM_ID "OS2" ++ ++# elif defined(__WINDOWS__) ++# define PLATFORM_ID "Windows3x" ++ ++# elif defined(__VXWORKS__) ++# define PLATFORM_ID "VxWorks" ++ ++# else /* unknown platform */ ++# define PLATFORM_ID ++# endif ++ ++#elif defined(__INTEGRITY) ++# if defined(INT_178B) ++# define PLATFORM_ID "Integrity178" ++ ++# else /* regular Integrity */ ++# define PLATFORM_ID "Integrity" ++# endif ++ ++# elif defined(_ADI_COMPILER) ++# define PLATFORM_ID "ADSP" ++ ++#else /* unknown platform */ ++# define PLATFORM_ID ++ ++#endif ++ ++/* For windows compilers MSVC and Intel we can determine ++ the architecture of the compiler being used. This is because ++ the compilers do not have flags that can change the architecture, ++ but rather depend on which compiler is being used ++*/ ++#if defined(_WIN32) && defined(_MSC_VER) ++# if defined(_M_IA64) ++# define ARCHITECTURE_ID "IA64" ++ ++# elif defined(_M_ARM64EC) ++# define ARCHITECTURE_ID "ARM64EC" ++ ++# elif defined(_M_X64) || defined(_M_AMD64) ++# define ARCHITECTURE_ID "x64" ++ ++# elif defined(_M_IX86) ++# define ARCHITECTURE_ID "X86" ++ ++# elif defined(_M_ARM64) ++# define ARCHITECTURE_ID "ARM64" ++ ++# elif defined(_M_ARM) ++# if _M_ARM == 4 ++# define ARCHITECTURE_ID "ARMV4I" ++# elif _M_ARM == 5 ++# define ARCHITECTURE_ID "ARMV5I" ++# else ++# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) ++# endif ++ ++# elif defined(_M_MIPS) ++# define ARCHITECTURE_ID "MIPS" ++ ++# elif defined(_M_SH) ++# define ARCHITECTURE_ID "SHx" ++ ++# else /* unknown architecture */ ++# define ARCHITECTURE_ID "" ++# endif ++ ++#elif defined(__WATCOMC__) ++# if defined(_M_I86) ++# define ARCHITECTURE_ID "I86" ++ ++# elif defined(_M_IX86) ++# define ARCHITECTURE_ID "X86" ++ ++# else /* unknown architecture */ ++# define ARCHITECTURE_ID "" ++# endif ++ ++#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) ++# if defined(__ICCARM__) ++# define ARCHITECTURE_ID "ARM" ++ ++# elif defined(__ICCRX__) ++# define ARCHITECTURE_ID "RX" ++ ++# elif defined(__ICCRH850__) ++# define ARCHITECTURE_ID "RH850" ++ ++# elif defined(__ICCRL78__) ++# define ARCHITECTURE_ID "RL78" ++ ++# elif defined(__ICCRISCV__) ++# define ARCHITECTURE_ID "RISCV" ++ ++# elif defined(__ICCAVR__) ++# define ARCHITECTURE_ID "AVR" ++ ++# elif defined(__ICC430__) ++# define ARCHITECTURE_ID "MSP430" ++ ++# elif defined(__ICCV850__) ++# define ARCHITECTURE_ID "V850" ++ ++# elif defined(__ICC8051__) ++# define ARCHITECTURE_ID "8051" ++ ++# elif defined(__ICCSTM8__) ++# define ARCHITECTURE_ID "STM8" ++ ++# else /* unknown architecture */ ++# define ARCHITECTURE_ID "" ++# endif ++ ++#elif defined(__ghs__) ++# if defined(__PPC64__) ++# define ARCHITECTURE_ID "PPC64" ++ ++# elif defined(__ppc__) ++# define ARCHITECTURE_ID "PPC" ++ ++# elif defined(__ARM__) ++# define ARCHITECTURE_ID "ARM" ++ ++# elif defined(__x86_64__) ++# define ARCHITECTURE_ID "x64" ++ ++# elif defined(__i386__) ++# define ARCHITECTURE_ID "X86" ++ ++# else /* unknown architecture */ ++# define ARCHITECTURE_ID "" ++# endif ++ ++#elif defined(__clang__) && defined(__ti__) ++# if defined(__ARM_ARCH) ++# define ARCHITECTURE_ID "ARM" ++ ++# else /* unknown architecture */ ++# define ARCHITECTURE_ID "" ++# endif ++ ++#elif defined(__TI_COMPILER_VERSION__) ++# if defined(__TI_ARM__) ++# define ARCHITECTURE_ID "ARM" ++ ++# elif defined(__MSP430__) ++# define ARCHITECTURE_ID "MSP430" ++ ++# elif defined(__TMS320C28XX__) ++# define ARCHITECTURE_ID "TMS320C28x" ++ ++# elif defined(__TMS320C6X__) || defined(_TMS320C6X) ++# define ARCHITECTURE_ID "TMS320C6x" ++ ++# else /* unknown architecture */ ++# define ARCHITECTURE_ID "" ++# endif ++ ++# elif defined(__ADSPSHARC__) ++# define ARCHITECTURE_ID "SHARC" ++ ++# elif defined(__ADSPBLACKFIN__) ++# define ARCHITECTURE_ID "Blackfin" ++ ++#elif defined(__TASKING__) ++ ++# if defined(__CTC__) || defined(__CPTC__) ++# define ARCHITECTURE_ID "TriCore" ++ ++# elif defined(__CMCS__) ++# define ARCHITECTURE_ID "MCS" ++ ++# elif defined(__CARM__) ++# define ARCHITECTURE_ID "ARM" ++ ++# elif defined(__CARC__) ++# define ARCHITECTURE_ID "ARC" ++ ++# elif defined(__C51__) ++# define ARCHITECTURE_ID "8051" ++ ++# elif defined(__CPCP__) ++# define ARCHITECTURE_ID "PCP" ++ ++# else ++# define ARCHITECTURE_ID "" ++# endif ++ ++#else ++# define ARCHITECTURE_ID ++#endif ++ ++/* Convert integer to decimal digit literals. */ ++#define DEC(n) \ ++ ('0' + (((n) / 10000000)%10)), \ ++ ('0' + (((n) / 1000000)%10)), \ ++ ('0' + (((n) / 100000)%10)), \ ++ ('0' + (((n) / 10000)%10)), \ ++ ('0' + (((n) / 1000)%10)), \ ++ ('0' + (((n) / 100)%10)), \ ++ ('0' + (((n) / 10)%10)), \ ++ ('0' + ((n) % 10)) ++ ++/* Convert integer to hex digit literals. */ ++#define HEX(n) \ ++ ('0' + ((n)>>28 & 0xF)), \ ++ ('0' + ((n)>>24 & 0xF)), \ ++ ('0' + ((n)>>20 & 0xF)), \ ++ ('0' + ((n)>>16 & 0xF)), \ ++ ('0' + ((n)>>12 & 0xF)), \ ++ ('0' + ((n)>>8 & 0xF)), \ ++ ('0' + ((n)>>4 & 0xF)), \ ++ ('0' + ((n) & 0xF)) ++ ++/* Construct a string literal encoding the version number. */ ++#ifdef COMPILER_VERSION ++char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; ++ ++/* Construct a string literal encoding the version number components. */ ++#elif defined(COMPILER_VERSION_MAJOR) ++char const info_version[] = { ++ 'I', 'N', 'F', 'O', ':', ++ 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', ++ COMPILER_VERSION_MAJOR, ++# ifdef COMPILER_VERSION_MINOR ++ '.', COMPILER_VERSION_MINOR, ++# ifdef COMPILER_VERSION_PATCH ++ '.', COMPILER_VERSION_PATCH, ++# ifdef COMPILER_VERSION_TWEAK ++ '.', COMPILER_VERSION_TWEAK, ++# endif ++# endif ++# endif ++ ']','\0'}; ++#endif ++ ++/* Construct a string literal encoding the internal version number. */ ++#ifdef COMPILER_VERSION_INTERNAL ++char const info_version_internal[] = { ++ 'I', 'N', 'F', 'O', ':', ++ 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', ++ 'i','n','t','e','r','n','a','l','[', ++ COMPILER_VERSION_INTERNAL,']','\0'}; ++#elif defined(COMPILER_VERSION_INTERNAL_STR) ++char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; ++#endif ++ ++/* Construct a string literal encoding the version number components. */ ++#ifdef SIMULATE_VERSION_MAJOR ++char const info_simulate_version[] = { ++ 'I', 'N', 'F', 'O', ':', ++ 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', ++ SIMULATE_VERSION_MAJOR, ++# ifdef SIMULATE_VERSION_MINOR ++ '.', SIMULATE_VERSION_MINOR, ++# ifdef SIMULATE_VERSION_PATCH ++ '.', SIMULATE_VERSION_PATCH, ++# ifdef SIMULATE_VERSION_TWEAK ++ '.', SIMULATE_VERSION_TWEAK, ++# endif ++# endif ++# endif ++ ']','\0'}; ++#endif ++ ++/* Construct the string literal in pieces to prevent the source from ++ getting matched. Store it in a pointer rather than an array ++ because some compilers will just produce instructions to fill the ++ array rather than assigning a pointer to a static array. */ ++char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; ++char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; ++ ++ ++ ++#define CXX_STD_98 199711L ++#define CXX_STD_11 201103L ++#define CXX_STD_14 201402L ++#define CXX_STD_17 201703L ++#define CXX_STD_20 202002L ++#define CXX_STD_23 202302L ++ ++#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) ++# if _MSVC_LANG > CXX_STD_17 ++# define CXX_STD _MSVC_LANG ++# elif _MSVC_LANG == CXX_STD_17 && defined(__cpp_aggregate_paren_init) ++# define CXX_STD CXX_STD_20 ++# elif _MSVC_LANG > CXX_STD_14 && __cplusplus > CXX_STD_17 ++# define CXX_STD CXX_STD_20 ++# elif _MSVC_LANG > CXX_STD_14 ++# define CXX_STD CXX_STD_17 ++# elif defined(__INTEL_CXX11_MODE__) && defined(__cpp_aggregate_nsdmi) ++# define CXX_STD CXX_STD_14 ++# elif defined(__INTEL_CXX11_MODE__) ++# define CXX_STD CXX_STD_11 ++# else ++# define CXX_STD CXX_STD_98 ++# endif ++#elif defined(_MSC_VER) && defined(_MSVC_LANG) ++# if _MSVC_LANG > __cplusplus ++# define CXX_STD _MSVC_LANG ++# else ++# define CXX_STD __cplusplus ++# endif ++#elif defined(__NVCOMPILER) ++# if __cplusplus == CXX_STD_17 && defined(__cpp_aggregate_paren_init) ++# define CXX_STD CXX_STD_20 ++# else ++# define CXX_STD __cplusplus ++# endif ++#elif defined(__INTEL_COMPILER) || defined(__PGI) ++# if __cplusplus == CXX_STD_11 && defined(__cpp_namespace_attributes) ++# define CXX_STD CXX_STD_17 ++# elif __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi) ++# define CXX_STD CXX_STD_14 ++# else ++# define CXX_STD __cplusplus ++# endif ++#elif (defined(__IBMCPP__) || defined(__ibmxl__)) && defined(__linux__) ++# if __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi) ++# define CXX_STD CXX_STD_14 ++# else ++# define CXX_STD __cplusplus ++# endif ++#elif __cplusplus == 1 && defined(__GXX_EXPERIMENTAL_CXX0X__) ++# define CXX_STD CXX_STD_11 ++#else ++# define CXX_STD __cplusplus ++#endif ++ ++const char* info_language_standard_default = "INFO" ":" "standard_default[" ++#if CXX_STD > CXX_STD_23 ++ "26" ++#elif CXX_STD > CXX_STD_20 ++ "23" ++#elif CXX_STD > CXX_STD_17 ++ "20" ++#elif CXX_STD > CXX_STD_14 ++ "17" ++#elif CXX_STD > CXX_STD_11 ++ "14" ++#elif CXX_STD >= CXX_STD_11 ++ "11" ++#else ++ "98" ++#endif ++"]"; ++ ++const char* info_language_extensions_default = "INFO" ":" "extensions_default[" ++#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ ++ defined(__TI_COMPILER_VERSION__)) && \ ++ !defined(__STRICT_ANSI__) ++ "ON" ++#else ++ "OFF" ++#endif ++"]"; ++ ++/*--------------------------------------------------------------------------*/ ++ ++int main(int argc, char* argv[]) ++{ ++ int require = 0; ++ require += info_compiler[argc]; ++ require += info_platform[argc]; ++ require += info_arch[argc]; ++#ifdef COMPILER_VERSION_MAJOR ++ require += info_version[argc]; ++#endif ++#ifdef COMPILER_VERSION_INTERNAL ++ require += info_version_internal[argc]; ++#endif ++#ifdef SIMULATE_ID ++ require += info_simulate[argc]; ++#endif ++#ifdef SIMULATE_VERSION_MAJOR ++ require += info_simulate_version[argc]; ++#endif ++#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) ++ require += info_cray[argc]; ++#endif ++ require += info_language_standard_default[argc]; ++ require += info_language_extensions_default[argc]; ++ (void)argv; ++ return require; ++} +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/cmake.check_cache /workspace/epanet/build/CMakeFiles/cmake.check_cache +--- /workspace/epanet_upstream/build/CMakeFiles/cmake.check_cache 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/cmake.check_cache 2025-08-10 02:49:33.514682036 +0000 +@@ -0,0 +1 @@ ++# This file is generated by cmake for dependency checking of the CMakeCache.txt file +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/CMakeConfigureLog.yaml /workspace/epanet/build/CMakeFiles/CMakeConfigureLog.yaml +--- /workspace/epanet_upstream/build/CMakeFiles/CMakeConfigureLog.yaml 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/CMakeConfigureLog.yaml 2025-08-10 02:49:33.506682011 +0000 +@@ -0,0 +1,583 @@ ++ ++--- ++events: ++ - ++ kind: "message-v1" ++ backtrace: ++ - "/usr/share/cmake-3.31/Modules/CMakeDetermineSystem.cmake:205 (message)" ++ - "CMakeLists.txt:30 (project)" ++ message: | ++ The system is: Linux - 6.1.147 - x86_64 ++ - ++ kind: "message-v1" ++ backtrace: ++ - "/usr/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake:17 (message)" ++ - "/usr/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" ++ - "/usr/share/cmake-3.31/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)" ++ - "CMakeLists.txt:30 (project)" ++ message: | ++ Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. ++ Compiler: /usr/bin/cc ++ Build flags: ++ Id flags: ++ ++ The output was: ++ 0 ++ ++ ++ Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out" ++ ++ The C compiler identification is Clang, found in: ++ /workspace/epanet/build/CMakeFiles/3.31.6/CompilerIdC/a.out ++ ++ - ++ kind: "message-v1" ++ backtrace: ++ - "/usr/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake:17 (message)" ++ - "/usr/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" ++ - "/usr/share/cmake-3.31/Modules/CMakeDetermineCXXCompiler.cmake:126 (CMAKE_DETERMINE_COMPILER_ID)" ++ - "CMakeLists.txt:30 (project)" ++ message: | ++ Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. ++ Compiler: /usr/bin/c++ ++ Build flags: ++ Id flags: ++ ++ The output was: ++ 0 ++ ++ ++ Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" ++ ++ The CXX compiler identification is Clang, found in: ++ /workspace/epanet/build/CMakeFiles/3.31.6/CompilerIdCXX/a.out ++ ++ - ++ kind: "try_compile-v1" ++ backtrace: ++ - "/usr/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:74 (try_compile)" ++ - "/usr/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" ++ - "CMakeLists.txt:30 (project)" ++ checks: ++ - "Detecting C compiler ABI info" ++ directories: ++ source: "/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-PNNylk" ++ binary: "/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-PNNylk" ++ cmakeVariables: ++ CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS: "/usr/bin/clang-scan-deps-20" ++ CMAKE_C_FLAGS: "" ++ CMAKE_C_FLAGS_DEBUG: "-g" ++ CMAKE_EXE_LINKER_FLAGS: "" ++ buildResult: ++ variable: "CMAKE_C_ABI_COMPILED" ++ cached: true ++ stdout: | ++ Change Dir: '/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-PNNylk' ++ ++ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_b1cf3/fast ++ /usr/bin/gmake -f CMakeFiles/cmTC_b1cf3.dir/build.make CMakeFiles/cmTC_b1cf3.dir/build ++ gmake[1]: Entering directory '/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-PNNylk' ++ Building C object CMakeFiles/cmTC_b1cf3.dir/CMakeCCompilerABI.c.o ++ /usr/bin/cc -v -MD -MT CMakeFiles/cmTC_b1cf3.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_b1cf3.dir/CMakeCCompilerABI.c.o.d -o CMakeFiles/cmTC_b1cf3.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.31/Modules/CMakeCCompilerABI.c ++ Ubuntu clang version 20.1.2 (0ubuntu1) ++ Target: x86_64-pc-linux-gnu ++ Thread model: posix ++ InstalledDir: /usr/lib/llvm-20/bin ++ Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/14 ++ Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/14 ++ Candidate multilib: .;@m64 ++ Selected multilib: .;@m64 ++ (in-process) ++ "/usr/lib/llvm-20/bin/clang" -cc1 -triple x86_64-pc-linux-gnu -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-PNNylk -v -fcoverage-compilation-dir=/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-PNNylk -resource-dir /usr/lib/llvm-20/lib/clang/20 -dependency-file CMakeFiles/cmTC_b1cf3.dir/CMakeCCompilerABI.c.o.d -MT CMakeFiles/cmTC_b1cf3.dir/CMakeCCompilerABI.c.o -sys-header-deps -internal-isystem /usr/lib/llvm-20/lib/clang/20/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_b1cf3.dir/CMakeCCompilerABI.c.o -x c /usr/share/cmake-3.31/Modules/CMakeCCompilerABI.c ++ clang -cc1 version 20.1.2 based upon LLVM 20.1.2 default target x86_64-pc-linux-gnu ++ ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include" ++ ignoring nonexistent directory "/include" ++ #include "..." search starts here: ++ #include <...> search starts here: ++ /usr/lib/llvm-20/lib/clang/20/include ++ /usr/local/include ++ /usr/include/x86_64-linux-gnu ++ /usr/include ++ End of search list. ++ Linking C executable cmTC_b1cf3 ++ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_b1cf3.dir/link.txt --verbose=1 ++ Ubuntu clang version 20.1.2 (0ubuntu1) ++ Target: x86_64-pc-linux-gnu ++ Thread model: posix ++ InstalledDir: /usr/lib/llvm-20/bin ++ Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/14 ++ Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/14 ++ Candidate multilib: .;@m64 ++ Selected multilib: .;@m64 ++ "/usr/bin/ld" -z relro --hash-style=gnu --build-id --eh-frame-hdr -m elf_x86_64 -pie -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTC_b1cf3 /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/14/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/14 -L/usr/lib/gcc/x86_64-linux-gnu/14/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib -v CMakeFiles/cmTC_b1cf3.dir/CMakeCCompilerABI.c.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-linux-gnu/14/crtendS.o /lib/x86_64-linux-gnu/crtn.o ++ GNU ld (GNU Binutils for Ubuntu) 2.44 ++ /usr/bin/cc -v -Wl,-v CMakeFiles/cmTC_b1cf3.dir/CMakeCCompilerABI.c.o -o cmTC_b1cf3 ++ gmake[1]: Leaving directory '/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-PNNylk' ++ ++ exitCode: 0 ++ - ++ kind: "message-v1" ++ backtrace: ++ - "/usr/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:182 (message)" ++ - "/usr/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" ++ - "CMakeLists.txt:30 (project)" ++ message: | ++ Parsed C implicit include dir info: rv=done ++ found start of include info ++ found start of implicit include info ++ add: [/usr/lib/llvm-20/lib/clang/20/include] ++ add: [/usr/local/include] ++ add: [/usr/include/x86_64-linux-gnu] ++ add: [/usr/include] ++ end of search list found ++ collapse include dir [/usr/lib/llvm-20/lib/clang/20/include] ==> [/usr/lib/llvm-20/lib/clang/20/include] ++ collapse include dir [/usr/local/include] ==> [/usr/local/include] ++ collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu] ++ collapse include dir [/usr/include] ==> [/usr/include] ++ implicit include dirs: [/usr/lib/llvm-20/lib/clang/20/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include] ++ ++ ++ - ++ kind: "message-v1" ++ backtrace: ++ - "/usr/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:218 (message)" ++ - "/usr/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" ++ - "CMakeLists.txt:30 (project)" ++ message: | ++ Parsed C implicit link information: ++ link line regex: [^( *|.*[/\\])(ld[0-9]*(\\.[a-z]+)?|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] ++ linker tool regex: [^[ ]*(->|")?[ ]*(([^"]*[/\\])?(ld[0-9]*(\\.[a-z]+)?))("|,| |$)] ++ ignore line: [Change Dir: '/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-PNNylk'] ++ ignore line: [] ++ ignore line: [Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_b1cf3/fast] ++ ignore line: [/usr/bin/gmake -f CMakeFiles/cmTC_b1cf3.dir/build.make CMakeFiles/cmTC_b1cf3.dir/build] ++ ignore line: [gmake[1]: Entering directory '/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-PNNylk'] ++ ignore line: [Building C object CMakeFiles/cmTC_b1cf3.dir/CMakeCCompilerABI.c.o] ++ ignore line: [/usr/bin/cc -v -MD -MT CMakeFiles/cmTC_b1cf3.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_b1cf3.dir/CMakeCCompilerABI.c.o.d -o CMakeFiles/cmTC_b1cf3.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.31/Modules/CMakeCCompilerABI.c] ++ ignore line: [Ubuntu clang version 20.1.2 (0ubuntu1)] ++ ignore line: [Target: x86_64-pc-linux-gnu] ++ ignore line: [Thread model: posix] ++ ignore line: [InstalledDir: /usr/lib/llvm-20/bin] ++ ignore line: [Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/14] ++ ignore line: [Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/14] ++ ignore line: [Candidate multilib: .] ++ ignore line: [@m64] ++ ignore line: [Selected multilib: .] ++ ignore line: [@m64] ++ ignore line: [ (in-process)] ++ ignore line: [ "/usr/lib/llvm-20/bin/clang" -cc1 -triple x86_64-pc-linux-gnu -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-PNNylk -v -fcoverage-compilation-dir=/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-PNNylk -resource-dir /usr/lib/llvm-20/lib/clang/20 -dependency-file CMakeFiles/cmTC_b1cf3.dir/CMakeCCompilerABI.c.o.d -MT CMakeFiles/cmTC_b1cf3.dir/CMakeCCompilerABI.c.o -sys-header-deps -internal-isystem /usr/lib/llvm-20/lib/clang/20/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_b1cf3.dir/CMakeCCompilerABI.c.o -x c /usr/share/cmake-3.31/Modules/CMakeCCompilerABI.c] ++ ignore line: [clang -cc1 version 20.1.2 based upon LLVM 20.1.2 default target x86_64-pc-linux-gnu] ++ ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include"] ++ ignore line: [ignoring nonexistent directory "/include"] ++ ignore line: [#include "..." search starts here:] ++ ignore line: [#include <...> search starts here:] ++ ignore line: [ /usr/lib/llvm-20/lib/clang/20/include] ++ ignore line: [ /usr/local/include] ++ ignore line: [ /usr/include/x86_64-linux-gnu] ++ ignore line: [ /usr/include] ++ ignore line: [End of search list.] ++ ignore line: [Linking C executable cmTC_b1cf3] ++ ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_b1cf3.dir/link.txt --verbose=1] ++ ignore line: [Ubuntu clang version 20.1.2 (0ubuntu1)] ++ ignore line: [Target: x86_64-pc-linux-gnu] ++ ignore line: [Thread model: posix] ++ ignore line: [InstalledDir: /usr/lib/llvm-20/bin] ++ ignore line: [Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/14] ++ ignore line: [Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/14] ++ ignore line: [Candidate multilib: .] ++ ignore line: [@m64] ++ ignore line: [Selected multilib: .] ++ ignore line: [@m64] ++ link line: [ "/usr/bin/ld" -z relro --hash-style=gnu --build-id --eh-frame-hdr -m elf_x86_64 -pie -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTC_b1cf3 /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/14/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/14 -L/usr/lib/gcc/x86_64-linux-gnu/14/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib -v CMakeFiles/cmTC_b1cf3.dir/CMakeCCompilerABI.c.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-linux-gnu/14/crtendS.o /lib/x86_64-linux-gnu/crtn.o] ++ arg [/usr/bin/ld] ==> ignore ++ arg [-zrelro] ==> ignore ++ arg [--hash-style=gnu] ==> ignore ++ arg [--build-id] ==> ignore ++ arg [--eh-frame-hdr] ==> ignore ++ arg [-m] ==> ignore ++ arg [elf_x86_64] ==> ignore ++ arg [-pie] ==> ignore ++ arg [-dynamic-linker] ==> ignore ++ arg [/lib64/ld-linux-x86-64.so.2] ==> ignore ++ arg [-o] ==> ignore ++ arg [cmTC_b1cf3] ==> ignore ++ arg [/lib/x86_64-linux-gnu/Scrt1.o] ==> obj [/lib/x86_64-linux-gnu/Scrt1.o] ++ arg [/lib/x86_64-linux-gnu/crti.o] ==> obj [/lib/x86_64-linux-gnu/crti.o] ++ arg [/usr/lib/gcc/x86_64-linux-gnu/14/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/14/crtbeginS.o] ++ arg [-L/usr/lib/gcc/x86_64-linux-gnu/14] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/14] ++ arg [-L/usr/lib/gcc/x86_64-linux-gnu/14/../../../../lib64] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/14/../../../../lib64] ++ arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] ++ arg [-L/lib/../lib64] ==> dir [/lib/../lib64] ++ arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] ++ arg [-L/usr/lib/../lib64] ==> dir [/usr/lib/../lib64] ++ arg [-L/lib] ==> dir [/lib] ++ arg [-L/usr/lib] ==> dir [/usr/lib] ++ arg [-v] ==> ignore ++ arg [CMakeFiles/cmTC_b1cf3.dir/CMakeCCompilerABI.c.o] ==> ignore ++ arg [-lgcc] ==> lib [gcc] ++ arg [--as-needed] ==> ignore ++ arg [-lgcc_s] ==> lib [gcc_s] ++ arg [--no-as-needed] ==> ignore ++ arg [-lc] ==> lib [c] ++ arg [-lgcc] ==> lib [gcc] ++ arg [--as-needed] ==> ignore ++ arg [-lgcc_s] ==> lib [gcc_s] ++ arg [--no-as-needed] ==> ignore ++ arg [/usr/lib/gcc/x86_64-linux-gnu/14/crtendS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/14/crtendS.o] ++ arg [/lib/x86_64-linux-gnu/crtn.o] ==> obj [/lib/x86_64-linux-gnu/crtn.o] ++ linker tool for 'C': /usr/bin/ld ++ collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/14] ==> [/usr/lib/gcc/x86_64-linux-gnu/14] ++ collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/14/../../../../lib64] ==> [/usr/lib64] ++ collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] ++ collapse library dir [/lib/../lib64] ==> [/lib64] ++ collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] ++ collapse library dir [/usr/lib/../lib64] ==> [/usr/lib64] ++ collapse library dir [/lib] ==> [/lib] ++ collapse library dir [/usr/lib] ==> [/usr/lib] ++ implicit libs: [gcc;gcc_s;c;gcc;gcc_s] ++ implicit objs: [/lib/x86_64-linux-gnu/Scrt1.o;/lib/x86_64-linux-gnu/crti.o;/usr/lib/gcc/x86_64-linux-gnu/14/crtbeginS.o;/usr/lib/gcc/x86_64-linux-gnu/14/crtendS.o;/lib/x86_64-linux-gnu/crtn.o] ++ implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/14;/usr/lib64;/lib/x86_64-linux-gnu;/lib64;/usr/lib/x86_64-linux-gnu;/lib;/usr/lib] ++ implicit fwks: [] ++ ++ ++ - ++ kind: "message-v1" ++ backtrace: ++ - "/usr/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake:40 (message)" ++ - "/usr/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:255 (cmake_determine_linker_id)" ++ - "/usr/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" ++ - "CMakeLists.txt:30 (project)" ++ message: | ++ Running the C compiler's linker: "/usr/bin/ld" "-v" ++ GNU ld (GNU Binutils for Ubuntu) 2.44 ++ - ++ kind: "try_compile-v1" ++ backtrace: ++ - "/usr/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:74 (try_compile)" ++ - "/usr/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" ++ - "CMakeLists.txt:30 (project)" ++ checks: ++ - "Detecting CXX compiler ABI info" ++ directories: ++ source: "/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-8QGjLu" ++ binary: "/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-8QGjLu" ++ cmakeVariables: ++ CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS: "/usr/bin/clang-scan-deps-20" ++ CMAKE_CXX_FLAGS: "" ++ CMAKE_CXX_FLAGS_DEBUG: "-g" ++ CMAKE_CXX_SCAN_FOR_MODULES: "OFF" ++ CMAKE_EXE_LINKER_FLAGS: "" ++ buildResult: ++ variable: "CMAKE_CXX_ABI_COMPILED" ++ cached: true ++ stdout: | ++ Change Dir: '/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-8QGjLu' ++ ++ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_a7878/fast ++ /usr/bin/gmake -f CMakeFiles/cmTC_a7878.dir/build.make CMakeFiles/cmTC_a7878.dir/build ++ gmake[1]: Entering directory '/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-8QGjLu' ++ Building CXX object CMakeFiles/cmTC_a7878.dir/CMakeCXXCompilerABI.cpp.o ++ /usr/bin/c++ -v -MD -MT CMakeFiles/cmTC_a7878.dir/CMakeCXXCompilerABI.cpp.o -MF CMakeFiles/cmTC_a7878.dir/CMakeCXXCompilerABI.cpp.o.d -o CMakeFiles/cmTC_a7878.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp ++ Ubuntu clang version 20.1.2 (0ubuntu1) ++ Target: x86_64-pc-linux-gnu ++ Thread model: posix ++ InstalledDir: /usr/lib/llvm-20/bin ++ Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/14 ++ Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/14 ++ Candidate multilib: .;@m64 ++ Selected multilib: .;@m64 ++ (in-process) ++ "/usr/lib/llvm-20/bin/clang" -cc1 -triple x86_64-pc-linux-gnu -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-8QGjLu -v -fcoverage-compilation-dir=/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-8QGjLu -resource-dir /usr/lib/llvm-20/lib/clang/20 -dependency-file CMakeFiles/cmTC_a7878.dir/CMakeCXXCompilerABI.cpp.o.d -MT CMakeFiles/cmTC_a7878.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/backward -internal-isystem /usr/lib/llvm-20/lib/clang/20/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdeprecated-macro -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcxx-exceptions -fexceptions -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_a7878.dir/CMakeCXXCompilerABI.cpp.o -x c++ /usr/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp ++ clang -cc1 version 20.1.2 based upon LLVM 20.1.2 default target x86_64-pc-linux-gnu ++ ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include" ++ ignoring nonexistent directory "/include" ++ #include "..." search starts here: ++ #include <...> search starts here: ++ /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14 ++ /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14 ++ /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/backward ++ /usr/lib/llvm-20/lib/clang/20/include ++ /usr/local/include ++ /usr/include/x86_64-linux-gnu ++ /usr/include ++ End of search list. ++ Linking CXX executable cmTC_a7878 ++ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_a7878.dir/link.txt --verbose=1 ++ Ubuntu clang version 20.1.2 (0ubuntu1) ++ Target: x86_64-pc-linux-gnu ++ Thread model: posix ++ InstalledDir: /usr/lib/llvm-20/bin ++ Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/14 ++ Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/14 ++ Candidate multilib: .;@m64 ++ Selected multilib: .;@m64 ++ "/usr/bin/ld" -z relro --hash-style=gnu --build-id --eh-frame-hdr -m elf_x86_64 -pie -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTC_a7878 /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/14/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/14 -L/usr/lib/gcc/x86_64-linux-gnu/14/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib -v CMakeFiles/cmTC_a7878.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/14/crtendS.o /lib/x86_64-linux-gnu/crtn.o ++ GNU ld (GNU Binutils for Ubuntu) 2.44 ++ /usr/bin/c++ -v -Wl,-v CMakeFiles/cmTC_a7878.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_a7878 ++ gmake[1]: Leaving directory '/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-8QGjLu' ++ ++ exitCode: 0 ++ - ++ kind: "message-v1" ++ backtrace: ++ - "/usr/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:182 (message)" ++ - "/usr/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" ++ - "CMakeLists.txt:30 (project)" ++ message: | ++ Parsed CXX implicit include dir info: rv=done ++ found start of include info ++ found start of implicit include info ++ add: [/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14] ++ add: [/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14] ++ add: [/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/backward] ++ add: [/usr/lib/llvm-20/lib/clang/20/include] ++ add: [/usr/local/include] ++ add: [/usr/include/x86_64-linux-gnu] ++ add: [/usr/include] ++ end of search list found ++ collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14] ==> [/usr/include/c++/14] ++ collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14] ==> [/usr/include/x86_64-linux-gnu/c++/14] ++ collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/backward] ==> [/usr/include/c++/14/backward] ++ collapse include dir [/usr/lib/llvm-20/lib/clang/20/include] ==> [/usr/lib/llvm-20/lib/clang/20/include] ++ collapse include dir [/usr/local/include] ==> [/usr/local/include] ++ collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu] ++ collapse include dir [/usr/include] ==> [/usr/include] ++ implicit include dirs: [/usr/include/c++/14;/usr/include/x86_64-linux-gnu/c++/14;/usr/include/c++/14/backward;/usr/lib/llvm-20/lib/clang/20/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include] ++ ++ ++ - ++ kind: "message-v1" ++ backtrace: ++ - "/usr/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:218 (message)" ++ - "/usr/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" ++ - "CMakeLists.txt:30 (project)" ++ message: | ++ Parsed CXX implicit link information: ++ link line regex: [^( *|.*[/\\])(ld[0-9]*(\\.[a-z]+)?|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] ++ linker tool regex: [^[ ]*(->|")?[ ]*(([^"]*[/\\])?(ld[0-9]*(\\.[a-z]+)?))("|,| |$)] ++ ignore line: [Change Dir: '/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-8QGjLu'] ++ ignore line: [] ++ ignore line: [Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_a7878/fast] ++ ignore line: [/usr/bin/gmake -f CMakeFiles/cmTC_a7878.dir/build.make CMakeFiles/cmTC_a7878.dir/build] ++ ignore line: [gmake[1]: Entering directory '/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-8QGjLu'] ++ ignore line: [Building CXX object CMakeFiles/cmTC_a7878.dir/CMakeCXXCompilerABI.cpp.o] ++ ignore line: [/usr/bin/c++ -v -MD -MT CMakeFiles/cmTC_a7878.dir/CMakeCXXCompilerABI.cpp.o -MF CMakeFiles/cmTC_a7878.dir/CMakeCXXCompilerABI.cpp.o.d -o CMakeFiles/cmTC_a7878.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp] ++ ignore line: [Ubuntu clang version 20.1.2 (0ubuntu1)] ++ ignore line: [Target: x86_64-pc-linux-gnu] ++ ignore line: [Thread model: posix] ++ ignore line: [InstalledDir: /usr/lib/llvm-20/bin] ++ ignore line: [Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/14] ++ ignore line: [Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/14] ++ ignore line: [Candidate multilib: .] ++ ignore line: [@m64] ++ ignore line: [Selected multilib: .] ++ ignore line: [@m64] ++ ignore line: [ (in-process)] ++ ignore line: [ "/usr/lib/llvm-20/bin/clang" -cc1 -triple x86_64-pc-linux-gnu -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-8QGjLu -v -fcoverage-compilation-dir=/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-8QGjLu -resource-dir /usr/lib/llvm-20/lib/clang/20 -dependency-file CMakeFiles/cmTC_a7878.dir/CMakeCXXCompilerABI.cpp.o.d -MT CMakeFiles/cmTC_a7878.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/backward -internal-isystem /usr/lib/llvm-20/lib/clang/20/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdeprecated-macro -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcxx-exceptions -fexceptions -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_a7878.dir/CMakeCXXCompilerABI.cpp.o -x c++ /usr/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp] ++ ignore line: [clang -cc1 version 20.1.2 based upon LLVM 20.1.2 default target x86_64-pc-linux-gnu] ++ ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include"] ++ ignore line: [ignoring nonexistent directory "/include"] ++ ignore line: [#include "..." search starts here:] ++ ignore line: [#include <...> search starts here:] ++ ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14] ++ ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14] ++ ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/backward] ++ ignore line: [ /usr/lib/llvm-20/lib/clang/20/include] ++ ignore line: [ /usr/local/include] ++ ignore line: [ /usr/include/x86_64-linux-gnu] ++ ignore line: [ /usr/include] ++ ignore line: [End of search list.] ++ ignore line: [Linking CXX executable cmTC_a7878] ++ ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_a7878.dir/link.txt --verbose=1] ++ ignore line: [Ubuntu clang version 20.1.2 (0ubuntu1)] ++ ignore line: [Target: x86_64-pc-linux-gnu] ++ ignore line: [Thread model: posix] ++ ignore line: [InstalledDir: /usr/lib/llvm-20/bin] ++ ignore line: [Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/14] ++ ignore line: [Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/14] ++ ignore line: [Candidate multilib: .] ++ ignore line: [@m64] ++ ignore line: [Selected multilib: .] ++ ignore line: [@m64] ++ link line: [ "/usr/bin/ld" -z relro --hash-style=gnu --build-id --eh-frame-hdr -m elf_x86_64 -pie -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTC_a7878 /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/14/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/14 -L/usr/lib/gcc/x86_64-linux-gnu/14/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib -v CMakeFiles/cmTC_a7878.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/14/crtendS.o /lib/x86_64-linux-gnu/crtn.o] ++ arg [/usr/bin/ld] ==> ignore ++ arg [-zrelro] ==> ignore ++ arg [--hash-style=gnu] ==> ignore ++ arg [--build-id] ==> ignore ++ arg [--eh-frame-hdr] ==> ignore ++ arg [-m] ==> ignore ++ arg [elf_x86_64] ==> ignore ++ arg [-pie] ==> ignore ++ arg [-dynamic-linker] ==> ignore ++ arg [/lib64/ld-linux-x86-64.so.2] ==> ignore ++ arg [-o] ==> ignore ++ arg [cmTC_a7878] ==> ignore ++ arg [/lib/x86_64-linux-gnu/Scrt1.o] ==> obj [/lib/x86_64-linux-gnu/Scrt1.o] ++ arg [/lib/x86_64-linux-gnu/crti.o] ==> obj [/lib/x86_64-linux-gnu/crti.o] ++ arg [/usr/lib/gcc/x86_64-linux-gnu/14/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/14/crtbeginS.o] ++ arg [-L/usr/lib/gcc/x86_64-linux-gnu/14] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/14] ++ arg [-L/usr/lib/gcc/x86_64-linux-gnu/14/../../../../lib64] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/14/../../../../lib64] ++ arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] ++ arg [-L/lib/../lib64] ==> dir [/lib/../lib64] ++ arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] ++ arg [-L/usr/lib/../lib64] ==> dir [/usr/lib/../lib64] ++ arg [-L/lib] ==> dir [/lib] ++ arg [-L/usr/lib] ==> dir [/usr/lib] ++ arg [-v] ==> ignore ++ arg [CMakeFiles/cmTC_a7878.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore ++ arg [-lstdc++] ==> lib [stdc++] ++ arg [-lm] ==> lib [m] ++ arg [-lgcc_s] ==> lib [gcc_s] ++ arg [-lgcc] ==> lib [gcc] ++ arg [-lc] ==> lib [c] ++ arg [-lgcc_s] ==> lib [gcc_s] ++ arg [-lgcc] ==> lib [gcc] ++ arg [/usr/lib/gcc/x86_64-linux-gnu/14/crtendS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/14/crtendS.o] ++ arg [/lib/x86_64-linux-gnu/crtn.o] ==> obj [/lib/x86_64-linux-gnu/crtn.o] ++ linker tool for 'CXX': /usr/bin/ld ++ collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/14] ==> [/usr/lib/gcc/x86_64-linux-gnu/14] ++ collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/14/../../../../lib64] ==> [/usr/lib64] ++ collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] ++ collapse library dir [/lib/../lib64] ==> [/lib64] ++ collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] ++ collapse library dir [/usr/lib/../lib64] ==> [/usr/lib64] ++ collapse library dir [/lib] ==> [/lib] ++ collapse library dir [/usr/lib] ==> [/usr/lib] ++ implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc] ++ implicit objs: [/lib/x86_64-linux-gnu/Scrt1.o;/lib/x86_64-linux-gnu/crti.o;/usr/lib/gcc/x86_64-linux-gnu/14/crtbeginS.o;/usr/lib/gcc/x86_64-linux-gnu/14/crtendS.o;/lib/x86_64-linux-gnu/crtn.o] ++ implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/14;/usr/lib64;/lib/x86_64-linux-gnu;/lib64;/usr/lib/x86_64-linux-gnu;/lib;/usr/lib] ++ implicit fwks: [] ++ ++ ++ - ++ kind: "message-v1" ++ backtrace: ++ - "/usr/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake:40 (message)" ++ - "/usr/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:255 (cmake_determine_linker_id)" ++ - "/usr/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" ++ - "CMakeLists.txt:30 (project)" ++ message: | ++ Running the CXX compiler's linker: "/usr/bin/ld" "-v" ++ GNU ld (GNU Binutils for Ubuntu) 2.44 ++ - ++ kind: "try_compile-v1" ++ backtrace: ++ - "/usr/share/cmake-3.31/Modules/Internal/CheckSourceCompiles.cmake:108 (try_compile)" ++ - "/usr/share/cmake-3.31/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)" ++ - "/usr/share/cmake-3.31/Modules/CheckCompilerFlag.cmake:56 (cmake_check_compiler_flag)" ++ - "/usr/share/cmake-3.31/Modules/GenerateExportHeader.cmake:238 (check_compiler_flag)" ++ - "/usr/share/cmake-3.31/Modules/GenerateExportHeader.cmake:419 (_test_compiler_hidden_visibility)" ++ - "src/outfile/CMakeLists.txt:41 (generate_export_header)" ++ checks: ++ - "Performing Test COMPILER_HAS_HIDDEN_VISIBILITY" ++ directories: ++ source: "/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-7FWdin" ++ binary: "/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-7FWdin" ++ cmakeVariables: ++ CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS: "/usr/bin/clang-scan-deps-20" ++ CMAKE_CXX_FLAGS: "" ++ CMAKE_CXX_FLAGS_DEBUG: "-g" ++ CMAKE_EXE_LINKER_FLAGS: "" ++ CMAKE_MODULE_PATH: "/workspace/epanet/cmake" ++ CMAKE_POSITION_INDEPENDENT_CODE: "ON" ++ buildResult: ++ variable: "COMPILER_HAS_HIDDEN_VISIBILITY" ++ cached: true ++ stdout: | ++ Change Dir: '/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-7FWdin' ++ ++ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_c7339/fast ++ /usr/bin/gmake -f CMakeFiles/cmTC_c7339.dir/build.make CMakeFiles/cmTC_c7339.dir/build ++ gmake[1]: Entering directory '/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-7FWdin' ++ Building CXX object CMakeFiles/cmTC_c7339.dir/src.cxx.o ++ /usr/bin/c++ -DCOMPILER_HAS_HIDDEN_VISIBILITY -fPIE -fvisibility=hidden -MD -MT CMakeFiles/cmTC_c7339.dir/src.cxx.o -MF CMakeFiles/cmTC_c7339.dir/src.cxx.o.d -o CMakeFiles/cmTC_c7339.dir/src.cxx.o -c /workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-7FWdin/src.cxx ++ Linking CXX executable cmTC_c7339 ++ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_c7339.dir/link.txt --verbose=1 ++ /usr/bin/c++ CMakeFiles/cmTC_c7339.dir/src.cxx.o -o cmTC_c7339 ++ gmake[1]: Leaving directory '/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-7FWdin' ++ ++ exitCode: 0 ++ - ++ kind: "try_compile-v1" ++ backtrace: ++ - "/usr/share/cmake-3.31/Modules/Internal/CheckSourceCompiles.cmake:108 (try_compile)" ++ - "/usr/share/cmake-3.31/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)" ++ - "/usr/share/cmake-3.31/Modules/CheckCompilerFlag.cmake:56 (cmake_check_compiler_flag)" ++ - "/usr/share/cmake-3.31/Modules/GenerateExportHeader.cmake:239 (check_compiler_flag)" ++ - "/usr/share/cmake-3.31/Modules/GenerateExportHeader.cmake:419 (_test_compiler_hidden_visibility)" ++ - "src/outfile/CMakeLists.txt:41 (generate_export_header)" ++ checks: ++ - "Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY" ++ directories: ++ source: "/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-8Pb4MT" ++ binary: "/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-8Pb4MT" ++ cmakeVariables: ++ CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS: "/usr/bin/clang-scan-deps-20" ++ CMAKE_CXX_FLAGS: "" ++ CMAKE_CXX_FLAGS_DEBUG: "-g" ++ CMAKE_EXE_LINKER_FLAGS: "" ++ CMAKE_MODULE_PATH: "/workspace/epanet/cmake" ++ CMAKE_POSITION_INDEPENDENT_CODE: "ON" ++ buildResult: ++ variable: "COMPILER_HAS_HIDDEN_INLINE_VISIBILITY" ++ cached: true ++ stdout: | ++ Change Dir: '/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-8Pb4MT' ++ ++ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_b9311/fast ++ /usr/bin/gmake -f CMakeFiles/cmTC_b9311.dir/build.make CMakeFiles/cmTC_b9311.dir/build ++ gmake[1]: Entering directory '/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-8Pb4MT' ++ Building CXX object CMakeFiles/cmTC_b9311.dir/src.cxx.o ++ /usr/bin/c++ -DCOMPILER_HAS_HIDDEN_INLINE_VISIBILITY -fPIE -fvisibility-inlines-hidden -MD -MT CMakeFiles/cmTC_b9311.dir/src.cxx.o -MF CMakeFiles/cmTC_b9311.dir/src.cxx.o.d -o CMakeFiles/cmTC_b9311.dir/src.cxx.o -c /workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-8Pb4MT/src.cxx ++ Linking CXX executable cmTC_b9311 ++ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_b9311.dir/link.txt --verbose=1 ++ /usr/bin/c++ CMakeFiles/cmTC_b9311.dir/src.cxx.o -o cmTC_b9311 ++ gmake[1]: Leaving directory '/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-8Pb4MT' ++ ++ exitCode: 0 ++ - ++ kind: "try_compile-v1" ++ backtrace: ++ - "/usr/share/cmake-3.31/Modules/Internal/CheckSourceCompiles.cmake:108 (try_compile)" ++ - "/usr/share/cmake-3.31/Modules/CheckSourceCompiles.cmake:89 (cmake_check_source_compiles)" ++ - "/usr/share/cmake-3.31/Modules/GenerateExportHeader.cmake:206 (check_source_compiles)" ++ - "/usr/share/cmake-3.31/Modules/GenerateExportHeader.cmake:263 (_check_cxx_compiler_attribute)" ++ - "/usr/share/cmake-3.31/Modules/GenerateExportHeader.cmake:420 (_test_compiler_has_deprecated)" ++ - "src/outfile/CMakeLists.txt:41 (generate_export_header)" ++ checks: ++ - "Performing Test COMPILER_HAS_DEPRECATED_ATTR" ++ directories: ++ source: "/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-s7DNFV" ++ binary: "/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-s7DNFV" ++ cmakeVariables: ++ CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS: "/usr/bin/clang-scan-deps-20" ++ CMAKE_CXX_FLAGS: "" ++ CMAKE_CXX_FLAGS_DEBUG: "-g" ++ CMAKE_EXE_LINKER_FLAGS: "" ++ CMAKE_MODULE_PATH: "/workspace/epanet/cmake" ++ CMAKE_POSITION_INDEPENDENT_CODE: "ON" ++ buildResult: ++ variable: "COMPILER_HAS_DEPRECATED_ATTR" ++ cached: true ++ stdout: | ++ Change Dir: '/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-s7DNFV' ++ ++ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_92146/fast ++ /usr/bin/gmake -f CMakeFiles/cmTC_92146.dir/build.make CMakeFiles/cmTC_92146.dir/build ++ gmake[1]: Entering directory '/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-s7DNFV' ++ Building CXX object CMakeFiles/cmTC_92146.dir/src.cxx.o ++ /usr/bin/c++ -DCOMPILER_HAS_DEPRECATED_ATTR -fPIE -MD -MT CMakeFiles/cmTC_92146.dir/src.cxx.o -MF CMakeFiles/cmTC_92146.dir/src.cxx.o.d -o CMakeFiles/cmTC_92146.dir/src.cxx.o -c /workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-s7DNFV/src.cxx ++ /workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-s7DNFV/src.cxx:2:25: warning: 'somefunc' is deprecated [-Wdeprecated-declarations] ++ 2 | int main() { return somefunc();} ++ | ^ ++ /workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-s7DNFV/src.cxx:1:16: note: 'somefunc' has been explicitly marked deprecated here ++ 1 | __attribute__((__deprecated__)) int somefunc() { return 0; } ++ | ^ ++ 1 warning generated. ++ Linking CXX executable cmTC_92146 ++ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_92146.dir/link.txt --verbose=1 ++ /usr/bin/c++ CMakeFiles/cmTC_92146.dir/src.cxx.o -o cmTC_92146 ++ gmake[1]: Leaving directory '/workspace/epanet/build/CMakeFiles/CMakeScratch/TryCompile-s7DNFV' ++ ++ exitCode: 0 ++... +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/CMakeDirectoryInformation.cmake /workspace/epanet/build/CMakeFiles/CMakeDirectoryInformation.cmake +--- /workspace/epanet_upstream/build/CMakeFiles/CMakeDirectoryInformation.cmake 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/CMakeDirectoryInformation.cmake 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,16 @@ ++# CMAKE generated file: DO NOT EDIT! ++# Generated by "Unix Makefiles" Generator, CMake Version 3.31 ++ ++# Relative path conversion top directories. ++set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/workspace/epanet") ++set(CMAKE_RELATIVE_PATH_TOP_BINARY "/workspace/epanet/build") ++ ++# Force unix paths in dependencies. ++set(CMAKE_FORCE_UNIX_PATHS 1) ++ ++ ++# The C and CXX include file regular expressions for this directory. ++set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") ++set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") ++set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) ++set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/build.make /workspace/epanet/build/CMakeFiles/epanet2.dir/build.make +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/build.make 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/build.make 2025-08-10 02:49:33.506682011 +0000 +@@ -0,0 +1,546 @@ ++# CMAKE generated file: DO NOT EDIT! ++# Generated by "Unix Makefiles" Generator, CMake Version 3.31 ++ ++# Delete rule output on recipe failure. ++.DELETE_ON_ERROR: ++ ++#============================================================================= ++# Special targets provided by cmake. ++ ++# Disable implicit rules so canonical targets will work. ++.SUFFIXES: ++ ++# Disable VCS-based implicit rules. ++% : %,v ++ ++# Disable VCS-based implicit rules. ++% : RCS/% ++ ++# Disable VCS-based implicit rules. ++% : RCS/%,v ++ ++# Disable VCS-based implicit rules. ++% : SCCS/s.% ++ ++# Disable VCS-based implicit rules. ++% : s.% ++ ++.SUFFIXES: .hpux_make_needs_suffix_list ++ ++# Command-line flag to silence nested $(MAKE). ++$(VERBOSE)MAKESILENT = -s ++ ++#Suppress display of executed commands. ++$(VERBOSE).SILENT: ++ ++# A target that is always out of date. ++cmake_force: ++.PHONY : cmake_force ++ ++#============================================================================= ++# Set environment variables for the build. ++ ++# The shell in which to execute make rules. ++SHELL = /bin/sh ++ ++# The CMake executable. ++CMAKE_COMMAND = /usr/bin/cmake ++ ++# The command to remove a file. ++RM = /usr/bin/cmake -E rm -f ++ ++# Escaping for special characters. ++EQUALS = = ++ ++# The top-level source directory on which CMake was run. ++CMAKE_SOURCE_DIR = /workspace/epanet ++ ++# The top-level build directory on which CMake was run. ++CMAKE_BINARY_DIR = /workspace/epanet/build ++ ++# Include any dependencies generated for this target. ++include CMakeFiles/epanet2.dir/depend.make ++# Include any dependencies generated by the compiler for this target. ++include CMakeFiles/epanet2.dir/compiler_depend.make ++ ++# Include the progress variables for this target. ++include CMakeFiles/epanet2.dir/progress.make ++ ++# Include the compile flags for this target's objects. ++include CMakeFiles/epanet2.dir/flags.make ++ ++CMakeFiles/epanet2.dir/codegen: ++.PHONY : CMakeFiles/epanet2.dir/codegen ++ ++CMakeFiles/epanet2.dir/src/epanet.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/epanet.c.o: /workspace/epanet/src/epanet.c ++CMakeFiles/epanet2.dir/src/epanet.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object CMakeFiles/epanet2.dir/src/epanet.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/epanet.c.o -MF CMakeFiles/epanet2.dir/src/epanet.c.o.d -o CMakeFiles/epanet2.dir/src/epanet.c.o -c /workspace/epanet/src/epanet.c ++ ++CMakeFiles/epanet2.dir/src/epanet.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/epanet.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/epanet.c > CMakeFiles/epanet2.dir/src/epanet.c.i ++ ++CMakeFiles/epanet2.dir/src/epanet.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/epanet.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/epanet.c -o CMakeFiles/epanet2.dir/src/epanet.c.s ++ ++CMakeFiles/epanet2.dir/src/epanet2.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/epanet2.c.o: /workspace/epanet/src/epanet2.c ++CMakeFiles/epanet2.dir/src/epanet2.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object CMakeFiles/epanet2.dir/src/epanet2.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/epanet2.c.o -MF CMakeFiles/epanet2.dir/src/epanet2.c.o.d -o CMakeFiles/epanet2.dir/src/epanet2.c.o -c /workspace/epanet/src/epanet2.c ++ ++CMakeFiles/epanet2.dir/src/epanet2.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/epanet2.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/epanet2.c > CMakeFiles/epanet2.dir/src/epanet2.c.i ++ ++CMakeFiles/epanet2.dir/src/epanet2.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/epanet2.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/epanet2.c -o CMakeFiles/epanet2.dir/src/epanet2.c.s ++ ++CMakeFiles/epanet2.dir/src/flowbalance.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/flowbalance.c.o: /workspace/epanet/src/flowbalance.c ++CMakeFiles/epanet2.dir/src/flowbalance.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building C object CMakeFiles/epanet2.dir/src/flowbalance.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/flowbalance.c.o -MF CMakeFiles/epanet2.dir/src/flowbalance.c.o.d -o CMakeFiles/epanet2.dir/src/flowbalance.c.o -c /workspace/epanet/src/flowbalance.c ++ ++CMakeFiles/epanet2.dir/src/flowbalance.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/flowbalance.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/flowbalance.c > CMakeFiles/epanet2.dir/src/flowbalance.c.i ++ ++CMakeFiles/epanet2.dir/src/flowbalance.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/flowbalance.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/flowbalance.c -o CMakeFiles/epanet2.dir/src/flowbalance.c.s ++ ++CMakeFiles/epanet2.dir/src/genmmd.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/genmmd.c.o: /workspace/epanet/src/genmmd.c ++CMakeFiles/epanet2.dir/src/genmmd.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building C object CMakeFiles/epanet2.dir/src/genmmd.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/genmmd.c.o -MF CMakeFiles/epanet2.dir/src/genmmd.c.o.d -o CMakeFiles/epanet2.dir/src/genmmd.c.o -c /workspace/epanet/src/genmmd.c ++ ++CMakeFiles/epanet2.dir/src/genmmd.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/genmmd.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/genmmd.c > CMakeFiles/epanet2.dir/src/genmmd.c.i ++ ++CMakeFiles/epanet2.dir/src/genmmd.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/genmmd.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/genmmd.c -o CMakeFiles/epanet2.dir/src/genmmd.c.s ++ ++CMakeFiles/epanet2.dir/src/hash.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/hash.c.o: /workspace/epanet/src/hash.c ++CMakeFiles/epanet2.dir/src/hash.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building C object CMakeFiles/epanet2.dir/src/hash.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/hash.c.o -MF CMakeFiles/epanet2.dir/src/hash.c.o.d -o CMakeFiles/epanet2.dir/src/hash.c.o -c /workspace/epanet/src/hash.c ++ ++CMakeFiles/epanet2.dir/src/hash.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/hash.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/hash.c > CMakeFiles/epanet2.dir/src/hash.c.i ++ ++CMakeFiles/epanet2.dir/src/hash.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/hash.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/hash.c -o CMakeFiles/epanet2.dir/src/hash.c.s ++ ++CMakeFiles/epanet2.dir/src/hydcoeffs.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/hydcoeffs.c.o: /workspace/epanet/src/hydcoeffs.c ++CMakeFiles/epanet2.dir/src/hydcoeffs.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building C object CMakeFiles/epanet2.dir/src/hydcoeffs.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/hydcoeffs.c.o -MF CMakeFiles/epanet2.dir/src/hydcoeffs.c.o.d -o CMakeFiles/epanet2.dir/src/hydcoeffs.c.o -c /workspace/epanet/src/hydcoeffs.c ++ ++CMakeFiles/epanet2.dir/src/hydcoeffs.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/hydcoeffs.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/hydcoeffs.c > CMakeFiles/epanet2.dir/src/hydcoeffs.c.i ++ ++CMakeFiles/epanet2.dir/src/hydcoeffs.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/hydcoeffs.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/hydcoeffs.c -o CMakeFiles/epanet2.dir/src/hydcoeffs.c.s ++ ++CMakeFiles/epanet2.dir/src/hydraul.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/hydraul.c.o: /workspace/epanet/src/hydraul.c ++CMakeFiles/epanet2.dir/src/hydraul.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building C object CMakeFiles/epanet2.dir/src/hydraul.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/hydraul.c.o -MF CMakeFiles/epanet2.dir/src/hydraul.c.o.d -o CMakeFiles/epanet2.dir/src/hydraul.c.o -c /workspace/epanet/src/hydraul.c ++ ++CMakeFiles/epanet2.dir/src/hydraul.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/hydraul.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/hydraul.c > CMakeFiles/epanet2.dir/src/hydraul.c.i ++ ++CMakeFiles/epanet2.dir/src/hydraul.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/hydraul.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/hydraul.c -o CMakeFiles/epanet2.dir/src/hydraul.c.s ++ ++CMakeFiles/epanet2.dir/src/hydsolver.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/hydsolver.c.o: /workspace/epanet/src/hydsolver.c ++CMakeFiles/epanet2.dir/src/hydsolver.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building C object CMakeFiles/epanet2.dir/src/hydsolver.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/hydsolver.c.o -MF CMakeFiles/epanet2.dir/src/hydsolver.c.o.d -o CMakeFiles/epanet2.dir/src/hydsolver.c.o -c /workspace/epanet/src/hydsolver.c ++ ++CMakeFiles/epanet2.dir/src/hydsolver.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/hydsolver.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/hydsolver.c > CMakeFiles/epanet2.dir/src/hydsolver.c.i ++ ++CMakeFiles/epanet2.dir/src/hydsolver.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/hydsolver.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/hydsolver.c -o CMakeFiles/epanet2.dir/src/hydsolver.c.s ++ ++CMakeFiles/epanet2.dir/src/hydstatus.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/hydstatus.c.o: /workspace/epanet/src/hydstatus.c ++CMakeFiles/epanet2.dir/src/hydstatus.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Building C object CMakeFiles/epanet2.dir/src/hydstatus.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/hydstatus.c.o -MF CMakeFiles/epanet2.dir/src/hydstatus.c.o.d -o CMakeFiles/epanet2.dir/src/hydstatus.c.o -c /workspace/epanet/src/hydstatus.c ++ ++CMakeFiles/epanet2.dir/src/hydstatus.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/hydstatus.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/hydstatus.c > CMakeFiles/epanet2.dir/src/hydstatus.c.i ++ ++CMakeFiles/epanet2.dir/src/hydstatus.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/hydstatus.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/hydstatus.c -o CMakeFiles/epanet2.dir/src/hydstatus.c.s ++ ++CMakeFiles/epanet2.dir/src/inpfile.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/inpfile.c.o: /workspace/epanet/src/inpfile.c ++CMakeFiles/epanet2.dir/src/inpfile.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_10) "Building C object CMakeFiles/epanet2.dir/src/inpfile.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/inpfile.c.o -MF CMakeFiles/epanet2.dir/src/inpfile.c.o.d -o CMakeFiles/epanet2.dir/src/inpfile.c.o -c /workspace/epanet/src/inpfile.c ++ ++CMakeFiles/epanet2.dir/src/inpfile.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/inpfile.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/inpfile.c > CMakeFiles/epanet2.dir/src/inpfile.c.i ++ ++CMakeFiles/epanet2.dir/src/inpfile.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/inpfile.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/inpfile.c -o CMakeFiles/epanet2.dir/src/inpfile.c.s ++ ++CMakeFiles/epanet2.dir/src/input1.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/input1.c.o: /workspace/epanet/src/input1.c ++CMakeFiles/epanet2.dir/src/input1.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_11) "Building C object CMakeFiles/epanet2.dir/src/input1.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/input1.c.o -MF CMakeFiles/epanet2.dir/src/input1.c.o.d -o CMakeFiles/epanet2.dir/src/input1.c.o -c /workspace/epanet/src/input1.c ++ ++CMakeFiles/epanet2.dir/src/input1.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/input1.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/input1.c > CMakeFiles/epanet2.dir/src/input1.c.i ++ ++CMakeFiles/epanet2.dir/src/input1.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/input1.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/input1.c -o CMakeFiles/epanet2.dir/src/input1.c.s ++ ++CMakeFiles/epanet2.dir/src/input2.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/input2.c.o: /workspace/epanet/src/input2.c ++CMakeFiles/epanet2.dir/src/input2.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_12) "Building C object CMakeFiles/epanet2.dir/src/input2.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/input2.c.o -MF CMakeFiles/epanet2.dir/src/input2.c.o.d -o CMakeFiles/epanet2.dir/src/input2.c.o -c /workspace/epanet/src/input2.c ++ ++CMakeFiles/epanet2.dir/src/input2.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/input2.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/input2.c > CMakeFiles/epanet2.dir/src/input2.c.i ++ ++CMakeFiles/epanet2.dir/src/input2.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/input2.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/input2.c -o CMakeFiles/epanet2.dir/src/input2.c.s ++ ++CMakeFiles/epanet2.dir/src/input3.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/input3.c.o: /workspace/epanet/src/input3.c ++CMakeFiles/epanet2.dir/src/input3.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_13) "Building C object CMakeFiles/epanet2.dir/src/input3.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/input3.c.o -MF CMakeFiles/epanet2.dir/src/input3.c.o.d -o CMakeFiles/epanet2.dir/src/input3.c.o -c /workspace/epanet/src/input3.c ++ ++CMakeFiles/epanet2.dir/src/input3.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/input3.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/input3.c > CMakeFiles/epanet2.dir/src/input3.c.i ++ ++CMakeFiles/epanet2.dir/src/input3.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/input3.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/input3.c -o CMakeFiles/epanet2.dir/src/input3.c.s ++ ++CMakeFiles/epanet2.dir/src/leakage.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/leakage.c.o: /workspace/epanet/src/leakage.c ++CMakeFiles/epanet2.dir/src/leakage.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_14) "Building C object CMakeFiles/epanet2.dir/src/leakage.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/leakage.c.o -MF CMakeFiles/epanet2.dir/src/leakage.c.o.d -o CMakeFiles/epanet2.dir/src/leakage.c.o -c /workspace/epanet/src/leakage.c ++ ++CMakeFiles/epanet2.dir/src/leakage.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/leakage.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/leakage.c > CMakeFiles/epanet2.dir/src/leakage.c.i ++ ++CMakeFiles/epanet2.dir/src/leakage.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/leakage.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/leakage.c -o CMakeFiles/epanet2.dir/src/leakage.c.s ++ ++CMakeFiles/epanet2.dir/src/mathexpr.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/mathexpr.c.o: /workspace/epanet/src/mathexpr.c ++CMakeFiles/epanet2.dir/src/mathexpr.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_15) "Building C object CMakeFiles/epanet2.dir/src/mathexpr.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/mathexpr.c.o -MF CMakeFiles/epanet2.dir/src/mathexpr.c.o.d -o CMakeFiles/epanet2.dir/src/mathexpr.c.o -c /workspace/epanet/src/mathexpr.c ++ ++CMakeFiles/epanet2.dir/src/mathexpr.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/mathexpr.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/mathexpr.c > CMakeFiles/epanet2.dir/src/mathexpr.c.i ++ ++CMakeFiles/epanet2.dir/src/mathexpr.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/mathexpr.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/mathexpr.c -o CMakeFiles/epanet2.dir/src/mathexpr.c.s ++ ++CMakeFiles/epanet2.dir/src/mempool.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/mempool.c.o: /workspace/epanet/src/mempool.c ++CMakeFiles/epanet2.dir/src/mempool.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_16) "Building C object CMakeFiles/epanet2.dir/src/mempool.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/mempool.c.o -MF CMakeFiles/epanet2.dir/src/mempool.c.o.d -o CMakeFiles/epanet2.dir/src/mempool.c.o -c /workspace/epanet/src/mempool.c ++ ++CMakeFiles/epanet2.dir/src/mempool.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/mempool.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/mempool.c > CMakeFiles/epanet2.dir/src/mempool.c.i ++ ++CMakeFiles/epanet2.dir/src/mempool.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/mempool.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/mempool.c -o CMakeFiles/epanet2.dir/src/mempool.c.s ++ ++CMakeFiles/epanet2.dir/src/output.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/output.c.o: /workspace/epanet/src/output.c ++CMakeFiles/epanet2.dir/src/output.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_17) "Building C object CMakeFiles/epanet2.dir/src/output.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/output.c.o -MF CMakeFiles/epanet2.dir/src/output.c.o.d -o CMakeFiles/epanet2.dir/src/output.c.o -c /workspace/epanet/src/output.c ++ ++CMakeFiles/epanet2.dir/src/output.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/output.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/output.c > CMakeFiles/epanet2.dir/src/output.c.i ++ ++CMakeFiles/epanet2.dir/src/output.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/output.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/output.c -o CMakeFiles/epanet2.dir/src/output.c.s ++ ++CMakeFiles/epanet2.dir/src/project.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/project.c.o: /workspace/epanet/src/project.c ++CMakeFiles/epanet2.dir/src/project.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_18) "Building C object CMakeFiles/epanet2.dir/src/project.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/project.c.o -MF CMakeFiles/epanet2.dir/src/project.c.o.d -o CMakeFiles/epanet2.dir/src/project.c.o -c /workspace/epanet/src/project.c ++ ++CMakeFiles/epanet2.dir/src/project.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/project.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/project.c > CMakeFiles/epanet2.dir/src/project.c.i ++ ++CMakeFiles/epanet2.dir/src/project.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/project.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/project.c -o CMakeFiles/epanet2.dir/src/project.c.s ++ ++CMakeFiles/epanet2.dir/src/quality.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/quality.c.o: /workspace/epanet/src/quality.c ++CMakeFiles/epanet2.dir/src/quality.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_19) "Building C object CMakeFiles/epanet2.dir/src/quality.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/quality.c.o -MF CMakeFiles/epanet2.dir/src/quality.c.o.d -o CMakeFiles/epanet2.dir/src/quality.c.o -c /workspace/epanet/src/quality.c ++ ++CMakeFiles/epanet2.dir/src/quality.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/quality.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/quality.c > CMakeFiles/epanet2.dir/src/quality.c.i ++ ++CMakeFiles/epanet2.dir/src/quality.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/quality.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/quality.c -o CMakeFiles/epanet2.dir/src/quality.c.s ++ ++CMakeFiles/epanet2.dir/src/qualreact.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/qualreact.c.o: /workspace/epanet/src/qualreact.c ++CMakeFiles/epanet2.dir/src/qualreact.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_20) "Building C object CMakeFiles/epanet2.dir/src/qualreact.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/qualreact.c.o -MF CMakeFiles/epanet2.dir/src/qualreact.c.o.d -o CMakeFiles/epanet2.dir/src/qualreact.c.o -c /workspace/epanet/src/qualreact.c ++ ++CMakeFiles/epanet2.dir/src/qualreact.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/qualreact.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/qualreact.c > CMakeFiles/epanet2.dir/src/qualreact.c.i ++ ++CMakeFiles/epanet2.dir/src/qualreact.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/qualreact.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/qualreact.c -o CMakeFiles/epanet2.dir/src/qualreact.c.s ++ ++CMakeFiles/epanet2.dir/src/qualroute.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/qualroute.c.o: /workspace/epanet/src/qualroute.c ++CMakeFiles/epanet2.dir/src/qualroute.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_21) "Building C object CMakeFiles/epanet2.dir/src/qualroute.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/qualroute.c.o -MF CMakeFiles/epanet2.dir/src/qualroute.c.o.d -o CMakeFiles/epanet2.dir/src/qualroute.c.o -c /workspace/epanet/src/qualroute.c ++ ++CMakeFiles/epanet2.dir/src/qualroute.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/qualroute.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/qualroute.c > CMakeFiles/epanet2.dir/src/qualroute.c.i ++ ++CMakeFiles/epanet2.dir/src/qualroute.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/qualroute.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/qualroute.c -o CMakeFiles/epanet2.dir/src/qualroute.c.s ++ ++CMakeFiles/epanet2.dir/src/report.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/report.c.o: /workspace/epanet/src/report.c ++CMakeFiles/epanet2.dir/src/report.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_22) "Building C object CMakeFiles/epanet2.dir/src/report.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/report.c.o -MF CMakeFiles/epanet2.dir/src/report.c.o.d -o CMakeFiles/epanet2.dir/src/report.c.o -c /workspace/epanet/src/report.c ++ ++CMakeFiles/epanet2.dir/src/report.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/report.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/report.c > CMakeFiles/epanet2.dir/src/report.c.i ++ ++CMakeFiles/epanet2.dir/src/report.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/report.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/report.c -o CMakeFiles/epanet2.dir/src/report.c.s ++ ++CMakeFiles/epanet2.dir/src/rules.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/rules.c.o: /workspace/epanet/src/rules.c ++CMakeFiles/epanet2.dir/src/rules.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_23) "Building C object CMakeFiles/epanet2.dir/src/rules.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/rules.c.o -MF CMakeFiles/epanet2.dir/src/rules.c.o.d -o CMakeFiles/epanet2.dir/src/rules.c.o -c /workspace/epanet/src/rules.c ++ ++CMakeFiles/epanet2.dir/src/rules.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/rules.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/rules.c > CMakeFiles/epanet2.dir/src/rules.c.i ++ ++CMakeFiles/epanet2.dir/src/rules.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/rules.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/rules.c -o CMakeFiles/epanet2.dir/src/rules.c.s ++ ++CMakeFiles/epanet2.dir/src/smatrix.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/smatrix.c.o: /workspace/epanet/src/smatrix.c ++CMakeFiles/epanet2.dir/src/smatrix.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_24) "Building C object CMakeFiles/epanet2.dir/src/smatrix.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/smatrix.c.o -MF CMakeFiles/epanet2.dir/src/smatrix.c.o.d -o CMakeFiles/epanet2.dir/src/smatrix.c.o -c /workspace/epanet/src/smatrix.c ++ ++CMakeFiles/epanet2.dir/src/smatrix.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/smatrix.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/smatrix.c > CMakeFiles/epanet2.dir/src/smatrix.c.i ++ ++CMakeFiles/epanet2.dir/src/smatrix.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/smatrix.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/smatrix.c -o CMakeFiles/epanet2.dir/src/smatrix.c.s ++ ++CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o: /workspace/epanet/src/util/cstr_helper.c ++CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_25) "Building C object CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o -MF CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o.d -o CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o -c /workspace/epanet/src/util/cstr_helper.c ++ ++CMakeFiles/epanet2.dir/src/util/cstr_helper.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/util/cstr_helper.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/util/cstr_helper.c > CMakeFiles/epanet2.dir/src/util/cstr_helper.c.i ++ ++CMakeFiles/epanet2.dir/src/util/cstr_helper.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/util/cstr_helper.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/util/cstr_helper.c -o CMakeFiles/epanet2.dir/src/util/cstr_helper.c.s ++ ++CMakeFiles/epanet2.dir/src/util/errormanager.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/util/errormanager.c.o: /workspace/epanet/src/util/errormanager.c ++CMakeFiles/epanet2.dir/src/util/errormanager.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_26) "Building C object CMakeFiles/epanet2.dir/src/util/errormanager.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/util/errormanager.c.o -MF CMakeFiles/epanet2.dir/src/util/errormanager.c.o.d -o CMakeFiles/epanet2.dir/src/util/errormanager.c.o -c /workspace/epanet/src/util/errormanager.c ++ ++CMakeFiles/epanet2.dir/src/util/errormanager.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/util/errormanager.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/util/errormanager.c > CMakeFiles/epanet2.dir/src/util/errormanager.c.i ++ ++CMakeFiles/epanet2.dir/src/util/errormanager.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/util/errormanager.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/util/errormanager.c -o CMakeFiles/epanet2.dir/src/util/errormanager.c.s ++ ++CMakeFiles/epanet2.dir/src/util/filemanager.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/util/filemanager.c.o: /workspace/epanet/src/util/filemanager.c ++CMakeFiles/epanet2.dir/src/util/filemanager.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_27) "Building C object CMakeFiles/epanet2.dir/src/util/filemanager.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/util/filemanager.c.o -MF CMakeFiles/epanet2.dir/src/util/filemanager.c.o.d -o CMakeFiles/epanet2.dir/src/util/filemanager.c.o -c /workspace/epanet/src/util/filemanager.c ++ ++CMakeFiles/epanet2.dir/src/util/filemanager.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/util/filemanager.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/util/filemanager.c > CMakeFiles/epanet2.dir/src/util/filemanager.c.i ++ ++CMakeFiles/epanet2.dir/src/util/filemanager.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/util/filemanager.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/util/filemanager.c -o CMakeFiles/epanet2.dir/src/util/filemanager.c.s ++ ++CMakeFiles/epanet2.dir/src/validate.c.o: CMakeFiles/epanet2.dir/flags.make ++CMakeFiles/epanet2.dir/src/validate.c.o: /workspace/epanet/src/validate.c ++CMakeFiles/epanet2.dir/src/validate.c.o: CMakeFiles/epanet2.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_28) "Building C object CMakeFiles/epanet2.dir/src/validate.c.o" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/epanet2.dir/src/validate.c.o -MF CMakeFiles/epanet2.dir/src/validate.c.o.d -o CMakeFiles/epanet2.dir/src/validate.c.o -c /workspace/epanet/src/validate.c ++ ++CMakeFiles/epanet2.dir/src/validate.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet2.dir/src/validate.c.i" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/validate.c > CMakeFiles/epanet2.dir/src/validate.c.i ++ ++CMakeFiles/epanet2.dir/src/validate.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet2.dir/src/validate.c.s" ++ /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/validate.c -o CMakeFiles/epanet2.dir/src/validate.c.s ++ ++# Object files for target epanet2 ++epanet2_OBJECTS = \ ++"CMakeFiles/epanet2.dir/src/epanet.c.o" \ ++"CMakeFiles/epanet2.dir/src/epanet2.c.o" \ ++"CMakeFiles/epanet2.dir/src/flowbalance.c.o" \ ++"CMakeFiles/epanet2.dir/src/genmmd.c.o" \ ++"CMakeFiles/epanet2.dir/src/hash.c.o" \ ++"CMakeFiles/epanet2.dir/src/hydcoeffs.c.o" \ ++"CMakeFiles/epanet2.dir/src/hydraul.c.o" \ ++"CMakeFiles/epanet2.dir/src/hydsolver.c.o" \ ++"CMakeFiles/epanet2.dir/src/hydstatus.c.o" \ ++"CMakeFiles/epanet2.dir/src/inpfile.c.o" \ ++"CMakeFiles/epanet2.dir/src/input1.c.o" \ ++"CMakeFiles/epanet2.dir/src/input2.c.o" \ ++"CMakeFiles/epanet2.dir/src/input3.c.o" \ ++"CMakeFiles/epanet2.dir/src/leakage.c.o" \ ++"CMakeFiles/epanet2.dir/src/mathexpr.c.o" \ ++"CMakeFiles/epanet2.dir/src/mempool.c.o" \ ++"CMakeFiles/epanet2.dir/src/output.c.o" \ ++"CMakeFiles/epanet2.dir/src/project.c.o" \ ++"CMakeFiles/epanet2.dir/src/quality.c.o" \ ++"CMakeFiles/epanet2.dir/src/qualreact.c.o" \ ++"CMakeFiles/epanet2.dir/src/qualroute.c.o" \ ++"CMakeFiles/epanet2.dir/src/report.c.o" \ ++"CMakeFiles/epanet2.dir/src/rules.c.o" \ ++"CMakeFiles/epanet2.dir/src/smatrix.c.o" \ ++"CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o" \ ++"CMakeFiles/epanet2.dir/src/util/errormanager.c.o" \ ++"CMakeFiles/epanet2.dir/src/util/filemanager.c.o" \ ++"CMakeFiles/epanet2.dir/src/validate.c.o" ++ ++# External object files for target epanet2 ++epanet2_EXTERNAL_OBJECTS = ++ ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/epanet.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/epanet2.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/flowbalance.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/genmmd.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/hash.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/hydcoeffs.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/hydraul.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/hydsolver.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/hydstatus.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/inpfile.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/input1.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/input2.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/input3.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/leakage.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/mathexpr.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/mempool.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/output.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/project.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/quality.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/qualreact.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/qualroute.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/report.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/rules.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/smatrix.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/util/errormanager.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/util/filemanager.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/src/validate.c.o ++lib/libepanet2.so: CMakeFiles/epanet2.dir/build.make ++lib/libepanet2.so: CMakeFiles/epanet2.dir/compiler_depend.ts ++lib/libepanet2.so: CMakeFiles/epanet2.dir/link.txt ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_29) "Linking C shared library lib/libepanet2.so" ++ $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/epanet2.dir/link.txt --verbose=$(VERBOSE) ++ ++# Rule to build all files generated by this target. ++CMakeFiles/epanet2.dir/build: lib/libepanet2.so ++.PHONY : CMakeFiles/epanet2.dir/build ++ ++CMakeFiles/epanet2.dir/clean: ++ $(CMAKE_COMMAND) -P CMakeFiles/epanet2.dir/cmake_clean.cmake ++.PHONY : CMakeFiles/epanet2.dir/clean ++ ++CMakeFiles/epanet2.dir/depend: ++ cd /workspace/epanet/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /workspace/epanet /workspace/epanet /workspace/epanet/build /workspace/epanet/build /workspace/epanet/build/CMakeFiles/epanet2.dir/DependInfo.cmake "--color=$(COLOR)" ++.PHONY : CMakeFiles/epanet2.dir/depend ++ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/cmake_clean.cmake /workspace/epanet/build/CMakeFiles/epanet2.dir/cmake_clean.cmake +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/cmake_clean.cmake 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/cmake_clean.cmake 2025-08-10 02:49:33.506682011 +0000 +@@ -0,0 +1,66 @@ ++file(REMOVE_RECURSE ++ "CMakeFiles/epanet2.dir/link.d" ++ "CMakeFiles/epanet2.dir/src/epanet.c.o" ++ "CMakeFiles/epanet2.dir/src/epanet.c.o.d" ++ "CMakeFiles/epanet2.dir/src/epanet2.c.o" ++ "CMakeFiles/epanet2.dir/src/epanet2.c.o.d" ++ "CMakeFiles/epanet2.dir/src/flowbalance.c.o" ++ "CMakeFiles/epanet2.dir/src/flowbalance.c.o.d" ++ "CMakeFiles/epanet2.dir/src/genmmd.c.o" ++ "CMakeFiles/epanet2.dir/src/genmmd.c.o.d" ++ "CMakeFiles/epanet2.dir/src/hash.c.o" ++ "CMakeFiles/epanet2.dir/src/hash.c.o.d" ++ "CMakeFiles/epanet2.dir/src/hydcoeffs.c.o" ++ "CMakeFiles/epanet2.dir/src/hydcoeffs.c.o.d" ++ "CMakeFiles/epanet2.dir/src/hydraul.c.o" ++ "CMakeFiles/epanet2.dir/src/hydraul.c.o.d" ++ "CMakeFiles/epanet2.dir/src/hydsolver.c.o" ++ "CMakeFiles/epanet2.dir/src/hydsolver.c.o.d" ++ "CMakeFiles/epanet2.dir/src/hydstatus.c.o" ++ "CMakeFiles/epanet2.dir/src/hydstatus.c.o.d" ++ "CMakeFiles/epanet2.dir/src/inpfile.c.o" ++ "CMakeFiles/epanet2.dir/src/inpfile.c.o.d" ++ "CMakeFiles/epanet2.dir/src/input1.c.o" ++ "CMakeFiles/epanet2.dir/src/input1.c.o.d" ++ "CMakeFiles/epanet2.dir/src/input2.c.o" ++ "CMakeFiles/epanet2.dir/src/input2.c.o.d" ++ "CMakeFiles/epanet2.dir/src/input3.c.o" ++ "CMakeFiles/epanet2.dir/src/input3.c.o.d" ++ "CMakeFiles/epanet2.dir/src/leakage.c.o" ++ "CMakeFiles/epanet2.dir/src/leakage.c.o.d" ++ "CMakeFiles/epanet2.dir/src/mathexpr.c.o" ++ "CMakeFiles/epanet2.dir/src/mathexpr.c.o.d" ++ "CMakeFiles/epanet2.dir/src/mempool.c.o" ++ "CMakeFiles/epanet2.dir/src/mempool.c.o.d" ++ "CMakeFiles/epanet2.dir/src/output.c.o" ++ "CMakeFiles/epanet2.dir/src/output.c.o.d" ++ "CMakeFiles/epanet2.dir/src/project.c.o" ++ "CMakeFiles/epanet2.dir/src/project.c.o.d" ++ "CMakeFiles/epanet2.dir/src/quality.c.o" ++ "CMakeFiles/epanet2.dir/src/quality.c.o.d" ++ "CMakeFiles/epanet2.dir/src/qualreact.c.o" ++ "CMakeFiles/epanet2.dir/src/qualreact.c.o.d" ++ "CMakeFiles/epanet2.dir/src/qualroute.c.o" ++ "CMakeFiles/epanet2.dir/src/qualroute.c.o.d" ++ "CMakeFiles/epanet2.dir/src/report.c.o" ++ "CMakeFiles/epanet2.dir/src/report.c.o.d" ++ "CMakeFiles/epanet2.dir/src/rules.c.o" ++ "CMakeFiles/epanet2.dir/src/rules.c.o.d" ++ "CMakeFiles/epanet2.dir/src/smatrix.c.o" ++ "CMakeFiles/epanet2.dir/src/smatrix.c.o.d" ++ "CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o" ++ "CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o.d" ++ "CMakeFiles/epanet2.dir/src/util/errormanager.c.o" ++ "CMakeFiles/epanet2.dir/src/util/errormanager.c.o.d" ++ "CMakeFiles/epanet2.dir/src/util/filemanager.c.o" ++ "CMakeFiles/epanet2.dir/src/util/filemanager.c.o.d" ++ "CMakeFiles/epanet2.dir/src/validate.c.o" ++ "CMakeFiles/epanet2.dir/src/validate.c.o.d" ++ "lib/libepanet2.pdb" ++ "lib/libepanet2.so" ++) ++ ++# Per-language clean rules from dependency scanning. ++foreach(lang C) ++ include(CMakeFiles/epanet2.dir/cmake_clean_${lang}.cmake OPTIONAL) ++endforeach() +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/compiler_depend.internal /workspace/epanet/build/CMakeFiles/epanet2.dir/compiler_depend.internal +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/compiler_depend.internal 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/compiler_depend.internal 2025-08-10 02:50:51.130908108 +0000 +@@ -0,0 +1,1871 @@ ++# CMAKE generated file: DO NOT EDIT! ++# Generated by "Unix Makefiles" Generator, CMake Version 3.31 ++ ++CMakeFiles/epanet2.dir/src/epanet.c.o ++ /workspace/epanet/src/epanet.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/math.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdio.h ++ /usr/include/stdlib.h ++ /usr/include/string.h ++ /usr/include/strings.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/float.h ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/include/epanet2_2.h ++ /workspace/epanet/include/epanet2_enums.h ++ /workspace/epanet/src/enumstxt.h ++ /workspace/epanet/src/funcs.h ++ /workspace/epanet/src/hash.h ++ /workspace/epanet/src/text.h ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/epanet2.c.o ++ /workspace/epanet/src/epanet2.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdio.h ++ /usr/include/stdlib.h ++ /usr/include/string.h ++ /usr/include/strings.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/include/epanet2.h ++ /workspace/epanet/include/epanet2_2.h ++ /workspace/epanet/include/epanet2_enums.h ++ /workspace/epanet/src/funcs.h ++ /workspace/epanet/src/hash.h ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/flowbalance.c.o ++ /workspace/epanet/src/flowbalance.c ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdio.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/hash.h ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/genmmd.c.o ++ /workspace/epanet/src/genmmd.c ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/math.h ++ /usr/include/stdc-predef.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ ++CMakeFiles/epanet2.dir/src/hash.c.o ++ /workspace/epanet/src/hash.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdlib.h ++ /usr/include/string.h ++ /usr/include/strings.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/hash.h ++ ++CMakeFiles/epanet2.dir/src/hydcoeffs.c.o ++ /workspace/epanet/src/hydcoeffs.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/math.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdio.h ++ /usr/include/stdlib.h ++ /usr/include/string.h ++ /usr/include/strings.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/funcs.h ++ /workspace/epanet/src/hash.h ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/hydraul.c.o ++ /workspace/epanet/src/hydraul.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/math.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdio.h ++ /usr/include/stdlib.h ++ /usr/include/string.h ++ /usr/include/strings.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/funcs.h ++ /workspace/epanet/src/hash.h ++ /workspace/epanet/src/text.h ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/hydsolver.c.o ++ /workspace/epanet/src/hydsolver.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/math.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdio.h ++ /usr/include/stdlib.h ++ /usr/include/string.h ++ /usr/include/strings.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/funcs.h ++ /workspace/epanet/src/hash.h ++ /workspace/epanet/src/text.h ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/hydstatus.c.o ++ /workspace/epanet/src/hydstatus.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdio.h ++ /usr/include/stdlib.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/funcs.h ++ /workspace/epanet/src/hash.h ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/inpfile.c.o ++ /workspace/epanet/src/inpfile.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/math.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdio.h ++ /usr/include/stdlib.h ++ /usr/include/string.h ++ /usr/include/strings.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/funcs.h ++ /workspace/epanet/src/hash.h ++ /workspace/epanet/src/text.h ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/input1.c.o ++ /workspace/epanet/src/input1.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/math.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdio.h ++ /usr/include/stdlib.h ++ /usr/include/string.h ++ /usr/include/strings.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/funcs.h ++ /workspace/epanet/src/hash.h ++ /workspace/epanet/src/text.h ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/input2.c.o ++ /workspace/epanet/src/input2.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/math.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdio.h ++ /usr/include/stdlib.h ++ /usr/include/string.h ++ /usr/include/strings.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/funcs.h ++ /workspace/epanet/src/hash.h ++ /workspace/epanet/src/text.h ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/input3.c.o ++ /workspace/epanet/src/input3.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/math.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdio.h ++ /usr/include/stdlib.h ++ /usr/include/string.h ++ /usr/include/strings.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/funcs.h ++ /workspace/epanet/src/hash.h ++ /workspace/epanet/src/text.h ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/leakage.c.o ++ /workspace/epanet/src/leakage.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/math.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdio.h ++ /usr/include/stdlib.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/funcs.h ++ /workspace/epanet/src/hash.h ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/mathexpr.c.o ++ /workspace/epanet/src/mathexpr.c ++ /usr/include/alloca.h ++ /usr/include/ctype.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/math.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdlib.h ++ /usr/include/string.h ++ /usr/include/strings.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/mathexpr.h ++ ++CMakeFiles/epanet2.dir/src/mempool.c.o ++ /workspace/epanet/src/mempool.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdlib.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/mempool.h ++ ++CMakeFiles/epanet2.dir/src/output.c.o ++ /workspace/epanet/src/output.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/math.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdio.h ++ /usr/include/stdlib.h ++ /usr/include/string.h ++ /usr/include/strings.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/funcs.h ++ /workspace/epanet/src/hash.h ++ /workspace/epanet/src/text.h ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/project.c.o ++ /workspace/epanet/src/project.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/math.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdio.h ++ /usr/include/stdlib.h ++ /usr/include/string.h ++ /usr/include/strings.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/errors.dat ++ /workspace/epanet/src/funcs.h ++ /workspace/epanet/src/hash.h ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/quality.c.o ++ /workspace/epanet/src/quality.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/math.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdio.h ++ /usr/include/stdlib.h ++ /usr/include/string.h ++ /usr/include/strings.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/funcs.h ++ /workspace/epanet/src/hash.h ++ /workspace/epanet/src/mempool.h ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/qualreact.c.o ++ /workspace/epanet/src/qualreact.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/math.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdio.h ++ /usr/include/stdlib.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/hash.h ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/qualroute.c.o ++ /workspace/epanet/src/qualroute.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/math.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdio.h ++ /usr/include/stdlib.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/hash.h ++ /workspace/epanet/src/mempool.h ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/report.c.o ++ /workspace/epanet/src/report.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/math.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdio.h ++ /usr/include/stdlib.h ++ /usr/include/string.h ++ /usr/include/strings.h ++ /usr/include/time.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/funcs.h ++ /workspace/epanet/src/hash.h ++ /workspace/epanet/src/text.h ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/rules.c.o ++ /workspace/epanet/src/rules.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdio.h ++ /usr/include/stdlib.h ++ /usr/include/string.h ++ /usr/include/strings.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/funcs.h ++ /workspace/epanet/src/hash.h ++ /workspace/epanet/src/mathexpr.h ++ /workspace/epanet/src/text.h ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/smatrix.c.o ++ /workspace/epanet/src/smatrix.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/limits.h ++ /usr/include/linux/limits.h ++ /usr/include/math.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdio.h ++ /usr/include/stdlib.h ++ /usr/include/string.h ++ /usr/include/strings.h ++ /usr/include/time.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h ++ /usr/include/x86_64-linux-gnu/bits/local_lim.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h ++ /usr/include/x86_64-linux-gnu/bits/posix1_lim.h ++ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h ++ /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h ++ /usr/include/x86_64-linux-gnu/bits/pthread_stack_min.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/limits.h ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/funcs.h ++ /workspace/epanet/src/hash.h ++ /workspace/epanet/src/text.h ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o ++ /workspace/epanet/src/util/cstr_helper.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdlib.h ++ /usr/include/string.h ++ /usr/include/strings.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stdbool.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/util/cstr_helper.h ++ ++CMakeFiles/epanet2.dir/src/util/errormanager.c.o ++ /workspace/epanet/src/util/errormanager.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdlib.h ++ /usr/include/string.h ++ /usr/include/strings.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/util/errormanager.h ++ ++CMakeFiles/epanet2.dir/src/util/filemanager.c.o ++ /workspace/epanet/src/util/filemanager.c ++ /usr/include/alloca.h ++ /usr/include/endian.h ++ /usr/include/features-time64.h ++ /usr/include/features.h ++ /usr/include/stdc-predef.h ++ /usr/include/stdio.h ++ /usr/include/stdlib.h ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h ++ /usr/include/x86_64-linux-gnu/bits/endian.h ++ /usr/include/x86_64-linux-gnu/bits/endianness.h ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h ++ /usr/include/x86_64-linux-gnu/bits/floatn.h ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ++ /usr/include/x86_64-linux-gnu/bits/long-double.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ++ /usr/include/x86_64-linux-gnu/bits/select.h ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ++ /usr/include/x86_64-linux-gnu/bits/time64.h ++ /usr/include/x86_64-linux-gnu/bits/timesize.h ++ /usr/include/x86_64-linux-gnu/bits/types.h ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ /usr/include/x86_64-linux-gnu/sys/select.h ++ /usr/include/x86_64-linux-gnu/sys/types.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___va_copy.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg_header_macro.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg_va_arg.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg_va_copy.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg_va_list.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h ++ /usr/lib/llvm-20/lib/clang/20/include/stdbool.h ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h ++ /workspace/epanet/src/util/cstr_helper.h ++ /workspace/epanet/src/util/filemanager.h ++ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/compiler_depend.make /workspace/epanet/build/CMakeFiles/epanet2.dir/compiler_depend.make +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/compiler_depend.make 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/compiler_depend.make 2025-08-10 02:50:51.130908108 +0000 +@@ -0,0 +1,2108 @@ ++# CMAKE generated file: DO NOT EDIT! ++# Generated by "Unix Makefiles" Generator, CMake Version 3.31 ++ ++CMakeFiles/epanet2.dir/src/epanet.c.o: /workspace/epanet/src/epanet.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/math.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdio.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/string.h \ ++ /usr/include/strings.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/float.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/include/epanet2_2.h \ ++ /workspace/epanet/include/epanet2_enums.h \ ++ /workspace/epanet/src/enumstxt.h \ ++ /workspace/epanet/src/funcs.h \ ++ /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/text.h \ ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/epanet2.c.o: /workspace/epanet/src/epanet2.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdio.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/string.h \ ++ /usr/include/strings.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/include/epanet2.h \ ++ /workspace/epanet/include/epanet2_2.h \ ++ /workspace/epanet/include/epanet2_enums.h \ ++ /workspace/epanet/src/funcs.h \ ++ /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/flowbalance.c.o: /workspace/epanet/src/flowbalance.c \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdio.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/genmmd.c.o: /workspace/epanet/src/genmmd.c \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/math.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h ++ ++CMakeFiles/epanet2.dir/src/hash.c.o: /workspace/epanet/src/hash.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/string.h \ ++ /usr/include/strings.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/hash.h ++ ++CMakeFiles/epanet2.dir/src/hydcoeffs.c.o: /workspace/epanet/src/hydcoeffs.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/math.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdio.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/string.h \ ++ /usr/include/strings.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/funcs.h \ ++ /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/hydraul.c.o: /workspace/epanet/src/hydraul.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/math.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdio.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/string.h \ ++ /usr/include/strings.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/funcs.h \ ++ /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/text.h \ ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/hydsolver.c.o: /workspace/epanet/src/hydsolver.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/math.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdio.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/string.h \ ++ /usr/include/strings.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/funcs.h \ ++ /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/text.h \ ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/hydstatus.c.o: /workspace/epanet/src/hydstatus.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdio.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/funcs.h \ ++ /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/inpfile.c.o: /workspace/epanet/src/inpfile.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/math.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdio.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/string.h \ ++ /usr/include/strings.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/funcs.h \ ++ /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/text.h \ ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/input1.c.o: /workspace/epanet/src/input1.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/math.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdio.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/string.h \ ++ /usr/include/strings.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/funcs.h \ ++ /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/text.h \ ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/input2.c.o: /workspace/epanet/src/input2.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/math.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdio.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/string.h \ ++ /usr/include/strings.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/funcs.h \ ++ /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/text.h \ ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/input3.c.o: /workspace/epanet/src/input3.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/math.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdio.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/string.h \ ++ /usr/include/strings.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/funcs.h \ ++ /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/text.h \ ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/leakage.c.o: /workspace/epanet/src/leakage.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/math.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdio.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/funcs.h \ ++ /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/mathexpr.c.o: /workspace/epanet/src/mathexpr.c \ ++ /usr/include/alloca.h \ ++ /usr/include/ctype.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/math.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/string.h \ ++ /usr/include/strings.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/mathexpr.h ++ ++CMakeFiles/epanet2.dir/src/mempool.c.o: /workspace/epanet/src/mempool.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/mempool.h ++ ++CMakeFiles/epanet2.dir/src/output.c.o: /workspace/epanet/src/output.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/math.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdio.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/string.h \ ++ /usr/include/strings.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/funcs.h \ ++ /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/text.h \ ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/project.c.o: /workspace/epanet/src/project.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/math.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdio.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/string.h \ ++ /usr/include/strings.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/errors.dat \ ++ /workspace/epanet/src/funcs.h \ ++ /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/quality.c.o: /workspace/epanet/src/quality.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/math.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdio.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/string.h \ ++ /usr/include/strings.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/funcs.h \ ++ /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/mempool.h \ ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/qualreact.c.o: /workspace/epanet/src/qualreact.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/math.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdio.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/qualroute.c.o: /workspace/epanet/src/qualroute.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/math.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdio.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/mempool.h \ ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/report.c.o: /workspace/epanet/src/report.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/math.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdio.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/string.h \ ++ /usr/include/strings.h \ ++ /usr/include/time.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/funcs.h \ ++ /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/text.h \ ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/rules.c.o: /workspace/epanet/src/rules.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdio.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/string.h \ ++ /usr/include/strings.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/funcs.h \ ++ /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/mathexpr.h \ ++ /workspace/epanet/src/text.h \ ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/smatrix.c.o: /workspace/epanet/src/smatrix.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/limits.h \ ++ /usr/include/linux/limits.h \ ++ /usr/include/math.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdio.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/string.h \ ++ /usr/include/strings.h \ ++ /usr/include/time.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/local_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthread_stack_min.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/limits.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/funcs.h \ ++ /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/text.h \ ++ /workspace/epanet/src/types.h ++ ++CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o: /workspace/epanet/src/util/cstr_helper.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/string.h \ ++ /usr/include/strings.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdbool.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/util/cstr_helper.h ++ ++CMakeFiles/epanet2.dir/src/util/errormanager.c.o: /workspace/epanet/src/util/errormanager.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/string.h \ ++ /usr/include/strings.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/util/errormanager.h ++ ++CMakeFiles/epanet2.dir/src/util/filemanager.c.o: /workspace/epanet/src/util/filemanager.c \ ++ /usr/include/alloca.h \ ++ /usr/include/endian.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/features.h \ ++ /usr/include/stdc-predef.h \ ++ /usr/include/stdio.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___va_copy.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg_header_macro.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg_va_arg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg_va_copy.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdbool.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /workspace/epanet/src/util/cstr_helper.h \ ++ /workspace/epanet/src/util/filemanager.h ++ ++ ++/workspace/epanet/src/util/filemanager.h: ++ ++/usr/lib/llvm-20/lib/clang/20/include/__stdarg_va_copy.h: ++ ++/workspace/epanet/src/hydsolver.c: ++ ++/usr/include/x86_64-linux-gnu/bits/types/time_t.h: ++ ++/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: ++ ++/usr/include/x86_64-linux-gnu/bits/pthread_stack_min.h: ++ ++/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: ++ ++/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: ++ ++/usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h: ++ ++/usr/lib/llvm-20/lib/clang/20/include/__stdarg_va_list.h: ++ ++/usr/include/x86_64-linux-gnu/bits/long-double.h: ++ ++/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: ++ ++/usr/include/stdio.h: ++ ++/workspace/epanet/src/smatrix.c: ++ ++/usr/include/x86_64-linux-gnu/sys/cdefs.h: ++ ++/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: ++ ++/usr/include/endian.h: ++ ++/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: ++ ++/usr/include/x86_64-linux-gnu/bits/mathcalls.h: ++ ++/usr/include/stdc-predef.h: ++ ++/workspace/epanet/src/mempool.c: ++ ++/usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h: ++ ++/usr/include/x86_64-linux-gnu/bits/waitflags.h: ++ ++/workspace/epanet/src/types.h: ++ ++/workspace/epanet/src/hydcoeffs.c: ++ ++/usr/include/x86_64-linux-gnu/bits/types.h: ++ ++/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: ++ ++/workspace/epanet/src/hydstatus.c: ++ ++/usr/include/x86_64-linux-gnu/bits/select.h: ++ ++/usr/include/x86_64-linux-gnu/bits/fp-logb.h: ++ ++/usr/include/ctype.h: ++ ++/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: ++ ++/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: ++ ++/workspace/epanet/src/epanet2.c: ++ ++/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: ++ ++/usr/include/strings.h: ++ ++/usr/include/x86_64-linux-gnu/bits/floatn-common.h: ++ ++/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: ++ ++/usr/include/x86_64-linux-gnu/bits/time64.h: ++ ++/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: ++ ++/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: ++ ++/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: ++ ++/usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h: ++ ++/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: ++ ++/usr/include/x86_64-linux-gnu/bits/types/FILE.h: ++ ++/usr/include/features.h: ++ ++/workspace/epanet/src/input2.c: ++ ++/workspace/epanet/src/quality.c: ++ ++/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: ++ ++/workspace/epanet/src/qualreact.c: ++ ++/usr/include/limits.h: ++ ++/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: ++ ++/usr/include/stdlib.h: ++ ++/usr/include/features-time64.h: ++ ++/usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h: ++ ++/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: ++ ++/usr/include/alloca.h: ++ ++/usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h: ++ ++/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: ++ ++/workspace/epanet/src/inpfile.c: ++ ++/workspace/epanet/src/epanet.c: ++ ++/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: ++ ++/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: ++ ++/workspace/epanet/src/flowbalance.c: ++ ++/usr/lib/llvm-20/lib/clang/20/include/__stdarg_va_arg.h: ++ ++/usr/include/x86_64-linux-gnu/bits/typesizes.h: ++ ++/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: ++ ++/workspace/epanet/src/util/cstr_helper.h: ++ ++/usr/include/x86_64-linux-gnu/bits/endianness.h: ++ ++/usr/include/time.h: ++ ++/usr/include/x86_64-linux-gnu/bits/fp-fast.h: ++ ++/workspace/epanet/src/hash.c: ++ ++/usr/lib/llvm-20/lib/clang/20/include/__stdarg_header_macro.h: ++ ++/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: ++ ++/usr/lib/llvm-20/lib/clang/20/include/limits.h: ++ ++/usr/include/x86_64-linux-gnu/bits/waitstatus.h: ++ ++/usr/include/x86_64-linux-gnu/bits/wordsize.h: ++ ++/workspace/epanet/include/epanet2_enums.h: ++ ++/usr/include/math.h: ++ ++/workspace/epanet/src/util/filemanager.c: ++ ++/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: ++ ++/usr/include/x86_64-linux-gnu/sys/select.h: ++ ++/usr/include/x86_64-linux-gnu/sys/types.h: ++ ++/usr/include/x86_64-linux-gnu/bits/byteswap.h: ++ ++/workspace/epanet/src/hash.h: ++ ++/usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h: ++ ++/usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h: ++ ++/usr/lib/llvm-20/lib/clang/20/include/float.h: ++ ++/usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h: ++ ++/usr/lib/llvm-20/lib/clang/20/include/stdarg.h: ++ ++/usr/lib/llvm-20/lib/clang/20/include/stddef.h: ++ ++/workspace/epanet/src/leakage.c: ++ ++/workspace/epanet/include/epanet2_2.h: ++ ++/workspace/epanet/src/text.h: ++ ++/workspace/epanet/src/funcs.h: ++ ++/workspace/epanet/include/epanet2.h: ++ ++/usr/include/x86_64-linux-gnu/bits/time.h: ++ ++/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: ++ ++/workspace/epanet/src/genmmd.c: ++ ++/usr/include/x86_64-linux-gnu/bits/endian.h: ++ ++/usr/include/x86_64-linux-gnu/gnu/stubs.h: ++ ++/workspace/epanet/src/qualroute.c: ++ ++/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: ++ ++/workspace/epanet/src/input1.c: ++ ++/workspace/epanet/src/mathexpr.c: ++ ++/usr/include/string.h: ++ ++/workspace/epanet/src/util/errormanager.c: ++ ++/workspace/epanet/src/mathexpr.h: ++ ++/workspace/epanet/src/mempool.h: ++ ++/workspace/epanet/src/output.c: ++ ++/workspace/epanet/src/hydraul.c: ++ ++/workspace/epanet/src/project.c: ++ ++/usr/include/x86_64-linux-gnu/bits/timesize.h: ++ ++/workspace/epanet/src/errors.dat: ++ ++/usr/include/x86_64-linux-gnu/bits/flt-eval-method.h: ++ ++/workspace/epanet/src/report.c: ++ ++/usr/include/x86_64-linux-gnu/bits/floatn.h: ++ ++/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: ++ ++/workspace/epanet/src/rules.c: ++ ++/workspace/epanet/src/util/cstr_helper.c: ++ ++/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h: ++ ++/usr/include/x86_64-linux-gnu/bits/local_lim.h: ++ ++/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: ++ ++/usr/include/linux/limits.h: ++ ++/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: ++ ++/workspace/epanet/src/enumstxt.h: ++ ++/usr/lib/llvm-20/lib/clang/20/include/stdbool.h: ++ ++/usr/include/x86_64-linux-gnu/bits/math-vector.h: ++ ++/workspace/epanet/src/util/errormanager.h: ++ ++/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: ++ ++/workspace/epanet/src/input3.c: ++ ++/usr/lib/llvm-20/lib/clang/20/include/__stdarg___va_copy.h: +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/compiler_depend.ts /workspace/epanet/build/CMakeFiles/epanet2.dir/compiler_depend.ts +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/compiler_depend.ts 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/compiler_depend.ts 2025-08-10 02:49:33.506682011 +0000 +@@ -0,0 +1,2 @@ ++# CMAKE generated file: DO NOT EDIT! ++# Timestamp file for compiler generated dependencies management for epanet2. +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/DependInfo.cmake /workspace/epanet/build/CMakeFiles/epanet2.dir/DependInfo.cmake +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/DependInfo.cmake 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/DependInfo.cmake 2025-08-10 02:49:33.506682011 +0000 +@@ -0,0 +1,51 @@ ++ ++# Consider dependencies only in project. ++set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) ++ ++# The set of languages for which implicit dependencies are needed: ++set(CMAKE_DEPENDS_LANGUAGES ++ ) ++ ++# The set of dependency files which are needed: ++set(CMAKE_DEPENDS_DEPENDENCY_FILES ++ "/workspace/epanet/src/epanet.c" "CMakeFiles/epanet2.dir/src/epanet.c.o" "gcc" "CMakeFiles/epanet2.dir/src/epanet.c.o.d" ++ "/workspace/epanet/src/epanet2.c" "CMakeFiles/epanet2.dir/src/epanet2.c.o" "gcc" "CMakeFiles/epanet2.dir/src/epanet2.c.o.d" ++ "/workspace/epanet/src/flowbalance.c" "CMakeFiles/epanet2.dir/src/flowbalance.c.o" "gcc" "CMakeFiles/epanet2.dir/src/flowbalance.c.o.d" ++ "/workspace/epanet/src/genmmd.c" "CMakeFiles/epanet2.dir/src/genmmd.c.o" "gcc" "CMakeFiles/epanet2.dir/src/genmmd.c.o.d" ++ "/workspace/epanet/src/hash.c" "CMakeFiles/epanet2.dir/src/hash.c.o" "gcc" "CMakeFiles/epanet2.dir/src/hash.c.o.d" ++ "/workspace/epanet/src/hydcoeffs.c" "CMakeFiles/epanet2.dir/src/hydcoeffs.c.o" "gcc" "CMakeFiles/epanet2.dir/src/hydcoeffs.c.o.d" ++ "/workspace/epanet/src/hydraul.c" "CMakeFiles/epanet2.dir/src/hydraul.c.o" "gcc" "CMakeFiles/epanet2.dir/src/hydraul.c.o.d" ++ "/workspace/epanet/src/hydsolver.c" "CMakeFiles/epanet2.dir/src/hydsolver.c.o" "gcc" "CMakeFiles/epanet2.dir/src/hydsolver.c.o.d" ++ "/workspace/epanet/src/hydstatus.c" "CMakeFiles/epanet2.dir/src/hydstatus.c.o" "gcc" "CMakeFiles/epanet2.dir/src/hydstatus.c.o.d" ++ "/workspace/epanet/src/inpfile.c" "CMakeFiles/epanet2.dir/src/inpfile.c.o" "gcc" "CMakeFiles/epanet2.dir/src/inpfile.c.o.d" ++ "/workspace/epanet/src/input1.c" "CMakeFiles/epanet2.dir/src/input1.c.o" "gcc" "CMakeFiles/epanet2.dir/src/input1.c.o.d" ++ "/workspace/epanet/src/input2.c" "CMakeFiles/epanet2.dir/src/input2.c.o" "gcc" "CMakeFiles/epanet2.dir/src/input2.c.o.d" ++ "/workspace/epanet/src/input3.c" "CMakeFiles/epanet2.dir/src/input3.c.o" "gcc" "CMakeFiles/epanet2.dir/src/input3.c.o.d" ++ "/workspace/epanet/src/leakage.c" "CMakeFiles/epanet2.dir/src/leakage.c.o" "gcc" "CMakeFiles/epanet2.dir/src/leakage.c.o.d" ++ "/workspace/epanet/src/mathexpr.c" "CMakeFiles/epanet2.dir/src/mathexpr.c.o" "gcc" "CMakeFiles/epanet2.dir/src/mathexpr.c.o.d" ++ "/workspace/epanet/src/mempool.c" "CMakeFiles/epanet2.dir/src/mempool.c.o" "gcc" "CMakeFiles/epanet2.dir/src/mempool.c.o.d" ++ "/workspace/epanet/src/output.c" "CMakeFiles/epanet2.dir/src/output.c.o" "gcc" "CMakeFiles/epanet2.dir/src/output.c.o.d" ++ "/workspace/epanet/src/project.c" "CMakeFiles/epanet2.dir/src/project.c.o" "gcc" "CMakeFiles/epanet2.dir/src/project.c.o.d" ++ "/workspace/epanet/src/quality.c" "CMakeFiles/epanet2.dir/src/quality.c.o" "gcc" "CMakeFiles/epanet2.dir/src/quality.c.o.d" ++ "/workspace/epanet/src/qualreact.c" "CMakeFiles/epanet2.dir/src/qualreact.c.o" "gcc" "CMakeFiles/epanet2.dir/src/qualreact.c.o.d" ++ "/workspace/epanet/src/qualroute.c" "CMakeFiles/epanet2.dir/src/qualroute.c.o" "gcc" "CMakeFiles/epanet2.dir/src/qualroute.c.o.d" ++ "/workspace/epanet/src/report.c" "CMakeFiles/epanet2.dir/src/report.c.o" "gcc" "CMakeFiles/epanet2.dir/src/report.c.o.d" ++ "/workspace/epanet/src/rules.c" "CMakeFiles/epanet2.dir/src/rules.c.o" "gcc" "CMakeFiles/epanet2.dir/src/rules.c.o.d" ++ "/workspace/epanet/src/smatrix.c" "CMakeFiles/epanet2.dir/src/smatrix.c.o" "gcc" "CMakeFiles/epanet2.dir/src/smatrix.c.o.d" ++ "/workspace/epanet/src/util/cstr_helper.c" "CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o" "gcc" "CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o.d" ++ "/workspace/epanet/src/util/errormanager.c" "CMakeFiles/epanet2.dir/src/util/errormanager.c.o" "gcc" "CMakeFiles/epanet2.dir/src/util/errormanager.c.o.d" ++ "/workspace/epanet/src/util/filemanager.c" "CMakeFiles/epanet2.dir/src/util/filemanager.c.o" "gcc" "CMakeFiles/epanet2.dir/src/util/filemanager.c.o.d" ++ "/workspace/epanet/src/validate.c" "CMakeFiles/epanet2.dir/src/validate.c.o" "gcc" "CMakeFiles/epanet2.dir/src/validate.c.o.d" ++ "" "lib/libepanet2.so" "gcc" "CMakeFiles/epanet2.dir/link.d" ++ ) ++ ++# Targets to which this target links which contain Fortran sources. ++set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES ++ ) ++ ++# Targets to which this target links which contain Fortran sources. ++set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES ++ ) ++ ++# Fortran module output directory. ++set(CMAKE_Fortran_TARGET_MODULE_DIR "") +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/depend.make /workspace/epanet/build/CMakeFiles/epanet2.dir/depend.make +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/depend.make 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/depend.make 2025-08-10 02:49:33.506682011 +0000 +@@ -0,0 +1,2 @@ ++# Empty dependencies file for epanet2. ++# This may be replaced when dependencies are built. +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/flags.make /workspace/epanet/build/CMakeFiles/epanet2.dir/flags.make +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/flags.make 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/flags.make 2025-08-10 02:49:33.506682011 +0000 +@@ -0,0 +1,10 @@ ++# CMAKE generated file: DO NOT EDIT! ++# Generated by "Unix Makefiles" Generator, CMake Version 3.31 ++ ++# compile C with /usr/bin/cc ++C_DEFINES = -Depanet2_EXPORTS ++ ++C_INCLUDES = -I/workspace/epanet/include ++ ++C_FLAGS = -fPIC ++ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/link.d /workspace/epanet/build/CMakeFiles/epanet2.dir/link.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/link.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/link.d 2025-08-10 02:50:51.246908427 +0000 +@@ -0,0 +1,151 @@ ++lib/libepanet2.so: \ ++ /lib/x86_64-linux-gnu/crti.o \ ++ /usr/lib/gcc/x86_64-linux-gnu/14/crtbeginS.o \ ++ CMakeFiles/epanet2.dir/src/epanet.c.o \ ++ CMakeFiles/epanet2.dir/src/epanet2.c.o \ ++ CMakeFiles/epanet2.dir/src/flowbalance.c.o \ ++ CMakeFiles/epanet2.dir/src/genmmd.c.o \ ++ CMakeFiles/epanet2.dir/src/hash.c.o \ ++ CMakeFiles/epanet2.dir/src/hydcoeffs.c.o \ ++ CMakeFiles/epanet2.dir/src/hydraul.c.o \ ++ CMakeFiles/epanet2.dir/src/hydsolver.c.o \ ++ CMakeFiles/epanet2.dir/src/hydstatus.c.o \ ++ CMakeFiles/epanet2.dir/src/inpfile.c.o \ ++ CMakeFiles/epanet2.dir/src/input1.c.o \ ++ CMakeFiles/epanet2.dir/src/input2.c.o \ ++ CMakeFiles/epanet2.dir/src/input3.c.o \ ++ CMakeFiles/epanet2.dir/src/leakage.c.o \ ++ CMakeFiles/epanet2.dir/src/mathexpr.c.o \ ++ CMakeFiles/epanet2.dir/src/mempool.c.o \ ++ CMakeFiles/epanet2.dir/src/output.c.o \ ++ CMakeFiles/epanet2.dir/src/project.c.o \ ++ CMakeFiles/epanet2.dir/src/quality.c.o \ ++ CMakeFiles/epanet2.dir/src/qualreact.c.o \ ++ CMakeFiles/epanet2.dir/src/qualroute.c.o \ ++ CMakeFiles/epanet2.dir/src/report.c.o \ ++ CMakeFiles/epanet2.dir/src/rules.c.o \ ++ CMakeFiles/epanet2.dir/src/smatrix.c.o \ ++ CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o \ ++ CMakeFiles/epanet2.dir/src/util/errormanager.c.o \ ++ CMakeFiles/epanet2.dir/src/util/filemanager.c.o \ ++ CMakeFiles/epanet2.dir/src/validate.c.o \ ++ /usr/lib/gcc/x86_64-linux-gnu/14/libgcc.a \ ++ /usr/lib/gcc/x86_64-linux-gnu/14/libgcc_s.so \ ++ /usr/lib/gcc/x86_64-linux-gnu/14/libgcc_s.so \ ++ /usr/lib/gcc/x86_64-linux-gnu/14/libgcc_s.so \ ++ /lib/x86_64-linux-gnu/libgcc_s.so.1 \ ++ /usr/lib/gcc/x86_64-linux-gnu/14/libgcc.a \ ++ /lib/x86_64-linux-gnu/libc.so \ ++ /lib/x86_64-linux-gnu/libc.so \ ++ /lib/x86_64-linux-gnu/libc.so \ ++ /lib/x86_64-linux-gnu/libc.so.6 \ ++ /usr/lib/x86_64-linux-gnu/libc_nonshared.a \ ++ /lib64/ld-linux-x86-64.so.2 \ ++ /usr/lib/gcc/x86_64-linux-gnu/14/libgcc.a \ ++ /usr/lib/gcc/x86_64-linux-gnu/14/libgcc_s.so \ ++ /usr/lib/gcc/x86_64-linux-gnu/14/libgcc_s.so \ ++ /usr/lib/gcc/x86_64-linux-gnu/14/libgcc_s.so \ ++ /lib/x86_64-linux-gnu/libgcc_s.so.1 \ ++ /usr/lib/gcc/x86_64-linux-gnu/14/libgcc.a \ ++ /usr/lib/gcc/x86_64-linux-gnu/14/crtendS.o \ ++ /lib/x86_64-linux-gnu/crtn.o ++ ++/lib/x86_64-linux-gnu/crti.o: ++ ++/usr/lib/gcc/x86_64-linux-gnu/14/crtbeginS.o: ++ ++CMakeFiles/epanet2.dir/src/epanet.c.o: ++ ++CMakeFiles/epanet2.dir/src/epanet2.c.o: ++ ++CMakeFiles/epanet2.dir/src/flowbalance.c.o: ++ ++CMakeFiles/epanet2.dir/src/genmmd.c.o: ++ ++CMakeFiles/epanet2.dir/src/hash.c.o: ++ ++CMakeFiles/epanet2.dir/src/hydcoeffs.c.o: ++ ++CMakeFiles/epanet2.dir/src/hydraul.c.o: ++ ++CMakeFiles/epanet2.dir/src/hydsolver.c.o: ++ ++CMakeFiles/epanet2.dir/src/hydstatus.c.o: ++ ++CMakeFiles/epanet2.dir/src/inpfile.c.o: ++ ++CMakeFiles/epanet2.dir/src/input1.c.o: ++ ++CMakeFiles/epanet2.dir/src/input2.c.o: ++ ++CMakeFiles/epanet2.dir/src/input3.c.o: ++ ++CMakeFiles/epanet2.dir/src/leakage.c.o: ++ ++CMakeFiles/epanet2.dir/src/mathexpr.c.o: ++ ++CMakeFiles/epanet2.dir/src/mempool.c.o: ++ ++CMakeFiles/epanet2.dir/src/output.c.o: ++ ++CMakeFiles/epanet2.dir/src/project.c.o: ++ ++CMakeFiles/epanet2.dir/src/quality.c.o: ++ ++CMakeFiles/epanet2.dir/src/qualreact.c.o: ++ ++CMakeFiles/epanet2.dir/src/qualroute.c.o: ++ ++CMakeFiles/epanet2.dir/src/report.c.o: ++ ++CMakeFiles/epanet2.dir/src/rules.c.o: ++ ++CMakeFiles/epanet2.dir/src/smatrix.c.o: ++ ++CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o: ++ ++CMakeFiles/epanet2.dir/src/util/errormanager.c.o: ++ ++CMakeFiles/epanet2.dir/src/util/filemanager.c.o: ++ ++CMakeFiles/epanet2.dir/src/validate.c.o: ++ ++/usr/lib/gcc/x86_64-linux-gnu/14/libgcc.a: ++ ++/usr/lib/gcc/x86_64-linux-gnu/14/libgcc_s.so: ++ ++/usr/lib/gcc/x86_64-linux-gnu/14/libgcc_s.so: ++ ++/usr/lib/gcc/x86_64-linux-gnu/14/libgcc_s.so: ++ ++/lib/x86_64-linux-gnu/libgcc_s.so.1: ++ ++/usr/lib/gcc/x86_64-linux-gnu/14/libgcc.a: ++ ++/lib/x86_64-linux-gnu/libc.so: ++ ++/lib/x86_64-linux-gnu/libc.so: ++ ++/lib/x86_64-linux-gnu/libc.so: ++ ++/lib/x86_64-linux-gnu/libc.so.6: ++ ++/usr/lib/x86_64-linux-gnu/libc_nonshared.a: ++ ++/lib64/ld-linux-x86-64.so.2: ++ ++/usr/lib/gcc/x86_64-linux-gnu/14/libgcc.a: ++ ++/usr/lib/gcc/x86_64-linux-gnu/14/libgcc_s.so: ++ ++/usr/lib/gcc/x86_64-linux-gnu/14/libgcc_s.so: ++ ++/usr/lib/gcc/x86_64-linux-gnu/14/libgcc_s.so: ++ ++/lib/x86_64-linux-gnu/libgcc_s.so.1: ++ ++/usr/lib/gcc/x86_64-linux-gnu/14/libgcc.a: ++ ++/usr/lib/gcc/x86_64-linux-gnu/14/crtendS.o: ++ ++/lib/x86_64-linux-gnu/crtn.o: +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/link.txt /workspace/epanet/build/CMakeFiles/epanet2.dir/link.txt +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/link.txt 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/link.txt 2025-08-10 02:49:33.506682011 +0000 +@@ -0,0 +1 @@ ++/usr/bin/cc -fPIC -Xlinker --dependency-file=CMakeFiles/epanet2.dir/link.d -shared -Wl,-soname,libepanet2.so -o lib/libepanet2.so CMakeFiles/epanet2.dir/src/epanet.c.o CMakeFiles/epanet2.dir/src/epanet2.c.o CMakeFiles/epanet2.dir/src/flowbalance.c.o CMakeFiles/epanet2.dir/src/genmmd.c.o CMakeFiles/epanet2.dir/src/hash.c.o CMakeFiles/epanet2.dir/src/hydcoeffs.c.o CMakeFiles/epanet2.dir/src/hydraul.c.o CMakeFiles/epanet2.dir/src/hydsolver.c.o CMakeFiles/epanet2.dir/src/hydstatus.c.o CMakeFiles/epanet2.dir/src/inpfile.c.o CMakeFiles/epanet2.dir/src/input1.c.o CMakeFiles/epanet2.dir/src/input2.c.o CMakeFiles/epanet2.dir/src/input3.c.o CMakeFiles/epanet2.dir/src/leakage.c.o CMakeFiles/epanet2.dir/src/mathexpr.c.o CMakeFiles/epanet2.dir/src/mempool.c.o CMakeFiles/epanet2.dir/src/output.c.o CMakeFiles/epanet2.dir/src/project.c.o CMakeFiles/epanet2.dir/src/quality.c.o CMakeFiles/epanet2.dir/src/qualreact.c.o CMakeFiles/epanet2.dir/src/qualroute.c.o CMakeFiles/epanet2.dir/src/report.c.o CMakeFiles/epanet2.dir/src/rules.c.o CMakeFiles/epanet2.dir/src/smatrix.c.o CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o CMakeFiles/epanet2.dir/src/util/errormanager.c.o CMakeFiles/epanet2.dir/src/util/filemanager.c.o CMakeFiles/epanet2.dir/src/validate.c.o +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/progress.make /workspace/epanet/build/CMakeFiles/epanet2.dir/progress.make +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/progress.make 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/progress.make 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,30 @@ ++CMAKE_PROGRESS_1 = 6 ++CMAKE_PROGRESS_2 = 7 ++CMAKE_PROGRESS_3 = 8 ++CMAKE_PROGRESS_4 = 9 ++CMAKE_PROGRESS_5 = 10 ++CMAKE_PROGRESS_6 = 11 ++CMAKE_PROGRESS_7 = 12 ++CMAKE_PROGRESS_8 = 13 ++CMAKE_PROGRESS_9 = 14 ++CMAKE_PROGRESS_10 = 15 ++CMAKE_PROGRESS_11 = 16 ++CMAKE_PROGRESS_12 = 17 ++CMAKE_PROGRESS_13 = 18 ++CMAKE_PROGRESS_14 = 19 ++CMAKE_PROGRESS_15 = 20 ++CMAKE_PROGRESS_16 = 21 ++CMAKE_PROGRESS_17 = 22 ++CMAKE_PROGRESS_18 = 23 ++CMAKE_PROGRESS_19 = 24 ++CMAKE_PROGRESS_20 = 25 ++CMAKE_PROGRESS_21 = 26 ++CMAKE_PROGRESS_22 = 27 ++CMAKE_PROGRESS_23 = 28 ++CMAKE_PROGRESS_24 = 29 ++CMAKE_PROGRESS_25 = 30 ++CMAKE_PROGRESS_26 = 31 ++CMAKE_PROGRESS_27 = 32 ++CMAKE_PROGRESS_28 = 33 ++CMAKE_PROGRESS_29 = 34 ++ +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/epanet2.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/epanet2.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/epanet2.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/epanet2.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/epanet2.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/epanet2.c.o.d 2025-08-10 02:49:40.194702747 +0000 +@@ -0,0 +1,63 @@ ++CMakeFiles/epanet2.dir/src/epanet2.c.o: /workspace/epanet/src/epanet2.c \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/string.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/strings.h /workspace/epanet/src/types.h \ ++ /usr/include/stdio.h /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /workspace/epanet/src/hash.h /workspace/epanet/src/funcs.h \ ++ /workspace/epanet/include/epanet2.h \ ++ /workspace/epanet/include/epanet2_enums.h \ ++ /workspace/epanet/include/epanet2_2.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/epanet.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/epanet.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/epanet.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/epanet.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/epanet.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/epanet.c.o.d 2025-08-10 02:49:40.242702894 +0000 +@@ -0,0 +1,71 @@ ++CMakeFiles/epanet2.dir/src/epanet.c.o: /workspace/epanet/src/epanet.c \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/stdio.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h /usr/include/string.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/strings.h /usr/lib/llvm-20/lib/clang/20/include/float.h \ ++ /usr/include/math.h /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /workspace/epanet/include/epanet2_2.h \ ++ /workspace/epanet/include/epanet2_enums.h \ ++ /workspace/epanet/src/types.h /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/funcs.h /workspace/epanet/src/text.h \ ++ /workspace/epanet/src/enumstxt.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/flowbalance.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/flowbalance.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/flowbalance.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/flowbalance.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/flowbalance.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/flowbalance.c.o.d 2025-08-10 02:49:40.170702673 +0000 +@@ -0,0 +1,30 @@ ++CMakeFiles/epanet2.dir/src/flowbalance.c.o: \ ++ /workspace/epanet/src/flowbalance.c /workspace/epanet/src/types.h \ ++ /usr/include/stdio.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /workspace/epanet/src/hash.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/genmmd.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/genmmd.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/genmmd.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/genmmd.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/genmmd.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/genmmd.c.o.d 2025-08-10 02:49:40.190702735 +0000 +@@ -0,0 +1,23 @@ ++CMakeFiles/epanet2.dir/src/genmmd.c.o: /workspace/epanet/src/genmmd.c \ ++ /usr/include/math.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/hash.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/hash.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/hash.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/hash.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/hash.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/hash.c.o.d 2025-08-10 02:49:40.174702685 +0000 +@@ -0,0 +1,49 @@ ++CMakeFiles/epanet2.dir/src/hash.c.o: /workspace/epanet/src/hash.c \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/string.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/strings.h /workspace/epanet/src/hash.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/hydcoeffs.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/hydcoeffs.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/hydcoeffs.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/hydcoeffs.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/hydcoeffs.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/hydcoeffs.c.o.d 2025-08-10 02:49:40.214702808 +0000 +@@ -0,0 +1,68 @@ ++CMakeFiles/epanet2.dir/src/hydcoeffs.c.o: \ ++ /workspace/epanet/src/hydcoeffs.c /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/stdio.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h /usr/include/string.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/strings.h /usr/include/math.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /workspace/epanet/src/types.h /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/funcs.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/hydraul.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/hydraul.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/hydraul.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/hydraul.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/hydraul.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/hydraul.c.o.d 2025-08-10 02:49:40.238702882 +0000 +@@ -0,0 +1,68 @@ ++CMakeFiles/epanet2.dir/src/hydraul.c.o: /workspace/epanet/src/hydraul.c \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/stdio.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h /usr/include/string.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/strings.h /usr/include/math.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /workspace/epanet/src/types.h /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/funcs.h /workspace/epanet/src/text.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/hydsolver.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/hydsolver.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/hydsolver.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/hydsolver.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/hydsolver.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/hydsolver.c.o.d 2025-08-10 02:49:40.250702919 +0000 +@@ -0,0 +1,68 @@ ++CMakeFiles/epanet2.dir/src/hydsolver.c.o: \ ++ /workspace/epanet/src/hydsolver.c /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/stdio.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h /usr/include/string.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/strings.h /usr/include/math.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /workspace/epanet/src/types.h /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/funcs.h /workspace/epanet/src/text.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/hydstatus.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/hydstatus.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/hydstatus.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/hydstatus.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/hydstatus.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/hydstatus.c.o.d 2025-08-10 02:49:40.254702932 +0000 +@@ -0,0 +1,57 @@ ++CMakeFiles/epanet2.dir/src/hydstatus.c.o: \ ++ /workspace/epanet/src/hydstatus.c /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/stdio.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /workspace/epanet/src/types.h /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/funcs.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/inpfile.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/inpfile.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/inpfile.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/inpfile.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/inpfile.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/inpfile.c.o.d 2025-08-10 02:49:40.258702944 +0000 +@@ -0,0 +1,68 @@ ++CMakeFiles/epanet2.dir/src/inpfile.c.o: /workspace/epanet/src/inpfile.c \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/stdio.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h /usr/include/string.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/strings.h /usr/include/math.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /workspace/epanet/src/types.h /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/funcs.h /workspace/epanet/src/text.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/input1.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/input1.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/input1.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/input1.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/input1.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/input1.c.o.d 2025-08-10 02:49:40.282703018 +0000 +@@ -0,0 +1,68 @@ ++CMakeFiles/epanet2.dir/src/input1.c.o: /workspace/epanet/src/input1.c \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/stdio.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h /usr/include/string.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/strings.h /usr/include/math.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /workspace/epanet/src/types.h /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/funcs.h /workspace/epanet/src/text.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/input2.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/input2.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/input2.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/input2.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/input2.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/input2.c.o.d 2025-08-10 02:49:40.298703067 +0000 +@@ -0,0 +1,68 @@ ++CMakeFiles/epanet2.dir/src/input2.c.o: /workspace/epanet/src/input2.c \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/stdio.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h /usr/include/string.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/strings.h /usr/include/math.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /workspace/epanet/src/types.h /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/funcs.h /workspace/epanet/src/text.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/input3.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/input3.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/input3.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/input3.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/input3.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/input3.c.o.d 2025-08-10 02:49:40.346703215 +0000 +@@ -0,0 +1,68 @@ ++CMakeFiles/epanet2.dir/src/input3.c.o: /workspace/epanet/src/input3.c \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/stdio.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h /usr/include/string.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/strings.h /usr/include/math.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /workspace/epanet/src/types.h /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/funcs.h /workspace/epanet/src/text.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/leakage.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/leakage.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/leakage.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/leakage.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/leakage.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/leakage.c.o.d 2025-08-10 02:49:40.338703190 +0000 +@@ -0,0 +1,65 @@ ++CMakeFiles/epanet2.dir/src/leakage.c.o: /workspace/epanet/src/leakage.c \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/math.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /workspace/epanet/src/types.h /usr/include/stdio.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /workspace/epanet/src/hash.h /workspace/epanet/src/funcs.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/mathexpr.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/mathexpr.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/mathexpr.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/mathexpr.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/mathexpr.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/mathexpr.c.o.d 2025-08-10 02:50:07.518784731 +0000 +@@ -0,0 +1,58 @@ ++CMakeFiles/epanet2.dir/src/mathexpr.c.o: /workspace/epanet/src/mathexpr.c \ ++ /usr/include/ctype.h /usr/include/features.h \ ++ /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/string.h /usr/include/strings.h /usr/include/math.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /workspace/epanet/src/mathexpr.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/mempool.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/mempool.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/mempool.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/mempool.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/mempool.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/mempool.c.o.d 2025-08-10 02:49:40.326703153 +0000 +@@ -0,0 +1,46 @@ ++CMakeFiles/epanet2.dir/src/mempool.c.o: /workspace/epanet/src/mempool.c \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /workspace/epanet/src/mempool.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/output.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/output.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/output.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/output.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/output.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/output.c.o.d 2025-08-10 02:49:40.338703190 +0000 +@@ -0,0 +1,68 @@ ++CMakeFiles/epanet2.dir/src/output.c.o: /workspace/epanet/src/output.c \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/stdio.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h /usr/include/string.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/strings.h /usr/include/math.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /workspace/epanet/src/types.h /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/funcs.h /workspace/epanet/src/text.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/project.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/project.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/project.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/project.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/project.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/project.c.o.d 2025-08-10 02:49:40.390703350 +0000 +@@ -0,0 +1,68 @@ ++CMakeFiles/epanet2.dir/src/project.c.o: /workspace/epanet/src/project.c \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/stdio.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h /usr/include/string.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/strings.h /usr/include/math.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /workspace/epanet/src/types.h /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/funcs.h /workspace/epanet/src/errors.dat +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/quality.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/quality.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/quality.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/quality.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/quality.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/quality.c.o.d 2025-08-10 02:50:07.534784777 +0000 +@@ -0,0 +1,68 @@ ++CMakeFiles/epanet2.dir/src/quality.c.o: /workspace/epanet/src/quality.c \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/stdio.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h /usr/include/string.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/strings.h /usr/include/math.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /workspace/epanet/src/mempool.h /workspace/epanet/src/types.h \ ++ /workspace/epanet/src/hash.h /workspace/epanet/src/funcs.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/qualreact.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/qualreact.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/qualreact.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/qualreact.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/qualreact.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/qualreact.c.o.d 2025-08-10 02:50:07.534784777 +0000 +@@ -0,0 +1,64 @@ ++CMakeFiles/epanet2.dir/src/qualreact.c.o: \ ++ /workspace/epanet/src/qualreact.c /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/stdio.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h /usr/include/math.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /workspace/epanet/src/types.h /workspace/epanet/src/hash.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/qualroute.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/qualroute.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/qualroute.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/qualroute.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/qualroute.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/qualroute.c.o.d 2025-08-10 02:50:07.518784731 +0000 +@@ -0,0 +1,65 @@ ++CMakeFiles/epanet2.dir/src/qualroute.c.o: \ ++ /workspace/epanet/src/qualroute.c /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/stdio.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h /usr/include/math.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /workspace/epanet/src/mempool.h /workspace/epanet/src/types.h \ ++ /workspace/epanet/src/hash.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/report.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/report.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/report.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/report.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/report.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/report.c.o.d 2025-08-10 02:50:07.554784836 +0000 +@@ -0,0 +1,71 @@ ++CMakeFiles/epanet2.dir/src/report.c.o: /workspace/epanet/src/report.c \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/stdio.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h /usr/include/string.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/strings.h /usr/include/math.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h /usr/include/time.h \ ++ /usr/include/x86_64-linux-gnu/bits/time.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ ++ /workspace/epanet/src/types.h /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/funcs.h /workspace/epanet/src/text.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/rules.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/rules.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/rules.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/rules.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/rules.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/rules.c.o.d 2025-08-10 02:50:51.202908306 +0000 +@@ -0,0 +1,60 @@ ++CMakeFiles/epanet2.dir/src/rules.c.o: /workspace/epanet/src/rules.c \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/stdio.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h /usr/include/string.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/strings.h /workspace/epanet/src/types.h \ ++ /workspace/epanet/src/hash.h /workspace/epanet/src/funcs.h \ ++ /workspace/epanet/src/text.h /workspace/epanet/src/mathexpr.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/smatrix.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/smatrix.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/smatrix.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/smatrix.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/smatrix.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/smatrix.c.o.d 2025-08-10 02:50:07.582784918 +0000 +@@ -0,0 +1,78 @@ ++CMakeFiles/epanet2.dir/src/smatrix.c.o: /workspace/epanet/src/smatrix.c \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/stdio.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h /usr/include/string.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/strings.h /usr/include/math.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/limits.h /usr/include/limits.h \ ++ /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ ++ /usr/include/x86_64-linux-gnu/bits/local_lim.h \ ++ /usr/include/linux/limits.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthread_stack_min.h \ ++ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/time.h \ ++ /usr/include/x86_64-linux-gnu/bits/time.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ ++ /workspace/epanet/src/text.h /workspace/epanet/src/types.h \ ++ /workspace/epanet/src/hash.h /workspace/epanet/src/funcs.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o.d 2025-08-10 02:50:07.566784871 +0000 +@@ -0,0 +1,50 @@ ++CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o: \ ++ /workspace/epanet/src/util/cstr_helper.c /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/string.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/strings.h /workspace/epanet/src/util/cstr_helper.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdbool.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/util/errormanager.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/util/errormanager.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/util/errormanager.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/util/errormanager.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/util/errormanager.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/util/errormanager.c.o.d 2025-08-10 02:50:07.570784883 +0000 +@@ -0,0 +1,49 @@ ++CMakeFiles/epanet2.dir/src/util/errormanager.c.o: \ ++ /workspace/epanet/src/util/errormanager.c /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/include/string.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/strings.h /workspace/epanet/src/util/errormanager.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/util/filemanager.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/util/filemanager.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/util/filemanager.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/util/filemanager.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/util/filemanager.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/util/filemanager.c.o.d 2025-08-10 02:50:07.578784906 +0000 +@@ -0,0 +1,63 @@ ++CMakeFiles/epanet2.dir/src/util/filemanager.c.o: \ ++ /workspace/epanet/src/util/filemanager.c /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg_header_macro.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg_va_list.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg_va_arg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___va_copy.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg_va_copy.h \ ++ /workspace/epanet/src/util/filemanager.h /usr/include/stdio.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ ++ /workspace/epanet/src/util/cstr_helper.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdbool.h +Binary files /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/validate.c.o and /workspace/epanet/build/CMakeFiles/epanet2.dir/src/validate.c.o differ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/validate.c.o.d /workspace/epanet/build/CMakeFiles/epanet2.dir/src/validate.c.o.d +--- /workspace/epanet_upstream/build/CMakeFiles/epanet2.dir/src/validate.c.o.d 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/epanet2.dir/src/validate.c.o.d 2025-08-10 02:50:51.178908240 +0000 +@@ -0,0 +1,68 @@ ++CMakeFiles/epanet2.dir/src/validate.c.o: /workspace/epanet/src/validate.c \ ++ /usr/include/stdlib.h \ ++ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ ++ /usr/include/features.h /usr/include/features-time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ ++ /usr/include/x86_64-linux-gnu/bits/timesize.h \ ++ /usr/include/stdc-predef.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ ++ /usr/include/x86_64-linux-gnu/bits/long-double.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ ++ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stddef.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stddef_null.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitflags.h \ ++ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn.h \ ++ /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ ++ /usr/include/x86_64-linux-gnu/sys/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/types.h \ ++ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ ++ /usr/include/x86_64-linux-gnu/bits/time64.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endian.h \ ++ /usr/include/x86_64-linux-gnu/bits/endianness.h \ ++ /usr/include/x86_64-linux-gnu/bits/byteswap.h \ ++ /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ ++ /usr/include/x86_64-linux-gnu/sys/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/select.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ ++ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ ++ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ ++ /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ ++ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ ++ /usr/include/alloca.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/stdio.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/stdarg.h \ ++ /usr/lib/llvm-20/lib/clang/20/include/__stdarg___gnuc_va_list.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h /usr/include/string.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ ++ /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ ++ /usr/include/strings.h /usr/include/math.h \ ++ /usr/include/x86_64-linux-gnu/bits/math-vector.h \ ++ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ ++ /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ ++ /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ ++ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ ++ /workspace/epanet/src/types.h /workspace/epanet/src/hash.h \ ++ /workspace/epanet/src/funcs.h /workspace/epanet/src/text.h +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/Makefile2 /workspace/epanet/build/CMakeFiles/Makefile2 +--- /workspace/epanet_upstream/build/CMakeFiles/Makefile2 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/Makefile2 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,231 @@ ++# CMAKE generated file: DO NOT EDIT! ++# Generated by "Unix Makefiles" Generator, CMake Version 3.31 ++ ++# Default target executed when no arguments are given to make. ++default_target: all ++.PHONY : default_target ++ ++#============================================================================= ++# Special targets provided by cmake. ++ ++# Disable implicit rules so canonical targets will work. ++.SUFFIXES: ++ ++# Disable VCS-based implicit rules. ++% : %,v ++ ++# Disable VCS-based implicit rules. ++% : RCS/% ++ ++# Disable VCS-based implicit rules. ++% : RCS/%,v ++ ++# Disable VCS-based implicit rules. ++% : SCCS/s.% ++ ++# Disable VCS-based implicit rules. ++% : s.% ++ ++.SUFFIXES: .hpux_make_needs_suffix_list ++ ++# Command-line flag to silence nested $(MAKE). ++$(VERBOSE)MAKESILENT = -s ++ ++#Suppress display of executed commands. ++$(VERBOSE).SILENT: ++ ++# A target that is always out of date. ++cmake_force: ++.PHONY : cmake_force ++ ++#============================================================================= ++# Set environment variables for the build. ++ ++# The shell in which to execute make rules. ++SHELL = /bin/sh ++ ++# The CMake executable. ++CMAKE_COMMAND = /usr/bin/cmake ++ ++# The command to remove a file. ++RM = /usr/bin/cmake -E rm -f ++ ++# Escaping for special characters. ++EQUALS = = ++ ++# The top-level source directory on which CMake was run. ++CMAKE_SOURCE_DIR = /workspace/epanet ++ ++# The top-level build directory on which CMake was run. ++CMAKE_BINARY_DIR = /workspace/epanet/build ++ ++#============================================================================= ++# Directory level rules for the build root directory ++ ++# The main recursive "all" target. ++all: CMakeFiles/epanet2.dir/all ++all: run/all ++all: src/outfile/all ++.PHONY : all ++ ++# The main recursive "codegen" target. ++codegen: CMakeFiles/epanet2.dir/codegen ++codegen: run/codegen ++codegen: src/outfile/codegen ++.PHONY : codegen ++ ++# The main recursive "preinstall" target. ++preinstall: run/preinstall ++preinstall: src/outfile/preinstall ++.PHONY : preinstall ++ ++# The main recursive "clean" target. ++clean: CMakeFiles/epanet2.dir/clean ++clean: run/clean ++clean: src/outfile/clean ++.PHONY : clean ++ ++#============================================================================= ++# Directory level rules for directory run ++ ++# Recursive "all" directory target. ++run/all: run/CMakeFiles/runepanet.dir/all ++.PHONY : run/all ++ ++# Recursive "codegen" directory target. ++run/codegen: run/CMakeFiles/runepanet.dir/codegen ++.PHONY : run/codegen ++ ++# Recursive "preinstall" directory target. ++run/preinstall: ++.PHONY : run/preinstall ++ ++# Recursive "clean" directory target. ++run/clean: run/CMakeFiles/runepanet.dir/clean ++.PHONY : run/clean ++ ++#============================================================================= ++# Directory level rules for directory src/outfile ++ ++# Recursive "all" directory target. ++src/outfile/all: src/outfile/CMakeFiles/epanet-output.dir/all ++.PHONY : src/outfile/all ++ ++# Recursive "codegen" directory target. ++src/outfile/codegen: src/outfile/CMakeFiles/epanet-output.dir/codegen ++.PHONY : src/outfile/codegen ++ ++# Recursive "preinstall" directory target. ++src/outfile/preinstall: ++.PHONY : src/outfile/preinstall ++ ++# Recursive "clean" directory target. ++src/outfile/clean: src/outfile/CMakeFiles/epanet-output.dir/clean ++.PHONY : src/outfile/clean ++ ++#============================================================================= ++# Target rules for target CMakeFiles/epanet2.dir ++ ++# All Build rule for target. ++CMakeFiles/epanet2.dir/all: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/depend ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/build ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34 "Built target epanet2" ++.PHONY : CMakeFiles/epanet2.dir/all ++ ++# Build rule for subdir invocation for target. ++CMakeFiles/epanet2.dir/rule: cmake_check_build_system ++ $(CMAKE_COMMAND) -E cmake_progress_start /workspace/epanet/build/CMakeFiles 29 ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/epanet2.dir/all ++ $(CMAKE_COMMAND) -E cmake_progress_start /workspace/epanet/build/CMakeFiles 0 ++.PHONY : CMakeFiles/epanet2.dir/rule ++ ++# Convenience name for target. ++epanet2: CMakeFiles/epanet2.dir/rule ++.PHONY : epanet2 ++ ++# codegen rule for target. ++CMakeFiles/epanet2.dir/codegen: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/codegen ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34 "Finished codegen for target epanet2" ++.PHONY : CMakeFiles/epanet2.dir/codegen ++ ++# clean rule for target. ++CMakeFiles/epanet2.dir/clean: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/clean ++.PHONY : CMakeFiles/epanet2.dir/clean ++ ++#============================================================================= ++# Target rules for target run/CMakeFiles/runepanet.dir ++ ++# All Build rule for target. ++run/CMakeFiles/runepanet.dir/all: CMakeFiles/epanet2.dir/all ++ $(MAKE) $(MAKESILENT) -f run/CMakeFiles/runepanet.dir/build.make run/CMakeFiles/runepanet.dir/depend ++ $(MAKE) $(MAKESILENT) -f run/CMakeFiles/runepanet.dir/build.make run/CMakeFiles/runepanet.dir/build ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=35,36 "Built target runepanet" ++.PHONY : run/CMakeFiles/runepanet.dir/all ++ ++# Build rule for subdir invocation for target. ++run/CMakeFiles/runepanet.dir/rule: cmake_check_build_system ++ $(CMAKE_COMMAND) -E cmake_progress_start /workspace/epanet/build/CMakeFiles 31 ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 run/CMakeFiles/runepanet.dir/all ++ $(CMAKE_COMMAND) -E cmake_progress_start /workspace/epanet/build/CMakeFiles 0 ++.PHONY : run/CMakeFiles/runepanet.dir/rule ++ ++# Convenience name for target. ++runepanet: run/CMakeFiles/runepanet.dir/rule ++.PHONY : runepanet ++ ++# codegen rule for target. ++run/CMakeFiles/runepanet.dir/codegen: ++ $(MAKE) $(MAKESILENT) -f run/CMakeFiles/runepanet.dir/build.make run/CMakeFiles/runepanet.dir/codegen ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=35,36 "Finished codegen for target runepanet" ++.PHONY : run/CMakeFiles/runepanet.dir/codegen ++ ++# clean rule for target. ++run/CMakeFiles/runepanet.dir/clean: ++ $(MAKE) $(MAKESILENT) -f run/CMakeFiles/runepanet.dir/build.make run/CMakeFiles/runepanet.dir/clean ++.PHONY : run/CMakeFiles/runepanet.dir/clean ++ ++#============================================================================= ++# Target rules for target src/outfile/CMakeFiles/epanet-output.dir ++ ++# All Build rule for target. ++src/outfile/CMakeFiles/epanet-output.dir/all: ++ $(MAKE) $(MAKESILENT) -f src/outfile/CMakeFiles/epanet-output.dir/build.make src/outfile/CMakeFiles/epanet-output.dir/depend ++ $(MAKE) $(MAKESILENT) -f src/outfile/CMakeFiles/epanet-output.dir/build.make src/outfile/CMakeFiles/epanet-output.dir/build ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=1,2,3,4,5 "Built target epanet-output" ++.PHONY : src/outfile/CMakeFiles/epanet-output.dir/all ++ ++# Build rule for subdir invocation for target. ++src/outfile/CMakeFiles/epanet-output.dir/rule: cmake_check_build_system ++ $(CMAKE_COMMAND) -E cmake_progress_start /workspace/epanet/build/CMakeFiles 5 ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/outfile/CMakeFiles/epanet-output.dir/all ++ $(CMAKE_COMMAND) -E cmake_progress_start /workspace/epanet/build/CMakeFiles 0 ++.PHONY : src/outfile/CMakeFiles/epanet-output.dir/rule ++ ++# Convenience name for target. ++epanet-output: src/outfile/CMakeFiles/epanet-output.dir/rule ++.PHONY : epanet-output ++ ++# codegen rule for target. ++src/outfile/CMakeFiles/epanet-output.dir/codegen: ++ $(MAKE) $(MAKESILENT) -f src/outfile/CMakeFiles/epanet-output.dir/build.make src/outfile/CMakeFiles/epanet-output.dir/codegen ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=1,2,3,4,5 "Finished codegen for target epanet-output" ++.PHONY : src/outfile/CMakeFiles/epanet-output.dir/codegen ++ ++# clean rule for target. ++src/outfile/CMakeFiles/epanet-output.dir/clean: ++ $(MAKE) $(MAKESILENT) -f src/outfile/CMakeFiles/epanet-output.dir/build.make src/outfile/CMakeFiles/epanet-output.dir/clean ++.PHONY : src/outfile/CMakeFiles/epanet-output.dir/clean ++ ++#============================================================================= ++# Special targets to cleanup operation of make. ++ ++# Special rule to run CMake to check the build system integrity. ++# No rule that depends on this can have commands that come from listfiles ++# because they might be regenerated. ++cmake_check_build_system: ++ $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 ++.PHONY : cmake_check_build_system ++ +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/Makefile.cmake /workspace/epanet/build/CMakeFiles/Makefile.cmake +--- /workspace/epanet_upstream/build/CMakeFiles/Makefile.cmake 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/Makefile.cmake 2025-08-10 02:49:33.514682036 +0000 +@@ -0,0 +1,163 @@ ++# CMAKE generated file: DO NOT EDIT! ++# Generated by "Unix Makefiles" Generator, CMake Version 3.31 ++ ++# The generator used is: ++set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles") ++ ++# The top level Makefile was generated from the following files: ++set(CMAKE_MAKEFILE_DEPENDS ++ "CMakeCache.txt" ++ "/usr/share/cmake-3.31/Modules/CMakeCCompiler.cmake.in" ++ "/usr/share/cmake-3.31/Modules/CMakeCCompilerABI.c" ++ "/usr/share/cmake-3.31/Modules/CMakeCInformation.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeCXXCompiler.cmake.in" ++ "/usr/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp" ++ "/usr/share/cmake-3.31/Modules/CMakeCXXInformation.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeCommonLanguageInclude.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeCompilerIdDetection.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeDetermineCCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeDetermineCXXCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeDetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeDetermineCompilerSupport.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeDetermineSystem.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeFindBinUtils.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeGenericSystem.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeInitializeConfigs.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeLanguageInformation.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeParseImplicitIncludeInfo.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeParseImplicitLinkInfo.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeParseLibraryArchitecture.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeSystem.cmake.in" ++ "/usr/share/cmake-3.31/Modules/CMakeSystemSpecificInformation.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeSystemSpecificInitialize.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake" ++ "/usr/share/cmake-3.31/Modules/CMakeUnixFindMake.cmake" ++ "/usr/share/cmake-3.31/Modules/CheckCCompilerFlag.cmake" ++ "/usr/share/cmake-3.31/Modules/CheckCSourceCompiles.cmake" ++ "/usr/share/cmake-3.31/Modules/CheckCXXCompilerFlag.cmake" ++ "/usr/share/cmake-3.31/Modules/CheckCXXSourceCompiles.cmake" ++ "/usr/share/cmake-3.31/Modules/CheckCompilerFlag.cmake" ++ "/usr/share/cmake-3.31/Modules/CheckSourceCompiles.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/ADSP-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/ARMCC-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/ARMClang-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/AppleClang-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/Borland-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/CMakeCommonCompilerMacros.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/Clang-C.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/Clang-CXX.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/Clang-FindBinUtils.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/Clang.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/Cray-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/CrayClang-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/GHS-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/GNU-C-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/GNU.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/HP-C-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/HP-CXX-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/IAR-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/Intel-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/LCC-C-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/LCC-CXX-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/MSVC-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/NVHPC-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/OrangeC-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/PGI-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/PathScale-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/SCO-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/TI-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/TIClang-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/Tasking-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/Watcom-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/XL-C-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/XL-CXX-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/XLClang-C-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/zOS-C-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake" ++ "/usr/share/cmake-3.31/Modules/GenerateExportHeader.cmake" ++ "/usr/share/cmake-3.31/Modules/Internal/CMakeCLinkerInformation.cmake" ++ "/usr/share/cmake-3.31/Modules/Internal/CMakeCXXLinkerInformation.cmake" ++ "/usr/share/cmake-3.31/Modules/Internal/CMakeCommonLinkerInformation.cmake" ++ "/usr/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake" ++ "/usr/share/cmake-3.31/Modules/Internal/CheckCompilerFlag.cmake" ++ "/usr/share/cmake-3.31/Modules/Internal/CheckFlagCommonConfig.cmake" ++ "/usr/share/cmake-3.31/Modules/Internal/CheckSourceCompiles.cmake" ++ "/usr/share/cmake-3.31/Modules/Internal/FeatureTesting.cmake" ++ "/usr/share/cmake-3.31/Modules/Linker/GNU-C.cmake" ++ "/usr/share/cmake-3.31/Modules/Linker/GNU-CXX.cmake" ++ "/usr/share/cmake-3.31/Modules/Linker/GNU.cmake" ++ "/usr/share/cmake-3.31/Modules/Platform/Linker/GNU.cmake" ++ "/usr/share/cmake-3.31/Modules/Platform/Linker/Linux-GNU-C.cmake" ++ "/usr/share/cmake-3.31/Modules/Platform/Linker/Linux-GNU-CXX.cmake" ++ "/usr/share/cmake-3.31/Modules/Platform/Linker/Linux-GNU.cmake" ++ "/usr/share/cmake-3.31/Modules/Platform/Linux-Clang-C.cmake" ++ "/usr/share/cmake-3.31/Modules/Platform/Linux-Clang-CXX.cmake" ++ "/usr/share/cmake-3.31/Modules/Platform/Linux-Determine-CXX.cmake" ++ "/usr/share/cmake-3.31/Modules/Platform/Linux-GNU-C.cmake" ++ "/usr/share/cmake-3.31/Modules/Platform/Linux-GNU-CXX.cmake" ++ "/usr/share/cmake-3.31/Modules/Platform/Linux-GNU.cmake" ++ "/usr/share/cmake-3.31/Modules/Platform/Linux-Initialize.cmake" ++ "/usr/share/cmake-3.31/Modules/Platform/Linux.cmake" ++ "/usr/share/cmake-3.31/Modules/Platform/UnixPaths.cmake" ++ "/usr/share/cmake-3.31/Modules/exportheader.cmake.in" ++ "/workspace/epanet/CMakeLists.txt" ++ "CMakeFiles/3.31.6/CMakeCCompiler.cmake" ++ "CMakeFiles/3.31.6/CMakeCXXCompiler.cmake" ++ "CMakeFiles/3.31.6/CMakeSystem.cmake" ++ "/workspace/epanet/run/CMakeLists.txt" ++ "/workspace/epanet/src/outfile/CMakeLists.txt" ++ ) ++ ++# The corresponding makefile is: ++set(CMAKE_MAKEFILE_OUTPUTS ++ "Makefile" ++ "CMakeFiles/cmake.check_cache" ++ ) ++ ++# Byproducts of CMake generate step: ++set(CMAKE_MAKEFILE_PRODUCTS ++ "CMakeFiles/3.31.6/CMakeSystem.cmake" ++ "CMakeFiles/3.31.6/CMakeCCompiler.cmake" ++ "CMakeFiles/3.31.6/CMakeCXXCompiler.cmake" ++ "CMakeFiles/3.31.6/CMakeCCompiler.cmake" ++ "CMakeFiles/3.31.6/CMakeCXXCompiler.cmake" ++ "CMakeFiles/CMakeDirectoryInformation.cmake" ++ "run/CMakeFiles/CMakeDirectoryInformation.cmake" ++ "src/outfile/epanet_output_export.h" ++ "src/outfile/CMakeFiles/CMakeDirectoryInformation.cmake" ++ ) ++ ++# Dependency information for all targets: ++set(CMAKE_DEPEND_INFO_FILES ++ "CMakeFiles/epanet2.dir/DependInfo.cmake" ++ "run/CMakeFiles/runepanet.dir/DependInfo.cmake" ++ "src/outfile/CMakeFiles/epanet-output.dir/DependInfo.cmake" ++ ) +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/progress.marks /workspace/epanet/build/CMakeFiles/progress.marks +--- /workspace/epanet_upstream/build/CMakeFiles/progress.marks 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/progress.marks 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1 @@ ++36 +diff -ruN /workspace/epanet_upstream/build/CMakeFiles/TargetDirectories.txt /workspace/epanet/build/CMakeFiles/TargetDirectories.txt +--- /workspace/epanet_upstream/build/CMakeFiles/TargetDirectories.txt 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/CMakeFiles/TargetDirectories.txt 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,21 @@ ++/workspace/epanet/build/CMakeFiles/epanet2.dir ++/workspace/epanet/build/CMakeFiles/edit_cache.dir ++/workspace/epanet/build/CMakeFiles/rebuild_cache.dir ++/workspace/epanet/build/CMakeFiles/list_install_components.dir ++/workspace/epanet/build/CMakeFiles/install.dir ++/workspace/epanet/build/CMakeFiles/install/local.dir ++/workspace/epanet/build/CMakeFiles/install/strip.dir ++/workspace/epanet/build/run/CMakeFiles/runepanet.dir ++/workspace/epanet/build/run/CMakeFiles/edit_cache.dir ++/workspace/epanet/build/run/CMakeFiles/rebuild_cache.dir ++/workspace/epanet/build/run/CMakeFiles/list_install_components.dir ++/workspace/epanet/build/run/CMakeFiles/install.dir ++/workspace/epanet/build/run/CMakeFiles/install/local.dir ++/workspace/epanet/build/run/CMakeFiles/install/strip.dir ++/workspace/epanet/build/src/outfile/CMakeFiles/epanet-output.dir ++/workspace/epanet/build/src/outfile/CMakeFiles/edit_cache.dir ++/workspace/epanet/build/src/outfile/CMakeFiles/rebuild_cache.dir ++/workspace/epanet/build/src/outfile/CMakeFiles/list_install_components.dir ++/workspace/epanet/build/src/outfile/CMakeFiles/install.dir ++/workspace/epanet/build/src/outfile/CMakeFiles/install/local.dir ++/workspace/epanet/build/src/outfile/CMakeFiles/install/strip.dir +diff -ruN /workspace/epanet_upstream/build/cmake_install.cmake /workspace/epanet/build/cmake_install.cmake +--- /workspace/epanet_upstream/build/cmake_install.cmake 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/cmake_install.cmake 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,132 @@ ++# Install script for directory: /workspace/epanet ++ ++# Set the install prefix ++if(NOT DEFINED CMAKE_INSTALL_PREFIX) ++ set(CMAKE_INSTALL_PREFIX "/usr/local") ++endif() ++string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") ++ ++# Set the install configuration name. ++if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) ++ if(BUILD_TYPE) ++ string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" ++ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") ++ else() ++ set(CMAKE_INSTALL_CONFIG_NAME "") ++ endif() ++ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") ++endif() ++ ++# Set the component getting installed. ++if(NOT CMAKE_INSTALL_COMPONENT) ++ if(COMPONENT) ++ message(STATUS "Install component: \"${COMPONENT}\"") ++ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") ++ else() ++ set(CMAKE_INSTALL_COMPONENT) ++ endif() ++endif() ++ ++# Install shared libraries without execute permission? ++if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) ++ set(CMAKE_INSTALL_SO_NO_EXE "1") ++endif() ++ ++# Is this installation the result of a crosscompile? ++if(NOT DEFINED CMAKE_CROSSCOMPILING) ++ set(CMAKE_CROSSCOMPILING "FALSE") ++endif() ++ ++# Set path to fallback-tool for dependency-resolution. ++if(NOT DEFINED CMAKE_OBJDUMP) ++ set(CMAKE_OBJDUMP "/usr/bin/objdump") ++endif() ++ ++if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) ++ if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/./libepanet2.so" AND ++ NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/./libepanet2.so") ++ file(RPATH_CHECK ++ FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/./libepanet2.so" ++ RPATH "") ++ endif() ++ file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/." TYPE SHARED_LIBRARY FILES "/workspace/epanet/build/lib/libepanet2.so") ++ if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/./libepanet2.so" AND ++ NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/./libepanet2.so") ++ if(CMAKE_INSTALL_DO_STRIP) ++ execute_process(COMMAND "/usr/bin/strip" "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/./libepanet2.so") ++ endif() ++ endif() ++endif() ++ ++if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) ++endif() ++ ++if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) ++ include("/workspace/epanet/build/CMakeFiles/epanet2.dir/install-cxx-module-bmi-noconfig.cmake" OPTIONAL) ++endif() ++ ++if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) ++ if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/./runepanet" AND ++ NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/./runepanet") ++ file(RPATH_CHECK ++ FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/./runepanet" ++ RPATH "") ++ endif() ++ file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/." TYPE EXECUTABLE FILES "/workspace/epanet/build/bin/runepanet") ++ if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/./runepanet" AND ++ NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/./runepanet") ++ file(RPATH_CHANGE ++ FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/./runepanet" ++ OLD_RPATH "/workspace/epanet/build/lib:" ++ NEW_RPATH "") ++ if(CMAKE_INSTALL_DO_STRIP) ++ execute_process(COMMAND "/usr/bin/strip" "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/./runepanet") ++ endif() ++ endif() ++endif() ++ ++if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) ++ include("/workspace/epanet/build/run/CMakeFiles/runepanet.dir/install-cxx-module-bmi-noconfig.cmake" OPTIONAL) ++endif() ++ ++if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) ++ file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/." TYPE FILE FILES "/workspace/epanet/./include/epanet2.h") ++endif() ++ ++if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) ++ file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/." TYPE FILE FILES "/workspace/epanet/./include/epanet2_2.h") ++endif() ++ ++if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) ++ file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/." TYPE FILE FILES "/workspace/epanet/./include/epanet2_enums.h") ++endif() ++ ++if(NOT CMAKE_INSTALL_LOCAL_ONLY) ++ # Include the install script for each subdirectory. ++ include("/workspace/epanet/build/run/cmake_install.cmake") ++ include("/workspace/epanet/build/src/outfile/cmake_install.cmake") ++ ++endif() ++ ++string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT ++ "${CMAKE_INSTALL_MANIFEST_FILES}") ++if(CMAKE_INSTALL_LOCAL_ONLY) ++ file(WRITE "/workspace/epanet/build/install_local_manifest.txt" ++ "${CMAKE_INSTALL_MANIFEST_CONTENT}") ++endif() ++if(CMAKE_INSTALL_COMPONENT) ++ if(CMAKE_INSTALL_COMPONENT MATCHES "^[a-zA-Z0-9_.+-]+$") ++ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") ++ else() ++ string(MD5 CMAKE_INST_COMP_HASH "${CMAKE_INSTALL_COMPONENT}") ++ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INST_COMP_HASH}.txt") ++ unset(CMAKE_INST_COMP_HASH) ++ endif() ++else() ++ set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") ++endif() ++ ++if(NOT CMAKE_INSTALL_LOCAL_ONLY) ++ file(WRITE "/workspace/epanet/build/${CMAKE_INSTALL_MANIFEST}" ++ "${CMAKE_INSTALL_MANIFEST_CONTENT}") ++endif() +Binary files /workspace/epanet_upstream/build/lib/libepanet2.so and /workspace/epanet/build/lib/libepanet2.so differ +diff -ruN /workspace/epanet_upstream/build/Makefile /workspace/epanet/build/Makefile +--- /workspace/epanet_upstream/build/Makefile 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/Makefile 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,987 @@ ++# CMAKE generated file: DO NOT EDIT! ++# Generated by "Unix Makefiles" Generator, CMake Version 3.31 ++ ++# Default target executed when no arguments are given to make. ++default_target: all ++.PHONY : default_target ++ ++# Allow only one "make -f Makefile2" at a time, but pass parallelism. ++.NOTPARALLEL: ++ ++#============================================================================= ++# Special targets provided by cmake. ++ ++# Disable implicit rules so canonical targets will work. ++.SUFFIXES: ++ ++# Disable VCS-based implicit rules. ++% : %,v ++ ++# Disable VCS-based implicit rules. ++% : RCS/% ++ ++# Disable VCS-based implicit rules. ++% : RCS/%,v ++ ++# Disable VCS-based implicit rules. ++% : SCCS/s.% ++ ++# Disable VCS-based implicit rules. ++% : s.% ++ ++.SUFFIXES: .hpux_make_needs_suffix_list ++ ++# Command-line flag to silence nested $(MAKE). ++$(VERBOSE)MAKESILENT = -s ++ ++#Suppress display of executed commands. ++$(VERBOSE).SILENT: ++ ++# A target that is always out of date. ++cmake_force: ++.PHONY : cmake_force ++ ++#============================================================================= ++# Set environment variables for the build. ++ ++# The shell in which to execute make rules. ++SHELL = /bin/sh ++ ++# The CMake executable. ++CMAKE_COMMAND = /usr/bin/cmake ++ ++# The command to remove a file. ++RM = /usr/bin/cmake -E rm -f ++ ++# Escaping for special characters. ++EQUALS = = ++ ++# The top-level source directory on which CMake was run. ++CMAKE_SOURCE_DIR = /workspace/epanet ++ ++# The top-level build directory on which CMake was run. ++CMAKE_BINARY_DIR = /workspace/epanet/build ++ ++#============================================================================= ++# Targets provided globally by CMake. ++ ++# Special rule for the target edit_cache ++edit_cache: ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "No interactive CMake dialog available..." ++ /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. ++.PHONY : edit_cache ++ ++# Special rule for the target edit_cache ++edit_cache/fast: edit_cache ++.PHONY : edit_cache/fast ++ ++# Special rule for the target rebuild_cache ++rebuild_cache: ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." ++ /usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) ++.PHONY : rebuild_cache ++ ++# Special rule for the target rebuild_cache ++rebuild_cache/fast: rebuild_cache ++.PHONY : rebuild_cache/fast ++ ++# Special rule for the target list_install_components ++list_install_components: ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Available install components are: \"Unspecified\"" ++.PHONY : list_install_components ++ ++# Special rule for the target list_install_components ++list_install_components/fast: list_install_components ++.PHONY : list_install_components/fast ++ ++# Special rule for the target install ++install: preinstall ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." ++ /usr/bin/cmake -P cmake_install.cmake ++.PHONY : install ++ ++# Special rule for the target install ++install/fast: preinstall/fast ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." ++ /usr/bin/cmake -P cmake_install.cmake ++.PHONY : install/fast ++ ++# Special rule for the target install/local ++install/local: preinstall ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." ++ /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake ++.PHONY : install/local ++ ++# Special rule for the target install/local ++install/local/fast: preinstall/fast ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." ++ /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake ++.PHONY : install/local/fast ++ ++# Special rule for the target install/strip ++install/strip: preinstall ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." ++ /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake ++.PHONY : install/strip ++ ++# Special rule for the target install/strip ++install/strip/fast: preinstall/fast ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." ++ /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake ++.PHONY : install/strip/fast ++ ++# The main all target ++all: cmake_check_build_system ++ $(CMAKE_COMMAND) -E cmake_progress_start /workspace/epanet/build/CMakeFiles /workspace/epanet/build//CMakeFiles/progress.marks ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 all ++ $(CMAKE_COMMAND) -E cmake_progress_start /workspace/epanet/build/CMakeFiles 0 ++.PHONY : all ++ ++# The main clean target ++clean: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 clean ++.PHONY : clean ++ ++# The main clean target ++clean/fast: clean ++.PHONY : clean/fast ++ ++# Prepare targets for installation. ++preinstall: all ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall ++.PHONY : preinstall ++ ++# Prepare targets for installation. ++preinstall/fast: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall ++.PHONY : preinstall/fast ++ ++# clear depends ++depend: ++ $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 ++.PHONY : depend ++ ++#============================================================================= ++# Target rules for targets named epanet2 ++ ++# Build rule for target. ++epanet2: cmake_check_build_system ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 epanet2 ++.PHONY : epanet2 ++ ++# fast build rule for target. ++epanet2/fast: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/build ++.PHONY : epanet2/fast ++ ++#============================================================================= ++# Target rules for targets named runepanet ++ ++# Build rule for target. ++runepanet: cmake_check_build_system ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 runepanet ++.PHONY : runepanet ++ ++# fast build rule for target. ++runepanet/fast: ++ $(MAKE) $(MAKESILENT) -f run/CMakeFiles/runepanet.dir/build.make run/CMakeFiles/runepanet.dir/build ++.PHONY : runepanet/fast ++ ++#============================================================================= ++# Target rules for targets named epanet-output ++ ++# Build rule for target. ++epanet-output: cmake_check_build_system ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 epanet-output ++.PHONY : epanet-output ++ ++# fast build rule for target. ++epanet-output/fast: ++ $(MAKE) $(MAKESILENT) -f src/outfile/CMakeFiles/epanet-output.dir/build.make src/outfile/CMakeFiles/epanet-output.dir/build ++.PHONY : epanet-output/fast ++ ++src/epanet.o: src/epanet.c.o ++.PHONY : src/epanet.o ++ ++# target to build an object file ++src/epanet.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/epanet.c.o ++.PHONY : src/epanet.c.o ++ ++src/epanet.i: src/epanet.c.i ++.PHONY : src/epanet.i ++ ++# target to preprocess a source file ++src/epanet.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/epanet.c.i ++.PHONY : src/epanet.c.i ++ ++src/epanet.s: src/epanet.c.s ++.PHONY : src/epanet.s ++ ++# target to generate assembly for a file ++src/epanet.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/epanet.c.s ++.PHONY : src/epanet.c.s ++ ++src/epanet2.o: src/epanet2.c.o ++.PHONY : src/epanet2.o ++ ++# target to build an object file ++src/epanet2.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/epanet2.c.o ++.PHONY : src/epanet2.c.o ++ ++src/epanet2.i: src/epanet2.c.i ++.PHONY : src/epanet2.i ++ ++# target to preprocess a source file ++src/epanet2.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/epanet2.c.i ++.PHONY : src/epanet2.c.i ++ ++src/epanet2.s: src/epanet2.c.s ++.PHONY : src/epanet2.s ++ ++# target to generate assembly for a file ++src/epanet2.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/epanet2.c.s ++.PHONY : src/epanet2.c.s ++ ++src/flowbalance.o: src/flowbalance.c.o ++.PHONY : src/flowbalance.o ++ ++# target to build an object file ++src/flowbalance.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/flowbalance.c.o ++.PHONY : src/flowbalance.c.o ++ ++src/flowbalance.i: src/flowbalance.c.i ++.PHONY : src/flowbalance.i ++ ++# target to preprocess a source file ++src/flowbalance.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/flowbalance.c.i ++.PHONY : src/flowbalance.c.i ++ ++src/flowbalance.s: src/flowbalance.c.s ++.PHONY : src/flowbalance.s ++ ++# target to generate assembly for a file ++src/flowbalance.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/flowbalance.c.s ++.PHONY : src/flowbalance.c.s ++ ++src/genmmd.o: src/genmmd.c.o ++.PHONY : src/genmmd.o ++ ++# target to build an object file ++src/genmmd.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/genmmd.c.o ++.PHONY : src/genmmd.c.o ++ ++src/genmmd.i: src/genmmd.c.i ++.PHONY : src/genmmd.i ++ ++# target to preprocess a source file ++src/genmmd.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/genmmd.c.i ++.PHONY : src/genmmd.c.i ++ ++src/genmmd.s: src/genmmd.c.s ++.PHONY : src/genmmd.s ++ ++# target to generate assembly for a file ++src/genmmd.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/genmmd.c.s ++.PHONY : src/genmmd.c.s ++ ++src/hash.o: src/hash.c.o ++.PHONY : src/hash.o ++ ++# target to build an object file ++src/hash.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/hash.c.o ++.PHONY : src/hash.c.o ++ ++src/hash.i: src/hash.c.i ++.PHONY : src/hash.i ++ ++# target to preprocess a source file ++src/hash.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/hash.c.i ++.PHONY : src/hash.c.i ++ ++src/hash.s: src/hash.c.s ++.PHONY : src/hash.s ++ ++# target to generate assembly for a file ++src/hash.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/hash.c.s ++.PHONY : src/hash.c.s ++ ++src/hydcoeffs.o: src/hydcoeffs.c.o ++.PHONY : src/hydcoeffs.o ++ ++# target to build an object file ++src/hydcoeffs.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/hydcoeffs.c.o ++.PHONY : src/hydcoeffs.c.o ++ ++src/hydcoeffs.i: src/hydcoeffs.c.i ++.PHONY : src/hydcoeffs.i ++ ++# target to preprocess a source file ++src/hydcoeffs.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/hydcoeffs.c.i ++.PHONY : src/hydcoeffs.c.i ++ ++src/hydcoeffs.s: src/hydcoeffs.c.s ++.PHONY : src/hydcoeffs.s ++ ++# target to generate assembly for a file ++src/hydcoeffs.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/hydcoeffs.c.s ++.PHONY : src/hydcoeffs.c.s ++ ++src/hydraul.o: src/hydraul.c.o ++.PHONY : src/hydraul.o ++ ++# target to build an object file ++src/hydraul.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/hydraul.c.o ++.PHONY : src/hydraul.c.o ++ ++src/hydraul.i: src/hydraul.c.i ++.PHONY : src/hydraul.i ++ ++# target to preprocess a source file ++src/hydraul.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/hydraul.c.i ++.PHONY : src/hydraul.c.i ++ ++src/hydraul.s: src/hydraul.c.s ++.PHONY : src/hydraul.s ++ ++# target to generate assembly for a file ++src/hydraul.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/hydraul.c.s ++.PHONY : src/hydraul.c.s ++ ++src/hydsolver.o: src/hydsolver.c.o ++.PHONY : src/hydsolver.o ++ ++# target to build an object file ++src/hydsolver.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/hydsolver.c.o ++.PHONY : src/hydsolver.c.o ++ ++src/hydsolver.i: src/hydsolver.c.i ++.PHONY : src/hydsolver.i ++ ++# target to preprocess a source file ++src/hydsolver.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/hydsolver.c.i ++.PHONY : src/hydsolver.c.i ++ ++src/hydsolver.s: src/hydsolver.c.s ++.PHONY : src/hydsolver.s ++ ++# target to generate assembly for a file ++src/hydsolver.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/hydsolver.c.s ++.PHONY : src/hydsolver.c.s ++ ++src/hydstatus.o: src/hydstatus.c.o ++.PHONY : src/hydstatus.o ++ ++# target to build an object file ++src/hydstatus.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/hydstatus.c.o ++.PHONY : src/hydstatus.c.o ++ ++src/hydstatus.i: src/hydstatus.c.i ++.PHONY : src/hydstatus.i ++ ++# target to preprocess a source file ++src/hydstatus.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/hydstatus.c.i ++.PHONY : src/hydstatus.c.i ++ ++src/hydstatus.s: src/hydstatus.c.s ++.PHONY : src/hydstatus.s ++ ++# target to generate assembly for a file ++src/hydstatus.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/hydstatus.c.s ++.PHONY : src/hydstatus.c.s ++ ++src/inpfile.o: src/inpfile.c.o ++.PHONY : src/inpfile.o ++ ++# target to build an object file ++src/inpfile.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/inpfile.c.o ++.PHONY : src/inpfile.c.o ++ ++src/inpfile.i: src/inpfile.c.i ++.PHONY : src/inpfile.i ++ ++# target to preprocess a source file ++src/inpfile.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/inpfile.c.i ++.PHONY : src/inpfile.c.i ++ ++src/inpfile.s: src/inpfile.c.s ++.PHONY : src/inpfile.s ++ ++# target to generate assembly for a file ++src/inpfile.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/inpfile.c.s ++.PHONY : src/inpfile.c.s ++ ++src/input1.o: src/input1.c.o ++.PHONY : src/input1.o ++ ++# target to build an object file ++src/input1.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/input1.c.o ++.PHONY : src/input1.c.o ++ ++src/input1.i: src/input1.c.i ++.PHONY : src/input1.i ++ ++# target to preprocess a source file ++src/input1.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/input1.c.i ++.PHONY : src/input1.c.i ++ ++src/input1.s: src/input1.c.s ++.PHONY : src/input1.s ++ ++# target to generate assembly for a file ++src/input1.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/input1.c.s ++.PHONY : src/input1.c.s ++ ++src/input2.o: src/input2.c.o ++.PHONY : src/input2.o ++ ++# target to build an object file ++src/input2.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/input2.c.o ++.PHONY : src/input2.c.o ++ ++src/input2.i: src/input2.c.i ++.PHONY : src/input2.i ++ ++# target to preprocess a source file ++src/input2.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/input2.c.i ++.PHONY : src/input2.c.i ++ ++src/input2.s: src/input2.c.s ++.PHONY : src/input2.s ++ ++# target to generate assembly for a file ++src/input2.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/input2.c.s ++.PHONY : src/input2.c.s ++ ++src/input3.o: src/input3.c.o ++.PHONY : src/input3.o ++ ++# target to build an object file ++src/input3.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/input3.c.o ++.PHONY : src/input3.c.o ++ ++src/input3.i: src/input3.c.i ++.PHONY : src/input3.i ++ ++# target to preprocess a source file ++src/input3.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/input3.c.i ++.PHONY : src/input3.c.i ++ ++src/input3.s: src/input3.c.s ++.PHONY : src/input3.s ++ ++# target to generate assembly for a file ++src/input3.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/input3.c.s ++.PHONY : src/input3.c.s ++ ++src/leakage.o: src/leakage.c.o ++.PHONY : src/leakage.o ++ ++# target to build an object file ++src/leakage.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/leakage.c.o ++.PHONY : src/leakage.c.o ++ ++src/leakage.i: src/leakage.c.i ++.PHONY : src/leakage.i ++ ++# target to preprocess a source file ++src/leakage.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/leakage.c.i ++.PHONY : src/leakage.c.i ++ ++src/leakage.s: src/leakage.c.s ++.PHONY : src/leakage.s ++ ++# target to generate assembly for a file ++src/leakage.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/leakage.c.s ++.PHONY : src/leakage.c.s ++ ++src/mathexpr.o: src/mathexpr.c.o ++.PHONY : src/mathexpr.o ++ ++# target to build an object file ++src/mathexpr.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/mathexpr.c.o ++.PHONY : src/mathexpr.c.o ++ ++src/mathexpr.i: src/mathexpr.c.i ++.PHONY : src/mathexpr.i ++ ++# target to preprocess a source file ++src/mathexpr.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/mathexpr.c.i ++.PHONY : src/mathexpr.c.i ++ ++src/mathexpr.s: src/mathexpr.c.s ++.PHONY : src/mathexpr.s ++ ++# target to generate assembly for a file ++src/mathexpr.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/mathexpr.c.s ++.PHONY : src/mathexpr.c.s ++ ++src/mempool.o: src/mempool.c.o ++.PHONY : src/mempool.o ++ ++# target to build an object file ++src/mempool.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/mempool.c.o ++.PHONY : src/mempool.c.o ++ ++src/mempool.i: src/mempool.c.i ++.PHONY : src/mempool.i ++ ++# target to preprocess a source file ++src/mempool.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/mempool.c.i ++.PHONY : src/mempool.c.i ++ ++src/mempool.s: src/mempool.c.s ++.PHONY : src/mempool.s ++ ++# target to generate assembly for a file ++src/mempool.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/mempool.c.s ++.PHONY : src/mempool.c.s ++ ++src/output.o: src/output.c.o ++.PHONY : src/output.o ++ ++# target to build an object file ++src/output.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/output.c.o ++.PHONY : src/output.c.o ++ ++src/output.i: src/output.c.i ++.PHONY : src/output.i ++ ++# target to preprocess a source file ++src/output.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/output.c.i ++.PHONY : src/output.c.i ++ ++src/output.s: src/output.c.s ++.PHONY : src/output.s ++ ++# target to generate assembly for a file ++src/output.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/output.c.s ++.PHONY : src/output.c.s ++ ++src/project.o: src/project.c.o ++.PHONY : src/project.o ++ ++# target to build an object file ++src/project.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/project.c.o ++.PHONY : src/project.c.o ++ ++src/project.i: src/project.c.i ++.PHONY : src/project.i ++ ++# target to preprocess a source file ++src/project.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/project.c.i ++.PHONY : src/project.c.i ++ ++src/project.s: src/project.c.s ++.PHONY : src/project.s ++ ++# target to generate assembly for a file ++src/project.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/project.c.s ++.PHONY : src/project.c.s ++ ++src/quality.o: src/quality.c.o ++.PHONY : src/quality.o ++ ++# target to build an object file ++src/quality.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/quality.c.o ++.PHONY : src/quality.c.o ++ ++src/quality.i: src/quality.c.i ++.PHONY : src/quality.i ++ ++# target to preprocess a source file ++src/quality.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/quality.c.i ++.PHONY : src/quality.c.i ++ ++src/quality.s: src/quality.c.s ++.PHONY : src/quality.s ++ ++# target to generate assembly for a file ++src/quality.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/quality.c.s ++.PHONY : src/quality.c.s ++ ++src/qualreact.o: src/qualreact.c.o ++.PHONY : src/qualreact.o ++ ++# target to build an object file ++src/qualreact.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/qualreact.c.o ++.PHONY : src/qualreact.c.o ++ ++src/qualreact.i: src/qualreact.c.i ++.PHONY : src/qualreact.i ++ ++# target to preprocess a source file ++src/qualreact.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/qualreact.c.i ++.PHONY : src/qualreact.c.i ++ ++src/qualreact.s: src/qualreact.c.s ++.PHONY : src/qualreact.s ++ ++# target to generate assembly for a file ++src/qualreact.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/qualreact.c.s ++.PHONY : src/qualreact.c.s ++ ++src/qualroute.o: src/qualroute.c.o ++.PHONY : src/qualroute.o ++ ++# target to build an object file ++src/qualroute.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/qualroute.c.o ++.PHONY : src/qualroute.c.o ++ ++src/qualroute.i: src/qualroute.c.i ++.PHONY : src/qualroute.i ++ ++# target to preprocess a source file ++src/qualroute.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/qualroute.c.i ++.PHONY : src/qualroute.c.i ++ ++src/qualroute.s: src/qualroute.c.s ++.PHONY : src/qualroute.s ++ ++# target to generate assembly for a file ++src/qualroute.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/qualroute.c.s ++.PHONY : src/qualroute.c.s ++ ++src/report.o: src/report.c.o ++.PHONY : src/report.o ++ ++# target to build an object file ++src/report.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/report.c.o ++.PHONY : src/report.c.o ++ ++src/report.i: src/report.c.i ++.PHONY : src/report.i ++ ++# target to preprocess a source file ++src/report.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/report.c.i ++.PHONY : src/report.c.i ++ ++src/report.s: src/report.c.s ++.PHONY : src/report.s ++ ++# target to generate assembly for a file ++src/report.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/report.c.s ++.PHONY : src/report.c.s ++ ++src/rules.o: src/rules.c.o ++.PHONY : src/rules.o ++ ++# target to build an object file ++src/rules.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/rules.c.o ++.PHONY : src/rules.c.o ++ ++src/rules.i: src/rules.c.i ++.PHONY : src/rules.i ++ ++# target to preprocess a source file ++src/rules.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/rules.c.i ++.PHONY : src/rules.c.i ++ ++src/rules.s: src/rules.c.s ++.PHONY : src/rules.s ++ ++# target to generate assembly for a file ++src/rules.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/rules.c.s ++.PHONY : src/rules.c.s ++ ++src/smatrix.o: src/smatrix.c.o ++.PHONY : src/smatrix.o ++ ++# target to build an object file ++src/smatrix.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/smatrix.c.o ++.PHONY : src/smatrix.c.o ++ ++src/smatrix.i: src/smatrix.c.i ++.PHONY : src/smatrix.i ++ ++# target to preprocess a source file ++src/smatrix.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/smatrix.c.i ++.PHONY : src/smatrix.c.i ++ ++src/smatrix.s: src/smatrix.c.s ++.PHONY : src/smatrix.s ++ ++# target to generate assembly for a file ++src/smatrix.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/smatrix.c.s ++.PHONY : src/smatrix.c.s ++ ++src/util/cstr_helper.o: src/util/cstr_helper.c.o ++.PHONY : src/util/cstr_helper.o ++ ++# target to build an object file ++src/util/cstr_helper.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/util/cstr_helper.c.o ++.PHONY : src/util/cstr_helper.c.o ++ ++src/util/cstr_helper.i: src/util/cstr_helper.c.i ++.PHONY : src/util/cstr_helper.i ++ ++# target to preprocess a source file ++src/util/cstr_helper.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/util/cstr_helper.c.i ++.PHONY : src/util/cstr_helper.c.i ++ ++src/util/cstr_helper.s: src/util/cstr_helper.c.s ++.PHONY : src/util/cstr_helper.s ++ ++# target to generate assembly for a file ++src/util/cstr_helper.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/util/cstr_helper.c.s ++.PHONY : src/util/cstr_helper.c.s ++ ++src/util/errormanager.o: src/util/errormanager.c.o ++.PHONY : src/util/errormanager.o ++ ++# target to build an object file ++src/util/errormanager.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/util/errormanager.c.o ++.PHONY : src/util/errormanager.c.o ++ ++src/util/errormanager.i: src/util/errormanager.c.i ++.PHONY : src/util/errormanager.i ++ ++# target to preprocess a source file ++src/util/errormanager.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/util/errormanager.c.i ++.PHONY : src/util/errormanager.c.i ++ ++src/util/errormanager.s: src/util/errormanager.c.s ++.PHONY : src/util/errormanager.s ++ ++# target to generate assembly for a file ++src/util/errormanager.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/util/errormanager.c.s ++.PHONY : src/util/errormanager.c.s ++ ++src/util/filemanager.o: src/util/filemanager.c.o ++.PHONY : src/util/filemanager.o ++ ++# target to build an object file ++src/util/filemanager.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/util/filemanager.c.o ++.PHONY : src/util/filemanager.c.o ++ ++src/util/filemanager.i: src/util/filemanager.c.i ++.PHONY : src/util/filemanager.i ++ ++# target to preprocess a source file ++src/util/filemanager.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/util/filemanager.c.i ++.PHONY : src/util/filemanager.c.i ++ ++src/util/filemanager.s: src/util/filemanager.c.s ++.PHONY : src/util/filemanager.s ++ ++# target to generate assembly for a file ++src/util/filemanager.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/util/filemanager.c.s ++.PHONY : src/util/filemanager.c.s ++ ++src/validate.o: src/validate.c.o ++.PHONY : src/validate.o ++ ++# target to build an object file ++src/validate.c.o: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/validate.c.o ++.PHONY : src/validate.c.o ++ ++src/validate.i: src/validate.c.i ++.PHONY : src/validate.i ++ ++# target to preprocess a source file ++src/validate.c.i: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/validate.c.i ++.PHONY : src/validate.c.i ++ ++src/validate.s: src/validate.c.s ++.PHONY : src/validate.s ++ ++# target to generate assembly for a file ++src/validate.c.s: ++ $(MAKE) $(MAKESILENT) -f CMakeFiles/epanet2.dir/build.make CMakeFiles/epanet2.dir/src/validate.c.s ++.PHONY : src/validate.c.s ++ ++# Help Target ++help: ++ @echo "The following are some of the valid targets for this Makefile:" ++ @echo "... all (the default if no target is provided)" ++ @echo "... clean" ++ @echo "... depend" ++ @echo "... edit_cache" ++ @echo "... install" ++ @echo "... install/local" ++ @echo "... install/strip" ++ @echo "... list_install_components" ++ @echo "... rebuild_cache" ++ @echo "... epanet-output" ++ @echo "... epanet2" ++ @echo "... runepanet" ++ @echo "... src/epanet.o" ++ @echo "... src/epanet.i" ++ @echo "... src/epanet.s" ++ @echo "... src/epanet2.o" ++ @echo "... src/epanet2.i" ++ @echo "... src/epanet2.s" ++ @echo "... src/flowbalance.o" ++ @echo "... src/flowbalance.i" ++ @echo "... src/flowbalance.s" ++ @echo "... src/genmmd.o" ++ @echo "... src/genmmd.i" ++ @echo "... src/genmmd.s" ++ @echo "... src/hash.o" ++ @echo "... src/hash.i" ++ @echo "... src/hash.s" ++ @echo "... src/hydcoeffs.o" ++ @echo "... src/hydcoeffs.i" ++ @echo "... src/hydcoeffs.s" ++ @echo "... src/hydraul.o" ++ @echo "... src/hydraul.i" ++ @echo "... src/hydraul.s" ++ @echo "... src/hydsolver.o" ++ @echo "... src/hydsolver.i" ++ @echo "... src/hydsolver.s" ++ @echo "... src/hydstatus.o" ++ @echo "... src/hydstatus.i" ++ @echo "... src/hydstatus.s" ++ @echo "... src/inpfile.o" ++ @echo "... src/inpfile.i" ++ @echo "... src/inpfile.s" ++ @echo "... src/input1.o" ++ @echo "... src/input1.i" ++ @echo "... src/input1.s" ++ @echo "... src/input2.o" ++ @echo "... src/input2.i" ++ @echo "... src/input2.s" ++ @echo "... src/input3.o" ++ @echo "... src/input3.i" ++ @echo "... src/input3.s" ++ @echo "... src/leakage.o" ++ @echo "... src/leakage.i" ++ @echo "... src/leakage.s" ++ @echo "... src/mathexpr.o" ++ @echo "... src/mathexpr.i" ++ @echo "... src/mathexpr.s" ++ @echo "... src/mempool.o" ++ @echo "... src/mempool.i" ++ @echo "... src/mempool.s" ++ @echo "... src/output.o" ++ @echo "... src/output.i" ++ @echo "... src/output.s" ++ @echo "... src/project.o" ++ @echo "... src/project.i" ++ @echo "... src/project.s" ++ @echo "... src/quality.o" ++ @echo "... src/quality.i" ++ @echo "... src/quality.s" ++ @echo "... src/qualreact.o" ++ @echo "... src/qualreact.i" ++ @echo "... src/qualreact.s" ++ @echo "... src/qualroute.o" ++ @echo "... src/qualroute.i" ++ @echo "... src/qualroute.s" ++ @echo "... src/report.o" ++ @echo "... src/report.i" ++ @echo "... src/report.s" ++ @echo "... src/rules.o" ++ @echo "... src/rules.i" ++ @echo "... src/rules.s" ++ @echo "... src/smatrix.o" ++ @echo "... src/smatrix.i" ++ @echo "... src/smatrix.s" ++ @echo "... src/util/cstr_helper.o" ++ @echo "... src/util/cstr_helper.i" ++ @echo "... src/util/cstr_helper.s" ++ @echo "... src/util/errormanager.o" ++ @echo "... src/util/errormanager.i" ++ @echo "... src/util/errormanager.s" ++ @echo "... src/util/filemanager.o" ++ @echo "... src/util/filemanager.i" ++ @echo "... src/util/filemanager.s" ++ @echo "... src/validate.o" ++ @echo "... src/validate.i" ++ @echo "... src/validate.s" ++.PHONY : help ++ ++ ++ ++#============================================================================= ++# Special targets to cleanup operation of make. ++ ++# Special rule to run CMake to check the build system integrity. ++# No rule that depends on this can have commands that come from listfiles ++# because they might be regenerated. ++cmake_check_build_system: ++ $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 ++.PHONY : cmake_check_build_system ++ +diff -ruN /workspace/epanet_upstream/build/run/CMakeFiles/CMakeDirectoryInformation.cmake /workspace/epanet/build/run/CMakeFiles/CMakeDirectoryInformation.cmake +--- /workspace/epanet_upstream/build/run/CMakeFiles/CMakeDirectoryInformation.cmake 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/run/CMakeFiles/CMakeDirectoryInformation.cmake 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,16 @@ ++# CMAKE generated file: DO NOT EDIT! ++# Generated by "Unix Makefiles" Generator, CMake Version 3.31 ++ ++# Relative path conversion top directories. ++set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/workspace/epanet") ++set(CMAKE_RELATIVE_PATH_TOP_BINARY "/workspace/epanet/build") ++ ++# Force unix paths in dependencies. ++set(CMAKE_FORCE_UNIX_PATHS 1) ++ ++ ++# The C and CXX include file regular expressions for this directory. ++set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") ++set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") ++set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) ++set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) +diff -ruN /workspace/epanet_upstream/build/run/CMakeFiles/progress.marks /workspace/epanet/build/run/CMakeFiles/progress.marks +--- /workspace/epanet_upstream/build/run/CMakeFiles/progress.marks 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/run/CMakeFiles/progress.marks 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1 @@ ++31 +diff -ruN /workspace/epanet_upstream/build/run/CMakeFiles/runepanet.dir/build.make /workspace/epanet/build/run/CMakeFiles/runepanet.dir/build.make +--- /workspace/epanet_upstream/build/run/CMakeFiles/runepanet.dir/build.make 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/run/CMakeFiles/runepanet.dir/build.make 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,115 @@ ++# CMAKE generated file: DO NOT EDIT! ++# Generated by "Unix Makefiles" Generator, CMake Version 3.31 ++ ++# Delete rule output on recipe failure. ++.DELETE_ON_ERROR: ++ ++#============================================================================= ++# Special targets provided by cmake. ++ ++# Disable implicit rules so canonical targets will work. ++.SUFFIXES: ++ ++# Disable VCS-based implicit rules. ++% : %,v ++ ++# Disable VCS-based implicit rules. ++% : RCS/% ++ ++# Disable VCS-based implicit rules. ++% : RCS/%,v ++ ++# Disable VCS-based implicit rules. ++% : SCCS/s.% ++ ++# Disable VCS-based implicit rules. ++% : s.% ++ ++.SUFFIXES: .hpux_make_needs_suffix_list ++ ++# Command-line flag to silence nested $(MAKE). ++$(VERBOSE)MAKESILENT = -s ++ ++#Suppress display of executed commands. ++$(VERBOSE).SILENT: ++ ++# A target that is always out of date. ++cmake_force: ++.PHONY : cmake_force ++ ++#============================================================================= ++# Set environment variables for the build. ++ ++# The shell in which to execute make rules. ++SHELL = /bin/sh ++ ++# The CMake executable. ++CMAKE_COMMAND = /usr/bin/cmake ++ ++# The command to remove a file. ++RM = /usr/bin/cmake -E rm -f ++ ++# Escaping for special characters. ++EQUALS = = ++ ++# The top-level source directory on which CMake was run. ++CMAKE_SOURCE_DIR = /workspace/epanet ++ ++# The top-level build directory on which CMake was run. ++CMAKE_BINARY_DIR = /workspace/epanet/build ++ ++# Include any dependencies generated for this target. ++include run/CMakeFiles/runepanet.dir/depend.make ++# Include any dependencies generated by the compiler for this target. ++include run/CMakeFiles/runepanet.dir/compiler_depend.make ++ ++# Include the progress variables for this target. ++include run/CMakeFiles/runepanet.dir/progress.make ++ ++# Include the compile flags for this target's objects. ++include run/CMakeFiles/runepanet.dir/flags.make ++ ++run/CMakeFiles/runepanet.dir/codegen: ++.PHONY : run/CMakeFiles/runepanet.dir/codegen ++ ++run/CMakeFiles/runepanet.dir/main.c.o: run/CMakeFiles/runepanet.dir/flags.make ++run/CMakeFiles/runepanet.dir/main.c.o: /workspace/epanet/run/main.c ++run/CMakeFiles/runepanet.dir/main.c.o: run/CMakeFiles/runepanet.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object run/CMakeFiles/runepanet.dir/main.c.o" ++ cd /workspace/epanet/build/run && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT run/CMakeFiles/runepanet.dir/main.c.o -MF CMakeFiles/runepanet.dir/main.c.o.d -o CMakeFiles/runepanet.dir/main.c.o -c /workspace/epanet/run/main.c ++ ++run/CMakeFiles/runepanet.dir/main.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/runepanet.dir/main.c.i" ++ cd /workspace/epanet/build/run && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/run/main.c > CMakeFiles/runepanet.dir/main.c.i ++ ++run/CMakeFiles/runepanet.dir/main.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/runepanet.dir/main.c.s" ++ cd /workspace/epanet/build/run && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/run/main.c -o CMakeFiles/runepanet.dir/main.c.s ++ ++# Object files for target runepanet ++runepanet_OBJECTS = \ ++"CMakeFiles/runepanet.dir/main.c.o" ++ ++# External object files for target runepanet ++runepanet_EXTERNAL_OBJECTS = ++ ++bin/runepanet: run/CMakeFiles/runepanet.dir/main.c.o ++bin/runepanet: run/CMakeFiles/runepanet.dir/build.make ++bin/runepanet: run/CMakeFiles/runepanet.dir/compiler_depend.ts ++bin/runepanet: lib/libepanet2.so ++bin/runepanet: run/CMakeFiles/runepanet.dir/link.txt ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking C executable ../bin/runepanet" ++ cd /workspace/epanet/build/run && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/runepanet.dir/link.txt --verbose=$(VERBOSE) ++ ++# Rule to build all files generated by this target. ++run/CMakeFiles/runepanet.dir/build: bin/runepanet ++.PHONY : run/CMakeFiles/runepanet.dir/build ++ ++run/CMakeFiles/runepanet.dir/clean: ++ cd /workspace/epanet/build/run && $(CMAKE_COMMAND) -P CMakeFiles/runepanet.dir/cmake_clean.cmake ++.PHONY : run/CMakeFiles/runepanet.dir/clean ++ ++run/CMakeFiles/runepanet.dir/depend: ++ cd /workspace/epanet/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /workspace/epanet /workspace/epanet/run /workspace/epanet/build /workspace/epanet/build/run /workspace/epanet/build/run/CMakeFiles/runepanet.dir/DependInfo.cmake "--color=$(COLOR)" ++.PHONY : run/CMakeFiles/runepanet.dir/depend ++ +diff -ruN /workspace/epanet_upstream/build/run/CMakeFiles/runepanet.dir/cmake_clean.cmake /workspace/epanet/build/run/CMakeFiles/runepanet.dir/cmake_clean.cmake +--- /workspace/epanet_upstream/build/run/CMakeFiles/runepanet.dir/cmake_clean.cmake 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/run/CMakeFiles/runepanet.dir/cmake_clean.cmake 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,12 @@ ++file(REMOVE_RECURSE ++ "../bin/runepanet" ++ "../bin/runepanet.pdb" ++ "CMakeFiles/runepanet.dir/link.d" ++ "CMakeFiles/runepanet.dir/main.c.o" ++ "CMakeFiles/runepanet.dir/main.c.o.d" ++) ++ ++# Per-language clean rules from dependency scanning. ++foreach(lang C) ++ include(CMakeFiles/runepanet.dir/cmake_clean_${lang}.cmake OPTIONAL) ++endforeach() +diff -ruN /workspace/epanet_upstream/build/run/CMakeFiles/runepanet.dir/compiler_depend.make /workspace/epanet/build/run/CMakeFiles/runepanet.dir/compiler_depend.make +--- /workspace/epanet_upstream/build/run/CMakeFiles/runepanet.dir/compiler_depend.make 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/run/CMakeFiles/runepanet.dir/compiler_depend.make 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,2 @@ ++# Empty compiler generated dependencies file for runepanet. ++# This may be replaced when dependencies are built. +diff -ruN /workspace/epanet_upstream/build/run/CMakeFiles/runepanet.dir/compiler_depend.ts /workspace/epanet/build/run/CMakeFiles/runepanet.dir/compiler_depend.ts +--- /workspace/epanet_upstream/build/run/CMakeFiles/runepanet.dir/compiler_depend.ts 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/run/CMakeFiles/runepanet.dir/compiler_depend.ts 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,2 @@ ++# CMAKE generated file: DO NOT EDIT! ++# Timestamp file for compiler generated dependencies management for runepanet. +diff -ruN /workspace/epanet_upstream/build/run/CMakeFiles/runepanet.dir/DependInfo.cmake /workspace/epanet/build/run/CMakeFiles/runepanet.dir/DependInfo.cmake +--- /workspace/epanet_upstream/build/run/CMakeFiles/runepanet.dir/DependInfo.cmake 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/run/CMakeFiles/runepanet.dir/DependInfo.cmake 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,24 @@ ++ ++# Consider dependencies only in project. ++set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) ++ ++# The set of languages for which implicit dependencies are needed: ++set(CMAKE_DEPENDS_LANGUAGES ++ ) ++ ++# The set of dependency files which are needed: ++set(CMAKE_DEPENDS_DEPENDENCY_FILES ++ "/workspace/epanet/run/main.c" "run/CMakeFiles/runepanet.dir/main.c.o" "gcc" "run/CMakeFiles/runepanet.dir/main.c.o.d" ++ "" "bin/runepanet" "gcc" "run/CMakeFiles/runepanet.dir/link.d" ++ ) ++ ++# Targets to which this target links which contain Fortran sources. ++set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES ++ ) ++ ++# Targets to which this target links which contain Fortran sources. ++set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES ++ ) ++ ++# Fortran module output directory. ++set(CMAKE_Fortran_TARGET_MODULE_DIR "") +diff -ruN /workspace/epanet_upstream/build/run/CMakeFiles/runepanet.dir/depend.make /workspace/epanet/build/run/CMakeFiles/runepanet.dir/depend.make +--- /workspace/epanet_upstream/build/run/CMakeFiles/runepanet.dir/depend.make 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/run/CMakeFiles/runepanet.dir/depend.make 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,2 @@ ++# Empty dependencies file for runepanet. ++# This may be replaced when dependencies are built. +diff -ruN /workspace/epanet_upstream/build/run/CMakeFiles/runepanet.dir/flags.make /workspace/epanet/build/run/CMakeFiles/runepanet.dir/flags.make +--- /workspace/epanet_upstream/build/run/CMakeFiles/runepanet.dir/flags.make 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/run/CMakeFiles/runepanet.dir/flags.make 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,10 @@ ++# CMAKE generated file: DO NOT EDIT! ++# Generated by "Unix Makefiles" Generator, CMake Version 3.31 ++ ++# compile C with /usr/bin/cc ++C_DEFINES = ++ ++C_INCLUDES = -I/workspace/epanet/run/include -I/workspace/epanet/include ++ ++C_FLAGS = -fPIE ++ +diff -ruN /workspace/epanet_upstream/build/run/CMakeFiles/runepanet.dir/link.txt /workspace/epanet/build/run/CMakeFiles/runepanet.dir/link.txt +--- /workspace/epanet_upstream/build/run/CMakeFiles/runepanet.dir/link.txt 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/run/CMakeFiles/runepanet.dir/link.txt 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1 @@ ++/usr/bin/cc -Xlinker --dependency-file=CMakeFiles/runepanet.dir/link.d CMakeFiles/runepanet.dir/main.c.o -o ../bin/runepanet -Wl,-rpath,/workspace/epanet/build/lib: ../lib/libepanet2.so -lm +diff -ruN /workspace/epanet_upstream/build/run/CMakeFiles/runepanet.dir/progress.make /workspace/epanet/build/run/CMakeFiles/runepanet.dir/progress.make +--- /workspace/epanet_upstream/build/run/CMakeFiles/runepanet.dir/progress.make 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/run/CMakeFiles/runepanet.dir/progress.make 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,3 @@ ++CMAKE_PROGRESS_1 = 35 ++CMAKE_PROGRESS_2 = 36 ++ +diff -ruN /workspace/epanet_upstream/build/run/cmake_install.cmake /workspace/epanet/build/run/cmake_install.cmake +--- /workspace/epanet_upstream/build/run/cmake_install.cmake 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/run/cmake_install.cmake 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,50 @@ ++# Install script for directory: /workspace/epanet/run ++ ++# Set the install prefix ++if(NOT DEFINED CMAKE_INSTALL_PREFIX) ++ set(CMAKE_INSTALL_PREFIX "/usr/local") ++endif() ++string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") ++ ++# Set the install configuration name. ++if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) ++ if(BUILD_TYPE) ++ string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" ++ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") ++ else() ++ set(CMAKE_INSTALL_CONFIG_NAME "") ++ endif() ++ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") ++endif() ++ ++# Set the component getting installed. ++if(NOT CMAKE_INSTALL_COMPONENT) ++ if(COMPONENT) ++ message(STATUS "Install component: \"${COMPONENT}\"") ++ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") ++ else() ++ set(CMAKE_INSTALL_COMPONENT) ++ endif() ++endif() ++ ++# Install shared libraries without execute permission? ++if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) ++ set(CMAKE_INSTALL_SO_NO_EXE "1") ++endif() ++ ++# Is this installation the result of a crosscompile? ++if(NOT DEFINED CMAKE_CROSSCOMPILING) ++ set(CMAKE_CROSSCOMPILING "FALSE") ++endif() ++ ++# Set path to fallback-tool for dependency-resolution. ++if(NOT DEFINED CMAKE_OBJDUMP) ++ set(CMAKE_OBJDUMP "/usr/bin/objdump") ++endif() ++ ++string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT ++ "${CMAKE_INSTALL_MANIFEST_FILES}") ++if(CMAKE_INSTALL_LOCAL_ONLY) ++ file(WRITE "/workspace/epanet/build/run/install_local_manifest.txt" ++ "${CMAKE_INSTALL_MANIFEST_CONTENT}") ++endif() +diff -ruN /workspace/epanet_upstream/build/run/Makefile /workspace/epanet/build/run/Makefile +--- /workspace/epanet_upstream/build/run/Makefile 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/run/Makefile 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,231 @@ ++# CMAKE generated file: DO NOT EDIT! ++# Generated by "Unix Makefiles" Generator, CMake Version 3.31 ++ ++# Default target executed when no arguments are given to make. ++default_target: all ++.PHONY : default_target ++ ++# Allow only one "make -f Makefile2" at a time, but pass parallelism. ++.NOTPARALLEL: ++ ++#============================================================================= ++# Special targets provided by cmake. ++ ++# Disable implicit rules so canonical targets will work. ++.SUFFIXES: ++ ++# Disable VCS-based implicit rules. ++% : %,v ++ ++# Disable VCS-based implicit rules. ++% : RCS/% ++ ++# Disable VCS-based implicit rules. ++% : RCS/%,v ++ ++# Disable VCS-based implicit rules. ++% : SCCS/s.% ++ ++# Disable VCS-based implicit rules. ++% : s.% ++ ++.SUFFIXES: .hpux_make_needs_suffix_list ++ ++# Command-line flag to silence nested $(MAKE). ++$(VERBOSE)MAKESILENT = -s ++ ++#Suppress display of executed commands. ++$(VERBOSE).SILENT: ++ ++# A target that is always out of date. ++cmake_force: ++.PHONY : cmake_force ++ ++#============================================================================= ++# Set environment variables for the build. ++ ++# The shell in which to execute make rules. ++SHELL = /bin/sh ++ ++# The CMake executable. ++CMAKE_COMMAND = /usr/bin/cmake ++ ++# The command to remove a file. ++RM = /usr/bin/cmake -E rm -f ++ ++# Escaping for special characters. ++EQUALS = = ++ ++# The top-level source directory on which CMake was run. ++CMAKE_SOURCE_DIR = /workspace/epanet ++ ++# The top-level build directory on which CMake was run. ++CMAKE_BINARY_DIR = /workspace/epanet/build ++ ++#============================================================================= ++# Targets provided globally by CMake. ++ ++# Special rule for the target edit_cache ++edit_cache: ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "No interactive CMake dialog available..." ++ /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. ++.PHONY : edit_cache ++ ++# Special rule for the target edit_cache ++edit_cache/fast: edit_cache ++.PHONY : edit_cache/fast ++ ++# Special rule for the target rebuild_cache ++rebuild_cache: ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." ++ /usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) ++.PHONY : rebuild_cache ++ ++# Special rule for the target rebuild_cache ++rebuild_cache/fast: rebuild_cache ++.PHONY : rebuild_cache/fast ++ ++# Special rule for the target list_install_components ++list_install_components: ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Available install components are: \"Unspecified\"" ++.PHONY : list_install_components ++ ++# Special rule for the target list_install_components ++list_install_components/fast: list_install_components ++.PHONY : list_install_components/fast ++ ++# Special rule for the target install ++install: preinstall ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." ++ /usr/bin/cmake -P cmake_install.cmake ++.PHONY : install ++ ++# Special rule for the target install ++install/fast: preinstall/fast ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." ++ /usr/bin/cmake -P cmake_install.cmake ++.PHONY : install/fast ++ ++# Special rule for the target install/local ++install/local: preinstall ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." ++ /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake ++.PHONY : install/local ++ ++# Special rule for the target install/local ++install/local/fast: preinstall/fast ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." ++ /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake ++.PHONY : install/local/fast ++ ++# Special rule for the target install/strip ++install/strip: preinstall ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." ++ /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake ++.PHONY : install/strip ++ ++# Special rule for the target install/strip ++install/strip/fast: preinstall/fast ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." ++ /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake ++.PHONY : install/strip/fast ++ ++# The main all target ++all: cmake_check_build_system ++ cd /workspace/epanet/build && $(CMAKE_COMMAND) -E cmake_progress_start /workspace/epanet/build/CMakeFiles /workspace/epanet/build/run//CMakeFiles/progress.marks ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 run/all ++ $(CMAKE_COMMAND) -E cmake_progress_start /workspace/epanet/build/CMakeFiles 0 ++.PHONY : all ++ ++# The main clean target ++clean: ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 run/clean ++.PHONY : clean ++ ++# The main clean target ++clean/fast: clean ++.PHONY : clean/fast ++ ++# Prepare targets for installation. ++preinstall: all ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 run/preinstall ++.PHONY : preinstall ++ ++# Prepare targets for installation. ++preinstall/fast: ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 run/preinstall ++.PHONY : preinstall/fast ++ ++# clear depends ++depend: ++ cd /workspace/epanet/build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 ++.PHONY : depend ++ ++# Convenience name for target. ++run/CMakeFiles/runepanet.dir/rule: ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 run/CMakeFiles/runepanet.dir/rule ++.PHONY : run/CMakeFiles/runepanet.dir/rule ++ ++# Convenience name for target. ++runepanet: run/CMakeFiles/runepanet.dir/rule ++.PHONY : runepanet ++ ++# fast build rule for target. ++runepanet/fast: ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f run/CMakeFiles/runepanet.dir/build.make run/CMakeFiles/runepanet.dir/build ++.PHONY : runepanet/fast ++ ++main.o: main.c.o ++.PHONY : main.o ++ ++# target to build an object file ++main.c.o: ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f run/CMakeFiles/runepanet.dir/build.make run/CMakeFiles/runepanet.dir/main.c.o ++.PHONY : main.c.o ++ ++main.i: main.c.i ++.PHONY : main.i ++ ++# target to preprocess a source file ++main.c.i: ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f run/CMakeFiles/runepanet.dir/build.make run/CMakeFiles/runepanet.dir/main.c.i ++.PHONY : main.c.i ++ ++main.s: main.c.s ++.PHONY : main.s ++ ++# target to generate assembly for a file ++main.c.s: ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f run/CMakeFiles/runepanet.dir/build.make run/CMakeFiles/runepanet.dir/main.c.s ++.PHONY : main.c.s ++ ++# Help Target ++help: ++ @echo "The following are some of the valid targets for this Makefile:" ++ @echo "... all (the default if no target is provided)" ++ @echo "... clean" ++ @echo "... depend" ++ @echo "... edit_cache" ++ @echo "... install" ++ @echo "... install/local" ++ @echo "... install/strip" ++ @echo "... list_install_components" ++ @echo "... rebuild_cache" ++ @echo "... runepanet" ++ @echo "... main.o" ++ @echo "... main.i" ++ @echo "... main.s" ++.PHONY : help ++ ++ ++ ++#============================================================================= ++# Special targets to cleanup operation of make. ++ ++# Special rule to run CMake to check the build system integrity. ++# No rule that depends on this can have commands that come from listfiles ++# because they might be regenerated. ++cmake_check_build_system: ++ cd /workspace/epanet/build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 ++.PHONY : cmake_check_build_system ++ +diff -ruN /workspace/epanet_upstream/build/src/outfile/CMakeFiles/CMakeDirectoryInformation.cmake /workspace/epanet/build/src/outfile/CMakeFiles/CMakeDirectoryInformation.cmake +--- /workspace/epanet_upstream/build/src/outfile/CMakeFiles/CMakeDirectoryInformation.cmake 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/src/outfile/CMakeFiles/CMakeDirectoryInformation.cmake 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,16 @@ ++# CMAKE generated file: DO NOT EDIT! ++# Generated by "Unix Makefiles" Generator, CMake Version 3.31 ++ ++# Relative path conversion top directories. ++set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/workspace/epanet") ++set(CMAKE_RELATIVE_PATH_TOP_BINARY "/workspace/epanet/build") ++ ++# Force unix paths in dependencies. ++set(CMAKE_FORCE_UNIX_PATHS 1) ++ ++ ++# The C and CXX include file regular expressions for this directory. ++set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") ++set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") ++set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) ++set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) +diff -ruN /workspace/epanet_upstream/build/src/outfile/CMakeFiles/epanet-output.dir/build.make /workspace/epanet/build/src/outfile/CMakeFiles/epanet-output.dir/build.make +--- /workspace/epanet_upstream/build/src/outfile/CMakeFiles/epanet-output.dir/build.make 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/src/outfile/CMakeFiles/epanet-output.dir/build.make 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,162 @@ ++# CMAKE generated file: DO NOT EDIT! ++# Generated by "Unix Makefiles" Generator, CMake Version 3.31 ++ ++# Delete rule output on recipe failure. ++.DELETE_ON_ERROR: ++ ++#============================================================================= ++# Special targets provided by cmake. ++ ++# Disable implicit rules so canonical targets will work. ++.SUFFIXES: ++ ++# Disable VCS-based implicit rules. ++% : %,v ++ ++# Disable VCS-based implicit rules. ++% : RCS/% ++ ++# Disable VCS-based implicit rules. ++% : RCS/%,v ++ ++# Disable VCS-based implicit rules. ++% : SCCS/s.% ++ ++# Disable VCS-based implicit rules. ++% : s.% ++ ++.SUFFIXES: .hpux_make_needs_suffix_list ++ ++# Command-line flag to silence nested $(MAKE). ++$(VERBOSE)MAKESILENT = -s ++ ++#Suppress display of executed commands. ++$(VERBOSE).SILENT: ++ ++# A target that is always out of date. ++cmake_force: ++.PHONY : cmake_force ++ ++#============================================================================= ++# Set environment variables for the build. ++ ++# The shell in which to execute make rules. ++SHELL = /bin/sh ++ ++# The CMake executable. ++CMAKE_COMMAND = /usr/bin/cmake ++ ++# The command to remove a file. ++RM = /usr/bin/cmake -E rm -f ++ ++# Escaping for special characters. ++EQUALS = = ++ ++# The top-level source directory on which CMake was run. ++CMAKE_SOURCE_DIR = /workspace/epanet ++ ++# The top-level build directory on which CMake was run. ++CMAKE_BINARY_DIR = /workspace/epanet/build ++ ++# Include any dependencies generated for this target. ++include src/outfile/CMakeFiles/epanet-output.dir/depend.make ++# Include any dependencies generated by the compiler for this target. ++include src/outfile/CMakeFiles/epanet-output.dir/compiler_depend.make ++ ++# Include the progress variables for this target. ++include src/outfile/CMakeFiles/epanet-output.dir/progress.make ++ ++# Include the compile flags for this target's objects. ++include src/outfile/CMakeFiles/epanet-output.dir/flags.make ++ ++src/outfile/CMakeFiles/epanet-output.dir/codegen: ++.PHONY : src/outfile/CMakeFiles/epanet-output.dir/codegen ++ ++src/outfile/CMakeFiles/epanet-output.dir/src/epanet_output.c.o: src/outfile/CMakeFiles/epanet-output.dir/flags.make ++src/outfile/CMakeFiles/epanet-output.dir/src/epanet_output.c.o: /workspace/epanet/src/outfile/src/epanet_output.c ++src/outfile/CMakeFiles/epanet-output.dir/src/epanet_output.c.o: src/outfile/CMakeFiles/epanet-output.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object src/outfile/CMakeFiles/epanet-output.dir/src/epanet_output.c.o" ++ cd /workspace/epanet/build/src/outfile && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/outfile/CMakeFiles/epanet-output.dir/src/epanet_output.c.o -MF CMakeFiles/epanet-output.dir/src/epanet_output.c.o.d -o CMakeFiles/epanet-output.dir/src/epanet_output.c.o -c /workspace/epanet/src/outfile/src/epanet_output.c ++ ++src/outfile/CMakeFiles/epanet-output.dir/src/epanet_output.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet-output.dir/src/epanet_output.c.i" ++ cd /workspace/epanet/build/src/outfile && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/outfile/src/epanet_output.c > CMakeFiles/epanet-output.dir/src/epanet_output.c.i ++ ++src/outfile/CMakeFiles/epanet-output.dir/src/epanet_output.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet-output.dir/src/epanet_output.c.s" ++ cd /workspace/epanet/build/src/outfile && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/outfile/src/epanet_output.c -o CMakeFiles/epanet-output.dir/src/epanet_output.c.s ++ ++src/outfile/CMakeFiles/epanet-output.dir/__/util/errormanager.c.o: src/outfile/CMakeFiles/epanet-output.dir/flags.make ++src/outfile/CMakeFiles/epanet-output.dir/__/util/errormanager.c.o: /workspace/epanet/src/util/errormanager.c ++src/outfile/CMakeFiles/epanet-output.dir/__/util/errormanager.c.o: src/outfile/CMakeFiles/epanet-output.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object src/outfile/CMakeFiles/epanet-output.dir/__/util/errormanager.c.o" ++ cd /workspace/epanet/build/src/outfile && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/outfile/CMakeFiles/epanet-output.dir/__/util/errormanager.c.o -MF CMakeFiles/epanet-output.dir/__/util/errormanager.c.o.d -o CMakeFiles/epanet-output.dir/__/util/errormanager.c.o -c /workspace/epanet/src/util/errormanager.c ++ ++src/outfile/CMakeFiles/epanet-output.dir/__/util/errormanager.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet-output.dir/__/util/errormanager.c.i" ++ cd /workspace/epanet/build/src/outfile && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/util/errormanager.c > CMakeFiles/epanet-output.dir/__/util/errormanager.c.i ++ ++src/outfile/CMakeFiles/epanet-output.dir/__/util/errormanager.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet-output.dir/__/util/errormanager.c.s" ++ cd /workspace/epanet/build/src/outfile && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/util/errormanager.c -o CMakeFiles/epanet-output.dir/__/util/errormanager.c.s ++ ++src/outfile/CMakeFiles/epanet-output.dir/__/util/filemanager.c.o: src/outfile/CMakeFiles/epanet-output.dir/flags.make ++src/outfile/CMakeFiles/epanet-output.dir/__/util/filemanager.c.o: /workspace/epanet/src/util/filemanager.c ++src/outfile/CMakeFiles/epanet-output.dir/__/util/filemanager.c.o: src/outfile/CMakeFiles/epanet-output.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building C object src/outfile/CMakeFiles/epanet-output.dir/__/util/filemanager.c.o" ++ cd /workspace/epanet/build/src/outfile && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/outfile/CMakeFiles/epanet-output.dir/__/util/filemanager.c.o -MF CMakeFiles/epanet-output.dir/__/util/filemanager.c.o.d -o CMakeFiles/epanet-output.dir/__/util/filemanager.c.o -c /workspace/epanet/src/util/filemanager.c ++ ++src/outfile/CMakeFiles/epanet-output.dir/__/util/filemanager.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet-output.dir/__/util/filemanager.c.i" ++ cd /workspace/epanet/build/src/outfile && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/util/filemanager.c > CMakeFiles/epanet-output.dir/__/util/filemanager.c.i ++ ++src/outfile/CMakeFiles/epanet-output.dir/__/util/filemanager.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet-output.dir/__/util/filemanager.c.s" ++ cd /workspace/epanet/build/src/outfile && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/util/filemanager.c -o CMakeFiles/epanet-output.dir/__/util/filemanager.c.s ++ ++src/outfile/CMakeFiles/epanet-output.dir/__/util/cstr_helper.c.o: src/outfile/CMakeFiles/epanet-output.dir/flags.make ++src/outfile/CMakeFiles/epanet-output.dir/__/util/cstr_helper.c.o: /workspace/epanet/src/util/cstr_helper.c ++src/outfile/CMakeFiles/epanet-output.dir/__/util/cstr_helper.c.o: src/outfile/CMakeFiles/epanet-output.dir/compiler_depend.ts ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building C object src/outfile/CMakeFiles/epanet-output.dir/__/util/cstr_helper.c.o" ++ cd /workspace/epanet/build/src/outfile && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/outfile/CMakeFiles/epanet-output.dir/__/util/cstr_helper.c.o -MF CMakeFiles/epanet-output.dir/__/util/cstr_helper.c.o.d -o CMakeFiles/epanet-output.dir/__/util/cstr_helper.c.o -c /workspace/epanet/src/util/cstr_helper.c ++ ++src/outfile/CMakeFiles/epanet-output.dir/__/util/cstr_helper.c.i: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/epanet-output.dir/__/util/cstr_helper.c.i" ++ cd /workspace/epanet/build/src/outfile && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /workspace/epanet/src/util/cstr_helper.c > CMakeFiles/epanet-output.dir/__/util/cstr_helper.c.i ++ ++src/outfile/CMakeFiles/epanet-output.dir/__/util/cstr_helper.c.s: cmake_force ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/epanet-output.dir/__/util/cstr_helper.c.s" ++ cd /workspace/epanet/build/src/outfile && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /workspace/epanet/src/util/cstr_helper.c -o CMakeFiles/epanet-output.dir/__/util/cstr_helper.c.s ++ ++# Object files for target epanet-output ++epanet__output_OBJECTS = \ ++"CMakeFiles/epanet-output.dir/src/epanet_output.c.o" \ ++"CMakeFiles/epanet-output.dir/__/util/errormanager.c.o" \ ++"CMakeFiles/epanet-output.dir/__/util/filemanager.c.o" \ ++"CMakeFiles/epanet-output.dir/__/util/cstr_helper.c.o" ++ ++# External object files for target epanet-output ++epanet__output_EXTERNAL_OBJECTS = ++ ++lib/libepanet-output.so: src/outfile/CMakeFiles/epanet-output.dir/src/epanet_output.c.o ++lib/libepanet-output.so: src/outfile/CMakeFiles/epanet-output.dir/__/util/errormanager.c.o ++lib/libepanet-output.so: src/outfile/CMakeFiles/epanet-output.dir/__/util/filemanager.c.o ++lib/libepanet-output.so: src/outfile/CMakeFiles/epanet-output.dir/__/util/cstr_helper.c.o ++lib/libepanet-output.so: src/outfile/CMakeFiles/epanet-output.dir/build.make ++lib/libepanet-output.so: src/outfile/CMakeFiles/epanet-output.dir/compiler_depend.ts ++lib/libepanet-output.so: src/outfile/CMakeFiles/epanet-output.dir/link.txt ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/workspace/epanet/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Linking C shared library ../../lib/libepanet-output.so" ++ cd /workspace/epanet/build/src/outfile && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/epanet-output.dir/link.txt --verbose=$(VERBOSE) ++ ++# Rule to build all files generated by this target. ++src/outfile/CMakeFiles/epanet-output.dir/build: lib/libepanet-output.so ++.PHONY : src/outfile/CMakeFiles/epanet-output.dir/build ++ ++src/outfile/CMakeFiles/epanet-output.dir/clean: ++ cd /workspace/epanet/build/src/outfile && $(CMAKE_COMMAND) -P CMakeFiles/epanet-output.dir/cmake_clean.cmake ++.PHONY : src/outfile/CMakeFiles/epanet-output.dir/clean ++ ++src/outfile/CMakeFiles/epanet-output.dir/depend: ++ cd /workspace/epanet/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /workspace/epanet /workspace/epanet/src/outfile /workspace/epanet/build /workspace/epanet/build/src/outfile /workspace/epanet/build/src/outfile/CMakeFiles/epanet-output.dir/DependInfo.cmake "--color=$(COLOR)" ++.PHONY : src/outfile/CMakeFiles/epanet-output.dir/depend ++ +diff -ruN /workspace/epanet_upstream/build/src/outfile/CMakeFiles/epanet-output.dir/cmake_clean.cmake /workspace/epanet/build/src/outfile/CMakeFiles/epanet-output.dir/cmake_clean.cmake +--- /workspace/epanet_upstream/build/src/outfile/CMakeFiles/epanet-output.dir/cmake_clean.cmake 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/src/outfile/CMakeFiles/epanet-output.dir/cmake_clean.cmake 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,18 @@ ++file(REMOVE_RECURSE ++ "../../lib/libepanet-output.pdb" ++ "../../lib/libepanet-output.so" ++ "CMakeFiles/epanet-output.dir/link.d" ++ "CMakeFiles/epanet-output.dir/__/util/cstr_helper.c.o" ++ "CMakeFiles/epanet-output.dir/__/util/cstr_helper.c.o.d" ++ "CMakeFiles/epanet-output.dir/__/util/errormanager.c.o" ++ "CMakeFiles/epanet-output.dir/__/util/errormanager.c.o.d" ++ "CMakeFiles/epanet-output.dir/__/util/filemanager.c.o" ++ "CMakeFiles/epanet-output.dir/__/util/filemanager.c.o.d" ++ "CMakeFiles/epanet-output.dir/src/epanet_output.c.o" ++ "CMakeFiles/epanet-output.dir/src/epanet_output.c.o.d" ++) ++ ++# Per-language clean rules from dependency scanning. ++foreach(lang C) ++ include(CMakeFiles/epanet-output.dir/cmake_clean_${lang}.cmake OPTIONAL) ++endforeach() +diff -ruN /workspace/epanet_upstream/build/src/outfile/CMakeFiles/epanet-output.dir/compiler_depend.make /workspace/epanet/build/src/outfile/CMakeFiles/epanet-output.dir/compiler_depend.make +--- /workspace/epanet_upstream/build/src/outfile/CMakeFiles/epanet-output.dir/compiler_depend.make 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/src/outfile/CMakeFiles/epanet-output.dir/compiler_depend.make 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,2 @@ ++# Empty compiler generated dependencies file for epanet-output. ++# This may be replaced when dependencies are built. +diff -ruN /workspace/epanet_upstream/build/src/outfile/CMakeFiles/epanet-output.dir/compiler_depend.ts /workspace/epanet/build/src/outfile/CMakeFiles/epanet-output.dir/compiler_depend.ts +--- /workspace/epanet_upstream/build/src/outfile/CMakeFiles/epanet-output.dir/compiler_depend.ts 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/src/outfile/CMakeFiles/epanet-output.dir/compiler_depend.ts 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,2 @@ ++# CMAKE generated file: DO NOT EDIT! ++# Timestamp file for compiler generated dependencies management for epanet-output. +diff -ruN /workspace/epanet_upstream/build/src/outfile/CMakeFiles/epanet-output.dir/DependInfo.cmake /workspace/epanet/build/src/outfile/CMakeFiles/epanet-output.dir/DependInfo.cmake +--- /workspace/epanet_upstream/build/src/outfile/CMakeFiles/epanet-output.dir/DependInfo.cmake 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/src/outfile/CMakeFiles/epanet-output.dir/DependInfo.cmake 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,27 @@ ++ ++# Consider dependencies only in project. ++set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) ++ ++# The set of languages for which implicit dependencies are needed: ++set(CMAKE_DEPENDS_LANGUAGES ++ ) ++ ++# The set of dependency files which are needed: ++set(CMAKE_DEPENDS_DEPENDENCY_FILES ++ "/workspace/epanet/src/util/cstr_helper.c" "src/outfile/CMakeFiles/epanet-output.dir/__/util/cstr_helper.c.o" "gcc" "src/outfile/CMakeFiles/epanet-output.dir/__/util/cstr_helper.c.o.d" ++ "/workspace/epanet/src/util/errormanager.c" "src/outfile/CMakeFiles/epanet-output.dir/__/util/errormanager.c.o" "gcc" "src/outfile/CMakeFiles/epanet-output.dir/__/util/errormanager.c.o.d" ++ "/workspace/epanet/src/util/filemanager.c" "src/outfile/CMakeFiles/epanet-output.dir/__/util/filemanager.c.o" "gcc" "src/outfile/CMakeFiles/epanet-output.dir/__/util/filemanager.c.o.d" ++ "/workspace/epanet/src/outfile/src/epanet_output.c" "src/outfile/CMakeFiles/epanet-output.dir/src/epanet_output.c.o" "gcc" "src/outfile/CMakeFiles/epanet-output.dir/src/epanet_output.c.o.d" ++ "" "lib/libepanet-output.so" "gcc" "src/outfile/CMakeFiles/epanet-output.dir/link.d" ++ ) ++ ++# Targets to which this target links which contain Fortran sources. ++set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES ++ ) ++ ++# Targets to which this target links which contain Fortran sources. ++set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES ++ ) ++ ++# Fortran module output directory. ++set(CMAKE_Fortran_TARGET_MODULE_DIR "") +diff -ruN /workspace/epanet_upstream/build/src/outfile/CMakeFiles/epanet-output.dir/depend.make /workspace/epanet/build/src/outfile/CMakeFiles/epanet-output.dir/depend.make +--- /workspace/epanet_upstream/build/src/outfile/CMakeFiles/epanet-output.dir/depend.make 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/src/outfile/CMakeFiles/epanet-output.dir/depend.make 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,2 @@ ++# Empty dependencies file for epanet-output. ++# This may be replaced when dependencies are built. +diff -ruN /workspace/epanet_upstream/build/src/outfile/CMakeFiles/epanet-output.dir/flags.make /workspace/epanet/build/src/outfile/CMakeFiles/epanet-output.dir/flags.make +--- /workspace/epanet_upstream/build/src/outfile/CMakeFiles/epanet-output.dir/flags.make 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/src/outfile/CMakeFiles/epanet-output.dir/flags.make 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,10 @@ ++# CMAKE generated file: DO NOT EDIT! ++# Generated by "Unix Makefiles" Generator, CMake Version 3.31 ++ ++# compile C with /usr/bin/cc ++C_DEFINES = -Depanet_output_EXPORTS ++ ++C_INCLUDES = -I/workspace/epanet/build/src/outfile -I/workspace/epanet/src/outfile -I/workspace/epanet/src/outfile/include -I/workspace/epanet/src/outfile/.. ++ ++C_FLAGS = -fPIC -fvisibility=hidden ++ +diff -ruN /workspace/epanet_upstream/build/src/outfile/CMakeFiles/epanet-output.dir/link.txt /workspace/epanet/build/src/outfile/CMakeFiles/epanet-output.dir/link.txt +--- /workspace/epanet_upstream/build/src/outfile/CMakeFiles/epanet-output.dir/link.txt 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/src/outfile/CMakeFiles/epanet-output.dir/link.txt 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1 @@ ++/usr/bin/cc -fPIC -Xlinker --dependency-file=CMakeFiles/epanet-output.dir/link.d -shared -Wl,-soname,libepanet-output.so -o ../../lib/libepanet-output.so "CMakeFiles/epanet-output.dir/src/epanet_output.c.o" "CMakeFiles/epanet-output.dir/__/util/errormanager.c.o" "CMakeFiles/epanet-output.dir/__/util/filemanager.c.o" "CMakeFiles/epanet-output.dir/__/util/cstr_helper.c.o" +diff -ruN /workspace/epanet_upstream/build/src/outfile/CMakeFiles/epanet-output.dir/progress.make /workspace/epanet/build/src/outfile/CMakeFiles/epanet-output.dir/progress.make +--- /workspace/epanet_upstream/build/src/outfile/CMakeFiles/epanet-output.dir/progress.make 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/src/outfile/CMakeFiles/epanet-output.dir/progress.make 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,6 @@ ++CMAKE_PROGRESS_1 = 1 ++CMAKE_PROGRESS_2 = 2 ++CMAKE_PROGRESS_3 = 3 ++CMAKE_PROGRESS_4 = 4 ++CMAKE_PROGRESS_5 = 5 ++ +diff -ruN /workspace/epanet_upstream/build/src/outfile/CMakeFiles/progress.marks /workspace/epanet/build/src/outfile/CMakeFiles/progress.marks +--- /workspace/epanet_upstream/build/src/outfile/CMakeFiles/progress.marks 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/src/outfile/CMakeFiles/progress.marks 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1 @@ ++5 +diff -ruN /workspace/epanet_upstream/build/src/outfile/cmake_install.cmake /workspace/epanet/build/src/outfile/cmake_install.cmake +--- /workspace/epanet_upstream/build/src/outfile/cmake_install.cmake 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/src/outfile/cmake_install.cmake 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,50 @@ ++# Install script for directory: /workspace/epanet/src/outfile ++ ++# Set the install prefix ++if(NOT DEFINED CMAKE_INSTALL_PREFIX) ++ set(CMAKE_INSTALL_PREFIX "/usr/local") ++endif() ++string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") ++ ++# Set the install configuration name. ++if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) ++ if(BUILD_TYPE) ++ string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" ++ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") ++ else() ++ set(CMAKE_INSTALL_CONFIG_NAME "") ++ endif() ++ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") ++endif() ++ ++# Set the component getting installed. ++if(NOT CMAKE_INSTALL_COMPONENT) ++ if(COMPONENT) ++ message(STATUS "Install component: \"${COMPONENT}\"") ++ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") ++ else() ++ set(CMAKE_INSTALL_COMPONENT) ++ endif() ++endif() ++ ++# Install shared libraries without execute permission? ++if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) ++ set(CMAKE_INSTALL_SO_NO_EXE "1") ++endif() ++ ++# Is this installation the result of a crosscompile? ++if(NOT DEFINED CMAKE_CROSSCOMPILING) ++ set(CMAKE_CROSSCOMPILING "FALSE") ++endif() ++ ++# Set path to fallback-tool for dependency-resolution. ++if(NOT DEFINED CMAKE_OBJDUMP) ++ set(CMAKE_OBJDUMP "/usr/bin/objdump") ++endif() ++ ++string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT ++ "${CMAKE_INSTALL_MANIFEST_FILES}") ++if(CMAKE_INSTALL_LOCAL_ONLY) ++ file(WRITE "/workspace/epanet/build/src/outfile/install_local_manifest.txt" ++ "${CMAKE_INSTALL_MANIFEST_CONTENT}") ++endif() +diff -ruN /workspace/epanet_upstream/build/src/outfile/epanet_output_export.h /workspace/epanet/build/src/outfile/epanet_output_export.h +--- /workspace/epanet_upstream/build/src/outfile/epanet_output_export.h 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/src/outfile/epanet_output_export.h 2025-08-10 02:49:33.506682011 +0000 +@@ -0,0 +1,43 @@ ++ ++#ifndef EXPORT_OUT_API_H ++#define EXPORT_OUT_API_H ++ ++#ifdef SHARED_EXPORTS_BUILT_AS_STATIC ++# define EXPORT_OUT_API ++# define EPANET_OUTPUT_NO_EXPORT ++#else ++# ifndef EXPORT_OUT_API ++# ifdef epanet_output_EXPORTS ++ /* We are building this library */ ++# define EXPORT_OUT_API __attribute__((visibility("default"))) ++# else ++ /* We are using this library */ ++# define EXPORT_OUT_API __attribute__((visibility("default"))) ++# endif ++# endif ++ ++# ifndef EPANET_OUTPUT_NO_EXPORT ++# define EPANET_OUTPUT_NO_EXPORT __attribute__((visibility("hidden"))) ++# endif ++#endif ++ ++#ifndef EPANET_OUTPUT_DEPRECATED ++# define EPANET_OUTPUT_DEPRECATED __attribute__ ((__deprecated__)) ++#endif ++ ++#ifndef EPANET_OUTPUT_DEPRECATED_EXPORT ++# define EPANET_OUTPUT_DEPRECATED_EXPORT EXPORT_OUT_API EPANET_OUTPUT_DEPRECATED ++#endif ++ ++#ifndef EPANET_OUTPUT_DEPRECATED_NO_EXPORT ++# define EPANET_OUTPUT_DEPRECATED_NO_EXPORT EPANET_OUTPUT_NO_EXPORT EPANET_OUTPUT_DEPRECATED ++#endif ++ ++/* NOLINTNEXTLINE(readability-avoid-unconditional-preprocessor-if) */ ++#if 0 /* DEFINE_NO_DEPRECATED */ ++# ifndef EPANET_OUTPUT_NO_DEPRECATED ++# define EPANET_OUTPUT_NO_DEPRECATED ++# endif ++#endif ++ ++#endif /* EXPORT_OUT_API_H */ +diff -ruN /workspace/epanet_upstream/build/src/outfile/Makefile /workspace/epanet/build/src/outfile/Makefile +--- /workspace/epanet_upstream/build/src/outfile/Makefile 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/build/src/outfile/Makefile 2025-08-10 02:49:33.510682024 +0000 +@@ -0,0 +1,312 @@ ++# CMAKE generated file: DO NOT EDIT! ++# Generated by "Unix Makefiles" Generator, CMake Version 3.31 ++ ++# Default target executed when no arguments are given to make. ++default_target: all ++.PHONY : default_target ++ ++# Allow only one "make -f Makefile2" at a time, but pass parallelism. ++.NOTPARALLEL: ++ ++#============================================================================= ++# Special targets provided by cmake. ++ ++# Disable implicit rules so canonical targets will work. ++.SUFFIXES: ++ ++# Disable VCS-based implicit rules. ++% : %,v ++ ++# Disable VCS-based implicit rules. ++% : RCS/% ++ ++# Disable VCS-based implicit rules. ++% : RCS/%,v ++ ++# Disable VCS-based implicit rules. ++% : SCCS/s.% ++ ++# Disable VCS-based implicit rules. ++% : s.% ++ ++.SUFFIXES: .hpux_make_needs_suffix_list ++ ++# Command-line flag to silence nested $(MAKE). ++$(VERBOSE)MAKESILENT = -s ++ ++#Suppress display of executed commands. ++$(VERBOSE).SILENT: ++ ++# A target that is always out of date. ++cmake_force: ++.PHONY : cmake_force ++ ++#============================================================================= ++# Set environment variables for the build. ++ ++# The shell in which to execute make rules. ++SHELL = /bin/sh ++ ++# The CMake executable. ++CMAKE_COMMAND = /usr/bin/cmake ++ ++# The command to remove a file. ++RM = /usr/bin/cmake -E rm -f ++ ++# Escaping for special characters. ++EQUALS = = ++ ++# The top-level source directory on which CMake was run. ++CMAKE_SOURCE_DIR = /workspace/epanet ++ ++# The top-level build directory on which CMake was run. ++CMAKE_BINARY_DIR = /workspace/epanet/build ++ ++#============================================================================= ++# Targets provided globally by CMake. ++ ++# Special rule for the target edit_cache ++edit_cache: ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "No interactive CMake dialog available..." ++ /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. ++.PHONY : edit_cache ++ ++# Special rule for the target edit_cache ++edit_cache/fast: edit_cache ++.PHONY : edit_cache/fast ++ ++# Special rule for the target rebuild_cache ++rebuild_cache: ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." ++ /usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) ++.PHONY : rebuild_cache ++ ++# Special rule for the target rebuild_cache ++rebuild_cache/fast: rebuild_cache ++.PHONY : rebuild_cache/fast ++ ++# Special rule for the target list_install_components ++list_install_components: ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Available install components are: \"Unspecified\"" ++.PHONY : list_install_components ++ ++# Special rule for the target list_install_components ++list_install_components/fast: list_install_components ++.PHONY : list_install_components/fast ++ ++# Special rule for the target install ++install: preinstall ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." ++ /usr/bin/cmake -P cmake_install.cmake ++.PHONY : install ++ ++# Special rule for the target install ++install/fast: preinstall/fast ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." ++ /usr/bin/cmake -P cmake_install.cmake ++.PHONY : install/fast ++ ++# Special rule for the target install/local ++install/local: preinstall ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." ++ /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake ++.PHONY : install/local ++ ++# Special rule for the target install/local ++install/local/fast: preinstall/fast ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." ++ /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake ++.PHONY : install/local/fast ++ ++# Special rule for the target install/strip ++install/strip: preinstall ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." ++ /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake ++.PHONY : install/strip ++ ++# Special rule for the target install/strip ++install/strip/fast: preinstall/fast ++ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." ++ /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake ++.PHONY : install/strip/fast ++ ++# The main all target ++all: cmake_check_build_system ++ cd /workspace/epanet/build && $(CMAKE_COMMAND) -E cmake_progress_start /workspace/epanet/build/CMakeFiles /workspace/epanet/build/src/outfile//CMakeFiles/progress.marks ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/outfile/all ++ $(CMAKE_COMMAND) -E cmake_progress_start /workspace/epanet/build/CMakeFiles 0 ++.PHONY : all ++ ++# The main clean target ++clean: ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/outfile/clean ++.PHONY : clean ++ ++# The main clean target ++clean/fast: clean ++.PHONY : clean/fast ++ ++# Prepare targets for installation. ++preinstall: all ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/outfile/preinstall ++.PHONY : preinstall ++ ++# Prepare targets for installation. ++preinstall/fast: ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/outfile/preinstall ++.PHONY : preinstall/fast ++ ++# clear depends ++depend: ++ cd /workspace/epanet/build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 ++.PHONY : depend ++ ++# Convenience name for target. ++src/outfile/CMakeFiles/epanet-output.dir/rule: ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/outfile/CMakeFiles/epanet-output.dir/rule ++.PHONY : src/outfile/CMakeFiles/epanet-output.dir/rule ++ ++# Convenience name for target. ++epanet-output: src/outfile/CMakeFiles/epanet-output.dir/rule ++.PHONY : epanet-output ++ ++# fast build rule for target. ++epanet-output/fast: ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f src/outfile/CMakeFiles/epanet-output.dir/build.make src/outfile/CMakeFiles/epanet-output.dir/build ++.PHONY : epanet-output/fast ++ ++__/util/cstr_helper.o: __/util/cstr_helper.c.o ++.PHONY : __/util/cstr_helper.o ++ ++# target to build an object file ++__/util/cstr_helper.c.o: ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f src/outfile/CMakeFiles/epanet-output.dir/build.make src/outfile/CMakeFiles/epanet-output.dir/__/util/cstr_helper.c.o ++.PHONY : __/util/cstr_helper.c.o ++ ++__/util/cstr_helper.i: __/util/cstr_helper.c.i ++.PHONY : __/util/cstr_helper.i ++ ++# target to preprocess a source file ++__/util/cstr_helper.c.i: ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f src/outfile/CMakeFiles/epanet-output.dir/build.make src/outfile/CMakeFiles/epanet-output.dir/__/util/cstr_helper.c.i ++.PHONY : __/util/cstr_helper.c.i ++ ++__/util/cstr_helper.s: __/util/cstr_helper.c.s ++.PHONY : __/util/cstr_helper.s ++ ++# target to generate assembly for a file ++__/util/cstr_helper.c.s: ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f src/outfile/CMakeFiles/epanet-output.dir/build.make src/outfile/CMakeFiles/epanet-output.dir/__/util/cstr_helper.c.s ++.PHONY : __/util/cstr_helper.c.s ++ ++__/util/errormanager.o: __/util/errormanager.c.o ++.PHONY : __/util/errormanager.o ++ ++# target to build an object file ++__/util/errormanager.c.o: ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f src/outfile/CMakeFiles/epanet-output.dir/build.make src/outfile/CMakeFiles/epanet-output.dir/__/util/errormanager.c.o ++.PHONY : __/util/errormanager.c.o ++ ++__/util/errormanager.i: __/util/errormanager.c.i ++.PHONY : __/util/errormanager.i ++ ++# target to preprocess a source file ++__/util/errormanager.c.i: ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f src/outfile/CMakeFiles/epanet-output.dir/build.make src/outfile/CMakeFiles/epanet-output.dir/__/util/errormanager.c.i ++.PHONY : __/util/errormanager.c.i ++ ++__/util/errormanager.s: __/util/errormanager.c.s ++.PHONY : __/util/errormanager.s ++ ++# target to generate assembly for a file ++__/util/errormanager.c.s: ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f src/outfile/CMakeFiles/epanet-output.dir/build.make src/outfile/CMakeFiles/epanet-output.dir/__/util/errormanager.c.s ++.PHONY : __/util/errormanager.c.s ++ ++__/util/filemanager.o: __/util/filemanager.c.o ++.PHONY : __/util/filemanager.o ++ ++# target to build an object file ++__/util/filemanager.c.o: ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f src/outfile/CMakeFiles/epanet-output.dir/build.make src/outfile/CMakeFiles/epanet-output.dir/__/util/filemanager.c.o ++.PHONY : __/util/filemanager.c.o ++ ++__/util/filemanager.i: __/util/filemanager.c.i ++.PHONY : __/util/filemanager.i ++ ++# target to preprocess a source file ++__/util/filemanager.c.i: ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f src/outfile/CMakeFiles/epanet-output.dir/build.make src/outfile/CMakeFiles/epanet-output.dir/__/util/filemanager.c.i ++.PHONY : __/util/filemanager.c.i ++ ++__/util/filemanager.s: __/util/filemanager.c.s ++.PHONY : __/util/filemanager.s ++ ++# target to generate assembly for a file ++__/util/filemanager.c.s: ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f src/outfile/CMakeFiles/epanet-output.dir/build.make src/outfile/CMakeFiles/epanet-output.dir/__/util/filemanager.c.s ++.PHONY : __/util/filemanager.c.s ++ ++src/epanet_output.o: src/epanet_output.c.o ++.PHONY : src/epanet_output.o ++ ++# target to build an object file ++src/epanet_output.c.o: ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f src/outfile/CMakeFiles/epanet-output.dir/build.make src/outfile/CMakeFiles/epanet-output.dir/src/epanet_output.c.o ++.PHONY : src/epanet_output.c.o ++ ++src/epanet_output.i: src/epanet_output.c.i ++.PHONY : src/epanet_output.i ++ ++# target to preprocess a source file ++src/epanet_output.c.i: ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f src/outfile/CMakeFiles/epanet-output.dir/build.make src/outfile/CMakeFiles/epanet-output.dir/src/epanet_output.c.i ++.PHONY : src/epanet_output.c.i ++ ++src/epanet_output.s: src/epanet_output.c.s ++.PHONY : src/epanet_output.s ++ ++# target to generate assembly for a file ++src/epanet_output.c.s: ++ cd /workspace/epanet/build && $(MAKE) $(MAKESILENT) -f src/outfile/CMakeFiles/epanet-output.dir/build.make src/outfile/CMakeFiles/epanet-output.dir/src/epanet_output.c.s ++.PHONY : src/epanet_output.c.s ++ ++# Help Target ++help: ++ @echo "The following are some of the valid targets for this Makefile:" ++ @echo "... all (the default if no target is provided)" ++ @echo "... clean" ++ @echo "... depend" ++ @echo "... edit_cache" ++ @echo "... install" ++ @echo "... install/local" ++ @echo "... install/strip" ++ @echo "... list_install_components" ++ @echo "... rebuild_cache" ++ @echo "... epanet-output" ++ @echo "... __/util/cstr_helper.o" ++ @echo "... __/util/cstr_helper.i" ++ @echo "... __/util/cstr_helper.s" ++ @echo "... __/util/errormanager.o" ++ @echo "... __/util/errormanager.i" ++ @echo "... __/util/errormanager.s" ++ @echo "... __/util/filemanager.o" ++ @echo "... __/util/filemanager.i" ++ @echo "... __/util/filemanager.s" ++ @echo "... src/epanet_output.o" ++ @echo "... src/epanet_output.i" ++ @echo "... src/epanet_output.s" ++.PHONY : help ++ ++ ++ ++#============================================================================= ++# Special targets to cleanup operation of make. ++ ++# Special rule to run CMake to check the build system integrity. ++# No rule that depends on this can have commands that come from listfiles ++# because they might be regenerated. ++cmake_check_build_system: ++ cd /workspace/epanet/build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 ++.PHONY : cmake_check_build_system ++ +diff -ruN /workspace/epanet_upstream/.git/config /workspace/epanet/.git/config +--- /workspace/epanet_upstream/.git/config 2025-08-10 02:56:34.823749143 +0000 ++++ /workspace/epanet/.git/config 1970-01-01 00:00:00.000000000 +0000 +@@ -1,11 +0,0 @@ +-[core] +- repositoryformatversion = 0 +- filemode = true +- bare = false +- logallrefupdates = true +-[remote "origin"] +- url = https://github.com/OpenWaterAnalytics/EPANET.git +- fetch = +refs/heads/dev:refs/remotes/origin/dev +-[branch "dev"] +- remote = origin +- merge = refs/heads/dev +diff -ruN /workspace/epanet_upstream/.git/description /workspace/epanet/.git/description +--- /workspace/epanet_upstream/.git/description 2025-08-10 02:56:34.379748100 +0000 ++++ /workspace/epanet/.git/description 1970-01-01 00:00:00.000000000 +0000 +@@ -1 +0,0 @@ +-Unnamed repository; edit this file 'description' to name the repository. +diff -ruN /workspace/epanet_upstream/.git/HEAD /workspace/epanet/.git/HEAD +--- /workspace/epanet_upstream/.git/HEAD 2025-08-10 02:56:34.819749133 +0000 ++++ /workspace/epanet/.git/HEAD 1970-01-01 00:00:00.000000000 +0000 +@@ -1 +0,0 @@ +-ref: refs/heads/dev +diff -ruN /workspace/epanet_upstream/.git/hooks/applypatch-msg.sample /workspace/epanet/.git/hooks/applypatch-msg.sample +--- /workspace/epanet_upstream/.git/hooks/applypatch-msg.sample 2025-08-10 02:56:34.379748100 +0000 ++++ /workspace/epanet/.git/hooks/applypatch-msg.sample 1970-01-01 00:00:00.000000000 +0000 +@@ -1,15 +0,0 @@ +-#!/bin/sh +-# +-# An example hook script to check the commit log message taken by +-# applypatch from an e-mail message. +-# +-# The hook should exit with non-zero status after issuing an +-# appropriate message if it wants to stop the commit. The hook is +-# allowed to edit the commit message file. +-# +-# To enable this hook, rename this file to "applypatch-msg". +- +-. git-sh-setup +-commitmsg="$(git rev-parse --git-path hooks/commit-msg)" +-test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} +-: +diff -ruN /workspace/epanet_upstream/.git/hooks/commit-msg.sample /workspace/epanet/.git/hooks/commit-msg.sample +--- /workspace/epanet_upstream/.git/hooks/commit-msg.sample 2025-08-10 02:56:34.379748100 +0000 ++++ /workspace/epanet/.git/hooks/commit-msg.sample 1970-01-01 00:00:00.000000000 +0000 +@@ -1,24 +0,0 @@ +-#!/bin/sh +-# +-# An example hook script to check the commit log message. +-# Called by "git commit" with one argument, the name of the file +-# that has the commit message. The hook should exit with non-zero +-# status after issuing an appropriate message if it wants to stop the +-# commit. The hook is allowed to edit the commit message file. +-# +-# To enable this hook, rename this file to "commit-msg". +- +-# Uncomment the below to add a Signed-off-by line to the message. +-# Doing this in a hook is a bad idea in general, but the prepare-commit-msg +-# hook is more suited to it. +-# +-# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +-# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" +- +-# This example catches duplicate Signed-off-by lines. +- +-test "" = "$(grep '^Signed-off-by: ' "$1" | +- sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { +- echo >&2 Duplicate Signed-off-by lines. +- exit 1 +-} +diff -ruN /workspace/epanet_upstream/.git/hooks/fsmonitor-watchman.sample /workspace/epanet/.git/hooks/fsmonitor-watchman.sample +--- /workspace/epanet_upstream/.git/hooks/fsmonitor-watchman.sample 2025-08-10 02:56:34.379748100 +0000 ++++ /workspace/epanet/.git/hooks/fsmonitor-watchman.sample 1970-01-01 00:00:00.000000000 +0000 +@@ -1,174 +0,0 @@ +-#!/usr/bin/perl +- +-use strict; +-use warnings; +-use IPC::Open2; +- +-# An example hook script to integrate Watchman +-# (https://facebook.github.io/watchman/) with git to speed up detecting +-# new and modified files. +-# +-# The hook is passed a version (currently 2) and last update token +-# formatted as a string and outputs to stdout a new update token and +-# all files that have been modified since the update token. Paths must +-# be relative to the root of the working tree and separated by a single NUL. +-# +-# To enable this hook, rename this file to "query-watchman" and set +-# 'git config core.fsmonitor .git/hooks/query-watchman' +-# +-my ($version, $last_update_token) = @ARGV; +- +-# Uncomment for debugging +-# print STDERR "$0 $version $last_update_token\n"; +- +-# Check the hook interface version +-if ($version ne 2) { +- die "Unsupported query-fsmonitor hook version '$version'.\n" . +- "Falling back to scanning...\n"; +-} +- +-my $git_work_tree = get_working_dir(); +- +-my $retry = 1; +- +-my $json_pkg; +-eval { +- require JSON::XS; +- $json_pkg = "JSON::XS"; +- 1; +-} or do { +- require JSON::PP; +- $json_pkg = "JSON::PP"; +-}; +- +-launch_watchman(); +- +-sub launch_watchman { +- my $o = watchman_query(); +- if (is_work_tree_watched($o)) { +- output_result($o->{clock}, @{$o->{files}}); +- } +-} +- +-sub output_result { +- my ($clockid, @files) = @_; +- +- # Uncomment for debugging watchman output +- # open (my $fh, ">", ".git/watchman-output.out"); +- # binmode $fh, ":utf8"; +- # print $fh "$clockid\n@files\n"; +- # close $fh; +- +- binmode STDOUT, ":utf8"; +- print $clockid; +- print "\0"; +- local $, = "\0"; +- print @files; +-} +- +-sub watchman_clock { +- my $response = qx/watchman clock "$git_work_tree"/; +- die "Failed to get clock id on '$git_work_tree'.\n" . +- "Falling back to scanning...\n" if $? != 0; +- +- return $json_pkg->new->utf8->decode($response); +-} +- +-sub watchman_query { +- my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty') +- or die "open2() failed: $!\n" . +- "Falling back to scanning...\n"; +- +- # In the query expression below we're asking for names of files that +- # changed since $last_update_token but not from the .git folder. +- # +- # To accomplish this, we're using the "since" generator to use the +- # recency index to select candidate nodes and "fields" to limit the +- # output to file names only. Then we're using the "expression" term to +- # further constrain the results. +- my $last_update_line = ""; +- if (substr($last_update_token, 0, 1) eq "c") { +- $last_update_token = "\"$last_update_token\""; +- $last_update_line = qq[\n"since": $last_update_token,]; +- } +- my $query = <<" END"; +- ["query", "$git_work_tree", {$last_update_line +- "fields": ["name"], +- "expression": ["not", ["dirname", ".git"]] +- }] +- END +- +- # Uncomment for debugging the watchman query +- # open (my $fh, ">", ".git/watchman-query.json"); +- # print $fh $query; +- # close $fh; +- +- print CHLD_IN $query; +- close CHLD_IN; +- my $response = do {local $/; }; +- +- # Uncomment for debugging the watch response +- # open ($fh, ">", ".git/watchman-response.json"); +- # print $fh $response; +- # close $fh; +- +- die "Watchman: command returned no output.\n" . +- "Falling back to scanning...\n" if $response eq ""; +- die "Watchman: command returned invalid output: $response\n" . +- "Falling back to scanning...\n" unless $response =~ /^\{/; +- +- return $json_pkg->new->utf8->decode($response); +-} +- +-sub is_work_tree_watched { +- my ($output) = @_; +- my $error = $output->{error}; +- if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) { +- $retry--; +- my $response = qx/watchman watch "$git_work_tree"/; +- die "Failed to make watchman watch '$git_work_tree'.\n" . +- "Falling back to scanning...\n" if $? != 0; +- $output = $json_pkg->new->utf8->decode($response); +- $error = $output->{error}; +- die "Watchman: $error.\n" . +- "Falling back to scanning...\n" if $error; +- +- # Uncomment for debugging watchman output +- # open (my $fh, ">", ".git/watchman-output.out"); +- # close $fh; +- +- # Watchman will always return all files on the first query so +- # return the fast "everything is dirty" flag to git and do the +- # Watchman query just to get it over with now so we won't pay +- # the cost in git to look up each individual file. +- my $o = watchman_clock(); +- $error = $output->{error}; +- +- die "Watchman: $error.\n" . +- "Falling back to scanning...\n" if $error; +- +- output_result($o->{clock}, ("/")); +- $last_update_token = $o->{clock}; +- +- eval { launch_watchman() }; +- return 0; +- } +- +- die "Watchman: $error.\n" . +- "Falling back to scanning...\n" if $error; +- +- return 1; +-} +- +-sub get_working_dir { +- my $working_dir; +- if ($^O =~ 'msys' || $^O =~ 'cygwin') { +- $working_dir = Win32::GetCwd(); +- $working_dir =~ tr/\\/\//; +- } else { +- require Cwd; +- $working_dir = Cwd::cwd(); +- } +- +- return $working_dir; +-} +diff -ruN /workspace/epanet_upstream/.git/hooks/post-update.sample /workspace/epanet/.git/hooks/post-update.sample +--- /workspace/epanet_upstream/.git/hooks/post-update.sample 2025-08-10 02:56:34.379748100 +0000 ++++ /workspace/epanet/.git/hooks/post-update.sample 1970-01-01 00:00:00.000000000 +0000 +@@ -1,8 +0,0 @@ +-#!/bin/sh +-# +-# An example hook script to prepare a packed repository for use over +-# dumb transports. +-# +-# To enable this hook, rename this file to "post-update". +- +-exec git update-server-info +diff -ruN /workspace/epanet_upstream/.git/hooks/pre-applypatch.sample /workspace/epanet/.git/hooks/pre-applypatch.sample +--- /workspace/epanet_upstream/.git/hooks/pre-applypatch.sample 2025-08-10 02:56:34.379748100 +0000 ++++ /workspace/epanet/.git/hooks/pre-applypatch.sample 1970-01-01 00:00:00.000000000 +0000 +@@ -1,14 +0,0 @@ +-#!/bin/sh +-# +-# An example hook script to verify what is about to be committed +-# by applypatch from an e-mail message. +-# +-# The hook should exit with non-zero status after issuing an +-# appropriate message if it wants to stop the commit. +-# +-# To enable this hook, rename this file to "pre-applypatch". +- +-. git-sh-setup +-precommit="$(git rev-parse --git-path hooks/pre-commit)" +-test -x "$precommit" && exec "$precommit" ${1+"$@"} +-: +diff -ruN /workspace/epanet_upstream/.git/hooks/pre-commit.sample /workspace/epanet/.git/hooks/pre-commit.sample +--- /workspace/epanet_upstream/.git/hooks/pre-commit.sample 2025-08-10 02:56:34.379748100 +0000 ++++ /workspace/epanet/.git/hooks/pre-commit.sample 1970-01-01 00:00:00.000000000 +0000 +@@ -1,49 +0,0 @@ +-#!/bin/sh +-# +-# An example hook script to verify what is about to be committed. +-# Called by "git commit" with no arguments. The hook should +-# exit with non-zero status after issuing an appropriate message if +-# it wants to stop the commit. +-# +-# To enable this hook, rename this file to "pre-commit". +- +-if git rev-parse --verify HEAD >/dev/null 2>&1 +-then +- against=HEAD +-else +- # Initial commit: diff against an empty tree object +- against=$(git hash-object -t tree /dev/null) +-fi +- +-# If you want to allow non-ASCII filenames set this variable to true. +-allownonascii=$(git config --type=bool hooks.allownonascii) +- +-# Redirect output to stderr. +-exec 1>&2 +- +-# Cross platform projects tend to avoid non-ASCII filenames; prevent +-# them from being added to the repository. We exploit the fact that the +-# printable range starts at the space character and ends with tilde. +-if [ "$allownonascii" != "true" ] && +- # Note that the use of brackets around a tr range is ok here, (it's +- # even required, for portability to Solaris 10's /usr/bin/tr), since +- # the square bracket bytes happen to fall in the designated range. +- test $(git diff-index --cached --name-only --diff-filter=A -z $against | +- LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 +-then +- cat <<\EOF +-Error: Attempt to add a non-ASCII file name. +- +-This can cause problems if you want to work with people on other platforms. +- +-To be portable it is advisable to rename the file. +- +-If you know what you are doing you can disable this check using: +- +- git config hooks.allownonascii true +-EOF +- exit 1 +-fi +- +-# If there are whitespace errors, print the offending file names and fail. +-exec git diff-index --check --cached $against -- +diff -ruN /workspace/epanet_upstream/.git/hooks/pre-merge-commit.sample /workspace/epanet/.git/hooks/pre-merge-commit.sample +--- /workspace/epanet_upstream/.git/hooks/pre-merge-commit.sample 2025-08-10 02:56:34.379748100 +0000 ++++ /workspace/epanet/.git/hooks/pre-merge-commit.sample 1970-01-01 00:00:00.000000000 +0000 +@@ -1,13 +0,0 @@ +-#!/bin/sh +-# +-# An example hook script to verify what is about to be committed. +-# Called by "git merge" with no arguments. The hook should +-# exit with non-zero status after issuing an appropriate message to +-# stderr if it wants to stop the merge commit. +-# +-# To enable this hook, rename this file to "pre-merge-commit". +- +-. git-sh-setup +-test -x "$GIT_DIR/hooks/pre-commit" && +- exec "$GIT_DIR/hooks/pre-commit" +-: +diff -ruN /workspace/epanet_upstream/.git/hooks/prepare-commit-msg.sample /workspace/epanet/.git/hooks/prepare-commit-msg.sample +--- /workspace/epanet_upstream/.git/hooks/prepare-commit-msg.sample 2025-08-10 02:56:34.379748100 +0000 ++++ /workspace/epanet/.git/hooks/prepare-commit-msg.sample 1970-01-01 00:00:00.000000000 +0000 +@@ -1,42 +0,0 @@ +-#!/bin/sh +-# +-# An example hook script to prepare the commit log message. +-# Called by "git commit" with the name of the file that has the +-# commit message, followed by the description of the commit +-# message's source. The hook's purpose is to edit the commit +-# message file. If the hook fails with a non-zero status, +-# the commit is aborted. +-# +-# To enable this hook, rename this file to "prepare-commit-msg". +- +-# This hook includes three examples. The first one removes the +-# "# Please enter the commit message..." help message. +-# +-# The second includes the output of "git diff --name-status -r" +-# into the message, just before the "git status" output. It is +-# commented because it doesn't cope with --amend or with squashed +-# commits. +-# +-# The third example adds a Signed-off-by line to the message, that can +-# still be edited. This is rarely a good idea. +- +-COMMIT_MSG_FILE=$1 +-COMMIT_SOURCE=$2 +-SHA1=$3 +- +-/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE" +- +-# case "$COMMIT_SOURCE,$SHA1" in +-# ,|template,) +-# /usr/bin/perl -i.bak -pe ' +-# print "\n" . `git diff --cached --name-status -r` +-# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;; +-# *) ;; +-# esac +- +-# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +-# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE" +-# if test -z "$COMMIT_SOURCE" +-# then +-# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE" +-# fi +diff -ruN /workspace/epanet_upstream/.git/hooks/pre-push.sample /workspace/epanet/.git/hooks/pre-push.sample +--- /workspace/epanet_upstream/.git/hooks/pre-push.sample 2025-08-10 02:56:34.379748100 +0000 ++++ /workspace/epanet/.git/hooks/pre-push.sample 1970-01-01 00:00:00.000000000 +0000 +@@ -1,53 +0,0 @@ +-#!/bin/sh +- +-# An example hook script to verify what is about to be pushed. Called by "git +-# push" after it has checked the remote status, but before anything has been +-# pushed. If this script exits with a non-zero status nothing will be pushed. +-# +-# This hook is called with the following parameters: +-# +-# $1 -- Name of the remote to which the push is being done +-# $2 -- URL to which the push is being done +-# +-# If pushing without using a named remote those arguments will be equal. +-# +-# Information about the commits which are being pushed is supplied as lines to +-# the standard input in the form: +-# +-# +-# +-# This sample shows how to prevent push of commits where the log message starts +-# with "WIP" (work in progress). +- +-remote="$1" +-url="$2" +- +-zero=$(git hash-object --stdin &2 "Found WIP commit in $local_ref, not pushing" +- exit 1 +- fi +- fi +-done +- +-exit 0 +diff -ruN /workspace/epanet_upstream/.git/hooks/pre-rebase.sample /workspace/epanet/.git/hooks/pre-rebase.sample +--- /workspace/epanet_upstream/.git/hooks/pre-rebase.sample 2025-08-10 02:56:34.379748100 +0000 ++++ /workspace/epanet/.git/hooks/pre-rebase.sample 1970-01-01 00:00:00.000000000 +0000 +@@ -1,169 +0,0 @@ +-#!/bin/sh +-# +-# Copyright (c) 2006, 2008 Junio C Hamano +-# +-# The "pre-rebase" hook is run just before "git rebase" starts doing +-# its job, and can prevent the command from running by exiting with +-# non-zero status. +-# +-# The hook is called with the following parameters: +-# +-# $1 -- the upstream the series was forked from. +-# $2 -- the branch being rebased (or empty when rebasing the current branch). +-# +-# This sample shows how to prevent topic branches that are already +-# merged to 'next' branch from getting rebased, because allowing it +-# would result in rebasing already published history. +- +-publish=next +-basebranch="$1" +-if test "$#" = 2 +-then +- topic="refs/heads/$2" +-else +- topic=`git symbolic-ref HEAD` || +- exit 0 ;# we do not interrupt rebasing detached HEAD +-fi +- +-case "$topic" in +-refs/heads/??/*) +- ;; +-*) +- exit 0 ;# we do not interrupt others. +- ;; +-esac +- +-# Now we are dealing with a topic branch being rebased +-# on top of master. Is it OK to rebase it? +- +-# Does the topic really exist? +-git show-ref -q "$topic" || { +- echo >&2 "No such branch $topic" +- exit 1 +-} +- +-# Is topic fully merged to master? +-not_in_master=`git rev-list --pretty=oneline ^master "$topic"` +-if test -z "$not_in_master" +-then +- echo >&2 "$topic is fully merged to master; better remove it." +- exit 1 ;# we could allow it, but there is no point. +-fi +- +-# Is topic ever merged to next? If so you should not be rebasing it. +-only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` +-only_next_2=`git rev-list ^master ${publish} | sort` +-if test "$only_next_1" = "$only_next_2" +-then +- not_in_topic=`git rev-list "^$topic" master` +- if test -z "$not_in_topic" +- then +- echo >&2 "$topic is already up to date with master" +- exit 1 ;# we could allow it, but there is no point. +- else +- exit 0 +- fi +-else +- not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` +- /usr/bin/perl -e ' +- my $topic = $ARGV[0]; +- my $msg = "* $topic has commits already merged to public branch:\n"; +- my (%not_in_next) = map { +- /^([0-9a-f]+) /; +- ($1 => 1); +- } split(/\n/, $ARGV[1]); +- for my $elem (map { +- /^([0-9a-f]+) (.*)$/; +- [$1 => $2]; +- } split(/\n/, $ARGV[2])) { +- if (!exists $not_in_next{$elem->[0]}) { +- if ($msg) { +- print STDERR $msg; +- undef $msg; +- } +- print STDERR " $elem->[1]\n"; +- } +- } +- ' "$topic" "$not_in_next" "$not_in_master" +- exit 1 +-fi +- +-<<\DOC_END +- +-This sample hook safeguards topic branches that have been +-published from being rewound. +- +-The workflow assumed here is: +- +- * Once a topic branch forks from "master", "master" is never +- merged into it again (either directly or indirectly). +- +- * Once a topic branch is fully cooked and merged into "master", +- it is deleted. If you need to build on top of it to correct +- earlier mistakes, a new topic branch is created by forking at +- the tip of the "master". This is not strictly necessary, but +- it makes it easier to keep your history simple. +- +- * Whenever you need to test or publish your changes to topic +- branches, merge them into "next" branch. +- +-The script, being an example, hardcodes the publish branch name +-to be "next", but it is trivial to make it configurable via +-$GIT_DIR/config mechanism. +- +-With this workflow, you would want to know: +- +-(1) ... if a topic branch has ever been merged to "next". Young +- topic branches can have stupid mistakes you would rather +- clean up before publishing, and things that have not been +- merged into other branches can be easily rebased without +- affecting other people. But once it is published, you would +- not want to rewind it. +- +-(2) ... if a topic branch has been fully merged to "master". +- Then you can delete it. More importantly, you should not +- build on top of it -- other people may already want to +- change things related to the topic as patches against your +- "master", so if you need further changes, it is better to +- fork the topic (perhaps with the same name) afresh from the +- tip of "master". +- +-Let's look at this example: +- +- o---o---o---o---o---o---o---o---o---o "next" +- / / / / +- / a---a---b A / / +- / / / / +- / / c---c---c---c B / +- / / / \ / +- / / / b---b C \ / +- / / / / \ / +- ---o---o---o---o---o---o---o---o---o---o---o "master" +- +- +-A, B and C are topic branches. +- +- * A has one fix since it was merged up to "next". +- +- * B has finished. It has been fully merged up to "master" and "next", +- and is ready to be deleted. +- +- * C has not merged to "next" at all. +- +-We would want to allow C to be rebased, refuse A, and encourage +-B to be deleted. +- +-To compute (1): +- +- git rev-list ^master ^topic next +- git rev-list ^master next +- +- if these match, topic has not merged in next at all. +- +-To compute (2): +- +- git rev-list master..topic +- +- if this is empty, it is fully merged to "master". +- +-DOC_END +diff -ruN /workspace/epanet_upstream/.git/hooks/pre-receive.sample /workspace/epanet/.git/hooks/pre-receive.sample +--- /workspace/epanet_upstream/.git/hooks/pre-receive.sample 2025-08-10 02:56:34.379748100 +0000 ++++ /workspace/epanet/.git/hooks/pre-receive.sample 1970-01-01 00:00:00.000000000 +0000 +@@ -1,24 +0,0 @@ +-#!/bin/sh +-# +-# An example hook script to make use of push options. +-# The example simply echoes all push options that start with 'echoback=' +-# and rejects all pushes when the "reject" push option is used. +-# +-# To enable this hook, rename this file to "pre-receive". +- +-if test -n "$GIT_PUSH_OPTION_COUNT" +-then +- i=0 +- while test "$i" -lt "$GIT_PUSH_OPTION_COUNT" +- do +- eval "value=\$GIT_PUSH_OPTION_$i" +- case "$value" in +- echoback=*) +- echo "echo from the pre-receive-hook: ${value#*=}" >&2 +- ;; +- reject) +- exit 1 +- esac +- i=$((i + 1)) +- done +-fi +diff -ruN /workspace/epanet_upstream/.git/hooks/push-to-checkout.sample /workspace/epanet/.git/hooks/push-to-checkout.sample +--- /workspace/epanet_upstream/.git/hooks/push-to-checkout.sample 2025-08-10 02:56:34.379748100 +0000 ++++ /workspace/epanet/.git/hooks/push-to-checkout.sample 1970-01-01 00:00:00.000000000 +0000 +@@ -1,78 +0,0 @@ +-#!/bin/sh +- +-# An example hook script to update a checked-out tree on a git push. +-# +-# This hook is invoked by git-receive-pack(1) when it reacts to git +-# push and updates reference(s) in its repository, and when the push +-# tries to update the branch that is currently checked out and the +-# receive.denyCurrentBranch configuration variable is set to +-# updateInstead. +-# +-# By default, such a push is refused if the working tree and the index +-# of the remote repository has any difference from the currently +-# checked out commit; when both the working tree and the index match +-# the current commit, they are updated to match the newly pushed tip +-# of the branch. This hook is to be used to override the default +-# behaviour; however the code below reimplements the default behaviour +-# as a starting point for convenient modification. +-# +-# The hook receives the commit with which the tip of the current +-# branch is going to be updated: +-commit=$1 +- +-# It can exit with a non-zero status to refuse the push (when it does +-# so, it must not modify the index or the working tree). +-die () { +- echo >&2 "$*" +- exit 1 +-} +- +-# Or it can make any necessary changes to the working tree and to the +-# index to bring them to the desired state when the tip of the current +-# branch is updated to the new commit, and exit with a zero status. +-# +-# For example, the hook can simply run git read-tree -u -m HEAD "$1" +-# in order to emulate git fetch that is run in the reverse direction +-# with git push, as the two-tree form of git read-tree -u -m is +-# essentially the same as git switch or git checkout that switches +-# branches while keeping the local changes in the working tree that do +-# not interfere with the difference between the branches. +- +-# The below is a more-or-less exact translation to shell of the C code +-# for the default behaviour for git's push-to-checkout hook defined in +-# the push_to_deploy() function in builtin/receive-pack.c. +-# +-# Note that the hook will be executed from the repository directory, +-# not from the working tree, so if you want to perform operations on +-# the working tree, you will have to adapt your code accordingly, e.g. +-# by adding "cd .." or using relative paths. +- +-if ! git update-index -q --ignore-submodules --refresh +-then +- die "Up-to-date check failed" +-fi +- +-if ! git diff-files --quiet --ignore-submodules -- +-then +- die "Working directory has unstaged changes" +-fi +- +-# This is a rough translation of: +-# +-# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX +-if git cat-file -e HEAD 2>/dev/null +-then +- head=HEAD +-else +- head=$(git hash-object -t tree --stdin &2 +- exit 1 +-} +- +-unset GIT_DIR GIT_WORK_TREE +-cd "$worktree" && +- +-if grep -q "^diff --git " "$1" +-then +- validate_patch "$1" +-else +- validate_cover_letter "$1" +-fi && +- +-if test "$GIT_SENDEMAIL_FILE_COUNTER" = "$GIT_SENDEMAIL_FILE_TOTAL" +-then +- git config --unset-all sendemail.validateWorktree && +- trap 'git worktree remove -ff "$worktree"' EXIT && +- validate_series +-fi +diff -ruN /workspace/epanet_upstream/.git/hooks/update.sample /workspace/epanet/.git/hooks/update.sample +--- /workspace/epanet_upstream/.git/hooks/update.sample 2025-08-10 02:56:34.379748100 +0000 ++++ /workspace/epanet/.git/hooks/update.sample 1970-01-01 00:00:00.000000000 +0000 +@@ -1,128 +0,0 @@ +-#!/bin/sh +-# +-# An example hook script to block unannotated tags from entering. +-# Called by "git receive-pack" with arguments: refname sha1-old sha1-new +-# +-# To enable this hook, rename this file to "update". +-# +-# Config +-# ------ +-# hooks.allowunannotated +-# This boolean sets whether unannotated tags will be allowed into the +-# repository. By default they won't be. +-# hooks.allowdeletetag +-# This boolean sets whether deleting tags will be allowed in the +-# repository. By default they won't be. +-# hooks.allowmodifytag +-# This boolean sets whether a tag may be modified after creation. By default +-# it won't be. +-# hooks.allowdeletebranch +-# This boolean sets whether deleting branches will be allowed in the +-# repository. By default they won't be. +-# hooks.denycreatebranch +-# This boolean sets whether remotely creating branches will be denied +-# in the repository. By default this is allowed. +-# +- +-# --- Command line +-refname="$1" +-oldrev="$2" +-newrev="$3" +- +-# --- Safety check +-if [ -z "$GIT_DIR" ]; then +- echo "Don't run this script from the command line." >&2 +- echo " (if you want, you could supply GIT_DIR then run" >&2 +- echo " $0 )" >&2 +- exit 1 +-fi +- +-if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then +- echo "usage: $0 " >&2 +- exit 1 +-fi +- +-# --- Config +-allowunannotated=$(git config --type=bool hooks.allowunannotated) +-allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch) +-denycreatebranch=$(git config --type=bool hooks.denycreatebranch) +-allowdeletetag=$(git config --type=bool hooks.allowdeletetag) +-allowmodifytag=$(git config --type=bool hooks.allowmodifytag) +- +-# check for no description +-projectdesc=$(sed -e '1q' "$GIT_DIR/description") +-case "$projectdesc" in +-"Unnamed repository"* | "") +- echo "*** Project description file hasn't been set" >&2 +- exit 1 +- ;; +-esac +- +-# --- Check types +-# if $newrev is 0000...0000, it's a commit to delete a ref. +-zero=$(git hash-object --stdin &2 +- echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 +- exit 1 +- fi +- ;; +- refs/tags/*,delete) +- # delete tag +- if [ "$allowdeletetag" != "true" ]; then +- echo "*** Deleting a tag is not allowed in this repository" >&2 +- exit 1 +- fi +- ;; +- refs/tags/*,tag) +- # annotated tag +- if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 +- then +- echo "*** Tag '$refname' already exists." >&2 +- echo "*** Modifying a tag is not allowed in this repository." >&2 +- exit 1 +- fi +- ;; +- refs/heads/*,commit) +- # branch +- if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then +- echo "*** Creating a branch is not allowed in this repository" >&2 +- exit 1 +- fi +- ;; +- refs/heads/*,delete) +- # delete branch +- if [ "$allowdeletebranch" != "true" ]; then +- echo "*** Deleting a branch is not allowed in this repository" >&2 +- exit 1 +- fi +- ;; +- refs/remotes/*,commit) +- # tracking branch +- ;; +- refs/remotes/*,delete) +- # delete tracking branch +- if [ "$allowdeletebranch" != "true" ]; then +- echo "*** Deleting a tracking branch is not allowed in this repository" >&2 +- exit 1 +- fi +- ;; +- *) +- # Anything else (is there anything else?) +- echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 +- exit 1 +- ;; +-esac +- +-# --- Finished +-exit 0 +Binary files /workspace/epanet_upstream/.git/index and /workspace/epanet/.git/index differ +diff -ruN /workspace/epanet_upstream/.git/info/exclude /workspace/epanet/.git/info/exclude +--- /workspace/epanet_upstream/.git/info/exclude 2025-08-10 02:56:34.379748100 +0000 ++++ /workspace/epanet/.git/info/exclude 1970-01-01 00:00:00.000000000 +0000 +@@ -1,6 +0,0 @@ +-# git ls-files --others --exclude-from=.git/info/exclude +-# Lines that start with '#' are comments. +-# For a project mostly in C, the following would be a good set of +-# exclude patterns (uncomment them if you want to use them): +-# *.[oa] +-# *~ +diff -ruN /workspace/epanet_upstream/.git/logs/HEAD /workspace/epanet/.git/logs/HEAD +--- /workspace/epanet_upstream/.git/logs/HEAD 2025-08-10 02:56:34.823749143 +0000 ++++ /workspace/epanet/.git/logs/HEAD 1970-01-01 00:00:00.000000000 +0000 +@@ -1 +0,0 @@ +-0000000000000000000000000000000000000000 7ba5bb269f39f3bf9d9ed41aba451069a85462f2 Cursor Agent 1754794594 +0000 clone: from https://github.com/OpenWaterAnalytics/EPANET.git +diff -ruN /workspace/epanet_upstream/.git/logs/refs/heads/dev /workspace/epanet/.git/logs/refs/heads/dev +--- /workspace/epanet_upstream/.git/logs/refs/heads/dev 2025-08-10 02:56:34.823749143 +0000 ++++ /workspace/epanet/.git/logs/refs/heads/dev 1970-01-01 00:00:00.000000000 +0000 +@@ -1 +0,0 @@ +-0000000000000000000000000000000000000000 7ba5bb269f39f3bf9d9ed41aba451069a85462f2 Cursor Agent 1754794594 +0000 clone: from https://github.com/OpenWaterAnalytics/EPANET.git +diff -ruN /workspace/epanet_upstream/.git/logs/refs/remotes/origin/HEAD /workspace/epanet/.git/logs/refs/remotes/origin/HEAD +--- /workspace/epanet_upstream/.git/logs/refs/remotes/origin/HEAD 2025-08-10 02:56:34.819749133 +0000 ++++ /workspace/epanet/.git/logs/refs/remotes/origin/HEAD 1970-01-01 00:00:00.000000000 +0000 +@@ -1 +0,0 @@ +-0000000000000000000000000000000000000000 7ba5bb269f39f3bf9d9ed41aba451069a85462f2 Cursor Agent 1754794594 +0000 clone: from https://github.com/OpenWaterAnalytics/EPANET.git +Binary files /workspace/epanet_upstream/.git/objects/pack/pack-3bb8d5b87b639e8210154136244f4c9b2b2f924f.idx and /workspace/epanet/.git/objects/pack/pack-3bb8d5b87b639e8210154136244f4c9b2b2f924f.idx differ +Binary files /workspace/epanet_upstream/.git/objects/pack/pack-3bb8d5b87b639e8210154136244f4c9b2b2f924f.pack and /workspace/epanet/.git/objects/pack/pack-3bb8d5b87b639e8210154136244f4c9b2b2f924f.pack differ +Binary files /workspace/epanet_upstream/.git/objects/pack/pack-3bb8d5b87b639e8210154136244f4c9b2b2f924f.rev and /workspace/epanet/.git/objects/pack/pack-3bb8d5b87b639e8210154136244f4c9b2b2f924f.rev differ +diff -ruN /workspace/epanet_upstream/.git/packed-refs /workspace/epanet/.git/packed-refs +--- /workspace/epanet_upstream/.git/packed-refs 2025-08-10 02:56:34.819749133 +0000 ++++ /workspace/epanet/.git/packed-refs 1970-01-01 00:00:00.000000000 +0000 +@@ -1,2 +0,0 @@ +-# pack-refs with: peeled fully-peeled sorted +-7ba5bb269f39f3bf9d9ed41aba451069a85462f2 refs/remotes/origin/dev +diff -ruN /workspace/epanet_upstream/.git/refs/heads/dev /workspace/epanet/.git/refs/heads/dev +--- /workspace/epanet_upstream/.git/refs/heads/dev 2025-08-10 02:56:34.819749133 +0000 ++++ /workspace/epanet/.git/refs/heads/dev 1970-01-01 00:00:00.000000000 +0000 +@@ -1 +0,0 @@ +-7ba5bb269f39f3bf9d9ed41aba451069a85462f2 +diff -ruN /workspace/epanet_upstream/.git/refs/remotes/origin/HEAD /workspace/epanet/.git/refs/remotes/origin/HEAD +--- /workspace/epanet_upstream/.git/refs/remotes/origin/HEAD 2025-08-10 02:56:34.819749133 +0000 ++++ /workspace/epanet/.git/refs/remotes/origin/HEAD 1970-01-01 00:00:00.000000000 +0000 +@@ -1 +0,0 @@ +-ref: refs/remotes/origin/dev +diff -ruN /workspace/epanet_upstream/.git/shallow /workspace/epanet/.git/shallow +--- /workspace/epanet_upstream/.git/shallow 2025-08-10 02:56:34.711748879 +0000 ++++ /workspace/epanet/.git/shallow 1970-01-01 00:00:00.000000000 +0000 +@@ -1 +0,0 @@ +-7ba5bb269f39f3bf9d9ed41aba451069a85462f2 +diff -ruN /workspace/epanet_upstream/src/input2.c /workspace/epanet/src/input2.c +--- /workspace/epanet_upstream/src/input2.c 2025-08-10 02:56:34.827749152 +0000 ++++ /workspace/epanet/src/input2.c 2025-08-10 02:46:13.474075472 +0000 +@@ -62,6 +62,8 @@ + parser->MaxControls = 0; + parser->MaxRules = 0; + parser->MaxCurves = 0; ++ parser->VarCount = 0; ++ parser->ExprCount = 0; + sect = -1; + + +diff -ruN /workspace/epanet_upstream/src/mathexpr.c /workspace/epanet/src/mathexpr.c +--- /workspace/epanet_upstream/src/mathexpr.c 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/src/mathexpr.c 2025-08-10 02:50:00.658764532 +0000 +@@ -0,0 +1,571 @@ ++#define _CRT_SECURE_NO_DEPRECATE ++#include ++#include ++#include ++#include ++#include "mathexpr.h" ++ ++#define MAX_STACK_SIZE 1024 ++ ++struct TreeNode ++{ ++ int opcode; ++ int ivar; ++ double fvalue; ++ struct TreeNode *left; ++ struct TreeNode *right; ++}; ++ ++typedef struct TreeNode ExprTree; ++ ++// Forward declarations ++static ExprTree* getTree(void); ++ ++static int Err; ++static int Bc; ++static int PrevLex, CurLex; ++static int Len, Pos; ++static char *S; ++static char Token[255]; ++static int Ivar; ++static double Fvalue; ++ ++static int (*getVariableIndex) (char *); ++ ++static int sametext(char *s1, char *s2) ++{ ++ int i; ++ for (i=0; toupper(s1[i]) == toupper(s2[i]); i++) ++ if (!s1[i+1] && !s2[i+1]) return 1; ++ return 0; ++} ++ ++static int isDigit(char c) ++{ ++ if (c >= '1' && c <= '9') return 1; ++ if (c == '0') return 1; ++ return 0; ++} ++ ++static int isLetter(char c) ++{ ++ if (c >= 'a' && c <= 'z') return 1; ++ if (c >= 'A' && c <= 'Z') return 1; ++ if (c == '_') return 1; ++ return 0; ++} ++ ++static void getToken() ++{ ++ char c[] = " "; ++ Token[0] = '\0'; ++ while ( Pos <= Len && ( isLetter(S[Pos]) || isDigit(S[Pos]) ) ) ++ { ++ c[0] = S[Pos]; ++ strcat(Token, c); ++ Pos++; ++ } ++ Pos--; ++} ++ ++static int getMathFunc() ++{ ++ static char *MathFunc[] = {"COS","SIN","TAN","COT","ABS","SGN", ++ "SQRT","LOG","EXP","ASIN","ACOS","ATAN", ++ "ACOT","SINH","COSH","TANH","COTH","LOG10", ++ "STEP", NULL}; ++ int i = 0; ++ while (MathFunc[i] != NULL) ++ { ++ if (sametext(MathFunc[i], Token)) return i+10; ++ i++; ++ } ++ return 0; ++} ++ ++static int getVariable() ++{ ++ if (!getVariableIndex) return 0; ++ Ivar = getVariableIndex(Token); ++ if (Ivar >= 0) return 8; ++ return 0; ++} ++ ++static double getNumber() ++{ ++ char c[] = " "; ++ char sNumber[255]; ++ int errflag = 0; ++ int decimalCount = 0; ++ ++ sNumber[0] = '\0'; ++ while (Pos < Len && isDigit(S[Pos])) ++ { ++ c[0] = S[Pos]; ++ strcat(sNumber, c); ++ Pos++; ++ } ++ ++ if (Pos < Len) ++ { ++ if (S[Pos] == '.') ++ { ++ decimalCount++; ++ if (decimalCount > 1) Err = 1; ++ strcat(sNumber, "."); ++ Pos++; ++ while (Pos < Len && isDigit(S[Pos])) ++ { ++ c[0] = S[Pos]; ++ strcat(sNumber, c); ++ Pos++; ++ } ++ } ++ if (Pos < Len && (S[Pos] == 'e' || S[Pos] == 'E')) ++ { ++ strcat(sNumber, "E"); ++ Pos++; ++ if (Pos >= Len) errflag = 1; ++ else ++ { ++ if (S[Pos] == '-' || S[Pos] == '+') ++ { ++ c[0] = S[Pos]; ++ strcat(sNumber, c); ++ Pos++; ++ } ++ if (Pos >= Len || !isDigit(S[Pos])) errflag = 1; ++ else while ( Pos < Len && isDigit(S[Pos])) ++ { ++ c[0] = S[Pos]; ++ strcat(sNumber, c); ++ Pos++; ++ } ++ } ++ } ++ } ++ Pos--; ++ if (errflag) return 0; ++ else return atof(sNumber); ++} ++ ++static int getOperand() ++{ ++ int code; ++ switch(S[Pos]) ++ { ++ case '(': code = 1; break; ++ case ')': code = 2; break; ++ case '+': code = 3; break; ++ case '-': code = 4; ++ if (Pos < Len-1 && isDigit(S[Pos+1]) && (CurLex <= 6 || CurLex == 31)) ++ { ++ Pos++; ++ Fvalue = -getNumber(); ++ code = 7; ++ } ++ break; ++ case '*': code = 5; break; ++ case '/': code = 6; break; ++ case '^': code = 31; break; ++ default: code = 0; ++ } ++ return code; ++} ++ ++static int getLex() ++{ ++ int n; ++ while ( Pos < Len && S[Pos] == ' ' ) Pos++; ++ if ( Pos >= Len ) return 0; ++ n = getOperand(); ++ if ( n == 0 ) ++ { ++ if ( isLetter(S[Pos]) ) ++ { ++ getToken(); ++ n = getMathFunc(); ++ if ( n == 0 ) n = getVariable(); ++ } ++ else if ( S[Pos] == '.' || isDigit(S[Pos]) ) ++ { ++ n = 7; ++ Fvalue = getNumber(); ++ } ++ } ++ Pos++; ++ PrevLex = CurLex; ++ CurLex = n; ++ return n; ++} ++ ++static ExprTree * newNode() ++{ ++ ExprTree *node = (ExprTree *) malloc(sizeof(ExprTree)); ++ if (!node) Err = 2; ++ else ++ { ++ node->opcode = 0; ++ node->ivar = -1; ++ node->fvalue = 0.; ++ node->left = NULL; ++ node->right = NULL; ++ } ++ return node; ++} ++ ++static ExprTree * getSingleOp(int *lex) ++{ ++ int opcode; ++ ExprTree *left; ++ ExprTree *node; ++ ++ if ( *lex == 1 ) ++ { ++ Bc++; ++ left = getTree(); ++ } ++ else ++ { ++ if ( *lex < 7 || *lex == 9 || *lex > 30) ++ { ++ Err = 1; ++ return NULL; ++ } ++ opcode = *lex; ++ if ( *lex == 7 || *lex == 8 ) ++ { ++ left = newNode(); ++ left->opcode = opcode; ++ if ( *lex == 7 ) left->fvalue = Fvalue; ++ if ( *lex == 8 ) left->ivar = Ivar; ++ } ++ else ++ { ++ *lex = getLex(); ++ if ( *lex != 1 ) ++ { ++ Err = 1; ++ return NULL; ++ } ++ Bc++; ++ left = newNode(); ++ left->left = getTree(); ++ left->opcode = opcode; ++ } ++ } ++ *lex = getLex(); ++ if (*lex == 31) ++ { ++ node = newNode(); ++ node->left = left; ++ node->opcode = *lex; ++ *lex = getLex(); ++ node->right = getSingleOp(lex); ++ left = node; ++ } ++ return left; ++} ++ ++static ExprTree * getOp(int *lex) ++{ ++ int opcode; ++ ExprTree *left; ++ ExprTree *right; ++ ExprTree *node; ++ int neg = 0; ++ ++ *lex = getLex(); ++ if (PrevLex == 0 || PrevLex == 1) ++ { ++ if ( *lex == 4 ) ++ { ++ neg = 1; ++ *lex = getLex(); ++ } ++ else if ( *lex == 3) *lex = getLex(); ++ } ++ left = getSingleOp(lex); ++ while ( *lex == 5 || *lex == 6) ++ { ++ opcode = *lex; ++ *lex = getLex(); ++ right = getSingleOp(lex); ++ node = newNode(); ++ if (Err) return NULL; ++ node->left = left; ++ node->right = right; ++ node->opcode = opcode; ++ left = node; ++ } ++ if ( neg ) ++ { ++ node = newNode(); ++ if (Err) return NULL; ++ node->left = left; ++ node->right = NULL; ++ node->opcode = 9; ++ left = node; ++ } ++ return left; ++} ++ ++static ExprTree * getTree() ++{ ++ int lex; ++ int opcode; ++ ExprTree *left; ++ ExprTree *right; ++ ExprTree *node; ++ ++ left = getOp(&lex); ++ for (;;) ++ { ++ if ( lex == 0 || lex == 2 ) ++ { ++ if ( lex == 2 ) Bc--; ++ break; ++ } ++ if (lex != 3 && lex != 4 ) ++ { ++ Err = 1; ++ break; ++ } ++ opcode = lex; ++ right = getOp(&lex); ++ node = newNode(); ++ if (Err) break; ++ node->left = left; ++ node->right = right; ++ node->opcode = opcode; ++ left = node; ++ } ++ return left; ++} ++ ++static void traverseTree(ExprTree *tree, MathExpr **expr) ++{ ++ MathExpr *node; ++ if ( tree == NULL) return; ++ traverseTree(tree->left, expr); ++ traverseTree(tree->right, expr); ++ node = (MathExpr *) malloc(sizeof(MathExpr)); ++ if (node) ++ { ++ node->fvalue = tree->fvalue; ++ node->opcode = tree->opcode; ++ node->ivar = tree->ivar; ++ node->next = NULL; ++ node->prev = (*expr); ++ } ++ if (*expr) (*expr)->next = node; ++ (*expr) = node; ++} ++ ++static void deleteTree(ExprTree *tree) ++{ ++ if (tree) ++ { ++ if (tree->left) deleteTree(tree->left); ++ if (tree->right) deleteTree(tree->right); ++ free(tree); ++ } ++} ++ ++double mathexpr_eval(MathExpr *expr, double (*getVariableValue) (int)) ++{ ++ double ExprStack[MAX_STACK_SIZE]; ++ MathExpr *node = expr; ++ double r1, r2; ++ int stackindex = 0; ++ ++ ExprStack[0] = 0.0; ++ while(node != NULL && stackindex >= 0) ++ { ++ switch (node->opcode) ++ { ++ case 3: ++ r1 = ExprStack[stackindex]; ++ stackindex--; ++ if (stackindex < 0) break; ++ r2 = ExprStack[stackindex]; ++ ExprStack[stackindex] = r2 + r1; ++ break; ++ case 4: ++ r1 = ExprStack[stackindex]; ++ stackindex--; ++ if (stackindex < 0) break; ++ r2 = ExprStack[stackindex]; ++ ExprStack[stackindex] = r2 - r1; ++ break; ++ case 5: ++ r1 = ExprStack[stackindex]; ++ stackindex--; ++ if (stackindex < 0) break; ++ r2 = ExprStack[stackindex]; ++ ExprStack[stackindex] = r2 * r1; ++ break; ++ case 6: ++ r1 = ExprStack[stackindex]; ++ stackindex--; ++ if (stackindex < 0) break; ++ r2 = ExprStack[stackindex]; ++ ExprStack[stackindex] = r2 / r1; ++ break; ++ case 7: ++ stackindex++; ++ if (stackindex >= MAX_STACK_SIZE) break; ++ ExprStack[stackindex] = node->fvalue; ++ break; ++ case 8: ++ if (getVariableValue != NULL) r1 = getVariableValue(node->ivar); ++ else r1 = 0.0; ++ stackindex++; ++ if (stackindex >= MAX_STACK_SIZE) break; ++ ExprStack[stackindex] = r1; ++ break; ++ case 9: ++ ExprStack[stackindex] = -ExprStack[stackindex]; ++ break; ++ case 10: ++ r1 = ExprStack[stackindex]; ++ r2 = cos(r1); ++ ExprStack[stackindex] = r2; ++ break; ++ case 11: ++ r1 = ExprStack[stackindex]; ++ r2 = sin(r1); ++ ExprStack[stackindex] = r2; ++ break; ++ case 12: ++ r1 = ExprStack[stackindex]; ++ r2 = tan(r1); ++ ExprStack[stackindex] = r2; ++ break; ++ case 13: ++ r1 = ExprStack[stackindex]; ++ if (r1 == 0.0) r2 = 0.0; else r2 = 1.0/tan(r1); ++ ExprStack[stackindex] = r2; ++ break; ++ case 14: ++ r1 = ExprStack[stackindex]; ++ r2 = fabs(r1); ++ ExprStack[stackindex] = r2; ++ break; ++ case 15: ++ r1 = ExprStack[stackindex]; ++ if (r1 < 0.0) r2 = -1.0; else if (r1 > 0.0) r2 = 1.0; else r2 = 0.0; ++ ExprStack[stackindex] = r2; ++ break; ++ case 16: ++ r1 = ExprStack[stackindex]; ++ if (r1 < 0.0) r2 = 0.0; else r2 = sqrt(r1); ++ ExprStack[stackindex] = r2; ++ break; ++ case 17: ++ r1 = ExprStack[stackindex]; ++ if (r1 <= 0) r2 = 0.0; else r2 = log(r1); ++ ExprStack[stackindex] = r2; ++ break; ++ case 18: ++ r1 = ExprStack[stackindex]; ++ r2 = exp(r1); ++ ExprStack[stackindex] = r2; ++ break; ++ case 19: ++ r1 = ExprStack[stackindex]; ++ r2 = asin(r1); ++ ExprStack[stackindex] = r2; ++ break; ++ case 20: ++ r1 = ExprStack[stackindex]; ++ r2 = acos(r1); ++ ExprStack[stackindex] = r2; ++ break; ++ case 21: ++ r1 = ExprStack[stackindex]; ++ r2 = atan(r1); ++ ExprStack[stackindex] = r2; ++ break; ++ case 22: ++ r1 = ExprStack[stackindex]; ++ r2 = 1.57079632679489661923 - atan(r1); ++ ExprStack[stackindex] = r2; ++ break; ++ case 23: ++ r1 = ExprStack[stackindex]; ++ r2 = (exp(r1)-exp(-r1))/2.0; ++ ExprStack[stackindex] = r2; ++ break; ++ case 24: ++ r1 = ExprStack[stackindex]; ++ r2 = (exp(r1)+exp(-r1))/2.0; ++ ExprStack[stackindex] = r2; ++ break; ++ case 25: ++ r1 = ExprStack[stackindex]; ++ r2 = (exp(r1)-exp(-r1))/(exp(r1)+exp(-r1)); ++ ExprStack[stackindex] = r2; ++ break; ++ case 26: ++ r1 = ExprStack[stackindex]; ++ r2 = (exp(r1)+exp(-r1))/(exp(r1)-exp(-r1)); ++ ExprStack[stackindex] = r2; ++ break; ++ case 27: ++ r1 = ExprStack[stackindex]; ++ if (r1 == 0.0) r2 = 0.0; else r2 = log10(r1); ++ ExprStack[stackindex] = r2; ++ break; ++ case 28: ++ r1 = ExprStack[stackindex]; ++ if (r1 <= 0.0) r2 = 0.0; else r2 = 1.0; ++ ExprStack[stackindex] = r2; ++ break; ++ case 31: ++ r1 = ExprStack[stackindex]; ++ stackindex--; ++ if (stackindex < 0) break; ++ r2 = ExprStack[stackindex]; ++ if (r2 <= 0.0) r2 = 0.0; else r2 = pow(r2, r1); ++ ExprStack[stackindex] = r2; ++ break; ++ } ++ node = node->next; ++ } ++ if (stackindex >= 0) return ExprStack[stackindex]; ++ else return 0.0; ++} ++ ++void mathexpr_delete(MathExpr *expr) ++{ ++ if (expr) mathexpr_delete(expr->next); ++ free(expr); ++} ++ ++MathExpr * mathexpr_create(char *formula, int (*getVar) (char *)) ++{ ++ ExprTree *tree; ++ MathExpr *expr = NULL; ++ MathExpr *result = NULL; ++ getVariableIndex = getVar; ++ Err = 0; ++ PrevLex = 0; ++ CurLex = 0; ++ S = formula; ++ Len = (int)strlen(S); ++ Pos = 0; ++ Bc = 0; ++ tree = getTree(); ++ if (Bc == 0 && Err == 0) ++ { ++ traverseTree(tree, &expr); ++ while (expr) ++ { ++ result = expr; ++ expr = expr->prev; ++ } ++ } ++ deleteTree(tree); ++ return result; ++} +\ No newline at end of file +diff -ruN /workspace/epanet_upstream/src/mathexpr.h /workspace/epanet/src/mathexpr.h +--- /workspace/epanet_upstream/src/mathexpr.h 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/src/mathexpr.h 2025-08-10 02:47:55.030332830 +0000 +@@ -0,0 +1,18 @@ ++#ifndef MATHEXPR_H ++#define MATHEXPR_H ++ ++struct ExprNode ++{ ++ int opcode; ++ int ivar; ++ double fvalue; ++ struct ExprNode *prev; ++ struct ExprNode *next; ++}; ++typedef struct ExprNode MathExpr; ++ ++MathExpr* mathexpr_create(char* s, int (*getVar) (char *)); ++double mathexpr_eval(MathExpr* expr, double (*getVal) (int)); ++void mathexpr_delete(MathExpr* expr); ++ ++#endif // MATHEXPR_H +\ No newline at end of file +diff -ruN /workspace/epanet_upstream/src/outfile/include/epanet_output_export.h /workspace/epanet/src/outfile/include/epanet_output_export.h +--- /workspace/epanet_upstream/src/outfile/include/epanet_output_export.h 1970-01-01 00:00:00.000000000 +0000 ++++ /workspace/epanet/src/outfile/include/epanet_output_export.h 2025-08-10 02:49:33.000000000 +0000 +@@ -0,0 +1,43 @@ ++ ++#ifndef EXPORT_OUT_API_H ++#define EXPORT_OUT_API_H ++ ++#ifdef SHARED_EXPORTS_BUILT_AS_STATIC ++# define EXPORT_OUT_API ++# define EPANET_OUTPUT_NO_EXPORT ++#else ++# ifndef EXPORT_OUT_API ++# ifdef epanet_output_EXPORTS ++ /* We are building this library */ ++# define EXPORT_OUT_API __attribute__((visibility("default"))) ++# else ++ /* We are using this library */ ++# define EXPORT_OUT_API __attribute__((visibility("default"))) ++# endif ++# endif ++ ++# ifndef EPANET_OUTPUT_NO_EXPORT ++# define EPANET_OUTPUT_NO_EXPORT __attribute__((visibility("hidden"))) ++# endif ++#endif ++ ++#ifndef EPANET_OUTPUT_DEPRECATED ++# define EPANET_OUTPUT_DEPRECATED __attribute__ ((__deprecated__)) ++#endif ++ ++#ifndef EPANET_OUTPUT_DEPRECATED_EXPORT ++# define EPANET_OUTPUT_DEPRECATED_EXPORT EXPORT_OUT_API EPANET_OUTPUT_DEPRECATED ++#endif ++ ++#ifndef EPANET_OUTPUT_DEPRECATED_NO_EXPORT ++# define EPANET_OUTPUT_DEPRECATED_NO_EXPORT EPANET_OUTPUT_NO_EXPORT EPANET_OUTPUT_DEPRECATED ++#endif ++ ++/* NOLINTNEXTLINE(readability-avoid-unconditional-preprocessor-if) */ ++#if 0 /* DEFINE_NO_DEPRECATED */ ++# ifndef EPANET_OUTPUT_NO_DEPRECATED ++# define EPANET_OUTPUT_NO_DEPRECATED ++# endif ++#endif ++ ++#endif /* EXPORT_OUT_API_H */ +diff -ruN /workspace/epanet_upstream/src/rules.c /workspace/epanet/src/rules.c +--- /workspace/epanet_upstream/src/rules.c 2025-08-10 02:56:34.831749161 +0000 ++++ /workspace/epanet/src/rules.c 2025-08-10 02:50:43.486887043 +0000 +@@ -19,6 +19,7 @@ + #include "funcs.h" + #include "hash.h" + #include "text.h" ++#include "mathexpr.h" + + #ifdef _WIN32 + #define snprintf _snprintf +@@ -33,10 +34,12 @@ + r_ELSE, + r_PRIORITY, + r_DISABLED, ++ r_VARIABLE, ++ r_EXPRESSION, + r_ERROR + }; + char *Ruleword[] = {w_RULE, w_IF, w_AND, w_OR, +- w_THEN, w_ELSE, w_PRIORITY, w_DISABLED, NULL}; ++ w_THEN, w_ELSE, w_PRIORITY, w_DISABLED, w_VARIABLE, w_EXPRESSION, NULL}; + + enum Varwords { + r_DEMAND, +@@ -102,6 +105,30 @@ + static void getobjtxt(int, int, char *); + static void gettimetxt(double, char *); + ++// Helper accessors for named variables/expressions storage ++#define NAMED_VARS(pr) ((pr)->rulesStorage.NamedVars) ++#define EXPRESSIONS(pr) ((pr)->rulesStorage.Expressions) ++ ++// Forward static helpers ++static int getNamedVarIndex(Project* pr, const char* name); ++static int getExprIndex(Project* pr, const char* name); ++static double getVariableValue(Project* pr, int object, int index, int variable); ++ ++// Static context for mathexpr callbacks ++static Project* g_exprProject = NULL; ++static int expr_getVarIndex(char* name) ++{ ++ if (!g_exprProject) return -1; ++ return getNamedVarIndex(g_exprProject, name); ++} ++static double expr_getVarValue(int idx) ++{ ++ if (!g_exprProject) return 0.0; ++ if (idx < 0 || idx >= g_exprProject->parser.VarCount) return 0.0; ++ NamedVar* nv = &NAMED_VARS(g_exprProject)[idx]; ++ return getVariableValue(g_exprProject, nv->object, nv->index, nv->variable); ++} ++ + + void initrules(Project *pr) + //-------------------------------------------------------------- +@@ -113,7 +140,11 @@ + pr->rules.LastThenAction = NULL; + pr->rules.LastElseAction = NULL; + pr->rules.ActionList = NULL; ++ pr->rules.CurrentVar = -1; ++ pr->rules.CurrentExpr = -1; + pr->network.Rule = NULL; ++ pr->rulesStorage.NamedVars = NULL; ++ pr->rulesStorage.Expressions = NULL; + } + + void addrule(Parser *parser, char *tok) +@@ -122,6 +153,8 @@ + //-------------------------------------------------------------- + { + if (match(tok, w_RULE)) parser->MaxRules++; ++ else if (match(tok, w_VARIABLE)) parser->VarCount++; ++ else if (match(tok, w_EXPRESSION)) parser->ExprCount++; + } + + void deleterule(Project *pr, int index) +@@ -163,6 +196,19 @@ + + net->Rule = (Srule *)calloc(n, sizeof(Srule)); + if (net->Rule == NULL) return 101; ++ // allocate named variables and expressions arrays if any were counted ++ if (pr->parser.VarCount > 0) ++ { ++ pr->rulesStorage.NamedVars = (NamedVar*)calloc(pr->parser.VarCount, sizeof(NamedVar)); ++ if (pr->rulesStorage.NamedVars == NULL) return 101; ++ pr->rules.CurrentVar = -1; ++ } ++ if (pr->parser.ExprCount > 0) ++ { ++ pr->rulesStorage.Expressions = (NamedExpr*)calloc(pr->parser.ExprCount, sizeof(NamedExpr)); ++ if (pr->rulesStorage.Expressions == NULL) return 101; ++ pr->rules.CurrentExpr = -1; ++ } + return 0; + } + +@@ -180,6 +226,25 @@ + for (i = 1; i <= pr->network.Nrules; i++) clearrule(pr, i); + free(pr->network.Rule); + pr->network.Rule = NULL; ++ ++ // free expressions ++ if (pr->rulesStorage.Expressions) ++ { ++ for (i = 0; i < pr->parser.ExprCount; i++) ++ { ++ if (pr->rulesStorage.Expressions[i].expr) ++ { ++ mathexpr_delete(pr->rulesStorage.Expressions[i].expr); ++ } ++ } ++ free(pr->rulesStorage.Expressions); ++ pr->rulesStorage.Expressions = NULL; ++ } ++ if (pr->rulesStorage.NamedVars) ++ { ++ free(pr->rulesStorage.NamedVars); ++ pr->rulesStorage.NamedVars = NULL; ++ } + } + + int ruledata(Project *pr) +@@ -207,6 +272,99 @@ + err = 201; // Unrecognized keyword + break; + ++ case r_VARIABLE: ++ // VARIABLE name = {SYSTEM Var | OBJECT id Var} ++ if (parser->Ntokens < 5) { err = 201; break; } ++ // Reject names that collide with Varword or rule words ++ if (findmatch(Tok[1], Varword) >= 0) { err = 201; break; } ++ // Expect '=' at Tok[2] ++ if (!match(Tok[2], "=")) { err = 201; break; } ++ { ++ int obj = findmatch(Tok[3], Object); ++ int index = 0; ++ int var = -1; ++ if (obj == r_SYSTEM) ++ { ++ if (parser->Ntokens < 5) { err = 201; break; } ++ var = findmatch(Tok[4], Varword); ++ if (var != r_TIME && var != r_CLOCKTIME && var != r_DEMAND) ++ { err = 201; break; } ++ } ++ else ++ { ++ // OBJECT ID VAR ++ if (parser->Ntokens < 6) { err = 201; break; } ++ int kind; ++ switch (obj) ++ { ++ case r_NODE: ++ case r_JUNC: ++ case r_RESERV: ++ case r_TANK: kind = r_NODE; break; ++ case r_LINK: ++ case r_PIPE: ++ case r_PUMP: ++ case r_VALVE: kind = r_LINK; break; ++ default: err = 201; kind = -1; break; ++ } ++ if (err) break; ++ if (kind == r_NODE) ++ { ++ index = findnode(net, Tok[4]); ++ if (index == 0) { err = 203; break; } ++ var = findmatch(Tok[5], Varword); ++ if (var!=r_DEMAND && var!=r_HEAD && var!=r_GRADE && var!=r_LEVEL && var!=r_PRESSURE && var!=r_FILLTIME && var!=r_DRAINTIME) ++ { err = 201; break; } ++ obj = r_NODE; ++ } ++ else ++ { ++ index = findlink(net, Tok[4]); ++ if (index == 0) { err = 204; break; } ++ var = findmatch(Tok[5], Varword); ++ if (var!=r_FLOW && var!=r_STATUS && var!=r_SETTING && var!=r_POWER) ++ { err = 201; break; } ++ obj = r_LINK; ++ } ++ } ++ if (!err) ++ { ++ rules->CurrentVar++; ++ if (rules->CurrentVar >= pr->parser.VarCount) { err = 201; break; } ++ NamedVar *nv = &NAMED_VARS(pr)[rules->CurrentVar]; ++ strncpy(nv->name, Tok[1], MAXVARNAME); ++ nv->object = obj; nv->index = index; nv->variable = var; ++ } ++ } ++ break; ++ ++ case r_EXPRESSION: ++ // EXPRESSION name = ++ if (parser->Ntokens < 4) { err = 201; break; } ++ if (!match(Tok[2], "=")) { err = 201; break; } ++ { ++ char exprbuf[MAXLINE+1] = {0}; ++ int pos = 0; int k; ++ for (k = 3; k < parser->Ntokens; k++) ++ { ++ int add = (int)strlen(Tok[k]); ++ if (pos + add + 1 >= MAXLINE) break; ++ if (k > 3) exprbuf[pos++] = ' '; ++ strncpy(&exprbuf[pos], Tok[k], MAXLINE-pos-1); pos += add; ++ } ++ exprbuf[pos] = '\0'; ++ // compile expression with callback ++ g_exprProject = pr; ++ MathExpr* expr = mathexpr_create(exprbuf, expr_getVarIndex); ++ if (expr == NULL) { err = 201; break; } ++ rules->CurrentExpr++; ++ if (rules->CurrentExpr >= pr->parser.ExprCount) { err = 201; break; } ++ NamedExpr *ne = &EXPRESSIONS(pr)[rules->CurrentExpr]; ++ strncpy(ne->name, Tok[1], MAXVARNAME); ++ ne->expr = expr; ++ } ++ break; ++ + case r_RULE: + // Missing the rule label + if (parser->Ntokens != 2) +@@ -298,6 +456,101 @@ + return err; + } + ++static int getNamedVarIndex(Project* pr, const char* name) ++{ ++ int i; ++ for (i = 0; i < pr->parser.VarCount; i++) ++ { ++ if (match(name, NAMED_VARS(pr)[i].name)) return i; ++ } ++ return -1; ++} ++ ++static int getExprIndex(Project* pr, const char* name) ++{ ++ int i; ++ for (i = 0; i < pr->parser.ExprCount; i++) ++ { ++ if (match(name, EXPRESSIONS(pr)[i].name)) return i; ++ } ++ return -1; ++} ++ ++static double getVariableValue(Project* pr, int object, int index, int variable) ++{ ++ Network *net = &pr->network; ++ Hydraul *hyd = &pr->hydraul; ++ int i = index; ++ double x = 0.0; ++ double *Ucf = pr->Ucf; ++ double *NodeDemand = hyd->NodeDemand; ++ double *LinkFlow = hyd->LinkFlow; ++ double *LinkSetting = hyd->LinkSetting; ++ Snode *Node = net->Node; ++ Slink *Link = net->Link; ++ int Njuncs = net->Njuncs; ++ if (variable == r_DEMAND) ++ { ++ if (object == r_SYSTEM) x = hyd->Dsystem * Ucf[DEMAND]; ++ else x = NodeDemand[i] * Ucf[DEMAND]; ++ } ++ else if (variable == r_HEAD || variable == r_GRADE) ++ { ++ x = hyd->NodeHead[i] * Ucf[HEAD]; ++ } ++ else if (variable == r_PRESSURE) ++ { ++ x = (hyd->NodeHead[i] - Node[i].El) * Ucf[PRESSURE]; ++ } ++ else if (variable == r_LEVEL) ++ { ++ x = (hyd->NodeHead[i] - Node[i].El) * Ucf[HEAD]; ++ } ++ else if (variable == r_FLOW) ++ { ++ x = ABS(LinkFlow[i]) * Ucf[FLOW]; ++ } ++ else if (variable == r_SETTING) ++ { ++ if (LinkSetting[i] == MISSING) return 0.0; ++ x = LinkSetting[i]; ++ switch (Link[i].Type) ++ { ++ case PRV: ++ case PSV: ++ case PBV: ++ x = x * Ucf[PRESSURE]; ++ break; ++ case FCV: ++ x = x * Ucf[FLOW]; ++ break; ++ default: break; ++ } ++ } ++ else if (variable == r_FILLTIME) ++ { ++ if (i <= Njuncs) return 0.0; ++ int j = i - Njuncs; ++ if (net->Tank[j].A == 0.0) return 0.0; ++ if (NodeDemand[i] <= TINY) return 0.0; ++ x = (net->Tank[j].Vmax - net->Tank[j].V) / NodeDemand[i]; ++ } ++ else if (variable == r_DRAINTIME) ++ { ++ if (i <= Njuncs) return 0.0; ++ int j = i - Njuncs; ++ if (net->Tank[j].A == 0.0) return 0.0; ++ if (NodeDemand[i] >= -TINY) return 0.0; ++ x = (net->Tank[j].Vmin - net->Tank[j].V) / NodeDemand[i]; ++ } ++ else if (variable == r_TIME || variable == r_CLOCKTIME) ++ { ++ // handled elsewhere ++ x = 0.0; ++ } ++ return x; ++} ++ + void ruleerrmsg(Project *pr) + //----------------------------------------------------------- + // Report a rule parsing error message +@@ -713,6 +966,7 @@ + // Formats are: + // IF/AND/OR + // IF/AND/OR SYSTEM (units) ++// IF/AND/OR + //--------------------------------------------------------------------- + { + Network *net = &pr->network; +@@ -724,11 +978,94 @@ + char **Tok = parser->Tok; + Spremise *p; + +- // Check for correct number of tokens ++ // Handle expression or named variable LHS ++ int exprIdx = getExprIndex(pr, Tok[1]); ++ int namedVarIdx = -1; ++ if (exprIdx < 0) namedVarIdx = getNamedVarIndex(pr, Tok[1]); ++ if (exprIdx >= 0) ++ { ++ // format: ++ if (parser->Ntokens < 4) return 201; ++ m = 2; ++ k = findmatch(Tok[m], Operator); ++ if (k < 0) return 201; ++ switch (k) { case IS: r=EQ; break; case NOT: r=NE; break; case BELOW: r=LT; break; case ABOVE: r=GT; break; default: r=k; } ++ // parse RHS: could be named var, object triple, or number ++ s = 0; x = MISSING; i = 0; j = 0; v = -1; ++ // try named var ++ int rhsNamedIdx = getNamedVarIndex(pr, Tok[3]); ++ if (rhsNamedIdx >= 0) ++ { ++ i = NAMED_VARS(pr)[rhsNamedIdx].object; ++ j = NAMED_VARS(pr)[rhsNamedIdx].index; ++ v = NAMED_VARS(pr)[rhsNamedIdx].variable; ++ } ++ else ++ { ++ int obj = findmatch(Tok[3], Object); ++ if (obj >= 0) ++ { ++ if (obj == r_SYSTEM) ++ { ++ if (parser->Ntokens < 5) return 201; ++ i = r_SYSTEM; j = 0; ++ v = findmatch(Tok[4], Varword); ++ if (v < 0) return 201; ++ } ++ else ++ { ++ if (parser->Ntokens < 6) return 201; ++ int kind; ++ switch (obj) ++ { ++ case r_NODE: case r_JUNC: case r_RESERV: case r_TANK: kind=r_NODE; break; ++ case r_LINK: case r_PIPE: case r_PUMP: case r_VALVE: kind=r_LINK; break; ++ default: return 201; ++ } ++ if (kind == r_NODE) ++ { ++ j = findnode(net, Tok[4]); if (j==0) return 203; i = r_NODE; ++ v = findmatch(Tok[5], Varword); if (v<0) return 201; ++ } ++ else ++ { ++ j = findlink(net, Tok[4]); if (j==0) return 204; i = r_LINK; ++ v = findmatch(Tok[5], Varword); if (v<0) return 201; ++ } ++ } ++ } ++ else ++ { ++ if (!getfloat(Tok[3], &x)) return 202; ++ } ++ } ++ p = (Spremise *)malloc(sizeof(Spremise)); if (!p) return 101; ++ p->object = r_SYSTEM; p->index = 0; p->variable = r_TIME; // placeholder; time path will be bypassed by exprIndex ++ p->exprIndex = exprIdx; p->relop = r; p->logop = logop; ++ p->status = 0; p->value = x; ++ if (v >= 0) { p->rhsIsVar = 1; p->rhsObject = i; p->rhsIndex = j; p->rhsVariable = v; } ++ else { p->rhsIsVar = 0; p->rhsObject = 0; p->rhsIndex = 0; p->rhsVariable = 0; } ++ p->next = NULL; ++ if (rules->LastPremise == NULL) net->Rule[net->Nrules].Premises = p; ++ else rules->LastPremise->next = p; ++ rules->LastPremise = p; ++ return 0; ++ } ++ ++ // Check for correct number of tokens for legacy formats and named variable LHS + if (parser->Ntokens != 5 && parser->Ntokens != 6) return 201; + + // Find network object & id if present +- i = findmatch(Tok[1], Object); ++ i = -1; ++ if (namedVarIdx >= 0) ++ { ++ // LHS is a named variable ++ i = NAMED_VARS(pr)[namedVarIdx].object; ++ j = NAMED_VARS(pr)[namedVarIdx].index; ++ v = NAMED_VARS(pr)[namedVarIdx].variable; ++ m = 2; // operator position ++ } ++ else i = findmatch(Tok[1], Object); + if (i == r_SYSTEM) + { + j = 0; +@@ -737,7 +1074,7 @@ + } + else + { +- v = findmatch(Tok[3], Varword); ++ if (namedVarIdx < 0) v = findmatch(Tok[3], Varword); + if (v < 0) return (201); + switch (i) + { +@@ -757,7 +1094,11 @@ + return 201; + } + i = k; +- if (i == r_NODE) ++ if (namedVarIdx >= 0) ++ { ++ // already have j from named var ++ } ++ else if (i == r_NODE) + { + j = findnode(net, Tok[2]); + if (j == 0) return 203; +@@ -794,8 +1135,7 @@ + } + + // Parse relational operator (r) and check for synonyms +- if (i == r_SYSTEM) m = 3; +- else m = 4; ++ if (namedVarIdx >= 0) m = 2; else if (i == r_SYSTEM) m = 3; else m = 4; + k = findmatch(Tok[m], Operator); + if (k < 0) return 201; + switch (k) +@@ -825,6 +1165,22 @@ + else x = hour(Tok[4], "") * 3600.; + if (x < 0.0) return 202; + } ++ else if (namedVarIdx >= 0) ++ { ++ // RHS could be named var or object triple or number ++ int rhsNamedIdx = getNamedVarIndex(pr, Tok[3]); ++ if (rhsNamedIdx >= 0) ++ { ++ // store RHS variable fields in premise ++ s = 0; x = MISSING; ++ } ++ else if ((k = findmatch(Tok[parser->Ntokens - 1], Value)) > IS_NUMBER) s = k; ++ else ++ { ++ if (!getfloat(Tok[parser->Ntokens - 1], &x)) return 202; ++ if (v == r_FILLTIME || v == r_DRAINTIME) x = x * 3600.0; ++ } ++ } + else if ((k = findmatch(Tok[parser->Ntokens - 1], Value)) > IS_NUMBER) s = k; + else + { +@@ -843,6 +1199,20 @@ + p->logop = logop; + p->status = s; + p->value = x; ++ p->exprIndex = -1; ++ p->rhsIsVar = 0; p->rhsObject = 0; p->rhsIndex = 0; p->rhsVariable = 0; ++ if (namedVarIdx >= 0) ++ { ++ // set RHS variable if applicable ++ int rhsNamedIdx = getNamedVarIndex(pr, Tok[3]); ++ if (rhsNamedIdx >= 0) ++ { ++ p->rhsIsVar = 1; ++ p->rhsObject = NAMED_VARS(pr)[rhsNamedIdx].object; ++ p->rhsIndex = NAMED_VARS(pr)[rhsNamedIdx].index; ++ p->rhsVariable = NAMED_VARS(pr)[rhsNamedIdx].variable; ++ } ++ } + + // Add premise to current rule's premise list + p->next = NULL; +@@ -978,6 +1348,7 @@ + // Checks if a particular premise is true + //---------------------------------------------------------- + { ++ if (p->exprIndex >= 0) return (checkvalue(pr,p)); + if (p->variable == r_TIME || + p->variable == r_CLOCKTIME) return (checktime(pr,p)); + else if (p->status > IS_NUMBER) return (checkstatus(pr,p)); +@@ -1084,7 +1455,7 @@ + Hydraul *hyd = &pr->hydraul; + + int i, j, v; +- double x, // A variable's value ++ double x, // A variable's value (LHS) + tol = 1.e-3; // Equality tolerance + int Njuncs = net->Njuncs; + double *Ucf = pr->Ucf; +@@ -1095,80 +1466,96 @@ + Slink *Link = net->Link; + Stank *Tank = net->Tank; + +- // Find the value being checked +- i = p->index; +- v = p->variable; +- switch (v) +- { +- case r_DEMAND: +- if (p->object == r_SYSTEM) x = hyd->Dsystem * Ucf[DEMAND]; +- else x = NodeDemand[i] * Ucf[DEMAND]; +- break; +- +- case r_HEAD: +- case r_GRADE: +- x = hyd->NodeHead[i] * Ucf[HEAD]; +- break; +- +- case r_PRESSURE: +- x = (hyd->NodeHead[i] - Node[i].El) * Ucf[PRESSURE]; +- break; +- +- case r_LEVEL: +- x = (hyd->NodeHead[i] - Node[i].El) * Ucf[HEAD]; +- break; +- +- case r_FLOW: +- x = ABS(LinkFlow[i]) * Ucf[FLOW]; +- break; +- +- case r_SETTING: +- if (LinkSetting[i] == MISSING) return 0; +- x = LinkSetting[i]; +- switch (Link[i].Type) +- { +- case PRV: +- case PSV: +- case PBV: +- x = x * Ucf[PRESSURE]; ++ // LHS value: expression or direct variable ++ if (p->exprIndex >= 0) ++ { ++ g_exprProject = pr; ++ x = mathexpr_eval(EXPRESSIONS(pr)[p->exprIndex].expr, expr_getVarValue); ++ } ++ else ++ { ++ // Find the value being checked ++ i = p->index; ++ v = p->variable; ++ switch (v) ++ { ++ case r_DEMAND: ++ if (p->object == r_SYSTEM) x = hyd->Dsystem * Ucf[DEMAND]; ++ else x = NodeDemand[i] * Ucf[DEMAND]; + break; +- case FCV: +- x = x * Ucf[FLOW]; ++ ++ case r_HEAD: ++ case r_GRADE: ++ x = hyd->NodeHead[i] * Ucf[HEAD]; + break; +- default: ++ ++ case r_PRESSURE: ++ x = (hyd->NodeHead[i] - Node[i].El) * Ucf[PRESSURE]; ++ break; ++ ++ case r_LEVEL: ++ x = (hyd->NodeHead[i] - Node[i].El) * Ucf[HEAD]; ++ break; ++ ++ case r_FLOW: ++ x = ABS(LinkFlow[i]) * Ucf[FLOW]; + break; ++ ++ case r_SETTING: ++ if (LinkSetting[i] == MISSING) return 0; ++ x = LinkSetting[i]; ++ switch (Link[i].Type) ++ { ++ case PRV: ++ case PSV: ++ case PBV: ++ x = x * Ucf[PRESSURE]; ++ break; ++ case FCV: ++ x = x * Ucf[FLOW]; ++ break; ++ default: ++ break; ++ } ++ break; ++ ++ case r_FILLTIME: ++ if (i <= Njuncs) return 0; ++ j = i - Njuncs; ++ if (Tank[j].A == 0.0) return 0; ++ if (NodeDemand[i] <= TINY) return 0; ++ x = (Tank[j].Vmax - Tank[j].V) / NodeDemand[i]; ++ break; ++ ++ case r_DRAINTIME: ++ if (i <= Njuncs) return 0; ++ j = i - Njuncs; ++ if (Tank[j].A == 0.0) return 0; ++ if (NodeDemand[i] >= -TINY) return 0; ++ x = (Tank[j].Vmin - Tank[j].V) / NodeDemand[i]; ++ break; ++ ++ default: ++ return 0; + } +- break; +- +- case r_FILLTIME: +- if (i <= Njuncs) return 0; +- j = i - Njuncs; +- if (Tank[j].A == 0.0) return 0; +- if (NodeDemand[i] <= TINY) return 0; +- x = (Tank[j].Vmax - Tank[j].V) / NodeDemand[i]; +- break; +- +- case r_DRAINTIME: +- if (i <= Njuncs) return 0; +- j = i - Njuncs; +- if (Tank[j].A == 0.0) return 0; +- if (NodeDemand[i] >= -TINY) return 0; +- x = (Tank[j].Vmin - Tank[j].V) / NodeDemand[i]; +- break; +- +- default: +- return 0; + } +- ++ ++ // RHS value: another variable or literal ++ double rhs = p->value; ++ if (p->rhsIsVar) ++ { ++ rhs = getVariableValue(pr, p->rhsObject, p->rhsIndex, p->rhsVariable); ++ } ++ + // Compare value x against the premise + switch (p->relop) + { +- case EQ: if (ABS(x - p->value) > tol) return 0; break; +- case NE: if (ABS(x - p->value) < tol) return 0; break; +- case LT: if (x > p->value + tol) return 0; break; +- case LE: if (x > p->value - tol) return 0; break; +- case GT: if (x < p->value - tol) return 0; break; +- case GE: if (x < p->value + tol) return 0; break; ++ case EQ: if (ABS(x - rhs) > tol) return 0; break; ++ case NE: if (ABS(x - rhs) < tol) return 0; break; ++ case LT: if (x > rhs + tol) return 0; break; ++ case LE: if (x > rhs - tol) return 0; break; ++ case GT: if (x < rhs - tol) return 0; break; ++ case GE: if (x < rhs + tol) return 0; break; + } + return 1; + } +diff -ruN /workspace/epanet_upstream/src/text.h /workspace/epanet/src/text.h +--- /workspace/epanet_upstream/src/text.h 2025-08-10 02:56:34.831749161 +0000 ++++ /workspace/epanet/src/text.h 2025-08-10 02:47:41.650277423 +0000 +@@ -199,6 +199,8 @@ + #define w_ELSE "ELSE" + #define w_PRIORITY "PRIO" + #define w_DISABLED "DISABLED" ++#define w_VARIABLE "VARIABLE" ++#define w_EXPRESSION "EXPRESSION" + + // ------ Input File Section Names ------------------------ + +diff -ruN /workspace/epanet_upstream/src/types.h /workspace/epanet/src/types.h +--- /workspace/epanet_upstream/src/types.h 2025-08-10 02:56:34.831749161 +0000 ++++ /workspace/epanet/src/types.h 2025-08-10 02:45:48.646010791 +0000 +@@ -520,6 +520,11 @@ + int relop; // relational operator (=, >, <, etc.) + int status; // variable's status (OPEN, CLOSED) + double value; // variable's value ++ int exprIndex; // index into Expressions array; -1 if not an expression LHS ++ int rhsIsVar; // 1 if RHS refers to a variable, 0 if it is a literal ++ int rhsObject; // RHS object type when rhsIsVar = 1 ++ int rhsIndex; // RHS object index when rhsIsVar = 1 ++ int rhsVariable; // RHS variable enum when rhsIsVar = 1 + struct s_Premise *next; // next premise clause + } Spremise; + +@@ -613,7 +618,9 @@ + ErrTok, // Index of error-producing token + Unitsflag, // Unit system flag + Flowflag, // Flow units flag +- Pressflag; // Pressure units flag ++ Pressflag, // Pressure units flag ++ VarCount, // Named variable count in [RULES] ++ ExprCount; // Expression count in [RULES] + + Spattern *PrevPat; // Previous pattern processed + Scurve *PrevCurve; // Previous curve processed +@@ -712,9 +719,37 @@ + Spremise *LastPremise; // Previous premise clause + Saction *LastThenAction; // Previous THEN action + Saction *LastElseAction; // Previous ELSE action +- ++ int CurrentVar; // cursor while parsing named variables ++ int CurrentExpr; // cursor while parsing expressions ++ + } Rules; + ++// Named variables and expressions definitions for rules ++ ++#define MAXVARNAME 32 ++ ++// Forward declaration of MathExpr (from mathexpr.h) ++struct ExprNode; typedef struct ExprNode MathExpr; ++ ++typedef struct { ++ char name[MAXVARNAME+1]; ++ int object; // r_NODE, r_LINK, r_SYSTEM ++ int index; // object index ++ int variable; // Varwords enum ++} NamedVar; ++ ++typedef struct { ++ char name[MAXVARNAME+1]; ++ MathExpr* expr; ++} NamedExpr; ++ ++// Attach storage to Network to simplify lifetime management with project ++// (kept localized within rule subsystem) ++typedef struct RulesStorage { ++ NamedVar* NamedVars; // array length VarCount ++ NamedExpr* Expressions; // array length ExprCount ++} RulesStorage; ++ + // Sparse Matrix Wrapper + typedef struct { + +@@ -907,6 +942,9 @@ + Hydraul hydraul; // Hydraulics solver wrapper + Quality quality; // Water quality solver wrapper + ++ // Storage for named variables and expressions ++ RulesStorage rulesStorage; ++ + double Ucf[MAXVAR]; // Unit conversion factors + + int diff --git a/epanet_upstream b/epanet_upstream new file mode 160000 index 00000000..7ba5bb26 --- /dev/null +++ b/epanet_upstream @@ -0,0 +1 @@ +Subproject commit 7ba5bb269f39f3bf9d9ed41aba451069a85462f2 From 7246b4c2177355b17359e7419814e4c81e93613b Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sun, 10 Aug 2025 03:05:02 +0000 Subject: [PATCH 2/2] Add epanet_port/ folder containing integrated EPANET source with named variables and arithmetic expressions support for review in PR --- epanet_port/AUTHORS | 60 + epanet_port/BUILDING.md | 51 + epanet_port/CMakeLists.txt | 103 + epanet_port/CODE_OF_CONDUCT.md | 76 + epanet_port/LICENSE | 21 + epanet_port/README.md | 34 + epanet_port/ReleaseNotes2_1.md | 104 + epanet_port/ReleaseNotes2_2.md | 300 + epanet_port/ReleaseNotes2_3.md | 139 + epanet_port/appveyor.yml | 85 + epanet_port/cmake/CodeCoverage.cmake | 305 + epanet_port/conanfile.py | 42 + epanet_port/doc/DataFlow.png | Bin 0 -> 48451 bytes epanet_port/doc/DistributionSystem.png | Bin 0 -> 129545 bytes epanet_port/doc/DoxygenLayout.xml | 195 + epanet_port/doc/Example2.png | Bin 0 -> 3544 bytes epanet_port/doc/Network.png | Bin 0 -> 18154 bytes epanet_port/doc/doxyfile | 2978 +++++++++ epanet_port/doc/doxygen-awesome.css | 2681 ++++++++ epanet_port/doc/main.dox | 116 + epanet_port/doc/newfooter.html | 15 + epanet_port/doc/readme.md | 21 + epanet_port/doc/toolkit-examples.dox | 228 + epanet_port/doc/toolkit-files.dox | 164 + epanet_port/doc/toolkit-input.dox | 1221 ++++ epanet_port/doc/toolkit-topics.dox | 413 ++ epanet_port/doc/toolkit-units.dox | 40 + epanet_port/doc/toolkit-usage.dox | 251 + epanet_port/example-networks/Net1.inp | 178 + epanet_port/example-networks/Net2.inp | 309 + epanet_port/example-networks/Net3.inp | 481 ++ epanet_port/include/epanet2.bas | 455 ++ epanet_port/include/epanet2.cs | 728 ++ epanet_port/include/epanet2.def | 143 + epanet_port/include/epanet2.h | 464 ++ epanet_port/include/epanet2.pas | 486 ++ epanet_port/include/epanet2.vb | 445 ++ epanet_port/include/epanet2_2.h | 1960 ++++++ epanet_port/include/epanet2_enums.h | 518 ++ epanet_port/run/CMakeLists.txt | 34 + epanet_port/run/main.c | 93 + epanet_port/src/enumstxt.h | 151 + epanet_port/src/epanet.c | 5938 +++++++++++++++++ epanet_port/src/epanet2.c | 961 +++ epanet_port/src/errors.dat | 79 + epanet_port/src/flowbalance.c | 186 + epanet_port/src/funcs.h | 219 + epanet_port/src/genmmd.c | 1000 +++ epanet_port/src/hash.c | 177 + epanet_port/src/hash.h | 28 + epanet_port/src/hydcoeffs.c | 1303 ++++ epanet_port/src/hydraul.c | 1164 ++++ epanet_port/src/hydsolver.c | 781 +++ epanet_port/src/hydstatus.c | 442 ++ epanet_port/src/inpfile.c | 884 +++ epanet_port/src/input1.c | 672 ++ epanet_port/src/input2.c | 737 ++ epanet_port/src/input3.c | 2265 +++++++ epanet_port/src/leakage.c | 527 ++ epanet_port/src/mathexpr.c | 571 ++ epanet_port/src/mathexpr.h | 18 + epanet_port/src/mempool.c | 146 + epanet_port/src/mempool.h | 24 + epanet_port/src/outfile/CMakeLists.txt | 48 + .../src/outfile/include/epanet_output.h | 82 + .../src/outfile/include/epanet_output_enums.h | 80 + epanet_port/src/outfile/src/epanet_output.c | 945 +++ epanet_port/src/outfile/src/messages.h | 29 + epanet_port/src/output.c | 853 +++ epanet_port/src/project.c | 1691 +++++ epanet_port/src/quality.c | 695 ++ epanet_port/src/qualreact.c | 800 +++ epanet_port/src/qualroute.c | 696 ++ epanet_port/src/report.c | 1559 +++++ epanet_port/src/rules.c | 1887 ++++++ epanet_port/src/smatrix.c | 871 +++ epanet_port/src/text.h | 510 ++ epanet_port/src/types.h | 966 +++ epanet_port/src/util/cstr_helper.c | 59 + epanet_port/src/util/cstr_helper.h | 38 + epanet_port/src/util/errormanager.c | 92 + epanet_port/src/util/errormanager.h | 39 + epanet_port/src/util/filemanager.c | 212 + epanet_port/src/util/filemanager.h | 81 + epanet_port/src/validate.c | 408 ++ epanet_port/tests/CMakeLists.txt | 78 + epanet_port/tests/data/example1.out | Bin 0 -> 16832 bytes epanet_port/tests/data/example_0.inp | 481 ++ epanet_port/tests/data/example_1.inp | 178 + epanet_port/tests/data/net1.inp | 178 + epanet_port/tests/data/net1.out | Bin 0 -> 16832 bytes epanet_port/tests/outfile/CMakeLists.txt | 14 + epanet_port/tests/outfile/data/example1.out | Bin 0 -> 16832 bytes epanet_port/tests/outfile/test_output.cpp | 367 + epanet_port/tests/test_analysis.cpp | 79 + epanet_port/tests/test_control.cpp | 85 + epanet_port/tests/test_curve.cpp | 92 + epanet_port/tests/test_demand.cpp | 154 + epanet_port/tests/test_hydraulics.cpp | 84 + epanet_port/tests/test_leakage.cpp | 93 + epanet_port/tests/test_link.cpp | 236 + epanet_port/tests/test_net_builder.cpp | 414 ++ epanet_port/tests/test_node.cpp | 391 ++ epanet_port/tests/test_overflow.cpp | 121 + epanet_port/tests/test_pattern.cpp | 216 + epanet_port/tests/test_pda.cpp | 92 + epanet_port/tests/test_project.cpp | 280 + epanet_port/tests/test_quality.cpp | 100 + epanet_port/tests/test_reent.cpp | 68 + epanet_port/tests/test_report.cpp | 49 + epanet_port/tests/test_toolkit.cpp | 65 + epanet_port/tests/test_toolkit.hpp | 130 + epanet_port/tests/test_units.cpp | 460 ++ epanet_port/tests/test_valve.cpp | 78 + epanet_port/tests/util/CMakeLists.txt | 28 + epanet_port/tests/util/test_cstrhelper.cpp | 57 + epanet_port/tests/util/test_errormanager.cpp | 81 + epanet_port/tests/util/test_filemanager.cpp | 97 + epanet_port/tools/.gitignore | 27 + epanet_port/tools/BuildAndTest.md | 183 + epanet_port/tools/app-config.sh | 46 + epanet_port/tools/before-test.cmd | 98 + epanet_port/tools/before-test.sh | 103 + epanet_port/tools/gen-config.cmd | 41 + epanet_port/tools/gen-config.sh | 42 + epanet_port/tools/nrtest-epanet/main.py | 151 + .../nrtest-epanet/nrtest_epanet/__init__.py | 208 + .../nrtest_epanet/output_reader.py | 71 + .../tools/nrtest-epanet/report_diff.py | 102 + epanet_port/tools/nrtest-epanet/setup.py | 45 + epanet_port/tools/requirements-appveyor.txt | 19 + epanet_port/tools/requirements.txt | 16 + epanet_port/tools/run-nrtest.cmd | 64 + epanet_port/tools/run-nrtest.sh | 98 + epanet_port/tools/test-config.sh | 43 + epanet_port/tools/update-authors.sh | 36 + epanet_port/win_build/Makefile.bat | 56 + epanet_port/win_build/Makefile2.bat | 42 + 138 files changed, 53188 insertions(+) create mode 100644 epanet_port/AUTHORS create mode 100644 epanet_port/BUILDING.md create mode 100644 epanet_port/CMakeLists.txt create mode 100644 epanet_port/CODE_OF_CONDUCT.md create mode 100644 epanet_port/LICENSE create mode 100755 epanet_port/README.md create mode 100644 epanet_port/ReleaseNotes2_1.md create mode 100644 epanet_port/ReleaseNotes2_2.md create mode 100644 epanet_port/ReleaseNotes2_3.md create mode 100644 epanet_port/appveyor.yml create mode 100644 epanet_port/cmake/CodeCoverage.cmake create mode 100644 epanet_port/conanfile.py create mode 100644 epanet_port/doc/DataFlow.png create mode 100644 epanet_port/doc/DistributionSystem.png create mode 100644 epanet_port/doc/DoxygenLayout.xml create mode 100644 epanet_port/doc/Example2.png create mode 100644 epanet_port/doc/Network.png create mode 100644 epanet_port/doc/doxyfile create mode 100644 epanet_port/doc/doxygen-awesome.css create mode 100755 epanet_port/doc/main.dox create mode 100644 epanet_port/doc/newfooter.html create mode 100644 epanet_port/doc/readme.md create mode 100644 epanet_port/doc/toolkit-examples.dox create mode 100644 epanet_port/doc/toolkit-files.dox create mode 100644 epanet_port/doc/toolkit-input.dox create mode 100644 epanet_port/doc/toolkit-topics.dox create mode 100644 epanet_port/doc/toolkit-units.dox create mode 100644 epanet_port/doc/toolkit-usage.dox create mode 100644 epanet_port/example-networks/Net1.inp create mode 100644 epanet_port/example-networks/Net2.inp create mode 100755 epanet_port/example-networks/Net3.inp create mode 100644 epanet_port/include/epanet2.bas create mode 100644 epanet_port/include/epanet2.cs create mode 100644 epanet_port/include/epanet2.def create mode 100644 epanet_port/include/epanet2.h create mode 100644 epanet_port/include/epanet2.pas create mode 100644 epanet_port/include/epanet2.vb create mode 100644 epanet_port/include/epanet2_2.h create mode 100644 epanet_port/include/epanet2_enums.h create mode 100644 epanet_port/run/CMakeLists.txt create mode 100644 epanet_port/run/main.c create mode 100755 epanet_port/src/enumstxt.h create mode 100644 epanet_port/src/epanet.c create mode 100644 epanet_port/src/epanet2.c create mode 100644 epanet_port/src/errors.dat create mode 100644 epanet_port/src/flowbalance.c create mode 100755 epanet_port/src/funcs.h create mode 100644 epanet_port/src/genmmd.c create mode 100755 epanet_port/src/hash.c create mode 100755 epanet_port/src/hash.h create mode 100644 epanet_port/src/hydcoeffs.c create mode 100755 epanet_port/src/hydraul.c create mode 100644 epanet_port/src/hydsolver.c create mode 100644 epanet_port/src/hydstatus.c create mode 100644 epanet_port/src/inpfile.c create mode 100644 epanet_port/src/input1.c create mode 100644 epanet_port/src/input2.c create mode 100644 epanet_port/src/input3.c create mode 100644 epanet_port/src/leakage.c create mode 100644 epanet_port/src/mathexpr.c create mode 100644 epanet_port/src/mathexpr.h create mode 100755 epanet_port/src/mempool.c create mode 100755 epanet_port/src/mempool.h create mode 100644 epanet_port/src/outfile/CMakeLists.txt create mode 100644 epanet_port/src/outfile/include/epanet_output.h create mode 100644 epanet_port/src/outfile/include/epanet_output_enums.h create mode 100644 epanet_port/src/outfile/src/epanet_output.c create mode 100644 epanet_port/src/outfile/src/messages.h create mode 100644 epanet_port/src/output.c create mode 100644 epanet_port/src/project.c create mode 100644 epanet_port/src/quality.c create mode 100644 epanet_port/src/qualreact.c create mode 100644 epanet_port/src/qualroute.c create mode 100644 epanet_port/src/report.c create mode 100644 epanet_port/src/rules.c create mode 100755 epanet_port/src/smatrix.c create mode 100755 epanet_port/src/text.h create mode 100755 epanet_port/src/types.h create mode 100644 epanet_port/src/util/cstr_helper.c create mode 100644 epanet_port/src/util/cstr_helper.h create mode 100644 epanet_port/src/util/errormanager.c create mode 100644 epanet_port/src/util/errormanager.h create mode 100644 epanet_port/src/util/filemanager.c create mode 100644 epanet_port/src/util/filemanager.h create mode 100644 epanet_port/src/validate.c create mode 100644 epanet_port/tests/CMakeLists.txt create mode 100644 epanet_port/tests/data/example1.out create mode 100644 epanet_port/tests/data/example_0.inp create mode 100644 epanet_port/tests/data/example_1.inp create mode 100644 epanet_port/tests/data/net1.inp create mode 100644 epanet_port/tests/data/net1.out create mode 100644 epanet_port/tests/outfile/CMakeLists.txt create mode 100644 epanet_port/tests/outfile/data/example1.out create mode 100644 epanet_port/tests/outfile/test_output.cpp create mode 100644 epanet_port/tests/test_analysis.cpp create mode 100644 epanet_port/tests/test_control.cpp create mode 100644 epanet_port/tests/test_curve.cpp create mode 100644 epanet_port/tests/test_demand.cpp create mode 100644 epanet_port/tests/test_hydraulics.cpp create mode 100644 epanet_port/tests/test_leakage.cpp create mode 100644 epanet_port/tests/test_link.cpp create mode 100644 epanet_port/tests/test_net_builder.cpp create mode 100644 epanet_port/tests/test_node.cpp create mode 100644 epanet_port/tests/test_overflow.cpp create mode 100644 epanet_port/tests/test_pattern.cpp create mode 100644 epanet_port/tests/test_pda.cpp create mode 100644 epanet_port/tests/test_project.cpp create mode 100644 epanet_port/tests/test_quality.cpp create mode 100644 epanet_port/tests/test_reent.cpp create mode 100644 epanet_port/tests/test_report.cpp create mode 100644 epanet_port/tests/test_toolkit.cpp create mode 100644 epanet_port/tests/test_toolkit.hpp create mode 100644 epanet_port/tests/test_units.cpp create mode 100644 epanet_port/tests/test_valve.cpp create mode 100644 epanet_port/tests/util/CMakeLists.txt create mode 100644 epanet_port/tests/util/test_cstrhelper.cpp create mode 100644 epanet_port/tests/util/test_errormanager.cpp create mode 100644 epanet_port/tests/util/test_filemanager.cpp create mode 100644 epanet_port/tools/.gitignore create mode 100644 epanet_port/tools/BuildAndTest.md create mode 100755 epanet_port/tools/app-config.sh create mode 100644 epanet_port/tools/before-test.cmd create mode 100755 epanet_port/tools/before-test.sh create mode 100644 epanet_port/tools/gen-config.cmd create mode 100755 epanet_port/tools/gen-config.sh create mode 100644 epanet_port/tools/nrtest-epanet/main.py create mode 100644 epanet_port/tools/nrtest-epanet/nrtest_epanet/__init__.py create mode 100644 epanet_port/tools/nrtest-epanet/nrtest_epanet/output_reader.py create mode 100644 epanet_port/tools/nrtest-epanet/report_diff.py create mode 100644 epanet_port/tools/nrtest-epanet/setup.py create mode 100644 epanet_port/tools/requirements-appveyor.txt create mode 100644 epanet_port/tools/requirements.txt create mode 100644 epanet_port/tools/run-nrtest.cmd create mode 100755 epanet_port/tools/run-nrtest.sh create mode 100644 epanet_port/tools/test-config.sh create mode 100755 epanet_port/tools/update-authors.sh create mode 100644 epanet_port/win_build/Makefile.bat create mode 100644 epanet_port/win_build/Makefile2.bat diff --git a/epanet_port/AUTHORS b/epanet_port/AUTHORS new file mode 100644 index 00000000..52c882f4 --- /dev/null +++ b/epanet_port/AUTHORS @@ -0,0 +1,60 @@ +# Authors ordered alphabetically. + +Authors with Contributions in the Public Domain: +Lewis Rossman +Michael Tryby + +Version 2.0 +Lewis Rossman + +Authors with Contributions Subject to Copyright (see LICENSE): +Except where noted. + +Version 2.1 +Jinduan Chen +Maurizio Cingi +Demetrios Eliades +Will Furnass +Milad Ghiami +Sam Hatchett +Mike Kane +Marios Kyriakou +Steffen Macke +Angela Marchi +Bryant McDonnell +Lew Rossman +Elad Salomons +Feng Shang +Yunier Soad +Tom Taxon +Michael Tryby (Contributions in the Public Domain) +James Uber +Hyoungmin Woo + +Version 2.2 +Demetrios Eliades +Sam Hatchett +Abel Heinsbroek +Marios Kyriakou +Lewis Rossman +Elad Salomons +Markus Sunela +Michael Tryby (Contributions in the Public Domain) + +Version 2.3 +Luke Butler +Demetrios Eliades +Sam Hatchett +Abel Heinsbroek +Robert Janke +Marios Kyriakou +Corey McNeish +0tkl +Lewis Rossman +Elad Salomons +Alex Sinske +Sahand Tashak +Yu Chun Tsao +James Uber +Oscar Vegas Niño +Dennis Zanutto \ No newline at end of file diff --git a/epanet_port/BUILDING.md b/epanet_port/BUILDING.md new file mode 100644 index 00000000..a1db2b64 --- /dev/null +++ b/epanet_port/BUILDING.md @@ -0,0 +1,51 @@ +# Building + +The most straightforward way to build the EPANET files is by using `CMake` ([https://cmake.org/](https://cmake.org/)). `CMake` is a cross-platform build tool that generates platform native build systems that can be used with your compiler of choice. It uses a generator concept to represent different build tooling. `CMake` automatically detects the platform it is running on and generates the appropriate makefiles for the platform default compiler. Different generators can also be specified. + +The project's `CMake` file (`CMakeLists.txt`) is located in its root directory and supports builds for Linux, Mac OS and Windows. To build the EPANET library and its command line executable using `CMake`, first open a console window and navigate to the project's root directory. Then enter the following commands: + +``` +mkdir build +cd build +cmake .. +cmake --build . --config Release +``` + +Note: under Windows, the third command should be `cmake .. -A Win32` for a 32-bit build or `cmake .. -A x64` for a 64-bit build when Microsoft Visual Studio is the default compiler. + +For Windows the resulting EPANET toolkit library `epanet2.dll` and its command line executable `runepanet.exe` are placed in the `build\bin\Release` directory. The `build\lib\Release` directory will contain an `epanet2.lib` file which is needed to build C/C++ applications using the Windows version of the library. For Linux and Mac OS the EPANET toolkit shared library `libepanet2.so` appears in the `build/lib` directory and the command line executable `runepanet` is in the `build/bin` directory. + +In addition, two Windows one-click-build scripts are included in the `win_build` directory: + +1. `Makefile2.bat`: this script uses the `CMake` file and requires the build tools for Visual Studio available from [https://visualstudio.microsoft.com/downloads/](https://visualstudio.microsoft.com/downloads/). The Community version will work just fine. This script was tested with Visual Studio 2017 and 2019. +2. `Makefile.bat`: this is the legacy build script compatible with Visual Studio 2010 which conforms with the C89 Standard which was the standard EPANET supported from earlier versions. This script requires the installation of Microsoft Windows SDK 7.1 ([https://www.microsoft.com/en-us/download/details.aspx?id=8279](https://www.microsoft.com/en-us/download/details.aspx?id=8279)) and will probably not run correctly on later versions of the SDK. `CMake` is not used in this script. + +These two scripts build EPANET binaries for both the 32 and 64 bit Windows platforms, placing them in the `win_build\32bit` and `win_build\64bit` directories, respectively. + +A tutorial on [building OWA EPANET from source on Windows](tools/BuildAndTest.md), including running unit tests and performing regression testing, is also avaiable. + +## Alternative build with Conan +Conan is an increasingly popular C/C++ package management suite. To build EPANET using Conan, use the following commands as a starting point: + +``` +conan build . -s build_type=Release +conan export-pkg . -s build_type=Release +``` + + +# Testing + +Unit tests have been written using the Boost Unit Testing Framework and other Boost libraries. The tests are compiled into individual executables that automatically perform checks on the EPANET toolkit and output libraries. + +The CMake build system has been configured with a build option for building tests. When enabled (`-DBUILD_TESTS=ON`) the test executables are built and registered with the CTest test runner, the default value for the test build option is off. The location of Boost can also be defined with `-DBOOST_ROOT="%BOOST_ROOT%"` if required. + +To build the test executables for the EPANET library, first open a console window and navigate to the project's root directory. Then enter the following commands: + +``` +mkdir build +cd build +cmake -DBUILD_TESTS=ON .. +cmake --build . --config Release +cd tests +ctest -C Release --output-on-failure +``` diff --git a/epanet_port/CMakeLists.txt b/epanet_port/CMakeLists.txt new file mode 100644 index 00000000..9b7711ed --- /dev/null +++ b/epanet_port/CMakeLists.txt @@ -0,0 +1,103 @@ +# CMakeLists.txt - CMake configuration file for EPANET 2.3 +# +# CMake is a cross-platform build tool. CMake generates platform native +# build systems that can be used with your compiler of choice. CMake uses a +# generator concept to represent different build tooling. CMake automatically +# detects the platform it is running on and generates the appropriate makefiles +# for the platform default compiler. Different generators can also be specified. +# +# Note: CMake requires that your platform build system and compiler are +# properly installed. Build using Visual Studio requires msbuild shell. +# +# Build Options: +# BUILD_TESTS = ON/OFF +# BUILD_PY_LIB = ON/OFF +# +# Generic Invocation: +# cmake -E make_directory buildprod +# cd build +# cmake -G GENERATOR -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON .. +# cmake --build . --target SOME_TARGET --config Release +# +# More information: +# cmake --help +# +# CMake is available at https://cmake.org/download/ +# + +cmake_minimum_required (VERSION 3.8.0) + +project(EPANET) + +# Append local dir to module search path +list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) + +option(BUILD_SHARED_LIBS "Build using shared libraries" ON) +option(BUILD_TESTS "Build tests (requires Boost)" OFF) +#option(BUILD_PY_LIB "Build library for Python wrapper" OFF) +option(BUILD_COVERAGE "Build library for coverage" OFF) + +#IF (NOT BUILD_PY_LIB) + add_subdirectory(run) +#ENDIF (NOT BUILD_PY_LIB) +add_subdirectory(src/outfile) + +IF (BUILD_TESTS) + #Prep ourselves for compiling with boost + IF(WIN32) + set(Boost_USE_STATIC_LIBS ON) + ELSE(TRUE) + set(Boost_USE_STATIC_LIBS OFF) + add_definitions(-DBOOST_ALL_DYN_LINK) + ENDIF(WIN32) + + find_package(Boost COMPONENTS unit_test_framework system thread filesystem) + include_directories (${Boost_INCLUDE_DIRS}) + + enable_testing() + add_subdirectory(tests) + add_subdirectory(tests/outfile) + add_subdirectory(tests/util) +ENDIF (BUILD_TESTS) + +# Sets the output directory for executables and libraries. +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) + +# Sets the position independent code property for all targets +SET(CMAKE_POSITION_INDEPENDENT_CODE ON) + +IF (APPLE) + set(INSTALL_NAME_DIR @executable_path/../lib) + set(CMAKE_MACOSX_RPATH 1) +ENDIF (APPLE) + +IF (MSVC) + set(CMAKE_C_FLAGS_RELEASE "/GL") + add_definitions(-D_CRT_SECURE_NO_DEPRECATE -MT) +ENDIF (MSVC) + +# configure file groups +file(GLOB EPANET_SOURCES RELATIVE ${PROJECT_SOURCE_DIR} src/*.c src/util/*.c) +file(GLOB EPANET_LIB_ALL RELATIVE ${PROJECT_SOURCE_DIR} src/* src/util/*) +source_group("Library" FILES ${EPANET_LIB_ALL}) + +# the shared library +IF(MSVC AND "${CMAKE_VS_PLATFORM_NAME}" MATCHES "(Win32)") + message(" ************************************") + message(" Configuring with epanet2.def mapping") + message(" ************************************") + add_library(epanet2 SHARED ${EPANET_LIB_ALL} ${PROJECT_SOURCE_DIR}/include/epanet2.def) + set_source_files_properties(${PROJECT_SOURCE_DIR}/include/epanet2.def PROPERTIES_HEADER_FILE_ONLY TRUE) +ELSE(TRUE) + add_library(epanet2 ${EPANET_LIB_ALL}) +ENDIF(MSVC AND "${CMAKE_VS_PLATFORM_NAME}" MATCHES "(Win32)") + +target_include_directories(epanet2 PUBLIC ${PROJECT_SOURCE_DIR}/include) + +install(TARGETS epanet2 DESTINATION .) +install(TARGETS runepanet DESTINATION .) +install(FILES ./include/epanet2.h DESTINATION .) +install(FILES ./include/epanet2_2.h DESTINATION .) +install(FILES ./include/epanet2_enums.h DESTINATION .) diff --git a/epanet_port/CODE_OF_CONDUCT.md b/epanet_port/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..89602714 --- /dev/null +++ b/epanet_port/CODE_OF_CONDUCT.md @@ -0,0 +1,76 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting any member of the [project team](https://github.com/OpenWaterAnalytics/EPANET/wiki/Project-Team). All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq diff --git a/epanet_port/LICENSE b/epanet_port/LICENSE new file mode 100644 index 00000000..bf633d47 --- /dev/null +++ b/epanet_port/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 (See AUTHORS) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice, list of authors, and this permission notice shall +be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/epanet_port/README.md b/epanet_port/README.md new file mode 100755 index 00000000..e868b053 --- /dev/null +++ b/epanet_port/README.md @@ -0,0 +1,34 @@ +OWA-EPANET +====== + +## Build Status +[![Build status](https://ci.appveyor.com/api/projects/status/19wpg4g2cmj3oihl?svg=true)](https://ci.appveyor.com/project/OpenWaterAnalytics/epanet) +[![linux](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/ccpp.yml/badge.svg)](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/ccpp.yml) +[![macos](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/macos.yml/badge.svg)](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/macos.yml) +[![epanet2-win32](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/win32.yml/badge.svg)](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/win32.yml) +[![epanet2-win64](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/win64.yml/badge.svg)](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/win64.yml) + +## DESCRIPTION + +**EPANET** is an industry-standard program for modeling the hydraulic and water quality behavior of water distribution system pipe networks. The EPANET Programmer's Toolkit is a library of functions (or API) written in C that allow programmers to customize the use of EPANET's solution engine for their own applications. Both EPANET and its toolkit were originally developed by the U.S. Environmental Protection Agency (USEPA). If you are interested in using/extending the EPANET engine and its API for academic, personal, or commercial use, then you've come to the right place. [Read more about EPANET on Wikipedia](https://en.wikipedia.org/wiki/EPANET). (Please note that this project covers only the EPANET hydraulic and water quality solver engine, not the graphical user interface.) + +## INSTALLATION + +Instructions for building the OWA-EPANET Toolkit's function library as well as its command line executable from the source files in this repository can be found [here](https://github.com/OpenWaterAnalytics/EPANET/blob/master/BUILDING.md). + +## USAGE + +See the [full documentation](http://wateranalytics.org/EPANET/) of the OWA-EPANET API, along with examples of how to use the toolkit for water distribution system analysis. Additional information may be found on this project's [Wiki](https://github.com/OpenWaterAnalytics/EPANET/wiki). + +## CONTRIBUTING + +Everyone is welcome to participate in this project. Whether you are helping others to resolve issues, reporting a new issue that hasn't yet been discovered, suggesting a new feature that would benefit your workflow, or writing code (or tests, or scripts, or ...), we value your time and effort. The path for contribution starts with the [Issues](https://github.com/OpenWaterAnalytics/EPANET/issues). Look around at open Issues and the conversation around them, get engaged by commenting on an outstanding Issue or creating a new one. If you want to contribute code, it helps to give the community time to discuss the ideas you present and offer constructive feedback. Once you get a clear path forward, Fork this repo to your own account. Make your commits on your dev branch (or one based on dev). Once you are finished, you can open a Pull Request to test the code and discuss merging your changes back into the community repository. A [step-by-step tutorial](http://www.slideshare.net/demetriseliades/contributing-to-epanet-using-github-in-windows) on how to contribute to OWA-EPANET using GitHub is also available. + +## CREDITS + +The **Open Water Analytics** (OWA) Community is an international group of EPANET developers and users, whose objective is to provide group interaction and coordinated development of the EPANET codebase, to ensure that important new user interface and algorithmic features are identified and that these features progress efficiently from prototype code to production implementations. OWA is actively maintaining OWA-EPANET, a community-supported branch of USEPA EPANET, since May 2014. The full list of individuals contributing to this project can be found [here](https://github.com/OpenWaterAnalytics/EPANET/blob/dev/AUTHORS). + +## DISCLAIMER +Although OWA is not formally affiliated with nor endorsed by USEPA, this project has been a collaborative effort between the two that builds upon and extends the USEPA’s legacy EPANET 2.0 code base. For the last "official" release of EPANET please go to the [USEPA website](https://www.epa.gov/water-research/epanet). + +For more general community discussion of the project, please go to [OWA Discussions](https://github.com/orgs/OpenWaterAnalytics/discussions). diff --git a/epanet_port/ReleaseNotes2_1.md b/epanet_port/ReleaseNotes2_1.md new file mode 100644 index 00000000..2ffd6fea --- /dev/null +++ b/epanet_port/ReleaseNotes2_1.md @@ -0,0 +1,104 @@ +Release Notes for EPANET 2.1 {#release_2_1} +============================ + +The last update to the EPANET engine was "Build 2.00.12" in February of 2008. Since that time, a community effort to update and extend the open-source code has emerged. This group has made a number of bug-fixes and API additions that help to improve the EPANET engine for everyone. Version 2.1 was released in July 2016, after 8.5 years. + +Contributors to this version (listed in order of first contribution): + +- Lew Rossman +- Michael Tryby +- Feng Shang +- James Uber +- Tom Taxon +- Sam Hatchett +- Hyoungmin Woo +- Jinduan Chen +- Yunier Soad +- Mike Kane +- Demetrios Eliades +- Will Furnass +- Steffen Macke +- Mariosmsk +- Elad Salomons +- Maurizio Cingi +- Bryant McDonnell + +##API Additions (new functions): +- `ENgetaveragepatternvalue` +- `ENgetstatistic` +- `ENgetcoord / ENsetcoord` +- `ENgetpumptype` +- `ENgetqualinfo` + +###Demands +- `ENgetnumdemands` +- `ENgetbasedemand / ENsetbasedemand` +- `ENgetdemandpattern` + +###Curves +- `ENgetcurve` +- `ENgetcurveid` +- `ENgetcurvelen` +- `ENgetcurvevalue` +- `ENsetcurvevalue` +- `ENsetcurve` +- `ENaddcurve` +- `ENgetheadcurveindex` +- `ENgetcurveindex` + + +##API Extensions (additional parameters) +###node value types: +- `EN_TANKVOLUME` +- `EN_MAXVOLUME` + +###link value types: +- `EN_LINKQUAL` +- `EN_LINKPATTERN` + +###time parameters: +- `EN_STARTTIME` +- `EN_HTIME` +- `EN_QTIME` +- `EN_HALTFLAG` +- `EN_NEXTEVENT` + +###(new) statistic values: +- `EN_ITERATIONS` +- `EN_RELATIVEERROR` + +###pump types +- `EN_CONST_HP` +- `EN_POWER_FUNC` +- `EN_CUSTOM` + +##Notable Performance Improvements, Bug Fixes, Usage Features, and other notes +- API float type is a compile-time option with the `EN_API_FLOAT_TYPE` definition. Use either `float` or `double` - default if left undefined is `float` to maintain compatibility with 2.0.x +- updated hash table algorithm +- fixed memory leak when saving output +- enables interleaved hydraulic and water quality analysis steps: + +``` + ENopenH(); + ENopenQ(); + ENinitH(0); + ENinitQ(EN_NOSAVE); + do { + ENrunH(&t); + ENrunQ(&qt); + // collect results + ENnextH(&tstep); + ENnextQ(&qstep); + } while (tstep > 0); + ENcloseQ(); + ENcloseH(); +``` + +- engine code and command-line executable are now in separate implementation files +- parameter `#define` directives are now enumerated values +- main header now contains doxygen-compatible comment blocks for auto-generated documentation + + + + + diff --git a/epanet_port/ReleaseNotes2_2.md b/epanet_port/ReleaseNotes2_2.md new file mode 100644 index 00000000..b8655c16 --- /dev/null +++ b/epanet_port/ReleaseNotes2_2.md @@ -0,0 +1,300 @@ +Release Notes for EPANET 2.2 +============================ +This document describes the changes and updates that have been made in version 2.2 of EPANET. + +## Thread-Safe API Functions + +A duplicate set of API functions has been provided that allow multiple EPANET projects to be analyzed concurrently in a thread-safe manner. These functions maintain the same name as the original but use a `EN_` prefix instead of `EN`. In addition, the first argument to each of these functions is a handle that identifies the particular project being analyzed. For example, instead of writing: + +`ENgetnodevalue(nodeIndex, EN_ELEVATION, &elev)` + +one would use: + +`EN_getnodevalue(ph, nodeIndex, EN_ELEVATION, &elev)` + +where `ph` is the handle assigned to the project. + +Two new functions have been added to the API to manage the creation and deletion of project handles. `EN_createproject` creates a new project along with its handle, while `EN_deleteproject` deletes a project. An example of using the thread-safe version of the API is shown below: +``` +#include "epanet2_2.h" +int runEpanet(char *finp, char *frpt) +{ + EN_Project ph = 0; + int err; + err = EN_createproject(&ph); + if (err) return err; + err = EN_open(ph, finp, frpt, ""); + if (!err) err = EN_solveH(ph); + if (!err) err = EN_report(ph); + EN_close(ph); + EN_deleteproject(ph); + return err; +} +``` +Prototypes of the thread-safe functions appear in the `epanet2_2.h` header file while `epanet2.h` contains prototypes of the legacy-style API functions. The enumerated constants used with both types of functions have been moved to `epanet2_enums.h`. + +## Network Building By Code + +API users now have the ability to build a complete EPANET network model using just function calls, without the need to open an EPANET-formatted input file. All types of network objects can be created and have their properties set using these calls, including both simple and rule-based controls. Here is an example of building a simple 2-node, 1-pipe network just through code: +``` +#include "epanet2_2.h" +int buildandrunEpanet(char *rptfile) +{ + // Create and initialize a project using gpm for flow + // units and the Hazen-Williams formula for head loss + EN_Project ph = 0; + int err, index; + err = EN_createproject(&ph); + if (err) return err; + EN_init(ph, rptfile, "", EN_GPM, EN_HW); + + //Add a junction node with 710 ft elevation and 500 gpm demand + EN_addnode(ph, "J1", EN_JUNCTION, &index); + EN_setjuncdata(ph, index, 710, 500, ""); + + // Add a reservoir node at 800 ft elevation + EN_addnode(ph, "R1", EN_RESERVOIR, &index); + EN_setnodevalue(ph, index, EN_ELEVATION, 800); + + // Add a 5280 ft long, 14-inch pipe with C-factor of 100 + // from the reservoir to the demand node + EN_addlink(ph, "P1", EN_PIPE, "R1", "J1", &index); + EN_setpipedata(ph, index, 5280, 14, 100, 0); + + // Solve for hydraulics and report nodal results + EN_setreport(ph, "NODES ALL"); + err = EN_solveH(ph); + if (!err) err = EN_report(ph); + + // Close and delete the project + EN_close(ph); + EN_deleteproject(ph); + return err; +} +``` +Instead of using `EN_open` to load data from a file, `EN_init` is used to initialize a project with the names of its report and binary files, and its flow units and head loss formula. The legacy-style API has a complementary set of functions for building networks from code. + +## Additional Convergence Parameters + +Two new analysis options have been added to provide more rigorous convergence criteria for EPANET's hydraulic solver. In the API they are named `EN_HEADERROR` and `EN_FLOWCHANGE` while in the `[OPTIONS]` section of an EPANET input file they are named `HEADERROR` and `FLOWCHANGE`, respectively. + +`EN_HEADERROR` is the maximum head loss error that any network link can have for hydraulic convergence to occur. A link's head loss error is the difference between the head loss found as a function of computed flow in the link (such as by the Hazen-Williams equation for a pipe) and the difference in computed heads for the link's end nodes. The units of this parameter are feet (or meters for SI units). The default value of 0 indicates that no head error limit applies. + +`EN_FLOWCHANGE` is the largest change in flow that any network element (link, emitter, or pressure-dependent demand) can have for hydraulic convergence to occur. It is specified in whatever flow units the project is using. The default value of 0 indicates that no flow change limit applies. + +These new parameters augment the current `EN_ACCURACY` option which always remains in effect. In addition, both `EN_HEADERROR` and `EN_FLOWCHANGE` can be used as parameters in the `EN_getstatistic` (or `ENgetstatistic`) function to retrieve their computed values (even when their option values are 0) after a hydraulic solution has been completed. + +## More Efficient Node Re-ordering + +EPANET's hydraulic solver requires solving a system of linear equations over a series of iterations until a set of convergence criteria are met. The coefficient matrix of this linear system is square and symmetric. It has a row for each network node and a non-zero off-diagonal coefficient for each link. The numerical effort needed to solve the linear system can be reduced if the nodes are re-ordered so that the non-zero coefficients cluster more tightly around the diagonal. + +EPANET's original node re-ordering scheme has been replaced by the more efficient **Multiple Minimum Degree (MMD)** algorithm. On a series of eight networks ranging in size from 7,700 to 100,000 nodes MMD reduced the solution time for a single period (steady state) hydraulic analysis, where most of the work is for node-reordering, by an average of 55%. Since MMD did not reduce the time needed to solve the linear equations generated at each iteration of the hydraulic solver longer extended period simulations will not exhibit a similar speedup. + +## Improved Handling of Near-Zero Flows + +EPANET's hydraulic solver can generate an ill-conditioned solution matrix when pipe flows approach zero unless some adjustment is made (i.e., as a pipe's flow approaches 0 its head loss gradient also approaches 0 causing its reciprocal, which is used to form the solution matrix's coefficients, to approach infinity). EPANET 2.0 used an arbitrary cutoff on head loss gradient to prevent it from becoming 0. This approach doesn't allow a pipe to follow any head loss v. flow relation in the region below the cutoff and can produce incorrect solutions for some networks (see [Estrada et al., 2009](https://ascelibrary.org/doi/full/10.1061/%28ASCE%29IR.1943-4774.0000100)). + +The hydraulic solver has been modified to use a linear head loss v. flow relation for flows approaching zero. For the Darcy-Weisbach equation, the linear Hagen-Poiseuille formula is used for laminar flow where the Reynolds Number is <= 2000. For the Hazen-Williams and Chezy-Manning equations, if the head loss gradient at a given flow is below the EPANET 2.0 gradient cutoff then a linear head loss relation is used whose slope equals the cutoff. EPANET 2.2 is now able to correctly solve the examples presented in Estrada et al. (2009) as well as those in [Gorev et al., (2013)](https://ascelibrary.org/doi/10.1061/%28ASCE%29HY.1943-7900.0000694) and [Elhay and Simpson (2011)](https://ascelibrary.org/doi/10.1061/%28ASCE%29HY.1943-7900.0000411). + +## Pressure Dependent Demands + +EPANET has always employed a Demand Driven Analysis (**DDA**) when modeling network hydraulics. Under this approach nodal demands at a given point in time are fixed values that must be delivered no matter what nodal heads and link flows are produced by a hydraulic solution. This can result in situations where required demands are satisfied at nodes that have negative pressures - a physical impossibility. + +To address this issue EPANET has been extended to use a Pressure Driven Analysis (**PDA**) if so desired. Under **PDA**, the demand D delivered at a node depends on the node's available pressure P according to: + +D = Dfull * [ (P - Pmin) / (Preq - Pmin) ]^Pexp + +where Dfull is the full demand required, Pmin is the pressure below which demand is zero, Preq is the pressure required to deliver the full required demand and Pexp is an exponent. When P < Pmin demand is 0 and when P > Preq demand equals Dfull. + +To implement pressure driven analysis four new parameters have been added to the [OPTIONS] section of the EPANET input file: + +| Parameter | Description | Default | +|-----------|--------------|---------| +| `DEMAND MODEL` | either DDA or PDA | DDA | +| `MINIMUM PRESSURE` | value for Pmin | 0 +| `REQUIRED PRESSURE` | value for Preq | 0.1 +| `PRESSURE EXPONENT` | value for Pexp | 0.5 | + +These parameters can also be set and retrieved in code using the following API functions +``` +int ENsetdemandmodel(int modelType, double pMin, double pReq, double pExp); +int ENgetdemandmodel(int *modelType, double *pMin, double *pReq, double *pExp); +``` +for the legacy API and +``` +int EN_setdemandmodel(EN_Project ph, int modelType, double pMin, double pReq, double pExp); +int EN_getdemandmodel(EN_Project ph, int *modelType, double *pMin, double *pReq, double *pExp); +``` +for the thread-safe API. Some additional points regarding the new **PDA** option are: + - If no DEMAND MODEL and its parameters are specified then the analysis defaults to being demand driven (**DDA**). + - This implementation of **PDA** assumes that the same parameters apply to all nodes in the network. Extending the framework to allow different parameters for specific nodes is left as a future feature to implement. + - Preq must be at least 0.1 (either psi or m) higher than Pmin to avoid numerical issues caused by having too steep a demand curve. + - Using `EN_DEFICIENTNODES` as the argument to `EN_getstatistic` (or `ENgetstatistic`) will retrieve the number of nodes that are pressure deficient. These are nodes with positive required demand whose pressure is below 0 under **DDA** or below Preq under **PDA**. + - Using `EN_DEMANDREDUCTION` as an argument will retrieve the total percent reduction of demands at pressure deficient nodes under **PDA**. + - Using `EN_DEMANDDEFICIT` with the `EN_getnodevalue` (or `ENgetnodevalue`) function will return the amount of demand reduction produced by a **PDA** at any particular node. + +## Tank Overflows +EPANET has always prevented tanks from overflowing by closing any links that supply inflow to a full tank. A new option `EN_CANOVERFLOW`, has been added to the list of Tank node properties. When set to 1 it will allow its tank to overflow when it becomes full. The spillage rate is returned in the tank's EN_DEMAND property. The default value for `EN_CANOVERFLOW` is 0 indicating that the tank cannot overflow. + +For the input file, a new field has been appended to the data supplied for each tank in the `[TANKS]` section of the file. A value of **YES** indicates that the tank can over flow while **NO** (the default) indicates that it cannot. For the volume curve field that precedes it, an asterisk (*) can be used if the tank does not utilize a volume curve. + +## Improved Water Quality Mass Balance + +As described by [Davis et al. (2018)](https://www.drink-water-eng-sci.net/11/25/2018/dwes-11-25-2018.pdf) EPANET's water quality simulations can result in some significant mass balance errors when modeling short term mass injections (errors are much smaller for continuous source flows). The entire water quality engine has been re-written to eliminate these errors. It still uses the Lagrangian Time Driven transport method but now analyzes each network node in topologically sorted order rather than in arbitrary order. + +A Mass Balance Report now appears the end of a simulation's Status Report that lists the various components (inflow, outflow, reaction) that comprise the network's overall mass balance. In addition `EN_MASSBALANCE` can be used as a parameter in the `EN_getstatistic` (or `ENgetstatistic`) function to retrieve the Mass Balance Ratio (Total Outflow Mass / Total Inflow Mass) at any point during a water quality simulation. + +With this change EPANET 2.2 now produces perfect mass balances when tested against the networks used in Davis et al. (2018). + +## New API functions +|Function|Description| +|--------|-----------| +|`EN_createproject` | Creates a new EPANET project | +|`EN_deleteproject` | Deletes an EPANET project | +|`EN_init`|Initializes an EPANET project| +|`EN_setflowunits`|Sets the project's flow units| +|`EN_addnode`|Adds a new node to a project| +|`EN_addlink`|Adds a new link to a project| +|`EN_addcontrol`|Adds a new simple control to a project| +|`EN_addrule`|Adds a new control rule to a project| +|`EN_deletenode`|Deletes a node from the project| +|`EN_deletelink`|Deletes a link from the project| +|`EN_deletepattern`|Deletes a time pattern from the project| +|`EN_deletecurve`|Deletes a data curve from the project| +|`EN_deletecontrol`|Deletes a simple control from the project| +|`EN_deleterule`|Deletes a rule-based control from the project| +|`EN_setnodeid`|Changes the ID name for a node| +|`EN_setjuncdata` |Sets values for a junction's parameters | +|`EN_settankdata` |Sets values for a tank's parameters| +|`EN_setlinkid`|Changes the ID name for a link| +|`EN_setlinknodes`|Sets a link's start- and end-nodes| +|`EN_setlinktype`|Changes the type of a specific link| +|`EN_setpipedata`|Sets values for a pipe's parameters| +|`EN_getdemandmodel`|Retrieves the type of demand model in use | +|`EN_setdemandmodel`|Sets the type of demand model to use| +|`EN_adddemand`|Adds a new demand category to a node| +|`EN_deletedemand`|Deletes a demand category from a node| +|`EN_getdemandindex`|Finds a demand category's index given its name| +|`EN_getdemandname`|Gets the name of a node's demand category| +|`EN_setdemandname`|Sets the name of a node's demand category| +|`EN_setdemandpattern`|Assigns a time pattern to a node's demand category | +|`EN_setpatternid`|Changes the ID name of a time pattern| +|`EN_setcurveid`|Changes the ID name of a data curve| +|`EN_getcurvetype`|Gets a curve's type| +|`EN_setheadcurveindex`|Sets the index of a head curve used by a pump | +|`EN_getruleinfo`|Gets the number of elements in a rule-based control | +|`EN_getruleid` | Gets the name assigned to a rule-based control | +|`EN_getpremise`|Gets the contents of a premise in a rule-based control| +|`EN_setpremise`|Sets the contents of a premise in a rule-based control| +|`EN_setpremiseindex`|Sets the index of an object in a premise of a rule-based control| +|`EN_setpremisestatus`|Sets the status of an object in a premise of a rule-based control| +|`EN_setpremisevalue`|Sets the value of a property in a premise of a rule-based control| +|`EN_getthenaction`|Gets the contents of a THEN action in a rule-based control| +|`EN_setthenaction`|Sets the contents of a THEN action in a rule-based control| +|`EN_getelseaction`|Gets the contents of an ELSE action in a rule-based control| +|`EN_setelseaction`|Sets the contents of an ELSE action in a rule-based control| +|`EN_setrulepriority`|Sets the priority of a rule-based control| +|`EN_gettitle` |Gets a project's title | +|`EN_settitle` |Sets a project's title | +|`EN_getcomment` |Gets the descriptive comment assigned to an object| +|`EN_setcomment` |Assigns a descriptive comment to an object| +|`EN_clearreport` |Clears the contents of a project's report file | +|`EN_copyreport` | Copies the contents of a project's report file | +|`EN_getresultindex` | Gets the order in which a node or link was saved to file | +|`EN_getvertexcount` | Gets the number of vertex points in a link | +|`EN_getvertex` | Gets the coordinates of a vertex point in a link | +|`EN_setvertices` | Assigns a new set of vertex points to a link | + +In addition to these new functions, a tank's volume curve `EN_VOLCURVE` can be set using `EN_setnodevalue` and `EN_setlinkvalue` can now be used to set the following pump properties: + - `EN_PUMP_POWER` (constant power rating) + - `EN_PUMP_HCURVE` (head characteristic curve) + - `EN_PUMP_ECURVE` (efficiency curve) + - `EN_PUMP_ECOST` (average energy price) + - `EN_PUMP_EPAT` (energy pricing pattern) + - `EN_LINKPATTERN` (speed setting pattern) + +Access to the following global energy options have been added to `EN_getoption` and `EN_setoption`: + - `EN_GLOBALEFFIC` (global pump efficiency) + - `EN_GLOBALPRICE` (global average energy price per kW-Hour) + - `EN_GLOBALPATTERN` (global energy price pattern) + - `EN_DEMANDCHARGE` (price per maximum kW of energy consumption) + +## New API Constants +### Node value types: +- `EN_CANOVERFLOW` +- `EN_DEMANDDEFICIT` + +### Link value types: +- `EN_PUMP_STATE` +- `EN_PUMP_EFFIC` +- `EN_PUMP_POWER` +- `EN_PUMP_HCURVE` +- `EN_PUMP_ECURVE` +- `EN_PUMP_ECOST` +- `EN_PUMP_EPAT` + +### Count types: + - `EN_RULECOUNT` + +### Head loss formula: + - `EN_HW` + - `EN_DW` + - `EN_CM` + +### Hydraulic option types: + - `EN_HEADERROR` + - `EN_FLOWCHANGE` + - `EN_HEADLOSSFORM` + - `EN_GLOBALEFFIC` + - `EN_GLOBALPRICE` + - `EN_GLOBALPATTERN` + - `EN_DEMANDCHARGE` + - `EN_SP_GRAVITY` + - `EN_SP_VISCOS` + - `EN_EXTRA_ITER` + - `EN_CHECKFREQ` + - `EN_MAXCHECK` + - `EN_DAMPLIMIT` + +### Quality option types: +- `EN_SP_DIFFUS` + - `EN_BULKORDER` + - `EN_WALLORDER` + - `EN_TANKORDER` + - `EN_CONCENLIMIT` + +### Simulation statistic types: + - `EN_MAXHEADERROR` + - `EN_MAXFLOWCHANGE` + - `EN_MASSBALANCE` + - `EN_DEFICIENTNODES` + - `EN_DEMANDREDUCTION` + +### Action code types: + - `EN_UNCONDITIONAL` + - `EN_CONDITIONAL` + +### Curve types: + - `EN_VOLUME_CURVE` + - `EN_PUMP_CURVE` + - `EN_EFFIC_CURVE` + - `EN_HLOSS_CURVE` + - `EN_GENERIC_CURVE` + +### Demand model types: + - `EN_DDA` + - `EN_PDA` + +## Documentation +Doxygen files have been created to generate a complete Users Guide for version 2.2's API. The guide's format is similar to the original EPANET Programmer's Toolkit help file and can be produced as a set of HTML pages, a Windows help file or a PDF document. + +## Authors contributing to this release: +(In alphabetical order) + - Demetrios Eliades + - Sam Hatchett + - Abel Heinsbroek + - Marios Kyriakou + - Lewis Rossman + - Elad Salomons + - Markus Sunela + - Michael Tryby diff --git a/epanet_port/ReleaseNotes2_3.md b/epanet_port/ReleaseNotes2_3.md new file mode 100644 index 00000000..cbb92008 --- /dev/null +++ b/epanet_port/ReleaseNotes2_3.md @@ -0,0 +1,139 @@ +> +## Release Notes for EPANET 2.3 + +This document describes the changes and updates that have been made in version 2.3 of EPANET. + +### New Features + + - A `EN_setcurvetype` function was added to allow API clients to set a curve's type (e.g., `EN_PUMP_CURVE,` `EN_VOLUME_CURVE,` etc.). + + - A `EN_setvertex` function was added to allow API clients to change the coordinates of a single link vertex. + +- Support has been added for FAVAD (Fixed And Variable Area Discharge) modeling of pipe leaks: + - A new `[LEAKAGE]` section has been added to the input file format where each line contains the ID name of a pipe, its leak area in sq. mm per 100 length units, and its leak expansion rate in sq. mm per unit of pressure head. + - `EN_LEAK_AREA` and `EN_LEAK_EXPAN` can be used with the functions `EN_getlinkvalue` and `EN_setlinkvalue` to retrieve and assign values for a pipe's leak area and expansion properties. + - `EN_LINK_LEAKAGE` can be used with `EN_getlinkvalue` to retrieve a pipe's leakage rate at a given point in time. + - `EN_LEAKAGEFLOW` can be used with `EN_getnodevalue` to retrieve the leakage demand generated at a node from all its connecting pipes at a given point in time. + - `EN_LEAKAGELOSS` can be used with `EN_getstatistic` to retrieve the total leakage loss in the system at a given point in time as a percentage of total flow entering the system. + + - Support has been added for reading the `[TAGS]` section of an EPANET input file. In addition: + - A newly added `EN_settag` function will assign a Tag to a node or link. + - A newly added `EN_gettag` function will retrieve a node or link's Tag. + - The existing `EN_saveinpfile` will include saving all node and link tags to file. + + - A new Flow Balance Report has been added to the end of a simulation run's Status Report that lists the various components of the system's total inflow and outflow over the simulation period. It also displays the ratio of outflow to inflow as a check on flow continuity. + + - A new type of valve, a Positional Control Valve (PCV), was added. It uses a valve characteristic curve to relate its loss coefficient to a percentage open setting (parameter - `EN_PCV`). + + - `EN_VALVE_CURVE` can now be used with the `EN_getcurvetype` and `EN_setcurvetype` to get or set the valve position curve. + + - `EN_VALVE_TYPE` can now be used with `EN_getlinkvalue` and `EN_setlinkvalue` to get and set a valve's type. This is the preferred way to change just a valve's type rather than using `EN_setlinktype`. + + - A new set of functions has been added to get information about upcoming time step events. Users will now see what type of event is going to cause the end of a time step to occur. See `EN_timetonextevent`. + + - A new set of functions has been added to allow users to set a reporting callback function. The user-supplied function will receive all output normally directed to the report file. + + - A `EN_EMITBACKFLOW` option was added that either allows emitters to have reverse flow through them (the default) or not. + + - The functions `EN_getnodevalue` and `EN_getlinkvalue` now include the options `EN_NODE_INCONTROL` and `EN_LINK_INCONTROL` to determine whether a node or link appears in any simple or rule-based control. + + - `EN_SET_CLOSED` and `EN_SET_OPEN` constants were added that can be used with `EN_setcontrol` to fix the status of pipes and valves to completely closed or completely open. + + - `EN_STATUS_REPORT` can now be used with `EN_getoption` and `EN_setoption` to get or set the type of status report that EPANET will generate (`EN_NO_REPORT`, `EN_NORMAL_REPORT` or `EN_FULL_REPORT`). + + - `EN_PRESS_UNITS` can now be used with `EN_getoption` and `EN_setoption` to get or set a project's pressure units. The choices are EN_PSI, EN_KPA, EN_METERS, EN_BAR, or EN_FEET. + + - Pressure units have been decoupled from the flow unit system, allowing them to be set independently to support mixed-unit conventions (e.g., using LPS for flow and PSI for pressure). + + - The following constants can be used with EN_getnodevalue to retrieve the components of a node's total demand at a given point in time: + - `EN_FULLDEMAND` - the consumer demand requested + - `EN_DEMANDFLOW` - the consumer demand delivered + - `EN_DEMANDDEFICIT` - the difference between the consumer demand requested and delivered + - `EN_EMITTERFLOW` - the node's emitter flow + - `EN_LEAKAGEFLOW` - the node's leakage flow + - `EN_DEMAND` - the sum of the node's consumer demand, emitter flow, and leakage flow + + - Additional API functions for enabling/disabling controls and rules were added (`EN_getcontrolenabled`, `EN_setcontrolenabled`, `EN_getruleenabled`, `EN_setruleenabled`). A new keyword `DISABLED` is added to the end of a control or rule statement in an EPANET input file to indicate that the control is disabled. + + - The `EN_openX` function has been added to enable the opening of input files with formatting errors through the API. This allows users to continue using toolkit functions even when such errors are present. + + - The `EN_getnodesvalues` and `EN_getlinksvalues` were added to retrieve a property value for all nodes or links in the network. + + - Support was added for cubic meters per second (`EN_CMS`) flow units. + + - A header file for binding C# to the Toolkit has been added. + + - Support was added for Conan dependency manager. + +### Feature Updates + + - The check for at least two nodes, one tank/reservoir and no unconnected junction nodes was moved from `EN_open` to `EN_openH` and `EN_openQ` so that partial network data files could be opened by the toolkit. + + - The indices of a General Purpose Valve (GPV) and a Positional Control Valve (PCV) were added to the list of editable Link Properties using the symbolic constant names `EN_GPV_CURVE` and `EN_PCV_CURVE`, respectively. + + - The `EN_getlinkvalue` and `EN_setlinkvalue` functions were updated to get and set the values of `EN_GPV_CURVE` and `EN_PCV_CURVE`. + + - Negative pressure values for `EN_SETTING` are now permitted in the `EN_setlinkvalue` function. + + - The `EN_STARTTIME` parameter was added into the `EN_settimeparam` function. + + - A `EN_DEMANDPATTERN` parameter was added as the index of the default time pattern used by demands with no specific pattern assigned. It can be set or retrieved with the `EN_setoption` and `EN_getoption` functions, respectively, and is saved to the file when the `EN_saveinpfile` function is called. + + - The `EN_getaveragepatternvalue` function will now accept a pattern index of zero which represents the constant pattern assigned to junction demands by default. + + - Improved updating and convergence tests were added to pressure-dependent demand analysis. + + - Improved checks to prevent outflow from empty tanks or inflow to full (non-overflow) tanks, including the case where a link is connected to a pair of tanks, were added. + + - The `EN_INITSETTING` option in function `EN_setlinkvalue` will now save the setting value so that if a new simulation is begun or if `EN_saveinpfile` is called the saved initial setting will remain in effect rather than whatever setting a simulation may have ended with. + + - A new error code `263 - node is not a tank` is returned when `EN_settankdata` or `EN_setnodevalue` attempts to set a tank-only parameter for a non-tank node. + + - Errors in node and link vertex coordinates are now ignored when reading an EPANET input file. + + - Only non-zero demands are now included in the `[DEMANDS]` section of the input file produced by `EN_saveinpfile`. + + - Setting the demand multiplier within the `[DEMANDS]` section of INP has been depreciated, please use `DEMAND MULTIPLIER` inside `[OPTIONS]` instead. + + - Continuous barrier functions were added to constrain emitter flows to allowable values. + + - The CI regression test protocol was modified by: + - changing the absolute tolerance used to compare the closeness of test results to benchmark values from 0 to 0.0001 + - dropping the "correct decimal digits" test + - dropping the check for identical status report content since it prevents accepting code changes that produce more accurate solutions in fewer iterations. + +### Bug Fixes + + - The adjustment of a tank's minimum volume (`Vmin`) when its parameters are changed using `EN_setnodevalue` or `EN_settankdata` has been corrected. + + - A pump whose status is set to CLOSED in the input file now also has its speed setting set to zero which allows a simple pressure control to activate the pump correctly. + + - A failure to raise an error condition for a non-positive pipe roughness in the input file has been fixed. + + - The calculation of head loss gradient for low flow conditions was corrected. + + - A possible loss of network connectivity when evaluating a Pressure Sustaining Valve was prevented. + + - Having the implied loss coefficient for an active Flow Control Valve be less than its fully opened value was prevented. + + - An incorrect tank elevation value set using `EN_settankdata` with SI units has been fixed. + + - An error is no longer raised when a minor loss coefficient of zero is assigned in `EN_setlinkvalue(ph, index, EN_MINORLOSS, 0)`. + + - The incorrect display of unconnected nodes has been fixed. + + - The function `EN_saveinpfile` was corrected for simple controls on GPV's by saving their status instead of the index of their head loss curve. + + - The internal Qualflag variable is now adjusted when an EPANET input file has a QUALITY option not equal to NONE and a simulation duration of zero. + + - An EPANET input file with simple timer control that has more than 9 input tokens no longer results in an incorrect hour setting. + + - A possible parser error that could result in a Trace Node ID in an input file not being recognized was fixed. + + - Updated the internal function `getclosedlink` in report.c to use a loop instead of recursion to prevent a stack overflow during the analysis of very large disconnections. + + - Fixed a bug in EN_setnodevalue with EN_EMITTER option that could cause NaN results. + + - A failure to close a temporary hydraulics file between successive simulations of an opened project was fixed. + + - Corrupting the index of a water quality Trace Node when adding or deleting a node was fixed. diff --git a/epanet_port/appveyor.yml b/epanet_port/appveyor.yml new file mode 100644 index 00000000..dd74d643 --- /dev/null +++ b/epanet_port/appveyor.yml @@ -0,0 +1,85 @@ +# +# appveyor.yml - Appveyor CI configuration for OWA EPANET +# +# Date created: 01/09/2018 +# +# Author: Michael E. Tryby +# US EPA - ORD/NRMRL +# + +version: 2.0.{build} + +matrix: + allow_failures: + #GROUP: (SUPPORTED/EXPERIMENTAL) + #EXPERIMENTAL is allowed to fail under build matrix + - GROUP: "EXPERIMENTAL" + +environment: + matrix: + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + GENERATOR: "Visual Studio 15 2017" + GROUP: "SUPPORTED" + BOOST_ROOT: "C:/Libraries/boost_1_67_0" + PLATFORM: "win32" + REF_BUILD_ID: "538_1" + # New build on Visual Studio 15 2017 + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + GENERATOR: "Visual Studio 15 2017 Win64" + GROUP: "EXPERIMENTAL" + BOOST_ROOT: "C:/Libraries/boost_1_67_0" + PLATFORM: "win64" + REF_BUILD_ID: "538_2" + +# called before repo cloning +init: + - set SUT_BUILD_ID=%APPVEYOR_BUILD_NUMBER%_%APPVEYOR_JOB_NUMBER% + - set EPANET_HOME=%APPVEYOR_BUILD_FOLDER% + - set BUILD_HOME=buildprod + - set TEST_HOME=nrtestsuite + - set PATH=%PATH%;%BOOST_ROOT%/ + + # See values set + - echo %APPVEYOR_BUILD_WORKER_IMAGE% + - echo %BUILD_HOME% + - echo %GENERATOR% + - echo %BOOST_ROOT% + +# called after repo clone +install: + - python -m pip install -r tools\requirements-appveyor.txt + +# called before build +before_build: + - mkdir %BUILD_HOME% + - cd %BUILD_HOME% + - cmake -G "%GENERATOR%" + -DBUILD_TESTS=ON + -DBOOST_ROOT="%BOOST_ROOT%" .. + +# run custom build script +build_script: + - cmake --build . --config Release + +before_test: + - cd %EPANET_HOME% + - tools\before-test.cmd %PLATFORM% %REF_BUILD_ID% %SUT_BUILD_ID% %APPVEYOR_REPO_COMMIT% + +# run custom test script +test_script: + # run unit tests + - cd %BUILD_HOME%\tests + - ctest -C Release --output-on-failure + # run regression tests + - cd %EPANET_HOME% + - tools\run-nrtest.cmd %REF_BUILD_ID% %SUT_BUILD_ID% + +on_success: + - cd %TEST_HOME%\benchmark + - appveyor PushArtifact receipt.json + +on_failure: + - cd %TEST_HOME%\benchmark + # zip up the SUT benchmarks + - 7z a benchmark-%PLATFORM%-%SUT_BUILD_ID%.zip .\epanet-%SUT_BUILD_ID% + - appveyor PushArtifact benchmark-%PLATFORM%-%SUT_BUILD_ID%.zip diff --git a/epanet_port/cmake/CodeCoverage.cmake b/epanet_port/cmake/CodeCoverage.cmake new file mode 100644 index 00000000..f74b9f15 --- /dev/null +++ b/epanet_port/cmake/CodeCoverage.cmake @@ -0,0 +1,305 @@ +# Copyright (c) 2012 - 2017, Lars Bilke +# All rights reserved. +# +# Redistribution and use in source and binary forms, 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. +# +# CHANGES: +# +# 2012-01-31, Lars Bilke +# - Enable Code Coverage +# +# 2013-09-17, Joakim Söderberg +# - Added support for Clang. +# - Some additional usage instructions. +# +# 2016-02-03, Lars Bilke +# - Refactored functions to use named parameters +# +# 2017-06-02, Lars Bilke +# - Merged with modified version from github.com/ufz/ogs +# +# +# USAGE: +# +# 1. Copy this file into your cmake modules path. +# +# 2. Add the following line to your CMakeLists.txt: +# include(CodeCoverage) +# +# 3. Append necessary compiler flags: +# APPEND_COVERAGE_COMPILER_FLAGS() +# +# 3.a (OPTIONAL) Set appropriate optimization flags, e.g. -O0, -O1 or -Og +# +# 4. If you need to exclude additional directories from the report, specify them +# using the COVERAGE_LCOV_EXCLUDES variable before calling SETUP_TARGET_FOR_COVERAGE_LCOV. +# Example: +# set(COVERAGE_LCOV_EXCLUDES 'dir1/*' 'dir2/*') +# +# 5. Use the functions described below to create a custom make target which +# runs your test executable and produces a code coverage report. +# +# 6. Build a Debug build: +# cmake -DCMAKE_BUILD_TYPE=Debug .. +# make +# make my_coverage_target +# + +include(CMakeParseArguments) + +# Check prereqs +find_program( GCOV_PATH gcov ) +find_program( LCOV_PATH NAMES lcov lcov.bat lcov.exe lcov.perl) +find_program( GENHTML_PATH NAMES genhtml genhtml.perl genhtml.bat ) +find_program( GCOVR_PATH gcovr PATHS ${CMAKE_SOURCE_DIR}/scripts/test) +find_program( SIMPLE_PYTHON_EXECUTABLE python ) + +if(NOT GCOV_PATH) + message(FATAL_ERROR "gcov not found! Aborting...") +endif() # NOT GCOV_PATH + +if("${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?[Cc]lang") + if("${CMAKE_CXX_COMPILER_VERSION}" VERSION_LESS 3) + message(FATAL_ERROR "Clang version must be 3.0.0 or greater! Aborting...") + endif() +elseif(NOT CMAKE_COMPILER_IS_GNUCXX) + message(FATAL_ERROR "Compiler is not GNU gcc! Aborting...") +endif() + +set(COVERAGE_COMPILER_FLAGS "-g --coverage -fprofile-arcs -ftest-coverage" + CACHE INTERNAL "") + +set(CMAKE_CXX_FLAGS_COVERAGE + ${COVERAGE_COMPILER_FLAGS} + CACHE STRING "Flags used by the C++ compiler during coverage builds." + FORCE ) +set(CMAKE_C_FLAGS_COVERAGE + ${COVERAGE_COMPILER_FLAGS} + CACHE STRING "Flags used by the C compiler during coverage builds." + FORCE ) +set(CMAKE_EXE_LINKER_FLAGS_COVERAGE + "" + CACHE STRING "Flags used for linking binaries during coverage builds." + FORCE ) +set(CMAKE_SHARED_LINKER_FLAGS_COVERAGE + "" + CACHE STRING "Flags used by the shared libraries linker during coverage builds." + FORCE ) +mark_as_advanced( + CMAKE_CXX_FLAGS_COVERAGE + CMAKE_C_FLAGS_COVERAGE + CMAKE_EXE_LINKER_FLAGS_COVERAGE + CMAKE_SHARED_LINKER_FLAGS_COVERAGE ) + +if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") + message(WARNING "Code coverage results with an optimised (non-Debug) build may be misleading") +endif() # NOT CMAKE_BUILD_TYPE STREQUAL "Debug" + +if(CMAKE_C_COMPILER_ID STREQUAL "GNU") + link_libraries(gcov) +else() + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage") +endif() + +# Defines a target for running and collection code coverage information +# Builds dependencies, runs the given executable and outputs reports. +# NOTE! The executable should always have a ZERO as exit code otherwise +# the coverage generation will not complete. +# +# SETUP_TARGET_FOR_COVERAGE_LCOV( +# NAME testrunner_coverage # New target name +# EXECUTABLE testrunner -j ${PROCESSOR_COUNT} # Executable in PROJECT_BINARY_DIR +# DEPENDENCIES testrunner # Dependencies to build first +# ) +function(SETUP_TARGET_FOR_COVERAGE_LCOV) + + set(options NONE) + set(oneValueArgs NAME) + set(multiValueArgs EXECUTABLE EXECUTABLE_ARGS DEPENDENCIES LCOV_ARGS GENHTML_ARGS) + cmake_parse_arguments(Coverage "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + if(NOT LCOV_PATH) + message(FATAL_ERROR "lcov not found! Aborting...") + endif() # NOT LCOV_PATH + + if(NOT GENHTML_PATH) + message(FATAL_ERROR "genhtml not found! Aborting...") + endif() # NOT GENHTML_PATH + + # Setup target + add_custom_target(${Coverage_NAME} + + # Cleanup lcov + COMMAND ${LCOV_PATH} ${Coverage_LCOV_ARGS} --gcov-tool ${GCOV_PATH} -directory . --zerocounters + # Create baseline to make sure untouched files show up in the report + COMMAND ${LCOV_PATH} ${Coverage_LCOV_ARGS} --gcov-tool ${GCOV_PATH} -c -i -d . -o ${Coverage_NAME}.base + + # Run tests + COMMAND ${Coverage_EXECUTABLE} ${Coverage_EXECUTABLE_ARGS} + + # Capturing lcov counters and generating report + COMMAND ${LCOV_PATH} ${Coverage_LCOV_ARGS} --gcov-tool ${GCOV_PATH} --directory . --capture --output-file ${Coverage_NAME}.info + # add baseline counters + COMMAND ${LCOV_PATH} ${Coverage_LCOV_ARGS} --gcov-tool ${GCOV_PATH} -a ${Coverage_NAME}.base -a ${Coverage_NAME}.info --output-file ${Coverage_NAME}.total + COMMAND ${LCOV_PATH} ${Coverage_LCOV_ARGS} --gcov-tool ${GCOV_PATH} --remove ${Coverage_NAME}.total ${COVERAGE_LCOV_EXCLUDES} --output-file ${PROJECT_BINARY_DIR}/${Coverage_NAME}.info.cleaned + COMMAND ${GENHTML_PATH} ${Coverage_GENHTML_ARGS} -o ${Coverage_NAME} ${PROJECT_BINARY_DIR}/${Coverage_NAME}.info.cleaned + COMMAND ${CMAKE_COMMAND} -E remove ${Coverage_NAME}.base ${Coverage_NAME}.total ${PROJECT_BINARY_DIR}/${Coverage_NAME}.info.cleaned + + WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + DEPENDS ${Coverage_DEPENDENCIES} + COMMENT "Resetting code coverage counters to zero.\nProcessing code coverage counters and generating report." + ) + + # Show where to find the lcov info report + add_custom_command(TARGET ${Coverage_NAME} POST_BUILD + COMMAND ; + COMMENT "Lcov code coverage info report saved in ${Coverage_NAME}.info." + ) + + # Show info where to find the report + add_custom_command(TARGET ${Coverage_NAME} POST_BUILD + COMMAND ; + COMMENT "Open ./${Coverage_NAME}/index.html in your browser to view the coverage report." + ) + +endfunction() # SETUP_TARGET_FOR_COVERAGE_LCOV + +# Defines a target for running and collection code coverage information +# Builds dependencies, runs the given executable and outputs reports. +# NOTE! The executable should always have a ZERO as exit code otherwise +# the coverage generation will not complete. +# +# SETUP_TARGET_FOR_COVERAGE_GCOVR_XML( +# NAME ctest_coverage # New target name +# EXECUTABLE ctest -j ${PROCESSOR_COUNT} # Executable in PROJECT_BINARY_DIR +# DEPENDENCIES executable_target # Dependencies to build first +# ) +function(SETUP_TARGET_FOR_COVERAGE_GCOVR_XML) + + set(options NONE) + set(oneValueArgs NAME) + set(multiValueArgs EXECUTABLE EXECUTABLE_ARGS DEPENDENCIES) + cmake_parse_arguments(Coverage "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + if(NOT SIMPLE_PYTHON_EXECUTABLE) + message(FATAL_ERROR "python not found! Aborting...") + endif() # NOT SIMPLE_PYTHON_EXECUTABLE + + if(NOT GCOVR_PATH) + message(FATAL_ERROR "gcovr not found! Aborting...") + endif() # NOT GCOVR_PATH + + # Combine excludes to several -e arguments + set(GCOVR_EXCLUDES "") + foreach(EXCLUDE ${COVERAGE_GCOVR_EXCLUDES}) + list(APPEND GCOVR_EXCLUDES "-e") + list(APPEND GCOVR_EXCLUDES "${EXCLUDE}") + endforeach() + + add_custom_target(${Coverage_NAME} + # Run tests + ${Coverage_EXECUTABLE} ${Coverage_EXECUTABLE_ARGS} + + # Running gcovr + COMMAND ${GCOVR_PATH} --xml + -r ${PROJECT_SOURCE_DIR} ${GCOVR_EXCLUDES} + --object-directory=${PROJECT_BINARY_DIR} + -o ${Coverage_NAME}.xml + WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + DEPENDS ${Coverage_DEPENDENCIES} + COMMENT "Running gcovr to produce Cobertura code coverage report." + ) + + # Show info where to find the report + add_custom_command(TARGET ${Coverage_NAME} POST_BUILD + COMMAND ; + COMMENT "Cobertura code coverage report saved in ${Coverage_NAME}.xml." + ) + +endfunction() # SETUP_TARGET_FOR_COVERAGE_GCOVR_XML + +# Defines a target for running and collection code coverage information +# Builds dependencies, runs the given executable and outputs reports. +# NOTE! The executable should always have a ZERO as exit code otherwise +# the coverage generation will not complete. +# +# SETUP_TARGET_FOR_COVERAGE_GCOVR_HTML( +# NAME ctest_coverage # New target name +# EXECUTABLE ctest -j ${PROCESSOR_COUNT} # Executable in PROJECT_BINARY_DIR +# DEPENDENCIES executable_target # Dependencies to build first +# ) +function(SETUP_TARGET_FOR_COVERAGE_GCOVR_HTML) + + set(options NONE) + set(oneValueArgs NAME) + set(multiValueArgs EXECUTABLE EXECUTABLE_ARGS DEPENDENCIES) + cmake_parse_arguments(Coverage "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + if(NOT SIMPLE_PYTHON_EXECUTABLE) + message(FATAL_ERROR "python not found! Aborting...") + endif() # NOT SIMPLE_PYTHON_EXECUTABLE + + if(NOT GCOVR_PATH) + message(FATAL_ERROR "gcovr not found! Aborting...") + endif() # NOT GCOVR_PATH + + # Combine excludes to several -e arguments + set(GCOVR_EXCLUDES "") + foreach(EXCLUDE ${COVERAGE_GCOVR_EXCLUDES}) + list(APPEND GCOVR_EXCLUDES "-e") + list(APPEND GCOVR_EXCLUDES "${EXCLUDE}") + endforeach() + + add_custom_target(${Coverage_NAME} + # Run tests + ${Coverage_EXECUTABLE} ${Coverage_EXECUTABLE_ARGS} + + # Create folder + COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR}/${Coverage_NAME} + + # Running gcovr + COMMAND ${GCOVR_PATH} --html --html-details + -r ${PROJECT_SOURCE_DIR} ${GCOVR_EXCLUDES} + --object-directory=${PROJECT_BINARY_DIR} + -o ${Coverage_NAME}/index.html + WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + DEPENDS ${Coverage_DEPENDENCIES} + COMMENT "Running gcovr to produce HTML code coverage report." + ) + + # Show info where to find the report + add_custom_command(TARGET ${Coverage_NAME} POST_BUILD + COMMAND ; + COMMENT "Open ./${Coverage_NAME}/index.html in your browser to view the coverage report." + ) + +endfunction() # SETUP_TARGET_FOR_COVERAGE_GCOVR_HTML + +function(APPEND_COVERAGE_COMPILER_FLAGS) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COVERAGE_COMPILER_FLAGS}" PARENT_SCOPE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COVERAGE_COMPILER_FLAGS}" PARENT_SCOPE) + message(STATUS "Appending code coverage compiler flags: ${COVERAGE_COMPILER_FLAGS}") +endfunction() # APPEND_COVERAGE_COMPILER_FLAGS diff --git a/epanet_port/conanfile.py b/epanet_port/conanfile.py new file mode 100644 index 00000000..089221fd --- /dev/null +++ b/epanet_port/conanfile.py @@ -0,0 +1,42 @@ +from conan import ConanFile +from conan.tools.cmake import CMakeToolchain, CMake, cmake_layout + +class EpanetConan(ConanFile): + name = "epanet" + version = "2.2" + description = "EPANET is an industry-standard program for modeling the hydraulic and water quality behavior of water distribution system pipe networks." + homepage = "https://github.com/OpenWaterAnalytics/EPANET" + url = "https://github.com/OpenWaterAnalytics/EPANET" + license = "MIT" + + # Binary configuration + settings = "os", "compiler", "build_type", "arch" + options = {"shared": [True, False], "fPIC": [True, False]} + default_options = {"shared": False, "fPIC": True} + + exports_sources = "CMakeLists.txt", "src/*", "include/*", "run/*" + + def config_options(self): + if self.settings.os == "Windows": + del self.options.fPIC + + def layout(self): + cmake_layout(self) + + def generate(self): + tc = CMakeToolchain(self) + tc.generate() + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def package(self): + cmake = CMake(self) + cmake.install() + + def package_info(self): + self.cpp_info.libdirs = ["lib"] + self.cpp_info.libs = ["epanet2"] + self.cpp_info.includedirs = ["include"] diff --git a/epanet_port/doc/DataFlow.png b/epanet_port/doc/DataFlow.png new file mode 100644 index 0000000000000000000000000000000000000000..a499f45e42375a80aaf79c85a50a5274152f7a06 GIT binary patch literal 48451 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 As{jB1 literal 0 HcmV?d00001 diff --git a/epanet_port/doc/DistributionSystem.png b/epanet_port/doc/DistributionSystem.png new file mode 100644 index 0000000000000000000000000000000000000000..4804e7e3dbc493f1a50ad21227c7a2edf0f64ef2 GIT binary patch literal 129545 zcmV)BK*PU@P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf06}y`Sad^gZEa<4 zbO1wAML|?gQaT`KWG!lNWoICEF)lD5D0OpbZf77#N=G0{P(?=|b~Z98EFf`pVQgu1 zc_2L?H#G{!tbyDB0RLD?L_t(|UhI7Zpk&3B_SfG1{LLG8XJBxbge1fXfwXknGmN`G_xA4p`_8@9@4lXX!$3$N+4s%VtGZREPMxw- zr|L?F@a8|1QH@f`^Ftxe528$R#TSb}B;tib3=2i(3)jj+7Y=)2a>H)J=_{OROAox7gVmUm0pP_ zO@ZOZQQc8+WvNdUX1!gTmdC2^;q;aG1@nlH^BsaT4x$lUypthB+9I6>Fy#sM`&bCJ zXONz=pB0jm0KU_}v_Y%uV4A`XPIyaWxU7ayo*K^LMXL;|fUbR>at^LB6{m2}JsK*! z=uGJ=A1f{8U}+TJ(m9zWLy76(IK^XQShhgj4B}x4o-=LahsBdh#LE-NXT|bb9c1x= zypn~Jqa@|1{OSYI8;zgmkj~N4S^47cIcsK@$~smY+pQ9>uzNNx=Je<&z}>R3@e4hmC7Eh;9f zAm7bNli!Q}yFqQGvZ`ep$KwK9(}$Z>exueLxQcV}ZUES|!s-~`w{XChlY*0@^n= z6m%k{Q{Na}zzJ3TLDgnes7!p{m1Whk?KF0Z@<|eAKSbH~4dEo}sZi^waOq1nh z#SrS4ULT4hNn*vtIYwyH($OzRjGq*&q_jnZ&XwWDs0+)9))Z6~lwYtMN_VomzCH|$ zv0)g2E7$Q4I+YdltHJmf7ne~`-KFTHjGdhFU4HeCDl`_)#|rUr5I;IApYgU+uyPKj zdECxHe1m1zf}^R$r`lDcI&UpFnrc+Y8FKI4F&?fMqpGIm?y&ItImaM+-`~YqpV&m@KR`2YZ z;*=*yqi{uLBA6b8qgPqd4-S>wIBm*xbm z2GguF9Ze9bfXgGHg5}ByigOJ!RvAJtZxAZml@p{9FEyfzbLGo9h{pK&a%-}4vP!`g zxZN#=lE_7pw2u=g#G9yW>nfxMu?osuN#nJJYs8xuWKs>K(Wwe1GsBYWP+0_*ZoVtW z^A3WeRl0M6>jUSEkS<8)Xo>1*DG$$i%1N%0DA+aYA_dEEh8EN?+j}6JLti#)XThF2 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�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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/epanet_port/doc/Example2.png b/epanet_port/doc/Example2.png new file mode 100644 index 0000000000000000000000000000000000000000..bff8f4e4058b061c8ebc0f28a4b4bac318bae9b5 GIT binary patch literal 3544 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 K=d#Wzp$P!KaW`oI literal 0 HcmV?d00001 diff --git a/epanet_port/doc/doxyfile b/epanet_port/doc/doxyfile new file mode 100644 index 00000000..a7f34908 --- /dev/null +++ b/epanet_port/doc/doxyfile @@ -0,0 +1,2978 @@ +# Doxyfile 1.13.2 + +# This file describes the settings to be used by the documentation system +# Doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). +# +# Note: +# +# Use Doxygen to compare the used configuration file with the template +# configuration file: +# doxygen -x [configFile] +# Use Doxygen to compare the used configuration file with the template +# configuration file without replacing the environment variables or CMake type +# replacement variables: +# doxygen -x_noenv [configFile] + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "OWA-EPANET Toolkit 2.3" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewers a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# With the PROJECT_ICON tag one can specify an icon that is included in the tabs +# when the HTML document is shown. Doxygen will copy the logo to the output +# directory. + +PROJECT_ICON = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where Doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# If the CREATE_SUBDIRS tag is set to YES then Doxygen will create up to 4096 +# sub-directories (in 2 levels) under the output directory of each output format +# and will distribute the generated files over these directories. Enabling this +# option can be useful when feeding Doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise cause +# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to +# control the number of sub-directories. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# Controls the number of sub-directories that will be created when +# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every +# level increment doubles the number of directories, resulting in 4096 +# directories at level 8 which is the default and also the maximum value. The +# sub-directories are organized in 2 levels, the first level always has a fixed +# number of 16 directories. +# Minimum value: 0, maximum value: 8, default value: 8. +# This tag requires that the tag CREATE_SUBDIRS is set to YES. + +CREATE_SUBDIRS_LEVEL = 8 + +# If the ALLOW_UNICODE_NAMES tag is set to YES, Doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by Doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, +# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English +# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, +# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with +# English messages), Korean, Korean-en (Korean with English messages), Latvian, +# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, +# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, +# Swedish, Turkish, Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, Doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, Doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, Doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, Doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which Doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where Doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, Doxygen will generate much shorter (but +# less readable) file names. This can be useful if your file system doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen will interpret the +# first line (until the first dot, question mark or exclamation mark) of a +# Javadoc-style comment as the brief description. If set to NO, the Javadoc- +# style will behave just like regular Qt-style comments (thus requiring an +# explicit @brief command for a brief description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the JAVADOC_BANNER tag is set to YES then Doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by Doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will interpret the first +# line (until the first dot, question mark or exclamation mark) of a Qt-style +# comment as the brief description. If set to NO, the Qt-style will behave just +# like regular Qt-style comments (thus requiring an explicit \brief command for +# a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# By default Python docstrings are displayed as preformatted text and Doxygen's +# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the +# Doxygen's special commands can be used and the contents of the docstring +# documentation blocks is shown as Doxygen documentation. +# The default value is: YES. + +PYTHON_DOCSTRING = YES + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then Doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:^^" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". Note that you cannot put \n's in the value part of an alias +# to insert newlines (in the resulting output). You can put ^^ in the value part +# of an alias to insert a newline as if a physical newline was in the original +# file. When you need a literal { or } or , in the value part of an alias you +# have to escape them by means of a backslash (\), this can lead to conflicts +# with the commands \{ and \} for these it is advised to use the version @{ and +# @} or use a double escape (\\{ and \\}) + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by Doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, +# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files). For instance to make Doxygen treat .inc files +# as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by Doxygen. When specifying no_extension you should add +# * to the FILE_PATTERNS. +# +# Note see also the list of default file extension mappings. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then Doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See https://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by Doxygen, so you can +# mix Doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 6. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 6 + +# The MARKDOWN_ID_STYLE tag can be used to specify the algorithm used to +# generate identifiers for the Markdown headings. Note: Every identifier is +# unique. +# Possible values are: DOXYGEN use a fixed 'autotoc_md' string followed by a +# sequence number starting at 0 and GITHUB use the lower case version of title +# with any whitespace replaced by '-' and punctuation characters removed. +# The default value is: DOXYGEN. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +MARKDOWN_ID_STYLE = DOXYGEN + +# When enabled Doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. Words listed in the +# AUTOLINK_IGNORE_WORDS tag are excluded from automatic linking. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# This tag specifies a list of words that, when matching the start of a word in +# the documentation, will suppress auto links generation, if it is enabled via +# AUTOLINK_SUPPORT. This list does not affect affect links explicitly created +# using \# or the \link or commands. +# This tag requires that the tag AUTOLINK_SUPPORT is set to YES. + +AUTOLINK_IGNORE_WORDS = + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let Doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also makes the inheritance and +# collaboration diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software) sources only. Doxygen will parse +# them like normal C++ but will assume all classes use public instead of private +# inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# Doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then Doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, Doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# Doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run Doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +# The NUM_PROC_THREADS specifies the number of threads Doxygen is allowed to use +# during processing. When set to 0 Doxygen will based this on the number of +# cores available in the system. You can set it explicitly to a value larger +# than 0 to get more control over the balance between CPU load and processing +# speed. At this moment only the input processing can be done using multiple +# threads. Since this is still an experimental feature the default is set to 1, +# which effectively disables parallel processing. Please report any issues you +# encounter. Generating dot graphs in parallel is controlled by the +# DOT_NUM_THREADS setting. +# Minimum value: 0, maximum value: 32, default value: 1. + +NUM_PROC_THREADS = 1 + +# If the TIMESTAMP tag is set different from NO then each generated page will +# contain the date or date and time when the page was generated. Setting this to +# NO can help when comparing the output of multiple runs. +# Possible values are: YES, NO, DATETIME and DATE. +# The default value is: NO. + +TIMESTAMP = NO + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, Doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If this flag is set to YES, the name of an unnamed parameter in a declaration +# will be determined by the corresponding definition. By default unnamed +# parameters remain unnamed in the output. +# The default value is: YES. + +RESOLVE_UNNAMED_PARAMS = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# will also hide undocumented C++ concepts if enabled. This option has no effect +# if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_UNDOC_NAMESPACES tag is set to YES, Doxygen will hide all +# undocumented namespaces that are normally visible in the namespace hierarchy. +# If set to NO, these namespaces will be included in the various overviews. This +# option has no effect if EXTRACT_ALL is enabled. +# The default value is: YES. + +HIDE_UNDOC_NAMESPACES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all friend +# declarations. If set to NO, these declarations will be included in the +# documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# With the correct setting of option CASE_SENSE_NAMES Doxygen will better be +# able to match the capabilities of the underlying filesystem. In case the +# filesystem is case sensitive (i.e. it supports files in the same directory +# whose names only differ in casing), the option must be set to YES to properly +# deal with such files in case they appear in the input. For filesystems that +# are not case sensitive the option should be set to NO to properly deal with +# output files written for symbols that only differ in casing, such as for two +# classes, one named CLASS and the other named Class, and to also support +# references to files without having to specify the exact matching casing. On +# Windows (including Cygwin) and macOS, users should typically set this option +# to NO, whereas on Linux or other Unix flavors it should typically be set to +# YES. +# Possible values are: SYSTEM, NO and YES. +# The default value is: SYSTEM. + +CASE_SENSE_NAMES = SYSTEM + +# If the HIDE_SCOPE_NAMES tag is set to NO then Doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then Doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class +# will show which file needs to be included to use the class. +# The default value is: YES. + +SHOW_HEADERFILE = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES then Doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then Doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then Doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then Doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then Doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and Doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING Doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# Doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by Doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by Doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents Doxygen's defaults, run Doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. See also section "Changing the +# layout of pages" for information. +# +# Note that if you run Doxygen from a directory containing a file called +# DoxygenLayout.xml, Doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +# The EXTERNAL_TOOL_PATH tag can be used to extend the search path (PATH +# environment variable) so that external tools such as latex and gs can be +# found. +# Note: Directories specified with EXTERNAL_TOOL_PATH are added in front of the +# path already specified by the PATH variable, and are added in the order +# specified. +# Note: This option is particularly useful for macOS version 14 (Sonoma) and +# higher, when running Doxygen from Doxywizard, because in this case any user- +# defined changes to the PATH are ignored. A typical example on macOS is to set +# EXTERNAL_TOOL_PATH = /Library/TeX/texbin /usr/local/bin +# together with the standard path, the full search path used by doxygen when +# launching external tools will then become +# PATH=/Library/TeX/texbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin + +EXTERNAL_TOOL_PATH = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by Doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by Doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then Doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, Doxygen will generate warnings for +# potential errors in the documentation, such as documenting some parameters in +# a documented function twice, or documenting parameters that don't exist or +# using markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# If WARN_IF_INCOMPLETE_DOC is set to YES, Doxygen will warn about incomplete +# function parameter documentation. If set to NO, Doxygen will accept that some +# parameters have no documentation without warning. +# The default value is: YES. + +WARN_IF_INCOMPLETE_DOC = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, Doxygen will only warn about wrong parameter +# documentation, but not about the absence of documentation. If EXTRACT_ALL is +# set to YES then this flag will automatically be disabled. See also +# WARN_IF_INCOMPLETE_DOC +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, Doxygen will warn about +# undocumented enumeration values. If set to NO, Doxygen will accept +# undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: NO. + +WARN_IF_UNDOC_ENUM_VAL = NO + +# If WARN_LAYOUT_FILE option is set to YES, Doxygen will warn about issues found +# while parsing the user defined layout file, such as missing or wrong elements. +# See also LAYOUT_FILE for details. If set to NO, problems with the layout file +# will be suppressed. +# The default value is: YES. + +WARN_LAYOUT_FILE = YES + +# If the WARN_AS_ERROR tag is set to YES then Doxygen will immediately stop when +# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS +# then Doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the Doxygen process Doxygen will return with a non-zero status. +# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then Doxygen behaves +# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined Doxygen will not +# write the warning messages in between other messages but write them at the end +# of a run, in case a WARN_LOGFILE is defined the warning messages will be +# besides being in the defined file also be shown at the end of a run, unless +# the WARN_LOGFILE is defined as - i.e. standard output (stdout) in that case +# the behavior will remain as with the setting FAIL_ON_WARNINGS. +# Possible values are: NO, YES, FAIL_ON_WARNINGS and FAIL_ON_WARNINGS_PRINT. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that Doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# See also: WARN_LINE_FORMAT +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# In the $text part of the WARN_FORMAT command it is possible that a reference +# to a more specific place is given. To make it easier to jump to this place +# (outside of Doxygen) the user can define a custom "cut" / "paste" string. +# Example: +# WARN_LINE_FORMAT = "'vi $file +$line'" +# See also: WARN_FORMAT +# The default value is: at line $line of file $file. + +WARN_LINE_FORMAT = "at line $line of file $file" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). In case the file specified cannot be opened for writing the +# warning and error messages are written to standard error. When as file - is +# specified the warning and error messages are written to standard output +# (stdout). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = main.dox \ + toolkit-usage.dox \ + toolkit-examples.dox \ + toolkit-files.dox \ + toolkit-input.dox \ + toolkit-units.dox \ + toolkit-topics.dox \ + ../include/epanet2_enums.h \ + ../include/epanet2_2.h + +# This tag can be used to specify the character encoding of the source files +# that Doxygen parses. Internally Doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: +# https://www.gnu.org/software/libiconv/) for the list of possible encodings. +# See also: INPUT_FILE_ENCODING +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# This tag can be used to specify the character encoding of the source files +# that Doxygen parses. The INPUT_FILE_ENCODING tag can be used to specify +# character encoding on a per file pattern basis. Doxygen will compare the file +# name with each pattern and apply the encoding instead of the default +# INPUT_ENCODING if there is a match. The character encodings are a list of the +# form: pattern=encoding (like *.php=ISO-8859-1). +# See also: INPUT_ENCODING for further information on supported encodings. + +INPUT_FILE_ENCODING = + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by Doxygen. +# +# Note the list of default checked file patterns might differ from the list of +# default file extension mappings. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cxxm, +# *.cpp, *.cppm, *.ccm, *.c++, *.c++m, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, +# *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.ixx, *.l, *.cs, *.d, +# *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to +# be provided as Doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, +# *.f18, *.f, *.for, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice. + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cxxm \ + *.cpp \ + *.cppm \ + *.ccm \ + *.c++ \ + *.c++m \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.idl \ + *.ddl \ + *.odl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.ixx \ + *.l \ + *.cs \ + *.d \ + *.php \ + *.php4 \ + *.php5 \ + *.phtml \ + *.inc \ + *.m \ + *.markdown \ + *.md \ + *.mm \ + *.dox \ + *.py \ + *.pyw \ + *.f90 \ + *.f95 \ + *.f03 \ + *.f08 \ + *.f18 \ + *.f \ + *.for \ + *.vhd \ + *.vhdl \ + *.ucf \ + *.qsf \ + *.ice + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which Doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# ANamespace::AClass, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = ./ + +# The INPUT_FILTER tag can be used to specify a program that Doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that Doxygen will use the data processed and written to standard output +# for further processing, therefore nothing else, like debug statements or used +# commands (so in case of a Windows batch file always use @echo OFF), should be +# written to standard output. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by Doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by Doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the Doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +# If the IMPLICIT_DIR_DOCS tag is set to YES, any README.md file found in sub- +# directories of the project's root, is used as the documentation for that sub- +# directory, except when the README.md starts with a \dir, \page or \mainpage +# command. If set to NO, the README.md file needs to start with an explicit \dir +# command in order to be used as directory documentation. +# The default value is: YES. + +IMPLICIT_DIR_DOCS = YES + +# The Fortran standard specifies that for fixed formatted Fortran code all +# characters from position 72 are to be considered as comment. A common +# extension is to allow longer lines before the automatic comment starts. The +# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can +# be processed before the automatic comment starts. +# Minimum value: 7, maximum value: 10000, default value: 72. + +FORTRAN_COMMENT_AFTER = 72 + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# multi-line macros, enums or list initialized variables directly into the +# documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct Doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# entity all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of Doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by Doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then Doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then Doxygen will use the +# clang parser (see: +# http://clang.llvm.org/) for more accurate parsing at the cost of reduced +# performance. This can be particularly helpful with template rich C++ code for +# which Doxygen's built-in parser lacks the necessary type information. +# Note: The availability of this option depends on whether or not Doxygen was +# generated with the -Duse_libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If the CLANG_ASSISTED_PARSING tag is set to YES and the CLANG_ADD_INC_PATHS +# tag is set to YES then Doxygen will add the directory of each input to the +# include path. +# The default value is: YES. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_ADD_INC_PATHS = YES + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by Doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +# If clang assisted parsing is enabled you can provide the clang parser with the +# path to the directory containing a file called compile_commands.json. This +# file is the compilation database (see: +# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the +# options used when the source files were built. This is equivalent to +# specifying the -p option to a clang tool, such as clang-check. These options +# will then be passed to the parser. Any options specified with CLANG_OPTIONS +# will be added as well. +# Note: The availability of this option depends on whether or not Doxygen was +# generated with the -Duse_libclang=ON option for CMake. + +CLANG_DATABASE_PATH = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes) +# that should be ignored while generating the index headers. The IGNORE_PREFIX +# tag works for classes, function and member names. The entity will be placed in +# the alphabetical list under the first letter of the entity name that remains +# after removing the prefix. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, Doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank Doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that Doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that Doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of Doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank Doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that Doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = newfooter.html + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank Doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that Doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by Doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). +# Note: Since the styling of scrollbars can currently not be overruled in +# Webkit/Chromium, the styling will be left out of the default doxygen.css if +# one or more extra stylesheets have been specified. So if scrollbar +# customization is desired it has to be added explicitly. For an example see the +# documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = doxygen-awesome.css + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output +# should be rendered with a dark or light theme. +# Possible values are: LIGHT always generates light mode output, DARK always +# generates dark mode output, AUTO_LIGHT automatically sets the mode according +# to the user preference, uses light mode if no preference is set (the default), +# AUTO_DARK automatically sets the mode according to the user preference, uses +# dark mode if no preference is set and TOGGLE allows a user to switch between +# light and dark mode via a button. +# The default value is: AUTO_LIGHT. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE = LIGHT + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a color-wheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use gray-scales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# If the HTML_CODE_FOLDING tag is set to YES then classes and functions can be +# dynamically folded and expanded in the generated HTML source code. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_CODE_FOLDING = YES + +# If the HTML_COPY_CLIPBOARD tag is set to YES then Doxygen will show an icon in +# the top right corner of code and text fragments that allows the user to copy +# its content to the clipboard. Note this only works if supported by the browser +# and the web page is served via a secure context (see: +# https://www.w3.org/TR/secure-contexts/), i.e. using the https: or file: +# protocol. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COPY_CLIPBOARD = YES + +# Doxygen stores a couple of settings persistently in the browser (via e.g. +# cookies). By default these settings apply to all HTML pages generated by +# Doxygen across all projects. The HTML_PROJECT_COOKIE tag can be used to store +# the settings under a project specific key, such that the user preferences will +# be stored separately. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_PROJECT_COOKIE = + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: +# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To +# create a documentation set, Doxygen will generate a Makefile in the HTML +# output directory. Running make will produce the docset in that directory and +# running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag determines the URL of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDURL = + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then Doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# on Windows. In the beginning of 2021 Microsoft took the original page, with +# a.o. the download links, offline (the HTML help workshop was already many +# years in maintenance mode). You can download the HTML help workshop from the +# web archives at Installation executable (see: +# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo +# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by Doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# Doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the main .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# The SITEMAP_URL tag is used to specify the full URL of the place where the +# generated documentation will be placed on the server by the user during the +# deployment of the documentation. The generated sitemap is called sitemap.xml +# and placed on the directory specified by HTML_OUTPUT. In case no SITEMAP_URL +# is specified no sitemap is generated. For information about the sitemap +# protocol see https://www.sitemaps.org +# This tag requires that the tag GENERATE_HTML is set to YES. + +SITEMAP_URL = + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location (absolute path +# including file name) of Qt's qhelpgenerator. If non-empty Doxygen will try to +# run qhelpgenerator on the generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine tune the look of the index (see "Fine-tuning the output"). As an +# example, the default style sheet generated by Doxygen has an example that +# shows how to put an image at the root of the tree instead of the PROJECT_NAME. +# Since the tree basically has the same information as the tab index, you could +# consider setting DISABLE_INDEX to YES when enabling this option. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = YES + +# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the +# FULL_SIDEBAR option determines if the side bar is limited to only the treeview +# area (value NO) or if it should extend to the full height of the window (value +# YES). Setting this to YES gives a layout similar to +# https://docs.readthedocs.io with more room for contents, but less room for the +# project logo, title, and description. If either GENERATE_TREEVIEW or +# DISABLE_INDEX is set to NO, this option has no effect. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FULL_SIDEBAR = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# Doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 0 + +# When the SHOW_ENUM_VALUES tag is set doxygen will show the specified +# enumeration values besides the enumeration mnemonics. +# The default value is: NO. + +SHOW_ENUM_VALUES = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, Doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# If the OBFUSCATE_EMAILS tag is set to YES, Doxygen will obfuscate email +# addresses. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +OBFUSCATE_EMAILS = YES + +# If the HTML_FORMULA_FORMAT option is set to svg, Doxygen will use the pdf2svg +# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see +# https://inkscape.org) to generate formulas as SVG images instead of PNGs for +# the HTML output. These images will generally look nicer at scaled resolutions. +# Possible values are: png (the default) and svg (looks nicer but requires the +# pdf2svg or inkscape tool). +# The default value is: png. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FORMULA_FORMAT = png + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# Doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + +FORMULA_MACROFILE = + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side JavaScript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# With MATHJAX_VERSION it is possible to specify the MathJax version to be used. +# Note that the different versions of MathJax have different requirements with +# regards to the different settings, so it is possible that also other MathJax +# settings have to be changed when switching between the different MathJax +# versions. +# Possible values are: MathJax_2 and MathJax_3. +# The default value is: MathJax_2. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_VERSION = MathJax_2 + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. For more details about the output format see MathJax +# version 2 (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3 +# (see: +# http://docs.mathjax.org/en/latest/web/components/output.html). +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility. This is the name for Mathjax version 2, for MathJax version 3 +# this will be translated into chtml), NativeMML (i.e. MathML. Only supported +# for MathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This +# is the name for Mathjax version 3, for MathJax version 2 this will be +# translated into HTML-CSS) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from https://www.mathjax.org before deployment. The default value is: +# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 +# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# for MathJax version 2 (see +# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions): +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# For example for MathJax version 3 (see +# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html): +# MATHJAX_EXTENSIONS = ams +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with JavaScript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled Doxygen will generate a search box for +# the HTML output. The underlying search engine uses JavaScript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the JavaScript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /