From 2cc726f84b9a3b7c1c5a963b5adf840ba38754fe Mon Sep 17 00:00:00 2001 From: Björn Persson Date: Fri, 18 Oct 2013 17:16:32 +0200 Subject: Wrote a pattern rule for making directories. --- comfignat.mk | 13 +++++++------ manual.en.html | 15 +++++++++++++++ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/comfignat.mk b/comfignat.mk index e134d2e..42dc5d8 100644 --- a/comfignat.mk +++ b/comfignat.mk @@ -513,11 +513,12 @@ preprocessed_files_in_builddir = ${addprefix ${builddir}/,${preprocessed_files}} Comfignat_default_goal: build # How to make directories: -${builddir} ${stage_gprdir}: +%/: mkdir -p $@ +.PRECIOUS: %/ # How to initialize a build directory with a delegating makefile: -${builddir}/Makefile: | ${builddir} +${builddir}/Makefile: | ${builddir}/ @echo 'Writing $@.' @( echo 'Comfignat_default_goal: force ; ${delegation_command}'; \ echo '%: force ; ${delegation_command} $$@'; \ @@ -576,19 +577,19 @@ show_configuration:: true # How to preprocess the project Comfignat: -${builddir}/comfignat.gpr: comfignat.gpr.gp | ${builddir} +${builddir}/comfignat.gpr: comfignat.gpr.gp | ${builddir}/ "${GNATPREP}" $< $@ -DInvoked_By_Makefile ${all_directories} # How to preprocess files that are needed during the build: -${builddir}/%: %.gp | ${builddir} +${builddir}/%: %.gp | ${builddir}/ ${preprocess_file} # How to preprocess usage projects: -${stage_gprdir}/%: %.gp | ${stage_gprdir} +${stage_gprdir}/%: %.gp | ${stage_gprdir}/ ${preprocess_file} # How to stage usage projects that don't need preprocessing: -${stage_gprdir}/%: % | ${stage_gprdir} +${stage_gprdir}/%: % | ${stage_gprdir}/ cp -p $< $@ preprocess: $${preprocessed_files_in_builddir} diff --git a/manual.en.html b/manual.en.html index fbeb65c..e54dda0 100755 --- a/manual.en.html +++ b/manual.en.html @@ -520,6 +520,19 @@ root of the source tree. Here's an example:

for Source_Dirs use ($Srcdir & "/tools");
+

Writing Make Rules

+ +

Making Directories

+ +

There is no need to write rules to make directories. Comfignat has a pattern +rule that matches all pathnames that end with a slash, and creates the +directory and its ancestors. Just specify the directory as an order-only +prerequisite and be sure to append a slash. This rule ensures that the +directory data exists before the file db is written:

+ +
${stage_statedir}/example/data/db: | ${stage_statedir}/example/data/
+	echo stuff > $@
+

Make Targets

These phony targets are defined in comfignat.mk:

@@ -627,6 +640,8 @@ working in subdirectories use the right build and staging directories.

  • The ability to save environment variables in the persistent configuration was added.

  • +
  • The pattern rule for making directories was added.

  • +
  • The Make targets all, base and show_configuration were added.

  • -- cgit v1.2.3