Skip to content
Snippets Groups Projects
Makefile 2.13 KiB
Newer Older
JP Aumasson's avatar
JP Aumasson committed
#
# Argon2 source code package
# 
# This work is licensed under a Creative Commons CC0 1.0 License/Waiver.
# 
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
#

RUN = argon2
BENCH = bench
GENKAT = genkat

JP Aumasson's avatar
JP Aumasson committed
DIST = phc-winner-argon2
JP Aumasson's avatar
JP Aumasson committed

SRC = src/argon2.c src/core.c src/blake2/blake2b.c src/thread.c src/encoding.c
SRC_RUN = src/run.c
SRC_BENCH = src/bench.c
SRC_GENKAT = src/genkat.c
JP Aumasson's avatar
JP Aumasson committed
OBJ = $(SRC:.c=.o)
JP Aumasson's avatar
JP Aumasson committed

CFLAGS = -std=c89 -pthread -O3 -Wall -g
JP Aumasson's avatar
JP Aumasson committed

#OPT=TRUE
ifeq ($(OPT), TRUE)
Samuel Neves's avatar
Samuel Neves committed
	CFLAGS += -march=native
JP Aumasson's avatar
JP Aumasson committed
	SRC += src/opt.c
JP Aumasson's avatar
JP Aumasson committed
else
JP Aumasson's avatar
JP Aumasson committed
	SRC += src/ref.c
JP Aumasson's avatar
JP Aumasson committed
endif

JP Aumasson's avatar
JP Aumasson committed
BUILD_PATH := $(shell pwd)
KERNEL_NAME := $(shell uname -s)
JP Aumasson's avatar
JP Aumasson committed

JP Aumasson's avatar
JP Aumasson committed
ifeq ($(KERNEL_NAME), Linux)
JP Aumasson's avatar
JP Aumasson committed
	LIB_EXT := so
	LIB_CFLAGS := -shared -fPIC
endif
Thomas Klausner's avatar
Thomas Klausner committed
ifeq ($(KERNEL_NAME), NetBSD)
	LIB_EXT := so
	LIB_CFLAGS := -shared -fPIC
endif
JP Aumasson's avatar
JP Aumasson committed
ifeq ($(KERNEL_NAME), Darwin)
JP Aumasson's avatar
JP Aumasson committed
	LIB_EXT := dylib
	LIB_CFLAGS := -dynamiclib -install_name @rpath/lib$(LIB_NAME).$(LIB_EXT)
endif
Samuel Neves's avatar
Samuel Neves committed
ifeq ($(findstring MINGW, $(KERNEL_NAME)), MINGW)
	LIB_EXT := dll
	LIB_CFLAGS := -shared -Wl,--out-implib,lib$(LIB_NAME).$(LIB_EXT).a
endif
ifeq ($(KERNEL_NAME), $(filter $(KERNEL_NAME),OpenBSD FreeBSD))
	LIB_EXT := so
	LIB_CFLAGS := -shared -fPIC
endif
JP Aumasson's avatar
JP Aumasson committed

JP Aumasson's avatar
JP Aumasson committed
LIB_SH := lib$(LIB_NAME).$(LIB_EXT)
LIB_ST := lib$(LIB_NAME).a
JP Aumasson's avatar
JP Aumasson committed

.PHONY: clean dist format $(GENKAT)
JP Aumasson's avatar
JP Aumasson committed

all: clean $(RUN) libs 
JP Aumasson's avatar
JP Aumasson committed
libs: $(LIB_SH) $(LIB_ST)
JP Aumasson's avatar
JP Aumasson committed

$(RUN):	        $(SRC) $(SRC_RUN)
JP Aumasson's avatar
JP Aumasson committed
		$(CC) $(CFLAGS) $^ -Isrc  -o $@
JP Aumasson's avatar
JP Aumasson committed

$(BENCH):       $(SRC) $(SRC_BENCH)
		$(CC) $(CFLAGS) $^ -Isrc  -o $@
$(GENKAT):      $(SRC) $(SRC_GENKAT)
		$(CC) $(CFLAGS) $^ -Isrc  -o $@ -DGENKAT
JP Aumasson's avatar
JP Aumasson committed
$(LIB_SH): 	$(SRC)
		$(CC) $(CFLAGS) $(LIB_CFLAGS) $^ -Isrc -o $@

$(LIB_ST): 	$(OBJ)
		ar rcs $@ $^
JP Aumasson's avatar
JP Aumasson committed

clean:
		rm -f $(RUN) $(BENCH) $(GENKAT)
		rm -f $(LIB_SH) $(LIB_ST) kat-argon2* 
JP Aumasson's avatar
JP Aumasson committed
		rm -rf *.dSYM
JP Aumasson's avatar
JP Aumasson committed
		cd src/ && rm -f *.o
		cd src/blake2/ && rm -f *.o
		cd kats/ &&  rm -f kat-* diff* run_* make_*
JP Aumasson's avatar
JP Aumasson committed

dist:
JP Aumasson's avatar
JP Aumasson committed
		cd ..; \
		tar -c --exclude='.??*' -z -f $(DIST)-`date "+%Y%m%d"`.tgz $(DIST)/*
test:
JP Aumasson's avatar
JP Aumasson committed
		@sh kats/test.sh
format:
		clang-format -style="{BasedOnStyle: llvm, IndentWidth: 4}" -i src/*.c src/*.h src/blake2/*.c src/blake2/*.h