# PyVRP's C++ core requires C++20.
CXX_STD = CXX20

# Sources under vendor/pyvrp/search/ include top-level headers ("Measure.h",
# "ProblemData.h", ...) by short name. Includer-relative includes take
# precedence (the like-named headers in search/ are not shadowed), so we only
# need to make the top-level directory visible as a fallback.
#
# -DNDEBUG disables the vendored core's assert()s in release (matching PyVRP's
# release build); the 2^53 validation in measure_bridge.h is the real R-side guard.
PKG_CPPFLAGS = -Ivendor/pyvrp -DNDEBUG

# Compiles the binding layer (top level of src/) plus the vendored PyVRP core
# sources that are wired in. Add new vendor .cpp files here as variants are
# exposed. The vendor's bindings.cpp (pybind11) and logging.h (spdlog) are NOT
# compiled -- they are replaced by the cpp11 binding layer.
OBJECTS = $(patsubst %.cpp,%.o,$(wildcard *.cpp)) \
          vendor/pyvrp/ProblemData.o \
          vendor/pyvrp/CostEvaluator.o \
          vendor/pyvrp/Solution.o \
          vendor/pyvrp/Route.o \
          vendor/pyvrp/Trip.o \
          vendor/pyvrp/DurationSegment.o \
          vendor/pyvrp/LoadSegment.o \
          vendor/pyvrp/DynamicBitset.o \
          vendor/pyvrp/RandomNumberGenerator.o \
          vendor/pyvrp/search/LocalSearch.o \
          vendor/pyvrp/search/SearchSpace.o \
          vendor/pyvrp/search/Route.o \
          vendor/pyvrp/search/Solution.o \
          vendor/pyvrp/search/primitives.o \
          vendor/pyvrp/search/PerturbationManager.o \
          vendor/pyvrp/search/SwapTails.o \
          vendor/pyvrp/search/SwapStar.o \
          vendor/pyvrp/search/SwapRoutes.o \
          vendor/pyvrp/search/RelocateWithDepot.o
