Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: embeddedartistry/libcpp
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: master
Choose a base ref
...
head repository: embeddedartistry/libcpp
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: claude/setup-libcxx-sync-5kWRI
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 8 commits
  • 10,748 files changed
  • 1 contributor

Commits on Mar 14, 2026

  1. Replace libcxx/libcxxabi submodules with vendored copy from LLVM mono…

    …repo
    
    The llvm-mirror GitHub repositories have stopped updating. This replaces
    the defunct submodule references with vendored copies extracted directly
    from the official LLVM monorepo at tag llvmorg-19.1.7.
    
    Changes:
    - Remove libcxx and libcxxabi git submodules
    - Add scripts/sync-llvm.sh for extracting libcxx/libcxxabi from LLVM
      monorepo tarballs at any tag
    - Vendor libcxx and libcxxabi from llvmorg-19.1.7
    - Add LLVM_VERSION file tracking the synced tag and date
    
    https://claude.ai/code/session_01HSFVgYuUbCkLuHFNziuJpb
    claude committed Mar 14, 2026
    Configuration menu
    Copy the full SHA
    90535f2 View commit details
    Browse the repository at this point in the history
  2. Update build system and overlay files for LLVM 19 compatibility

    Major changes to support the LLVM 19.1.7 vendored libcxx/libcxxabi:
    
    meson.build:
    - Remove references to deleted source files (utility.cpp, debug.cpp,
      cxa_unexpected.cpp, experimental/memory_resource.cpp)
    - Add libcxx/include and libcxxabi/include to system include paths so
      LLVM 19's reorganized subdirectory headers are accessible
    - Remove obsolete _LIBCPP_DEBUG=0 and _LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS flags
    
    include/c++/meson.build:
    - Switch from custom __config.in concatenation to using upstream __config
      directly, generating only __config_site for build configuration
    - Generate __assertion_handler from LLVM's vendor template
    - Remove references to headers deleted in LLVM 19 (__debug,
      __functional_03, __threading_support, __mutex_base, etc.)
    - Update experimental headers list to match LLVM 19
    
    Overlay files:
    - Fix __threading_support -> __thread/support.h (cxa_guard.cpp)
    - Fix sysetm_error typo (framework_thread.cpp)
    - Replace __debug include with __assert (system_error.cpp)
    - Add __libcpp_compat.h include to files using removed macros
    
    New files:
    - include/c++/__libcpp_compat.h: compatibility shims for macros removed
      between LLVM 10 and 19 (_VSTD, _LIBCPP_FUNC_VIS, etc.)
    
    Other:
    - Update __libcxx_config_site.in to match upstream __config_site format
    - Fix newlib xlocale.h reference (removed upstream, use baremetal fallback)
    
    https://claude.ai/code/session_01HSFVgYuUbCkLuHFNziuJpb
    claude committed Mar 14, 2026
    Configuration menu
    Copy the full SHA
    b19ee97 View commit details
    Browse the repository at this point in the history
  3. Add _LIBCPP_HARDENING_MODE_DEFAULT to config site template

    LLVM 19 requires this define in __config_site or compilation fails with
    a hard error. Set to _LIBCPP_HARDENING_MODE_NONE for embedded/baremetal
    use (disables all runtime hardening checks, zero overhead).
    
    https://claude.ai/code/session_01HSFVgYuUbCkLuHFNziuJpb
    claude committed Mar 14, 2026
    Configuration menu
    Copy the full SHA
    85e78b0 View commit details
    Browse the repository at this point in the history
  4. Fix atomic_support.h include paths and Meson configure_file handling

    - Add libcxx/src to include directories for both libcxx and libcxxabi
      targets, matching upstream CMake (libcxxabi/src/CMakeLists.txt:60)
    - Fix broken relative path in src/c++abi/cxa_handlers.cpp that
      referenced non-existent libcxxabi/src/include/atomic_support.h
    - Normalize relative paths in locale.cpp and new_terminate_badalloc.cpp
      to use the new include directory instead of fragile ../../ paths
    - Fix Meson declare_dependency to avoid configure_file outputs being
      treated as compilable source files
    
    https://claude.ai/code/session_01HSFVgYuUbCkLuHFNziuJpb
    claude committed Mar 14, 2026
    Configuration menu
    Copy the full SHA
    9cae389 View commit details
    Browse the repository at this point in the history
  5. Add concerns and next steps document for LLVM 19 sync

    Documents completed fixes, remaining concerns (fragile include paths,
    dead code, GCC version requirements), and recommended next steps.
    
    https://claude.ai/code/session_01HSFVgYuUbCkLuHFNziuJpb
    claude committed Mar 14, 2026
    Configuration menu
    Copy the full SHA
    de83fa3 View commit details
    Browse the repository at this point in the history

Commits on Apr 12, 2026

  1. Add replay script for LLVM 19 sync migration

    Generates patches from this branch's fix commits and applies them to a
    target libcpp checkout, with optional --prefix for monorepo subdirectory
    layouts and --squash for collapsing into a single commit.
    
    https://claude.ai/code/session_01HSFVgYuUbCkLuHFNziuJpb
    claude committed Apr 12, 2026
    Configuration menu
    Copy the full SHA
    5e01d62 View commit details
    Browse the repository at this point in the history
  2. Add full migration script from pre-sync state to LLVM 19 vendored state

    Reproduces the complete sequence: remove defunct libcxx/libcxxabi
    submodules, vendor LLVM 19.1.7 from the monorepo tarball, write
    LLVM_VERSION and scripts/sync-llvm.sh, commit the vendoring, then
    apply the three build-system fix patches.
    
    https://claude.ai/code/session_01HSFVgYuUbCkLuHFNziuJpb
    claude committed Apr 12, 2026
    Configuration menu
    Copy the full SHA
    8462849 View commit details
    Browse the repository at this point in the history
  3. Add --prefix support to migrate-to-llvm19.sh for monorepo subdirectories

    Handles monorepos where libcpp lives at a subdirectory with libcxx and
    libcxxabi registered as real submodules at that subdirectory. Finds
    submodule names by scanning .gitmodules entries rather than assuming
    the name matches the basename, preserves other submodule entries in
    .gitmodules, extracts the tarball into the prefix directory, and uses
    git am --directory for patch application.
    
    https://claude.ai/code/session_01HSFVgYuUbCkLuHFNziuJpb
    claude committed Apr 12, 2026
    Configuration menu
    Copy the full SHA
    a60dd75 View commit details
    Browse the repository at this point in the history
Loading