Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
200 commits
Select commit Hold shift + click to select a range
87e2bfd
Add C++ infrastructure: build, format, lint, and unit test tooling
mkolodner-sc Mar 25, 2026
a18fb47
Remove pybind11 import from generate_compile_commands — bundled in to…
mkolodner-sc Mar 25, 2026
c127f2b
ppr seq
yliu2-sc Mar 25, 2026
b5b8027
Auto-build C++ extensions in post_install; auto-add LLVM to PATH on Mac
mkolodner-sc Mar 25, 2026
9d3c8df
Rename setup.py to build_cpp_extensions.py; add build_cpp_extensions …
mkolodner-sc Mar 25, 2026
ace7126
Scope C++ extension discovery to gigl/cpp_extensions/
mkolodner-sc Mar 25, 2026
48be4cc
Remove unnecessary existence check for build_cpp_extensions.py in pos…
mkolodner-sc Mar 25, 2026
1b153b7
Review fixes + adopt PyTorch csrc conventions for C++ layout
mkolodner-sc Mar 25, 2026
03ed8c4
Add multi-source C++ ext support, gigl/csrc package init, and .so git…
mkolodner-sc Mar 25, 2026
87dc95b
Initial commit
mkolodner-sc Mar 24, 2026
a231796
small precision fix
mkolodner-sc Mar 24, 2026
a19db88
Optimize
mkolodner-sc Mar 24, 2026
fed3815
Add explanatory comments to ppr_forward_push.cpp for C++ newcomers
mkolodner-sc Mar 24, 2026
906df01
Apply clang-format to ppr_forward_push.cpp
mkolodner-sc Mar 25, 2026
dd118ef
Move PPR C++ to gigl/csrc following PyTorch csrc conventions
mkolodner-sc Mar 25, 2026
c66a6e5
Update
mkolodner-sc Mar 25, 2026
638e667
Move build_cpp_extensions.py to scripts/ and wire into relevant make …
mkolodner-sc Mar 25, 2026
416f6b4
Initial commit
mkolodner-sc Mar 30, 2026
4af704e
merge main
mkolodner-sc Mar 30, 2026
91d99d3
Update
mkolodner-sc Mar 31, 2026
3d41dc3
Update
mkolodner-sc Mar 31, 2026
04cee0c
Fix for gs mode
mkolodner-sc Mar 31, 2026
99fdef2
Address comment
mkolodner-sc Mar 31, 2026
04df860
Merge branch 'mkolodner-sc/fix_ppr_memory' into mkolodner-sc/cpp-infr…
mkolodner-sc Mar 31, 2026
0a43cff
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Mar 31, 2026
6e63172
Update
mkolodner-sc Apr 1, 2026
210c1dd
Upate
mkolodner-sc Apr 1, 2026
643470c
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 1, 2026
909faf4
Merge branch 'main' into mkolodner-sc/cpp-infrastructure
mkolodner-sc Apr 1, 2026
dff6c86
Fix merge conflicts
mkolodner-sc Apr 1, 2026
c16dd9d
Fix type check and remove unused etypes from num_sampled_edges
mkolodner-sc Apr 1, 2026
d651f41
fetched-count normalization, nodes_drained diagnostic, max_fetch_iter…
mkolodner-sc Apr 6, 2026
35e52bc
Add event loop threading
mkolodner-sc Apr 10, 2026
628a9f2
Update tidy and format
mkolodner-sc Apr 10, 2026
238e10b
Update + format
mkolodner-sc Apr 10, 2026
75863a6
Update
mkolodner-sc Apr 10, 2026
05056e2
Update
mkolodner-sc Apr 10, 2026
4a3beac
Update guidance
mkolodner-sc Apr 10, 2026
cffa7ba
Update guidance
mkolodner-sc Apr 10, 2026
e15a405
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 10, 2026
1d1dbfd
Update
mkolodner-sc Apr 10, 2026
49e9497
Update
mkolodner-sc Apr 10, 2026
3f9b3aa
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 10, 2026
3e1bf6b
Fix
mkolodner-sc Apr 10, 2026
89e274d
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 10, 2026
7fd3ed9
Fix
mkolodner-sc Apr 10, 2026
a682ded
Update
mkolodner-sc Apr 10, 2026
789d18f
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 10, 2026
fe2cc0b
Update type check
mkolodner-sc Apr 14, 2026
83e51bc
Update
mkolodner-sc Apr 14, 2026
857767d
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 14, 2026
5e55f54
Updaate
mkolodner-sc Apr 16, 2026
7b742f2
Add C++ linting infrastructure with clangd
mkolodner-sc Apr 16, 2026
118d45f
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 16, 2026
43c4271
Update
mkolodner-sc Apr 16, 2026
c489506
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 16, 2026
d0859a3
Update
mkolodner-sc Apr 16, 2026
cf32bef
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 16, 2026
d07ca57
Update
mkolodner-sc Apr 16, 2026
7c9b67e
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 16, 2026
4815fae
Update
mkolodner-sc Apr 16, 2026
446fba1
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 16, 2026
912e5db
Update
mkolodner-sc Apr 16, 2026
94dc86a
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 16, 2026
5064788
Address comments
mkolodner-sc Apr 17, 2026
099dd2a
Restore
mkolodner-sc Apr 17, 2026
c284475
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 17, 2026
830da8b
Update
mkolodner-sc Apr 17, 2026
73b3e8b
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 17, 2026
3afb8a2
Update
mkolodner-sc Apr 18, 2026
718d9ba
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 18, 2026
b37786c
Update
mkolodner-sc Apr 20, 2026
aa4f311
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 20, 2026
ab51157
Update
mkolodner-sc Apr 20, 2026
df98b20
Fix
mkolodner-sc Apr 20, 2026
1165fd3
Fixes
mkolodner-sc Apr 20, 2026
4b579aa
Update
mkolodner-sc Apr 20, 2026
f4b015e
Update uv lock
mkolodner-sc Apr 20, 2026
01a9b2c
Merge
mkolodner-sc Apr 20, 2026
0f253d2
Update
mkolodner-sc Apr 20, 2026
18a7316
Fix
mkolodner-sc Apr 20, 2026
b56945e
Bump pyproject version
mkolodner-sc Apr 20, 2026
30e4e30
bump back to 0.2.0
mkolodner-sc Apr 20, 2026
cbf07f3
[AUTOMATED] Update dep.vars, and other relevant files with new image …
github-actions[bot] Apr 20, 2026
870e936
Add cpp test to gh comment
mkolodner-sc Apr 20, 2026
77e1a02
Update dockerfile with readme
mkolodner-sc Apr 20, 2026
d826d0b
Resolve merge conflicts from cpp-infrastructure: keep C++ PPR push path
mkolodner-sc Apr 20, 2026
ce9f1e2
update style guide
mkolodner-sc Apr 20, 2026
61f4965
Small update
mkolodner-sc Apr 20, 2026
3af2a33
remove mypy change
mkolodner-sc Apr 20, 2026
f417365
Make necessary changes for when we need to introduce cuda cpp operations
mkolodner-sc Apr 20, 2026
83bb8a6
Additional fixes to cuda setup
mkolodner-sc Apr 21, 2026
712d1e2
Add additional cuda fixes
mkolodner-sc Apr 21, 2026
2861b8d
remove no build isolation from calls, update pyproject to not build i…
mkolodner-sc Apr 21, 2026
321c031
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 21, 2026
adf7046
remove additional build isolations
mkolodner-sc Apr 21, 2026
549702b
Update release
mkolodner-sc Apr 22, 2026
ba300c3
Address additional cpp comments
mkolodner-sc Apr 22, 2026
fc68f9d
cleanup
mkolodner-sc Apr 22, 2026
08a034e
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 22, 2026
fa1ee91
Updates
mkolodner-sc Apr 22, 2026
13ec36a
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 22, 2026
267d0cc
Fix
mkolodner-sc Apr 22, 2026
bb87166
Update
mkolodner-sc Apr 22, 2026
2e7aca0
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 22, 2026
907fc12
continued updates
mkolodner-sc Apr 22, 2026
16a92b2
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 22, 2026
056a3b4
Update comment
mkolodner-sc Apr 22, 2026
d079113
Updates
mkolodner-sc Apr 22, 2026
bae2ef6
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 22, 2026
a49a4c5
Simplify requirements
mkolodner-sc Apr 23, 2026
3738af6
Update uv
mkolodner-sc Apr 23, 2026
00d836f
[AUTOMATED] Update dep.vars, and other relevant files with new image …
github-actions[bot] Apr 23, 2026
26ade90
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 23, 2026
295138a
Update
mkolodner-sc Apr 23, 2026
fba7482
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 23, 2026
e070854
Address comments
mkolodner-sc Apr 23, 2026
7782495
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 23, 2026
5484c42
Update
mkolodner-sc Apr 23, 2026
cf8a35b
Potential fix
mkolodner-sc Apr 24, 2026
73fdad8
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 24, 2026
abcb704
Fix
mkolodner-sc Apr 24, 2026
928d5c7
Update
mkolodner-sc Apr 24, 2026
122710f
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 24, 2026
1de76f7
Update
mkolodner-sc Apr 24, 2026
d4b7da3
Update to gigl-core
mkolodner-sc Apr 24, 2026
4a6b288
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 24, 2026
1b774cc
update uv lock
mkolodner-sc Apr 24, 2026
66bc41a
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 24, 2026
50dc620
Update uv
mkolodner-sc Apr 24, 2026
8e9d0af
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 24, 2026
1ea0a29
remove stale changes
mkolodner-sc Apr 24, 2026
4ac251e
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 24, 2026
d1dd8e3
remove stale files
mkolodner-sc Apr 24, 2026
2ed66ca
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 24, 2026
1ff88c1
restore files
mkolodner-sc Apr 24, 2026
b0abe98
Fix
mkolodner-sc Apr 24, 2026
9cdc3ac
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 24, 2026
e015cda
remove cpp references
mkolodner-sc Apr 24, 2026
2446d1a
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 24, 2026
b7782de
small fixes
mkolodner-sc Apr 24, 2026
57c6df3
Update release
mkolodner-sc Apr 24, 2026
2b2d78e
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 24, 2026
65d1788
Update
mkolodner-sc Apr 24, 2026
45cd03a
Update release todo and copy readme in dockerfiles
mkolodner-sc Apr 24, 2026
308fd67
update builder dockerfile
mkolodner-sc Apr 25, 2026
c95a426
[AUTOMATED] Update dep.vars, and other relevant files with new image …
github-actions[bot] Apr 25, 2026
afdbd89
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 25, 2026
50acb28
Format md
mkolodner-sc Apr 25, 2026
64d2c20
fix dockerfile
mkolodner-sc Apr 25, 2026
36d0dbb
update dataflow dockerfile
mkolodner-sc Apr 25, 2026
2611c58
Update release to have cmake
mkolodner-sc Apr 26, 2026
e799806
Use explicit publish-url in release workflow instead of named index
mkolodner-sc Apr 26, 2026
496abda
Remove unused index-name field from release matrix
mkolodner-sc Apr 26, 2026
ab3d60b
Clear stale cmake cache before gigl-core wheel build
mkolodner-sc Apr 26, 2026
0bb3d34
remove c++ manual check
mkolodner-sc Apr 26, 2026
495c19d
Comments
mkolodner-sc Apr 27, 2026
2f0f753
Update
mkolodner-sc Apr 27, 2026
757de9e
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 27, 2026
294e4d2
update releasing guide
mkolodner-sc Apr 27, 2026
d4f0126
[AUTOMATED] Update dep.vars, and other relevant files with new image …
github-actions[bot] Apr 27, 2026
cb1ebb0
Update
mkolodner-sc Apr 27, 2026
03a2175
Update
mkolodner-sc Apr 27, 2026
525f8fc
Update
mkolodner-sc Apr 27, 2026
ed87989
[AUTOMATED] Update dep.vars, and other relevant files with new image …
github-actions[bot] Apr 27, 2026
6bb8943
Address some comments
mkolodner-sc Apr 27, 2026
8282bbc
Format
mkolodner-sc Apr 27, 2026
fcf320d
Merge branch 'mkolodner-sc/cpp-infrastructure' of github.com:Snapchat…
mkolodner-sc Apr 27, 2026
2e6bb51
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 27, 2026
8dbd4c4
Address comments
mkolodner-sc Apr 27, 2026
b598f3d
update uv lock
mkolodner-sc Apr 27, 2026
a482bed
[AUTOMATED] Update dep.vars, and other relevant files with new image …
github-actions[bot] Apr 27, 2026
f40e94e
Address comments
mkolodner-sc Apr 28, 2026
dba5580
Merge branch 'mkolodner-sc/cpp-infrastructure' of github.com:Snapchat…
mkolodner-sc Apr 28, 2026
3e26b41
merge main
mkolodner-sc Apr 28, 2026
42b396d
Merge branch 'mkolodner-sc/cpp-infrastructure' into mkolodner-sc/cpp_…
mkolodner-sc Apr 28, 2026
955a1fe
Update
mkolodner-sc Apr 29, 2026
a5ace2f
Add tests
mkolodner-sc Apr 29, 2026
97d9cbb
Update
mkolodner-sc Apr 29, 2026
efeaf1d
Update
mkolodner-sc Apr 29, 2026
37e967e
Update
mkolodner-sc Apr 29, 2026
bd3bd13
Update
mkolodner-sc Apr 29, 2026
fb4d5f4
Update
mkolodner-sc Apr 29, 2026
a980fa6
Update
mkolodner-sc Apr 29, 2026
8b433dc
Restore to flat
mkolodner-sc Apr 29, 2026
0ed553a
Update
mkolodner-sc Apr 29, 2026
6c6c477
Update
mkolodner-sc Apr 29, 2026
70100a6
Update
mkolodner-sc Apr 29, 2026
fe26f5a
Update
mkolodner-sc Apr 30, 2026
0a468c0
Update
mkolodner-sc Apr 30, 2026
65a1590
Address comments
mkolodner-sc May 1, 2026
2197fa5
fmt
mkolodner-sc May 1, 2026
2797c3a
Cleanup + improve IDE with clangd
mkolodner-sc May 4, 2026
ee188ac
Additional cleanup
mkolodner-sc May 4, 2026
419bab0
Last comments
mkolodner-sc May 4, 2026
b00151c
Fix
mkolodner-sc May 4, 2026
db0a44e
Fix
mkolodner-sc May 4, 2026
7d3182e
Add pybind11 back to pyproject.toml (bug fix on main)
mkolodner-sc May 4, 2026
f50dfa4
[AUTOMATED] Update dep.vars, and other relevant files with new image …
github-actions[bot] May 4, 2026
46194a3
Fix
mkolodner-sc May 4, 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: 2 additions & 2 deletions .clang-tidy
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,10 @@ Checks: >
# Warnings from headers outside the regex (PyTorch, pybind11, etc.) are suppressed
# entirely and never reach WarningsAsErrors — so the large warning counts printed
# by clang-tidy ("N warnings generated") are third-party noise that is silently
# dropped. Only diagnostics in our own headers (.*/gigl/csrc/.*) are reported,
# dropped. Only diagnostics in our own headers (.*/gigl-core/core/.*) are reported,
# and those are treated as hard errors.
WarningsAsErrors: '*'
HeaderFilterRegex: '.*/gigl-core/csrc/.*'
HeaderFilterRegex: '.*/gigl-core/core/.*'
FormatStyle: none
# CheckOptions: per-check tuning parameters. Each entry configures a specific
# option for an individual check, using the form:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ substitutions:
options:
logging: CLOUD_LOGGING_ONLY
steps:
- name: us-central1-docker.pkg.dev/external-snap-ci-github-gigl/gigl-base-images/gigl-builder:b598f3d72eee47f5513dcb39460944459a0a012f.108.1
- name: us-central1-docker.pkg.dev/external-snap-ci-github-gigl/gigl-base-images/gigl-builder:7d3182eeb6446ce3e35910babba990c8e003879d.109.1
entrypoint: /bin/bash
args:
- -c
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ jobs:
run: |
# Remove stale cmake cache from previous runs on self-hosted runners.
rm -rf gigl-core/.cache/cmake_build
uv build --wheel gigl-core/ --locked
uv build --wheel gigl-core/

