# ################################################################
# xxHash Makefile
# Copyright (C) Yann Collet 2012-2015
#
# GPL v2 License
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# You can contact the author at :
#  - xxHash source repository : http://code.google.com/p/xxhash/
# ################################################################
# xxhsum : provides 32/64 bits hash of one or multiple files, or stdin
# ################################################################

# Version numbers
LIBVER_MAJOR_SCRIPT:=`sed -n '/define XXH_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < xxhash.h`
LIBVER_MINOR_SCRIPT:=`sed -n '/define XXH_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < xxhash.h`
LIBVER_PATCH_SCRIPT:=`sed -n '/define XXH_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < xxhash.h`
LIBVER_MAJOR := $(shell echo $(LIBVER_MAJOR_SCRIPT))
LIBVER_MINOR := $(shell echo $(LIBVER_MINOR_SCRIPT))
LIBVER_PATCH := $(shell echo $(LIBVER_PATCH_SCRIPT))
LIBVER := $(LIBVER_MAJOR).$(LIBVER_MINOR).$(LIBVER_PATCH)

CFLAGS ?= -O3
CFLAGS += -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
          -Wstrict-aliasing=1 -Wswitch-enum -Wdeclaration-after-statement \
		  -Wstrict-prototypes -Wundef
FLAGS   = $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(MOREFLAGS)
XXHSUM_VERSION=$(LIBVER)
MD2ROFF = ronn
MD2ROFF_FLAGS = --roff --warnings --manual="User Commands" --organization="xxhsum $(XXHSUM_VERSION)"

# Define *.exe as extension for Windows systems
ifneq (,$(filter Windows%,$(OS)))
EXT =.exe
else
EXT =
endif

# OS X linker doesn't support -soname, and use different extension
# see : https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryDesignGuidelines.html
ifeq ($(shell uname), Darwin)
	SHARED_EXT = dylib
	SHARED_EXT_MAJOR = $(LIBVER_MAJOR).$(SHARED_EXT)
	SHARED_EXT_VER = $(LIBVER).$(SHARED_EXT)
	SONAME_FLAGS = -install_name $(LIBDIR)/libxxhash.$(SHARED_EXT_MAJOR) -compatibility_version $(LIBVER_MAJOR) -current_version $(LIBVER)
else
	SONAME_FLAGS = -Wl,-soname=libxxhash.$(SHARED_EXT).$(LIBVER_MAJOR)
	SHARED_EXT = so
	SHARED_EXT_MAJOR = $(SHARED_EXT).$(LIBVER_MAJOR)
	SHARED_EXT_VER = $(SHARED_EXT).$(LIBVER)
endif

LIBXXH = libxxhash.$(SHARED_EXT_VER)


.PHONY: default
default: lib xxhsum

.PHONY: all
all: lib xxhsum xxhsum32 xxhsum_inlinedXXH

xxhsum32: CFLAGS += -m32
xxhsum xxhsum32: xxhash.c xxhsum.c
	$(CC) $(FLAGS) $^ -o $@$(EXT)
	ln -sf $@ xxh32sum
	ln -sf $@ xxh64sum

xxhsum_inlinedXXH: xxhsum.c
	$(CC) $(FLAGS) -DXXH_PRIVATE_API $^ -o $@$(EXT)


# library

libxxhash.a: ARFLAGS = rcs
libxxhash.a: xxhash.o
	@echo compiling static library
	@$(AR) $(ARFLAGS) $@ $^

$(LIBXXH): LDFLAGS += -shared -fPIC
$(LIBXXH): xxhash.c
	@echo compiling dynamic library $(LIBVER)
	@$(CC) $(FLAGS) $^ $(LDFLAGS) $(SONAME_FLAGS) -o $@
	@echo creating versioned links
	@ln -sf $@ libxxhash.$(SHARED_EXT_MAJOR)
	@ln -sf $@ libxxhash.$(SHARED_EXT)

libxxhash : $(LIBXXH)

lib: libxxhash.a libxxhash


# tests

.PHONY: test
test: xxhsum
	# stdin
	./xxhsum < xxhash.c
	# multiple files
	./xxhsum *
	# internal bench
	./xxhsum -bi1
	# file bench
	./xxhsum -bi1 xxhash.c

