Files
itflow/plugins/TCPDF/Makefile
2026-05-04 16:15:30 -04:00

155 lines
3.9 KiB
Makefile

# Makefile
#
# @since 2026-04-21
# @category Library
# @package TCPDF
# @author Nicola Asuni <info@tecnick.com>
# @copyright 2002-2026 Nicola Asuni - Tecnick.com LTD
# @license https://www.gnu.org/copyleft/lesser.html GNU-LGPL v3 (see LICENSE.TXT)
# @link https://github.com/tecnickcom/TCPDF
#
# This file is part of tcpdf software library.
# ----------------------------------------------------------------------------------------------------------------------
SHELL=/bin/bash
.SHELLFLAGS=-o pipefail -c
# Project owner
OWNER=tecnickcom
# Project vendor
VENDOR=${OWNER}
# Project name
PROJECT=tcpdf
# Project version (strip trailing line endings and accidental literal "\\n")
VERSION=$(shell sed -E 's/\\n$$//' VERSION | tr -d '\r\n')
# Current directory
CURRENTDIR=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))
# Target directory
TARGETDIR=$(CURRENTDIR)target
# sed argument for in-place substitutions
SEDINPLACE=-i
ifeq ($(shell uname -s),Darwin)
SEDINPLACE=-i ''
endif
# Default port number for the example server
PORT?=8971
# PHP binary
PHP=$(shell which php)
# Composer executable
COMPOSER=$(PHP) -d "apc.enable_cli=0" $(shell which composer)
# --- MAKE TARGETS ---
# Display general help about this command
.PHONY: help
help:
@echo ""
@echo "$(PROJECT) Makefile."
@echo "The following commands are available:"
@echo ""
@awk '/^## /{desc=substr($$0,4)} /^\.PHONY:/{if(NF>1) {target=$$2; if(desc) printf " make %-15s: %s\n",target,desc; desc=""}}' Makefile
@echo ""
@echo "To test and build everything from scratch, use the shortcut:"
@echo " make x"
@echo ""
# Alias for help target
.PHONY: all
all: help
# Test and build everything from scratch
.PHONY: x
x: buildall
## Test and build everything from scratch
.PHONY: buildall
buildall: deps
$(MAKE) qa
## Delete vendor and generated directories
.PHONY: clean
clean:
rm -rf ./vendor ./tests/vendor $(TARGETDIR) ./build ./cache
## Download dependencies for the library and test harness
.PHONY: deps
deps: ensuretarget
$(COMPOSER) install --no-interaction
@if [ -f ./tests/composer.json ]; then \
$(COMPOSER) --working-dir=tests install --no-interaction; \
fi
## Generate source code documentation with Doctum if available
.PHONY: doc
doc:
@if [ -x ./vendor/bin/doctum ]; then \
./vendor/bin/doctum update ./scripts/doctum.php --force; \
else \
echo "Doctum is not installed. Run make deps first."; \
exit 1; \
fi
## Create missing target directories for test and build artifacts
.PHONY: ensuretarget
ensuretarget:
mkdir -p $(TARGETDIR)/test
mkdir -p $(TARGETDIR)/report
mkdir -p $(TARGETDIR)/doc
## Lint PHP files (syntax only)
.PHONY: lint
lint:
find . -type f -name '*.php' \
-not -path './vendor/*' \
-not -path './tests/vendor/*' \
-print0 | xargs -0 -n1 -P4 $(PHP) -l > /dev/null
## Run all checks
.PHONY: qa
qa: version ensuretarget lint test
## Generate quality reports (not implemented in this legacy repository)
.PHONY: report
report: ensuretarget
@echo "No additional report target is configured for TCPDF."
## Start the development server
.PHONY: server
server:
$(PHP) -t examples -S localhost:$(PORT)
## Tag this git version
.PHONY: tag
tag:
git checkout main && \
git tag -a ${VERSION} -m "Release ${VERSION}" && \
git push origin --tags && \
git pull
## Run integration tests from tests/launch.sh
.PHONY: test
test:
XDEBUG_MODE=coverage sh ./tests/launch.sh
## Set the code version from the VERSION file
.PHONY: version
version:
sed $(SEDINPLACE) -E "s#^([[:space:]]*private static [^=]+ = ')[^']*';#\1${VERSION}';#" include/tcpdf_static.php
sed $(SEDINPLACE) -E "1,170 s#^// Version[[:space:]]+: .*#// Version : ${VERSION}#" tcpdf.php
sed $(SEDINPLACE) -E "1,170 s#^ \* @version .*# * @version ${VERSION}#" tcpdf.php
## Increase the version patch number
.PHONY: versionup
versionup:
echo ${VERSION} | gawk -F. '{printf("%d.%d.%d\n",$$1,$$2,(($$3+1)));}' > VERSION
$(MAKE) version