- name: Publish gigl-core wheel
working-directory: gigl-core
Expand All @@ -73,5 +73,5 @@ jobs:
# when gigl becomes available.
- name: Build and publish gigl wheel
run: |
uv build --wheel --locked
uv build --wheel
uv publish --publish-url ${{ matrix.publish-url }} --username oauth2accesstoken --keyring-provider subprocess
25 changes: 8 additions & 17 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ DOCKER_IMAGE_MAIN_CPU_NAME_WITH_TAG?=${DOCKER_IMAGE_MAIN_CPU_NAME}:${DATE}
DOCKER_IMAGE_DEV_WORKBENCH_NAME_WITH_TAG?=${DOCKER_IMAGE_DEV_WORKBENCH_NAME}:${DATE}

PYTHON_DIRS:=.github/scripts examples gigl tests snapchat scripts
CPP_SOURCES:=$(shell find gigl-core/csrc \( -name "*.cpp" -o -name "*.cu" \) 2>/dev/null)
Comment thread
mkolodner-sc marked this conversation as resolved.
CPP_SOURCES:=$(shell find gigl-core/core \( -name "*.cpp" -o -name "*.cu" \) 2>/dev/null)
# clang-tidy 15 does not fully support CUDA syntax (e.g. <<<...>>>, __global__).
# Exclude .cu files from tidy targets; clang-format and clangd handle them fine.
CPP_SOURCES_NO_CUDA:=$(filter-out %.cu,$(CPP_SOURCES))
Expand All @@ -35,8 +35,8 @@ GIGL_E2E_TEST_COMPILED_PIPELINE_PATH:=/tmp/gigl/pipeline_${DATE}_${GIT_HASH}.yam