.PHONY: test-mem
test-mem: xxhsum
	# memory tests
	valgrind --leak-check=yes --error-exitcode=1 ./xxhsum -bi1 xxhash.c
	valgrind --leak-check=yes --error-exitcode=1 ./xxhsum -H0 xxhash.c
	valgrind --leak-check=yes --error-exitcode=1 ./xxhsum -H1 xxhash.c

.PHONY: test32
test32: clean xxhsum32
	@echo ---- test 32-bits ----
	./xxhsum32 -bi1 xxhash.c

test-xxhsum-c: xxhsum
	# xxhsum to/from pipe
	./xxhsum * | ./xxhsum -c -
	./xxhsum -H0 * | ./xxhsum -c -
	# xxhsum to/from file, shell redirection
	./xxhsum * > .test.xxh64
	./xxhsum -H0 * > .test.xxh32
	./xxhsum -c .test.xxh64
	./xxhsum -c .test.xxh32
	./xxhsum -c < .test.xxh64
	./xxhsum -c < .test.xxh32
	# xxhsum -c warns improperly format lines.
	cat .test.xxh64 .test.xxh32 | ./xxhsum -c -
	cat .test.xxh32 .test.xxh64 | ./xxhsum -c -
	# Expects "FAILED"
	echo "0000000000000000  LICENSE" | ./xxhsum -c -; test $$? -eq 1
	echo "00000000  LICENSE" | ./xxhsum -c -; test $$? -eq 1
	# Expects "FAILED open or read"
	echo "0000000000000000  test-expects-file-not-found" | ./xxhsum -c -; test $$? -eq 1
	echo "00000000  test-expects-file-not-found" | ./xxhsum -c -; test $$? -eq 1

clean-xxhsum-c:
	@$(RM) -f .test.xxh32 .test.xxh64

armtest: clean
	@echo ---- test ARM compilation ----
	$(MAKE) xxhsum CC=arm-linux-gnueabi-gcc MOREFLAGS="-Werror -static"

clangtest: clean
	@echo ---- test clang compilation ----
	$(MAKE) all CC=clang MOREFLAGS="-Werror -Wconversion -Wno-sign-conversion"

gpptest: clean
	@echo ---- test g++ compilation ----
	$(MAKE) all CC=g++ CFLAGS="-O3 -Wall -Wextra -Wundef -Wshadow -Wcast-align -Werror"

c90test: clean
	@echo ---- test strict C90 compilation [xxh32 only] ----
	$(CC) -std=c90 -Werror -pedantic -DXXH_NO_LONG_LONG -c xxhash.c
	$(RM) xxhash.o

usan: clean
	@echo ---- check undefined behavior - sanitize ----
	$(MAKE) clean test CC=clang MOREFLAGS="-g -fsanitize=undefined"

staticAnalyze: clean
	@echo ---- static analyzer - scan-build ----
	CFLAGS="-g -Werror" scan-build --status-bugs -v $(MAKE) all

namespaceTest:
	$(CC) -c xxhash.c
	$(CC) -DXXH_NAMESPACE=TEST_ -c xxhash.c -o xxhash2.o
	$(CC) xxhash.o xxhash2.o xxhsum.c -o xxhsum2  # will fail if one namespace missing (symbol collision)
	$(RM) *.o xxhsum2  # clean

xxhsum.1: xxhsum.1.md
	cat $^ | $(MD2ROFF) $(MD2ROFF_FLAGS) | sed -n '/^\.\\\".*/!p' > $@

man: xxhsum.1

clean-man:
	$(RM) xxhsum.1

preview-man: clean-man man
	man ./xxhsum.1

test-all: clean all namespaceTest test test32 test-xxhsum-c clean-xxhsum-c \
	armtest clangtest gpptest c90test test-mem usan staticAnalyze \
	trailingWhitespace

.PHONY: listL120
listL120:  # extract lines >= 120 characters in *.{c,h}, by Takayuki Matsuoka (note : $$, for Makefile compatibility)
	find . -type f -name '*.c' -o -name '*.h' | while read -r filename; do awk 'length > 120 {print FILENAME "(" FNR "): " $$0}' $$filename; done

