Makefile improvement using LLM
This commit is contained in:
113
Makefile
113
Makefile
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user