GIT_BRANCH:=$(shell git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "")

# Find all markdown files in the repo except for those in .venv or tools directories.
MD_FILES := $(shell find . -type f -name "*.md" ! -path "*/.venv/*" ! -path "*/tools/*")
# Find all markdown files in the repo except for those in .venv, tools, or cmake cache directories.
MD_FILES := $(shell find . -type f -name "*.md" ! -path "*/.venv/*" ! -path "*/tools/*" ! -path "*/.cache/*")
GIGL_ALERT_EMAILS?=""

get_ver_hash:
Expand Down Expand Up @@ -165,20 +165,11 @@ type_check:
build_cpp_extensions:
$(MAKE) -C gigl-core build_cpp_extensions

check_lint_cpp: build_cpp_extensions
$(if $(CPP_SOURCES_NO_CUDA),uv run python -m scripts.run_cpp_lint $(CPP_SOURCES_NO_CUDA))

# Not part of `make format`: clang-tidy --fix rewrites logic (renames identifiers,
# changes expressions, adds/removes keywords), not just style. Run manually and
# review the diff before committing. Note: --fix cannot auto-repair every check;
# some violations require manual edits.
# --extra-arg=-Wno-ignored-optimization-argument suppresses GCC-specific LTO flags
# (-fno-fat-lto-objects, -flto=auto) that cmake writes into compile_commands.json.
# clang-tidy forwards compiler warnings via clang-diagnostic-*, and .clang-tidy sets
# WarningsAsErrors: '*', so the warning must be silenced at the compiler level before
# clang-tidy ever sees it.
fix_lint_cpp: build_cpp_extensions
$(if $(CPP_SOURCES_NO_CUDA),clang-tidy-15 --fix --extra-arg=-Wno-ignored-optimization-argument -p gigl-core/.cache/cmake_build/compile_commands.json $(CPP_SOURCES_NO_CUDA))
check_lint_cpp:
$(MAKE) -C gigl-core check_lint_cpp

