Compare commits
9 commits
6c23344b50
...
d5627404e1
Author | SHA1 | Date | |
---|---|---|---|
d5627404e1 | |||
d70b96a071 | |||
ac5a30448d | |||
9ec13a0e9f | |||
685f1dd11a | |||
812a7e6175 | |||
37bbb92909 | |||
4ebbdf14cc | |||
6e594f4fa7 |
5 changed files with 160 additions and 24 deletions
47
README.md
47
README.md
|
@ -1,6 +1,6 @@
|
||||||
# Makefiles forever
|
# Makefiles Forever
|
||||||
|
|
||||||
A collection of makefiles for every imaginable use
|
A drop-in collection of makefiles libraries for your projects
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|
||||||
|
@ -10,15 +10,48 @@ A collection of makefiles for every imaginable use
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
* Add this repository as a GIT submodule of your project
|
Add this repository as a GIT submodule of your project
|
||||||
|
|
||||||
git submodule add
|
```shell-session
|
||||||
|
$ git submodule add https://github.com/glenux/makefiles-forever .makefiles
|
||||||
|
```
|
||||||
|
|
||||||
* Include needed features in your makefile
|
Include needed features in the end of your makefile
|
||||||
|
|
||||||
-include path/to/makefiles-forever/feature.mk
|
```makefile
|
||||||
|
# [...]
|
||||||
|
|
||||||
## Good practices
|
-include .makefiles/featureA.mk
|
||||||
|
-include .makefiles/featureB.mk
|
||||||
|
```
|
||||||
|
|
||||||
|
Declare API variables (ex: `*_SRC_DIR`, `*_DEST_DIR`) for each module
|
||||||
|
|
||||||
|
```makefile
|
||||||
|
# Configuration for featureA from Makefiles Forever
|
||||||
|
FEATUREA_SRC_DIR=/path/to/somewhere
|
||||||
|
FEATUREA_DEST_DIR=/some/other/path
|
||||||
|
|
||||||
|
# Configuration for featureB from Makefiles Forever
|
||||||
|
FEATUREA_SRC_DIR=/another/path
|
||||||
|
FEATUREB_DEST_DIR=/a/different/one
|
||||||
|
```
|
||||||
|
|
||||||
|
Use pre-defined targets as dependencies of your targets:
|
||||||
|
|
||||||
|
```makefile
|
||||||
|
build: featureA-build
|
||||||
|
build: featureB-build
|
||||||
|
|
||||||
|
clean: featureA-clean
|
||||||
|
clean: featureB-clean
|
||||||
|
```
|
||||||
|
|
||||||
|
Feature files usually define more targets than just build and clean, and you
|
||||||
|
can use those too!
|
||||||
|
|
||||||
|
|
||||||
|
## Good practices for coding .mk files
|
||||||
|
|
||||||
* Keep task parallelism in mind
|
* Keep task parallelism in mind
|
||||||
* Make all targets available from root makefile
|
* Make all targets available from root makefile
|
||||||
|
|
57
graphviz.mk
Normal file
57
graphviz.mk
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
##
|
||||||
|
## GRAPHVIZ MODULE
|
||||||
|
##
|
||||||
|
|
||||||
|
##
|
||||||
|
## External variables influencing build process (API)
|
||||||
|
##
|
||||||
|
GRAPHVIZ_SRC_DIR ?=
|
||||||
|
GRAPHVIZ_DEST_DIR ?=
|
||||||
|
|
||||||
|
##
|
||||||
|
## Internal variables
|
||||||
|
##
|
||||||
|
|
||||||
|
## Find .dot graphs
|
||||||
|
GRAPHVIZ_DOT := $(shell find $(GRAPHVIZ_SRC_DIR) \( -name '*.dot' ! -name '_*' \))
|
||||||
|
GRAPHVIZ_DOT_SVG := $(patsubst $(GRAPHVIZ_SRC_DIR)/%.dot,$(GRAPHVIZ_DEST_DIR)/%.dot.svg,$(GRAPHVIZ_DOT))
|
||||||
|
|
||||||
|
## Find .circo graphs
|
||||||
|
GRAPHVIZ_CIRCO := $(shell find $(GRAPHVIZ_SRC_DIR) \( -name '*.circo' ! -name '_*' \))
|
||||||
|
GRAPHVIZ_CIRCO_SVG := $(patsubst $(GRAPHVIZ_SRC_DIR)/%.circo,$(GRAPHVIZ_DEST_DIR)/%.circo.svg,$(GRAPHVIZ_CIRCO))
|
||||||
|
GRAPHVIZ_SVG := $(GRAPHVIZ_DOT_SVG) $(GRAPHVIZ_CIRCO_SVG)
|
||||||
|
|
||||||
|
##
|
||||||
|
## Prerequisistes (system packages)
|
||||||
|
##
|
||||||
|
GRAPHVIZ_APT_PACKAGES := graphviz
|
||||||
|
|
||||||
|
##
|
||||||
|
## Rules
|
||||||
|
##
|
||||||
|
|
||||||
|
$(GRAPHVIZ_DEST_DIR)/%.dot.svg: $(GRAPHVIZ_SRC_DIR)/%.dot
|
||||||
|
dot -Tsvg $< > $@
|
||||||
|
|
||||||
|
$(GRAPHVIZ_DEST_DIR)/%.circo.svg: $(GRAPHVIZ_SRC_DIR)/%.circo
|
||||||
|
circo -Tsvg $< > $@
|
||||||
|
|
||||||
|
$(GRAPHVIZ_SVG): | $(GRAPHVIZ_DEST_DIR)
|
||||||
|
mkdir -p $(GRAPHVIZ_DEST_DIR)
|
||||||
|
|
||||||
|
graphviz-build-dot-svg: $(GRAPHVIZ_DOT_SVG)
|
||||||
|
|
||||||
|
graphviz-build-circo-svg: $(GRAPHVIZ_CIRCO_SVG)
|
||||||
|
|
||||||
|
graphviz-build-svg: graphviz-build-dot-svg graphviz-build-circo-svg
|
||||||
|
|
||||||
|
graphviz-build: graphviz-build-svg
|
||||||
|
|
||||||
|
|
||||||
|
# Clean
|
||||||
|
#
|
||||||
|
graphviz-clean-svg:
|
||||||
|
rm -f $(GRAPHVIZ_SVG)
|
||||||
|
|
||||||
|
graphviz-clean: graphviz-clean-svg
|
||||||
|
|
46
mocodo.mk
46
mocodo.mk
|
@ -1,22 +1,35 @@
|
||||||
|
##
|
||||||
|
## MOCODO MODULE
|
||||||
|
##
|
||||||
|
|
||||||
## API
|
##
|
||||||
MOCODO_DIRECTORIES=?.
|
## External variables (API)
|
||||||
|
##
|
||||||
MOCODO_OPT=--colors brewer-6 --shapes verdana
|
MOCODO_OPT=--colors brewer-6 --shapes verdana
|
||||||
|
MOCODO_SRC_DIR=
|
||||||
|
MOCODO_DEST_DIR=
|
||||||
|
|
||||||
## INTERNALS
|
##
|
||||||
MOCODO_MCD_FILES=$(shell find $(IMAGES_DIR) \( -name '*.mcd' ! -name '_*' \))
|
## Internal variables
|
||||||
MOCODO_MCD_MLD=$(patsubst $(IMAGES_DIR)/%.mcd,$(BUILD_IMAGES_DIR)/%.mcd.mld,$(MOCODO_MCD_FILES))
|
##
|
||||||
MOCODO_MCD_SVG=$(patsubst $(IMAGES_DIR)/%.mcd,$(BUILD_IMAGES_DIR)/%.mcd.svg,$(MOCODO_MCD_FILES))
|
MOCODO_MCD_FILES=$(shell find $(MOCODO_SRC_DIR) \( -name '*.mcd' ! -name '_*' \))
|
||||||
MOCODO_MCD_PDF=$(patsubst $(IMAGES_DIR)/%.mcd,$(BUILD_IMAGES_DIR)/%.mcd.pdf,$(MOCODO_MCD_FILES))
|
MOCODO_MCD_MLD=$(patsubst $(MOCODO_SRC_DIR)/%.mcd,$(MOCODO_DEST_DIR)/%.mcd.mld,$(MOCODO_MCD_FILES))
|
||||||
|
MOCODO_MCD_SVG=$(patsubst $(MOCODO_SRC_DIR)/%.mcd,$(MOCODO_DEST_DIR)/%.mcd.svg,$(MOCODO_MCD_FILES))
|
||||||
|
MOCODO_MCD_PDF=$(patsubst $(MOCODO_SRC_DIR)/%.mcd,$(MOCODO_DEST_DIR)/%.mcd.pdf,$(MOCODO_MCD_FILES))
|
||||||
|
|
||||||
MOCODO_MLD_FILES=$(shell find $(IMAGES_DIR) \( -name '*.mld' ! -name '_*' \)) $(MOCODO_MCD_MLD)
|
MOCODO_MLD_FILES=$(shell find $(MOCODO_SRC_DIR) \( -name '*.mld' ! -name '_*' \)) $(MOCODO_MCD_MLD)
|
||||||
MOCODO_MLD_SVG=$(patsubst $(IMAGES_DIR)/%.mld,$(BUILD_IMAGES_DIR)/%.mld.svg,$(MOCODO_MLD_FILES))
|
MOCODO_MLD_SVG=$(patsubst $(MOCODO_SRC_DIR)/%.mld,$(MOCODO_DEST_DIR)/%.mld.svg,$(MOCODO_MLD_FILES))
|
||||||
MOCODO_MLD_PDF=$(patsubst $(IMAGES_DIR)/%.mld,$(BUILD_IMAGES_DIR)/%.mld.pdf,$(MOCODO_MLD_FILES))
|
MOCODO_MLD_PDF=$(patsubst $(MOCODO_SRC_DIR)/%.mld,$(MOCODO_DEST_DIR)/%.mld.pdf,$(MOCODO_MLD_FILES))
|
||||||
|
|
||||||
|
##
|
||||||
|
## Prerequisistes (system packages)
|
||||||
|
##
|
||||||
MOCODO_APT_PACKAGES=ghostscript librsvg2-bin
|
MOCODO_APT_PACKAGES=ghostscript librsvg2-bin
|
||||||
|
|
||||||
%.mcd.mld: %.mcd
|
##
|
||||||
|
## Rules
|
||||||
|
##
|
||||||
|
$(MOCODO_DEST_DIR)/%.mcd.mld: $(MOCODO_SRC_DIR)/%.mcd
|
||||||
tmp=$$(mktemp -d) \
|
tmp=$$(mktemp -d) \
|
||||||
&& pipenv run mocodo \
|
&& pipenv run mocodo \
|
||||||
$(MOCODO_OPT) \
|
$(MOCODO_OPT) \
|
||||||
|
@ -28,7 +41,7 @@ MOCODO_APT_PACKAGES=ghostscript librsvg2-bin
|
||||||
&& rm -fr $${tmp} \
|
&& rm -fr $${tmp} \
|
||||||
&& touch --reference $< $@
|
&& touch --reference $< $@
|
||||||
|
|
||||||
%.mcd.svg: %.mcd
|
$(MOCODO_DEST_DIR)/%.mcd.svg: $(MOCODO_SRC_DIR)/%.mcd
|
||||||
tmp=$$(mktemp -d) \
|
tmp=$$(mktemp -d) \
|
||||||
&& pipenv run mocodo \
|
&& pipenv run mocodo \
|
||||||
$(MOCODO_OPT) \
|
$(MOCODO_OPT) \
|
||||||
|
@ -40,7 +53,7 @@ MOCODO_APT_PACKAGES=ghostscript librsvg2-bin
|
||||||
&& rm -fr $${tmp} \
|
&& rm -fr $${tmp} \
|
||||||
&& touch --reference $< $@
|
&& touch --reference $< $@
|
||||||
|
|
||||||
%.mld.svg: %.mld
|
$(MOCODO_DEST_DIR)/%.mld.svg: $(MOCODO_SRC_DIR)/%.mld
|
||||||
tmp=$$(mktemp -d) \
|
tmp=$$(mktemp -d) \
|
||||||
&& pipenv run mocodo \
|
&& pipenv run mocodo \
|
||||||
$(MOCODO_OPT) \
|
$(MOCODO_OPT) \
|
||||||
|
@ -50,15 +63,14 @@ MOCODO_APT_PACKAGES=ghostscript librsvg2-bin
|
||||||
&& rm -fr $${tmp} \
|
&& rm -fr $${tmp} \
|
||||||
&& touch --reference $< $@
|
&& touch --reference $< $@
|
||||||
|
|
||||||
%.mld.pdf: %.mld.svg
|
$(MOCODO_DEST_DIR)/%.mld.pdf: $(MOCODO_SRC_DIR)/%.mld.svg
|
||||||
# rsvg-convert -f pdf $< > $@
|
# rsvg-convert -f pdf $< > $@
|
||||||
rsvg-convert -f ps $< | gs -sDEVICE=pdfwrite -sOutputFile=$@ -f -
|
rsvg-convert -f ps $< | gs -sDEVICE=pdfwrite -sOutputFile=$@ -f -
|
||||||
|
|
||||||
%.mcd.pdf: %.mcd.svg
|
$(MOCODO_DEST_DIR)/%.mcd.pdf: $(MOCODO_SRC_DIR)/%.mcd.svg
|
||||||
# rsvg-convert -f pdf $< > $@
|
# rsvg-convert -f pdf $< > $@
|
||||||
rsvg-convert -f ps $< | gs -sDEVICE=pdfwrite -sOutputFile=$@ -f -
|
rsvg-convert -f ps $< | gs -sDEVICE=pdfwrite -sOutputFile=$@ -f -
|
||||||
|
|
||||||
|
|
||||||
mocodo-mcd-mld: $(MOCODO_MCD_MLD)
|
mocodo-mcd-mld: $(MOCODO_MCD_MLD)
|
||||||
|
|
||||||
mocodo-mcd-svg: $(MOCODO_MCD_SVG)
|
mocodo-mcd-svg: $(MOCODO_MCD_SVG)
|
||||||
|
|
34
plantuml.mk
34
plantuml.mk
|
@ -0,0 +1,34 @@
|
||||||
|
##
|
||||||
|
## PLANTUML MODULE
|
||||||
|
##
|
||||||
|
|
||||||
|
##
|
||||||
|
## External variables (API)
|
||||||
|
##
|
||||||
|
PLANTUML_SRC_DIR=
|
||||||
|
PLANTUML_DEST_DIR=
|
||||||
|
|
||||||
|
##
|
||||||
|
## Internal variables
|
||||||
|
##
|
||||||
|
|
||||||
|
## Find .uml graphs
|
||||||
|
PLANTUML_UML=$(shell find $(PLANTUML_SRC_DIR) \( -name '*.uml' ! -name '_*' \))
|
||||||
|
PLANTUML_UML_SVG=$(patsubst $(PLANTUML_SRC_DIR)/%.uml,$(PLANTUML_DEST_DIR)/%.uml.svg,$(PLANTUML_UML))
|
||||||
|
|
||||||
|
|
||||||
|
##
|
||||||
|
## Rules
|
||||||
|
##
|
||||||
|
$(PLANTUML_DEST_DIR)/%.uml.svg: $(PLANTUML_SRC_DIR)/%.uml
|
||||||
|
plantuml -pipe -tsvg < $< > $@
|
||||||
|
|
||||||
|
|
||||||
|
plantuml-uml-svg:
|
||||||
|
|
||||||
|
plantuml-svg:
|
||||||
|
|
||||||
|
plantuml-clean-svg:
|
||||||
|
|
||||||
|
plantuml-clean:
|
||||||
|
|
Loading…
Add table
Reference in a new issue