Files
inexact/Makefile
2025-11-15 12:15:29 +01:00

78 lines
1.7 KiB
Makefile

# 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 build: override flags for this target only
debug: CFLAGS := $(CFLAGS_COMMON) $(CFLAGS_DEBUG) $(DEFINES)
debug: LDFLAGS := $(LDFLAGS_COMMON)
debug: inexact
# Link final binary
inexact: $(LIB_OBJS) $(ARGON2_SRCS) $(MAIN_SRC)
$(CC) $(CFLAGS) $(ARGON2_SRCS) $(MAIN_SRC) $(LIB_OBJS) -o $@ $(LDFLAGS)
# Ensure object directory exists
$(OBJ_DIR):
mkdir -p $(OBJ_DIR)
# 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) $(LIB_OBJS)
-$(RM) inexact inexact.exe