fix_lint_cpp:
$(MAKE) -C gigl-core fix_lint_cpp

lint_test: check_format assert_yaml_configs_parse check_lint_cpp
@echo "Lint checks pass!"
Expand Down
10 changes: 5 additions & 5 deletions docs/cpp_style_guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ Enforced via `readability-identifier-naming`:
| Option | Value | Effect |
| ---------------------------------------------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `WarningsAsErrors` | `*` | Every check failure is a hard error in CI |
| `HeaderFilterRegex` | `.*/gigl-core/csrc/.*` | Scopes checks to our own headers. Using `.*` causes clang-tidy to report warnings from every PyTorch/pybind11 header it parses, flooding output with thousands of third-party issues. |
| `HeaderFilterRegex` | `.*/gigl-core/core/.*` | Scopes checks to our own headers. Using `.*` causes clang-tidy to report warnings from every PyTorch/pybind11 header it parses, flooding output with thousands of third-party issues. |
| `FormatStyle` | `none` | clang-tidy does not auto-reformat; use clang-format separately |
| `bugprone-string-constructor.LargeLengthThreshold` | `8388608` (8 MB) | Strings larger than 8 MB from a length argument are flagged |
| `modernize-loop-convert.NamingStyle` | `camelBack` | Auto-generated loop variable names use camelBack, matching `readability-identifier-naming.VariableCase` |
Expand All @@ -174,7 +174,7 @@ ______________________________________________________________________

