Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
e486c1a
Add Fern docs migration: RST→MDX converter + scaffolding
ramakrishnap-nv Jul 9, 2026
3fc287e
Wire REST API reference and Python API extraction into Fern docs
ramakrishnap-nv Jul 9, 2026
f2d93e7
Port install selector widget to Fern as native JS component
ramakrishnap-nv Jul 9, 2026
e54c395
Fix MDX parse errors; add Fern library docs config and Accordion conv…
ramakrishnap-nv Jul 9, 2026
4218aa5
Fix all MDX parse errors preventing fern docs dev from loading
ramakrishnap-nv Jul 10, 2026
80ad020
Remove curly braces and fix remaining MDX/acorn parse issues
ramakrishnap-nv Jul 10, 2026
ac545d5
Improve Fern docs: API readability, nav dedup, REST API placement, Op…
ramakrishnap-nv Jul 14, 2026
ada5515
Migrate docs to Fern: RST→MDX pipeline, version switcher, CI, build.sh
ramakrishnap-nv Jul 14, 2026
f12bdd9
docs: add Fern dependency declarations and fix build.sh checks
ramakrishnap-nv Jul 14, 2026
cbe26bf
docs: make ./build.sh docs start local preview server
ramakrishnap-nv Jul 14, 2026
5410ba4
ci: add PR preview URL and artifact upload for docs review
ramakrishnap-nv Jul 15, 2026
a0c6d03
ci: add lychee URL link-checking job for generated MDX
ramakrishnap-nv Jul 15, 2026
7664f55
docs: add Contributing to the Documentation section in README
ramakrishnap-nv Jul 15, 2026
303cb7f
Add global-theme, navbar-links, two-stage PR preview, and fern broken…
ramakrishnap-nv Jul 15, 2026
68c0b9f
Remove RST→MDX pipeline; edit MDX directly
ramakrishnap-nv Jul 15, 2026
5694197
ci: publish docs on push to main, not docs-fern-migration
ramakrishnap-nv Jul 15, 2026
128e421
Regenerate dynamic API docs on every build
ramakrishnap-nv Jul 15, 2026
98368c1
ci: integrate Fern docs into existing docs-build workflow
ramakrishnap-nv Jul 15, 2026
3c42477
cuopt-skill-evolution: require reading developer skill for any CI change
ramakrishnap-nv Jul 15, 2026
6b157a0
Replace custom API doc extractors with numpydoc and Doxygen
ramakrishnap-nv Jul 15, 2026
6ea938b
cuopt-skill-evolution: check for established tools before writing cus…
ramakrishnap-nv Jul 15, 2026
ff4dc17
docs: auto-discover Python API modules and drive C API from YAML config
ramakrishnap-nv Jul 15, 2026
66d27b5
docs: copy examples into Fern tree and embed as code blocks in MDX
ramakrishnap-nv Jul 15, 2026
502e943
docs: remove stale files and fold distance_engine into routing API page
ramakrishnap-nv Jul 15, 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
4 changes: 1 addition & 3 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -221,13 +221,11 @@ jobs:
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
with:
build_type: ${{ inputs.build_type || 'branch' }}
node_type: "gpu-l4-latest-1"
node_type: "cpu-amd64-latest-4"
sha: ${{ inputs.sha }}
branch: ${{ inputs.branch }}
date: ${{ inputs.date }}
arch: "amd64"
file_to_upload: "docs/cuopt/build/html/"
artifact-name: "cuopt_docs"
container_image: "rapidsai/ci-conda:26.08-latest"
script: "ci/build_docs.sh"
wheel-build-cuopt-sh-client:
Expand Down
4 changes: 1 addition & 3 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -433,10 +433,8 @@ jobs:
if: fromJSON(needs.changed-files.outputs.changed_file_groups).build_docs
with:
build_type: pull-request
node_type: "gpu-l4-latest-1"
node_type: "cpu-amd64-latest-4"
arch: "amd64"
file_to_upload: "docs/cuopt/build/html/"
artifact-name: "cuopt_docs"
container_image: "rapidsai/ci-conda:26.08-latest"
script: "ci/build_docs.sh"
wheel-build-libcuopt:
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ datasets/**
## Doxygen
cpp/doxygen/html
cpp/doxygen/xml
fern/.doxygen-xml/

# Jupyter Notebooks
.ipynb_checkpoints
Expand Down Expand Up @@ -80,3 +81,4 @@ cpp/include/cuopt/semantic_version.hpp

# conda env (recommended name)
.cuopt_env
cpp/build_split/
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ AI agent skills for NVIDIA cuOpt optimization engine. Skills live in **`skills/`

### Rules
- `skills/cuopt-user-rules/` — Base rules for end users calling cuOpt (routing, LP, MILP, QP, install, server). Not for cuOpt internals — see `skills/cuopt-developer/`. Read first for user-facing tasks; choose skills from the index below by task and interface.
- `skills/cuopt-developer/` — Modify, build, test, debug, and contribute to cuOpt internals (C++/CUDA, Python, server, CI). Use for solver internals, PRs, DCO, and code conventions. For **VRP dimension** work (combine invariants, fwd/bwd propagation, new constraints/objectives in the routing engine), read **`skills/cuopt-developer/references/vrp_skills.md`** in addition to `SKILL.md`.
- `skills/cuopt-developer/` — Modify, build, test, debug, and contribute to cuOpt internals (C++/CUDA, Python, server, CI). Use for solver internals, PRs, DCO, and code conventions. **Also read for any CI or workflow change** (new jobs, new scripts, dependency additions) — the existing pipeline in `ci/`, `pr.yaml`, and `build.yaml` must be understood before adding anything new. **Before writing a custom script to extract, parse, or transform content, check whether an established tool already exists** (e.g. numpydoc for Python docstrings, Doxygen for C/C++ headers, pandoc for markup conversion) — custom parsers are a last resort. For **VRP dimension** work (combine invariants, fwd/bwd propagation, new constraints/objectives in the routing engine), read **`skills/cuopt-developer/references/vrp_skills.md`** in addition to `SKILL.md`.
- `skills/cuopt-skill-evolution/` — Skill evolution: after solving a non-trivial problem, propose skill updates to capture generalizable learnings.

### Common (concepts only; no API code)
Expand Down
55 changes: 55 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,61 @@ For the latest version, ensure you are on the `main` branch.

[cuOpt Documentation](https://docs.nvidia.com/cuopt/user-guide/latest/introduction.html)

## Contributing to the Documentation

Documentation sources live in `fern/` — MDX pages edited directly and published via [Fern](https://buildwithfern.com).

### Prerequisites

| Tool | Install |
|---|---|
| Node.js + npm | `conda install nodejs` or [nodejs.org](https://nodejs.org/) |
| jq | `sudo apt-get install jq` or `conda install jq` |

The Fern CLI (`fern-api`) is installed automatically by `build.sh` at the version pinned in `fern/fern.config.json`.

### Log in for local preview (first time only)

The docs use `global-theme: nvidia`, which requires a Fern account authorized for the NVIDIA organization. Run this once:

```bash
fern login --email <your-nvidia-email>
```

### Build and preview locally

```bash
./build.sh docs
```

This runs the RST → MDX conversion, validates with `fern check`, then starts a live preview server at **http://localhost:3000** (Ctrl+C to stop).

### Publish to the live site

Publishing is handled automatically by CI on every push to `docs-fern-migration`.
To publish manually (requires `FERN_TOKEN`):

```bash
FERN_TOKEN=<your-token> ./build.sh docs --publish-docs
```

**Getting `FERN_TOKEN`**: Ping `@aschilling`, `@dkoperda`, `@llane`, `@mmckiernan`, or `@nmckimpson` in the NVIDIA internal `#cdd-fern` Slack channel. Add the token as a `FERN_TOKEN` GitHub Actions secret in the repository settings.

The live site is at **https://nvidia-cuopt.docs.buildwithfern.com**. Before going to production, a custom domain (`docs.nvidia.com/cuopt`) must be configured by the Fern team with Akamai fronting — contact `#cdd-fern` when ready.

### How CI works

| Trigger | What happens |
|---|---|
| Any push / PR touching `docs/`, `fern/`, or `python/cuopt/` | RST → MDX conversion + `fern check` + internal link check + external URL check |
| Pull request (stage 1, no secrets) | Converts RST → MDX, uploads `fern/` as artifact |
| Pull request (stage 2, secrets safe) | Publishes Fern preview, posts URL as PR comment |
| Push to `docs-fern-migration` | Publishes to the live site via `fern generate --docs` |

PR preview uses a two-stage workflow so that `FERN_TOKEN` is never exposed to fork PRs. Stage 2 runs in the base-branch context via `workflow_run`, where repository secrets are accessible.

CI workflow: [`.github/workflows/fern-docs.yml`](.github/workflows/fern-docs.yml)

## Supported APIs

cuOpt supports the following APIs:
Expand Down
61 changes: 53 additions & 8 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ ARGS=$*
REPODIR=$(cd "$(dirname "$0")"; pwd)
LIBCUOPT_BUILD_DIR=${LIBCUOPT_BUILD_DIR:=${REPODIR}/cpp/build}

VALIDARGS="clean codegen libcuopt cuopt_grpc_server cuopt cuopt_server cuopt_sh_client docs deb -a -b -g -fsanitize -tsan -msan -v -l= --verbose-pdlp --build-lp-only --no-fetch-rapids --skip-c-python-adapters --skip-tests-build --skip-routing-build --skip-grpc-build --skip-fatbin-write --host-lineinfo [--cmake-args=\\\"<args>\\\"] [--cache-tool=<tool>] -n --allgpuarch --ci-only-arch --show_depr_warn -h --help"
VALIDARGS="clean codegen libcuopt cuopt_grpc_server cuopt cuopt_server cuopt_sh_client docs deb -a -b -g -fsanitize -tsan -msan -v -l= --verbose-pdlp --build-lp-only --no-fetch-rapids --skip-c-python-adapters --skip-tests-build --skip-routing-build --skip-grpc-build --skip-fatbin-write --host-lineinfo [--cmake-args=\\\"<args>\\\"] [--cache-tool=<tool>] -n --allgpuarch --ci-only-arch --show_depr_warn --publish-docs -h --help"
HELP="$0 [<target> ...] [<flag> ...]
where <target> is:
clean - remove all existing build artifacts and configuration (start over)
Expand All @@ -24,7 +24,9 @@ HELP="$0 [<target> ...] [<flag> ...]
cuopt - build the cuopt Python package
cuopt_server - build the cuopt_server Python package
cuopt_sh_client - build cuopt self host client
docs - build the docs
docs - build the Fern docs (generate MDX + validate); starts local
preview server at http://localhost:3000 when done
Pass --publish-docs to publish to Fern cloud instead
deb - build deb package (requires libcuopt to be built first)
and <flag> is:
-v - verbose build mode
Expand Down Expand Up @@ -433,12 +435,55 @@ if buildAll || hasArg cuopt_sh_client; then
python "${PYTHON_ARGS_FOR_INSTALL[@]}" .
fi

# Build the docs (opt-in; pass 'docs' explicitly to build)
# Build the Fern docs (opt-in; pass 'docs' explicitly to build)
if hasArg docs; then
cd "${REPODIR}"/cpp/doxygen
doxygen Doxyfile
cd "${REPODIR}"

cd "${REPODIR}"/docs/cuopt
make clean
make html linkcheck
if ! command -v node &>/dev/null || ! command -v npm &>/dev/null; then
echo "ERROR: Node.js (with npm) is required for the Fern CLI."
echo " Install from: https://nodejs.org/ (or: conda install nodejs)"
exit 1
fi
if ! command -v jq &>/dev/null; then
echo "ERROR: jq is required to read the Fern version pin."
echo " Install: sudo apt-get install jq"
exit 1
fi

# Install Fern CLI at the version pinned in fern/fern.config.json
FERN_VERSION=$(jq -r .version "${REPODIR}/fern/fern.config.json")
if ! fern --version 2>/dev/null | grep -q "${FERN_VERSION}"; then
echo "Installing fern-api@${FERN_VERSION}..."
npm install -g "fern-api@${FERN_VERSION}"
fi

# Regenerate dynamic API reference pages (OpenAPI spec, Python API, C API).
# In CI these packages come from conda; locally install them if missing.
PY=${PYTHON:-python3}
if command -v "${PY}" &>/dev/null; then
if ! "${PY}" -c "import fastapi, pydantic, yaml" 2>/dev/null; then
pip install --quiet -r "${REPODIR}/fern/requirements-docs.txt"
fi
"${PY}" "${REPODIR}/fern/generate_api_docs.py"
else
echo " [WARN] Python not found; skipping API doc generation."
fi

echo "Running fern check..."
fern check

if hasArg --publish-docs; then
if [[ -z "${FERN_TOKEN}" ]]; then
echo "ERROR: FERN_TOKEN environment variable is not set."
echo " Set it to your Fern token before running with --publish-docs."
exit 1
fi
echo "Publishing to Fern cloud..."
fern generate --docs
echo "Docs published to https://nvidia-cuopt.docs.buildwithfern.com"
else
echo ""
echo "Starting local preview at http://localhost:3000 (Ctrl+C to stop)..."
fern docs dev
fi
fi
22 changes: 18 additions & 4 deletions ci/build_docs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

set -euo pipefail

rapids-logger "Create test conda environment"
rapids-logger "Create docs conda environment"
. /opt/conda/etc/profile.d/conda.sh

rapids-logger "Configuring conda strict channel priority"
Expand All @@ -21,7 +21,6 @@ CPP_CHANNEL=$(rapids-download-from-github "$(rapids-artifact-name conda_cpp libc
PYTHON_CHANNEL=$(rapids-download-from-github "$(rapids-artifact-name conda_python cuopt cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")")

rapids-logger "Generating conda environment YAML"

rapids-dependency-file-generator \
--output conda \
--file-key docs \
Expand All @@ -34,5 +33,20 @@ conda activate docs

rapids-print-env

rapids-logger "Build Docs"
./build.sh docs
rapids-logger "Install Fern CLI"
FERN_VERSION=$(jq -r .version fern/fern.config.json)
npm install -g "fern-api@${FERN_VERSION}"

rapids-logger "Generate dynamic API docs (OpenAPI spec, Python API, C API)"
python fern/generate_api_docs.py

rapids-logger "Validate docs (fern check)"
fern check

if [[ "${RAPIDS_BUILD_TYPE:-branch}" == "pull-request" ]]; then
rapids-logger "Publishing Fern preview for PR review"
fern generate --docs --preview
else
rapids-logger "Publishing Fern docs to production"
fern generate --docs
fi
Comment on lines +40 to +52

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🔴 Critical | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "## File map"
git ls-files 'ci/build_docs.sh' 'ci/*' 'pr.yaml' 'build.yaml' | sed 's#^`#-` #'

echo
echo "## Outline of relevant files"
for f in ci/build_docs.sh pr.yaml build.yaml; do
  if [[ -f "$f" ]]; then
    echo "### $f"
    wc -l "$f"
    sed -n '1,220p' "$f" | cat -n
    echo
  fi
done

echo "## Search for Fern and related gating"
rg -n --hidden --no-ignore-vcs -S 'FERN_TOKEN|fern generate|fern check|workflow_run|pull-request|branch|build_docs\.sh|generate_api_docs\.py' ci pr.yaml build.yaml .github 2>/dev/null || true

Repository: NVIDIA/cuopt

Length of output: 24037


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "## Relevant workflow files"
fd -a -t f 'build.yaml|pr.yaml|build_docs.sh' . ci .github 2>/dev/null || true

echo
echo "## Search for CI invocations and secrets"
rg -n -S 'build_docs\.sh|FERN_TOKEN|fern generate|fern check|workflow_run|pull_request|pull-request|secrets\.' ci .github pr.yaml build.yaml 2>/dev/null || true

Repository: NVIDIA/cuopt

Length of output: 12462


🏁 Script executed:

#!/bin/bash
set -euo pipefail

for f in ci/build_docs.sh pr.yaml build.yaml; do
  if [[ -f "$f" ]]; then
    echo "### $f"
    nl -ba "$f" | sed -n '1,220p'
    echo
  fi
done

Repository: NVIDIA/cuopt

Length of output: 211


🌐 Web query:

RAPIDS ci pr.yaml build.yaml RAPIDS_BUILD_TYPE Fern docs build_docs.sh

💡 Result:

In the RAPIDS ecosystem, pr.yaml and build.yaml serve as the primary GitHub Actions workflow entry points, managing CI jobs for pull requests and main/release branches respectively [1]. These workflows orchestrate build processes by invoking various CI scripts, such as those located in the ci/ directory, and by utilizing standardized shared workflows [2][3][4][5]. Key components related to your query include: RAPIDS_BUILD_TYPE: This environment variable is used to specify the context of a build, typically taking values such as branch, nightly, or pull-request [3][6]. It is passed into CI jobs to configure build parameters, artifact handling, and other environment-specific logic [2][3]. Fern and Documentation Builds: RAPIDS has been migrating its documentation infrastructure from Sphinx to Fern [7][8]. This transition involves the following key components: fern/build_docs.sh: A wrapper script introduced to handle Fern-based documentation workflows, supporting modes such as check, preview, publish, and dev [7][8]. It manages the generation of API references and runs validation checks (e.g., fern check) [7][9]. ci/build_docs.sh: While previously used to run Sphinx-based documentation builds [5][10], this script has been updated in many repositories to integrate with or be replaced by the Fern-based documentation flow, ensuring documentation is correctly built and validated during CI [7][8]. build.sh: A local build script often updated to set relevant environment variables (like FERN_DOCS_DIR) and invoke fern/build_docs.sh [7][8][11]. These components together enable a standardized, reproducible CI process where documentation validation and builds are integrated alongside code builds and testing [7][8][12].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

for f in .github/workflows/build.yaml .github/workflows/pr.yaml; do
  echo "### $f"
  sed -n '200,260p' "$f" | cat -n
  echo
done

echo "### build.yaml docs-related context"
sed -n '210,245p' .github/workflows/build.yaml | cat -n

echo "### pr.yaml docs-related context"
sed -n '425,450p' .github/workflows/pr.yaml | cat -n

Repository: NVIDIA/cuopt

Length of output: 8248


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "### build.yaml trigger + top-level permissions"
sed -n '1,120p' .github/workflows/build.yaml | cat -n
echo

echo "### pr.yaml trigger + top-level permissions"
sed -n '1,120p' .github/workflows/pr.yaml | cat -n

Repository: NVIDIA/cuopt

Length of output: 10198


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "### build.yaml docs job"
sed -n '215,235p' .github/workflows/build.yaml | cat -n
echo

echo "### pr.yaml docs job"
sed -n '432,446p' .github/workflows/pr.yaml | cat -n

Repository: NVIDIA/cuopt

Length of output: 1686


🏁 Script executed:

#!/bin/bash
set -euo pipefail

rg -n -S 'FERN_TOKEN|fern-api|fern config|fern/fern.config.json|preview|publish.*Fern|Fern preview|Fern docs' .github/workflows ci . 2>/dev/null || true

Repository: NVIDIA/cuopt

Length of output: 3145


🏁 Script executed:

#!/bin/bash
set -euo pipefail

for f in .github/workflows/build.yaml .github/workflows/pr.yaml; do
  echo "### $f"
  awk 'NR>=210 && NR<=245 {printf "%4d  %s\n", NR, $0}' "$f"
  echo
done

Repository: NVIDIA/cuopt

Length of output: 3249


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "### build.yaml: trigger + permissions"
awk 'NR>=1 && NR<=80 {printf "%4d  %s\n", NR, $0}' .github/workflows/build.yaml
echo

echo "### pr.yaml: trigger + permissions"
awk 'NR>=1 && NR<=90 {printf "%4d  %s\n", NR, $0}' .github/workflows/pr.yaml

Repository: NVIDIA/cuopt

Length of output: 7067


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "### workflow_run / Fern docs references"
rg -n -S 'workflow_run|FERN_TOKEN|Fern preview|publish.*Fern|buildwithfern|preview' .github/workflows README.md build.sh ci/build_docs.sh fern 2>/dev/null || true

echo
echo "### README docs section"
awk 'NR>=24 && NR<=90 {printf "%4d  %s\n", NR, $0}' README.md

Repository: NVIDIA/cuopt

Length of output: 5200


Separate Fern generation from secret-bearing publish jobs. .github/workflows/build.yaml and .github/workflows/pr.yaml call ci/build_docs.sh with secrets: inherit, so fern/generate_api_docs.py runs with repository secrets available. Keep generation secretless and run fern generate --docs --preview from a trusted workflow_run/base-branch job; gate production publishing on an explicit trusted branch/event too.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ci/build_docs.sh` around lines 40 - 52, Update ci/build_docs.sh so
fern/generate_api_docs.py and fern check run without repository secrets, and
remove Fern publishing from this secret-bearing script. Move fern generate
--docs --preview into a trusted workflow_run or base-branch job, and ensure
production fern generate --docs is gated by an explicit trusted branch or event.

Sources: Coding guidelines, Path instructions

23 changes: 5 additions & 18 deletions dependencies.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -786,26 +786,13 @@ dependencies:
common:
- output_types: [conda]
packages:
- jq
- nodejs # provides npm; used to install fern-api CLI
- *pyyaml
- *doxygen
- &ipython ipython
- *jsonref
- make
- *msgpack_python
- *msgpack_numpy
- myst-parser
- fastapi
- numpydoc
- pyrsistent
- breathe
- sphinx
- sphinx-copybutton
- sphinx-markdown-tables
- sphinx_rtd_theme
- sphinxcontrib-openapi
- sphinxcontrib-websupport
- sphinx-design
- pip:
- swagger-plugin-for-sphinx
- nvidia-sphinx-theme
- pydantic

notebooks:
common:
Expand Down
41 changes: 41 additions & 0 deletions fern/Doxyfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Doxyfile for fern/extract_c_api.py
# Processes the two cuOpt C API headers and outputs XML only.
# Run from the repo root: doxygen fern/Doxyfile
# XML is written to fern/.doxygen-xml/ (git-ignored).

DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = "cuOpt C API"
PROJECT_BRIEF = "NVIDIA cuOpt C API reference"
OUTPUT_DIRECTORY = fern/.doxygen-xml
CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English
FULL_PATH_NAMES = NO
MARKDOWN_SUPPORT = YES
EXTENSION_MAPPING = h=C
OPTIMIZE_OUTPUT_FOR_C = YES

EXTRACT_ALL = YES
EXTRACT_PRIVATE = NO
EXTRACT_STATIC = NO

INPUT = cpp/include/cuopt/mathematical_optimization/cuopt_c.h \
cpp/include/cuopt/mathematical_optimization/constants.h

INPUT_ENCODING = UTF-8
FILE_PATTERNS = *.h
RECURSIVE = NO

ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = NO
SKIP_FUNCTION_MACROS = YES

GENERATE_HTML = NO
GENERATE_LATEX = NO
GENERATE_XML = YES
XML_OUTPUT = xml
XML_PROGRAMLISTING = NO

QUIET = YES
WARNINGS = YES
WARN_IF_UNDOCUMENTED = NO
Loading