Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
2049ff7
Add constants header to prefix handling
ystade Feb 11, 2026
1dc02dd
Add installation instructions for device
ystade Feb 11, 2026
4c3f8b3
Use dependent option
ystade Feb 11, 2026
7bfcda0
Remove qdmi target
ystade Feb 11, 2026
253516f
🎨 pre-commit fixes
pre-commit-ci[bot] Feb 11, 2026
09f0cbc
Update changelog
ystade Feb 11, 2026
9401dfa
remove install intr because they already exist
ystade Feb 11, 2026
aac020d
Update changelog
ystade Feb 11, 2026
e1280a1
Remove unsused option
ystade Feb 11, 2026
35964b8
Instantiate device from template
ystade Feb 11, 2026
af3620a
Update cxx std
ystade Feb 11, 2026
833da05
Fix cmake
ystade Feb 11, 2026
3e929e3
Fix template
ystade Feb 11, 2026
daed971
Fix tests
ystade Feb 11, 2026
47e10ae
Enable device tests
ystade Feb 11, 2026
8cb41a1
Remove qdmi target from the one linked with devices
ystade Feb 11, 2026
8e5219f
Add install instructions from template
ystade Feb 11, 2026
3fcd551
Rename install vars and align cmake
ystade Feb 11, 2026
f8ef473
Fix indentation
ystade Feb 11, 2026
325731f
Make device installation optional
ystade Feb 11, 2026
16a9ee0
Update changelog
ystade Feb 11, 2026
8c881f4
🎨 pre-commit fixes
pre-commit-ci[bot] Feb 11, 2026
a1aea05
Prevent segfault when freeing session with nullptr
ystade Feb 11, 2026
caae627
Adapt test to new library names
ystade Feb 11, 2026
e5de402
Fix conf file creation
ystade Feb 11, 2026
83679f8
Fix path
ystade Feb 11, 2026
7ae15f5
🎨 pre-commit fixes
pre-commit-ci[bot] Feb 11, 2026
9eea362
Ignore all test dirs
ystade Feb 11, 2026
1509984
Build also device tests when linting
ystade Feb 11, 2026
0ba7c6b
Fix pattern
ystade Feb 11, 2026
5dfdb7d
Fix docs build (avoid recursively adding another Doxyfile
ystade Feb 11, 2026
2c89cdc
Temporarily change qdmi rev in template
ystade Feb 11, 2026
550ea1a
Merge branch 'develop' into example-device-template
ystade Feb 17, 2026
086fc6c
Update device from template
ystade Feb 17, 2026
6db5530
Merge remote-tracking branch 'origin/develop' into example-device-tem…
ystade Feb 23, 2026
653b7ca
Update device
ystade Feb 23, 2026
057af90
Fix bugs in cmake config
ystade Feb 23, 2026
3f79f06
Fix line breaks
ystade Feb 23, 2026
a040463
🐛 Fix codecov config
ystade Feb 24, 2026
627c9aa
Merge remote-tracking branch 'origin/develop' into example-device-tem…
ystade Feb 24, 2026
c313dfc
🎨 Update device
ystade Feb 25, 2026
398dfa5
🎨 pre-commit fixes
pre-commit-ci[bot] Feb 25, 2026
1b0f7f4
✅ Fix coverage settings
ystade Feb 26, 2026
5158132
🎨 Rename qdmi_docs to qdmi-docs for consistency
ystade Feb 26, 2026
560bf0a
🎨 Add license to license config
ystade Feb 26, 2026
e35adfc
🐛 Fix header.html
ystade Feb 26, 2026
a0b8632
🐛 Fix codecov config
ystade Feb 26, 2026
1ae5fd3
✅ Add test case for missing line
ystade Feb 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions .github/codecov.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
ignore:
- "test/**/*"
- "**/test/**/*"

coverage:
range: 60..90
Expand All @@ -23,7 +23,10 @@ flag_management:
- name: cpp
paths:
- "include"
- "examples"
- "examples/device/src"
- "examples/driver"
- "examples/fomac"
- "examples/tool"

parsers:
gcov:
Expand Down
3 changes: 1 addition & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,7 @@ jobs:
with:
clang-version: 21
cpp-linter-extra-args: "-std=c++20"
# do not try to build docs in linter builds
cmake-args: "-DBUILD_QDMI_DOCS=OFF"
cmake-args: "-DBUILD_CXX_QDMI_TESTS=ON"

template:
name: 🏗️ Build and Test Templates
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
- name: Install and Build 🔧
run: |
cmake -S . -B build -DBUILD_QDMI_DOCS=ON
cmake --build build --target qdmi_docs
cmake --build build --target qdmi-docs
mv build/docs/html/ static

- name: Set version variable
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/reusable-cpp-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ jobs:
run: pipx install ninja
- name: Configure CMake
run: |
cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=Debug -DENABLE_COVERAGE=ON -DBUILD_QDMI_DOCS=OFF
cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=Debug -DENABLE_COVERAGE=ON -DBUILD_CXX_QDMI_TESTS=ON
- name: Build
run: cmake --build build --config Debug
- name: Test
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/reusable-cpp-install-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ jobs:
# configure CMake for using the installed QDMI
- name: Configure CMake for use of installed QDMI
run:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DUSE_INSTALLED_QDMI=ON
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DUSE_INSTALLED_QDMI=ON -DBUILD_CXX_QDMI_TESTS=ON
-DCMAKE_PREFIX_PATH=install-dir ${{ inputs.cmake-args }}
# build the project
- name: Build QDMI examples, templates, and tests with installed QDMI
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/reusable-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
if: github.event.action != 'closed'
run: |
cmake -S . -B build -DBUILD_QDMI_DOCS=ON
cmake --build build --target qdmi_docs
cmake --build build --target qdmi-docs
mv build/docs/html/ static
- name: Inject version selector
if: github.event.action != 'closed'
Expand Down
8 changes: 4 additions & 4 deletions .license-tools-config.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"author": {
"name": "Munich Quantum Software Stack Project",
"years": [2024, 2025]
"name": "QDMI Maintainers",
"years": [2024, 2026]
},
"force_author": true,
"custom_license": "Licensed under the Apache License v2.0 with LLVM Exceptions (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttps://github.com/Munich-Quantum-Software-Stack/QDMI/blob/develop/LICENSE.md\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\nLicense for the specific language governing permissions and limitations under the License.\n\nSPDX-License-Identifier: Apache-2.0 WITH LLVM-exception",
"custom_license": "Licensed under the Apache License v2.0 with LLVM Exceptions (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttps://llvm.org/LICENSE.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\nLicense for the specific language governing permissions and limitations under the License.\n\nSPDX-License-Identifier: Apache-2.0 WITH LLVM-exception",
"force_license": true,
"title": false,
"include": ["**/*"],
Expand All @@ -17,6 +17,7 @@
".toml": "POUND_STYLE",
".proto": "SLASH_STYLE",
".ts": "C_STYLE",
".css": "C_STYLE",
".ps1": "POUND_STYLE"
},
"exclude": [
Expand All @@ -27,7 +28,6 @@
".*\\.md",
".*\\.bib",
".*\\.cff",
".*\\.css",
".*\\.json",
".*\\.html",
".*\\.tfc",
Expand Down
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ repos:
hooks:
- id: prettier
types_or: [yaml, markdown, html, css, scss, javascript, json]
exclude: ^docs/header\.html$
exclude: docs/header\.html$

# Catch common capitalization mistakes
- repo: local
Expand Down
8 changes: 7 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,16 @@ clients compiled against a different minor or major version.

## [Unreleased]

### Added

- 👨‍💻 Add an option to disable installation instructions for QDMI (example and template) device ([#326]) ([\@ystade])

### Changed

- 🚸 Export _all_ device headers (incl. `constants.h`) as part of device implementations such that they do not need to link against the header-only QDMI library anymore ([#325]) ([\@ystade], [\@burgholzer])
- 👨‍💻 Base the example device implementation on the device template ([#326]) ([\@ystade])
- 🚸 Increase robustness of the QDMI device template (complete install instructions, uv caching, code cleanup) ([#333]) ([\@burgholzer])
- 🚸 Add a symbol-export header for compiling devices with hidden symbol visibility ([#334]) ([\@burgholzer])
- 🚸 Export _all_ device headers (incl. `constants.h`) as part of device implementations such that they do not need to link against the header-only QDMI library anymore ([#325]) ([\@ystade], [\@burgholzer])

## [1.2.1] - 2025-12-22

Expand Down Expand Up @@ -120,6 +125,7 @@ changelogs._

[#334]: https://github.com/Munich-Quantum-Software-Stack/QDMI/pull/334
[#333]: https://github.com/Munich-Quantum-Software-Stack/QDMI/pull/333
[#326]: https://github.com/Munich-Quantum-Software-Stack/QDMI/pull/326
[#325]: https://github.com/Munich-Quantum-Software-Stack/QDMI/pull/325
[#285]: https://github.com/Munich-Quantum-Software-Stack/QDMI/pull/285
[#275]: https://github.com/Munich-Quantum-Software-Stack/QDMI/pull/275
Expand Down
8 changes: 4 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Copyright (c) 2024 - 2025 Munich Quantum Software Stack Project
# Copyright (c) 2024 - 2026 QDMI Maintainers
# All rights reserved.
#
# Licensed under the Apache License v2.0 with LLVM Exceptions (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://github.com/Munich-Quantum-Software-Stack/QDMI/blob/develop/LICENSE.md
# https://llvm.org/LICENSE.txt
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
Expand Down Expand Up @@ -54,7 +54,7 @@ option(

include(CMakeDependentOption)
cmake_dependent_option(
QDMI_INSTALL "Generate installation instructions for QDMI"
INSTALL_QDMI "Generate installation instructions for QDMI"
${QDMI_MASTER_PROJECT} "NOT USE_INSTALLED_QDMI" OFF)
option(BUILD_QDMI_TESTS "Also build tests for the QDMI project"
${QDMI_MASTER_PROJECT})
Expand Down Expand Up @@ -178,7 +178,7 @@ if(BUILD_QDMI_TESTS)
endif()

# Installation instructions for the main library
if(QDMI_INSTALL)
if(INSTALL_QDMI)
set(QDMI_CONFIG_INSTALL_DIR
"${CMAKE_INSTALL_DATADIR}/cmake/${PROJECT_NAME}"
CACHE INTERNAL "Config install directory")
Expand Down
4 changes: 2 additions & 2 deletions cmake/Cache.cmake
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Copyright (c) 2024 - 2025 Munich Quantum Software Stack Project
# Copyright (c) 2024 - 2026 QDMI Maintainers
# All rights reserved.
#
# Licensed under the Apache License v2.0 with LLVM Exceptions (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://github.com/Munich-Quantum-Software-Stack/QDMI/blob/develop/LICENSE.md
# https://llvm.org/LICENSE.txt
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
Expand Down
4 changes: 2 additions & 2 deletions cmake/CompilerWarnings.cmake
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Copyright (c) 2024 - 2025 Munich Quantum Software Stack Project
# Copyright (c) 2024 - 2026 QDMI Maintainers
# All rights reserved.
#
# Licensed under the Apache License v2.0 with LLVM Exceptions (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://github.com/Munich-Quantum-Software-Stack/QDMI/blob/develop/LICENSE.md
# https://llvm.org/LICENSE.txt
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
Expand Down
4 changes: 2 additions & 2 deletions cmake/ExternalDependencies.cmake
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Copyright (c) 2024 - 2025 Munich Quantum Software Stack Project
# Copyright (c) 2024 - 2026 QDMI Maintainers
# All rights reserved.
#
# Licensed under the Apache License v2.0 with LLVM Exceptions (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://github.com/Munich-Quantum-Software-Stack/QDMI/blob/develop/LICENSE.md
# https://llvm.org/LICENSE.txt
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
Expand Down
22 changes: 18 additions & 4 deletions cmake/GenerateTemplate.cmake
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Copyright (c) 2024 - 2025 Munich Quantum Software Stack Project
# Copyright (c) 2024 - 2026 QDMI Maintainers
# All rights reserved.
#
# Licensed under the Apache License v2.0 with LLVM Exceptions (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://github.com/Munich-Quantum-Software-Stack/QDMI/blob/develop/LICENSE.md
# https://llvm.org/LICENSE.txt
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
Expand Down Expand Up @@ -42,8 +42,22 @@ if("${QDMI_TEMPLATE_CLEAN}" STREQUAL "")
set(QDMI_TEMPLATE_CLEAN OFF)
endif()

file(REAL_PATH "${QDMI_TEMPLATE_SOURCE_DIR}" QDMI_TEMPLATE_SOURCE_DIR)
file(REAL_PATH "${QDMI_TEMPLATE_OUTPUT_DIR}" QDMI_TEMPLATE_OUTPUT_DIR)
# file(REAL_PATH ...) fails if the path doesn't (yet) exist on some
# platforms/CMakes. Use REAL_PATH only when the path exists; otherwise compute
# an absolute path which does not require the target to exist.
if(EXISTS "${QDMI_TEMPLATE_SOURCE_DIR}")
file(REAL_PATH "${QDMI_TEMPLATE_SOURCE_DIR}" QDMI_TEMPLATE_SOURCE_DIR)
else()
get_filename_component(QDMI_TEMPLATE_SOURCE_DIR "${QDMI_TEMPLATE_SOURCE_DIR}"
ABSOLUTE)
endif()

if(EXISTS "${QDMI_TEMPLATE_OUTPUT_DIR}")
file(REAL_PATH "${QDMI_TEMPLATE_OUTPUT_DIR}" QDMI_TEMPLATE_OUTPUT_DIR)
else()
get_filename_component(QDMI_TEMPLATE_OUTPUT_DIR "${QDMI_TEMPLATE_OUTPUT_DIR}"
ABSOLUTE)
endif()

string(TOLOWER "${QDMI_TEMPLATE_PREFIX}" QDMI_TEMPLATE_prefix)

Expand Down
6 changes: 3 additions & 3 deletions cmake/PrefixHandling.cmake
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Copyright (c) 2024 - 2025 Munich Quantum Software Stack Project
# Copyright (c) 2024 - 2026 QDMI Maintainers
# All rights reserved.
#
# Licensed under the Apache License v2.0 with LLVM Exceptions (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://github.com/Munich-Quantum-Software-Stack/QDMI/blob/develop/LICENSE.md
# https://llvm.org/LICENSE.txt
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
Expand Down Expand Up @@ -117,5 +117,5 @@ function(generate_device_defs_executable prefix)
qdmi_test_${QDMI_prefix}_device_defs PRIVATE qdmi::qdmi ${DEVICE_TARGET}
qdmi::qdmi_project_warnings)
target_compile_features(qdmi_test_${QDMI_prefix}_device_defs
PRIVATE cxx_std_17)
PRIVATE cxx_std_20)
endfunction()
4 changes: 2 additions & 2 deletions cmake/qdmi-config.cmake.in
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Copyright (c) 2024 - 2025 Munich Quantum Software Stack Project
# Copyright (c) 2024 - 2026 QDMI Maintainers
# All rights reserved.
#
# Licensed under the Apache License v2.0 with LLVM Exceptions (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://github.com/Munich-Quantum-Software-Stack/QDMI/blob/develop/LICENSE.md
# https://llvm.org/LICENSE.txt
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
Expand Down
27 changes: 19 additions & 8 deletions docs/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Copyright (c) 2024 - 2025 Munich Quantum Software Stack Project
# Copyright (c) 2024 - 2026 QDMI Maintainers
# All rights reserved.
#
# Licensed under the Apache License v2.0 with LLVM Exceptions (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://github.com/Munich-Quantum-Software-Stack/QDMI/blob/develop/LICENSE.md
# https://llvm.org/LICENSE.txt
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
Expand All @@ -26,9 +26,15 @@ set(DOXYGEN_INPUT_DIRS ${PROJECT_SOURCE_DIR}/include)
# This variable is only needed to setup the dependency tracking of CMake
# correctly and is not passed to Doxygen. Whenever such a file is modified,
# CMake detects that change and will rerun the Doxygen command instead of using
# the cached result when the target `qdmi_docs` is built.
file(GLOB_RECURSE DOXYGEN_INPUT_FILES ${PROJECT_SOURCE_DIR}/include/*.h
${CMAKE_CURRENT_SOURCE_DIR}/*.md)
# the cached result when the target `qdmi-docs` is built.
file(
GLOB_RECURSE
DOXYGEN_INPUT_FILES
${PROJECT_SOURCE_DIR}/include/*.h
${CMAKE_CURRENT_SOURCE_DIR}/*.md
${PROJECT_SOURCE_DIR}/CHANGELOG.md
${PROJECT_SOURCE_DIR}/UPGRADING.md
${PROJECT_SOURCE_DIR}/README.md)
# After the variable above is correctly initialized, we can add the additional
# files that are not source code but still part of the documentation. IMPORTANT:
# The order the files with the static content are added here influences their
Expand All @@ -52,8 +58,13 @@ string(REPLACE ";" " " DOXYGEN_INPUT_DIRS "${DOXYGEN_INPUT_DIRS}")
# can be included with the `\include`or `\snippet` command, we need to add the
# directories where these files are located.
set(DOXYGEN_EXAMPLE_DIRS
${PROJECT_SOURCE_DIR}/examples ${PROJECT_SOURCE_DIR}/.github
${PROJECT_SOURCE_DIR}/CHANGELOG.md ${PROJECT_SOURCE_DIR}/UPGRADING.md
${PROJECT_SOURCE_DIR}/examples/device/src
${PROJECT_SOURCE_DIR}/examples/driver
${PROJECT_SOURCE_DIR}/examples/fomac
${PROJECT_SOURCE_DIR}/examples/tool
${PROJECT_SOURCE_DIR}/.github
${PROJECT_SOURCE_DIR}/CHANGELOG.md
${PROJECT_SOURCE_DIR}/UPGRADING.md
${PROJECT_SOURCE_DIR}/README.md)
# Again, replace the semicolon with a space such that Doxygen can handle it.
string(REPLACE ";" " " DOXYGEN_EXAMPLE_DIRS "${DOXYGEN_EXAMPLE_DIRS}")
Expand Down Expand Up @@ -113,4 +124,4 @@ add_custom_command(
VERBATIM)

# Create a custom target
add_custom_target(qdmi_docs ALL DEPENDS ${DOXYGEN_OUTPUT_DIR}/html/index.html)
add_custom_target(qdmi-docs ALL DEPENDS ${DOXYGEN_OUTPUT_DIR}/html/index.html)
4 changes: 2 additions & 2 deletions docs/Doxyfile.in
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Copyright (c) 2024 - 2025 Munich Quantum Software Stack Project
# Copyright (c) 2024 - 2026 QDMI Maintainers
# All rights reserved.
#
# Licensed under the Apache License v2.0 with LLVM Exceptions (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://github.com/Munich-Quantum-Software-Stack/QDMI/blob/develop/LICENSE.md
# https://llvm.org/LICENSE.txt
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
Expand Down
4 changes: 2 additions & 2 deletions docs/_static/mqss_logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions docs/_static/mqss_logo_dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions docs/_static/qdmi.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading