78 lines
1.7 KiB
Makefile
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
|