jw-pkg/make
Jan Lindemann f21ff8e713
topdir.mk: Add dynamic file creation machinery

Add generic machinery to dynamically create files in $(TOPDIR). The need arises because version controlled configuration files for linters are going to be introduced.

For that, this commit introduces a variable $(TD_GENERATE_FILES), which target all depends on, and which topdir.clean removes.

It defaults to another variable also introduced by this commit, $(TD_COPY_FILES), which in turn defaults to $(TOPDIR)/conf/topdir.

This commit also adds support for JW_PKG_TOPDIR_COPY_PATH. It supports a PATH-style syntax, which allows pointing to multiple directories to be checked for source files. If they exist, they will be appended to the files found in $(TOPDIR)/conf/topdir after copying. Defining arbitray files to copy is not supported before security implications during CI runs are better understood.

Having the copy prerequisites work comes at the cost of having to add .SECONDEXPANSION. Since it's limited to the toplevel Makefile, I suppose that's acceptable.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-05-31 18:20:30 +02:00
..
backup.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
bin.mk bin, make, scripts: Re-add files necessary for packaging jw-build 2025-11-14 11:22:50 +01:00
cache.mk cache.mk: Don't overwrite defined variables 2026-05-05 16:57:00 +02:00
cleandirs.mk cleandirs.mk: Fix: Descend into subdirectories 2026-05-05 16:55:44 +02:00
conf.mk make: Align equal signs in *.mk to column 30 2026-03-16 14:57:50 +01:00
cpp-extra-targets.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
cpp.mk cpp.mk, swig.mk: Re-add files necessary for building auth 2025-11-14 16:17:21 +01:00
debugger.mk defs.mk: Define Q and use it in *.mk 2026-01-26 17:58:23 +01:00
defs-cpp.mk make: Replace RPM -> PKG 2026-03-16 14:57:50 +01:00
defs-dev.mk defs-[dev|dist].mk: Add DATA_DIR, JSON_DIR 2025-12-03 20:48:32 +01:00
defs-dirs.mk defs-dirs.mk: Add support for EXTRA_SUBDIR_TARGETS 2020-04-10 12:03:42 +00:00
defs-dist.mk defs-dist.mk: HTMLDIROWNER wwwrun -> root 2026-01-13 15:41:46 +01:00
defs.mk defs.mk: Fix initial version 1.0.0-0-dev 2026-05-14 11:46:41 +02:00
depend.mk defs.mk: Define Q and use it in *.mk 2026-01-26 17:58:23 +01:00
dev-utils.mk defs.mk: Define Q and use it in *.mk 2026-01-26 17:58:23 +01:00
dirs.mk Fix: Failing $(PREREQ_DIRS_DONE) doesn\'t have sub-subdirectories rebuilt 2019-07-01 17:59:09 +00:00
doc-rules.mk Everywhere: Purge spaces in text files 2019-03-06 12:38:20 +00:00
doc.mk Everywhere: Rename MODDIR -> JWBDIR 2019-06-29 21:34:18 +00:00
dummy.mk std-targets.mk: Add file 2026-01-26 17:17:23 +01:00
exe.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
gettext.mk gettext.mk: Re-add files necessary for building bootstrap 2025-11-14 16:22:40 +01:00
git-cvs-bridge.mk make: Align equal signs in *.mk to column 30 2026-03-16 14:57:50 +01:00
git-submod.mk make / scripts: git.janware.com -> devgit.janware.com 2026-05-12 15:15:29 +02:00
htdocs.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
include.mk make: Align equal signs in *.mk to column 30 2026-03-16 14:57:50 +01:00
install-files.mk defs.mk: Define Q and use it in *.mk 2026-01-26 17:58:23 +01:00
js.mk js.mk: Don't minify without minifier 2025-12-11 17:23:22 +01:00
ldlibpath.mk ldlibpath.mk: Replace ifndef by ifeq ($(origin, ...)) 2026-01-28 15:24:13 +01:00
lib.mk make: Align equal signs in *.mk to column 30 2026-03-16 14:57:50 +01:00
list-files.mk make: Align equal signs in *.mk to column 30 2026-03-16 14:57:50 +01:00
lo.mk lo.mk: Fix warning that targets were not remade 2026-02-10 09:57:59 +01:00
make.mk cmds.distro.CmdInfo: Rename to cmds.platform.CmdInfo 2026-04-24 16:53:55 +02:00
Makefile make: Install cache-projects.mk 2026-02-01 09:50:52 +01:00
path-rules.mk defs.mk: Define Q and use it in *.mk 2026-01-26 17:58:23 +01:00
pkg-dist.mk pkg-dist.mk: Make pkg-release-reinstall: get-pub 2026-05-14 16:09:25 +02:00
platform.mk cmds.distro.CmdInfo: Rename to cmds.platform.CmdInfo 2026-04-24 16:53:55 +02:00
profile.mk make: Re-add files necessary for building jw-python 2025-11-13 17:27:14 +01:00
profiler-defs.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
profiler-rules-run.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
profiler.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
proj.mk make: Replace RPM -> PKG 2026-03-16 14:57:50 +01:00
project.conf topdir.mk / projects-dir.mk: Remove BASE_PKGS 2026-03-15 14:58:54 +01:00
projects+project.mk projects+project.mk: Add file 2026-02-18 01:20:26 +01:00
projects-dir-include.mk projects+project.mk: Add file 2026-02-18 01:20:26 +01:00
projects-dir-minimal.mk make / scripts: git.janware.com -> devgit.janware.com 2026-05-12 15:15:29 +02:00
projects-dir.mk topdir.mk / projects-dir.mk: Add get-pub 2026-05-14 12:44:04 +02:00
projects.mk projects.mk -> platform.mk: Move definitions up 2026-03-02 12:55:36 +00:00
py-defs.mk py-defs.mk: Move boolean vars to top 2026-03-17 16:22:17 +01:00
py-mod.mk python-tools.sh: Fix __init__.py linter complaints 2026-05-31 17:51:51 +02:00
py-mods.mk make: Re-add files necessary for building jw-python 2025-11-13 17:27:14 +01:00
py-rules.mk make: Re-add files necessary for building jw-python 2025-11-13 17:27:14 +01:00
py-run.mk make: Align equal signs in *.mk to column 30 2026-03-16 14:57:50 +01:00
py-version.mk projects.mk, py-defs.mk, py-version.mk: Add py-version.mk 2025-02-22 09:04:17 +00:00
rules.mk make: Align equal signs in *.mk to column 30 2026-03-16 14:57:50 +01:00
run.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
scripts-targets.mk defs.mk: Remove installation type SCRIPT 2026-04-11 14:51:11 +02:00
scripts.mk Everywhere: Rename MODDIR -> JWBDIR 2019-06-29 21:34:18 +00:00
so.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
srcdist.mk make: Replace RPM -> PKG 2026-03-16 14:57:50 +01:00
std-targets.mk std-targets.mk: Add file 2026-01-26 17:17:23 +01:00
std-tools.mk make: Align equal signs in *.mk to column 30 2026-03-16 14:57:50 +01:00
subdirs.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
svg-to-pixmap.mk Rename svg.mk to svg-to-pixmap.mk 2025-12-21 20:24:56 +01:00
swig.mk make: Align equal signs in *.mk to column 30 2026-03-16 14:57:50 +01:00
tag-defs.mk make: Align equal signs in *.mk to column 30 2026-03-16 14:57:50 +01:00
tag-rules.mk bin, make, scripts: Re-add files necessary for packaging jw-build 2025-11-14 11:22:50 +01:00
tailwind.mk tailwind.mk: Add file 2025-12-06 15:12:35 +01:00
targets-tools.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
test-exe.mk make: Align equal signs in *.mk to column 30 2026-03-16 14:57:50 +01:00
text.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
tmpl.mk tmpl.mk: Re-add because it's useful 2025-12-23 11:07:37 +01:00
tools.mk make: Align equal signs in *.mk to column 30 2026-03-16 14:57:50 +01:00
topdir.mk topdir.mk: Add dynamic file creation machinery 2026-05-31 18:20:30 +02:00
upload-defs.mk upload-defs.mk: Add support for UPLOAD_PROTOCOL 2023-12-18 13:00:43 +00:00
upload-rules.mk bin, make, scripts: Re-add files necessary for packaging jw-build 2025-11-14 11:22:50 +01:00
vim.mk make: Align equal signs in *.mk to column 30 2026-03-16 14:57:50 +01:00
yapp.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00