@@ -80,6 +80,7 @@ Targets:
8080 Runs various code quality checks including formatting and linting.
8181
8282 - check Run code quality checks (fmt, clippy)
83+ Use NO_CAIRO_SETUP=1 to skip Cairo setup (e.g., make check NO_CAIRO_SETUP=1)
8384 - fmt Format code using taplo and cargo fmt
8485 - pre-push Run formatting and checks before committing / Pushing
8586
@@ -97,6 +98,7 @@ Targets:
9798 - help Show this help message
9899 - git-hook Setup git hooks path to .githooks
99100 - run-mock-atlantic-server Run the mock Atlantic server (options: PORT=4002 FAILURE_RATE=0.1 MAX_CONCURRENT_JOBS=5 BIND_ADDR=0.0.0.0)
101+ - install-llvm19 Install LLVM 19 for Cairo Native (Usage: make install-llvm19 [SUDO=sudo] [CODENAME=jammy|bookworm])
100102
101103endef
102104export HELP
@@ -244,7 +246,10 @@ build-orchestrator: setup-cairo
244246 @echo -e " $( PASS) ✅ Build complete!$( RESET) "
245247
246248.PHONY : check
247- check : setup-cairo
249+ check :
250+ @if [ -z " $( NO_CAIRO_SETUP) " ]; then \
251+ $(MAKE ) --silent setup-cairo; \
252+ fi
248253 @echo -e " $( DIM) Running code quality checks...$( RESET) "
249254 @echo -e " $( INFO) Running prettier check...$( RESET) "
250255 @npm install
@@ -552,3 +557,43 @@ setup-bootstrapper:
552557 @cp -r ./build-artifacts/bootstrapper/solidity/out/ ./bootstrapper-v2/contracts/ethereum/out/
553558 @cp -r ./build-artifacts/bootstrapper/cairo/target/ ./bootstrapper-v2/contracts/madara/target/
554559 @echo -e " $( PASS) Bootstrapper setup complete!$( RESET) "
560+
561+ # ============================================================================ #
562+ # LLVM 19 SETUP FOR CAIRO NATIVE #
563+ # ============================================================================ #
564+
565+ # Install LLVM 19 for Cairo Native
566+ # Usage: make install-llvm19 [SUDO=sudo] [CODENAME=jammy|bookworm]
567+ # SUDO=sudo - Use sudo for commands (default: empty, assumes root in Docker)
568+ # CODENAME=jammy|bookworm - Override OS detection (optional)
569+ .PHONY : install-llvm19
570+ install-llvm19 :
571+ @echo " Installing LLVM 19 for Cairo Native..."
572+ @# Detect codename if not provided
573+ @if [ -z " $( CODENAME) " ]; then \
574+ if [ -f /etc/os-release ]; then \
575+ . /etc/os-release && CODENAME=$$ VERSION_CODENAME; \
576+ elif grep -q " bookworm" /etc/debian_version 2> /dev/null || (grep -q " bookworm" /etc/os-release 2> /dev/null); then \
577+ CODENAME=bookworm; \
578+ elif grep -q " jammy" /etc/os-release 2> /dev/null; then \
579+ CODENAME=jammy; \
580+ else \
581+ CODENAME=jammy; \
582+ fi ; \
583+ else \
584+ CODENAME=$(CODENAME ) ; \
585+ fi ; \
586+ echo " Using LLVM repository codename: $$ CODENAME" ; \
587+ $(if $(SUDO ) ,sudo,) wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | $(if $(SUDO ) ,sudo,) tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc > /dev/null; \
588+ $(if $(SUDO ) ,sudo,) add-apt-repository -y " deb http://apt.llvm.org/$$ CODENAME/ llvm-toolchain-$$ CODENAME-19 main" ; \
589+ $(if $(SUDO ) ,sudo,) apt-get update -y; \
590+ $(if $(SUDO ) ,sudo,) apt-get install -y \
591+ clang-19 llvm-19 llvm-19-dev llvm-19-runtime \
592+ libmlir-19-dev mlir-19-tools \
593+ libpolly-19-dev \
594+ liblld-19-dev \
595+ libc6-dev \
596+ $$(if [ "$$CODENAME" = "bookworm" ]; then echo "libstdc++-12-dev"; else echo "libstdc++-11-dev gcc-11 g++-11"; fi) \
597+ libudev-dev protobuf-compiler build-essential \
598+ libssl-dev pkg-config curl wget git libgmp3-dev netcat-openbsd; \
599+ echo " ✅ LLVM 19 installed successfully"
0 commit comments