## pybind11 Extension Modules

Extension modules live under `gigl-core/csrc/`.
Extension modules live under `gigl-core/core/`.

### Naming convention

Expand All @@ -184,11 +184,11 @@ Extension modules live under `gigl-core/csrc/`.
| `<name>.cpp` / `<name>.cu` | Implementation — function and class definitions |
| `<name>.h` | Declarations (function signatures, class definitions, constants) |

Example: to add a `my_op` extension under `gigl-core/csrc/sampling/`:
Example: to add a `my_op` extension under `gigl-core/core/sampling/`:

```
gigl-core/csrc/sampling/python_my_op.cpp ← pybind11 bindings
gigl-core/csrc/sampling/my_op.cpp ← implementation
gigl-core/core/sampling/python_my_op.cpp ← pybind11 bindings
gigl-core/core/sampling/my_op.cpp ← implementation
```

The compiled `.so` is installed into the `gigl_core` package and importable as `gigl_core.<name>`.
5 changes: 5 additions & 0 deletions gigl-core/.clangd
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Point clangd at the test compilation database rather than the default cmake_build one.
# The test database includes both the extension modules and the test binaries, so clangd
# can resolve gtest headers for test files alongside production headers.
CompileFlags:
CompilationDatabase: .cache/cpp_tests
8 changes: 4 additions & 4 deletions gigl-core/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -26,19 +26,19 @@ endif()

