# Compiler and linker settings CXX = gcc LDFLAGS = `curl-config --libs` -lssl -lcrypto CXXFLAGS = -pedantic -std=c23 -I include `curl-config --cflags` # Source and object files SRC = $(wildcard src/*.c) OBJ = $(addprefix build/, $(notdir $(SRC:.c=.o))) # Target executable TARGET = build/x86_64/main.x86_64 # Default target all: clean dirs $(TARGET) # development target with debugging dev: CXXFLAGS += -g dev: all # Release target release: CXXFLAGS += -O3 release: all # Create build directory if it doesn't exist dirs: @mkdir -p build/x86_64 # Build target $(TARGET): $(OBJ) $(CXX) -o $@ $^ $(LDFLAGS) # Build object files build/%.o: src/%.c $(CXX) -c -o $@ $< $(CXXFLAGS) # Clean up build files clean: @rm -f $(OBJ) $(TARGET) @echo "Cleaned up build files."