From bca63a7fc8b3dcf2f7adaeb36b3ca1aef1b8afe2 Mon Sep 17 00:00:00 2001 From: AndreaRigoni Date: Fri, 17 Apr 2026 09:36:24 +0000 Subject: [PATCH] docs: add agent skill guides and update CMake build instructions --- .agents/{skills => rules}/micromamba_build.md | 25 +- .agents/skills/core_system.md | 49 ++++ .agents/skills/geant_simulation.md | 39 ++++ .agents/skills/memory_management.md | 40 ++++ .agents/skills/signal_bridge.md | 34 +++ .agents/skills/testing_guide.md | 34 +++ .agents/skills/vtk_visualization.md | 52 +++++ CMakePresets.json | 49 +++- README.md | 8 +- cmake_output.log | 217 ++++++++++++++++++ 10 files changed, 521 insertions(+), 26 deletions(-) rename .agents/{skills => rules}/micromamba_build.md (57%) create mode 100644 .agents/skills/core_system.md create mode 100644 .agents/skills/geant_simulation.md create mode 100644 .agents/skills/memory_management.md create mode 100644 .agents/skills/signal_bridge.md create mode 100644 .agents/skills/testing_guide.md create mode 100644 .agents/skills/vtk_visualization.md create mode 100644 cmake_output.log diff --git a/.agents/skills/micromamba_build.md b/.agents/rules/micromamba_build.md similarity index 57% rename from .agents/skills/micromamba_build.md rename to .agents/rules/micromamba_build.md index 2337367..774aab3 100644 --- a/.agents/skills/micromamba_build.md +++ b/.agents/rules/micromamba_build.md @@ -1,6 +1,10 @@ -# Skill: Build uLib with Micromamba +--- +trigger: always_on +--- -This skill provides instructions for building the uLib project using the micromamba environment. +# Rule: Build uLib with Micromamba + +This rule provides instructions for building the uLib project using the micromamba environment. ## Context - **Environment**: micromamba `uLib` @@ -14,26 +18,27 @@ This skill provides instructions for building the uLib project using the microma ```bash export MAMBA_EXE="/home/share/micromamba/bin/micromamba" export MAMBA_ROOT_PREFIX="/home/share/micromamba" - eval "$(/home/share/micromamba/bin/micromamba shell hook --shell bash)" + export PRESET="clang-make" + eval "$(${MAMBA_EXE} shell hook --shell bash)" micromamba activate uLib ``` 2. **Full Rebuild (if needed)**: If the `build` directory does not exist or a full reconfiguration is required: ```bash - conan profile detect --force - conan install . --output-folder=build --build=missing - cmake --preset conan-release + conan install . --output-folder=build/${PRESET} --build=missing --profile=fast + cmake --preset ${PRESET} + cmake --build build/${PRESET} -j$(nproc) ``` 3. **Incremental Build**: Run the build command from the root directory, pointing to the `build` folder and using all cores. ```bash - cmake --build build -j$(nproc) + cmake --build build/${PRESET} -j$(nproc) ``` -4. **Specific Target Build**: +4. **Specific Target Build - gcompose**: To build a specific target (e.g., gcompose): ```bash - cmake --build build --target gcompose -j$(nproc) - ``` + cmake --build build/${PRESET} --target gcompose -j$(nproc) + ``` \ No newline at end of file diff --git a/.agents/skills/core_system.md b/.agents/skills/core_system.md new file mode 100644 index 0000000..6b4a91c --- /dev/null +++ b/.agents/skills/core_system.md @@ -0,0 +1,49 @@ +# Skill: Core Object & Property System + +This skill defines the patterns for implementing and working with the `uLib` core object model. + +## Context +- **Base Class**: `uLib::Object` +- **Property System**: `uLib::Property` +- **Registration**: All objects must register their properties for UI visibility and serialization. + +## Implementation Patterns + +### 1. Defining an Object +Inherit from `uLib::Object` and use the `ULIB_PROPERTY` macro for members. +```cpp +class MyObject : public uLib::Object { +public: + ULIB_PROPERTY(double, Speed, 0.0) + ULIB_PROPERTY(std::string, Description, "None") + + MyObject() { + // Required for property visibility in PropertyEditor + ULIB_ACTIVATE_PROPERTIES(*this) + } +}; +``` + +### 2. Property Access +Properties can be treated like their underlying types or accessed via `.Get()`/`.Set()`. +```cpp +obj.Speed = 10.5; // Triggers Updated() signal +double s = obj.Speed; // Implicit conversion +obj.Speed.SetRange(0.0, 100.0); // Setting metadata +``` + +### 3. Serialization +Implement `serialize` overloads for different archive types. Use `hrp` (Human Readable Property) to name fields. +```cpp +template +void serialize(ArchiveT &ar, const unsigned int version) { + ar & boost::serialization::make_nvp("InstanceName", this->GetInstanceName()); + ar & boost::serialization::make_hrp("Speed", Speed, "m/s"); +} +``` + +## Checklist +- [ ] Inherit from `uLib::Object`. +- [ ] Use `ULIB_PROPERTY` for members that should appear in the GUI. +- [ ] Call `ULIB_ACTIVATE_PROPERTIES` in the constructor. +- [ ] Implement `serialize` if persistence is required. diff --git a/.agents/skills/geant_simulation.md b/.agents/skills/geant_simulation.md new file mode 100644 index 0000000..4b13e36 --- /dev/null +++ b/.agents/skills/geant_simulation.md @@ -0,0 +1,39 @@ +# Skill: HEP/Geant Simulation Rules + +This skill provides instructions for developing the Geant4 simulation components within `uLib`. + +## Context +- **Domain Objects**: `Material`, `Solid`, `LogicalVolume`, `PhysicalVolume`. +- **Integration**: `mutomGeant` library wraps Geant4 classes into `uLib::Object`s. + +## Patterns + +### 1. Adding a New Solid +New solids must implement `GetPolyhedron()` to support VTK visualization. +```cpp +G4Polyhedron* MySolid::GetPolyhedron() const { + // Return the tessellated representation of the Geant4 solid + return m_G4Solid->GetPolyhedron(); +} +``` + +### 2. Physical Volume Hierarchy +Maintain the relationship between `PhysicalVolume` and its parent `LogicalVolume`. +```cpp +auto* world = new LogicalVolume(worldSolid, worldMat); +auto* detector = new PhysicalVolume(detectorLogic, world, "Detector1"); +detector->SetPosition({0, 0, 100}); // Relative to parent +``` + +### 3. Transformation Synchronization +Use the centralized `TRS` object to manage position and rotation. Synchronization with Geant4's internal stores should be reactive. +- Listen to `Object::Updated` on the `Solid` or `PhysicalVolume`. +- Update the underlying `G4VPhysicalVolume` position/rotation. + +## Material Management +Use the `Matter` class to manage Geant4 materials. Ensure materials are registered in the `G4NistManager` or custom material store if needed. + +## Checklist +- [ ] Does the solid implement `GetPolyhedron()`? +- [ ] Are parents correctly assigned in `PhysicalVolume` constructors? +- [ ] Is the `TRS` object used for all spatial transformations? diff --git a/.agents/skills/memory_management.md b/.agents/skills/memory_management.md new file mode 100644 index 0000000..945228f --- /dev/null +++ b/.agents/skills/memory_management.md @@ -0,0 +1,40 @@ +# Skill: Memory Management & Object Lifecycle + +This skill provides guidelines for managing memory safely within the `uLib` framework to prevent memory corruption and leaks. + +## Context +- **Ownership**: `ObjectsContext` typically owns its children. +- **Shared Access**: Use `SmartPointer` for objects shared across multiple systems (e.g., Geant4 and VTK). +- **Core Principle**: Avoid manual `delete` on objects managed by the framework. + +## Patterns + +### 1. Context Ownership +When an object is added to an `ObjectsContext`, it is managed by that context. +```cpp +auto* context = new ObjectsContext(); +auto* obj = new MyObject(); +context->AddObject(obj); +// Do NOT delete obj; it will be deleted when context is destroyed. +``` + +### 2. Smart Pointers +Use `SmartPointer` for resources like `Material` or `Solid` that are used by both domain logic and external engines (Geant4). +```cpp +uLib::SmartPointer mat = new Material("Lead"); +solid->SetMaterial(mat); // Shared ownership +``` + +### 3. Geant4 Object Safety +Geant4 often takes ownership of certain objects (like `G4VPhysicalVolume`). When wrapping these: +- Ensure the wrapper doesn't double-free the Geant4-owned pointer. +- Use `recursion_guard` if synchronizing transformations between `uLib::Object` and Geant4 volumes to prevent signal loops. + +## Debugging Memory Issues +- **SIGABRT (invalid pointer)**: Usually caused by deleting an object that was already managed (and deleted) by an `ObjectsContext` or `SmartPointer`. +- **Leaks**: Check if objects were created but never added to a context or wrapped in a `SmartPointer`. + +## Checklist +- [ ] Are objects added to an `ObjectsContext`? +- [ ] Is `SmartPointer` used for shared resources? +- [ ] Is there a risk of double-freeing Geant4-managed pointers? diff --git a/.agents/skills/signal_bridge.md b/.agents/skills/signal_bridge.md new file mode 100644 index 0000000..7ad38ec --- /dev/null +++ b/.agents/skills/signal_bridge.md @@ -0,0 +1,34 @@ +# Skill: Multi-System Signaling (uLib ↔ Qt) + +This skill manages the coexistence of `uLib::Object` signals and Qt's `Q_OBJECT` signaling system. + +## Context +- **uLib Signals**: Used for domain logic and data changes (`uLib::Object::connect`). +- **Qt Signals**: Used for UI events, widgets, and application-level control flow (`QObject::connect`). + +## Patterns + +### 1. Bridging Logic +When a domain change needs to trigger a UI update, use a wrapper or a direct connection if the widget has access to the `uLib::Object`. +```cpp +// In a Qt Widget +uLib::Object::connect(domainObj, &Object::Updated, [this]() { + this->update(); // Trigger Qt repaint +}); +``` + +### 2. Selection Flow +Selection usually starts in the VTK Viewport (Qt) and flows to the domain context. +1. `QViewport` emits `prop3dSelected(Prop3D*)` (Qt signal). +2. `MainPanel` catches it and calls `contextPanel->selectObject(p->GetContent())`. +3. `ContextPanel` updates the tree view and property editors. + +### 3. Connection Hygiene +- Use `uLib::Object::connect` for everything involving `uLib::Property` changes. +- Use Qt `connect` for button clicks, menu actions, and window events. +- Be careful with lambda captures; ensure the captured object is still alive or use weak pointers if necessary. + +## Checklist +- [ ] Is the correct signaling system being used for the task? +- [ ] Are capture groups in lambdas safe? +- [ ] Does selection flow correctly between the 3D view and the tree view? diff --git a/.agents/skills/testing_guide.md b/.agents/skills/testing_guide.md new file mode 100644 index 0000000..573c235 --- /dev/null +++ b/.agents/skills/testing_guide.md @@ -0,0 +1,34 @@ +# Skill: Standardized Testing & Validation + +This skill provides the standard workflow for testing and validating changes in the `uLib` project. + +## Context +- **Tooling**: `ctest` and direct execution of test binaries in the `build/` directory. +- **Location**: Test binaries are typically located in `build/src/*/testing/` or `build/Testing/`. + +## Workflow + +### 1. Running All Tests +From the root directory: +```bash +ctest --test-dir build/clang-make --output-on-failure +``` + +### 2. Running Component Tests +Run specific categories of tests: +- **Core**: `./build/clang-make/src/Core/testing/CoreTest` +- **Math**: `./build/clang-make/src/Math/testing/MathVectorTest` +- **Geant**: `./build/clang-make/src/HEP/Geant/testing/GeantApp` +- **VTK**: `./build/clang-make/src/Vtk/testing/vtkViewerTest` + +### 3. Debugging a Failing Test +Run the binary directly through `gdb` or `valgrind` (if available): +```bash +gdb --args ./build/clang-make/src/Core/testing/ObjectWrapperTest +``` + +## Validation Checklist for New Features +- [ ] Does `ctest` pass globally? +- [ ] If changing visualization, does `vtkViewerTest` show the correct results? +- [ ] If changing Geant logic, does `GeantApp` run without memory aborts? +- [ ] Are new tests added to the appropriate `CMakeLists.txt`? diff --git a/.agents/skills/vtk_visualization.md b/.agents/skills/vtk_visualization.md new file mode 100644 index 0000000..8ecafbb --- /dev/null +++ b/.agents/skills/vtk_visualization.md @@ -0,0 +1,52 @@ +# Skill: VTK Visualization Pipeline + +This skill defines how to bridge domain objects with the VTK 3D visualization layer. + +## Context +- **Wrapper**: `Prop3D` (wraps a `vtkProp`). +- **Mapping**: `Viewport` maintains `m_ObjectToProp3D` for synchronization. +- **GUI Integration**: `QViewport` handles Qt events and selection signals. + +## Implementation Patterns + +### 1. Creating a Prop3D +A `Prop3D` should wrap a domain object and update its visual state when the object changes. +```cpp +class MyProp3D : public Prop3D { +public: + MyProp3D(MyObject* obj) : Prop3D(obj) { + // Connect domain updates to visual refreshes + uLib::Object::connect(obj, &Object::Updated, [this]() { this->SyncFromObject(); }); + + // Expose properties to the VTK side-panel + ULIB_ACTIVATE_DISPLAY_PROPERTIES(*this) + } + + void SyncFromObject() { + // Update VTK actors/mappers from MyObject's properties + } +}; +``` + +### 2. Display Properties +Use `serialize_display` to choose which properties of the domain object or the `Prop3D` itself are visible in the sliding "Display Properties" panel in `gcompose`. +```cpp +void serialize_display(Archive::display_properties_archive &ar) { + ar & boost::serialization::make_hrp("Opacity", m_Opacity); + ar & boost::serialization::make_hrp("Wireframe", m_Wireframe); +} +``` + +### 3. Transformation Sync (TRS) +Always synchronize the object's `trs` (Translate, Rotate, Scale) with the VTK actor's user transform. +```cpp +void UpdateTransform() { + auto matrix = GetContent()->GetTransform().GetMatrix(); + m_Actor->SetUserMatrix(uLib::ToVtkMatrix(matrix)); +} +``` + +## Checklist +- [ ] Does the `Prop3D` connect to the object's `Updated()` signal? +- [ ] Are `ULIB_ACTIVATE_DISPLAY_PROPERTIES` and `serialize_display` implemented? +- [ ] Is the transformation (TRS) correctly mapped to the VTK actor? diff --git a/CMakePresets.json b/CMakePresets.json index 0ec5ff2..1515fe3 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -2,22 +2,22 @@ "version": 8, "configurePresets": [ { - "name": "andrea", + "name": "gcc-make", "displayName": "Custom configure preset", - "description": "Sets Ninja generator, build and install directory", - "generator": "Ninja", - "binaryDir": "${sourceDir}/out/build/${presetName}", + "description": "Sets Makefile generator, build and install directory", + "generator": "Unix Makefiles", + "binaryDir": "${sourceDir}/build/${presetName}", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}" } }, { - "name": "fast", - "displayName": "Fast build: Ninja + clang + ccache", + "name": "clang-ninja", + "displayName": "Ninja + clang + ccache", "description": "Uses Ninja generator, clang/lld compiler, and ccache", "generator": "Ninja", - "binaryDir": "${sourceDir}/build", + "binaryDir": "${sourceDir}/build/${presetName}", "cacheVariables": { "CMAKE_BUILD_TYPE": "Release", "CMAKE_C_COMPILER": "clang", @@ -29,10 +29,37 @@ } }, { - "name": "mutom", - "description": "", - "displayName": "", - "inherits": [] + "name": "clang-make", + "displayName": "Makefile + clang + ccache", + "description": "Uses Makefile generator, clang/lld compiler, and ccache", + "generator": "Unix Makefiles", + "binaryDir": "${sourceDir}/build/${presetName}", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release", + "CMAKE_C_COMPILER": "clang", + "CMAKE_CXX_COMPILER": "clang++", + "CMAKE_EXE_LINKER_FLAGS": "-fuse-ld=lld", + "CMAKE_SHARED_LINKER_FLAGS": "-fuse-ld=lld", + "CMAKE_CXX_COMPILER_LAUNCHER": "ccache", + "CMAKE_C_COMPILER_LAUNCHER": "ccache" + } + }, + { + "name": "cuda", + "displayName": "Makefile + clang + ccache", + "description": "Uses Makefile generator, clang/lld compiler, and ccache", + "generator": "Unix Makefiles", + "binaryDir": "${sourceDir}/build/${presetName}", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release", + "CMAKE_C_COMPILER": "clang", + "CMAKE_CXX_COMPILER": "clang++", + "CMAKE_EXE_LINKER_FLAGS": "-fuse-ld=lld", + "CMAKE_SHARED_LINKER_FLAGS": "-fuse-ld=lld", + "CMAKE_CXX_COMPILER_LAUNCHER": "ccache", + "CMAKE_C_COMPILER_LAUNCHER": "ccache", + "USE_CUDA": "ON" + } } ] } diff --git a/README.md b/README.md index 0b7729d..7856b51 100644 --- a/README.md +++ b/README.md @@ -88,11 +88,9 @@ micromamba install -n uLib -y clang clangxx lld -c conda-forge Then build using the `fast` profile: ```bash -conan install . --output-folder=build --build=missing --profile=fast -cmake -B build -G Ninja \ - -DCMAKE_TOOLCHAIN_FILE=build/conan_toolchain.cmake \ - -DCMAKE_BUILD_TYPE=Release -cmake --build build -j$(nproc) +conan install . --output-folder=build/clang-ninja --build=missing --profile=fast +cmake --preset clang-ninja +cmake --build build/clang-ninja -j$(nproc) ``` The `fast` profile is defined at `~/.conan2/profiles/fast` and sets: diff --git a/cmake_output.log b/cmake_output.log new file mode 100644 index 0000000..640a6ea --- /dev/null +++ b/cmake_output.log @@ -0,0 +1,217 @@ +-- Using Conan toolchain: /home/rigoni/devel/cmt/uLib/build/clang-make/conan_toolchain.cmake +-- Conan toolchain: Defining architecture flag: -m64 +-- Conan toolchain: Defining libcxx as C++ flags: -stdlib=libstdc++ +-- Conan toolchain: C++ Standard 17 with extensions ON +-- The C compiler identification is Clang 21.1.0 +-- The CXX compiler identification is Clang 21.1.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /home/share/micromamba/envs/uLib/bin/clang - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Detecting CXX compiler ABI info +-- Detecting CXX compiler ABI info - done +-- Check for working CXX compiler: /home/share/micromamba/envs/uLib/bin/clang++ - skipped +-- Detecting CXX compile features +-- Detecting CXX compile features - done +-- Project name = uLib +-- Package name = mutom-0.7 +-- Package version = 0.7 +-- Module path = /home/rigoni/devel/cmt/uLib/CMake;/home/rigoni/devel/cmt/uLib/build/clang-make +-- CMAKE_PREFIX_PATH is /home/rigoni/devel/cmt/uLib/build/clang-make +-- Conan: Component target declared 'hdf5::hdf5' +-- Conan: Component target declared 'hdf5::hdf5_cpp' +-- Conan: Component target declared 'hdf5::hdf5_hl' +-- Conan: Component target declared 'hdf5::hdf5_hl_cpp' +-- Conan: Target declared 'HDF5::HDF5' +-- Conan: Target declared 'ZLIB::ZLIB' +-- Conan: Including build module from '/home/rigoni/.conan2/p/b/hdf509daaae89dd98/p/lib/cmake/conan-official-hdf5-variables.cmake' +-- Conan: Component target declared 'Boost::diagnostic_definitions' +-- Conan: Component target declared 'Boost::disable_autolinking' +-- Conan: Component target declared 'Boost::dynamic_linking' +-- Conan: Component target declared 'Boost::headers' +-- Conan: Component target declared 'Boost::boost' +-- Conan: Component target declared 'boost::_libboost' +-- Conan: Component target declared 'Boost::atomic' +-- Conan: Component target declared 'Boost::charconv' +-- Conan: Component target declared 'Boost::container' +-- Conan: Component target declared 'Boost::context' +-- Conan: Component target declared 'Boost::date_time' +-- Conan: Component target declared 'Boost::exception' +-- Conan: Component target declared 'Boost::math' +-- Conan: Component target declared 'Boost::program_options' +-- Conan: Component target declared 'Boost::regex' +-- Conan: Component target declared 'Boost::serialization' +-- Conan: Component target declared 'Boost::stacktrace' +-- Conan: Component target declared 'Boost::system' +-- Conan: Component target declared 'Boost::timer' +-- Conan: Component target declared 'Boost::chrono' +-- Conan: Component target declared 'Boost::coroutine' +-- Conan: Component target declared 'Boost::filesystem' +-- Conan: Component target declared 'Boost::json' +-- Conan: Component target declared 'Boost::math_c99' +-- Conan: Component target declared 'Boost::math_c99f' +-- Conan: Component target declared 'Boost::math_c99l' +-- Conan: Component target declared 'Boost::math_tr1' +-- Conan: Component target declared 'Boost::math_tr1f' +-- Conan: Component target declared 'Boost::math_tr1l' +-- Conan: Component target declared 'Boost::random' +-- Conan: Component target declared 'Boost::stacktrace_addr2line' +-- Conan: Component target declared 'Boost::stacktrace_backtrace' +-- Conan: Component target declared 'Boost::stacktrace_basic' +-- Conan: Component target declared 'Boost::stacktrace_from_exception' +-- Conan: Component target declared 'Boost::stacktrace_noop' +-- Conan: Component target declared 'Boost::test' +-- Conan: Component target declared 'Boost::url' +-- Conan: Component target declared 'Boost::wserialization' +-- Conan: Component target declared 'Boost::fiber' +-- Conan: Component target declared 'Boost::graph' +-- Conan: Component target declared 'Boost::iostreams' +-- Conan: Component target declared 'Boost::nowide' +-- Conan: Component target declared 'Boost::prg_exec_monitor' +-- Conan: Component target declared 'Boost::process' +-- Conan: Component target declared 'Boost::test_exec_monitor' +-- Conan: Component target declared 'Boost::thread' +-- Conan: Component target declared 'Boost::wave' +-- Conan: Component target declared 'Boost::contract' +-- Conan: Component target declared 'Boost::fiber_numa' +-- Conan: Component target declared 'Boost::locale' +-- Conan: Component target declared 'Boost::log' +-- Conan: Component target declared 'Boost::type_erasure' +-- Conan: Component target declared 'Boost::unit_test_framework' +-- Conan: Component target declared 'Boost::log_setup' +-- Conan: Target declared 'boost::boost' +-- Conan: Target declared 'BZip2::BZip2' +-- Conan: Including build module from '/home/rigoni/.conan2/p/b/bzip2b5764e08a4f7d/p/lib/cmake/conan-official-bzip2-variables.cmake' +-- Conan: Target declared 'libbacktrace::libbacktrace' +-- Found OpenMP_C: -fopenmp=libomp (found version "5.1") +-- Found OpenMP_CXX: -fopenmp=libomp (found version "5.1") +-- Found OpenMP: TRUE (found version "5.1") +-- Found nlohmann_json: /home/share/micromamba/envs/uLib/share/cmake/nlohmann_json/nlohmann_jsonConfig.cmake (found suitable version "3.12.0", minimum required is "3.12.0") +-- Found Vdt: /home/share/micromamba/envs/uLib/include (found version "0.4") +-- Warning: Standard CMAKE_CXX_STANDARD value defined in conan_toolchain.cmake to 17 has been modified to 20 by /home/share/micromamba/envs/uLib/cmake/ROOTUseFile.cmake +-- Found Python3: /home/share/micromamba/envs/uLib/bin/python3.12 (found suitable version "3.12.13", minimum required is "3.12") found components: Interpreter Development.Module Development.Embed +-- Found nlohmann_json: /home/share/micromamba/envs/uLib/share/cmake/nlohmann_json/nlohmann_jsonConfig.cmake (found version "3.12.0") +-- Performing Test CMAKE_HAVE_LIBC_PTHREAD +-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success +-- Found Threads: TRUE +-- Performing Test HAVE_STDATOMIC +-- Performing Test HAVE_STDATOMIC - Success +-- Found WrapAtomic: TRUE +-- Found OpenGL: /home/share/micromamba/envs/uLib/lib/libOpenGL.so +-- Found WrapOpenGL: TRUE +-- Could NOT find WrapVulkanHeaders (missing: Vulkan_INCLUDE_DIR) +-- Found X11: /home/share/micromamba/envs/uLib/include +-- Looking for XOpenDisplay in /home/share/micromamba/envs/uLib/lib/libX11.so;/home/share/micromamba/envs/uLib/lib/libXext.so +-- Looking for XOpenDisplay in /home/share/micromamba/envs/uLib/lib/libX11.so;/home/share/micromamba/envs/uLib/lib/libXext.so - found +-- Looking for gethostbyname +-- Looking for gethostbyname - found +-- Looking for connect +-- Looking for connect - found +-- Looking for remove +-- Looking for remove - found +-- Looking for shmat +-- Looking for shmat - found +-- Looking for IceConnectionNumber in ICE +-- Looking for IceConnectionNumber in ICE - found +-- Performing Test Iconv_IS_BUILT_IN +-- Performing Test Iconv_IS_BUILT_IN - Failed +-- Found Iconv: /home/share/micromamba/envs/uLib/lib/libiconv.so (found version "1.18") +-- Found ICU: /home/share/micromamba/envs/uLib/include (found version "75.1") found components: data i18n uc +-- Looking for lzma_auto_decoder in /home/share/micromamba/envs/uLib/lib/liblzma.so +-- Looking for lzma_auto_decoder in /home/share/micromamba/envs/uLib/lib/liblzma.so - found +-- Looking for lzma_easy_encoder in /home/share/micromamba/envs/uLib/lib/liblzma.so +-- Looking for lzma_easy_encoder in /home/share/micromamba/envs/uLib/lib/liblzma.so - found +-- Looking for lzma_lzma_preset in /home/share/micromamba/envs/uLib/lib/liblzma.so +-- Looking for lzma_lzma_preset in /home/share/micromamba/envs/uLib/lib/liblzma.so - found +-- Found LibLZMA: /home/share/micromamba/envs/uLib/lib/liblzma.so (found version "5.8.2") +-- Conan: Including build module from '/home/rigoni/.conan2/p/b/hdf509daaae89dd98/p/lib/cmake/conan-official-hdf5-variables.cmake' +-- Found utf8cpp: /home/share/micromamba/envs/uLib/include +-- Found THEORA: /home/share/micromamba/envs/uLib/lib/libtheora.so +-- Found OGG: /home/share/micromamba/envs/uLib/lib/libogg.so +-- Found NetCDF: /home/share/micromamba/envs/uLib/include (found version "4.9.2") +-- Found JsonCpp: /home/share/micromamba/envs/uLib/lib/libjsoncpp.so (found suitable version "1.9.6", minimum required is "0.7.0") +-- Found PNG: /home/share/micromamba/envs/uLib/lib/libpng.so (found version "1.6.56") +-- Found GL2PS: /home/share/micromamba/envs/uLib/lib/libgl2ps.so (found suitable version "1.4.2", minimum required is "1.4.2") +-- Found LibPROJ: /home/share/micromamba/envs/uLib/lib/libproj.so (found version "9.6.2") +-- Found SQLite3: /home/share/micromamba/envs/uLib/lib/libsqlite3.so (found version "3.52.0") +-- Could NOT find WrapVulkanHeaders (missing: Vulkan_INCLUDE_DIR) +-- Found LZ4: /home/share/micromamba/envs/uLib/lib/liblz4.so (found version "1.10.0") +-- Found LZMA: /home/share/micromamba/envs/uLib/lib/liblzma.so (found version "5.8.2") +-- Found JPEG: /home/share/micromamba/envs/uLib/lib/libjpeg.so (found version "80") +-- Found TIFF: /home/share/micromamba/envs/uLib/lib/libtiff.so (found version "4.7.1") +-- Could NOT find freetype (missing: freetype_DIR) +-- Found Freetype: /home/share/micromamba/envs/uLib/lib/libfreetype.so (found version "2.14.3") +-- Performing Test HAS_FLTO_THIN +-- Performing Test HAS_FLTO_THIN - Failed +-- Performing Test HAS_FLTO_AUTO +-- Performing Test HAS_FLTO_AUTO - Failed +-- Performing Test HAS_FLTO +-- Performing Test HAS_FLTO - Failed +-- Found pybind11: /home/share/micromamba/envs/uLib/include (found version "3.0.3") +-- Could NOT find freetype (missing: freetype_DIR) +CMake Deprecation Warning at /home/share/micromamba/envs/uLib/lib/cmake/Geant4/PTL/PTLConfig.cmake:30 (cmake_minimum_required): + Compatibility with CMake < 3.10 will be removed from a future version of + CMake. + + Update the VERSION argument value. Or, use the ... syntax + to tell CMake that the project requires at least but has been updated + to work with policies introduced by or earlier. +Call Stack (most recent call first): + /home/share/micromamba/envs/uLib/share/cmake-4.2/Modules/CMakeFindDependencyMacro.cmake:93 (find_package) + /home/share/micromamba/envs/uLib/share/cmake-4.2/Modules/CMakeFindDependencyMacro.cmake:125 (__find_dependency_common) + /home/share/micromamba/envs/uLib/lib/cmake/Geant4/Geant4Config.cmake:286 (find_dependency) + CMakeLists.txt:194 (find_package) + + +-- Found XercesC: /home/share/micromamba/envs/uLib/lib/libxerces-c.so (found suitable version "3.2.5", minimum required is "3.2.5") +-- Found Freetype: /home/share/micromamba/envs/uLib/lib/libfreetype.so (found suitable version "2.14.3", minimum required is "2.12.1") +-- Found Geant4: /home/share/micromamba/envs/uLib/lib/cmake/Geant4/Geant4Config.cmake (found version "11.2.2") +-- Geant4 libs: Geant4::G4Tree;Geant4::G4FR;Geant4::G4GMocren;Geant4::G4visHepRep;Geant4::G4RayTracer;Geant4::G4VRML;Geant4::G4ToolsSG;Geant4::G4vis_management;Geant4::G4modeling;Geant4::G4interfaces;Geant4::G4mctruth;Geant4::G4geomtext;Geant4::G4gdml;Geant4::G4analysis;Geant4::G4error_propagation;Geant4::G4readout;Geant4::G4physicslists;Geant4::G4run;Geant4::G4event;Geant4::G4tracking;Geant4::G4parmodels;Geant4::G4processes;Geant4::G4digits_hits;Geant4::G4track;Geant4::G4particles;Geant4::G4geometry;Geant4::G4materials;Geant4::G4graphics_reps;Geant4::G4intercoms;Geant4::G4global;Geant4::G4tools;Geant4::G4ptl +-- Looking for include file inittypes.h +-- Looking for include file inittypes.h - not found +-- Looking for include file stdbool.h +-- Looking for include file stdbool.h - not found +-- Looking for include file stdint.h +-- Looking for include file stdint.h - not found +-- Looking for include file stdlib.h +-- Looking for include file stdlib.h - not found +-- Looking for include file dlfcn.h +-- Looking for include file dlfcn.h - not found +-- Looking for include file malloc.h +-- Looking for include file malloc.h - not found +-- Looking for malloc +-- Looking for malloc - not found +-- Looking for include file memory.h +-- Looking for include file memory.h - not found +-- Looking for include file math.h +-- Looking for include file math.h - not found +-- Looking for fsetround +-- Looking for fsetround - not found +-- Looking for floor +-- Looking for floor - not found +-- Looking for pow +-- Looking for pow - not found +-- Looking for sqrt +-- Looking for sqrt - not found +-- Looking for strdup +-- Looking for strdup - not found +-- Looking for strstr +-- Looking for strstr - not found +-- Looking for include file strings.h +-- Looking for include file strings.h - not found +-- Looking for include file string.h +-- Looking for include file string.h - not found +-- Looking for include file sys/stat.h +-- Looking for include file sys/stat.h - not found +-- Looking for include file sys/types.h +-- Looking for include file sys/types.h - not found +-- Looking for include file unistd.h +-- Looking for include file unistd.h - not found +-- Looking for include file assert.h +-- Looking for include file assert.h - not found +-- Geant4 found: 11.2.2 +-- Found Python3: /home/share/micromamba/envs/uLib/bin/python3.12 (found version "3.12.13") found components: Interpreter +-- Configuring done (9.2s) +-- Generating done (1.6s) +-- Build files have been written to: /home/rigoni/devel/cmt/uLib/build/clang-make