star-gs

Literate program for a geometric sensitivity calculation
git clone git://git.meso-star.fr/star-gs.git
Log | Files | Refs | README | LICENSE

commit 772878ba96707072cf5bdefdad789e37d079b90a
parent 426fb7b229f48f01bd9f58e27cd1165ef9821ec6
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Sun,  4 Jun 2023 10:58:58 +0200

Retravaille le POSIX Makefile

Ajoute la macro BUILD_TYPE qui contrôle si les sources du programmes
sont compilées en DEBUG ou en RELEASE (valeur par défaut). Au delà des
options de compilation des fichiers objets et de l'édition de lien,
cette macro contrôle également l'ajout de directives de pré-processeur
dans les fichiers C extrait des sources noweb pour en faciliter le
debug.

Nous ne plus masquons plus les commandes du compilateur (à l'exception
de la vérification de la dépendance du fichier). Il n'y a pas d'avantage
particulier à faire cela et il est sein de voir les options du
compilateur utilisées. De même, les commandes exécutées par les cibles
clean, distclean et lint sont également affichées pour montrer ce
qu'elles font.

Diffstat:
MMakefile | 20+++++++-------------
Mconfig.mk | 47+++++++++++++++++++++++++++++++++++------------
2 files changed, 42 insertions(+), 25 deletions(-)

diff --git a/Makefile b/Makefile @@ -56,30 +56,24 @@ build_executable: .config_program $(DEP) $(OBJ): config.mk sgs: $(OBJ) - @echo "LD $@" - @$(CC) $(CFLAGS) -o $@ $(OBJ) $(LDFLAGS) -lm + $(CC) $(CFLAGS) -o $@ $(OBJ) $(LDFLAGS) -lm .config_program: config.mk configure.sh @echo "configure $(MAKE)" @$(SHELL) configure.sh program && echo "config done" > $@ || exit 1 $(TMPC): $(NOWEB) config.mk - @echo "TANGLE $@" - @$(TANGLE) $(TANGLE_OPTS)\ - -R$$(c="$@" && echo "$${c##*/}" | sed 's/_/\\_/g') $(NOWEB) | cpif $@ + $(TANGLE) $(TANGLE_FLAGS) -R$$(basename "$@" | sed 's/_/\\_/g') $(NOWEB) | cpif $@ $(SCRIPTS): $(NOWEB) - @echo "TANGLE $@" - @$(TANGLE)\ - -R$$(c="$@" && echo "$${c##*/}" | sed 's/_/\\_/g') $(NOWEB) | cpif $@ + $(TANGLE) $(TANGLE_FLAGS) -R$$(basename "$@" | sed 's/_/\\_/g') $(NOWEB) | cpif $@ .SUFFIXES: .c .d .o .c.d: @$(CC) $(CFLAGS) -MM -MT "$(@:.d=.o) $@" $< -MF $@ .c.o: - @echo "CC $@" - @$(CC) $(CFLAGS) -c $< -o $@ + $(CC) $(CFLAGS) -c $< -o $@ ################################################################################ # Latex @@ -105,7 +99,7 @@ $(TEX): weave.all @touch $@ weave.all: $(NOWEB) noweave_backend.sh config.mk - $(WEAVE) $(WEAVE_OPTS) -backend "sh noweave_backend.sh" $(NOWEB) + $(WEAVE) $(WEAVE_FLAGS) -backend "sh noweave_backend.sh" $(NOWEB) ################################################################################ # Miscellaneous targets @@ -122,7 +116,7 @@ uninstall: rm -f $(DESTDIR)$(PREFIX)/share/doc/star-gs/README.md clean: - @rm -f $(OBJ) $(SCRIPTS) $(TEX) $(TMPC) sgs .config_program .config_document\ + rm -f $(OBJ) $(SCRIPTS) $(TEX) $(TMPC) sgs .config_program .config_document\ ./*.aux ./*.bbl ./*.idx ./*.log ./*.dvi ./*.glo ./*.lof ./*.toc ./*.out\ ./*.blg ./*.nav ./*.snm ./*.vrb weave* $(DOC).pdf @@ -130,4 +124,4 @@ distclean: clean @rm -f $(DEP) results.fd results.mc lint: $(SCRIPTS) - @shellcheck -o all configure.sh noweave_backend.sh $(SCRIPTS) + shellcheck -o all configure.sh noweave_backend.sh $(SCRIPTS) diff --git a/config.mk b/config.mk @@ -22,22 +22,20 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. VERSION = 0.0.0 - PREFIX = /usr/local -PKG_CONFIG = pkg-config +BUILD_TYPE = RELEASE ################################################################################ -# Noweb & latex +# Tools ################################################################################ BIBTEX = bibtex +CC = cc LATEX = pdflatex +PKG_CONFIG = pkg-config TANGLE = notangle WEAVE = noweave -TANGLE_OPTS = -L -WEAVE_OPTS = -index -delay -v - ################################################################################ # Dependencies ################################################################################ @@ -63,9 +61,6 @@ LIBS=$(RSYS_LIB) $(STAR-3D_LIB) $(STAR-MC_LIB) $(STAR-SP_LIB) ################################################################################ # Compilation options ################################################################################ -CC = cc - -CPPFLAGS = -DNDEBUG WFLAGS =\ -Wall\ -Wconversion\ @@ -73,6 +68,34 @@ WFLAGS =\ -Wmissing-declarations\ -Wmissing-prototypes\ -Wshadow -CFLAGS = -O3 -std=c89 -pedantic -fPIC -fvisibility=hidden -fstrict-aliasing\ - -Wl,--no-undefined $(WFLAGS) $(CPPFLAGS) $(INCS) # Compiler options -LDFLAGS = $(LIBS) # Linker options + +CFLAGS_COMMON =\ + -std=c89\ + -pedantic\ + -fPIC\ + -fvisibility=hidden\ + -fstrict-aliasing\ + $(WFLAGS)\ + $(INCS) + +CFLAGS_RELEASE = -O2 -DNDEBUG $(CFLAGS_COMMON) +CFLAGS_DEBUG = -g $(CFLAGS_COMMON) +CFLAGS = $(CFLAGS_$(BUILD_TYPE)) + +################################################################################ +# Linker options +################################################################################ +LDFLAGS_COMMON = -Wl,--no-undefined $(LIBS) + +LDFLAGS_DEBUG = $(LDFLAGS_COMMON) +LDFLAGS_RELEASE = -s $(LDFLAGS_COMMON) +LDFLAGS = $(LDFLAGS_$(BUILD_TYPE)) + +################################################################################ +# Compilation options +################################################################################ +WEAVE_FLAGS = -index -delay -v + +TANGLE_FLAGS_DEBUG = -L +TANGLE_FLAGS_RELEASE = +TANGLE_FLAGS = $(TANGLE_FLAGS_$(BUILD_TYPE))