Makefile improvement using LLM

This commit is contained in:
ben
2025-11-15 12:09:54 +01:00
parent c37566ad85
commit b654db4e41

113
Makefile
View File

@@ -1,54 +1,77 @@
CFLAGS=-Wall -Werror -pthread -O3 -g0
CFLAGS += -DGETRANDOM -DARG_REPLACE_GETOPT=0
LDFLAGS=-lm -s
# Directories
SRC_DIR := src
OBJ_DIR := objs
# Common flags
CFLAGS_COMMON := -Wall -Werror -pthread
CFLAGS_RELEASE := -O3 -g0
CFLAGS_DEBUG := -O0 -g
DEFINES := -DGETRANDOM -DARG_REPLACE_GETOPT=0
LDFLAGS_COMMON := -lm
LDFLAGS_RELEASE := -s
# Default build flags (can be overridden from the command line)
CFLAGS ?= $(CFLAGS_COMMON) $(CFLAGS_RELEASE) $(DEFINES)
LDFLAGS ?= $(LDFLAGS_COMMON) $(LDFLAGS_RELEASE)
# Source lists
LIB_SOURCES := \
argtable3.c \
base64.c \
binhex.c \
curve25519.c \
inexact.c \
norx_inexact.c \
sha3.c \
tests.c \
readpassphrase.c \
randombytes.c \
chacha20_drng.c \
blake2.c
ARGON2_SOURCES := \
argon2.c \
argon2-core.c \
argon2-thread.c \
argon2-encoding.c \
argon2-impl-select.c \
argon2-arch.c
MAIN_SOURCE := main.c
# Derived paths
LIB_SRCS := $(addprefix $(SRC_DIR)/,$(LIB_SOURCES))
LIB_OBJS := $(addprefix $(OBJ_DIR)/,$(LIB_SOURCES:.c=.o))
ARGON2_SRCS := $(addprefix $(SRC_DIR)/,$(ARGON2_SOURCES))
MAIN_SRC := $(addprefix $(SRC_DIR)/,$(MAIN_SOURCE))
# Phony targets
.PHONY: all default release debug clean
# Default target
all: inexact
default: inexact
release: inexact
debug: CFLAGS=-Wall -Werror -pthread -O0 -g
debug: CFLAGS += -DGETRANDOM -DARG_REPLACE_GETOPT=0
debug: LDFLAGS=-lm
# Debug build: override flags for this target only
debug: CFLAGS := $(CFLAGS_COMMON) $(CFLAGS_DEBUG) $(DEFINES)
debug: LDFLAGS := $(LDFLAGS_COMMON)
debug: inexact
argtable3.o: src/argtable3.c
mkdir -p objs
$(CC) $(CFLAGS) -c src/argtable3.c -o objs/argtable3.o
# Link final binary
inexact: $(LIB_OBJS) $(ARGON2_SRCS) $(MAIN_SRC)
$(CC) $(CFLAGS) $(ARGON2_SRCS) $(MAIN_SRC) $(LIB_OBJS) -o $@ $(LDFLAGS)
base64.o: src/base64.c
$(CC) $(CFLAGS) -c src/base64.c -o objs/base64.o
# Ensure object directory exists
$(OBJ_DIR):
mkdir -p $(OBJ_DIR)
binhex.o: src/binhex.c
$(CC) $(CFLAGS) -c src/binhex.c -o objs/binhex.o
curve25519.o: src/curve25519.c
$(CC) $(CFLAGS) -c src/curve25519.c -o objs/curve25519.o
inexact.o: src/inexact.c
$(CC) $(CFLAGS) -c src/inexact.c -o objs/inexact.o
norx_inexact.o: src/norx_inexact.c
$(CC) $(CFLAGS) -c src/norx_inexact.c -o objs/norx_inexact.o
sha3.o: src/sha3.c
$(CC) $(CFLAGS) -c src/sha3.c -o objs/sha3.o
tests.o: src/tests.c
$(CC) $(CFLAGS) -c src/tests.c -o objs/tests.o
readpassphrase.o: src/readpassphrase.c
$(CC) $(CFLAGS) -c src/readpassphrase.c -o objs/readpassphrase.o
randombytes.o: src/randombytes.c
$(CC) $(CFLAGS) -c src/randombytes.c -o objs/randombytes.o
chacha20_drng.o: src/chacha20_drng.c
$(CC) $(CFLAGS) -c src/chacha20_drng.c -o objs/chacha20_drng.o
blake2.o: src/blake2.c
$(CC) $(CFLAGS) -c src/blake2.c -o objs/blake2.o
inexact: src/main.c argtable3.o base64.o binhex.o curve25519.o inexact.o norx_inexact.o sha3.o tests.o readpassphrase.o chacha20_drng.o randombytes.o blake2.o
$(CC) $(CFLAGS) src/argon2.c src/argon2-core.c src/argon2-thread.c src/argon2-encoding.c src/argon2-impl-select.c src/argon2-arch.c src/main.c objs/argtable3.o objs/base64.o objs/binhex.o objs/curve25519.o objs/inexact.o objs/norx_inexact.o objs/sha3.o objs/tests.o objs/readpassphrase.o objs/randombytes.o objs/chacha20_drng.o objs/blake2.o -o inexact $(LDFLAGS)
# Generic rule to build objects from src/*.c into objs/*.o
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR)
$(CC) $(CFLAGS) -c $< -o $@
# Cleanup
clean:
-rm objs/*.o
-rm -f inexact inexact.exe
-$(RM) $(LIB_OBJS)
-$(RM) inexact inexact.exe