# GNU make syntax reigns in this file. all_cflags += -Werror all_cppflags += -MD -MP -MF .deps/$(subst .._,,$(subst /,_,$<)).d ASCIIDOC = asciidoc CPPCHECK = cppcheck CPPCHECK_SUPPRESSIONS = cppcheck-suppressions.txt GPERF = gperf XSLTPROC = xsltproc MANPAGE_XSL = $(shell if [ -e /usr/local/etc/asciidoc/docbook-xsl/manpage.xsl ]; \ then echo /usr/local/etc/asciidoc/docbook-xsl/manpage.xsl; \ else echo /etc/asciidoc/docbook-xsl/manpage.xsl; fi) version := \ $(shell (git --git-dir=$(srcdir)/.git describe --dirty || git --git-dir=$(srcdir)/.git describe || echo vunknown) \ 2>/dev/null | sed -e 's/v//' -e 's/-/+/' -e 's/-/_/g') dist_dir = ccache-$(version) dist_archives = \ ccache-$(version).tar.bz2 \ ccache-$(version).tar.gz ifneq ($(shell uname), Darwin) dist_archives += ccache-$(version).tar.xz endif generated_docs = ccache.1 AUTHORS.html LICENSE.html MANUAL.html NEWS.html built_dist_files = $(generated_docs) headers = \ ccache.h \ compopt.h \ conf.h \ counters.h \ getopt_long.h \ hashtable.h \ hashtable_itr.h \ hashtable_private.h \ hashutil.h \ language.h \ macroskip.h \ manifest.h \ mdfour.h \ murmurhashneutral2.h \ system.h \ test/framework.h \ test/suites.h \ test/util.h files_to_clean += *.tar.bz2 *.tar.gz *.tar.xz *.xml .deps/* perfdir.* files_to_distclean += $(built_dist_files) version.c test/suites.h files_to_distclean += .deps version.c dev.mk source_dist_files = \ $(base_sources) \ $(headers) \ $(test_sources) \ AUTHORS.txt \ GPL-3.0.txt \ HACKING.txt \ LICENSE.txt \ MANUAL.txt \ Makefile.in \ NEWS.txt \ README.md \ autogen.sh \ config.guess \ config.h.in \ config.sub \ configure \ configure.ac \ confitems.gperf \ confitems_lookup.c \ dev.mk.in \ envtoconfitems.gperf \ envtoconfitems_lookup.c \ install-sh \ m4 \ main.c \ test.sh \ zlib/*.c \ zlib/*.h dist_files = \ $(addprefix $(srcdir)/, $(source_dist_files)) \ $(built_dist_files) uncrustify_exclude_files = \ getopt_long.c \ hashtable.c \ hashtable_itr.c \ snprintf.c ifneq ($(shell sed 's/.*"\(.*\)".*/\1/' version.c 2>/dev/null),$(version)) $(shell echo 'const char CCACHE_VERSION[] = "$(version)";' >version.c) endif version.o: version.c %_lookup.c: %.gperf $(GPERF) $< | awk '/#ifdef __GNUC__/ { ++i; if (i == 2) { print "static"; }} {print}' >$@ echo "static const size_t `echo $* | tr a-z A-Z`_TOTAL_KEYWORDS = `sed -nr 's/.*TOTAL_KEYWORDS = ([0-9]+).*/\1/p' $@`;" >>$@ .PHONY: dist dist: $(dist_archives) $(dist_archives): $(dist_files) tmpdir=$$(mktemp -d /tmp/tmp-ccache-dist.XXXXXX) && \ dir=$$tmpdir/$(dist_dir) && \ mkdir $$dir && \ (cd $(srcdir) && \ rsync -r --relative $(source_dist_files) $$dir) && \ cp $(srcdir)/INSTALL-from-release-archive.md $$dir/INSTALL.md && \ cp $(built_dist_files) $$dir && \ echo "Remove this file to enable developer mode." >$$dir/dev_mode_disabled && \ (cd $$tmpdir && \ tarcompression= && \ case $@ in \ *.bz2) tarcompression=-j ;; \ *.gz) tarcompression=-z ;; \ *.xz) tarcompression=-J ;; \ esac && \ tar -c $$tarcompression -f $(CURDIR)/$@ $(dist_dir)) && \ rm -rf $$tmpdir .PHONY: distcheck distcheck: $(firstword $(dist_archives)) tmpdir=$$(mktemp -d /tmp/tmp-ccache-distcheck.XXXXXX) && \ (cd $$tmpdir && \ tar xjf $(CURDIR)/$< && \ mkdir -p $(dist_dir)/build && \ cd $(dist_dir)/build && \ ../configure --prefix=$$tmpdir/root && \ $(MAKE) install && \ $(MAKE) installcheck) && \ rm -rf $$tmpdir .PHONY: docs docs: $(generated_docs) %.html: %.txt $(ASCIIDOC) -a revnumber=$(version) -a toc -b xhtml11 $< %.xml: %.txt $(ASCIIDOC) -a revnumber=$(version) -d manpage -b docbook $< ccache.1: MANUAL.xml $(XSLTPROC) --nonet $(MANPAGE_XSL) $< .PHONY: check-syntax check-syntax: $(CC) $(all_cppflags) -I. $(all_cflags) -S -o /dev/null $(CHK_SOURCES) .PHONY: cppcheck cppcheck: $(CPPCHECK) --suppressions-list=$(CPPCHECK_SUPPRESSIONS) \ --inline-suppr -q --enable=all \ $(non_3pp_sources) main.c $(test_sources) .PHONY: uncrustify uncrustify: uncrustify -c uncrustify.cfg --no-backup --replace $(filter-out $(uncrustify_exclude_files), $(base_sources)) $(test_sources) -include .deps/*.d