Replace nlohmann/json with native C++20 JSON engine, cut build RAM/time, fix 32-bit build, enable -O2 -march=native
This commit is contained in:
@@ -1,18 +1,20 @@
|
||||
# Bantam (C++20 port) — POSIX-compatible Makefile.
|
||||
# Targets: Linux, FreeBSD, macOS, Haiku (any POSIX make: bmake, gmake, smake).
|
||||
# Dependencies: libcurl and GNU readline (found via standard include/lib
|
||||
# paths) for HTTP and interactive line editing. JSON is handled by the vendored
|
||||
# single-header nlohmann/json.hpp (no extra dependency).
|
||||
# paths) for HTTP and interactive line editing. JSON is handled natively in
|
||||
# json.cpp (no extra or vendored dependency).
|
||||
# If your headers/libs live in a non-standard prefix, override, e.g.:
|
||||
# make CPPFLAGS="-I/opt/include" LDLIBS="-L/opt/lib -lcurl -lreadline"
|
||||
#
|
||||
# 32-bit build: make 32bit
|
||||
# Or: make CXXFLAGS="-m32" LDFLAGS="-m32"
|
||||
# Or: make CXXFLAGS="-std=c++20 -O2 -m32" LDFLAGS="-m32"
|
||||
# Large file support on 32-bit: make CPPFLAGS="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE"
|
||||
|
||||
CXX = c++
|
||||
CXXFLAGS = -std=c++20 -Wall -Wextra -Wpedantic -O1 -D_POSIX_C_SOURCE=200809L -D_DEFAULT_SOURCE
|
||||
STRIP = strip
|
||||
CXXFLAGS = -std=c++20 -s -Wall -Wextra -Wpedantic -O2 -march=native -D_POSIX_C_SOURCE=200809L -D_DEFAULT_SOURCE
|
||||
CPPFLAGS = -I/usr/local/include -I. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
|
||||
LDFLAGS = -s
|
||||
LDLIBS = -L/usr/local/lib -lcurl -lreadline
|
||||
|
||||
# Location of the AddressSanitizer/UBSan runtime libraries plus a replacement
|
||||
@@ -24,33 +26,34 @@ ASANDIR = /tmp/asanlib
|
||||
OBJS = main.o config.o util.o json.o llm.o tools.o session.o render.o editor.o
|
||||
|
||||
bantam: $(OBJS)
|
||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -o bantam $(OBJS) $(LDLIBS)
|
||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) -o bantam $(OBJS) $(LDLIBS)
|
||||
$(STRIP) bantam
|
||||
|
||||
main.o: main.cpp bantam.hpp nlohmann/json.hpp
|
||||
main.o: main.cpp bantam.hpp
|
||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c main.cpp
|
||||
|
||||
config.o: config.cpp bantam.hpp nlohmann/json.hpp
|
||||
config.o: config.cpp bantam.hpp
|
||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c config.cpp
|
||||
|
||||
util.o: util.cpp bantam.hpp nlohmann/json.hpp
|
||||
util.o: util.cpp bantam.hpp
|
||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c util.cpp
|
||||
|
||||
json.o: json.cpp bantam.hpp nlohmann/json.hpp
|
||||
json.o: json.cpp bantam.hpp
|
||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c json.cpp
|
||||
|
||||
llm.o: llm.cpp bantam.hpp nlohmann/json.hpp
|
||||
llm.o: llm.cpp bantam.hpp
|
||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c llm.cpp
|
||||
|
||||
tools.o: tools.cpp bantam.hpp nlohmann/json.hpp
|
||||
tools.o: tools.cpp bantam.hpp
|
||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c tools.cpp
|
||||
|
||||
session.o: session.cpp bantam.hpp nlohmann/json.hpp
|
||||
session.o: session.cpp bantam.hpp
|
||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c session.cpp
|
||||
|
||||
render.o: render.cpp bantam.hpp nlohmann/json.hpp
|
||||
render.o: render.cpp bantam.hpp
|
||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c render.cpp
|
||||
|
||||
editor.o: editor.cpp bantam.hpp nlohmann/json.hpp
|
||||
editor.o: editor.cpp bantam.hpp
|
||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c editor.cpp
|
||||
|
||||
clean:
|
||||
@@ -64,12 +67,12 @@ install: bantam
|
||||
# optimized build. ASANDIR points the gcc driver (-B) at the runtime libs and
|
||||
# the replacement libasan_preinit.o, and sets an rpath so they load at run time.
|
||||
debug:
|
||||
$(MAKE) CXXFLAGS="$(CXXFLAGS) -g -O0 -fsanitize=address,undefined -B$(ASANDIR) -Wl,-rpath,$(ASANDIR)" bantam
|
||||
$(MAKE) CXXFLAGS="-std=c++20 -Wall -Wextra -Wpedantic -D_POSIX_C_SOURCE=200809L -D_DEFAULT_SOURCE -g -O0 -fsanitize=address,undefined -B$(ASANDIR) -Wl,-rpath,$(ASANDIR)" LDFLAGS="" STRIP=":" bantam
|
||||
|
||||
# 32-bit build target
|
||||
# Usage: make 32bit
|
||||
# This builds a 32-bit binary with large file support enabled.
|
||||
32bit:
|
||||
$(MAKE) CXXFLAGS="$(CXXFLAGS) -m32" LDFLAGS="-m32" bantam
|
||||
$(MAKE) CXXFLAGS="$(CXXFLAGS) -m32" LDFLAGS="$(LDFLAGS) -m32" bantam
|
||||
|
||||
.PHONY: clean install debug 32bit
|
||||
Reference in New Issue
Block a user