MAINTAINERCLEANFILES = Makefile.in
htmldir = $(localstatedir)/www/html
nodemodulesdir = node_modules
nextoutdir = out
nextbuilddir = .next
# List of paths relative to the build output directory.
#
outindexpage = index.html
outserverpage = server.html
outjsmodulesdir = _next
outimagesdir = pngs
# The build output directory listed under EXTRA_DIST contains the files to
# include in the release/source tarball.
#
# It is recommended to use the following command to regenerate the file list
# as files get added/removed:
#
# find . \
# -mindepth 1 -maxdepth 1 \
# -not \( -name node_modules -prune \) \
# -not \( -name *git* -prune \) \
# -not \( -name *husky* -prune \) \
# -not \( -name public -prune \) \
# -not \( -name *[Mm]ake* -prune \) \
# | sed -E 's@^./(.+)$@\1 \\@'
#
# The find command:
# * ignores ./node_modules directory,
# * ignores git related files,
# * ignores husky related files
# * ignores ./public directory
# * ignores make related files, and
# * removes leading "./" and append "\"
#
# Note: This only works when we want to include all files within the listed
# subdirectories. It is recommended to run a similar find command on a
# subdirectory to skip undesired files in the subdirectory.
#
EXTRA_DIST = \
$(nextoutdir) \
next.config.js \
next-env.d.ts \
tsconfig.json \
theme \
styles \
.lintstagedrc.json \
README.md \
package.json \
lib \
.prettierrc.json \
types \
components \
pages \
.eslintrc.json \
commitlint.config.js \
.eslintignore \
.env \
package-lock.json
# Blank target; the build output directory should be usable as-is.
$(nextoutdir): ;
# This target is for maintainers only; do not execute during CI/CD.
#
$(nodemodulesdir):
-@echo "Install node modules (dependencies) prior to building."
npm install --no-package-lock --ignore-scripts
# This target is for maintainers only; do not execute during CI/CD. In
# addition, this target can only be used if the local git repository exists.
#
# Note: this target must **not** be renamed to the same name as the build
# output directory because it will trigger a build during the `make` implicit
# call.
#
.PHONY: build
build: $(nodemodulesdir)
-@echo "Remove build output files to prepare for rebuild."
rm -rf $(nextoutdir) $(nextbuilddir)
-@echo "Build web UI."
npm run build
-@echo "Stage only the build output directory and commit the build output."
git reset \
&& git add $(nextoutdir) \
&& git commit -m "chore: rebuild web UI"
install-data-hook:
-@echo "Place build output files."
(cd $(srcdir)/$(nextoutdir); \
cp -r --no-preserve=mode \
$(outindexpage) $(outserverpage) $(outjsmodulesdir) \
$(DESTDIR)/$(htmldir)/ \
)
-@echo "Create symlink to images to enable borrowing icon etc. without duplicating."
(cd $(DESTDIR)/$(htmldir); $(LN_S) skins/alteeve/images $(outimagesdir))
uninstall-hook:
-@echo "Remove all installed files of the current module."
(cd $(DESTDIR)/$(htmldir); \
rm -rf $(outindexpage) $(outserverpage) $(outjsmodulesdir) $(outimagesdir) \
)
clean-local:
-@echo "Clean up node modules."
rm -rf $(nodemodulesdir)