1# ################################################################
2# Copyright (C) Przemyslaw Skibinski 2016-present
3# All rights reserved.
4#
5# BSD license
6# Redistribution and use in source and binary forms, with or without modification,
7# are permitted provided that the following conditions are met:
8#
9# * Redistributions of source code must retain the above copyright notice, this
10#   list of conditions and the following disclaimer.
11#
12# * Redistributions in binary form must reproduce the above copyright notice, this
13#   list of conditions and the following disclaimer in the documentation and/or
14#   other materials provided with the distribution.
15#
16# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
20# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
23# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26#
27# You can contact the author at :
28#  - LZ4 source repository : https://github.com/Cyan4973/lz4
29#  - LZ4 forum froup : https://groups.google.com/forum/#!forum/lz4c
30# ################################################################
31
32
33CXXFLAGS ?= -O2
34CXXFLAGS += -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow -Wstrict-aliasing=1 -Wswitch-enum -Wno-comment
35CPPFLAGS += $(MOREFLAGS)
36FLAGS   = $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS)
37
38LZ4API = ../../lib/lz4.h
39LZ4MANUAL = ../../doc/lz4_manual.html
40LZ4FAPI = ../../lib/lz4frame.h
41LZ4FMANUAL = ../../doc/lz4frame_manual.html
42LIBVER_MAJOR_SCRIPT:=`sed -n '/define LZ4_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < $(LZ4API)`
43LIBVER_MINOR_SCRIPT:=`sed -n '/define LZ4_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < $(LZ4API)`
44LIBVER_PATCH_SCRIPT:=`sed -n '/define LZ4_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < $(LZ4API)`
45LIBVER_SCRIPT:= $(LIBVER_MAJOR_SCRIPT).$(LIBVER_MINOR_SCRIPT).$(LIBVER_PATCH_SCRIPT)
46LZ4VER := $(shell echo $(LIBVER_SCRIPT))
47
48# Define *.exe as extension for Windows systems
49ifneq (,$(filter Windows%,$(OS)))
50EXT =.exe
51else
52EXT =
53endif
54
55
56.PHONY: default
57default: gen_manual
58
59gen_manual: gen_manual.cpp
60	$(CXX) $(FLAGS) $^ -o $@$(EXT)
61
62$(LZ4MANUAL) : gen_manual $(LZ4API)
63	echo "Update lz4 manual in /doc"
64	./gen_manual $(LZ4VER) $(LZ4API) $@
65
66$(LZ4FMANUAL) : gen_manual $(LZ4FAPI)
67	echo "Update lz4frame manual in /doc"
68	./gen_manual $(LZ4VER) $(LZ4FAPI) $@
69
70.PHONY: manuals
71manuals: $(LZ4MANUAL) $(LZ4FMANUAL)
72
73.PHONY: clean
74clean:
75	@$(RM) gen_manual$(EXT)
76	@echo Cleaning completed
77