#
# Include makefile for libtomcrypt
#

# The version
VERSION=1.17
# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
VERSION_LT=0:117

PLATFORM := $(shell uname | sed -e 's/_.*//')

# Compiler and Linker Names
ifndef PREFIX
  PREFIX:=
endif

ifeq ($(CC),cc)
  CC := $(PREFIX)gcc
endif
LD:=$(PREFIX)ld
AR:=$(PREFIX)ar

# Archiver [makes .a files]
#AR=ar
ARFLAGS:=r

ifndef MAKE
  MAKE:=make
endif


# Compilation flags. Note the += does not write over the user's CFLAGS!
CFLAGS += -I./src/headers/ -Wall -Wsign-compare -Wshadow -DLTC_SOURCE

ifdef OLD_GCC
CFLAGS += -W
# older GCCs can't handle the "rotate with immediate" ROLc/RORc/etc macros
# define this to help
CFLAGS += -DLTC_NO_ROLC
else
CFLAGS += -Wextra
# additional warnings
CFLAGS += -Wsystem-headers -Wbad-function-cast -Wcast-align
CFLAGS += -Wstrict-prototypes -Wpointer-arith
CFLAGS += -Wdeclaration-after-statement
endif

CFLAGS += -Wno-type-limits

ifdef LTC_DEBUG
# compile for DEBUGGING (required for ccmalloc checking!!!)
ifneq (,$(strip $(LTC_DEBUG)))
CFLAGS += -g3 -DLTC_NO_ASM -DLTC_TEST_DBG=$(LTC_DEBUG)
else
CFLAGS += -g3 -DLTC_NO_ASM -DLTC_TEST_DBG
endif
else

ifdef LTC_SMALL
# optimize for SIZE
CFLAGS += -Os -DLTC_SMALL_CODE
else

ifndef IGNORE_SPEED
# optimize for SPEED
CFLAGS += -O3 -funroll-loops

# add -fomit-frame-pointer.  hinders debugging!
CFLAGS += -fomit-frame-pointer
endif

endif # COMPILE_SMALL
endif # COMPILE_DEBUG


ifneq ($(findstring clang,$(CC)),)
CFLAGS += -Wno-typedef-redefinition -Wno-tautological-compare
endif


GIT_VERSION := $(shell [ -e .git ] && { echo -n git- ; git describe --tags --always --dirty ; } || echo $(VERSION))
ifneq ($(GIT_VERSION),)
CFLAGS += -DGIT_VERSION=\"$(GIT_VERSION)\"
endif


#List of demo objects
DSOURCES = $(wildcard demos/*.c)
DOBJECTS = $(DSOURCES:.c=.o)

#List of testprof headers
THEADERS != ls testprof/*.h

TIMING=timing
TEST=test

USEFUL_DEMOS=hashsum
DEMOS=$(USEFUL_DEMOS) ltcrypt small tv_gen sizes constants

TIMINGS=demos/timing.o
TESTS=demos/test.o

#LIBPATH  The directory for libtomcrypt to be installed to.
#INCPATH  The directory to install the header files for libtomcrypt.
#DATAPATH The directory to install the pdf docs.
#BINPATH  The directory to install the binaries provided.
DESTDIR  ?= /usr/local
LIBPATH  ?= $(DESTDIR)/lib
INCPATH  ?= $(DESTDIR)/include
DATAPATH ?= $(DESTDIR)/share/doc/libtomcrypt/pdf
BINPATH  ?= $(DESTDIR)/bin

#Who do we install as?
ifdef INSTALL_USER
USER=$(INSTALL_USER)
else
USER=root
endif

ifdef INSTALL_GROUP
GROUP=$(INSTALL_GROUP)
else
GROUP=wheel
endif