ifeq (${DEBUG},y)
	DEBFLAGS = -O0 -g -ggdb -DDEBUG
	CONFIGURATION = debug
else
	DEBFLAGS = -O2 -DNDEBUG
	CONFIGURATION = release
endif

ARCH_CFLAGS_LINUX32 = -m32 -march=i486 -mtune=i486
ARCH_CFLAGS_LINUX64 = -m64 -march=nocona -mtune=generic
ARCH_CFLAGS_MAC = -Wno-deprecated-declarations -Wno-format-extra-args -arch x86_64
ARCH_CFLAGS_BSD32 = -m32 -march=i486 -mtune=i486
ARCH_CFLAGS_BSD64 = -m64 -march=nocona -mtune=generic

ARCH_LDFLAGS = -ldl -lpthread
ARCH_LDFLAGS_BSD = -lpthread

TARGET += GeneralPurpose Journal JournalParse ManageFlash

SYS = $(shell ${CC} -dumpmachine)
ARCH = ${SYS}

ifneq (, ${CROSS})
	ARCH = ${CROSS}
endif

ifneq (, $(findstring linux, ${SYS}))
	ifneq (, $(findstring x86_64, ${ARCH}))
		ARCH_CFLAGS = ${ARCH_CFLAGS_LINUX64}
		PLATFORM = linux_glibc-x86_64
	else
		ARCH_CFLAGS = ${ARCH_CFLAGS_LINUX32}
		PLATFORM = linux_glibc-x86
	endif
endif

ifneq (, $(findstring freebsd, ${SYS}))
	ifneq (, $(findstring x86_64, ${ARCH}))
		ARCH_CFLAGS = ${ARCH_CFLAGS_BSD64}
		PLATFORM = freebsd-x86_64
	else
		ARCH_CFLAGS = ${ARCH_CFLAGS_BSD32}
		PLATFORM = freebsd-x86
	endif
	ARCH_LDFLAGS = ${ARCH_LDFLAGS_BSD}
endif

ifneq (, $(findstring darwin, ${SYS}))
	ARCH_CFLAGS = ${ARCH_CFLAGS_MAC}
	PLATFORM = macos-x86_64
endif

OUTDIR = ./../out/${PLATFORM}-${CONFIGURATION}

CFLAGS += -x c
CFLAGS += -Werror -Wall -Wextra -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function
CFLAGS += -I./../../include -I./../include
CFLAGS += $(DEBFLAGS)
CFLAGS += $(ARCH_CFLAGS)

LDFLAGS += $(ARCH_LDFLAGS) -Wl,-rpath,\$$ORIGIN

CLEANFILES = ${TARGET}

.PHONY: ${TARGET}

all:	${TARGET}

GeneralPurpose: CopyLib
	@mkdir -p ${OUTDIR}
	${CC} ${CFLAGS} -o ${OUTDIR}/$@  ./GeneralPurpose/*.c ${LDFLAGS}
Journal: CopyLib
	@mkdir -p ${OUTDIR}
	${CC} ${CFLAGS} -o ${OUTDIR}/$@  ./Journal/*.c ${LDFLAGS}
JournalParse: CopyLib
	@mkdir -p ${OUTDIR}
	${CC} ${CFLAGS} -o ${OUTDIR}/$@  ./JournalParse/*.c ${LDFLAGS}
ManageFlash: CopyLib
	@mkdir -p ${OUTDIR}
	${CC} ${CFLAGS} -o ${OUTDIR}/$@  ./ManageFlash/*.c ${LDFLAGS}
CopyLib:
	@mkdir -p ${OUTDIR}
	cp -f ./../../lib/${PLATFORM}/librtpkcs11* ${OUTDIR}

clean:
	rm -r ${OUTDIR} || true