# ---------------------------------------------------------------------------
# Extension modules — auto-discovered.
# Files named python_*.cpp under csrc/ are compiled as pybind11 extension
# Files named python_*.cpp under core/ are compiled as pybind11 extension
# modules. The companion <name>.cpp (without the "python_" prefix) is included
# automatically when present. Add a new extension by dropping source files
# here; no changes to this CMakeLists.txt are needed.
# ---------------------------------------------------------------------------
if(CMAKE_CUDA_COMPILER)
file(GLOB_RECURSE _PYTHON_SRCS CONFIGURE_DEPENDS
"${CMAKE_CURRENT_SOURCE_DIR}/csrc/python_*.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/csrc/python_*.cu"
"${CMAKE_CURRENT_SOURCE_DIR}/core/python_*.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/core/python_*.cu"
)
else()
file(GLOB_RECURSE _PYTHON_SRCS CONFIGURE_DEPENDS
"${CMAKE_CURRENT_SOURCE_DIR}/csrc/python_*.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/core/python_*.cpp"
)
endif()

Expand Down
31 changes: 23 additions & 8 deletions gigl-core/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Invoked from the GiGL repo root via: $(MAKE) -C gigl-core <target>
# All paths below are relative to gigl-core/.

CPP_SOURCES := $(shell find csrc \( -name "*.cpp" -o -name "*.cu" \) 2>/dev/null)
CPP_SOURCES := $(shell find core \( -name "*.cpp" -o -name "*.cu" \) 2>/dev/null)
# clang-tidy 15 does not fully support CUDA syntax (e.g. <<<...>>>, __global__).
# Exclude .cu files from tidy targets; clang-format and clangd handle them fine.
CPP_SOURCES_NO_CUDA := $(filter-out %.cu,$(CPP_SOURCES))
Expand All @@ -12,10 +12,12 @@ CPP_SOURCES_NO_CUDA := $(filter-out %.cu,$(CPP_SOURCES))
# pyproject.toml, make skips the reinstall unless something actually changed.
# We cd to the repo root so that no-build-isolation-package in the root pyproject.toml
# is respected by uv pip install.
.cache/cmake_build/CMakeInit.txt: $(shell find csrc \( -name '*.cpp' -o -name '*.cu' -o -name '*.h' -o -name '*.cuh' \) 2>/dev/null) CMakeLists.txt pyproject.toml
.cache/cmake_build/CMakeInit.txt: $(shell find core \( -name '*.cpp' -o -name '*.cu' -o -name '*.h' -o -name '*.cuh' \) 2>/dev/null) CMakeLists.txt pyproject.toml
cd $(abspath $(CURDIR)/..) && uv pip install -e gigl-core/

