
# Standalone Makefile for when this autoconf stuff doesn't work
# make -f Makefile2 clean all

DEBUG = -g
CFLAGS += -D_FILE_OFFSET_BITS=64 $(DEBUG)
lssl = -l:libssl.so.1.1 -l:libcrypto.so.1.1
lfuse = -lfuse

all: luks_mount luks_unlock luks_stats


build/phdr.o: lib/phdr.c lib/phdr.h lib/crypto_backend/*.h
	@mkdir -p build
	gcc $(CFLAGS) -Ilib/crypto_backend -c $< -o $@

build/c.%.o: lib/crypto_backend/%.c
	@mkdir -p build
	gcc $(CFLAGS) -c $< -o $@
	
crypto_names = af \
               crc32 \
               crypto_cipher_openssl \
               crypto_openssl \
               crypto_storage \
               pbkdf2_generic \
               pbkdf_check
obj_crypto = build/phdr.o $(foreach c,$(crypto_names),build/c.$(c).o)
lnk_crypto = $(obj_crypto) $(lssl)


Iall = -Ilib -Ilib/crypto_backend 

build/mount_fileops.o: src/mount_fileops.* lib/phdr.h lib/crypto_backend/*.h
	@mkdir -p build
	gcc $(CFLAGS) $(Iall) -c $< -o $@
obj_fileops = build/mount_fileops.o
lnk_fileops = $(obj_fileops) $(lfuse)

luks_mount: src/mount_*.c src/*.h          $(obj_fileops) $(obj_crypto)
	gcc $(CFLAGS) $(Iall) src/mount_main.c $(lnk_fileops) $(lnk_crypto) -o $@

luks_%: src/%_main.c src/*.h $(obj_crypto)
	gcc $(CFLAGS) $(Iall) $< $(lnk_crypto) -o $@

test: luks_mount    # needs user interaction
	test/run.sh

clean:
	-rm -rf build
	-rm luks_mount luks_unlock luks_stats
	-rm test/*.tmp