.PHONY: trailingWhitespace
trailingWhitespace:
	! grep -E "`printf '[ \\t]$$'`" *.1 *.c *.h *.md LICENSE Makefile cmake_unofficial/*

.PHONY: clean
clean: clean-xxhsum-c
	@$(RM) core *.o libxxhash.*
	@$(RM) xxhsum$(EXT) xxhsum32$(EXT) xxhsum_inlinedXXH$(EXT) xxh32sum xxh64sum
	@echo cleaning completed


#-----------------------------------------------------------------------------
# make install is validated only for the following targets
#-----------------------------------------------------------------------------
ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS))

DESTDIR     ?=
# directory variables : GNU conventions prefer lowercase
# see https://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html
# support both lower and uppercase (BSD), use uppercase in script
prefix      ?= /usr/local
PREFIX      ?= $(prefix)
exec_prefix ?= $(PREFIX)
libdir      ?= $(exec_prefix)/lib
LIBDIR      ?= $(libdir)
includedir  ?= $(PREFIX)/include
INCLUDEDIR  ?= $(includedir)
bindir      ?= $(exec_prefix)/bin
BINDIR      ?= $(bindir)
datarootdir ?= $(PREFIX)/share
mandir      ?= $(datarootdir)/man
man1dir     ?= $(mandir)/man1

ifneq (,$(filter $(shell uname),OpenBSD FreeBSD NetBSD DragonFly SunOS))
MANDIR  ?= $(PREFIX)/man/man1
else
MANDIR  ?= $(man1dir)
endif

ifneq (,$(filter $(shell uname),SunOS))
INSTALL ?= ginstall
else
INSTALL ?= install
endif

INSTALL_PROGRAM ?= $(INSTALL)
INSTALL_DATA    ?= $(INSTALL) -m 644


.PHONY: install
install: lib xxhsum
	@echo Installing libxxhash
	@$(INSTALL) -d -m 755 $(DESTDIR)$(LIBDIR)
	@$(INSTALL_DATA) libxxhash.a $(DESTDIR)$(LIBDIR)
	@$(INSTALL_PROGRAM) $(LIBXXH) $(DESTDIR)$(LIBDIR)
	@ln -sf $(LIBXXH) $(DESTDIR)$(LIBDIR)/libxxhash.$(SHARED_EXT_MAJOR)
	@ln -sf $(LIBXXH) $(DESTDIR)$(LIBDIR)/libxxhash.$(SHARED_EXT)
	@$(INSTALL) -d -m 755 $(DESTDIR)$(INCLUDEDIR)   # includes
	@$(INSTALL_DATA) xxhash.h $(DESTDIR)$(INCLUDEDIR)
	@echo Installing xxhsum
	@$(INSTALL) -d -m 755 $(DESTDIR)$(BINDIR)/ $(DESTDIR)$(MANDIR)/
	@$(INSTALL_PROGRAM) xxhsum $(DESTDIR)$(BINDIR)/xxhsum
	@ln -sf xxhsum $(DESTDIR)$(BINDIR)/xxh32sum
	@ln -sf xxhsum $(DESTDIR)$(BINDIR)/xxh64sum
	@echo Installing man pages
	@$(INSTALL_DATA) xxhsum.1 $(DESTDIR)$(MANDIR)/xxhsum.1
	@ln -sf xxhsum.1 $(DESTDIR)$(MANDIR)/xxh32sum.1
	@ln -sf xxhsum.1 $(DESTDIR)$(MANDIR)/xxh64sum.1
	@echo xxhash installation completed

.PHONY: uninstall
uninstall:
	@$(RM) $(DESTDIR)$(LIBDIR)/libxxhash.a
	@$(RM) $(DESTDIR)$(LIBDIR)/libxxhash.$(SHARED_EXT)
	@$(RM) $(DESTDIR)$(LIBDIR)/libxxhash.$(SHARED_EXT_MAJOR)
	@$(RM) $(DESTDIR)$(LIBDIR)/$(LIBXXH)
	@$(RM) $(DESTDIR)$(INCLUDEDIR)/xxhash.h
	@$(RM) $(DESTDIR)$(BINDIR)/xxh32sum
	@$(RM) $(DESTDIR)$(BINDIR)/xxh64sum
	@$(RM) $(DESTDIR)$(BINDIR)/xxhsum
	@$(RM) $(DESTDIR)$(MANDIR)/xxh32sum.1
	@$(RM) $(DESTDIR)$(MANDIR)/xxh64sum.1
	@$(RM) $(DESTDIR)$(MANDIR)/xxhsum.1
	@echo xxhsum successfully uninstalled

endif