build_cpp_extensions: .cache/cmake_build/CMakeInit.txt
# Also depend on the test cmake configure so that .cache/cpp_tests/compile_commands.json
# is generated automatically, giving clangd visibility into test files and gtest headers.
build_cpp_extensions: .cache/cmake_build/CMakeInit.txt .cache/cpp_tests/.configured

.cache/cpp_tests/.configured: CMakeLists.txt tests/CMakeLists.txt .cache/cmake_build/CMakeInit.txt
cmake -C .cache/cmake_build/CMakeInit.txt -S . -B .cache/cpp_tests -DGIGL_CORE_BUILD_TESTS=ON
Expand All @@ -25,13 +27,26 @@ unit_test_cpp: .cache/cpp_tests/.configured
cmake --build .cache/cpp_tests --parallel
ctest --test-dir .cache/cpp_tests --output-on-failure

# TODO: Remove the $(if ...) guards once C++ source files are permanently present in the
# repo. The guards exist to silently no-op on branches that have no python_*.cpp files yet.
check_format_cpp:
$(if $(CPP_SOURCES),clang-format-15 --dry-run --Werror --style=file $(CPP_SOURCES))
clang-format-15 --dry-run --Werror --style=file $(CPP_SOURCES)

format_cpp:
$(if $(CPP_SOURCES),clang-format-15 -i --style=file $(CPP_SOURCES))
clang-format-15 -i --style=file $(CPP_SOURCES)

# Not part of `make format`: clang-tidy --fix rewrites logic (renames identifiers,
# changes expressions, adds/removes keywords), not just style. Run manually and
# review the diff before committing. Note: --fix cannot auto-repair every check;
# some violations require manual edits.
# --extra-arg=-Wno-ignored-optimization-argument suppresses GCC-specific LTO flags
# (-fno-fat-lto-objects, -flto=auto) that cmake writes into compile_commands.json.
# clang-tidy forwards compiler warnings via clang-diagnostic-*, and .clang-tidy sets
# WarningsAsErrors: '*', so the warning must be silenced at the compiler level before
# clang-tidy ever sees it.
check_lint_cpp: build_cpp_extensions
cd $(abspath $(CURDIR)/..) && uv run python gigl-core/scripts/run_cpp_lint.py $(addprefix gigl-core/,$(CPP_SOURCES_NO_CUDA))

fix_lint_cpp: build_cpp_extensions
clang-tidy-15 --fix --extra-arg=-Wno-ignored-optimization-argument -p .cache/cmake_build/compile_commands.json $(CPP_SOURCES_NO_CUDA)

# Wipe cmake build caches. Use this if cmake's cached state becomes inconsistent
# after switching between branches with substantially different CMakeLists.txt structure.
Expand All @@ -43,4 +58,4 @@ clean_build_files_cpp:

# Declare targets as phony so make always runs their recipes, even if a file or
# directory with the same name happens to exist on disk.
.PHONY: build_cpp_extensions unit_test_cpp check_format_cpp format_cpp clean_cpp clean_build_files_cpp
.PHONY: build_cpp_extensions unit_test_cpp check_format_cpp format_cpp check_lint_cpp fix_lint_cpp clean_cpp clean_build_files_cpp
Loading
Loading